]> granicus.if.org Git - postgresql/blob - INSTALL
Fix typo in comment.
[postgresql] / INSTALL
1
2
3 PostgreSQL Installation Guide
4 by The PostgreSQL Development Team
5
6 Edited by Thomas Lockhart
7
8 PostgreSQL is copyright (C) 1998
9 by the Postgres Global Development Group.
10
11 Table of Contents
12
13        Summary                                            
14        1. Introduction                                    
15        2. Ports                                           
16           Currently Supported Platforms                   
17           Unsupported Platforms                           
18        3. Installation                                    
19           Requirements to Run Postgres                    
20           Installation Procedure                          
21           Playing with Postgres                           
22           The Next Step                                   
23           Porting Notes                                   
24              Ultrix4.x                                    
25              Linux                                        
26                  Linux ELF                                
27                  Linux a.out                              
28              BSD/OS                                       
29              NeXT                                         
30        4. Configuration Options                           
31           Parameters for Configuration (configure)        
32           Parameters for Building (make)                  
33           Locale Support                                  
34              What are the Benefits?                       
35              What are the Drawbacks?                      
36           Kerberos Authentication                         
37              Availability                                 
38              Installation                                 
39              Operation                                    
40        5. Release Notes                                   
41           Release 6.4                                     
42              Migration to v6.4                            
43              Detailed Change List                         
44
45 List of Tables
46
47        2-1. Supported Platforms                          
48        2-2. Possibly Incompatible Platforms              
49        4-1. Kerberos Parameter Examples                  
50
51 Summary
52
53        Postgres, developed originally in the UC Berkeley 
54        Computer Science Department, pioneered many of the 
55        object-relational concepts now becoming available in 
56        some commercial databases. It provides SQL92/SQL3 
57        language support, transaction integrity, and type 
58        extensibility. PostgreSQL is a public-domain, open 
59        source descendant of this original Berkeley code.
60
61 Chapter 1. Introduction
62
63        This installation procedure makes some assumptions 
64        about the desired configuration and runtime 
65        environment for your system. This may be adequate for 
66        many installations, and is almost certainly adequate 
67        for a first installation. But you may want to do an 
68        initial installation up to the point of unpacking the 
69        source tree and installing documentation, and then 
70        print or browse the Administrator's Guide.
71
72 Chapter 2. Ports
73
74        This manual describes version 6.4 of Postgres. The 
75        Postgres developer community has compiled and tested 
76        Postgres on a number of platforms. Check the web site 
77        for the latest information.
78
79 Currently Supported Platforms
80
81        At the time of publication, the following platforms 
82        have been tested: 
83
84        Table 2-1. Supported Platforms
85        OS             Processor     Version  Reported     Remarks
86        AIX 4.2.1      RS6000        v6.4     1998-10-27   (Andreas Zeugswetter)
87        BSDI           x86           v6.4     1998-10-25   (Bruce Momjian
88        FreeBSD        x86           v6.4     1998-10-26   (Tatsuo Ishii, Marc 
89        2.2.x-3.x                                          Fournier)
90        DGUX 5.4R4.11  m88k          v6.3     1998-03-01   v6.4 probably OK. Needs 
91                                                           new maintainer. (Brian E 
92                                                           Gallew)
93        Digital Unix   Alpha         v6.4     1998-10-29   Minor patchable problems 
94        4.0                                                (Pedro J. Lobo)
95        HPUX           PA-RISC       v6.4     1998-10-25   Both 9.0x and 10.20 
96                                                           (Tom Lane, Stan Brown)
97        IRIX 6.x       MIPS          v6.3     1998-03-01   5.x is different (Andrew 
98                                                           Martin)
99        linux 2.0.x    Alpha         v6.3.2   1998-04-16   Mostly successful. Needs 
100                                                           work for v6.4. (Ryan 
101                                                           Kirkpatrick)
102        linux 2.0.x    x86           v6.4     1998-10-27   (Thomas Lockhart)
103        linux          x86           v6.4     1998-10-25   (Oliver Elphick, Taral)
104        2.0.x/glibc2
105        linux 2.0.x    Sparc         v6.4     1998-10-25   (Tom Szybist)
106        linuxPPC       PPC603e       v6.4     1998-10-26   Powerbook 2400c (Tatsuo 
107        2.1.24                                             Ishii)
108        mklinux DR3    PPC750        v6.4     1998-09-16   PowerMac 7600 (Tatsuo 
109                                                           Ishii)
110        NetBSD/i386    x86           v6.4     1998-10-25   (Brook Milligan)
111        1.3.2
112        NetBSD-        NS32532       v6.4     1998-10-27   (small problems in 
113        current                                            date/time math 
114                                                           (Jon Buller)
115        NetBSD/sparc   Sparc         v6.4     1998-10-27   (Tom I Helbekkmo)
116        1.3H
117        NetBSD 1.3     VAX           v6.3     1998-03-01   (Tom I Helbekkmo)
118        SCO UnixWare   x86           v6.3     1998-03-01   aka UNIVEL (Billy G. 
119        2.x                                                Allie)
120        SCO UnixWare   x86           v6.4     1998-10-04   (Billy G. Allie)
121        7
122        Solaris        x86           v6.4     1998-10-28   (Marc Fournier)
123        Solaris        Sparc         v6.4     1998-10-28   (Tom Szybist, Frank 
124        2.6-2.7                                            Ridderbusch)
125        SunOS 4.1.4    Sparc         v6.3     1998-03-01   patches submitted (Tatsuo 
126                                                           Ishii)
127        SVR4           MIPS          v6.4     1998-10-28   no 64-bit int support 
128                                                           (Frank Ridderbusch)
129        SVR4 4.4       m88k          v6.2.1   1998-03-01   confirmed with patching 
130                                                           (Doug Winterburn)
131        Windows NT     x86           v6.4     1998-10-08   Mostly working with the 
132                                                           Cygwin library. No DLLs 
133                                                           yet. (Horak Daniel) 
134
135
136        Platforms listed for v6.3.x should also work with 
137        v6.4, but we did not receive confirmation of such at 
138        the time this list was compiled. 
139
140          Note: For Windows NT, the server-side port of 
141          Postgres has recently been accomplished. Check the 
142          Askesis Postgres Home Page for up to date 
143          information. You may also want to look for 
144          possible patches on the Postgres web site.
145
146 Unsupported Platforms
147
148        There are a few platforms which have been attempted 
149        and which have been reported to not work with the 
150        standard distribution. Others listed here do not 
151        provide sufficient library support for an attempt. 
152
153        Table 2-2. Possibly Incompatible Platforms
154        OS        Processor  Version  Reported      Remarks
155        MacOS     all        v6.3     1998-03-01    not library compatible; 
156                                                    use ODBC/JDBC
157        NetBSD    arm32      v6.3     1998-03-01    not yet working (Dave 
158                                                    Millen)
159        NetBSD    m68k       v6.3     1998-03-01    Amiga, HP300, Mac; not 
160                                                    yet working (Henry Hotz)
161        NextStep  x86        v6.x     1998-03-01    client-only support; 
162                                                    v1.0.9 worked with 
163                                                    patches (David Wetzel)
164        Ultrix    MIPS,VAX?  v6.x     1998-03-01    no recent reports; 
165                                                    obsolete?
166        Windows   x86        v6.3     1998-03-01    not library compatible; 
167                                                    client side maybe; use 
168                                                    ODBC/JDBC
169
170
171        Note that Windows ports of the frontend are 
172        apparently possible using third-party Posix porting 
173        tools and libraries.
174
175 Chapter 3. Installation
176
177        Complete installation instructions for Postgres v6.4.
178        Before installing Postgres, you may wish to visit 
179        www.postgresql.org for up to date information, 
180        patches, etc.
181        These installation instructions assume: 
182        o Commands are Unix-compatible. See note below.
183        o Defaults are used except where noted.
184        o User postgres is the Postgres superuser.
185        o The source path is /usr/src/pgsql (other paths are possible).
186        o The runtime path is /usr/local/pgsql (other paths are possible).
187        Commands were tested on RedHat Linux version 4.2 
188        using the tcsh shell. Except where noted, they will 
189        probably work on most systems. Commands like ps and 
190        tar may vary wildly between platforms on what options 
191        you should use. Use common sense before typing in 
192        these commands.
193        Our Makefiles require GNU make (called ?gmake? in this 
194        document). They will not work with non-GNU make 
195        programs. If you have GNU make installed under the 
196        name ?make? instead of ?gmake?, then you will use the 
197        command make instead. That's OK, but you need to have 
198        the GNU form of make to succeed with an installation.
199
200 Requirements to Run Postgres
201
202        Up to date information on supported platforms is at 
203        http://www.postgresql.org/docs/admin/install.htm. In 
204        general, most Unix-compatible platforms with modern 
205        libraries should be able to run Postgres.
206        Although the minimum required memory for running 
207        Postgres is as little as 8MB, there are noticable 
208        improvements in runtimes for the regression tests 
209        when expanding memory up to 96MB on a relatively fast 
210        dual-processor system running X-Windows. The rule is 
211        you can never have too much memory.
212        Check that you have sufficient disk space. You will 
213        need about 30 Mbytes for /usr/src/pgsql, about 5 
214        Mbytes for /usr/local/pgsql (excluding your database) 
215        and 1 Mbyte for an empty database. The database will 
216        temporarily grow to about 20 Mbytes during the 
217        regression tests. You will also need about 3 Mbytes 
218        for the distribution tar file.
219        We therefore recommend that during installation and 
220        testing you have well over 20 Mbytes free under 
221        /usr/local and another 25 Mbytes free on the disk 
222        partition containing your database. Once you delete 
223        the source files, tar file and regression database, 
224        you will need 2 Mbytes for /usr/local/pgsql, 1 Mbyte 
225        for the empty database, plus about five times the 
226        space you would require to store your database data 
227        in a flat file.
228        To check for disk space, use 
229
230        $ df -k
231
232 Installation Procedure
233
234        Procedure 3.1. Postgres Installation
235
236        For a fresh install or upgrading from previous 
237        releases of Postgres:
238
239        1. Read any last minute information and platform 
240          specific porting notes. There are some platform 
241          specific notes at the end of this file for 
242          Ultrix4.x, Linux, BSD/OS and NeXT. There are other 
243          files in directory /usr/src/pgsql/doc, including 
244          files FAQ-Irix and FAQ-Linux. Also look in 
245          directory ftp://ftp.postgresql.org/pub. If there 
246          is a file called INSTALL in this directory then 
247          this file will contain the latest installation 
248          information.
249          Please note that a "tested" platform in the list 
250          given earlier simply means that someone went to 
251          the effort at some point of making sure that a 
252          Postgres distribution would compile and run on 
253          this platform without modifying the code. Since 
254          the current developers will not have access to all 
255          of these platforms, some of them may not compile 
256          cleanly and pass the regression tests in the 
257          current release due to minor problems. Any such 
258          known problems and their solutions will be posted 
259          in ftp://ftp.postgresql.org/pub/INSTALL.
260
261        2. Create the Postgres superuser account (postgres is 
262          commonly used) if it does not already exist. 
263          The owner of the Postgres files can be any 
264          unprivileged user account. It must not be root, 
265          bin, or any other account with special access 
266          rights, as that would create a security risk.
267
268        3. Log in to the Postgres superuser account. Most of 
269          the remaining steps in the installation will 
270          happen in this account. 
271
272        4. Ftp file 
273          ftp://ftp.postgresql.org/pub/postgresql-v6.4.tar.gz
274          from the Internet. Store it in your home directory.
275
276        5. Some platforms use flex. If your system uses flex 
277          then make sure you have a good version. To check, 
278          type 
279          $ flex --version
280
281          If the flex command is not found then you probably 
282          do not need it. If the version is 2.5.2 or 2.5.4 
283          or greater then you are okay. If it is 2.5.3 or 
284          before 2.5.2 then you will have to upgrade flex. 
285          You may get it at 
286          ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz.
287          If you need flex and don't have it or have the 
288          wrong version, then you will be told so when you 
289          attempt to compile the program. Feel free to skip 
290          this step if you aren't sure you need it. If you 
291          do need it then you will be told to 
292          install/upgrade flex when you try to compile 
293          Postgres.
294          You may want to do the entire flex installation 
295          from the root account, though that is not 
296          absolutely necessary. Assuming that you want the 
297          installation to place files in the usual default 
298          areas, type the following: 
299          $ su -
300          $ cd /usr/local/src
301          ftp prep.ai.mit.edu
302          ftp> cd /pub/gnu/
303          ftp> binary
304          ftp> get flex-2.5.4.tar.gz
305          ftp> quit
306          $ gunzip -c flex-2.5.4.tar.gz | tar xvf -
307          $ cd flex-2.5.4
308          $ configure --prefix=/usr
309          $ gmake
310          $ gmake check
311          # You must be root when typing the next line:
312          $ gmake install
313          $ cd /usr/local/src
314          $ rm -rf flex-2.5.4
315          This will update files /usr/man/man1/flex.1, 
316          /usr/bin/flex, /usr/lib/libfl.a, 
317          /usr/include/FlexLexer.h and will add a link 
318          /usr/bin/flex++ which points to flex.
319
320        6. If you are not upgrading an existing system then 
321          skip to  step 9. If you are upgrading an existing 
322          system then back up your database. For alpha- and 
323          beta-level releases, the database format is liable 
324          to change, often every few weeks, with no notice 
325          besides a quick comment in the HACKERS mailing 
326          list. Full releases always require a dump/reload 
327          from previous releases. It is therefore a bad idea 
328          to skip this step. 
329
330          Tip: Do not use the pg_dumpall script from v6.0 or 
331             everything will be owned by the Postgres super 
332             user.
333
334          To dump your fairly recent post-v6.0 database 
335          installation, type 
336          $ pg_dumpall -z > db.out
337          To use the latest pg_dumpall script on your 
338          existing older database before upgrading Postgres, 
339          pull the most recent version of pg_dumpall from 
340          the new distribution: 
341          $ cd
342          $ gunzip -c postgresql-v6.4.tar.gz \
343              | tar xvf - src/bin/pg_dump/pg_dumpall
344          $ chmod a+x src/bin/pg_dump/pg_dumpall
345          $ src/bin/pg_dump/pg_dumpall -z > db.out
346          $ rm -rf src
347          If you wish to preserve object id's (oids), then 
348          use the -o option when running pg_dumpall. 
349          However, unless you have a special reason for 
350          doing this (such as using OIDs as keys in tables), 
351          don't do it.
352          If the pg_dumpall command seems to take a long 
353          time and you think it might have died, then, from 
354          another terminal, type 
355          $ ls -l db.out
356           several times to see if the size of the file is 
357          growing.
358          Please note that if you are upgrading from a 
359          version prior to Postgres95 v1.09 then you must 
360          back up your database, install Postgres95 v1.09, 
361          restore your database, then back it up again. You 
362          should also read the release notes which should 
363          cover any release-specific issues.
364
365                                  Caution
366               You must make sure that your database is not 
367               updated in the middle of your backup. If 
368               necessary, bring down postmaster, edit the 
369               permissions in file 
370               /usr/local/pgsql/data/pg_hba.conf to allow 
371               only you on, then bring postmaster back up.
372
373
374
375        7. If you are upgrading an existing system then kill 
376          the postmaster. Type 
377          $ ps -ax | grep postmaster
378           This should list the process numbers for a number 
379          of processes. Type the following line, with pid 
380          replaced by the process id for process postmaster. 
381          (Do not use the id for process "grep postmaster".) 
382
383          Type 
384          $ kill pid
385          to actually stop the process. 
386
387          Tip: On systems which have Postgres started at 
388             boot time, there is probably a startup file 
389             which will accomplish the same thing. For 
390             example, on my Linux system I can type 
391             $ /etc/rc.d/init.d/postgres.init stop
392             to halt Postgres.
393
394        8. If you are upgrading an existing system then move 
395          the old directories out of the way. If you are 
396          short of disk space then you may have to back up 
397          and delete the directories instead. If you do 
398          this, save the old database in the 
399          /usr/local/pgsql/data directory tree. At a 
400          minimum, save file 
401          /usr/local/pgsql/data/pg_hba.conf.
402          Type the following: 
403          $ su -
404          $ cd /usr/src
405          $ mv pgsql pgsql_6_0
406          $ cd /usr/local
407          $ mv pgsql pgsql_6_0
408          $ exit
409          If you are not using /usr/local/pgsql/data as your 
410          data directory (check to see if environment 
411          variable PGDATA is set to something else) then you 
412          will also want to move this directory in the same 
413          manner.
414
415        9. Make new source and install directories. The 
416          actual paths can be different for your 
417          installation but you must be consistant throughout 
418          this procedure. 
419
420          Note: There are two places in this installation 
421             procedure where you will have an opportunity to 
422             specify installation locations for programs, 
423             libraries, documentation, and other files. 
424             Usually it is sufficient to specify these at the 
425             make install stage of installation.
426
427          Type 
428          $ su
429          $ cd /usr/src
430          $ mkdir pgsql
431          $ chown postgres:postgres pgsql
432          $ cd /usr/local
433          $ mkdir pgsql
434          $ chown postgres:postgres pgsql
435          $ exit
436        10.     Unzip and untar the new source file. Type 
437          $ cd /usr/src/pgsql
438          $ gunzip -c ~/postgresql-v6.4.tar.gz | tar xvf -
439        11.     Configure the source code for your system. It 
440          is this step at which you can specify your actual 
441          installation path for the build process (see the 
442          --prefix option below). Type 
443          $ cd /usr/src/pgsql/src
444          $ ./configure [ options ]
445             a. Among other chores, the configure script 
446               selects a system-specific "template" file 
447               from the files provided in the template 
448               subdirectory. If it cannot guess which one to 
449               use for your system, it will say so and exit. 
450               In that case you'll need to figure out which 
451               one to use and run configure again, this time 
452               giving the --with-template=TEMPLATE option to 
453               make the right file be chosen. 
454
455                Please Report Problems: If your system is not 
456                  automatically recognized by configure and 
457                  you have to do this, please send email to 
458                  scrappy@hub.org with the output of the 
459                  program ./config.guess. Indicate what the 
460                  template file should be.
461
462             b. Choose configuration options. Check  
463               Configuration Options for details. However, 
464               for a plain-vanilla first installation with 
465               no extra options like multi-byte character 
466               support or locale collation support it may be 
467               adequate to have chosen the installation 
468               areas and to run configure without extra 
469               options specified. The configure script 
470               accepts many additional options that you can 
471               use if you don't like the default 
472               configuration. To see them all, type 
473                    ./configure --help
474                Some of the more commonly used ones are: 
475                      --prefix=BASEDIR   Selects a different base directory
476                                         The default is /usr/local/pgsql.
477                      --with-template=TEMPLATE
478                                         Use template file TEMPLATE - the template
479                                         files are assumed to be in the directory
480                                         src/template, so look there for proper values.
481                      --with-tcl         Build interface libraries and programs requiring
482                                         Tcl/Tk, including libpgtcl, pgtclsh, and pgtksh.
483                      --with-perl        Build the Perl interface library.
484                      --with-odbc        Build the ODBC driver package.
485                      --enable-hba       Enables Host Based Authentication (DEFAULT)
486                      --disable-hba      Disables Host Based Authentication
487                      --enable-locale    Enables USE_LOCALE
488                      --enable-cassert   Enables 
489               ASSERT_CHECKING
490                      --with-CC=compiler
491                                         Use a specific C compiler that the configure
492                                         script cannot find.
493                      --with-CXX=compiler
494                      --without-CXX
495                                         Use a specific C++ compiler that the configure
496                                         script cannot find, or exclude C++ compilation
497                                         altogether.   (This only affects libpq++ at
498                                         present.)
499             c. Here is the configure script used on a Sparc Solaris 2.5 system with /opt/postgres 
500               specified as the installation base directory: 
501               $ ./configure --prefix=/opt/postgres \
502                   --with-template=sparc_solaris-gcc 
503               --with-pgport=5432 \
504                   --enable-hba --disable-locale
505
506                Tip: Of course, you may type these three 
507                  lines all on the same line.
508
509        12.     Install the man and HTML documentation. Type 
510          $ cd /usr/src/pgsql/doc
511          $ gmake install
512          The documentation is also available in Postscript 
513          format. Look for files ending with .ps.gz in the 
514          same directory.
515
516        13.     <removed>
517
518        14.     Compile the program. Type 
519          $ cd /usr/src/pgsql/src
520          $ gmake all >& make.log &
521          $ tail -f make.log
522          The last line displayed will hopefully be 
523          All of PostgreSQL is successfully made. Ready to 
524          install.
525           At this point, or earlier if you wish, type 
526          control-C to get out of tail. (If you have 
527          problems later on you may wish to examine file 
528          make.log for warning and error messages.) 
529
530             Note: You will probably find a number of warning 
531             messages in make.log. Unless you have problems 
532             later on, these messages may be safely ignored.
533
534          If the compiler fails with a message stating that 
535          the flex command cannot be found then install flex 
536          as described earlier. Next, change directory back 
537          to this directory, type 
538          $ make clean
539          then recompile again.
540          Compiler options, such as optimization and 
541          debugging, may be specified on the command line 
542          using the COPT variable. For example, typing 
543          $ gmake COPT="-g" all >& make.log &
544           would invoke your compiler's -g option in all 
545          steps of the build. See src/Makefile.global.in for 
546          further details.
547
548        15.     Install the program. Type 
549          $ cd /usr/src/pgsql/src
550          $ gmake install >& make.install.log &
551          $ tail -f make.install.log
552          The last line displayed will be 
553          gmake[1]: Leaving directory 
554          `/usr/src/pgsql/src/man'
555          At this point, or earlier if you wish, type 
556          control-C to get out of tail.
557
558        16.     If necessary, tell your system how to find 
559          the new shared libraries. You can do one of the 
560          following, preferably the first: 
561             a. As root, edit file /etc/ld.so.conf. Add a 
562               line 
563               /usr/local/pgsql/lib
564               to the file. Then run command /sbin/ldconfig.
565             b. In a bash shell, type 
566                   export 
567               LD_LIBRARY_PATH=/usr/local/pgsql/lib
568             c. In a csh shell, type 
569                   setenv LD_LIBRARY_PATH 
570               /usr/local/pgsql/lib
571          Please note that the above commands may vary 
572          wildly for different operating systems. Check the 
573          platform specific notes, such as those for 
574          Ultrix4.x or and for non-ELF Linux.
575          If, when you create the database, you get the 
576          message 
577          pg_id: can't load library 'libpq.so'
578           then the above step was necessary. Simply do this 
579          step, then try to create the database again.
580
581        17.     If you used the --with-perl option to 
582          configure, check the install log to see whether 
583          the Perl module was actually installed. If you've 
584          followed our advice to make the Postgres files be 
585          owned by an unprivileged userid, then the Perl 
586          module won't have been installed, for lack of 
587          write privileges on the Perl library directories. 
588          You can complete its installation, either now or 
589          later, by becoming the user that does own the Perl 
590          library (often root) (via su) and doing 
591          $ cd /usr/src/pgsql/src/interfaces/perl5
592          $ gmake install
593
594        18.     If it has not already been done, then prepare 
595          account postgres for using Postgres. Any account 
596          that will use Postgres must be similarly prepared. 
597          There are several ways to influence the runtime 
598          environment of the Postgres server. Refer to the 
599          Administrator's Guide for more information. 
600
601             Note: The following instructions are for a 
602             bash/sh shell. Adapt accordingly for other 
603             shells.
604
605             a. Add the following lines to your login 
606               environment: shell, ~/.bash_profile: 
607               PATH=$PATH:/usr/local/pgsql/bin
608               MANPATH=$MANPATH:/usr/local/pgsql/man
609               PGLIB=/usr/local/pgsql/lib
610               PGDATA=/usr/local/pgsql/data
611               export PATH MANPATH PGLIB PGDATA
612             b. Several regression tests could failed if the 
613               user's locale collation scheme is different 
614               from that of standard C locale. 
615               If you configure and compile Postgres with 
616               the --enable-locale option then set locale 
617               environment to C (or unset all LC_* 
618               variables) by putting these additional lines 
619               to your login environment before starting 
620               postmaster: 
621               LC_COLLATE=C
622               LC_CTYPE=C
623               LC_COLLATE=C
624               export LC_COLLATE LC_CTYPE LC_COLLATE
625             c. Make sure that you have defined these 
626               variables before continuing with the 
627               remaining steps. The easiest way to do this 
628               is to type: 
629               $ source ~/.bash_profile
630
631        19.     Create the database installation from your 
632          Postgres superuser account (typically account 
633          postgres). Do not do the following as root! This 
634          would be a major security hole. Type 
635          $ initdb
636
637        20.     Set up permissions to access the database 
638          system. Do this by editing file 
639          /usr/local/pgsql/data/pg_hba.conf. The 
640          instructions are included in the file. (If your 
641          database is not located in the default location, 
642          i.e. if PGDATA is set to point elsewhere, then the 
643          location of this file will change accordingly.) 
644          This file should be made read only again once you 
645          are finished. If you are upgrading from v6.0 or 
646          later you can copy file pg_hba.conf from your old 
647          database on top of the one in your new database, 
648          rather than redoing the file from scratch.
649
650        21.     Briefly test that the backend will start and 
651          run by running it from the command line. 
652             a. Start the postmaster daemon running in the 
653               background by typing 
654               $ cd
655               $ postmaster -i
656             b. Create a database by typing 
657               $ createdb
658             c. Connect to the new database: 
659               $ psql
660             d. And run a sample query: 
661               postgres=> SELECT datetime 'now';
662             e. Exit psql: 
663               postgres=> \q
664             f. Remove the test database (unless you will 
665               want to use it later for other tests): 
666               $ destroydb
667
668        22.     Run postmaster in the background from your 
669          Postgres superuser account (typically account 
670          postgres). Do not run postmaster from the root 
671          account! 
672          Usually, you will want to modify your computer so 
673          that it will automatically start postmaster 
674          whenever it boots. It is not required; the 
675          Postgres server can be run successfully from 
676          non-privileged accounts without root intervention.
677          Here are some suggestions on how to do this, 
678          contributed by various users.
679          Whatever you do, postmaster must be run by the 
680          Postgres superuser (postgres?) and not by root. 
681          This is why all of the examples below start by 
682          switching user (su) to postgres. These commands 
683          also take into account the fact that environment 
684          variables like PATH and PGDATA may not be set 
685          properly. The examples are as follows. Use them 
686          with extreme caution. 
687          o  If you are installing from a non-privileged 
688            account and have no root access, then start the 
689            postmaster and send it to the background: 
690            $ cd
691            $ nohup postmaster > regress.log 2>&1 &
692          o  Edit file rc.local on NetBSD or file rc2.d on 
693            SPARC Solaris 2.5.1 to contain the following 
694            single line: 
695            su postgres -c "/usr/local/pgsql/bin/postmaster 
696            -S -D /usr/local/pgsql/data"
697          o  In FreeBSD 2.2-RELEASE edit 
698            /usr/local/etc/rc.d/pgsql.sh to contain the 
699            following lines and make it chmod 755 and chown 
700            root:bin. 
701            #!/bin/sh
702            [ -x /usr/local/pgsql/bin/postmaster ] && {
703                su -l pgsql -c 'exec 
704            /usr/local/pgsql/bin/postmaster
705                    -D/usr/local/pgsql/data
706                    -S -o -F > /usr/local/pgsql/errlog' &
707                echo -n ' pgsql'
708            }
709             You may put the line breaks as shown above. The 
710            shell is smart enough to keep parsing beyond 
711            end-of-line if there is an expression unfinished. 
712            The exec saves one layer of shell under the 
713            postmaster process so the parent is init. 
714          o  In RedHat Linux add a file 
715            /etc/rc.d/init.d/postgres.init which is based on 
716            the example in contrib/linux/. Then make a 
717            softlink to this file from 
718            /etc/rc.d/rc5.d/S98postgres.init. 
719          o  In RedHat Linux edit file /etc/inittab to add the 
720            following as a single line: 
721            pg:2345:respawn:/bin/su - postgres -c 
722                "/usr/local/pgsql/bin/postmaster -D/usr/local/pgsql/data
723                >> /usr/local/pgsql/server.log 2>&1 </dev/null"
724
725             (The author of this example says this example 
726            will revive the postmaster if it dies, but he 
727            doesn't know if there are other side effects.) 
728
729        23.     Run the regression tests. The file 
730          /usr/src/pgsql/src/test/regress/README has 
731          detailed instructions for running and interpreting 
732          the regression tests. A short version follows 
733          here:
734             a. Type 
735               $ cd /usr/src/pgsql/src/test/regress
736               $ gmake clean
737               $ gmake all runtest
738               You do not need to type gmake clean if this 
739               is the first time you are running the tests.
740               You should get on the screen (and also 
741               written to file ./regress.out) a series of 
742               statements stating which tests passed and 
743               which tests failed. Please note that it can 
744               be normal for some tests to "fail" on some 
745               platforms. The script says a test has failed 
746               if there is any difference at all between the 
747               actual output of the test and the expected 
748               output. Thus, tests may "fail" due to minor 
749               differences in wording of error messages, 
750               small differences in floating-point roundoff, 
751               etc, between your system and the regression 
752               test reference platform. "Failures" of this 
753               type do not indicate a problem with Postgres. 
754               The file ./regression.diffs contains the 
755               textual differences between the actual test 
756               output on your machine and the "expected" 
757               output (which is simply what the reference 
758               system produced). You should carefully 
759               examine each difference listed to see whether 
760               it appears to be a significant issue.
761               For example, 
762               o   For a i686/Linux-ELF platform, no tests 
763                 failed since this is the v6.4 regression 
764                 testing reference platform.
765               o   For the SPARC/Linux-ELF platform, using the 
766                 970525 beta version of Postgres v6.2 the 
767                 following tests "failed": float8 and 
768                 geometry "failed" due to minor precision 
769                 differences in floating point numbers. 
770                 select_views produces massively different 
771                 output, but the differences are due to minor 
772                 floating point differences.
773               Even if a test result clearly indicates a 
774               real failure, it may be a localized problem 
775               that will not affect you. An example is that 
776               the int8 test will fail, producing obviously 
777               incorrect output, if your machine and C 
778               compiler do not provide a 64-bit integer data 
779               type (or if they do but configure didn't 
780               discover it). This is not something to worry 
781               about unless you need to store 64-bit 
782               integers.
783               Conclusion? If you do see failures, try to 
784               understand the nature of the differences and 
785               then decide if those differences will affect 
786               your intended use of Postgres. The regression 
787               tests are a helpful tool, but they may 
788               require some study to be useful.
789               After running the regression tests, type 
790               $ destroydb regression
791               $ cd /usr/src/pgsql/src/test/regress
792               $ gmake clean
793                to recover the disk space used for the 
794               tests. (You may want to save the 
795               regression.diffs file in another place before 
796               doing this.)
797
798        24.     If you haven't already done so, this would be 
799          a good time to modify your computer to do regular 
800          maintainence. The following should be done at 
801          regular intervals: 
802
803          Procedure 3.2. Minimal Backup Procedure
804          1.    Run the SQL command VACUUM. This will clean 
805             up your database. 
806          2.    Back up your system. (You should probably 
807             keep the last few backups on hand.) Preferably, 
808             no one else should be using the system at the 
809             time. 
810
811          Ideally, the above tasks should be done by a shell 
812          script that is run nightly or weekly by cron. Look 
813          at the man page for crontab for a starting point 
814          on how to do this. (If you do it, please e-mail us 
815          a copy of your shell script. We would like to set 
816          up our own systems to do this too.)
817
818        25.     If you are upgrading an existing system then 
819          reinstall your old database. Type 
820          $ cd
821          $ psql -e template1 < db.out
822           If your pre-v6.2 database uses either path or 
823          polygon geometric data types, then you will need 
824          to upgrade any columns containing those types. To 
825          do so, type (from within psql) 
826          UPDATE FirstTable SET PathCol = UpgradePath(PathCol);
827          UPDATE SecondTable SET PathCol = UpgradePath(PathCol);
828          ...
829          VACUUM;
830           UpgradePath() checks to see that a path value is 
831          consistant with the old syntax, and will not 
832          update a column which fails that examination. 
833          UpgradePoly() cannot verify that a polygon is in 
834          fact from an old syntax, but RevertPoly() is 
835          provided to reverse the effects of a mis-applied 
836          upgrade.
837
838        26.     If you are a new user, you may wish to play 
839          with Postgres as described below.
840
841        27.     Clean up after yourself. Type 
842          $ rm -rf /usr/src/pgsql_6_0
843          $ rm -rf /usr/local/pgsql_6_0
844          # Also delete old database directory tree if it is 
845          not in
846          #  /usr/local/pgsql_6_0/data
847          $ rm ~/postgresql-v6.2.1.tar.gz
848
849        28.     You will probably want to print out the 
850          documentation. If you have a Postscript printer, 
851          or have your machine already set up to accept 
852          Postscript files using a print filter, then to 
853          print the User's Guide simply type 
854          $ cd /usr/local/pgsql/doc
855          $ gunzip user.ps.tz | lpr
856          Here is how you might do it if you have 
857          Ghostscript on your system and are writing to a 
858          laserjet printer. 
859          $ alias gshp='gs -sDEVICE=laserjet -r300 -dNOPAUSE'
860          $ export 
861          GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts
862          $ gunzip user.ps.gz
863          $ gshp -sOUTPUTFILE=user.hp user.ps
864          $ gzip user.ps
865          $ lpr -l -s -r manpage.hp
866
867        29.     The Postgres team wants to keep Postgres 
868          working on all of the supported platforms. We 
869          therefore ask you to let us know if you did or did 
870          not get Postgres to work on you system. Please 
871          send a mail message to pgsql-ports@postgresql.org 
872          telling us the following: 
873          o  The version of Postgres (v6.4, 6.3.2, beta 981014, etc.). 
874          o  Your operating system (i.e. RedHat v5.1 Linux v2.0.34). 
875          o  Your hardware (SPARC, i486, etc.). 
876          o  Did you compile, install and run the regression 
877            tests cleanly? If not, what source code did you 
878            change (i.e. patches you applied, changes you 
879            made, etc.), what tests failed, etc. It is normal 
880            to get many warning when you compile. You do not 
881            need to report these. 
882        30.     Now create, access and manipulate databases 
883          as desired. Write client programs to access the 
884          database server. In other words, enjoy!
885
886 Playing with Postgres
887
888        After Postgres is installed, a database system is 
889        created, a postmaster daemon is running, and the 
890        regression tests have passed, you'll want to see 
891        Postgres do something. That's easy. Invoke the 
892        interactive interface to Postgres, psql: 
893
894        % psql template1
895
896        (psql has to open a particular database, but at this 
897        point the only one that exists is the template1 
898        database, which always exists. We will connect to it 
899        only long enough to create another one and switch to 
900        it.)
901        The response from psql is: 
902
903        Welcome to the POSTGRESQL interactive sql monitor:
904          Please read the file COPYRIGHT for copyright terms 
905        of POSTGRESQL
906
907           type \? for help on slash commands
908           type \q to quit
909           type \g or terminate with semicolon to execute 
910        query
911         You are currently connected to the database: 
912        template1
913
914        template1=>
915
916        Create the database foo: 
917
918        template1=> create database foo;
919        CREATEDB
920
921        (Get in the habit of including those SQL semicolons. 
922        Psql won't execute anything until it sees the 
923        semicolon or a "\g" and the semicolon is required to 
924        delimit multiple statements.)
925        Now connect to the new database: 
926
927        template1=> \c foo
928        connecting to new database: foo
929
930        ("slash" commands aren't SQL, so no semicolon. Use \? 
931        to see all the slash commands.)
932        And create a table: 
933
934        foo=> create table bar (i int4, c char(16));
935        CREATE
936
937        Then inspect the new table: 
938
939        foo=> \d bar
940
941        Table    = bar
942        +--------------+--------------+-------+
943        |    Field     |    Type      | Length|
944        +--------------+--------------+-------+
945        | i            | int4         |     4 |
946        | c            | (bp)char     |    16 |
947        +--------------+--------------+-------+
948
949        And so on. You get the idea.
950
951 The Next Step
952
953        Questions? Bugs? Feedback? First, read the files in 
954        directory /usr/src/pgsql/doc/. The FAQ in this 
955        directory may be particularly useful.
956        If Postgres failed to compile on your computer then 
957        fill out the form in file 
958        /usr/src/pgsql/doc/bug.template and mail it to the 
959        location indicated at the top of the form.
960        Check on the web site at http://www.postgresql.org 
961        For more information on the various support mailing 
962        lists.
963
964 Porting Notes
965
966          Note: Check for any platform-specific FAQs in the 
967          doc/ directory of the source distribution. For 
968          some ports, the notes below may be out of date.
969
970 Ultrix4.x
971
972          Note: There have been no recent reports of Ultrix 
973          usage with Postgres.
974
975        You need to install the libdl-1.1 package since 
976        Ultrix 4.x doesn't have a dynamic loader. It's 
977        available in 
978        s2k-ftp.CS.Berkeley.EDU:pub/personal/andrew/libdl-1.-
979        1.tar.Z
980
981 Linux
982
983        Linux ELF
984        The regression test reference machine is a 
985        linux-2.0.30/libc-5.3.12/RedHat-4.2 installation 
986        running on a dual processor i686. The linux-elf port 
987        installs cleanly. See the Linux FAQ for more details.
988
989        Linux a.out
990        For non-ELF Linux, the dld library MUST be obtained 
991        and installed on the system. It enables dynamic link 
992        loading capability to the Postgres port. The dld 
993        library can be obtained from the sunsite linux 
994        distributions. The current name is dld-3.2.5. Jalon 
995        Q. Zimmerman
996
997 BSD/OS
998
999        For BSD/OS 2.0 and 2.01, you will need to get the GNU 
1000        dld library.
1001
1002 NeXT
1003
1004        The NeXT port for v1.09 was supplied by Tom R. 
1005        Hageman. It requires a SysV IPC emulation library and 
1006        header files for shared libary and semaphore stuff. 
1007        Tom just happens to sell such a product so contact 
1008        him for information. He has also indicated that 
1009        binary releases of Postgres for NEXTSTEP will be made 
1010        available to the general public. Contact Info@RnA.nl 
1011        for information.
1012        We have no recent reports of successful NeXT 
1013        installations (as of v6.2.1). However, the 
1014        client-side libraries should work even if the backend 
1015        is not supported.
1016
1017 Chapter 4. Configuration Options
1018
1019 Parameters for Configuration (configure)
1020
1021        The full set of parameters available in configure can 
1022        be obtained by typing 
1023
1024        $ ./configure --help
1025
1026        The following parameters may be of interest to 
1027        installers: 
1028
1029        Directory and file names:
1030          --prefix=PREFIX         install architecture-independent files in PREFIX
1031                                  [/usr/local/pgsql]
1032          --bindir=DIR            user executables in DIR [EPREFIX/bin]
1033          --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
1034          --includedir=DIR        C header files in DIR [PREFIX/include]
1035          --mandir=DIR            man documentation in DIR [PREFIX/man]
1036        Features and packages:
1037          --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
1038          --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
1039          --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
1040          --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
1041        --enable and --with options recognized:
1042          --with-template=template
1043                                  use operating system template file
1044                                      see template directory
1045          --with-includes=incdir  site header files for tk/tcl, etc in DIR
1046          --with-libs=incdir      also search for libraries in DIR
1047          --with-libraries=libdir also search for libraries in DIR
1048          --enable-locale         enable locale support
1049          --enable-recode         enable cyrillic recode 
1050        support
1051          --with-mb=encoding    enable multi-byte support
1052          --with-pgport=portnum change default startup port
1053          --with-tcl              use tcl
1054          --with-tclconfig=tcldir tclConfig.sh and tkConfig.sh are in DIR
1055          --with-perl             use perl
1056          --with-odbc             build ODBC driver package
1057          --with-odbcinst=odbcdir change default directory for odbcinst.ini
1058          --enable-cassert        enable assertion checks (debugging)
1059          --with-CC=compiler      use specific C compiler
1060          --with-CXX=compiler     use specific C++ compiler
1061          --without-CXX           do not build libpq++
1062
1063        Some systems may have trouble building a specific 
1064        feature of Postgres. For example, systems with a 
1065        damaged C++ compiler may need to specify 
1066        --without-CXX to encourage the build procedure to 
1067        ignore the libpq++ construction.
1068
1069 Parameters for Building (make)
1070
1071        Many installation-related parameters can be set in 
1072        the building stage of Postgres installation.
1073        In most cases, these parameters should be place in a 
1074        file, Makefile.custom, intended just for that 
1075        purpose. The default distribution does not contain 
1076        this optional file, so you will create it using a 
1077        text editor of your choice. When upgrading 
1078        installations, you can simply copy your old 
1079        Makefile.custom to the new installation before doing 
1080        the build. 
1081
1082        make [ variable=value [,...] ]
1083
1084        A few of the many variables which can be specified 
1085        are: 
1086        POSTGRESDIR 
1087          Top of the installation tree. 
1088        BINDIR 
1089          Location of applications and utilities. 
1090        LIBDIR 
1091          Location of object libraries, including shared 
1092          libraries. 
1093        HEADERDIR 
1094          Location of include files. 
1095        ODBCINST 
1096          Location of installation-wide psqlODBC (ODBC) 
1097          configuration file. 
1098        There are other optional parameters which are not as 
1099        commonly used. Many of those listed below are 
1100        appropriate when doing Postgres server code 
1101        development. 
1102        CFLAGS 
1103          Set flags for the C compiler. Should be assigned 
1104          with "+=" to retain relevant default parameters. 
1105        YFLAGS 
1106          Set flags for the yacc/bison parser. -v might be 
1107          used to help diagnose problems building a new 
1108          parser. Should be assigned with "+=" to retain 
1109          relevant default parameters. 
1110        USE_TCL 
1111          Enable Tcl interface building. 
1112        HSTYLE 
1113          DocBook HTML style sheets for building the 
1114          documentation from scratch. Not used unless you 
1115          are developing new documentation from the 
1116          DocBook-compatible SGML source documents in 
1117          doc/src/sgml/. 
1118        PSTYLE 
1119          DocBook style sheets for building printed 
1120          documentation from scratch. Not used unless you 
1121          are developing new documentation from the 
1122          DocBook-compatible SGML source documents in 
1123          doc/src/sgml/. 
1124        Here is an example Makefile.custom for a PentiumPro 
1125        Linux system: 
1126
1127        # Makefile.custom
1128        # Thomas Lockhart 1998-03-01
1129
1130        POSTGRESDIR= /opt/postgres/current
1131        CFLAGS+= -m486 # -g -O0
1132
1133        # documentation
1134
1135        HSTYLE= /home/tgl/SGML/db118.d/docbook/html
1136        PSTYLE= /home/tgl/SGML/db118.d/docbook/print
1137
1138 Locale Support
1139
1140          Note: Written by Oleg Bartunov. See Oleg's web 
1141          page for additional information on locale and 
1142          Russian language support.
1143
1144        While doing a project for a company in Moscow, 
1145        Russia, I encountered the problem that postgresql had 
1146        no support of national alphabets. After looking for 
1147        possible workarounds I decided to develop support of 
1148        locale myself. I'm not a C-programer but already had 
1149        some experience with locale programming when I work 
1150        with perl (debugging) and glimpse. After several days 
1151        of digging through the Postgres source tree I made 
1152        very minor corections to 
1153        src/backend/utils/adt/varlena.c and 
1154        src/backend/main/main.c and got what I needed! I did 
1155        support only for LC_CTYPE and LC_COLLATE, but later 
1156        LC_MONETARY was added by others. I got many messages 
1157        from people about this patch so I decided to send it 
1158        to developers and (to my surprise) it was 
1159        incorporated into the Postgres distribution.
1160        People often complain that locale doesn't work for 
1161        them. There are several common mistakes: 
1162
1163        o  Didn't properly configure postgresql before 
1164         compilation. You must run configure with 
1165         --enable-locale option to enable locale support. 
1166         Didn't setup environment correctly when starting 
1167         postmaster. You must define environment variables 
1168         LC_CTYPE and LC_COLLATE before running postmaster 
1169         because backend gets information about locale from 
1170         environment. I use following shell script 
1171         (runpostgres): 
1172              #!/bin/sh
1173
1174              export LC_CTYPE=koi8-r
1175              export LC_COLLATE=koi8-r
1176              postmaster -B 1024 -S -D/usr/local/pgsql/data/ -o '-Fe'
1177
1178          and run it from rc.local as 
1179              /bin/su - postgres -c "/home/postgres/runpostgres"
1180
1181        o  Broken locale support in OS (for example, locale 
1182         support in libc under Linux several times has 
1183         changed and this caused a lot of problems). Latest 
1184         perl has also support of locale and if locale is 
1185         broken perl -v will complain something like: 
1186              8:17[mira]:~/WWW/postgres>setenv LC_CTYPE 
1187         not_exist
1188              8:18[mira]:~/WWW/postgres>perl -v
1189              perl: warning: Setting locale failed.
1190              perl: warning: Please check that your locale 
1191         settings:
1192                      LC_ALL = (unset),
1193                      LC_CTYPE = "not_exist",
1194                      LANG = (unset)
1195                  are supported and installed on your 
1196         system.
1197              perl: warning: Falling back to the standard 
1198         locale ("C").
1199
1200        o  Wrong location of locale files! Possible locations 
1201         include: /usr/lib/locale (Linux, Solaris), 
1202         /usr/share/locale (Linux), /usr/lib/nls/loc (DUX 
1203         4.0). Check man locale to find the correct 
1204         location. Under Linux I did a symbolic link between 
1205         /usr/lib/locale and /usr/share/locale to be sure 
1206         that the next libc will not break my locale.
1207
1208 What are the Benefits?
1209
1210        You can use ~* and order by operators for strings 
1211        contain characters from national alphabets. 
1212        Non-english users definitely need that. If you won't 
1213        use locale stuff just undefine the USE_LOCALE 
1214        variable.
1215
1216 What are the Drawbacks?
1217
1218        There is one evident drawback of using locale - it's 
1219        speed! So, use locale only if you really need it.
1220
1221 Kerberos Authentication
1222
1223        Kerberos is an industry-standard secure 
1224        authentication system suitable for distributed 
1225        computing over a public network.
1226
1227 Availability
1228
1229        The Kerberos authentication system is not distributed 
1230        with Postgres. Versions of Kerberos are typically 
1231        available as optional software from operating system 
1232        vendors. In addition, a source code distribution may 
1233        be obtained through MIT Project Athena. 
1234
1235          Note: You may wish to obtain the MIT version even 
1236          if your vendor provides a version, since some 
1237          vendor ports have been deliberately crippled or 
1238          rendered non-interoperable with the MIT version.
1239
1240        Users located outside the United States of America 
1241        and Canada are warned that distribution of the actual 
1242        encryption code in Kerberos is restricted by U. S. 
1243        Government export regulations.
1244        Inquiries regarding your Kerberos should be directed 
1245        to your vendor or MIT Project Athena. Note that FAQLs 
1246        (Frequently-Asked Questions Lists) are periodically 
1247        posted to the Kerberos mailing list (send mail to 
1248        subscribe), and USENET news group.
1249
1250 Installation
1251
1252        Installation of Kerberos itself is covered in detail 
1253        in the Kerberos Installation Notes . Make sure that 
1254        the server key file (the srvtab or keytab) is somehow 
1255        readable by the Postgres account.
1256        Postgres and its clients can be compiled to use 
1257        either Version 4 or Version 5 of the MIT Kerberos 
1258        protocols by setting the KRBVERS variable in the file 
1259        src/Makefile.global to the appropriate value. You can 
1260        also change the location where Postgres expects to 
1261        find the associated libraries, header files and its 
1262        own server key file.
1263        After compilation is complete, Postgres must be 
1264        registered as a Kerberos service. See the Kerberos 
1265        Operations Notes and related manual pages for more 
1266        details on registering services.
1267
1268 Operation
1269
1270        After initial installation, Postgres should operate 
1271        in all ways as a normal Kerberos service. For details 
1272        on the use of authentication, see the PostgreSQL 
1273        User's Guide reference sections for postmaster and 
1274        psql.
1275        In the Kerberos Version 5 hooks, the following 
1276        assumptions are made about user and service naming: 
1277        o User principal names (anames) are assumed to 
1278         contain the actual Unix/Postgres user name in the 
1279         first component. 
1280        o The Postgres service is assumed to be have two 
1281         components, the service name and a hostname, 
1282         canonicalized as in Version 4 (i.e., with all 
1283         domain suffixes removed). 
1284
1285        Table 4-1. Kerberos Parameter Examples
1286        Param-   Example
1287        eter
1288        user     frew@S2K.ORG
1289        user     aoki/HOST=miyu.S2K.Berkeley-
1290                 .EDU@S2K.ORG
1291        host     postgres_dbms/ucbvax@S2K.ORG
1292
1293
1294        Support for Version 4 will disappear sometime after 
1295        the production release of Version 5 by MIT.\f
1296
1297 Chapter 5. Release Notes
1298
1299 Release 6.4
1300
1301        There are many new features and improvements in this 
1302        release. Thanks to our developers and maintainers, 
1303        nearly every aspect of the system has received some 
1304        attention since the previous release. Here is a 
1305        brief, incomplete summary: 
1306        o Views and rules are now functional thanks to 
1307         extensive new code in the rewrite rules system from 
1308         Jan Wieck. He also wrote a chapter on it for the 
1309         Programmer's Guide. 
1310        o Jan also contributed a second procedural language, 
1311         PL/pgSQL, to go with the original PL/pgTCL 
1312         procedural language he contributed last release. 
1313        o We have optional multiple-byte character set 
1314         support from Tatsuo Iishi to complement our 
1315         existing locale support. 
1316        o Client/server communications has been cleaned up, 
1317         with better support for asynchronous messages and 
1318         interrupts thanks to Tom Lane. 
1319        o The parser will now perform automatic type coersion 
1320         to match arguments to available operators and 
1321         functions, and to match columns and expressions 
1322         with target columns. This uses a generic mechanism 
1323         which supports the type extensibility features of 
1324         Postgres. There is a new chapter in the User's 
1325         Guide which covers this topic. 
1326        o Three new data types have been added. Two types, 
1327         inet and cidr, support various forms of IP network, 
1328         subnet, and machine addressing. There is now an 
1329         8-byte integer type available on some platforms. 
1330         See the chapter on data types in the User's Guide 
1331         for details. A fourth type, serial, is now 
1332         supported by the parser as an amalgam of the int4 
1333         type, a sequence, and a unique index. 
1334        o Several more SQL92-compatible syntax features have 
1335         been added, including INSERT DEFAULT VALUES 
1336        o The automatic configuration and installation system 
1337         has received some attention, and should be more 
1338         robust for more platforms than it has ever been. 
1339
1340 Migration to v6.4
1341
1342        A dump/restore using pg_dump or pg_dumpall is 
1343        required for those wishing to migrate data from any 
1344        previous release of Postgres.
1345
1346 Detailed Change List
1347
1348        Bug Fixes
1349        ---------
1350        Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
1351        Remove char2-16 data types, use char/varchar(Darren)
1352        Pqfn not handles a NOTICE message(Anders)
1353        Reduced busywaiting overhead for spinlocks with many 
1354        backends (dg)
1355        Stuck spinlock detection (dg)
1356        Fix up "ISO-style" timespan decoding and 
1357        encoding(Thomas)
1358        Fix problem with table drop after rollback of 
1359        transaction(Vadim)
1360        Change error message and remove non-functional update 
1361        message(Vadim)
1362        Fix for COPY array checking
1363        Fix for SELECT 1 UNION SELECT NULL
1364        Fix for buffer leaks in large object calls(Pascal)
1365        Change owner from oid to int4 type(Bruce)
1366        Fix a bug in the oracle compatibility functions 
1367        btrim() ltrim() and rtrim()
1368        Fix for shared invalidation cache overflow(Massimo)
1369        Prevent file descriptor leaks in failed COPY's(Bruce)
1370        Fix memory leak in libpgtcl's pg_select(Constantin)
1371        Fix problems with username/passwords over 8 
1372        characters(Tom)
1373        Fix problems with handling of asynchronous NOTIFY in 
1374        backend(Tom)
1375        Fix of many bad system table entries(Tom)
1376
1377        Enhancements
1378        ------------
1379        Upgrade ecpg and ecpglib,see 
1380        src/interfaces/ecpc/ChangeLog(Michael)
1381        Show the index used in an EXPLAIN(Zeugswetter)
1382        EXPLAIN  invokes  rule system and shows plan(s) for rewritten queries(Jan)
1383        Multi-byte awareness of many data types and functions, via configure(Tatsuo)
1384        New configure --with-mb option(Tatsuo)
1385        New initdb --pgencoding option(Tatsuo)
1386        New createdb -E multibyte option(Tatsuo)
1387        Select version(); now returns PostgreSQL version(Jeroen)
1388        Libpq now allows asynchronous clients(Tom)
1389        Allow cancel from client of backend query(Tom)
1390        Psql now cancels query with Control-C(Tom)
1391        Libpq users need not issue dummy queries to get NOTIFY messages(Tom)
1392        NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
1393        PGresult struct now includes associated error message, if any(Tom)
1394        Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
1395        Add routines to convert between varchar and bpchar(Thomas)
1396        Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
1397        Add bit flags to support timezonehour and minute in data retrieval(Thomas)
1398        Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
1399        Fixes for unary minus parsing with leading spaces(Thomas)
1400        Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
1401        Check for and properly ignore FOREIGN KEY column constraints(Thomas)
1402        Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
1403        Enable HAVING clause but no fixes elsewhere yet.
1404        Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
1405        Save string type if specified for DEFAULT clause handling(Thomas)
1406        Coerce operations involving different data types(Thomas)
1407        Allow some index use for columns of different types(Thomas)
1408        Add capabilities for automatic type conversion(Thomas)
1409        Cleanups for large objects, so file is truncated on open(Peter)
1410        Readline cleanups(Tom)
1411        Allow psql  \f \ to make spaces as delimiter(Bruce)
1412        Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
1413        Msql compatibility library in /contrib(Aldrin)
1414        Remove the requirement that ORDER/GROUP BY clause identifiers be 
1415        included in the target list(David)
1416        Convert columns to match columns in UNION clauses(Thomas)
1417        Remove fork()/exec() and only do fork()(Bruce)
1418        Jdbc cleanups(Peter)
1419        Show backend status on ps command line(only works on some platforms)(Bruce)
1420        Pg_hba.conf now has a sameuser option in the database field
1421        Make lo_unlink take oid param, not int4
1422        New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
1423        Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
1424        libpgtcl cleanups(Tom)
1425        Add -error option to libpgtcl's pg_result command(Tom)
1426        New locale patch, see docs/README/locale(Oleg)
1427        Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
1428        New contrib/lo code for large object orphan removal(Peter)
1429        New psql command "SET CLIENT_ENCODING TO 'encoding'" for multi-bytes
1430        feature, see /doc/README.mb(Tatsuo)
1431        /contrib/noupdate code to revoke update permission on a column
1432        Libpq can now be compiled on win32(Magnus)
1433        Add PQsetdbLogin() in libpq
1434        New 8-byte integer type, checked by configure for OS support(Thomas)
1435        Better support for quoted table/column names(Thomas)
1436        Surround table and column names with double-quotes in pg_dump(Thomas)
1437        PQreset() now works with passwords(Tom)
1438        Handle case of GROUP BY target list column number out of range(David)
1439        Allow UNION in subselects
1440        Add auto-size to screen to \d? commands(Bruce)
1441        Use UNION to show all \d? results in one query(Bruce)
1442        Add \d? field search feature(Bruce)
1443        Pg_dump issues fewer \connect requests(Tom)
1444        Make pg_dump -z flag work better, document it in manual page(Tom)
1445        Add HAVING clause with full support for subselects 
1446        and unions(Stephan)
1447        Full text indexing routines in contrib/fulltextindex(Maarten)
1448        Transaction ids now stored in shared memory(Vadim)
1449        New PGCLIENTENCODING when issuing COPY command(Tatsuo)
1450        Support for SQL92 syntax "SET NAMES"(Tatsuo)
1451        Support for LATIN2-5(Tatsuo)
1452        Add UNICODE regression test case(Tatsuo)
1453        Lock manager cleanup, new locking modes for LLL(Vadim)
1454        Allow index use with OR clauses(Bruce)
1455        Allows "SELECT NULL ORDER BY 1;"
1456        Explain VERBOSE prints the plan, and now pretty-prints the plan to
1457        the postmaster log file(Bruce)
1458        Add Indices display to \d command(Bruce)
1459        Allow GROUP BY on functions(David)
1460        New pg_class.relkind for large objects(Bruce)
1461        New way to send libpq NOTICE messages to a different location(Tom)
1462        New \w write command to psql(Bruce)
1463        New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
1464        Allow binary-compatible indices to be considered when checking for valid
1465        indices for restriction clauses containing a constant(Thomas)
1466        New ISBN/ISSN code in /contrib/isbn_issn
1467        Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
1468        New rewrite system fixes many problems with rules and views(Jan)
1469                * Rules on relations work
1470                * Event qualifications on insert/update/delete work
1471                * New OLD variable to reference CURRENT, CURRENT will be remove in future
1472                * Update rules can reference NEW and OLD in rule qualifications/actions
1473                * Insert/update/delete rules on views work
1474                * Multiple rule actions are now supported, surrounded by parentheses
1475                * Regular users can create views/rules on tables they have RULE permits
1476                * Rules and views inherit the permissions on the creator
1477                * No rules at the column level
1478                * No UPDATE NEW/OLD rules
1479                * New pg_tables, pg_indexes, pg_rules and pg_views system views
1480                * Only a single action on SELECT rules
1481                * Total rewrite overhaul, perhaps for 6.5
1482                * handle subselects
1483                * handle aggregates on views
1484                * handle insert into select from view works
1485        System indexes are now multi-key(Bruce)
1486        Oidint2, oidint4, and oidname types are removed(Bruce)
1487        Use system cache for more system table lookups(Bruce)
1488        New backend programming language PL/pgSQL in backend/pl(Jan)
1489        New SERIAL data type, auto-creates sequence/index(Thomas)
1490        Enable assert checking without a recompile(Massimo)
1491        User lock enhancements(Massimo)
1492        New setval() command to set sequence value(Massimo)
1493        Auto-remove unix socket file on startup if no postmaster running(Massimo)
1494        Conditional trace package(Massimo)
1495        New UNLISTEN command(Massimo)
1496        Psql and libpq now compile under win32 using win32.mak(Magnus)
1497        Lo_read no longer stores trailing NULL(Bruce)
1498        Identifiers are now truncated to 31 characters internally(Bruce)
1499        Createuser options now availble on the command line
1500        Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
1501        Prevent file descriptor leaf from failed COPY(Bruce)
1502        New pg_upgrade command(Bruce)
1503        Updated /contrib directories(Massimo)
1504        New CREATE TABLE DEFAULT VALUES statement available(Thomas)
1505        New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
1506        New DECLARE and FETCH feature(Thomas)
1507        libpq's internal structures now not exported(Tom)
1508        Allow up to 8 key indexes(Bruce)
1509        Remove ARCHIVE keyword, that is no longer used(Thomas)
1510        pg_dump -n flag to supress quotes around indentifiers
1511        disable system columns for views(Jan)
1512        new INET and CIDR types for network addresses(TomH, Paul)
1513        no more double quotes in psql output pg_dump now dumps views(Terry)
1514        new SET QUERY_LIMIT(Tatsuo,Jan)
1515
1516        Source Tree Changes
1517        -------------------
1518        /contrib cleanup(Jun)
1519        Inline some small functions called for every row(Bruce)
1520        Alpha/linux fixes
1521        Hp/UX cleanups(Tom)
1522        Multi-byte regression tests(Soonmyung.)
1523        Remove --disabled options from configure
1524        Define PGDOC to use POSTGRESDIR by default
1525        Make regression optional
1526        Remove extra braces code to pgindent(Bruce)
1527        Add bsdi shared library support(Bruce)
1528        New --without-CXX support configure option(Brook)
1529        New FAQ_CVS
1530        Update backend flowchart in tools/backend(Bruce)
1531        Change atttypmod from int16 to int32(Bruce, Tom)
1532        Getrusage() fix for platforms that do not have it(Tom)
1533        Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
1534        NS32K platform fixes(Phil Nelson, John Buller)
1535        Sco 7/UnixWare 2.x fixes(Billy,others)
1536        Sparc/Solaris 2.5 fixes(Ryan)
1537        Pgbuiltin.3 is obsolete, move to doc files(Thomas)
1538        Even more documention(Thomas)
1539        Nextstep support(Jacek)
1540        Aix support(David)
1541        pginterface manual page(Bruce)
1542        shared libraries all have version numbers
1543        merged all OS-specific shared library defines into one file
1544        smarter TCL/TK configuration checking(Billy)
1545        smarter perl configuration(Brook)
1546        configure uses supplied install-sh if no install script found(Tom)
1547        new Makefile.shlib for shared library configuration(Tom)