Introduction These notes describe the known bugs, anomalies, and machine-dependencies in the current POSTGRES release. Copyright The copyright for the 2.1 release of the POSTGRES DBMS is as follows. POSTGRES Data Base Management System Copyright (c) 1988 Regents of the University of California Permission to use, copy, modify, and distribute this software and its documentation for educational, research, and non-profit purposes and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of the University of California not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Permission to incorporate this software into commercial products can be obtained from the Campus Software Office, 295 Evans Hall, University of California, Berkeley, Ca., 94720. The University of California makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. Organization The rest of these notes are organized into three parts: Bugs, Machine Assumptions and Port Notes, and 2.1 Upgrades over 2.03 I. Bugs Compiling: Postgres cannot compile on our Sequent using the standard 'make' or the make provided in /usr/att/bin. If you encounter problems with the 'make' on your Sequent, please contact your Sequent technical support contact for further instructions. It should compile without problems on all other supported platforms. Users are welcome to try GCC (with the -traditional option) but we have never gotten it to correctly compile Postgres. The Terminal Monitor and Postmaster: The Terminal Monitor can only run one query at a time. If multiple queries are executed with one Go command (\g), unpredictable behavior will result, although in general either the first query will execute or a parser error will occur. If you start up two postmaster's on the same machine using the same port, bizarre behavior may result. Security Hole Bug: Postgres does not check to make sure that a user has permission to delete tuples out of system classes. This means that anyone can delete anyone else's database instance out of pg_database, for example, or can delete built-in types. So users should be careful to avoid such things, and Postgres should not be used for secure applications. The Rewrite Rule System: The Query Rewrite Rule System, and functions dependent on it, is known to have bugs. These will be addressed in the next release - until that time, it is suggested that the following commands be avoided: o Define View o Define Version o Define Rewrite Rule o Define POSTQUEL procedure However, the Instance-level Rule System works well. II. Postgres Machine and OS Assumptions Postgres requires the following to be present on a system: 1. A truly compatible System V.3 'make'. We have found that many vendors claim compatibility in this regard, but their make's cannot compile Postgres. 2. A Unix 4.2 BSD kernel with System V shared memory extensions, or a System V kernel with 4.2BSD extensions for sockets and various CLIB functions. 3. The C shell and Bourne shell for various installation and 'make' scripts. 4. For the dynamic loader, a Sun or COFF compatible A.OUT format is best. Postgres Machine Assumptions: Postgres assumes that sizeof(char) = 1 sizeof(short) = 2 sizeof(long) = 4 sizeof(char *) = 4 In the very least, Postgres assumes: sizeof(char) < sizeof(short) <= sizeof(char *) <= sizeof(long) If problems are encountered with alignment and such in doing ports, it may be because these assumptions are not true on the target platform. If this is true, some parts of the access method code may have to be rewritten. If the above assumptions are true, porting Postgres should be straightforward, except for the dynamic loader. III. Differences between 2.1 and 2.03: Much internal code has been rewritten, largely in access methods, caching and buffer management, and other low-level routines. Visible Changes from 2.03: o The "rtree" access method now works. o Btree indices can now be defined on arbitrarily long fields. IV. On Ports: Support for the following have been DISCONTINUED: 1. Ultrix on DECstations below 4.0 (We do support Ultrix 4.0 and up) We have discontinued support for these due to OS bugs which were fixed in later releases of these operating systems. These OS bugs primarily affect the dynamic loader. The DECstation Ultrix port for systems below 4.0 will continue to be distributed, but it is now unsupported. Support for the following will be DISCONTINUED SOON: 1. SunOS on Sun 3's less than 4.0. More on the dynamic loader: 1. Make sure files you are loading do not reference symbols (either variables or functions) in each other. If you do this, it will work, but you cannot re-load files once they are loaded. Doing this will have unpredictable results. Diskless Machines: We have successfully ran Postgres on diskless Sparcstations, but diskless Sun 3's have occasionally posed problems. We have never run diskless on DECstations or on Sequents.