diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/FAQ_Irix | 490 | ||||
-rw-r--r-- | doc/FAQ_Linux | 650 | ||||
-rw-r--r-- | doc/TODO | 504 | ||||
-rw-r--r-- | doc/bug.template | 4 |
4 files changed, 207 insertions, 1441 deletions
diff --git a/doc/FAQ_Irix b/doc/FAQ_Irix index c87306477b8..e69de29bb2d 100644 --- a/doc/FAQ_Irix +++ b/doc/FAQ_Irix @@ -1,490 +0,0 @@ -====================================================== -Frequently Asked Questions (FAQ) for PostgreSQL >=V6.1 -IRIX Specific -TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ -====================================================== -last updated: Mon Mar 05 17:00:00 GMT 1998 - -current maintainer: Andrew C.R. Martin (martin@biochem.ucl.ac.uk) -original author: Andrew C.R. Martin (martin@biochem.ucl.ac.uk) - - -Changes in this version (* = modified, + = new, - = removed): -*1.5) Can I install PostgreSQL (<V6.3) under Irix 6.x? -+1.10) How do I install PostgreSQL V6.3 under Irix 6.x? - -This file is divided approximately as follows: -1.*) Installing PostgreSQL -2.*) Uninstalling PostgreSQL -3.*) Extending PostgreSQL - - -Questions answered: -1.1) What extra items do I need to install PostgreSQL under Irix? -1.2) What changes do I need to make to src/Makefile.global? -1.3) What are the references in X11_LIB to libsocket and libnsl in - src/Makefile.global? -1.4) Are there any other changes I should make? -1.5) Can I install PostgreSQL (<V6.3) under Irix 6.x? -1.6) The make fails with the following message: - ld32: ERROR 4: Conflicting flag setting: -call_shared -1.7) Why won't it link? (Problems with lorder) -1.8) I have major problems with IRIX 6! -1.9) Why does lex fail with PostgreSQL 6.2.1? -1.10) How do I install PostgreSQL V6.3 under Irix 6.x? -2.1) Why can't I move the executable files? -3.1) How do I compile a C program to create a function for extending - PostgreSQL - ----------------------------------------------------------------------- -Section 1: Installing PostgreSQL ----------------------------------------------------------------------- - -1.1) What extra items do I need to install PostgreSQL under Irix? - - You *must* have the following installed: - a) Gnu make (installed as gmake) - - You are recommended to install the following: - a) GNU install (installed as ginstall) - (This is part of the GNU fileutils package) - - You may choose to install the following: - a) GNU readline library (if you wish psql to have readline - support). - b) tcl/tk (if you wish to compile pgtclsh) - -1.2) What changes do I need to make to src/Makefile.global or - src/Makefile.custom? - - The easiest way to do this is to use the customize script in - the src directory. - - You *must* set the following variables: - PORTNAME= irix5 - - You will also need to change the following to match your own - installation: - POSTGRESDIR - - If you switch on the USE_TCL option, you will need to set these: - TCL_INCDIR= - TCL_LIBDIR= - TCL_LIB = - TK_INCDIR= - TK_LIBDIR= - TK_LIB = - - You may also make any other changes you need as documented in - the INSTALL file and in Makefile.global - -1.3) What are the references in X11_LIB to libsocket and libnsl in - src/Makefile.global? - - This was a problem in 1.08 (they are Sun Solaris specific). - It is fixed in 1.09 and above. - -1.4) Are there any other changes I should make? - - If you have installed the GNU install program (ginstall), you - should add the following line to src/Makefile.custom: - CUSTOM_INSTALL=ginstall - - For an explanation as to why this is a good idea, see Question 2.1 - Ginstall is part of the GNU fileutils package. - - -1.5) Can I install PostgreSQL (<V6.3) under Irix 6.x? - - Instructions for PostgreSQL V6.3 are answered in Question 1.10! - - Irix 6.2-6.4 has a bug in ld which mishandles the addresses of - static procedures when object files are assembled into - larger object files using 'ld -r'. This bug has been reported - to Silicon Graphics. - - One option is to use the Gnu version of ld. Alternatively, - the following patch should be applied as a workaround. - (Supplied by Bob Bruccoleri <bruc@bms.com>) - -*** ./backend/Makefile.orig Thu May 22 00:00:15 1997 ---- ./backend/Makefile Thu Jun 5 16:47:27 1997 -*************** -*** 54,60 **** - all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source - - postgres: $(OBJS) ../utils/version.o -! $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS) - - $(OBJS): $(DIRS:%=%.dir) - ---- 54,64 ---- - all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source - - postgres: $(OBJS) ../utils/version.o -! # $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS) -! -rm -f *.o -! find . -name "*.o" -exec cp \{\} . \; -! rm -f SUBSYS.o -! $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS) - - $(OBJS): $(DIRS:%=%.dir) - - - - -1.6) The make fails with the following message: - ld32: ERROR 4: Conflicting flag setting: -call_shared - - If gmake fails in .../src/backend while building obj/ACCESS.o - with a message from ld32, you can work around this by using - ld for the LD environment variable rather than cc. - - The problem has been observed under Irix 5.3 when compiling both - Postgres95-1.09 and PostgreSQL-6.2Beta6, but on some systems - these appear to compile with no such problems. - - Fix supplied by Brian Sanders (bsanders@netcom.com, - brian@fresnelsoft.com) - - -1.7) Why won't it link? (Problems with lorder) - - According to the IRIX man pages, lorder is useless, but harmless - under IRIX. However, it has caused problems for some people - using both IRIX 6.2. - - The solution is to add the following line to - .../src/makefiles/Makefile.irix5 - - MK_NO_LORDER=true - - -1.8) I have major problems with IRIX 6! - - The following is quoted directly from Bob Bruccoleri <bruc@bms.com> - -There is a really nasty loader bug in the compiler system (7.1) -on Irix 6.x, and the error that Lasse Petersen is the result of it. -Here is the original message. I don't know if all the changes have been -folded into the current release. - -Date: Fri, 06 Jun 1997 17:12:20 -0400 (EDT) -From: bruc@bms.com (Robert Bruccoleri) -Subject: [PORTS] Patches for Irix 6.4 - -I have worked out how to compile PostgreSQL on Irix 6.4 using the -n32 compiler -mode and version 7.1 of the C compiler. (The n32 compiler use 32 bits addressing, -but allows access to all the instructions in the MIPS4 instruction set.) -There were several problems: - -1) The ld command is not referenced as a macro in all the Makefiles. On -this platform, you have to include -n32 on all the ld commands. Makefiles -were changed as needed. - -2) There is a bug in "ld" which mishandles the addresses of static procedures -when object files are assembled into larger object files using "ld -r". -Because of this, I put a hack into src/backend/Makefile to avoid all the -SUBSYS.o files and just link all the objects. I have contacted SGI about the -problem, and hopefully, it will be fixed in the near future. - -3) Lots of warnings are generated from the compiler. Since the regression -tests worked OK, I didn't attempt to fix them. If anyone wants the compilation -log, please let me know, and I'll email it to you. - -The version of postgresql was 970602. Here is Makefile.custom: - -CUSTOM_COPT = -O2 -n32 -MK_NO_LORDER = 1 -LD = ld -n32 -CC += -n32 - -Here are the patches: - -*** ./backend/access/Makefile.orig Sun Nov 10 00:00:15 1996 -- --- ./backend/access/Makefile Tue Jun 3 10:22:32 1997 -*************** -*** 8,13 **** -- --- 8,16 ---- - # - #------------------------------------------------------------------------- - -+ SRCDIR = ../.. -+ include ../../Makefile.global -+ - OBJS = common/SUBSYS.o gist/SUBSYS.o hash/SUBSYS.o heap/SUBSYS.o \ - index/SUBSYS.o rtree/SUBSYS.o nbtree/SUBSYS.o transam/SUBSYS.o - - -*** ./backend/bootstrap/Makefile.orig Fri Apr 18 06:00:23 1997 -- --- ./backend/bootstrap/Makefile Tue Jun 3 10:23:59 1997 -*************** -*** 38,44 **** - all: SUBSYS.o - - SUBSYS.o: $(OBJS) -! ld -r -o SUBSYS.o $(OBJS) - - # bootstrap.o's dependency on bootstrap_tokens.h is computed by the - # make depend, but we state it here explicitly anyway because -- --- 38,44 ---- - all: SUBSYS.o - - SUBSYS.o: $(OBJS) -! $(LD) -r -o SUBSYS.o $(OBJS) - - # bootstrap.o's dependency on bootstrap_tokens.h is computed by the - # make depend, but we state it here explicitly anyway because - -*** ./backend/Makefile.orig Thu May 22 00:00:15 1997 -- --- ./backend/Makefile Thu Jun 5 16:47:27 1997 -*************** -*** 54,60 **** - all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source - - postgres: $(OBJS) ../utils/version.o -! $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS) - - $(OBJS): $(DIRS:%=%.dir) - -- --- 54,64 ---- - all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source - - postgres: $(OBJS) ../utils/version.o -! # $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS) -! -rm -f *.o -! find . -name "*.o" -exec cp \{\} . \; -! rm -f SUBSYS.o -! $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS) - - $(OBJS): $(DIRS:%=%.dir) - -*************** -*** 116,122 **** - install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\ - global1.bki.source local1_template1.bki.source \ - libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample -! - $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres - ifeq ($(MAKE_EXPORTS), true) - $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP) -- --- 120,126 ---- - install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\ - global1.bki.source local1_template1.bki.source \ - libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample -! - $(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres - ifeq ($(MAKE_EXPORTS), true) - $(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP) - -*** ./backend/optimizer/Makefile.orig Wed Feb 19 12:00:34 1997 -- --- ./backend/optimizer/Makefile Tue Jun 3 10:39:47 1997 -*************** -*** 8,13 **** -- --- 8,16 ---- - # - #------------------------------------------------------------------------- - -+ SRCDIR= ../.. -+ include ../../Makefile.global -+ - all: submake SUBSYS.o - - OBJS = path/SUBSYS.o plan/SUBSYS.o prep/SUBSYS.o util/SUBSYS.o geqo/SUBSYS.o - -*** ./backend/libpq/pqcomprim.c.orig Mon May 26 00:00:23 1997 -- --- ./backend/libpq/pqcomprim.c Fri Jun 6 16:02:24 1997 -*************** -*** 32,40 **** - # define hton_l(n) (ntoh_l(n)) - # else /* BYTE_ORDER != BIG_ENDIAN */ - # if BYTE_ORDER == PDP_ENDIAN -! # #error PDP_ENDIAN macros not written yet - # else /* BYTE_ORDER != anything known */ -! # #error BYTE_ORDER not defined as anything understood - # endif /* BYTE_ORDER == PDP_ENDIAN */ - # endif /* BYTE_ORDER == BIG_ENDIAN */ - #endif /* BYTE_ORDER == LITTLE_ENDIAN */ -- --- 32,40 ---- - # define hton_l(n) (ntoh_l(n)) - # else /* BYTE_ORDER != BIG_ENDIAN */ - # if BYTE_ORDER == PDP_ENDIAN -! # error PDP_ENDIAN macros not written yet - # else /* BYTE_ORDER != anything known */ -! # error BYTE_ORDER not defined as anything understood - # endif /* BYTE_ORDER == PDP_ENDIAN */ - # endif /* BYTE_ORDER == BIG_ENDIAN */ - #endif /* BYTE_ORDER == LITTLE_ENDIAN */ - -*** ./backend/storage/Makefile.orig Sun Nov 10 00:01:06 1996 -- --- ./backend/storage/Makefile Tue Jun 3 10:41:29 1997 -*************** -*** 8,13 **** -- --- 8,16 ---- - # - #------------------------------------------------------------------------- - -+ SRCDIR= ../.. -+ include ../../Makefile.global -+ - all: submake SUBSYS.o - - OBJS = buffer/SUBSYS.o file/SUBSYS.o ipc/SUBSYS.o large_object/SUBSYS.o \ - - - - -1.9) Why does lex fail with PostgreSQL 6.2.1? - - IRIX 5.3 lex has been reported to fail in - postgresql-6.2.1/src/backend/parser with the error: - - lex scan.l - "scan.l":line 86: Error: Invalid request %x xc - gmake[2]: *** [scan.c] Error 1 - - The answer is to use GNU flex 2.5.4 or later. Use the command - flex --version - to check you have a new enough version of flex - - -1.10) How do I install PostgreSQL V6.3 under Irix 6.x? - - Irix 6.2-6.4 has a bug in ld which mishandles the addresses of - static procedures when object files are assembled into - larger object files using 'ld -r'. This bug has been reported - to Silicon Graphics. - - Depending on your Irix installation you may also encounter - 2 other problems detailed below: Conflict in C standards, - Conflict in library functions. - - a) Solving the ld bug - --------------------- - - One option is to use the Gnu version of ld. Alternatively, - the following patch should be applied as a workaround. - (Supplied by Bob Bruccoleri <bruc@bms.com> and modified for - PostgreSQL V6.3 by Lasse Hiller Petersen <lassehp@imv.aau.dk>) - - Apply the following patch: - -*** ./backend/Makefile.orig Tue Mar 3 15:33:58 1998 ---- ./backend/Makefile Tue Mar 3 15:39:27 1998 -*************** -*** 63,69 **** - global1.description -local1_template1.description - - postgres: $(OBJS) ../utils/version.o -! $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS) - - $(OBJS): $(DIRS:%=%.dir) - ---- 63,73 ---- - global1.description -local1_template1.description - - postgres: $(OBJS) ../utils/version.o -! # $(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS) -! -rm -f *.o -! find . -name "*.o" -exec cp \{\} . \; -! rm -f SUBSYS.o -! $(CC) -o postgres *.o ../utils/version.o $(LDFLAGS) - - $(OBJS): $(DIRS:%=%.dir) - - - - - Lasse configured with ./configure --enable-locale - and modified Makefile.custom to contain: -CC = cc -n32 -LD = ld -n32 - - He reports that the installation without -n32 works fine too, - but the -n32 was required for compatibility with his Perl - installation. His system was an Origin200 running IRIX64 v6.4. - - - b) Conflict in C standards - -------------------------- - - I have found that the following patch is also necessary in order - to prevent a duplicate definition of a Union used for semaphores. - Apply the following patch to: - .../src/makefile/Makefile.irix5: - -*** src/makefiles/Makefile.irix5.orig Thu Mar 5 16:59:58 1998 ---- src/makefiles/Makefile.irix5 Thu Mar 5 17:01:13 1998 -*************** -*** 6,9 **** - %.so: %.o - $(LD) -G -Bdynamic -shared -o $@ $< - -! ---- 6,9 ---- - %.so: %.o - $(LD) -G -Bdynamic -shared -o $@ $< - -! CFLAGS+= -U_NO_XOPEN4 - - i.e. the addition of the line: - CFLAGS+= -U_NO_XOPEN4 - - This is needed to stop the semun union being redefined in - /usr/include/sys/sem.h - - c) Conflict in library functions - -------------------------------- - - In addition, if you have the nsl and crypt libraries these will - conflict with the required definitions. I think that libnsl.a - may be the Netware socket library (or something similar). In - any case, if you have these libraries, they will be added to - Makefile.global and you will need to remove them. - - Thus, you should edit .../src/Makefile.global. Goto (approximately) - line 217 where LDFLAGS= is set and remove -lnsl and -lcrypt - from this line. - - ----------------------------------------------------------------------- -Section 2: Deinstalling PostgreSQL ----------------------------------------------------------------------- - -2.1) Why can't I move the executable files? - - By default, the IRIX port uses the BSD compatible version of - install from /usr/bin/X11. If you read the man page for this - version of install, you will see that it is not meant for - end-user use; it has the interesting side-effect of chowning - files it installs to root. - - You should still be able to delete the files as you (the - postgres user) will own the directory in which they are - stored. - - The normal IRIX install program cannot be used easily as it - takes its arguments in the reverse order. It is therefore - recommended to use the GNU version of install (ginstall). - See Question 1.4 - - ----------------------------------------------------------------------- -Section 3: Extending PostgreSQL ----------------------------------------------------------------------- -3.1) How do I compile a C program to create a function for extending - PostgreSQL - - Here is a sample command line: - - cc -I/usr/local/PostgreSQL/include/ -I/usr/local/PostgreSQL/src/backend - -shared -o funcs.so funcs.c - - ----------------------------------------------------------------------------- -Dr. Andrew C.R. Martin University College London -EMAIL: (Work) martin@biochem.ucl.ac.uk (Home) andrew@stagleys.demon.co.uk -URL: http://www.biochem.ucl.ac.uk/~martin -Tel: (Work) +44(0)171 419 3890 (Home) +44(0)1372 275775 diff --git a/doc/FAQ_Linux b/doc/FAQ_Linux index e420e269444..e69de29bb2d 100644 --- a/doc/FAQ_Linux +++ b/doc/FAQ_Linux @@ -1,650 +0,0 @@ -<PRE> -======================================================= -Frequently Asked Questions (FAQ) for PostgreSQL >= V6.1 -Linux Specific -TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ -======================================================= -last updated: Wed Feb 18 13:00:00 GMT 1997 - -current maintainer: Andrew C.R. Martin (martin@biochem.ucl.ac.uk) -original author: Andrew C.R. Martin (martin@biochem.ucl.ac.uk) - - -Changes in this version (* = modified, + = new, - = removed): - -+1.20) How can I optimise for 486 or pentium processors -+3.10) Why do I get funny rounding results in some date/time arithmetic... - -This file is divided approximately as follows: -1.*) Installing PostgreSQL -2.*) Compiling accessory programs -3.*) Runtime Problems - - -Questions answered: -1.1) What changes do I need to make to src/Makefile.global or - src/Makefile.custom and are there any other changes needed? -1.2) Why do I get problems with missing libreadline? -1.3) [REDHAT] Why do I get problems with missing libdl and dlfcn.h? -1.4) [SLACKWARE 3.1] Why do I get problems with missing libdl and dlfcn.h? -1.5) My compile of the backend dies complaining about the include file - dlfcn.h missing -1.6) GCC complains about an ignored option -fpic -1.7) I get warnings of the form - warning: cast from pointer to integer of different size -1.8) [SuSE-Linux 4.2-4.4] Where is curses and termcap? -1.9) Why do I get problems with ld.so? -1.10) Why do I get `yy_flush_buffer undefined' errors? -1.11) How do I compile PostgreSQL on an a.out system? -1.12) Why does make fail with: - yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y - make: /usr/bin/make: cannot execute binary file -1.13) What are the references in X11_LIB to libsocket and libnsl in - src/Makefile.global? -1.14) [DEBIAN] Where is libtermcap? -1.15) [REDHAT] Can I get PostgreSQL as an RPM? -1.16) While trying to compile a development version under Linux, compilation - fails with a message like: - In file included from /usr/include/sys/sem.h:8, - from ipc.c:37: - /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit' - .... - make: *** [ipc.o] Error 1 -1.17) When compiling postgres, gcc reports signal 11 and aborts. -1.18) Can I install 6.1.1 under MkLinux? -1.19) Why does make exit or crash? -1.20) How can I optimise for 486 or pentium processors -2.1) The linker fails to find libX11 when compiling pgtclsh -3.1) I get an error reporting _fUnKy_POSTPORT_sTuFf_ undefined when - running scripts like createuser -3.2) I run postmaster and after that system says 'Bad system call(Core - dumped)' -3.3) When I try to start the Postmaster, why do I get an error of the form - Failed Assertion("!(file != 0):(null)", File: - "/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257) - !(file != 0) (0) - initdb: could not create template database - initdb: cleaning up. -3.4) Why doesn't createuser work? -3.5) Why do I get an error like: - IpcMemoryCreate: memKey=155356396 , size=760632 , - permission=384IpcMemoryCreate: shmget(..., create, ...) - failed: Invalid argument -3.6) Why does psql fail with: - psql: can't load library 'libpq.so.1' -3.7) Other strange behaviour -3.8) When PostgreSQL is running when the system is shutdown, Linux - always fsck's the disk when rebooted. -3.9) Why does Query 32 in the regression tests take so long? -3.10) Why do I get funny rounding results in some date/time arithmetic, - such as - select '4 hours'::timespan; - returning '3 hours 59 minutes 60 seconds'? - ----------------------------------------------------------------------- -Section 1: Compiling PostgreSQL ----------------------------------------------------------------------- - -1.1) What changes do I need to make to src/Makefile.global or - src/Makefile.custom and are there any other changes needed? - - Changes to the makefiles are most easily made by running the - customize shell script in the src directory which will write a - Makefile.custom for you. - - The only other change you may have to make is to replace - Flex if you have version 2.5.3 which has a bug which generally - manifests itself as createuser failing (See Question 3.4) - - If you modify the makefiles by hand, you *must* set the - following variable: - PORTNAME= linux - - You will also need to change the following to match your own - installation: - POSTGRESDIR - - If you switch on the USE_TCL option, you will need to set these: - TCL_INCDIR= - TCL_LIBDIR= - TCL_LIB= - TK_INCDIR= - TK_LIBDIR= - TK_LIB= - X11_INCDIR= - X11_LIBDIR= - X11_LIB= - - On my Slackware3.0 system, these are: - TCL_INCDIR= /usr/include/tcl - TCL_LIBDIR= /usr/lib - TCL_LIB= -ltcl - TK_INCDIR= /usr/include/tcl - TK_LIBDIR= /usr/lib - TK_LIB= -ltk - X11_INCDIR= /usr/include/X11 - X11_LIBDIR= /usr/X386/lib - X11_LIB= -lX11 - - You may also make any other changes you need as documented in - the INSTALL file and in Makefile.global - - -1.2) Why do I get problems with missing libreadline? - - Linux systems generally don't come with the GNU readline library - installed. Either ensure you do not activate the readline options - in src/Makefile.global or src/Makefile.custom or install the GNU - readline library. - - Note that Debian Linux (like FreeBSD) does come with readline - installed. - -1.3) [REDHAT] Why do I get problems with missing libdl and dlfcn.h? - - This manifests itself as being unable to link with functions - such as dlopen(), dlclose(), etc. during the last phase of the - compilation. - - The libdl library is used for dynamic linking of user-supplied - functions at run-time. For some reason this library was missed out - from the Redhat distribution. It seems that the latest Redhat 4.0 - (Colgate) fixes this. - - RedHat now have a new ld.so RPM package on their FTP site. - Simply grab: - - ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm - - Install the RPM file in the usual way and off you go! - - NOTE! You will have to re-run configure and do a make clean - after installing the library and before recompiling. - - There has been one report of a corrupted system resulting from - programs accessing these libraries while updating them (not - altogether surprising). Consequently it is a good idea to reboot - the system before installing the new libraries and to - have as little running as possible during this upgrade. Going - into single-user mode is probably a good idea! - - If you want to do it the hard way, you can obtain the library and the - header file from: - - ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz - - Alternatively, you may find precompiled binaries in - distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb - on the same site, or follow the instructions given for question 1.2 for - correcting the same error with early releases of Slackware 3.1. - Don't use this method unless you know what you are doing! - - - -1.4) [SLACKWARE 3.1] Why do I get problems with missing libdl and dlfcn.h? - - This manifests itself as being unable to link with functions - such as dlopen(), dlclose(), etc. during the last phase of the - compilation. - - See the answer to question 1.3. Slackware up to version 3.0 was - supplied with this library and include file and they seem to be - back in again in the latest versions of 3.1, but the early 3.1 - releases (before 9th September 1996) had them missing and many - CD-ROM versions will have been pressed from the first 3.1 releases. - - There has been one report of a corrupted system resulting from - programs accessing these libraries while updating them (not - altogether surprising). Consequently it is a good idea to reboot - the system before installing the new libraries and to - have as little running as possible during this upgrade. Going - into single-user mode is probably a good idea! - - The easiest fix is to obtain the file ldso.tgz from the a4 disk of - a more recent Slackware distribution and unpack this file - from the root (/) directory, then do - - sh install/doinst.sh - - to complete the installation. Follow this with - - ldconfig - - NOTE! You will have to re-run configure and do a make clean - after installing the library and before recompiling. - - If you want to install manually, you must first install the file - dlfcn.h in /usr/include. - - Second, install the file libdl.so.1.7.14 (or whatever the latest - release is) in /lib, then do: - - cd /lib - ln -sf libdl.so.1.7.14 libdl.so.1 - ln -sf libdl.so.1 libdl.so - - On some systems (depending on your GCC configuration) it may be - necessary to do: - - cd /usr/lib - ln -sf /lib/libdl.so . - - Finally - - ldconfig - - NOTE! You will have to re-run configure and do a make clean - after installing the library and before recompiling. - - -1.5) My compile of the backend dies complaining about the include file - dlfcn.h missing - - See the answer to question 1.3/1.4. Don't forget that if you are using - an a.out system you must first have installed the dld package - (which is not supplied with most a.out systems) to have dlfcn.h - at all. See Question 1.11. - - -1.6) GCC complains about an ignored option -fpic - - Earlier versions of GCC accepted either -fpic or -fPIC. - It appears that more recent versions (V2.7.2?) require -fPIC. - If you are using an ELF version of Linux, this can safely be - ignored as -fPIC is the default. - - You can correct this by editing src/Makefile.global and - changing CFLAGS_SL - - -1.7) I get warnings of the form - warning: cast from pointer to integer of different size - - These were seen in earlier versions of Postgres95 and could - safely be ignored. PostgreSQL V6.0 should compile with no warnings - except those related to system header files (which can also - be safely ignored). - -1.8) [SuSE-Linux 4.2-4.4] Where is curses and termcap? - - SuSE-Linux 4.2 has ncurses but not curses. 4.4 appears to have both. - SuSE-Linux also has the termcap library is in /usr/lib/termcap - instead of in /usr/lib. - - PostgreSQL (up to V6.0) - ----------------------- - Set the value of CURSES_LIB in src/Makefile.custom to -lncurses - (or do this through the customize script). - Add the following line to src/Makefile.custom: - - LDADD_BE+= -L/usr/lib/termcap - - You may need to edit src/bin/psql/Makefile and change: - ifeq ($(PORTNAME), linux) - LD_ADD+= - to: - ifeq ($(PORTNAME), linux) - LD_ADD+= -ltermcap - - PostgreSQL (V6.1) - ----------------- - The configure script doesn't know to look in /usr/lib/termcap for - the termcap library, so you should specify this as one of the - library directories when asked for additional directories to - search. - - If this doesn't work (I don't have SuSE to verify that it does) - then after running configure, you need to edit - src/Makefile.global and add -ltermcap to the LDFLAGS line - (after -lreadline). (Alternatively, you can modify - src/Makefile.custom before running configure.) - - Some versions of SuSE provide only ncurses, so you may need - to force use of ncurses rather than curses by changing - -lcurses to -lncurses. (Reported true for SuSE 5.1) - - -1.9) Why do I get problems with ld.so? - - If you get problems with ld.so, another library required under - ELF for dynamic loading, then you have messed up your installation - or (more likely) upgrade of Linux. - - See the answers to Question 1.3/1.4. You may need to install - ld.so.x.y.z in /lib and run ldconfig. - - The most recent stable release of the ld package is 1.7.14 - At the time of writing, 1.8.x versions of ld are experimental. - -1.10) Why do I get `yy_flush_buffer undefined' errors? - - This isn't really Linux specific, but is common on older Linux - installations. You must have a recent version of flex (2.5.2 or later) - to compile PostgreSQL. Note that flex 2.5.3 has a bug: see - Question 3.4. - -1.11) How do I compile PostgreSQL on an a.out system? - - First, you must install the dld library. This may be obtained - from Sunsite as: - Linux/libs/dld.3.2.7.tar.gz - (ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz) - - Second, add the following line to src/Makefile.custom: - LINUX_ELF= - (or use the customize script) - -1.12) Why does make fail with: - yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y - make: /usr/bin/make: cannot execute binary file - - This was a problem in earlier versions of Postgres95. The default - for PostgreSQL is to use bison -y rather than yacc. - - yacc is generally implemented as a script which invokes bison -y - For some reason (certain versions of make? certain versions of - bash?) make is unable to execute this script file. - - To correct this, simply edit src/mk/port/postgres.mk.linux - and, at the end of the file, change: - # YACC = bison -y - to - YACC = bison -y - -1.13) What are the references in X11_LIB to libsocket and libnsl in - src/Makefile.global? - - This was a problem in 1.08 (they are Sun Solaris specific). - It is fixed in 1.09 and 6.0 - -1.14) [DEBIAN] Where is libtermcap? - - Debian Linux comes without the termcap library and uses ncurses - (which uses terminfo instead). There is no need to change the - CURSES_LIB variable in src/bin/psql/Makefile since Debian provides - a link from libncurses to libcurses (unlike SuSE-Linux --- see - Question 1.8). - - You may need to edit src/bin/psql/Makefile and comment out the - change: - ifeq ($(PORTNAME), linux) - LD_ADD+= -ltermcap - to: - ifeq ($(PORTNAME), linux) - LD_ADD+= - - -1.15) [REDHAT] Can I get PostgreSQL as an RPM? - - Yes! Michal Mosiewicz <mimo@lodz.pdi.net> - (http://www.pdi.lodz.pl/~mimo) has kindly put together an RPM - for PostgreSQL V6.0 on Intel architectures which he has uploaded to - ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm - - This is a pre-compiled version, the source RPM is on its - was as I write (3rd Feb 1997). - -1.16) While trying to compile a development version under Linux, compilation - fails with a message like: - In file included from /usr/include/sys/sem.h:8, - from ipc.c:37: - /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit' - .... - make: *** [ipc.o] Error 1 - - The problem is that Linux provides no prototypes for these - inline functions. The solution is to go into the - .../src/backend/storage/ipc directory and edit the Makefile. - Change the line - CFLAGS+=$(INCLUDE_OPT) - to - CFLAGS+=$(INCLUDE_OPT) -Wno-error - - Do the same in the ../src/backend/storage/lmgr directory. - -1.17) When compiling postgres, gcc reports signal 11 and aborts. - More specifically: - gcc: Internal compiler error: program cc1 got fatal - signal 11 - - This may be a hardware/memory problem. PortgreSQL is a big - program, and large gcc compilations (such as building - PostgreSQL or bebuilding the kernel) stress memory like - few other programs, resulting in errors that do not occur - in normal operation. Lesser operating systems are also - unlikely to stress the hardware to this degree so you - may never see any problems under DOS/Windows. - - More information on this problem at: - http://www.bitwizard.nl/sig11 - -1.18) Can I install 6.1.1 under MkLinux? - - Tatsuo Ishii <t-ishii@sra.co.jp> has done this under - MkLinux DR2.1 update2 after a small patch available from: - ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz - -1.19) Why does make exit or crash? - - There have been a couple of reports of gmake either just - exiting early or seg faulting. The latter problem was reported - with gmake 3.74 - upgrading to 3.76.1 solved the problem. - However, 3.74 is known to work fine in other people's setups. - In short, try upgrading gmake to the latest version you can - find before reporting this as a problem - -1.20) How can I optimise for 486 or pentium processors - - The default compiler flags perform no optimisation for 486 - or Pentium processors. To add such optimisation, edit - Makefile.custom and add: - - CFLAGS+= -m486 - - or (for the new compilers that most people are not yet running) - - CFLAGS+= -mpentium - or - CFLAGS+= -mpentiumpro - ----------------------------------------------------------------------- -Section 2: Compiling accessory programs ----------------------------------------------------------------------- - -2.1) The linker fails to find libX11 when compiling pgtclsh - - Add the following to src/Makefile.custom - X11_LIBDIR = /usr/X11R6/lib - - ----------------------------------------------------------------------- -Section 3: Runtime Problems ----------------------------------------------------------------------- - -3.1) I get an error reporting _fUnKy_POSTPORT_sTuFf_ undefined when - running scripts like createuser - - This is a bug in V1.06-V1.07 of Postgres and is fixed in V1.08 - and above. - -3.2) I run postmaster and after that system says 'Bad system call(Core - dumped)' - - This indicates that you have not compiled shared memory support - into your kernel. You need to recompile the Linux kernel to add this - feature. - - -3.3) When I try to start the Postmaster, why do I get an error of the form - Failed Assertion("!(file != 0):(null)", File: - "/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257) - !(file != 0) (0) - initdb: could not create template database - initdb: cleaning up. - - Your permissions on the file /dev/null are wrong. - - ls -l /dev/null should give you something like: - - crw-rw-rw- 1 root wheel 2, 2 Oct 8 18:41 /dev/null - - Correct the permissions using: - - chmod a+rw /dev/null - -3.4) Why doesn't createuser work? - - There is a problem with Version 2.5.3 of GNU flex and createuser. - Your options are to downgrade flex to V2.5.2, upgrade to V2.5.4 - or apply a patch to V2.5.3 which is supplied in doc/README.flex - You may obtain V2.5.4 from - ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz - -3.5) Why do I get an error like: - IpcMemoryCreate: memKey=155356396 , size=760632 , - permission=384IpcMemoryCreate: shmget(..., create, ...) - failed: Invalid argument - - You haven't build IPC support into your Linux kernel. You - will have to rebuild the kernel and switch on this option. - -3.6) Why does psql fail with: - psql: can't load library 'libpq.so.1' - - Psql has been compiled to link dynamically with the libpq - library. - - To solve this, you should log in as root and edit the file - /etc/ld.so.conf - Add a single line at the end which gives the name of the - PostgreSQL library directory (the lib subdirectory of your - PostgreSQL installation) and run - /sbin/ldconfig -v - - Alternatively, (and if you don't have root access), you may - use the LD_LIBRARY_PATH environment variable. - - The LD_LIBRARY_PATH variable contains a colon separated list of - paths to be searched for shared libraries. This list is - searched before the libraries specified by ldconfig. - - Therefore under Bash, you would do something like: - export LD_LIBRARY_PATH='PathToPGSQL'/lib - or, using tcsh - setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib - replacing 'PathToPGSQL' with the appropriate path to your top level - PostgreSQL directory - - Note that the ldd command can be used on a dynamically linked - executable to list the paths to all the shared libraries upon - which the executable depends. - - -3.7) Other strange behaviour - - I'm not sure what the symptoms might be except for nothing - working properly, but it has been pointed out that one needs - to be careful that the dynamic loader loads the correct version - of the libpq library. If you have old versions lying around - in your library path (for example in /usr/lib) these may get - loaded instead of the new version you intended to load. Make - sure you get them out of the way and look at Q3.6 for - details of loading libraries. - -3.8) When PostgreSQL is running when the system is shutdown, Linux - always fsck's the disk when rebooted. - - There have been some reports of this happening and it seems - to be a result of running PostgreSQL from /etc/inittab as - suggested in the INSTALL document. - - You are therefore recommended to start the postmaster from an - rc script. Under a Slackware-like release, you would modify - /etc/rc.d/rc.local to start the postmaster. Under a RedHat-like - release you should create a SysV style script in - /etc/rc.d/rc3.d based on the /etc/rc.d/init.d skeleton file. - - There's a sample file in contrib/linux/postgres.init - - Here's another sample file supplied by John Robinson - <john@intelligent.co.uk> which you should modify as needed: - -#!/bin/sh -# -# postgreSQL.init This shell script takes care of starting and stopping -# the PostgreSQL postmaster. -# - -# Source function library. -. /etc/rc.d/init.d/functions - -# Source networking configuration. -. /etc/sysconfig/network - -# Check that networking is up. -[ ${NETWORKING} = "no" ] && exit 0 - -# See how we were called. -case "$1" in - start) - # Start daemons. - echo -n "Starting postgres Postmaster daemon:" - if [ -z "`pidofproc postmaster`" ] - then - su postgres -c "/usr/local/pgsql/bin/postmaster -D /home/postgreSQL/data -p 5432 &" - echo -n " postmaster" - else - echo -n " (already running)" - fi - echo - touch /var/lock/subsys/postgres - ;; - stop) - # Stop daemons. - echo -n "Shutting down postgres Postmaster daemon: " - killall -TERM postmaster 2>/dev/null - killall -TERM postgres 2>/dev/null - echo - rm -f /var/lock/subsys/postgres - ;; - *) - echo "Usage: postgres {start|stop}" - exit 1 -esac - -exit 0 - - - -3.9) Why does Query 32 in the regression tests take so long? - - This is due to a bug in regression scripts which only happens - on linux boxes. There are two workarounds as far as I know - (information from Tatsuo Ishii <t-ishii@sra.co.jp>): - - 1. change following in regress.sh: - time postgres -texecutor -tplanner -Q bench < bench.sql - to: - postgres -texecutor -tplanner -Q bench < bench.sql - - 2. after running the test, remove a line at the very end of - bench.out something like: - 85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k - then type: - sh ./perquery < bench.out > & bench.out.perquery - - - -3.10) Why do I get funny rounding results in some date/time arithmetic, - such as - select '4 hours'::timespan; - returning '3 hours 59 minutes 60 seconds'? - - You are running the new glibc2 libraries and have a version earlier than - 2.0.7. It is a math rounding problem in the library. Upgrade your library. ----------------------------------------------------------------------------- -Dr. Andrew C.R. Martin University College London -EMAIL: (Work) martin@biochem.ucl.ac.uk (Home) andrew@stagleys.demon.co.uk -URL: http://www.biochem.ucl.ac.uk/~martin -Tel: (Work) +44(0)171 419 3890 (Home) +44(0)1372 275775 -</PRE> @@ -1,24 +1,27 @@ TODO list for PostgreSQL ======================== -Last updated: Tue Apr 7 16:56:24 EDT 1998 +Last updated: Sat Aug 29 17:43:10 EDT 1998 Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) The most recent version of this document can be viewed at the PostgreSQL WWW site, http://www.postgreSQL.org. -THE CHANGES FOR 6.3 APPEAR AT THE END OF THIS DOCUMENT +THE CHANGES FOR 6.4 APPEAR AT THE END OF THIS DOCUMENT A dash(-) marks changes to be in the next release. Developers who have claimed items are: ------------------------------------- + * Billy is Billy G. Allie <Bill.Allie@mug.org> + * Brook is Brook Milligan <brook@trillium.NMSU.Edu> * Bruce is Bruce Momjian<maillist@candle.pha.pa.us> * Bryan is Bryan Henderson<bryanh@giraffe.netgate.net> * D'Arcy is D'Arcy J.M. Cain <darcy@druid.net> * Dan is Dan McGuirk <mcguirk@indirect.com> * Daniel is Daniel Kalchev <daniel@digsys.bg> * Darren is Darren King <darrenk@insightdist.com> + * David is David Hartwig <daveh@insightdist.com> * Edmund is Edmund Mergl <E.Mergl@bawue.de> * Erich Stamberger <eberger@gewi.kfunigraz.ac.at> * Gerhard is Gerhard Reithofer <gerhardr@tech-edv.co.at> @@ -31,40 +34,42 @@ Developers who have claimed items are: * Maarten is Maarten Boekhold <maartenb@dutepp0.et.tudelft.nl> * Marc is Marc Fournier <scrappy@hub.org> * Martin is Martin S. Utesch <utesch@aut.tu-freiberg.de> + * Massimo Dal Zotto <dz@cs.unitn.it> * Michael is Michael Meskes <meskes@debian.org> * Oleg is Oleg Bartunov <oleg@sai.msu.su> * Paul is Paul M. Aoki <aoki@CS.Berkeley.EDU> * Patrick is Patrick van Kleef <pvk@pobox.com> - * Peter is Peter T Mount <psqlhack@maidast.demon.co.uk> + * Peter is Peter T Mount <peter@retep.org.uk> * Phil is Phil Thompson <phil@river-bank.demon.co.uk> * Raymond is Raymond Toy <toy@rtp.ericsson.se> + * Ryan is Ryan Kirkpatrick <rkirkpat@nag.cs.colorado.edu> * Soo-Ho Ok <shok@detc.dongeui-tc.ac.kr> * Stefan Simkovics <ssimkovi@rainbow.studorg.tuwien.ac.at> * Sven is Sven Verdoolaege <skimo@breughel.ufsia.ac.be> * Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp> * Thomas is Thomas Lockhart <tgl@mythos.jpl.nasa.gov> * Todd is Todd Brandys is <brandys@eng3.hep.uiuc.edu> + * TomH is Tom I Helbekkmo <tih@Hamartun.Priv.NO> * Vadim is "Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su> * Vivek is Vivek Khera <khera@kci.kciLink.com> -Additional 6.3 developers include: +Additional 6.4 developers include: --------------------------------- - * Billy is Billy G. Allie <Bill.Allie@mug.org> - * Brook is Brook Milligan <brook@trillium.NMSU.Edu> - * James is James Hughes <jamesh@interpath.com> - * Jeroen is Jeroen van Vianen <jeroenv@design.nl> - * Matt is Matt Maycock <maycock@intelliquest.com> - * Ryan is Ryan Kirkpatrick <rkirkpat@nag.cs.colorado.edu> - * TomH is Tom I Helbekkmo <tih@Hamartun.Priv.NO> - * TomS is Tom Szybist - * Travis is Travis Melhiser <melhiser@viper.co.union.nc.us> + * Jun Kuwamura <juk@rccm.co.jp> + * Zeugswetter Andreas SARZ <Andreas.Zeugswetter@telecom.at> + * Soonmyung. Hong <hong@lunaris.hanmesoft.co.kr> + * Anders Hammarquist <iko@netg.se> + * Jeroen van Vianen <jeroenv@design.nl> + * Aldrin L. <aldrin@americasnet.com> + * Pascal ANDRE <andre@via.ecp.fr> + * Magnus Hagander <mha@edu.sollentuna.se> RELIABILITY ----------- * Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup * Overhaul bufmgr/lockmgr/transaction manager * Remove EXTEND? -* CREATE VIEW requires super-user priviledge +* -CREATE VIEW requires super-user priviledge * Can lo_export()/lo_import() read/write anywhere, causing a security problem? * Tables that start with xinv confused to be large objects * Two and three dimmensional arrays display improperly, missing {} @@ -73,7 +78,7 @@ RELIABILITY * SELECT * FROM table WHERE int4_column = '1' fails * SELECT a[1] FROM test fails, it needs test.a[1] * UPDATE table SET table.value = 3 fails -* Make pg_dump preserve inheritance column order, do non-inherits first +* -Make pg_dump preserve inheritance column order, do non-inherits first * User who can create databases can modify pg_database table * optimizer memory exhaustion with many OR's * elog() does not free all its memory(Jan) @@ -81,6 +86,10 @@ RELIABILITY * disallow inherited columns with the same name as new columns * recover or force failure when disk space is exhausted * default char() value not to full length crashes server on some OS's +* allow UPDATE using aggregate to affect all rows, not just one +* computations in views fail: + create view test as select usesysid * usesysid from pg_shadow; +* select upper(usename), count(usesysid) from pg_shadow group by 1 fails ENHANCEMENTS ------------ @@ -92,36 +101,37 @@ ENHANCEMENTS * Add full ANSI SQL capabilities * -Implement HAVING clause(Stephan) * add OUTER joins, left and right (Thomas) - * make VIEWs updateable where possible + * -make VIEWs updateable where possible(use Rules) * add INTERSECTS, SUBTRACTS(Stephan) - * add temporary tables(Bruce) + * add temporary tables * add sql3 recursive unions * add the concept of dataspaces * add DECIMAL, NUMERIC, DOUBLE PRECISION, BIT, BIT VARYING * NCHAR (as distinguished from ordinary varchar), * DOMAIN capability * Allow compression of large fields or a compressed field type -* Fix the rules system(Jan?,Soo-Ho) - * robust - * making INSTEAD rules work +* Fix the rules system(Jan,Soo-Ho) + * -robust + * -making INSTEAD rules work * add CONSTRAINT * Full set of text operations and functions * word searches, concat,max() on text, char * Large objects - * Fix large object mapping scheme, own reltype + * Fix large object mapping scheme, own reltype(Peter) + * Allow large text type to use large objects(Peter) * not to stuff everything as files in a single directory * Fix large object memory leaks + * delete orphaned large objects * Better interface for adding to pg_group * Make MONEY/DECIMAL have a defined precision * Fix tables >2G, or report error when 2G size reached (fix lseek()/off_t, mdextend()/RELSEG_SIZE) -* Threaded version of the server or libpq -* Allow libpq to cancel query requests +* -Allow libpq to cancel query requests * Add REGEX internationalization * allow row re-use without vacuum, maybe?(Vadim) -* Remove restriction that ORDER BY field must be in SELECT list +* -Remove restriction that ORDER BY field must be in SELECT list(David) * Add word index for text fields, maybe with trigrams, i.e.: - * ' (cat | dog) & ! fox ' meaning text has cat or dog, but not fox + * ' (cat | dog) & ! fox ' meaning text has cat aor dog, but not fox * Populate backend status area and write program to dump status data * Add ALTER TABLE DROP COLUMN feature * Allow INSERT INTO ... SELECT to convert column types @@ -146,6 +156,7 @@ ENHANCEMENTS * Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions * Allow installation data block size and max tuple size configuration(Darren) * Allow views on a UNION +* Allow DISTINCT on view * Allow views of aggregate columns * Allow variable block sizes(Darren) * System tables are now more update-able from SQL(Jan) @@ -161,19 +172,33 @@ ENHANCEMENTS * Granting permissions to another user looses permissions for the owner * Allow queries across multiple databases * Add replication of distributed databases +* Allow table destruction/alter to be rolled back +* Add pg_attribute.atttypmod/Resdom->restypmod to PGresult structure +* Generate error on CREATE OPERATOR of ~~, ~ and and ~* +* Allow constraint NULL just as we honor NOT NULL +* Add version number in startup banners for psql and postmaster +* Restructure storing of GRANT permission information to allow +-= +* allow psql \copy to allow delimiters +* allow international error message support and add error codes +* allow ORDER BY a function(David) +* allow usernames with dashes(GRANT fails) +* add a function to return the last inserted oid, for use in psql scripts +* allow creation of functional indexes to use default types +* put sort files, large objects in their on directory +* CREATE VIEW myview (name) AS SELECT lname FROM wages fails PERFORMANCE ----------- -* Use indexes in ORDER BY, min(), max()(Costin Oproiu) +* Use indexes in ORDER BY for restrictive data sets, min(), max() * Optimizing disjunctive queries -* Fix bushy-plans (Martin) +* Fix bushy-plans * Other optimizer bugs * Prevent fsync in SELECT-only queries * Cache most recent query plan(s?) * Shared catalog cache, reduce lseek()'s by caching table size in shared area * Allow compression of log and meta data * Add FILLFACTOR to index creation -* Allow indexes to be used with OR clauses(Vadim) +* -Allow indexes to be used with OR clauses(Bruce) * update pg_statistic table to remove operator column * make index creation use psort code, because it is now faster(Vadim) * remove fork()/exec() of backend and make it just fork() @@ -185,6 +210,9 @@ PERFORMANCE * Use spin locks only on multi-CPU systems, yield CPU instead * Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca> when it is available +* use mmap() rather than SYSV shared memory(?) +* use index to restrict rows returned by multi-key index when used with + non-consecutive keys or OR clauses, so fewer heap accesses DOCUMENTATION ------------- @@ -198,284 +226,162 @@ DOCUMENTATION ============================================================================= - -CHANGES IN THE 6.3.2 PATCH --------------------------- -configure detection improvements for tcl/tk(Brook Milligan, Alvin) -Manual page improvements(Bruce) -BETWEEN and LIKE fix(Thomas) -fix for psql \connect used by pg_dump(Oliver Elphick) -New odbc driver -pgaccess, version 0.86 -qsort removed, now uses libc version, cleanups(Jeroen) -fix for buffer over-runs detected(Maurice Gittens) -fix for buffer overrun in libpgtcl(Randy Kunkee) -fix for UNION with DISTINCT or ORDER BY(Bruce) -gettimeofday configure check(Doug Winterburn) -Fix "indexes not used" bug(Vadim) -docs additions(Thomas) -Fix for backend memory leak(Bruce) -libreadline cleanup(Erwan MAS) -Remove DISTDIR(Bruce) -Makefile dependency cleanup(Jeroen van Vianen) -ASSERT fixes(Bruce) - - -CHANGES IN THE 6.3.1 PATCH --------------------------- -ecpg cleanup/fixes, now version 1.1(Michael Meskes) -pg_user cleanup(Bruce) -large object fix for pg_dump and tclsh(alvin@camberlo.demon.co.uk) -LIKE fix for multiple adjacent underscores -LIKE/BETWEEN fix for having function call as target(Thomas) -fix for redefining builtin functions(Thomas) -ultrix4 cleanup -upgrade to pg_access 0.83 -updated CLUSTER manual page -multi-byte character set support, see doc/README.mb(Tatsuo) -configure --with-pgport fix -pg_ident fix -big-endian fix for backend communications(Kataoka) -SUBSTR() and substring() fix(Jan) -several jdbc fixes(Peter) -libpgtcl improvements, see libptcl/README(Randy Kunkee) -Fix for "Datasize = 0" error(Vadim) -Prevent \do from wrapping(Bruce) -Remove duplicate Russian character set entries -Sunos4 cleanup -Allow optional TABLE keyword in LOCK and SELECT INTO(Thomas) -CREATE SEQUENCE options to allow a negative integer(Thomas) -Add "PASSWORD" as an allowed column identifier(Thomas) -Add checks for UNION target fields(Bruce) -Fix Alpha port(Dwayne Bailey) -Fix for text arrays containing quotes(Doug Gibson) -Solaris compile fix(Albert Chin-A-Young) -Better identify tcl and tk libs and includes(Bruce) - - - -CHANGES IN THE 6.3 RELEASE +CHANGES IN THE 6.4 RELEASE -------------------------- -There are some general 6.3 issues that I want to mention. These are -only the big items that can not be described in one sentence. - -First, we now have subselects. Now that we have them, I would like to -mention that without subselects, SQL is a very limited language. -Subselects are a major feature, and you should review your code for -places where subselects provide a better solution for your queries. I -think you will find that there are more uses for subselects than you may -think. Vadim has put us on the big SQL map with subselects, and fully -functional ones too. The only thing you can't do with subselects is to -use them in the target list. - -Second, 6.3 uses unix domain sockets rather than TCP/IP by default. To -enable connections from other machines, you have to use the new -postmaster -i option, and of course edit pg_hba.conf. Also, for this -reason, the format of pg_hba.conf has changed. - -Third, char() fields will now allow faster access than varchar() or -text. Specifically, the text and varchar() have a penalty for access to -any columns after the first column of this type. char() used to also -have this access penalty, but it no longer does. This may suggest that -you redesign some of your tables, especially if you have short character -columns that you have defined as varchar() or text. This and other -changes make 6.3 even faster than earlier releases. - -We now have passwords definable independent of any Unix file. There are -new SQL USER commands. See the pg_hba.conf manual page for more -information. There is a new table, pg_shadow, which is used to store -user information and user passwords, and it by default only SELECT-able -by the postgres super-user. pg_user is now a view of pg_shadow, and is -SELECT-able by PUBLIC. You should keep using pg_user in your -application without changes. - -User-created tables now no longer have SELECT permission to PUBLIC by -default. This was done because the ANSI standard requires it. You can -of course GRANT any permissions you want after the table is created. -System tables continue to be SELECT-able by PUBLIC. - -We also have real deadlock detection code. No more sixty-second -timeouts. And the new locking code implements a FIFO better, so there -should be less resource starvation during heavy use. - -Many complaints have been made about inadequate documenation in previous -releases. Thomas has put much effort into many new manuals for this -release. Check out the /doc directory. - -For performance reasons, time travel is gone, but can be implemented -using triggers (see pgsql/contrib/spi/README). Please check out the new -\d command for types, operators, etc. Also, views have their own -permissions now, not based on the underlying tables, so permissions on -them have to be set separately. Check /pgsql/interfaces for some new -ways to talk to PostgreSQL. - -This is the first release that really required an explaination for -existing users. In many ways, this was necessary because the new -release removes many limitations, and the work-arounds people were using -are no longer needed. - Bug Fixes --------- -Fix binary cursors broken by MOVE implementation(Vadim) -Fix for tcl library crash(Jan) -Fix for array handling, from Gerhard Hintermayer -Fix acl error, and remove duplicate pqtrace(Bruce) -Fix psql \e for empty file(Bruce) -Fix for textcat on varchar() fields(Bruce) -Fix for DBT Sendproc (Zeugswetter Andres) -Fix vacuum analyze syntax problem(Bruce) -Fix for international identifiers(Tatsuo) -Fix aggregates on inherited tables(Bruce) -Fix substr() for out-of-bounds data -Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce) -Fix notty output to show status result. -q option still turns it off(Bruce) -Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce) -Fix cluster(Bruce) -Fix for PQtrace start/stop several times(Bruce) -Fix a variety of locking problems like newer lock waiters getting - lock before older waiters, and having readlock people not share - locks if a writer is waiting for a lock, and waiting writers not - getting priority over waiting readers(Bruce) -Fix crashes in psql when executing queries from external files(James) -Fix problem with multiple order by columns, with the first one having - NULL values(Jeroen) -Use correct hash table support functions for float8 and int4(Thomas) -Re-enable JOIN= option in CREATE OPERATOR statement (Thomas) -Change precedence for boolean operators to match expected behavior(Thomas) -Generate elog(ERROR) on over-large integer(Bruce) -Allow multiple-argument functions in constraint clauses(Thomas) -Check boolean input literals for 'true','false','yes','no','1','0' - and throw elog(ERROR) if unrecognized(Thomas) -Major large objects fix -Fix for GROUP BY showing duplicates(Vadim) -Fix for index scans in MergeJion(Vadim) +Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan) +Remove char2-16 data types, use char/varchar(Darren) +Pqfn not handles a NOTICE message(Anders) +Short-term locks now retry locking at random times(David) +Fix up "ISO-style" timespan decoding and encoding(Thomas) +Fix problem with table drop after rollback of transaction(Vadim) +Change error message and remove non-functional update message(Vadim) +Fix for COPY array checking +Fix for SELECT 1 UNION SELECT NULL +Fix for buffer leaks in large object calls(Pascal) +Change owner from oid to int4 type(Bruce) +Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim() +Fix for usernames longer than eight characters(Tom) +Fix for shared invalidation cache overflow(Massimo) +Prevent file descriptor leaks in failed COPY's(Bruce) Enhancements ------------ -Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas) -New User Manual(Thomas, others) -Speedup by inlining some frequently-called functions -Real deadlock detection, no more timeouts(Bruce) -Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, - CURRENT_USER(Thomas) -Modify constraint syntax to be SQL92-compliant(Thomas) -Implement SQL92 PRIMARY KEY and UNIQUE clauses using indices(Thomas) -Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas) -Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas) -Allow Postgres-style casting ("::") of non-constants(Thomas) -Add support for SQL3 TRUE and FALSE boolean constants(Thomas) -Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas) -Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas) -Allow SQL92 delimited identifiers(Thomas) -Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas) -Support SQL92 syntax for type coercion of literal strings - (e.g. "DATETIME 'now'")(Thomas) -Add conversions for int2, int4, and OID types to and from text(Thomas) -Use shared lock when building indices(Vadim) -Free memory allocated for an user query inside transaction block after - this query is done, was turned off in <= 6.2.1(Vadim) -New SQL statement CREATE PROCEDURAL LANGUAGE(Jan) -New PostgreSQL Procedural Language (PL) backend interface(Jan) -Rename pg_dump -H option to -h(Bruce) -Add Java support for passwords, European dates(Peter) -Use indices for LIKE and ~, !~ operations(Bruce) -Add hash functions for datetime and timespan(Thomas) -Time Travel removed(Vadim, Bruce) -Add paging for \d and \z, and fix \i(Bruce) -Add Unix domain socket support to backend and to frontend library(Goran) -Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas) -Allow more SQL92 and/or Postgres reserved words as column identifiers(Thomas) -Augment support for SQL92 SET TIME ZONE...(Thomas) -SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas) -Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas) -Enable SET TIME ZONE using TZ environment variable(Thomas) -Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas) -Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO - frontend library initialization environment variables(Thomas) -Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas) -Add pg_description table for info on tables, columns, operators, types, and - aggregates(Bruce) -Increase 16 char limit on system table/index names to 32 characters(Bruce) -Rename system indices(Bruce) -Add 'GERMAN' option to SET DATESTYLE(Thomas) -Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas) -Allow fractional values for delta times (e.g. '2.5 days')(Thomas) -Validate numeric input more carefully for delta times(Thomas) -Implement day of year as possible input to date_part()(Thomas) -Define timespan_finite() and text_timespan() functions(Thomas) -Remove archive stuff(Bruce) -Allow for a pg_password authentication database that is separate from - the system password file(Todd) -Dump ACLs, GRANT, REVOKE permissions(Matt) -Define text, varchar, and bpchar string length functions(Thomas) -Fix Query handling for inheritance, and cost computations(Bruce) -Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas) -Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas) -Implement UNIONs for SELECT(Bruce) -Add UNION, GROUP, DISTINCT to INSERT(Bruce) -varchar() stores only necessary bytes on disk(Bruce) -Fix for BLOBs(Peter) -Mega-Patch for JDBC...see README_6.3 for list of changes(Peter) -Remove unused "option" from PQconnectdb() -New LOCK command and lock manual page describing deadlocks(Bruce) -Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce) -Enhance psql \z to show sequences(Bruce) -Show NOT NULL and DEFAULT in psql \d table(Bruce) -New psql .psqlrc file startup(Andrew) -Modify sample startup script in contrib/linux to show syslog(Thomas) -New types for IP and MAC addresses in contrib/ip_and_mac(TomH) -Unix system time conversions with date/time types in contrib/unixdate(Thomas) -Update of contrib stuff(Massimo) -Add Unix socket support to DBD::Pg(Goran) -New python interface (PyGreSQL 2.0)(D'Arcy) -New frontend/backend protocol has a version number, network byte order(Phil) -Security features in pg_hba.conf enhanced and documented, many cleanups(Phil) -CHAR() now faster access than VARCHAR() or TEXT -ecpg embedded SQL preprocessor -Reduce system column overhead(Vadmin) -Remove pg_time table(Vadim) -Add pg_type attribute to identify types that need length (bpchar, varchar) -Add report of offending line when COPY command fails -Allow VIEW permissions to be set separately from the underlying tables. - For security, use GRANT/REVOKE on views as appropriate(Jan) -Tables now have no default GRANT SELECT TO PUBLIC. You must - explicitly grant such permissions. -Clean up tutorial examples(Darren) +Upgrade ECPG to 2.0, see src/interfaces/ecpc/ChangeLog(Michael) +Show the index used in an explain(Zeugswetter) +Multi-byte awareness of many data data types and functions(Tatsuo) +New configure --with-mb option(Tatsuo) +New initdb --pgencoding option(Tatsuo) +New createdb -E multibyte option(Tatsuo) +Select version(); now returns PostgreSQL version(Jeroen) +Libpq now allows asynchronous clients(Tom) +Allow cancel from client of backend query(Tom) +Psql now cancels query with Control-C(Tom) +Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas) +Add routines to convert between varchar and bpchar(Thomas) +Add routines to allow sizing of varchar and bpchar into target columns(Thomas) +Add bit flags to support timezonehour and minute in data retrieval(Thomas) +Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas) +Fixes for unary minus parsing with leading spaces(Thomas) +Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas) +Check for and properly ignore FOREIGN KEY column constraints(Thomas) +Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas) +Enable HAVING clause but no fixes elsewhere yet. +Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas) +Save string type if specified for DEFAULT clause handling(Thomas) +Coerce operations involving different data types(Thomas) +Allow some index use for columns of different types(Thomas) +Add capabilities for automatic type conversion(Thomas) +Cleanups for large objects, so file is truncated on open(Peter) +Readline cleanups(Tom) +Allow psql \f \ to make spaces as delimiter(Bruce) +Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce) +Msql compatibility library in /contrib(Aldrin) +Remove the requirement that ORDER/GROUP BY clause identifiers be +included in the target list(David) +Convert columns to match columns in UNION clauses(Thomas) +Remove fork()/exec() and only do fork()(Bruce) +Jdbc cleanups(Peter) +Show backend status on ps command line(only works on some platforms)(Bruce) +Pg_hba.conf now has a sameuser option in the database field +Make lo_unlink take oid param, not int4 +New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce) +Libpgtcl now gets async notifies from libpq(Tom) +New locale patch, see docs/README/locale(Oleg) +Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb) +New contrib/lo code for large object orphan removal(Peter) +New psql command "SET CLIENT_ENCODING TO 'encoding'" for multi-bytes +feature, see /doc/README.mb(Tatsuo) +/contrib/noupdate code to revoke update permission on a column +Libpq can now be compiled on win32(Magnus) +Add PQsetdbLogin() in libpq +Two styles we agreed upon for database descriptors(Thomas) +New 8-byte integer type, checked by configure for OS support(Thomas) +Surround table and column names with double-quotes(Thomas) in generated +sql code to preserve case (SQL92 syntax)(Thomas) +New libpqrequestCancel(Tom) +PQreset() now works with passwords(Tom) +Handle case of GROUP BY target list column number out of range(David) +Allow UNION in subselects +Add auto-size to screen to \d? commands(Bruce) +Use UNION to show all \d? results in one query(Bruce) +Add \d? field search feature(Bruce) +Pg_dump issues fewer \connect requests(Tom) +Document pg_dump -z flag in manual page(Tom) +Add HAVING clause with full support for subselects and unions(Stephan) +Full text indexing routines in contrib/fulltextindex(Marteen) +Transaction ids now stored in shared memory(Vadim) +New PGCLIENTENCODING when issuing COPY command(Tatsuo) +Support for SQL92 syntax "SET NAMES"(Tatsuo) +Support for LATIN2-5(Tatsuo) +Add UNICODE regression test case(Tatsuo) +Lock manager cleanup, new locking modes for LLL(Vadim) +Allow index use with OR clauses(Bruce) +Allows "SELECT NULL ORDER BY 1;" +Explain VERBOSE prints the plan, and now pretty-prints the plan to +the postmaster log file(Bruce) +Add Indices display to \d command(Bruce) +Allow GROUP BY on functions(David) +New pg_class.relkind for large objects(Bruce) +New way to send libpq NOTICE messages to a different location(Tom) +New \w write command to psql(Bruce) +New /contrib/findoidjoins scans oid columns to find join relationships(Bruce) +Allow binary-compatible indices to be considered when checking for valid +indices for restriction clauses containing a constant(Thomas) +New ISBN/ISSN code in /contrib/isbn_issn +Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas) +New rewrite system fixes many problems with rules and views(Jan) + * Rules on relations work + * Event qualifications on insert/update/delete work + * New OLD variable to reference CURRENT, CURRENT will be remove in future + * Update rules can reference NEW and OLD in rule qualifications/actions + * Insert/update/delete rules on views work + * Multiple rule actions are now supported, surrounded by parentheses + * Regular users can create views/rules on tables they have RULE permits + * Rules and views inherit the permissions on the creator + * No rules at the column level + * No UPDATE NEW/OLD rules + * New pg_rule and pg_view system views + * Only a single action on SELECT rules + * Total rewrite overhaul, perhaps for 6.5 + +System indexes are now multi-key(Bruce) +Oidint2, oidint4, and oidname types are removed(Bruce) +Use system cache for more system table lookups(Bruce) +New backend programming language PL/pgSQL in backend/pl(Jan) +New SERIAL data type, auto-creates sequence/index(Thomas) +Enable assert checking without a recompile(Massimo) +User lock enhancements(Massimo) +New setval() command to set sequence value(Massimo) +Auto-remove unix socket file on startup if no postmaster running(Massimo) +Conditional trace package(Massimo) +New UNLISTEN command(Massimo) +Psql now compiles under win32 using win32.mak(Magnus) +Lo_read no longer stores trailing NULL(Bruce) +Identifiers are now truncated to 31 characters internally(Bruce) Source Tree Changes ------------------- -Add new html development tools, and flow chart in /tools/backend -Fix for SCO compiles -Stratus computer port "Gillies, Robert" <GilliesR@Nichols.com> -Added support for shlib for BSD44_derived & i386_solaris -Make configure more automated(Brook) -Add script to check regression test results -Break parser functions into smaller files, group together(Bruce) -Rename heap_create to heap_create_and_catalog, rename heap_creatr - to heap_create()(Bruce) -Sparc/Linux patch for locking(TomS) -Remove PORTNAME and reorganize port-specific stuff(Marc) -Add optimizer README file(Bruce) -Remove some recursion in optimizer and clean up some code there(Bruce) -Fix for NetBSD locking(Henry) -Fix for libptcl make(Tatsuo) -AIX patch(Darren) -Change IS TRUE, IS FALSE, ... to expressions using "=" rather than - function calls to istrue() or isfalse() to allow optimization(Thomas) -Various fixes NetBSD/Sparc related(TomH) -Alpha linux locking(Travis,Ryan) -Change elog(WARN) to elog(ERROR)(Bruce) -FAQ for FreeBSD(Marc) -Bring in the PostODBC source tree as part of our standard distribution(Marc) -A minor patch for HP/UX 10 vs 9(Stan) -New pg_attribute.atttypmod for type-specific info like varchar length(Bruce) -Unixware patches(Billy) -New i386 'lock' for spin lock asm(Billy) -Support for multiplexed backends is removed -Start an OpenBSD port -Start an AUX port -Start a Cygnus port -Add string functions to regression suite(Thomas) -Expand a few function names formerly truncated to 16 characters(Thomas) -Remove un-needed malloc() calls and replace with palloc()(Bruce) +/contrib cleanup(Jun) +Inline some small functions called for every row(Bruce) +Alpha/linux fixes +Hp/UX cleanups(Tom) +Multi-byte regression tests(Soonmyung.) +Remove --disabled options from configure +Define PGDOC to use POSTGRESDIR by default +Make regression optional +Remove extra braces code to pgindent(Bruce) +Add bsdi shared library support(Bruce) +New --without-CXX support configure option(Brook) +New FAQ_CVS +Update backend flowchart in tools/backend(Bruce) +Change atttypmod from int16 to int32(Bruce, Tom) +Getrusage() fix for platforms that do not have it(Tom) +Add PGUSER to libpq man page +Ns32k platform fixes(Phil Nelson) +Sco 7/UnixWare 2.x fixes(Billy,others) +Sparc/Solaris 2.5 fixes(Ryan) +Pgbuiltin.3 is obsolete, move to doc files(Thomas) +Even more documention(Thomas) diff --git a/doc/bug.template b/doc/bug.template index cd3268e70b0..c6d16522752 100644 --- a/doc/bug.template +++ b/doc/bug.template @@ -27,9 +27,9 @@ System Configuration Operating System (example: Linux 2.0.26 ELF) : - PostgreSQL version (example: PostgreSQL-6.3.2) : PostgreSQL-6.3.2 + PostgreSQL version (example: PostgreSQL-6.4) : PostgreSQL-6.4 - Compiler used (example: gcc 2.7.2) : + Compiler used (example: gcc 2.8.0) : Please enter a FULL description of your problem: |