3 PostgreSQL Installation Guide
4 by The PostgreSQL Development Team
6 Edited by Thomas Lockhart
8 PostgreSQL is copyright (C) 1998
9 by the Postgres Global Development Group.
16 Currently Supported Platforms
19 Requirements to Run Postgres
20 Installation Procedure
30 4. Configuration Options
31 Parameters for Configuration (configure)
32 Parameters for Building (make)
34 What are the Benefits?
35 What are the Drawbacks?
36 Kerberos Authentication
47 2-1. Supported Platforms
48 2-2. Possibly Incompatible Platforms
49 4-1. Kerberos Parameter Examples
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.
61 Chapter 1. Introduction
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.
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.
79 Currently Supported Platforms
81 At the time of publication, the following platforms
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
90 DGUX 5.4R4.11 m88k v6.3 1998-03-01 v6.4 probably OK. Needs
91 new maintainer. (Brian E
93 Digital Unix Alpha v6.4 1998-10-29 Minor patchable problems
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
99 linux 2.0.x Alpha v6.3.2 1998-04-16 Mostly successful. Needs
102 linux 2.0.x x86 v6.4 1998-10-27 (Thomas Lockhart)
103 linux x86 v6.4 1998-10-25 (Oliver Elphick, Taral)
105 linux 2.0.x Sparc v6.4 1998-10-25 (Tom Szybist)
106 linuxPPC PPC603e v6.4 1998-10-26 Powerbook 2400c (Tatsuo
108 mklinux DR3 PPC750 v6.4 1998-09-16 PowerMac 7600 (Tatsuo
110 NetBSD/i386 x86 v6.4 1998-10-25 (Brook Milligan)
112 NetBSD- NS32532 v6.4 1998-10-27 (small problems in
113 current date/time math
115 NetBSD/sparc Sparc v6.4 1998-10-27 (Tom I Helbekkmo)
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.
120 SCO UnixWare x86 v6.4 1998-10-04 (Billy G. Allie)
122 Solaris x86 v6.4 1998-10-28 (Marc Fournier)
123 Solaris Sparc v6.4 1998-10-28 (Tom Szybist, Frank
125 SunOS 4.1.4 Sparc v6.3 1998-03-01 patches submitted (Tatsuo
127 SVR4 MIPS v6.4 1998-10-28 no 64-bit int support
129 SVR4 4.4 m88k v6.2.1 1998-03-01 confirmed with patching
131 Windows NT x86 v6.4 1998-10-08 Mostly working with the
132 Cygwin library. No DLLs
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.
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.
146 Unsupported Platforms
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.
153 Table 2-2. Possibly Incompatible Platforms
154 OS Processor Version Reported Remarks
155 MacOS all v6.3 1998-03-01 not library compatible;
157 NetBSD arm32 v6.3 1998-03-01 not yet working (Dave
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;
163 patches (David Wetzel)
164 Ultrix MIPS,VAX? v6.x 1998-03-01 no recent reports;
166 Windows x86 v6.3 1998-03-01 not library compatible;
167 client side maybe; use
171 Note that Windows ports of the frontend are
172 apparently possible using third-party Posix porting
175 Chapter 3. Installation
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,
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
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.
200 Requirements to Run Postgres
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
228 To check for disk space, use
232 Installation Procedure
234 Procedure 3.1. Postgres Installation
236 For a fresh install or upgrading from previous
237 releases of Postgres:
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
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.
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.
268 3. Log in to the Postgres superuser account. Most of
269 the remaining steps in the installation will
270 happen in this account.
273 ftp://ftp.postgresql.org/pub/postgresql-v6.4.tar.gz
274 from the Internet. Store it in your home directory.
276 5. Some platforms use flex. If your system uses flex
277 then make sure you have a good version. To check,
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.
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
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:
304 ftp> get flex-2.5.4.tar.gz
306 $ gunzip -c flex-2.5.4.tar.gz | tar xvf -
308 $ configure --prefix=/usr
311 # You must be root when typing the next line:
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.
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
330 Tip: Do not use the pg_dumpall script from v6.0 or
331 everything will be owned by the Postgres super
334 To dump your fairly recent post-v6.0 database
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:
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
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),
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
356 several times to see if the size of the file is
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.
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
370 /usr/local/pgsql/data/pg_hba.conf to allow
371 only you on, then bring postmaster back up.
375 7. If you are upgrading an existing system then kill
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".)
385 to actually stop the process.
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
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
401 /usr/local/pgsql/data/pg_hba.conf.
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
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
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.
431 $ chown postgres:postgres pgsql
434 $ chown postgres:postgres pgsql
436 10. Unzip and untar the new source file. Type
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.
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.
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
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
491 Use a specific C compiler that the configure
495 Use a specific C++ compiler that the configure
496 script cannot find, or exclude C++ compilation
497 altogether. (This only affects libpq++ at
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
504 --enable-hba --disable-locale
506 Tip: Of course, you may type these three
507 lines all on the same line.
509 12. Install the man and HTML documentation. Type
510 $ cd /usr/src/pgsql/doc
512 The documentation is also available in Postscript
513 format. Look for files ending with .ps.gz in the
518 14. Compile the program. Type
519 $ cd /usr/src/pgsql/src
520 $ gmake all >& make.log &
522 The last line displayed will hopefully be
523 All of PostgreSQL is successfully made. Ready to
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.)
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.
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
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
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.
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
564 to the file. Then run command /sbin/ldconfig.
565 b. In a bash shell, type
567 LD_LIBRARY_PATH=/usr/local/pgsql/lib
568 c. In a csh shell, type
569 setenv LD_LIBRARY_PATH
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
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.
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
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.
601 Note: The following instructions are for a
602 bash/sh shell. Adapt accordingly for other
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
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
629 $ source ~/.bash_profile
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
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.
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
656 b. Create a database by typing
658 c. Connect to the new database:
660 d. And run a sample query:
661 postgres=> SELECT datetime 'now';
664 f. Remove the test database (unless you will
665 want to use it later for other tests):
668 22. Run postmaster in the background from your
669 Postgres superuser account (typically account
670 postgres). Do not run postmaster from the root
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:
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
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
702 [ -x /usr/local/pgsql/bin/postmaster ] && {
704 /usr/local/pgsql/bin/postmaster
705 -D/usr/local/pgsql/data
706 -S -o -F > /usr/local/pgsql/errlog' &
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"
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.)
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
735 $ cd /usr/src/pgsql/src/test/regress
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.
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
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
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
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
803 Procedure 3.2. Minimal Backup Procedure
804 1. Run the SQL command VACUUM. This will clean
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
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.)
818 25. If you are upgrading an existing system then
819 reinstall your old database. Type
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);
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
838 26. If you are a new user, you may wish to play
839 with Postgres as described below.
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
846 # /usr/local/pgsql_6_0/data
847 $ rm ~/postgresql-v6.2.1.tar.gz
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
859 $ alias gshp='gs -sDEVICE=laserjet -r300 -dNOPAUSE'
861 GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts
863 $ gshp -sOUTPUTFILE=user.hp user.ps
865 $ lpr -l -s -r manpage.hp
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!
886 Playing with Postgres
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:
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
901 The response from psql is:
903 Welcome to the POSTGRESQL interactive sql monitor:
904 Please read the file COPYRIGHT for copyright terms
907 type \? for help on slash commands
909 type \g or terminate with semicolon to execute
911 You are currently connected to the database:
916 Create the database foo:
918 template1=> create database foo;
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:
928 connecting to new database: foo
930 ("slash" commands aren't SQL, so no semicolon. Use \?
931 to see all the slash commands.)
934 foo=> create table bar (i int4, c char(16));
937 Then inspect the new table:
942 +--------------+--------------+-------+
943 | Field | Type | Length|
944 +--------------+--------------+-------+
946 | c | (bp)char | 16 |
947 +--------------+--------------+-------+
949 And so on. You get the idea.
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
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.
972 Note: There have been no recent reports of Ultrix
975 You need to install the libdl-1.1 package since
976 Ultrix 4.x doesn't have a dynamic loader. It's
978 s2k-ftp.CS.Berkeley.EDU:pub/personal/andrew/libdl-1.-
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.
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
999 For BSD/OS 2.0 and 2.01, you will need to get the GNU
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
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
1017 Chapter 4. Configuration Options
1019 Parameters for Configuration (configure)
1021 The full set of parameters available in configure can
1022 be obtained by typing
1024 $ ./configure --help
1026 The following parameters may be of interest to
1029 Directory and file names:
1030 --prefix=PREFIX install architecture-independent files in PREFIX
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
1051 --with-mb=encoding enable multi-byte support
1052 --with-pgport=portnum change default startup port
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++
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.
1069 Parameters for Building (make)
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
1082 make [ variable=value [,...] ]
1084 A few of the many variables which can be specified
1087 Top of the installation tree.
1089 Location of applications and utilities.
1091 Location of object libraries, including shared
1094 Location of include files.
1096 Location of installation-wide psqlODBC (ODBC)
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
1103 Set flags for the C compiler. Should be assigned
1104 with "+=" to retain relevant default parameters.
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.
1111 Enable Tcl interface building.
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
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
1124 Here is an example Makefile.custom for a PentiumPro
1128 # Thomas Lockhart 1998-03-01
1130 POSTGRESDIR= /opt/postgres/current
1131 CFLAGS+= -m486 # -g -O0
1135 HSTYLE= /home/tgl/SGML/db118.d/docbook/html
1136 PSTYLE= /home/tgl/SGML/db118.d/docbook/print
1140 Note: Written by Oleg Bartunov. See Oleg's web
1141 page for additional information on locale and
1142 Russian language support.
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:
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
1174 export LC_CTYPE=koi8-r
1175 export LC_COLLATE=koi8-r
1176 postmaster -B 1024 -S -D/usr/local/pgsql/data/ -o '-Fe'
1178 and run it from rc.local as
1179 /bin/su - postgres -c "/home/postgres/runpostgres"
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
1188 8:18[mira]:~/WWW/postgres>perl -v
1189 perl: warning: Setting locale failed.
1190 perl: warning: Please check that your locale
1193 LC_CTYPE = "not_exist",
1195 are supported and installed on your
1197 perl: warning: Falling back to the standard
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.
1208 What are the Benefits?
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
1216 What are the Drawbacks?
1218 There is one evident drawback of using locale - it's
1219 speed! So, use locale only if you really need it.
1221 Kerberos Authentication
1223 Kerberos is an industry-standard secure
1224 authentication system suitable for distributed
1225 computing over a public network.
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.
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.
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.
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.
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
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
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).
1285 Table 4-1. Kerberos Parameter Examples
1289 user aoki/HOST=miyu.S2K.Berkeley-
1291 host postgres_dbms/ucbvax@S2K.ORG
1294 Support for Version 4 will disappear sometime after
1295 the production release of Version 5 by MIT.
\f
1297 Chapter 5. Release Notes
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
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.
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.
1346 Detailed Change List
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
1355 Stuck spinlock detection (dg)
1356 Fix up "ISO-style" timespan decoding and
1358 Fix problem with table drop after rollback of
1360 Change error message and remove non-functional update
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
1373 Fix problems with handling of asynchronous NOTIFY in
1375 Fix of many bad system table entries(Tom)
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
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
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)
1518 /contrib cleanup(Jun)
1519 Inline some small functions called for every row(Bruce)
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)
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)
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)