POSTGRES INSTALLATION INSTRUCTIONS Release 4.1 Document Overview Introduction Site Requirements Hardware Software Distribution Tape Expertise Configuration Operating System Disk Requirements Kernel Installing POSTGRES Preparation Finding a Good Place for POSTGRES Creating the POSTGRES Directory Creating the POSTGRES User Loading POSTGRES From Tape Loading POSTGRES From a Tar File Configuration Kernel Reconfiguration for Sparcs Kernel Reconfiguration for DEC’s Running the Pre-installed POSTGRES System Compiling and Installing POSTGRES Creating the Initial Database Testing Running POSTGRES ThePOSTGRESPostmaster ThePOSTGRESTerminal Monitor ThePOSTGRESBackend POSTGRESSupport Programs Optional Installation Installing LIBPQ, the POSTGRES Frontend Library POSTGRESHeader Files Wisconsin Benchmark Database Minimal Installation Documentation Miscellaneous Bug Reports Consulting POSTGRESMailing List 1. Introduction This document givesinstallation instructions for the POSTGRES database system under development at the University of California, Berkeley. POSTGRES is distributed in source code format and is the property of the Regents of the University of California. However, the University will grant unlimited commercialization rights for anyderivedwork on the condition that an educational license to the derivedwork is obtained. For further information, consult the BerkeleyCampus Software Office, 295 Evans Hall, University of Califor- nia, Berkeley, CA94720. The University and the POSTGRES development group provide no warranty as to the fitness of the code for anypurpose whatsoever, and cannot guarantee assistance in fixing problems. This is unsupported software. 2. Site Requirements 2.1. Hardware POSTGRES currently has been tested by the POSTGRES development team on Sun Microsystems SPARC architecture machines running SunOS 4.1 (Solaris 1.x). (POSTGRES will not run on machines running SunOS 5 (Solaris 2.x)). POSTGRES also runs on DECstation 3100s and 5000s running Ultrix 4.1 and higher. In order to use POSTGRES,your machine should have atleast 8 megabytes of memory and you will require at least 45 megabytes of disk space to hold source, binaries, and user databases. If you choose to compile POSTGRES for source-leveldebugging, you will need roughly twice as much disk space. See the section on compilation for details. The Ultrix version requires a kernel which allows 4 megabytes of shared memory.Also, the original release of Ultrix 4.3 has a kernel bug that causes the operating system to hang when running POSTGRES. The bug is in the shared memory module in the kernel, and a patch is available from DEC which fixes the bug. Contact your DEC representative for patch number CLD-CXO09447. (This patch has been included in Ultrix 4.3a.) 2.2. Software 2.3. Distribution Tape These instructions assume you have a POSTGRES Version 4.1 distribution tape (in either 1600bpi 9-track, SCSI cartridge, or DEC TK50 cartridge format) or a POSTGRES tar file. This release comes with a pre- installed version of POSTGRES ready to run for the twoplatforms we officially support. This is a test to see if our users can run the pre-installed system to avoid compiling the sources from scratch. Should anyprob- lems arise with the pre-installed system, it is recommended that the sources be rebuilt from scratch to rule out anycompatibility problems between the system we compiled on here and your own. There are two potential releases you may want (same source, different binaries). The tar version of the Ultrix release is postgres-v4r1.ultrix.tar.Z and the SPARC release is postgres-v4r1.sparc.tar.Z available via anonymous ftp from postgres.berkeley.edu.Nosources-only tar file is currently available. 2.4. Expertise Once a site is properly configured and POSTGRES is installed, very little UNIX expertise is required to main- tain things. However, initially setting things up for your site to run POSTGRES may be difficult and we advise that the person installing POSTGRES be familiar with system administration procedures. Also note that various steps require superuser privilege on the system, so we advise that your site’ssystem administra- tor read this document also. 2.5. Configuration This section briefly describes the configuration you need to run POSTGRES.Read this to familiarize yourself with the procedure. Detailed instructions for making appropriate modifications to your system are given later in this document. 2 2.5.1. Operating System POSTGRES expects things to be configured for BSD by default. If the default on your site is to use the SunOS System V compiler and libraries then you may have tomakesome changes to this procedure before compiling POSTGRES. To compile this release from sources requires a newversion of makewhich comes from the latest BSD release. A bootstrapping version of the makesources is included with this release, as is a precompiled binary with its configuration files. The makeprogram is installed using the name bmake to avoid anycon- flict with your native make. 2.5.2. Disk Requirements POSTGRES requires 50 megabytes of disk space, preferably on a single partition, to compile and install from sources. If you run the pre-installed system, you only need 25 megabytes to hold the executables and sources. 2.5.3. Kernel POSTGRES makes use of the optional System V shared memory operations provided by SunOS and DEC Ultrix which require a properly configured kernel which is in general different than the factory-shipped generic kernel. See the section on kernel configuration for details. 3. Installing POSTGRES There are potentially tworoutes you can go to install this system. Either you can choose to run the pre- installed system shipped with the release, or you can compile and install the sources from scratch. In either case your kernel must be configured to support the shared memory and semaphore operations required by the code. Assuming you have run POSTGRES in the past, you may already be properly configured to run. Also, should you opt to run the pre-installed system, let us reiterate that if you run into anycomplications, it would be wise to recompile the sources from scratch before reporting anyproblems to our mailing list. We are, however, interested in anyfeedback you may have onthe pre-installed system. In both cases you need to decide where to load the system. 3.1. Step 1−Preparation Some of the tasks involved in this step normally fall in the domain of the site’ssystem administrator and may require superuser privilege. If possible, we advise you to have your system administrator perform these steps. 3.1.1. Find agood place for POSTGRES Youshould locate a disk partition with at least 50 megabytes of free space available for POSTGRES.Ifyou plan to run the pre-installed system, it would be best if you loaded the release into the directory /usr/local/postgres,asthat is what the release was configured for.Itisnot mandatory,though, as the only relevent dependencyisthat the programs are setup to look for the database directory in /usr/local/postgres/data,but that can be changed by setting the environment variable PGDAT A somwhere else before starting the postmaster.Also note that you can install the system anywhere, and then makeasymbolic link from /usr/local/postgres to the place you really loaded the system. If you are compiling the system from scratch, it doesn’tmatter where you load the system at all (as long as there is space). 3.1.2. Creating the POSTGRES directory Once you have decided, create the directory to hold the release if it doesn’talready exist. Then cd to this directory and type pwd.This is the full path of the directory you will install POSTGRES in. For example: # df 3 Filesystem kbytes used avail capacity Mounted on /dev/xy0a 8421 6703 875 88% / /dev/xy0f 10829 6743 3003 69% /pub.MC68020 /dev/xy2h 110811 81181 18548 81% /usr3 /dev/xy2g 221279 167405 31746 84% /b /dev/xy1g 221279 138365 60786 69% /usr/local /dev/xy1a 8179 944 6417 13% /tmp /dev/xy0h 119999 101623 6376 94% /usr.MC68020 /dev/xy0g 156033 135499 4930 96% /usr2 /dev/rf0d 539421 465026 20452 96% /a /usr/local looks likeagood place (it has 60 megs free) so we decide to create the POSTGRES directory there... # cd /usr/local # mkdir postgres # cd postgres # pwd /usr/local/postgres # 3.2. Creating the POSTGRES user Finally,weneed to create a user called POSTGRES whose shell is /bin/csh.Though not necessary,itis convenient to makethe home directory of the POSTGRES user the pathname where we install the system. This can be done using the “adduser” procedures particular to your platform and site. See your system administration manual for details. The reason we makea“postgres” login is so that when we install the system and create the database direc- tory,everything is owned by this “postgres” user.Then, we start the postmaster when logged in as this “postgres” user,and all the backends are also started by the user “postgres” and are able to access the databases. Although you can makethis work without creating a “postgres” login, we provide no support for doing so (you are, as theysay,“on your own”). Note that the restriction about having a “postgres” login with UID 6 was removedin POSTGRES Version 4.0.1. 3.3. Step 2-Loading POSTGRES Nowyou are ready to load the POSTGRES files onto your system. To dothis, you will need either a distribu- tion tape or a POSTGRES tar file (available via anonymous FTP from postgres.berkeley.edu). If you are loading POSTGRES from a tape, followthese instructions; if you are loading from a tar file obtained via FTP,skip to the section “Loading POSTGRES from a Tar File.” 3.3.1. Loading POSTGRES from a Tape Login as “postgres” and change directories to the postgres directory that was created. 3. Run tar with the following options %tar xvf where is the name for your tape device, i.e., /dev/rmt0, /dev/rst8,etc. The file postgres-v4r1.XXX.tar.Z will appear in your POSTGRES home directory,where XXX is the name of the platform. Youmay need to re-wind your tape to get it out of your tape drive - see your sys- tem administrator for instructions. 4 Proceed to the next section “Loading POSTGRES from a Tar File.” 3.4. Loading POSTGRES from a Tar File If you are not logged in as postgres already,dosonow.For the purpose of this discussion, the POST- GREStar file will be called postgres-v4r1.XXX.tar.Z. Uncompress the tar file. %uncompress postgres-v4r1.XXX.tar.Z Alarger file should nowbeinthe POSTGRES home directory,and the “.Z” ending should be gone, so it is nownamedpostgres-v4r1.XXX.tar. Extract POSTGRES from the tar file using the following command: %tar xvf postgres-v4r1.XXX.tar Lots of file names and such should appear on the screen. This step may takesev eral minutes. Nowdoanls: %ls The output should look something like: COPYRIGHT README doc local src INITIAL_SETUP bin include man Makefile data lib obj At this point you have loaded the POSTGRES files. Remove the tar file to get back the space. %rm postgres-v4r1.XXX.tar 3.5. Step 3-Configuration This step requires familiarity with configuring a UNIX kernel. If you are unfamiliar with this procedure, we advise you to read the section on configuring a kernel in the SunOS or DEC system administration man- ual carefully.This task requires superuser privilege and should probably not be done without the assistance of your system administrator.Weassume that whoeverundergoes this procedure has an understanding of the process and procedures involved. POSTGRES uses shared memory segments which must be compiled into the kernel of the host which will act as the POSTGRES server.Ifyou try to run a POSTGRES backend process on a machine without enough shared memory,the backend will abort with an error message. This is by far the most complicated part of the installation so these steps should be performed by someone with system administration experience. Again, we advise you to consult the system administration section of your manual before doing this step. Forabrief discussion of shared memory,you may want to consult the manual pages for shmget(), shmop(),shmctl(),etc. Nowproceed to the appropriate section for your machine. 3.5.1. Kernel reconfiguration for Sparcs In order to reconfigure Sun or Sparc kernel, you will have tobecome the superuser and add some lines to /usr/sys/conf/KERNEL (your kernel config file) and /usr/sys/conf/param.c (your kernel parameters file). We strongly advise you to makeaspare copyofyour system’soriginal config and param- eter files before you makeany changes. The following lines should be added to /usr/sys/conf/KERNEL: options IPCMESSAGE #SystemV IPC Message Facility options IPCSEMAPHORE #SystemV IPC Semaphore Facility 5 options IPCSHMEM #SystemV IPC Shared-Memory Facility options EMOREIPCS #more semaphores and shared memory (for 8M) At Berkeley, wesubstitute the line: options EMOREIPCS #more semaphores and shared memory (for 8M) with the line: options TTMOREIPCS #more semaphores and shared memory (for 32M) to allocate more shared memory so that we can run more POSTGRES backends at the same time. Either of the lines will result in a kernel that has enough shared memory allocated. Also add the following lines to the top of /usr/sys/conf/param.c: /* *LOCAL DEFINITIONS START */ #ifdef EMORESEMS #define EMOREIPCS #endif /* defined(EMORESEMS) */ #ifdef TTMORESEMS #define TTMOREIPCS #endif /* defined(TTMORESEMS) */ #ifdef EMOREIPCS #define SEMMNI 30 /* #ofsemaphore identifiers */ #define SEMMNS 180 /* #ofsemaphores in system */ #define SEMUME 10 /* max # of undo entries per process */ #define SEMMNU 30 /* #ofundo structures in system */ #define SHMSIZE 1536 /* max total shared memory system wide (in Kbytes) */ #define SHMSEG 6/*max attached shared memory segments per process */ #define SHMMNI 100 /* #ofshared memory identifiers */ #endif /* defined(EMOREIPCS) */ #ifdef TTMOREIPCS #define SEMMNI 60 /* #ofsemaphore identifiers */ #define SEMMNS 384 /* #ofsemaphores in system */ #define SEMUME 10 /* max # of undo entries per process */ #define SEMMNU 30 /* #ofundo structures in system */ #define SHMSIZE 8192 /* max total shared memory system wide (in Kbytes) */ #define SHMSEG 6/*max attached shared memory segments per process */ #define SHMMNI 100 /* #ofshared memory identifiers */ #endif /*defined(TTMOREIPCS) */ /* *LOCAL DEFINITIONS END */ 6 After adding these lines, run config overthe config file, install the newkernel (saving a copyofthe old kernel first!) and reboot. 3.5.2. Kernel reconfiguration for DECs In order to reconfigure your DECstation 3100 or 5000 Ultrix kernel, you will have tobecome the superuser and add some lines to /usr/sys/conf/KERNEL (your kernel config file). Remember that Ultrix 4.3 has a kernel bug that causes the operating system to hang when running POST- GRES.You should apply the DEC supplied patch at this point if you have not already. The following lines should be added to /usr/sys/conf/KERNEL: smmax 256 smseg 12 smbrk 1024 After adding these lines, run config overthe configuration file, install the newkernel (saving a copyof the old kernel first!) and reboot. 3.6. Running the pre-installed POSTGRES system Assuming you have loaded the system into /usr/local/postgres,there is very little else to do. Add /usr/local/postgres/binto your shell path. If you run csh,you would put set path=(/usr/local/postgres/bin $path) in the .login for the “postgres” user.Ifyou run sh or ksh,put PATH=/usr/local/postgres/bin:$PATH export PATH in your .profile.Then log back in so the change takes effect. Nowrun the following command %newbki This will reset the userid of the special POSTGRES user of the database to have the proper value. Even though the newbki command allows you to enter a login name, you should select the default value of postgres. After doing this, you may wish to install the precompiled version of bmake into /usr/local/bin. This will allowyou to recompile POSTGRES right awaywithout bootstrapping bmake.Todothis, cd into the directory called local.You will see twodirectories and a README. Become the superuser and do the following: # cp bin/bmake/usr/local/bin # mkdir /usr/local/lib /usr/local/lib/mk (you may get an error if this directory already exists - ignoreit) # cp lib/mk/* /usr/local/lib/mk If you installed POSTGRES somewhere other than /usr/local/postgres,everything can still work right if you set the environment variable PGDAT A for the special POSTGRES user.Lets assume you installed POSTGRES in the directory /private/packages/postgres.Ifyou run csh,put the following in the .loginfor the POSTGRES user setenv PGDATA /private/packages/postgres/data If you run sh or ksh,put the following in 7 PGDATA=/private/packages/postgres/data export PGDATA This will instruct the postmaster and backends to look in that directory for the databases. Youcan nowskip to the section called “Creating the initial database.” 3.7. Compiling and Installing POSTGRES The sources for POSTGRES are all under the directory src/.The first step is to install the new bmake pro- gram. By the way,you can look at the previous section entitled “Running the pre-installed system” in the paragraph about bmake,and just copythe pre-compiled bmake to /usr/local/{bin,lib} if you want and skip step 2) in this section. What follows is a step by step list to compile and install this release from sources: -build step 1: customization - Cd into the src/ directory and edit the file Makefile.global.Bydefault the PORTNAME is ultrix4.Change this to sparc if you are running on a SPARC-based machine. Also, if you do not want bmake installed into /usr/local/bin and /usr/local/lib,change the values of TOOLS- BINDIR and TOOLSLIBDIR and makesure these directories exist. At this point you can also change where the POSTGRES executable files are installed and where it looks for the database directory.Ingeneral the rest of the configuration switches are self-explanatory.The only one which must be set is PORTNAME. -build step 2: bootstrapping the newbmakeprogram - Cdintosrc/tools/bmakeand type %make-fMakefile.boot Youmay get warning messages during this bootstrapping process about “illegalcombination of pointer and integer” — just ignore them. This should compile and install the bmake program and its supporting files, including the POSTGRES-related Makefile templates. If all went well you will nowbeable to use the new makeprogram by typing bmake,assuming you have /usr/local/bin in your shell path. Youmay have totype rehash if you run csh. -build step 3: compile and install the world - Cdback to the src/ directory (i.e., cd ../..)and type: %bmakeall install This builds and installs the entire system. The Makefilescontain directivesfor running all the underly- ing Makefilesinall the directories, so the whole thing should unfold and compile beautifully and install to the target directory.Should this not be the case, it would be a good idea to save the results of the com- pile in a file. If you run csh,you could type %bmakeall install >& mk.log and if you run ksh or sh,type %bmakeall install > mk.log 2>&1 This will save the results in the file mk.log so you can inspect it later.This would be an ideal opportunity to get some doughnuts and coffee. 3.8. Creating the initial database POSTGRES databases are stored in the directory .../postgres/data.After you have compiled POST- GRES,you will need to create the initial database. If you haven’talready put the path to the POSTGRES executable programs in the shell path, do the following (assuming POSTGRES wasloaded into 8 /usr/local/postgres). Ifyou runcsh,you would put set path=(/usr/local/postgres/bin $path) in the .login for the POSTGRES user.Ifyou run sh or ksh,put PATH=/usr/local/postgres/bin:$PATH export PATH in your .profile.Then log back in so the change takes effect. Nowyou can create the initial database by running the following command: %initdb If that completes successfully,congratulations. Now, tomakethe system operational you must run the postmaster.The section after “Testing” discusses this. 3.9. Step 4-Testing We suggest you run the regression tests to makesure the release was installed successfully.You must have installed the bmake program to run the test. Also, you need to have the postmaster running to run the test, so type the following: %postmaster & Next, create a newuser using the createuser command (see the reference manual). Do not run the regression test script as user “postgres”! Change directories to src/regress/regress.Type the following commands: %cd src/regress/regress %bmakeruntest This will run a whole slewofregression tests and might takealong time to run. When it’sdone, the output of the test is in the file obj/regress.out.You can compare this to a sample run that we supply in the file sample.regress.outwith the following command: %diff sample.regress.out obj/regress.out Unfortunately you will see manydifferences corresponding to the timestamp lines and occasional lines where object id numbers (OID’s) are different. Weregret that we do not have a more sophisticated script for weeding out these innocuous differences at this time. If you see anydifferences not corresponding to time stamps or OIDS, there may be a problem. Have your local POSTGRES expert takealook at it. 4. Running POSTGRES POSTGRES is designed to be a multiuser system. In practice, POSTGRES consists of three (or more) pro- cesses: •the postmaster, •the terminal monitor,and •the backend. Users are expected to use the terminal monitor for direct access to the database. The terminal monitor sends commands to the postmaster which forwards commands to a backend. 4.1. The POSTGRES Postmaster The postmaster is a process which manages communication between the user’sterminal monitor and a POSTGRES backend. Without a running postmaster,the terminal monitor will not be able to connect to a backend. In general, the postmaster must be running for you (or others) to run anyofthe normal POSTGRES 9 commands. Always start the postmaster when logged in as the special “postgres” user,otherwise the sys- tem will not be able to access the database files. Tostart it, type %postmaster & Nowyou can leave the postmaster running if you wish to keep the database system accessible. In general, when the postmaster is running, the system is running. When it is not running, none of the frontend pro- grams will work. 4.2. The POSTGRES Terminal Monitor ThePOSTGRESterminal monitor is a front-end user interface to the POSTGRES backend. Lets assume database is the name of the database you want to use. It is an error if database does not exist, so to create the database, you would type %createdbdatabase Nowwewill run the monitor: %monitordatabase Welcome to the POSTGRES terminal monitor Go * The ‘‘*’’isthe terminal monitor prompt. Weare now talking to the backend, so let’ssend a simple test query: list the names and user ids of the POSTGRES users. We terminate the query with a \g — the ‘‘go’’command to the terminal monitor. * retrieve (u.usename, u.usesysid) from u in pg_user\g Query sent to backend is "retrieve (u.usename, u.usesysid) from u in pg_user" ----------------------------- |usename | usesysid | ----------------------------- |postgres | 6| ----------------------------- |mike |799 | ----------------------------- |sp|1511 | ----------------------------- |jhingran | 943 | ----------------------------- |cimarron | 2359 | ----------------------------- |goh |1994 | ----------------------------- |ong |2802 | ----------------------------- |hong |2469 | ----------------------------- |mao |1806 | ----------------------------- 10 |marc |2435 | ----------------------------- |margo | 2697 | ----------------------------- |sullivan | 1517 | ----------------------------- |kemnitz | 3491 | ----------------------------- |choi |3898 | ----------------------------- |mer |3665 | ----------------------------- Go Okay,this worked, too. Now we’ll quit. * \q % 4.3. The POSTGRES Backend The POSTGRES backend is the process which does all the “real” work. This process is started by the post- master when the postmaster receivesaconnection from a terminal monitor,soyou should not normally need to start up the backend yourself. Should you wish to start the backend and talk to it directly (without a terminal monitor) you can do this by typing: %postgresdatabase where database is the name of the database you wish to use. If you run a backend in this manner,you will be talking to the backend parser directly.Werecommend using the terminal monitor; if you are using POST- GRES as a multiuser system, running the backend can result in locking failures and corrupt databases, as the Postmaster handles shared resources such as semaphores and shared memory.Ingeneral, neverdothis if there is a postmaster running. In addition, returned tuples are displayed more usefully and input is buffered better.The backend is used interactively primarily during debugging. 4.4. POSTGRES Support Programs Included in POSTGRES are a handful of support programs. Most of these are used internally by the system buthere is a list of them for your information. initdb −creates the initial template database cleardbdir −totally destroys the data/ directory,allowing a newinitdb createdb −creates newPOSTGRESdatabases createuser −add a newuser to thePOSTGRESsystem destroydb −destroysPOSTGRESdatabases destroyuser −delete a user from the database system ipcclean −frees up garbage shared memory from failed backends newbki −adjust userid of "postgres" in the database pg_version −makeversion numbers for createdb pg_id −gets user id’s-used by various commands pagedoc −disk page doctor shmemdoc −shared memory buffer pool doctor vacuum −database vacuum cleaner pg_copytree −copythe source tree (probably shouldn’tbeshipped) icopy−inversion filesystem file management utility 11 pcat −inversion filesystem cat command pcd −inversion filesystem cd command pls −inversion filesystem ls command pmkdir −inversion filesystem mkdir command pmv −inversion filesystem mv command ppwd −inversion filesystem pwd command prm −inversion filesystem rm command prmdir −inversion filesystem rmdir command 5. Optional Installation 5.1. Installing LIBPQ, the POSTGRES frontend library The file .../lib/libpq.ais created when you install the system (or on the pre-installed system). This library contains various routines intended for use by frontend programs. Youuse this library if you want to execute POSTGRES queries from a C program. If you plan on doing software development, you may wish to copythis file to /usr/lib so that the C compiler can reference it with -lpq.Ifyou do not, you will have touse the -L directive tothe cc and ld commands so that theycan find libpq.a. 5.2. Postgres header files The directory .../include contains copies of all the header files that front-end applications might need. Youcan compile a frontend program with the -I directive to cc as illustrated in the following example: %cc -I/usr/local/postgres/include -o foo foo.c -lpq This feature of copying just the necessary header files into was incorporated right before we produced the release and has not had sufficient testing. If your frontend programs complain about not being able to find header files, either add the missing header files to the include/ directory and notify us of the problem, or just point the -I compiler directive directly into the source as was done in the past. E.g., %cc -I/usr/local/postgres/src/backend -o foo foo.c -lpq If you do this, you may need to add the following #definesinyour source to set the PORTNAME — add them prior to any #includes: #define PORTNAME ultrix4 #define PORTNAME_ultrix4 for Ultrix, or #define PORTNAME sparc #define PORTNAME_sparc for SPARCs. We’re sorry for anyinconvenience this may cause, and fully intend that the include/ direc- tory be more rigorously tested in the next release. 5.3. Wisconsin Benchmark Database In .../postgres/src/regress/bench are files which are the queries used in the POSTGRES ver- sion of the Wisconsin benchmark. The Wisconsin benchmark illustrates basic relational performance using B-tree indices on nontrivial amounts of data. To run the benchmark, cd to that directory and type %bmakeruntest 5.4. Minimal Installation It is the intention that everything belowthe src/ directory can be removed, howeverwedidn’thav e time to test this. Specifically,the include/ directory may not have all the necessary files to compile all the frontend programs, so you may might get burned if you remove the source. But if you’dliketotry it out, we’dlove toknowifitworks for you. 12 6. Documentation Plain text and PostScript versions of the manual pages and documents are available in the directories man/ and doc/ at the top level. Torecreate these documents, there are corresponding directories in src/{man,doc}.Theyare currently configured to require groff and friends, but you may be able to change the Makefile to use other facilities if you have them. If you change directories to man/ and doc/and type: %bmake %bmakeinstall in each, it will format and install the documents into the corresponding destination directories. 7. Miscellaneous 7.1. Bug reports If you find a bug in POSTGRES,please send mail to bug-postgres@postgres.Berkeley.EDU or uunet!ucbvax!postgres!bug-postgres describing as precisely as possible the command that caused the problem, concise instructions on howto repeat the bug, and a script showing the bug. If possible, a stack trace (generated using a debugger such as dbx or gdb)should also be provided. (The backend program will leave its core dumps in the directory PGDAT A/base/your_database,where “your_database” is the name of your database.) 7.2. Consulting This software is unsupported, public domain software. Although we are interested in feedback, it is impos- sible for us to makeany commitment to support in a research environment. If you do want to talk directly to the POSTGRES group, electronic mail is strongly preferred. We can be reached via the Internet as post_questions@postgres.Berkeley.EDU or uunet!ucbvax!postgres!post_questions We can also be reached at (510) 643-6448, Monday through Friday,between 1 and 4 PM Pacific Time. 7.3. Postgres Mailing List Amailing list for POSTGRES announcements and discussion is available for anyone who is interested. If you wish to subscribe to this mailing list, send mail to postgres-request@postgres.Berkeley.EDU or uunet!ucbvax!postgres!postgres-request with ADD as the subject. Note that mail sent to this address is processed electronically.(Deletion requests are handled by sending mail to the same address with subject DEL.) The mailing list itself is called postgres@postgres.Berkeley.EDU or uunet!ucbvax!postgres!postgres and all mail sent to this address will be will be routed to the mailing list membership. This list is 13 distributed to over500 sites around the world, so please do NOT send administrative requests to this address. If you have any problems with the mailing list, send mail to post_questions. 14