home *** CD-ROM | disk | FTP | other *** search
- Readme for the Postgres port to Linux.
-
- Q: What is most important?
- --------------------------
- You need IPCDELTA (or any newer version, of course). Read below
- under Q: Kernel?
-
- Q: What is also important?
- --------------------------
- You need a running tcp/ip network, at least for the loopback
- device. The files necessary to set up the later are included in
- both the binary and source package, in the archive loopback.tar.
-
- Q: Which packages do I need?
- ----------------------------
- postgres4.0.1a.doc.tar.z: documentation, get it.
- postgres4.0.1a.demo.tar.z: demos, get them.
- postgres4.0.1a.bin.tar.z: binaries.
- postgres4.0.1a.libpq.tar.z: libraries for application development.
- postgres4.0.1a.src.tar.z: The source code, of course.
-
- You need the libpq package, if you want to access the database
- from C code. It contains all global header files, as well as the
- static libpq.a library. You don't need this package, if you get
- the source.
-
- Version summary
- ---------------
- Postgres: 4.0.1
- This port: 0.1
- Linux Kernel: 0.99.7 or higher (for IPCDELTA)
- IPC: Delta
- Shared Libs: 4.3.3
-
- Quick Installation Guide:
- -------------------------
- - Get IPCDELTA into your kernel.
- - Run "patch <'this_file'" from the /usr/src/linux directory.
- - Recompile the kernel.
- - Create a user named postgres, user id 6 (!), with /bin/tcsh as Shell.
- - Make /usr/postgres be his or her home directory, or a symlink to it.
- - Give him a .login, which sets POSTGRESHOME to the home directory, and
- puts $POSTGRESHOME/bin into his PATH.
- - Unpack the postgres4.0.1a.doc.tar.z in this directory.
- - Get and unpack the demos postgres4.0.1a.demo.tar.z, too.
- - Unpack either postgres4.0.1a.src.tar.z or postgres4.0.1a.bin.tar.z.
- - Run the sripts moveme.[doc|src|bin|libpq|demo], if you're not on a
- Minix filesystem (to get all long names right).
- - Read the setup.me in the doc section.
- - If you have the binary distribution, run initdb.
- - With the source, cd to newconf; type Make install; wait.
- - Have fun!
- - Don't flame me!
-
- E-Mail:
- -------
- This is the first release of a Postgres port to Linux. Please report
- success or failure, bug reports, and - better - bug fixes to:
- Kai Petzke, wpp@marie.physik.tu-berlin.de
-
- [Stop reading now, if you don't like README's]
-
- Q: What is Postgres?
- --------------------
- Postgres is a relational database management system. It has many
- of new ideas inplemented, among them are:
-
- - dynamic loading of datatypes and functions into the database
- (for example, you could define complex numbers as datatypes,
- provide all the function for complex arithmetics, and then
- retrieve all records, where the absolute value of the exponent
- of one field is bigger than a given value ...).
-
- - A transaction level rule system (say you got two relations
- (= database tables), one containing the accounts with the
- totals, one with the bookings. You could then write a rule,
- that always updates the totals, when a new booking is inserted).
-
- - A transparent history system, so you can query the state of
- the database at any time in the past (unless you use the
- vacuum cleaner, which slurps up all the outdated stuff ...).
-
- - Support for Write Once, Read Multiple (WORM) storage devices.
-
- - Many, many others ...
-
- Refer to the postgres.FAQ at the bottom of this README for more
- information.
-
- Q: Space requirements?
- ----------------------
- Binaries: 2 MB HD Space + Database space
- 4 MB RAM + some swap, if nothing else is running.
- (maybe more, I have 8 MB and did not test with 4)
-
- Docs: a) troff source: 2 MB HD
- b) postscript dump: 2 MB HD
-
- Q: Kernel?
- ----------
-
- a) IPC
- ------
- The version of your kernel should be uncritical, but you must
- have SYS/V IPC (Inter-Process-Communication) compiled into it.
- The current version of this package, ipcdelta, goes straightforward
- into 99pl7, needs one patch to be applied by hand for 99pl8, and
- so are two for 99pl9. Read the IPCDELTA's READMEs on how to install
- the package.
-
- Special instructions for 99pl8 and 99pl9 only:
- ----------------------------------------------
- Don't try to apply the patches in the file named fsync.cd - there
- is already a dumb function definition for fsync in the kernel
- sources. There is one patch on the file kernel/sys.c, which fails.
- It deletes a dumb definition of the ipc call. Look for the lines:
-
- int sys_ipc(void)
- {
- return -ENOSYS;
- }
-
- in kernel/sys.c, and delete them by hand.
-
- Special instructions for 99pl9 only:
- ------------------------------------
- Replace "copy_page_tables" by "copy_vm" in the ipc.cd file,
- *before* you apply the patches in this file. Otherwise, a patch
- to the file kernel/fork.c fails. Don't try to use the clone()
- system call with processes, which use ipc ...
-
- Back to all kernels:
- --------------------
- There is a bug in ipcdelta, which breaks Postgres. Apply the
- following patch, before you recompile the kernel: (Don't cut this
- file to pieces. Fed it as a whole, as is, to patch, and realize,
- that this clever program still does the right thing!)
-
- --- ipc/sem.old.c Tue Mar 16 18:56:14 1993
- +++ ipc/sem.c Fri Apr 16 15:50:47 1993
- @@ -276,7 +276,7 @@
- return -EACCES;
- for (i=0; i< sma->sem_nsems; i++)
- sem_io[i] = sma->sem_base[i].semval;
- - memcpy_tofs (sem_io, array, nsems*sizeof(ushort));
- + memcpy_tofs (array, sem_io, nsems*sizeof(ushort));
- break;
- case SETVAL:
- if (ipcperms (ipcp, 0222))
- @@ -316,6 +316,8 @@
- wake_up (&sma->eventn);
- if (sma->eventz)
- wake_up (&sma->eventz);
- + for (i=0; i < nsems; i++)
- + sma->sem_base[i].semval = sem_io[i];
- sma->sem_ctime = CURRENT_TIME;
- break;
- default:
-
- For the Postgres binaries, you won't need to build the libipc.a
- library, but you might need the ipcs and ipcrm utilities to
- clear up the ipc stuff after a Postgres crash.
-
- b) TCP/IP
- ---------
- You need it, so don't build a kernel without it.
-
- c) fsync()
- ----------
- There are kernel patches, which implement this function call.
- Postgres by default uses fsync() after each write() to write
- the data to disk, but I've commented these out for the current
- version of Postgres (ipcdelta was enough kernel patching) ...
-
- Q: Libraries:
- -------------
- Sorry, I linked everything with the 4.3.3 shared libs, so you
- need these in order to run the binary distributed Postgres.
-
- Q: How do I install Postgres?
- -----------------------------
- Get the docs and demos, and either the binaries or sources. Get
- libpq, too, if you use the binary distribution, and if you want
- to use Postgres from C Programs. To unpack any of these packages,
- type the following in the Postgres home directory:
- zcat postgres4.0.1a.???.tar.z | gtar xfv -
-
- There are detailed instructions on the initial setup of Postgres
- in the file doc/postgres-setup.me. To view it, type:
- groff -Tascii -me doc/postgres-setup.me | less
- There is almost nothing, which is Linux-specific (apart from the
- section about IPC).
-
- Q: And if user ID 6 is already used by someone else?
- ----------------------------------------------------
- Give the old user with this ID a new one. Execute the following:
- chown new_user-ID `find / -uid 6`
-
- Q: Loopback network setup?
- --------------------------
- There is a file named "loopback.tar" in both the binary and
- source distribution. Type "gtar tf loopback.tar", to get a list
- of the files in it, and save all the files and directories, which
- have any of the names in this list.
-
- Then delete the directories /usr/etc/inet and /etc/inet, and
- unpack the loopback.tar archive with:
- gtar -C / -x -f loopback.tar
-
- Last step: edit /etc/hosts and /etc/resolv.conf to represent your
- hostname (my was safran). However, the domain name does not matter
- at all. Include the line:
- sh /etc/rc.net
- in your /etc/rc.local or /etc/rc file.
-
- Q: Compiling myself?
- --------------------
- If you want to compile the baby yourself, you should have at
- least 4 MB of *free* RAM. You need at least 20 MB of disk space.
- To compile everything with the debugger option -g you should have
- about 50 MB HD and 16 MB Ram. Without the later, gdb is of almost
- no use, as the symbol gets too big.
-
- You need tcsh, a pwd executable, the getopt command, Berkeley Yacc,
- flex, cb, and bug-fixed versions of awk (2.14 or newer) and sed
- (1.13 or newer). You can find out awk's version with "awk -V" or
- "awk -W version". If you get an error message as answer, you are
- very likely to have an old version ... Check "sed -V" as well.
-
- If you don't have cb ("beautifies" C programmes - does nothing but
- change the spacing of its input), make it a shell script with the
- single line: cat
-
- I used Berkeley Yacc to compile Postgres. I did not even try bison,
- so you might have good luck or not. Berkeley Yacc is usually in a
- package called byacc, which you could find with the Ingres Port
- (which it was used for, too).
-
- The usual work-around for missing pwd ("alias pwd 'echo $cwd'" in
- your .cshrc) does not work with the C-Shell scripts of Postgres. I
- supply two fast hacks for pwd (written by me - really no problem),
- and getopt in a file called commands.tar.
-
- Some shell scripts use full path names, and you are likely to have
- some of these binaries somewhere else. So check, that
- /usr/bin/awk
- /usr/bin/bc
- /usr/bin/lex
- /usr/bin/yacc
- /bin/sed
- exist, or are links to the real locations of these. Also, check
- that /lib/cpp is a link to an existing C Preprocessor (you might
- have forgotten to update this link, when you upgraded to a new
- version of Gnu CC).
-
- The Postgres FAQ:
- -----------------
- Frequently Asked Questions about Postgres
-
- Q: What Is Postgres?
-
- Postgres is a database research project under Prof. Michael Stonebraker
- at U. C. Berkeley. To facilitate research efforts, a software test-bed was
- created; this is the "Postgres" DBMS software. The Postgres DBMS
- is extended relational or object oriented, depending on the buzzword du
- jour.
-
- The major purpose of this software is to provide a platform and a basis
- for the testing of implementations of new ideas in database research.
- Several graduate students, staff members, as well as undergraduate
- programmers have been working on the implementation of the Postgres
- software. After this paragraph, all references to "Postgres" refer to the
- software itself.
-
- Postgres Is:
-
- o Relational. One of the major goals of Postgres is to show that
- an essentially relational DBMS can be extended to handle complex objects,
- rules, and be highly extensible.
-
- o Highly extensible. Postgres allows user-defined operators, user-defined
- objects, and user-defined functions.
-
- o While Postgres is relational, object oriented ideas have been implemented
- in Postgres (inheritance, etc).
-
- o Numerous other features, such as query language procedures, rules, etc.
- which are beyond the scope of this discussion.
-
- For more info on the Postgres research itself, you can get the
- Postgres technical documentation described below.
-
- Q. What is the connection between Postgres and Ingres?
-
- A. There is none, aside from Prof. Stonebraker. There is no compatibility
- between the two software packages, and the research projects have
- differing objectives. We do not support University Ingres at all;
- questions about it should be sent to the USENET group "comp.databases".
-
- Q. How do I get the Postgres software package?
-
- A. In one of two ways:
-
- 1. Via anonymous FTP from postgres.berkeley.edu (Internet 128.32.149.1);
- the important files are
-
- pub/postgres-v4r0r1.tar.Z (Note: should be transmitted in BINARY mode.)
- pub/postgres-setup.me
-
- 2. If you don't have Internet access, you can get Postgres by sending
- a check for US $150 payable to
-
- Regents of the University of California
-
- This should be addressed to
-
- The Postgres Project
- 557 Evans Hall
- University of California
- Berkeley, CA 94720
-
- Indicate in your accompanying letter whether you want the system on a
- 9-track tape at 1600 BPI, at 6250 BPI, on a Sun cartridge tape (QIC 24
- format), or on a TK50 DEC cartridge tape.
-
- Sorry - we cannot deliver Postgres via e-mail.
-
- Q. What is the Postgres query language?
-
- A. Postquel, which is an incompatible superset of Quel.
-
- Q. What about SQL support?
-
- A. We do not support SQL at this time.
-
- Q. What does Postgres run on?
-
- A. Postgres 4.0.1 is supported on Sun 4, Sparc, and DECstations running Ultrix
- 4.0 or higher. Ports are distributed (but not supported) for Sun 3's and
- Sequent Symmetry machines. We are aware of ports for Solbourne (a Sparc
- multiprocessor), MIPS workstations, and the Sun 386i, although we do _not_
- have access to these ports and do not intend to support them.
-
- The experience of outside developers indicates that Postgres is relatively
- easy to port to any system that supports:
-
- 1. Berkeley-style sockets
- 2. System V shared memory and semaphores
- 3. A K & R compatible C compiler
- 4. Other "normal" Unix system calls
-
- Some header file problems may be encountered; these are easily fixed by
- a programmer knowledgable with the local OS. The most difficult part
- of the port is porting the dynamic object code loader, which requires
- interpreting object file headers.
-
- Q. How do I get papers about Postgres?
-
- A. On postgres.berkeley.edu is a file called
-
- pub/postgres-papers.tar.Z
-
- which contains troff and Postscript versions of several of the major
- Postgres technical reports. If you don't have Internet access, you can
- order hard-copies of technical reports individually; for more details,
- send e-mail or call Sarah Burke at (510) 642-3417; her e-mail address
- is
-
- sarahb@postgres.berkeley.edu
-
- Q. What is the status of the Postgres implementation?
-
- A. It is not up to commercial levels of reliability. I would not want
- _my_ payroll records in it :-) However, it is quite adaquate for
- managing scientific and experimental datasets and as an instructional
- system. Its speed on applications which stress transaction processing
- is not particularly good, but it is within about 50% of commercial systems
- on the more "report-oriented" Wisconsin benchmark, and is twice as fast
- as University Ingres on the Wisconsin.
-
- Q. Does Postgres have a user interface? A report generator?
-
- A. No and no, not as shipped.
-
- Q. What about a C-callable interface for writing applications?
-
- A. There most definitiely is one, called libpq. There is also an interface
- for referencing Postgres data from shell scripts. Get the Postgres
- reference manual for details.
-
- Q. Is there a BBS/discussion group about Postgres?
-
- A. Yes - the mailing list
-
- postgres@postgres.berkeley.edu
-
- has over two hundred readers and gateways; you can subscribe to the mailing
- list by sending mail to
-
- postgres-request@postgres.berkeley.edu
-
- with "ADD" as the Subject.
-
- You UNsubscribe from the mailing list by sending mail to
-
- postgres-request@postgres.berkeley.edu
-
- with "DEL" as the Subject.
-
- Q. How do I make a bug report?
-
- A. If you find a bug, send a description of your database schema, queries,
- and a stack dump (type "where" in DBX) if possible to
-
- bug-postgres@postgres.berkeley.edu
-
- Q. How do I find out about known bugs?
-
- A. The known bug list is on Postgres in the file
-
- pub/postgres-v4r0r1.bugs
-
- Q. Please summarize the important files on postgres.berkeley.edu
-
- A. File Purpose
-
- pub/postgres-v4r0r1.tar.Z Complete Postgres distribution
- pub/postgres-v4r0r1.bugs Postgres 4.0.1 known bug list and workarounds
- pub/postgres-setup.me Postgres Installation instructions in troff
- pub/postgres-papers.tar.Z Postgres papers
-
- pub/picasso-README Instructions for getting Picasso
-
- Q. Please summarize the important Postgres mailing aliases
-
- A. Mailing Address Purpose
-
- postgres@postgres Postgres general discussion and announcements
- postgres-request@postgres Administrative requests (ADD/DEL)
- bug-postgres@postgres Postgres bug reports
- postgres-questions@postgres Questions to the developers of Postgres
-
- picasso@postgres Questions to the Picasso group
-
- Q. Please summarize the main contacts at the Postgres group
-
- A. Address/Phone Role
-
- Marc Teitelbaum Postgres Chief Programmer
- marc@postgres.berkeley.edu
- (510) 643-6138
-
- Sarah Burke Assistant to the Postgres group
- sarahb@postgres.berkeley.edu
- (510) 642-3417
-
- Comments an the postgres.faq:
- -----------------------------
- The postgres.faq says:
- The experience of outside developers indicates that Postgres is relatively
- easy to port to any system that supports:
-
- 1. Berkeley-style sockets
- 2. System V shared memory and semaphores
- 3. A K & R compatible C compiler
- 4. Other "normal" Unix system calls
-
- Some header file problems may be encountered; these are easily fixed by
- a programmer knowledgable with the local OS. The most difficult part
- of the port is porting the dynamic object code loader, which requires
- interpreting object file headers.
-
- The reverse was true: I had trouble with almost anything, but the
- dynamic object code loader was easy, as Linux uses an executable
- format similiar to that of a sun. Many Header files contained wrong
- prototypes, so I had indeed to fix lots of header file problems,
- not with Linux, but Postgres.
-
- It seems, that Linux and gcc are very strict with floating point
- data types. Lots of #include's were missing, so floating point
- values weren't fetched off the FPU stack, which lead to a floating
- point exception soon. Functions like log(x) were called with x = 0,
- which produced core files, too. The same expressions must run on
- Sparcstations with much less trouble.
-
- The worst thing was to move from standard unix lex to flex. Don't
- believe, that the Postgres scanner scans a query word by word from
- the left to the right!
-
- Bugs:
- -----
- The Postgres V4.0.1 was only a bug fix release relative to 4.0,
- so don't believe, you will have a robust database system with this
- version of Postgres. Also note, that this port is an ALPHA release.
- However, there are no bugs known to me, apart those mentioned in
- doc/release.4.0.1. I tried my best to make this port clean, but if
- you find bugs, please e-mail to:
-
- Kai Petzke, wpp@marie.physik.tu-berlin.de
-
- Questions, Problems:
- --------------------
- Feel free to ask, but please read this readme, the Linux' FAQs
- and postgres-setup.me before you bomb me with e-mail. Please be
- patient, I read e-mail two or three times a week only.
-
- Future Plans:
- -------------
- 1) Make this port stable.
- 2) Port picasso, the graphical front-end under X.
- 3) Upgrade to the newer Postgres release 4.1.
-
- Have fun!
-