From bf1dd3ec40ebba17d7d0cefb20e0e493a4456f91 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sat, 5 Jun 1999 03:43:07 +0000 Subject: [PATCH] Update FAQ's for release. --- doc/FAQ | 167 +++++++----- doc/FAQ_DEV | 76 +++++- doc/FAQ_HPUX | 63 ++--- doc/FAQ_Irix | 529 +++----------------------------------- doc/FAQ_Linux | 152 +++++------ doc/TODO | 364 ++++---------------------- doc/src/sgml/release.sgml | 2 + 7 files changed, 382 insertions(+), 971 deletions(-) diff --git a/doc/FAQ b/doc/FAQ index fefd6a55a5..f5c12a6465 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,7 +1,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL - Last updated: Sat Oct 24 00:12:23 EDT 1998 + Last updated: Fri Jun 4 23:30:19 EDT 1999 Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) @@ -9,13 +9,10 @@ postgreSQL Web site, http://postgreSQL.org. Linux-specific questions are answered in - http://postgreSQL.org/docs/faq-linux.shtml. + http://postgreSQL.org/docs/faq-linux.html. Irix-specific questions are answered in - http://postgreSQL.org/docs/faq-irix.shtml. - - HPUX-specific questions are answered in - http://postgreSQL.org/docs/faq-hpux.shtml. + http://postgreSQL.org/docs/faq-irix.html. _________________________________________________________________ General questions @@ -59,8 +56,10 @@ 2.10) All my servers crash under concurrent table access. Why? 2.11) How do I tune the database engine for better performance? 2.12) What debugging features are available in PostgreSQL? - 2.13) How do I enable more than 64 concurrent backends? - 2.14) What non-unix ports are available? + 2.13) When I try to start the postmaster, I get IpcSemaphoreCreate + errors. Why? + 2.14) I get 'Sorry, too many clients' when trying to connect. Why? + 2.15) What non-unix ports are available? Operational questions @@ -70,9 +69,8 @@ 3.4) What is the exact difference between binary cursors and normal cursors? 3.5) What is an R-tree index and what is it used for? - 3.6) What is the maximum size for a tuple? - 3.7) I defined indices but my queries don't seem to make use of them. - Why? + 3.6) What is the maximum size for a row, table, database? + 3.7) My queries are slow or don't make use of the indexes. Why? 3.8) How do I do regular expression searches? case-insensitive regexp searching? 3.9) I experienced a server crash during a vacuum. How do I remove the @@ -240,11 +238,11 @@ Section 1: General Questions http://postgreSQL.org There also an IRC channel on EFNet, channel #PostgreSQL. I use the - unix command irc -c '#PostgreSQL' "$USER" irc.ais.net + unix command irc -c '#PostgreSQL' "$USER" irc.phoenix.net 1.6) Latest release of PostgreSQL - The latest release of PostgreSQL is version 6.4. + The latest release of PostgreSQL is version 6.5. We plan to have major releases every four months. @@ -274,13 +272,12 @@ Section 1: General Questions 1.10) Does PostgreSQL work with databases from earlier versions of PostgreSQL? - Upgrading to 6.4 from release 6.3.* can be accomplished using the new - pg_upgrade utility. Those upgrading from earlier releases require a - dump and restore. + Upgrading to 6.5 can not use the pg_upgrade utility. Those upgrading + from earlier releases require a dump and restore. - Those ugrading from versions earlier than 1.09 must upgrade to 1.09 + Those upgrading from versions earlier than 1.09 must upgrade to 1.09 first without a dump/reload, then dump the data from 1.09, and then - load it into 6.4. + load it into 6.5. 1.11) Are there ODBC drivers for PostgreSQL? @@ -309,14 +306,14 @@ Section 1: General Questions PHP is great for simple stuff, but for more complex stuff, some still use the perl interface and CGI.pm. - An WWW gatway based on WDB using perl can be downloaded from + An WWW gateway based on WDB using perl can be downloaded from http://www.eol.ists.ca/~dunlop/wdb-p95 1.13) Does PostgreSQL have a graphical user interface? A report generator? A embedded query language interface? We have a nice graphical user interface called pgaccess, which is - shipped as part of the distribtion. Pgaccess also has a report + shipped as part of the distribution. Pgaccess also has a report generator. The web page is http://www.flex.ro/pgaccess We also include ecpg, @@ -365,8 +362,9 @@ Section 2: Installation Questions formats. Check your locale configuration. PostgreSQL uses the locale settings - of the user that ran the postmaster process. Set those accordingly for - your operating environment. + of the user that ran the postmaster process. There are postgres and + psql SET commands to control the date format. Set those accordingly + for your operating environment. 2.4) How do I install PostgreSQL somewhere other than /usr/local/pgsql? @@ -384,8 +382,9 @@ Section 2: Installation Questions You either do not have shared memory configured properly in kernel or you need to enlarge the shared memory available in the kernel. The exact amount you need depends on your architecture and how many - buffers you configure postmaster to run with. For most systems, with - default buffer sizes, you need a minimum of ~760K. + buffers and backend processes you configure postmaster to run with. + For most systems, with default numbers of buffers and processes, you + need a minimum of ~1MB. 2.7) I have changed a source file, but a recompile does not see the change? @@ -420,7 +419,7 @@ Section 2: Installation Questions If you are doing a lot of inserts, consider doing them in a large batch using the copy command. This is much faster than single individual inserts. Second, statements not in a begin work/commit - transaction block are considered to be their in their own transaction. + transaction block are considered to be in their own transaction. Consider performing several statements in a single transaction block. This reduces the transaction overhead. Also consider dropping and recreating indices when making large data changes. @@ -436,7 +435,7 @@ Section 2: Installation Questions You can also use the postgres -S option to increase the maximum amount of memory used by each backend process for temporary sorts. Each - buffer is 1K and the defualt is 512 buffers. + buffer is 1K and the default is 512 buffers. You can also use the cluster command to group data in base tables to match an index. See the cluster(l) manual page for more details. @@ -474,7 +473,7 @@ Section 2: Installation Questions operating system can attach to a running backend directly to diagnose problems. - The postgres program has a -s, -A, -t options that can be very usefull + The postgres program has a -s, -A, -t options that can be very useful for debugging and performance measurements. You can also compile with profiling to see what functions are taking @@ -482,25 +481,64 @@ Section 2: Installation Questions pgsql/data/base/dbname directory. The client profile file will be put in the current directory. - 2.13) How do I enable more than 64 concurrent backends? - - Edit include/storage/sinvaladt.h, and change the value of - MaxBackendId. In the future, we plan to make this a configurable - prameter. - - 2.14) What non-unix ports are available? + 2.13) When I try to start the postmaster, I get IpcSemaphoreCreate errors. + Why? + + If the error message is IpcSemaphoreCreate: semget failed (No space + left on device) then your kernel is not configured with enough + semaphores. Postgres needs one semaphore per potential backend + process. A temporary solution is to start the postmaster with a + smaller limit on the number of backend processes. Use -N with a + parameter less than the default of 32. A more permanent solution is to + increase your kernel's SEMMNS and SEMMNI parameters. + + If the error message is something else, you might not have semaphore + support configured in your kernel at all. + + 2.14) I get 'Sorry, too many clients' when trying to connect. Why? + + You need to increase the postmaster's limit on how many concurrent + backend processes it can start. + + In Postgres 6.5, the default limit is 32 processes. You can increase + it by restarting the postmaster with a suitable -N value. With the + default configuration you can set -N as large as 1024; if you need + more, increase MAXBACKENDS in include/config.h and rebuild. You can + set the default value of -N at configuration time, if you like, using + configure's --with-maxbackends switch. + + Note that if you make -N larger than 32, you should consider + increasing -B beyond its default of 64. For large numbers of backend + processes, you are also likely to find that you need to increase + various Unix kernel configuration parameters. Things to check include + the maximum size of shared memory blocks, SHMMAX, the maximum number + of semaphores, SEMMNS and SEMMNI, the maximum number of processes, + NPROC, the maximum number of processes per user, MAXUPRC, and the + maximum number of open files, NFILE and NINODE. The reason that + Postgres has a limit on the number of allowed backend processes is so + that you can ensure that your system won't run out of resources. + + In Postgres versions prior to 6.5, the maximum number of backends was + 64, and changing it required a rebuild after altering the MaxBackendId + constant in include/storage/sinvaladt.h. + + 2.15) What non-unix ports are available? It is possible to compile the libpq C library, psql, and other interfaces and binaries to run on MS Windows platforms. In this case, the client is running on MS Windows, and communicates via TCP/IP to a server running on one of our supported Unix platforms. - A file win32.mak is included in the distributiion for making a Win32 + A file win32.mak is included in the distribution for making a Win32 libpq library and psql. - Someone is attempting to port our PostgreSQL database server to - Windows NT using the Cygnus Unix/NT porting library. He has gotten it - compiled, but initdb is currently failing. + The database server is now working on Windows NT using the Cygnus + Unix/NT porting library. The only feature missing is dynamic loading + of user-defined functions/types. See + http://www.askesis.nl/AskesisPostgresIndex.html for more information. + + There is another port using U/Win at + http://surya.wipro.com/uwin/ported.html. _________________________________________________________________ Section 3: PostgreSQL Features @@ -562,32 +600,42 @@ Section 3: PostgreSQL Features extending R-trees require a bit of work and we don't currently have any documentation on how to do it. - 3.6) What is the maximum size for a tuple? + 3.6) What is the maximum size for a row, table, database? - Tuples are limited to 8K bytes. Taking into account system attributes + Rows are limited to 8K bytes. Taking into account system attributes and other overhead, one should stay well shy of 8,000 bytes to be on the safe side. To use attributes larger than 8K, try using the large objects interface. - Tuples do not cross 8k boundaries so a 5k tuple will require 8k of + Rows do not cross 8k boundaries so a 5k row will require 8k of storage. - 3.7) I defined indices but my queries don't seem to make use of them. Why? + Table and database sizes are unlimited. There are many databases that + are tens of gigabytes, and probably some that are hundreds of + gigabytes. + + 3.7) My queries are slow or don't make use of the indexes. Why? PostgreSQL does not automatically maintain statistics. One has to make an explicit vacuum call to update the statistics. After statistics are updated, the optimizer knows how many rows in the table, and can better decide if it should use indices. Note that the optimizer does - not use indices in cases when the table is small because a sequentail - scan would be faster. For column-specific optimization statistics, use - vacuum analyze. + not use indices in cases when the table is small because a sequential + scan would be faster. + + For column-specific optimization statistics, use vacuum analyze. + Vacuum analyze is important for complex multi-join queries, so the + optimizer can estimate the number of rows returned from each table, + and choose the proper join order. The backend does not keep track of + column statistics on its own, and vacuum analyze must be run to + collect them periodically. Indexes are not used for order by operations. - When using wildcard operators like LIKE or ~, indices can only be used - if the beginning of the search is anchored to the start of the string. - So, to use indices, LIKE searches can should not begin with %, and - ~(regular expression searches) should start with ^. + When using wild-card operators like LIKE or ~, indices can only be + used if the beginning of the search is anchored to the start of the + string. So, to use indices, LIKE searches can should not begin with %, + and ~(regular expression searches) should start with ^. 3.8) How do I do regular expression searches? case-insensitive regexp searching? @@ -606,7 +654,7 @@ Type Internal Name Notes CHAR char 1 character CHAR(#) bpchar blank padded to the specified fixed length VARCHAR(#) varchar size specifies maximum length, no padding -TEXT text length limited only by maximum tuple length +TEXT text length limited only by maximum row length BYTEA bytea variable-length array of bytes You need to use the internal name when doing internal operations. @@ -681,12 +729,15 @@ BYTEA bytea variable-length array of bytes all databases. If you want to change the oid to something else, or if you want to make a copy of the table, with the original oid's, there is no reason you can't do it: - CREATE TABLE new_table (mycol int); - INSERT INTO new_table SELECT oid, mycol FROM old_table; + CREATE TABLE new_table(old_oid oid, mycol int); + SELECT INTO new SELECT old_oid, mycol FROM old; + COPY new TO '/tmp/pgtable'; + DELETE FROM new; + COPY new WITH OIDS FROM '/tmp/pgtable'; - Tids are used to indentify specific physical rows with block and - offset values. Tids change after rows are modified or reloaded. They - are used by index entries to point to physical rows. + Tids are used to identify specific physical rows with block and offset + values. Tids change after rows are modified or reloaded. They are used + by index entries to point to physical rows. 3.18) What is the meaning of some of the terms used in PostgreSQL? @@ -797,10 +848,8 @@ Section 4: Extending PostgreSQL 4.2) I get messages of the type NOTICE:PortalHeapMemoryFree: 0x402251d0 not in alloc set! - You are pfree'ing something that was not palloc'ed. When writing - user-defined functions, do not include the file "libpq-fe.h". Doing so - will cause your palloc to be a malloc instead of a free. Then, when - the backend pfrees the storage, you get the notice message. + You are pfree'ing something that was not palloc'ed. Beware of mixing + malloc/free and palloc/pfree. 4.3) I've written some nifty new types and functions for PostgreSQL. diff --git a/doc/FAQ_DEV b/doc/FAQ_DEV index 8190358b8e..c1f7dcda1e 100644 --- a/doc/FAQ_DEV +++ b/doc/FAQ_DEV @@ -1,7 +1,7 @@ Developer's Frequently Asked Questions (FAQ) for PostgreSQL - Last updated: Fri Oct 2 15:21:32 EDT 1998 + Last updated: Mon Feb 22 17:15:06 EST 1999 Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) @@ -67,7 +67,7 @@ s Third, you need to get mkid from ftp.postgresql.org. By running tools/make_mkid, an archive of source symbols can be created that can - be rapidly queried like grep or edited. + be rapidly queried like grep or edited. Others prefer glimpse. make_diff has tools to create patch diff files that can be applied to the distribution. @@ -105,22 +105,72 @@ s We do this because this allows a consistent way to pass data inside the backend in a flexible way. Every node has a NodeTag which - specifies what type of data is inside the Node. Lists are lists of - Nodes. lfirst(), lnext(), and foreach() are used to get, skip, and - traverse through Lists. + specifies what type of data is inside the Node. Lists are groups of + Nodes chained together as a forward-linked list. + Here are some of the List manipulation commands: + + lfirst(i) + return the data at list element i. + + lnext(i) + return the next list element after i. + + foreach(i, list) + loop through list, assigning each list element to i. It is + important to note that i is a List *, not the data in the List + element. You need to use lfirst(i) to get at the data. Here is + a typical code snipped that loops through a List containing Var + *'s and processes each one: + + + List *i, *list; + + foreach(i, list) + { + Var *var = lfirst(i); + + /* process var here */ + } + + lcons(node, list) + add node to the front of list, or create a new list with node + if list is NIL. + + lappend(list, node) + add node to the end of list. This is more expensive that lcons. + + nconc(list1, list2) + Concat list2 on to the end of list1. + + length(list) + return the length of the list. + + nth(i, list) + return the i'th element in list. + + lconsi, ... + There are integer versions of these: lconsi, lappendi, nthi. + List's containing integers instead of Node pointers are used to + hold list of relation object id's and other integer quantities. + You can print nodes easily inside gdb. First, to disable output - truncation: + truncation when you use the gdb print command: (gdb) set print elements 0 - You may then use either of the next two commands to print out List, - Node, and structure contents. The first prints in a short format, and - the second in a long format: + Instead of printing values in gdb format, you can use the next two + commands to print out List, Node, and structure contents in a verbose + format that is easier to understand. List's are unrolled into nodes, + and nodes are printed in detail. The first prints in a short format, + and the second in a long format: (gdb) call print(any_pointer) (gdb) call pprint(any_pointer) + The output appears in the postmaster log file, or on your screen if + you are running a backend directly without a postmaster. + 5) How do I add a feature or fix a bug? The source code is over 250,000 lines. Many problems/features are @@ -197,7 +247,7 @@ s } NameData; typedef NameData *Name; - Table, column, type, function, and view names that come in to the + Table, column, type, function, and view names that come into the backend via user queries are stored as variable-length, null-terminated character strings. @@ -244,12 +294,12 @@ s While scans automatically lock/unlock rows from the buffer cache, with heap_fetch(), you must pass a Buffer pointer, and ReleaseBuffer() it when completed. Once you have the row, you can get data that is common - to all tuples, like t_ctid and t_oid, by mererly accessing the + to all tuples, like t_self and t_oid, by mererly accessing the HeapTuple structure entries. If you need a table-specific column, you should take the HeapTuple pointer, and use the GETSTRUCT() macro to access the table-specific start of the tuple. You then cast the pointer as a Form_pg_proc pointer if you are accessing the pg_proc - table, or TypeTupleForm if you are accessing pg_type. You can then + table, or Form_pg_type if you are accessing pg_type. You can then access the columns by using a structure pointer: ((Form_pg_class) GETSTRUCT(tuple))->relnatts @@ -258,7 +308,7 @@ s is to use heap_tuplemodify() and pass it your palloc'ed tuple, and the values you want changed. It returns another palloc'ed tuple, which you pass to heap_replace(). You can delete tuples by passing the tuple's - t_ctid to heap_destroy(). Remember, tuples can be either system cache + t_self to heap_destroy(). Remember, tuples can be either system cache versions, which may go away soon after you get them, buffer cache version, which will go away when you heap_getnext(), heap_endscan, or ReleaseBuffer(), in the heap_fetch() case. Or it may be a palloc'ed diff --git a/doc/FAQ_HPUX b/doc/FAQ_HPUX index ecd4270871..4789c65e1d 100644 --- a/doc/FAQ_HPUX +++ b/doc/FAQ_HPUX @@ -1,3 +1,4 @@ + ======================================================= Frequently Asked Questions (FAQ) for PostgreSQL V6.4 HP-UX Specific @@ -10,19 +11,19 @@ original author: Tom Lane (tgl@sss.pgh.pa.us) Questions covered here: -1.1) What do I need to install PostgreSQL on HP-UX? -1.2) Anything special about the build/install procedure? -1.3) yacc dies trying to process src/backend/parser/gram.y. -1.4) Linking the main postgres executable fails, complaining that - there's no "alloca" function. -1.5) OK, it seemed to build and install, but the regression test fails. +1.1) What do I need to install PostgreSQL on HP-UX? +1.2) Anything special about the build/install procedure? +1.3) yacc dies trying to process src/backend/parser/gram.y. +1.4) Linking the main postgres executable fails, complaining that + there's no "alloca" function. +1.5) OK, it seemed to build and install, but the regression test fails. ---------------------------------------------------------------------- Section 1: Installing PostgreSQL ---------------------------------------------------------------------- -1.1) What do I need to install PostgreSQL on HP-UX? +1.1) What do I need to install PostgreSQL on HP-UX? PostgreSQL 6.4 is known to build and pass regression test on HPUX 9.03, 9.05, and 10.20, given appropriate system patch levels and build tools. @@ -53,14 +54,14 @@ install on HPUX, so I recommend you not bother with anything older than 6.4. -1.2) Anything special about the build/install procedure? +1.2) Anything special about the build/install procedure? When you run configure, you will want to explicitly select either the hpux_cc or hpux_gcc template depending on which compiler you plan to use: - ./configure --with-template=hpux_cc + ./configure --with-template=hpux_cc for HP's C compiler, or - ./configure --with-template=hpux_gcc + ./configure --with-template=hpux_gcc for GNU gcc. (If you omit --with-template, configure may either default to hpux_cc or give up entirely, depending on which HPUX and PostgreSQL releases you have.) @@ -86,7 +87,7 @@ Otherwise the standard build/install procedure described in the PostgreSQL documentation works fine. -1.3) yacc dies trying to process src/backend/parser/gram.y. +1.3) yacc dies trying to process src/backend/parser/gram.y. HP's yacc doesn't create its tables large enough to handle the Postgres grammar (a lot of other vendors' yaccs have this problem too). There @@ -106,15 +107,15 @@ are using HP's cc on HPUX 9 --- see next item. 3. Increase yacc's table sizes enough to cope. With a pre-6.4 PostgreSQL grammar, I was able to get HPUX 9's yacc to work by setting YFLAGS to - -d -Np2000 -Ns3000 -Nm100000 -Nl2000 -Na30000 -Nc10000 + -d -Np2000 -Ns3000 -Nm100000 -Nl2000 -Na30000 -Nc10000 (You can edit YFLAGS either in the template file before running configure, or in src/Makefile.global afterwards.) Future PostgreSQL releases might require even larger tables, but this should do for a starting point. -1.4) Linking the main postgres executable fails, complaining that - there's no "alloca" function. +1.4) Linking the main postgres executable fails, complaining that + there's no "alloca" function. If you're using HP's cc on HPUX 9, it's right: there's no alloca function. The only place in PostgreSQL that uses alloca is the parser @@ -131,7 +132,7 @@ There are several possible answers: before Y2K anyway... -1.5) OK, it seemed to build and install, but the regression test fails. +1.5) OK, it seemed to build and install, but the regression test fails. There are several "expected failures" due to differences between HPUX and the regression test reference platform used by the PostgreSQL group. @@ -139,26 +140,26 @@ A look at the textual differences between the expected and actual outputs will usually reveal that the differences are minor. You should expect these differences: -TEST(S) COMMENTS +TEST(S) COMMENTS -int2, int4: pg_atoi generates a differently worded error - message for integer overflow. +int2, int4: pg_atoi generates a differently worded error + message for integer overflow. -float8: In 6.4, float8 shows some differences due to - different handling of overflow/underflow errors in - exp() and pow(). This should be fixed in 6.4.1 - and later. +float8: In 6.4, float8 shows some differences due to + different handling of overflow/underflow errors in + exp() and pow(). This should be fixed in 6.4.1 + and later. -float8, geometry: Lots of differences in the last digit or two - because of different roundoff errors in floating - arithmetic. Also, HPUX does not distinguish - -0 from 0 during printout, but the reference - platform does. +float8, geometry: Lots of differences in the last digit or two + because of different roundoff errors in floating + arithmetic. Also, HPUX does not distinguish + -0 from 0 during printout, but the reference + platform does. -horology: HPUX time library does not know about daylight - savings time before 1970, so there are some - places in horology where a time will be shown - in PST instead of PDT. +horology: HPUX time library does not know about daylight + savings time before 1970, so there are some + places in horology where a time will be shown + in PST instead of PDT. In addition, the int8 regression test will fail massively on HPUX 9, because int8 doesn't actually work on this platform (sprintf/sscanf diff --git a/doc/FAQ_Irix b/doc/FAQ_Irix index c87306477b..958a5152ca 100644 --- a/doc/FAQ_Irix +++ b/doc/FAQ_Irix @@ -1,490 +1,41 @@ -====================================================== -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 () - -*** ./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 - -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 and modified for - PostgreSQL V6.3 by Lasse Hiller Petersen ) - - 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 +Documentation and FAQs + _________________________________________________________________ + +User + + * Tutorial - for those not familiar with PostgreSQL + * User's Guide - general user information (download) + * Administrator's Guide - help in installing and managing PostgreSQL + (download) + * Programmer's Guide - for those programming in PostgreSQL, using + various interfaces (download) + * Integrated Document (includes others above) - for those + programming in PostgreSQL, using various interfaces (download) + * Appendices + * FAQ (Frequently Asked Questions) + + English + + Japanese + + Korean by Jung Jik Han + * Platform-specific FAQ's + + Linux + o English by Andrew Martin + o Japanese by Jun Kuwamura + o Korean by Jung Jik Han + o Italian by Daniele Medri + + Irix + + HP-UX + * HISTORY file showing changes in each release. + * TODO list showing our future plans. + +Developers + + * How PostgreSQL Processes a Query - a guide to all modules and + directories, including a flowchart + * Developer's FAQ + + English by Bruce Momjian + + Korean by Jung Jik Han + * Developer's Guide - for contributing to the PostgreSQL + distribution + * CVS/CVSUP FAQ access to source code + * History of PostgreSQL Development diff --git a/doc/FAQ_Linux b/doc/FAQ_Linux index e6a3ef2090..d2cbdf2a6f 100644 --- a/doc/FAQ_Linux +++ b/doc/FAQ_Linux @@ -1,3 +1,4 @@ + ======================================================= Frequently Asked Questions (FAQ) for PostgreSQL >= V6.1 Linux Specific @@ -46,7 +47,8 @@ Questions answered: 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' + /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bi +t' .... make: *** [ipc.o] Error 1 1.17) When compiling postgres, gcc reports signal 11 and aborts. @@ -60,9 +62,9 @@ Questions answered: 1.23) Why does the compile fail with messages about F_BOOLIN, F_BOOLOUT and F_BYTEAIN being undeclared? 2.1) The linker fails to find libX11 when compiling pgtclsh -3.1) I get an error reporting _fUnKy_POSTPORT_sTuFf_ undefined when +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 +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: @@ -93,15 +95,15 @@ 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 + 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. + Makefile.custom for you. - The only other change you may have to make is to replace + 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 + If you modify the makefiles by hand, you *must* set the following variable: PORTNAME= linux @@ -130,7 +132,7 @@ Section 1: Compiling PostgreSQL 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 @@ -139,7 +141,7 @@ Section 1: Compiling PostgreSQL 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 + in src/Makefile.global or src/Makefile.custom or install the GNU readline library. Note that Debian Linux (like FreeBSD) does come with readline @@ -159,7 +161,8 @@ Section 1: Compiling PostgreSQL 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 + 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! @@ -168,17 +171,17 @@ Section 1: Compiling PostgreSQL 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 + 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 + 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 + 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. @@ -192,15 +195,15 @@ Section 1: Compiling PostgreSQL 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 + 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 + 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 + 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! @@ -242,7 +245,7 @@ Section 1: Compiling PostgreSQL after installing the library and before recompiling. -1.5) My compile of the backend dies complaining about the include file +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 @@ -254,15 +257,15 @@ Section 1: Compiling PostgreSQL 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 + 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 + You can correct this by editing src/Makefile.global and changing CFLAGS_SL -1.7) I get warnings of the form +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 @@ -273,12 +276,12 @@ Section 1: Compiling PostgreSQL 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 + 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 + 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: @@ -301,11 +304,11 @@ Section 1: Compiling PostgreSQL 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 + (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 + to force use of ncurses rather than curses by changing -lcurses to -lncurses. (Reported true for SuSE 5.1) @@ -347,7 +350,7 @@ Section 1: Compiling PostgreSQL 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 + 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 @@ -359,14 +362,14 @@ Section 1: Compiling PostgreSQL 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). + 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 + (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). @@ -381,9 +384,9 @@ Section 1: Compiling PostgreSQL 1.15) [REDHAT] Can I get PostgreSQL as an RPM? - Yes! Michal Mosiewicz + Yes! Michal Mosiewicz (http://www.pdi.lodz.pl/~mimo) has kindly put together an RPM - for PostgreSQL V6.0 on Intel architectures which he has uploaded to + 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 @@ -393,12 +396,13 @@ Section 1: Compiling PostgreSQL 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' + /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bi +t' .... make: *** [ipc.o] Error 1 The problem is that Linux provides no prototypes for these - inline functions. The solution is to go into the + inline functions. The solution is to go into the .../src/backend/storage/ipc directory and edit the Makefile. Change the line CFLAGS+=$(INCLUDE_OPT) @@ -409,12 +413,12 @@ Section 1: Compiling PostgreSQL 1.17) When compiling postgres, gcc reports signal 11 and aborts. More specifically: - gcc: Internal compiler error: program cc1 got fatal + 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 + 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 @@ -429,7 +433,7 @@ Section 1: Compiling PostgreSQL 1.18) Can I install 6.1.1 under MkLinux? - Tatsuo Ishii has done this under + Tatsuo Ishii 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 @@ -437,9 +441,9 @@ Section 1: Compiling PostgreSQL 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. + 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 + 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 @@ -462,16 +466,16 @@ Section 1: Compiling PostgreSQL instead of '5 hours' This is a problem with the glibc2 library which comes with - Redhat 5.0. Update your glibc to the latest RedHat version - for v5.0/hurricane. Anything prior to glibc-2.0.7 is likely + Redhat 5.0. Update your glibc to the latest RedHat version + for v5.0/hurricane. Anything prior to glibc-2.0.7 is likely to have the problem. - + 1.22) Why don't I get any shared libraries for libpq when I compile 6.3.2? There was some last minute breakage of the Linux configuration for v6.3.2. Look in ftp://postgresql.org/pub/patches/ for a few fix-ups, - including a linux_elf patch. + including a linux_elf patch. 1.23) Why does the compile fail with messages about F_BOOLIN, F_BOOLOUT and F_BYTEAIN being undeclared? @@ -490,11 +494,11 @@ Section 1: Compiling PostgreSQL bootstrap.c:161: initializer element for `Procid[1].inproc' is not constant - This is tricky unless you know why it happens, as these constants + This is tricky unless you know why it happens, as these constants don't seem to be defined anywhere. - The solution is to make sure that cpp is included in your path - before you start the make. + The solution is to make sure that cpp is included in your path + before you start the make. On Redhat 5.1, cpp is in /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3 @@ -514,28 +518,28 @@ Section 2: Compiling accessory programs Section 3: Runtime Problems ---------------------------------------------------------------------- -3.1) I get an error reporting _fUnKy_POSTPORT_sTuFf_ undefined when +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 +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 + 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: + 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. + Your permissions on the file /dev/null are wrong. ls -l /dev/null should give you something like: @@ -547,7 +551,7 @@ Section 3: Runtime Problems 3.4) Why doesn't createuser work? - There is a problem with Version 2.5.3 of GNU flex and createuser. + 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 @@ -564,21 +568,21 @@ Section 3: Runtime Problems 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. + 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 + 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 + 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: @@ -595,13 +599,13 @@ Section 3: Runtime Problems 3.7) Other strange behaviour - I'm not sure what the symptoms might be except for nothing + 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 + 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 @@ -614,13 +618,13 @@ Section 3: Runtime Problems 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 + 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 - which you should modify as needed: + Here's another sample file supplied by John Robinson + which you should modify as needed: #!/bin/sh # @@ -644,7 +648,8 @@ case "$1" in 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 &" + su postgres -c "/usr/local/pgsql/bin/postmaster -D /home/postgr +eSQL/data -p 5432 &" echo -n " postmaster" else echo -n " (already running)" @@ -673,7 +678,7 @@ exit 0 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 ): + (information from Tatsuo Ishii ): 1. change following in regress.sh: time postgres -texecutor -tplanner -Q bench < bench.sql @@ -682,7 +687,8 @@ exit 0 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 + 85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata + 0maxresident)k then type: sh ./perquery < bench.out > & bench.out.perquery @@ -693,8 +699,10 @@ exit 0 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. + You are running the new glibc2 libraries and have a version earlier tha +n + 2.0.7. It is a math rounding problem in the library. Upgrade your libra +ry. ---------------------------------------------------------------------------- Dr. Andrew C.R. Martin University College London EMAIL: (Work) martin@biochem.ucl.ac.uk (Home) andrew@stagleys.demon.co.uk diff --git a/doc/TODO b/doc/TODO index 2e93dce28b..a478a0427d 100644 --- a/doc/TODO +++ b/doc/TODO @@ -1,14 +1,12 @@ TODO list for PostgreSQL ======================== -Last updated: Fri Nov 6 22:17:33 EST 1998 +Last updated: Fri Jun 4 23:16:01 EDT 1999 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.4 APPEAR AT THE END OF THIS DOCUMENT - A dash(-) marks changes to be in the next release. Developers who have claimed items are: @@ -18,180 +16,131 @@ Developers who have claimed items are: * Bruce is Bruce Momjian * Bryan is Bryan Henderson * D'Arcy is D'Arcy J.M. Cain - * Dan is Dan McGuirk - * Darren is Darren King * David is David Hartwig * Edmund is Edmund Mergl - * Goran is Goran Thyni - * Henry is Henry B. Hotz + * Goran is Goran Thyni * Jan is Jan Wieck - * Jun is Jun Kuwamura - * Maarten is Maarten Boekhold * Marc is Marc Fournier - * Martin is Martin S. Utesch * Massimo Dal Zotto * Michael is Michael Meskes * Oleg is Oleg Bartunov - * Paul is Paul M. Aoki * Peter is Peter T Mount - * Phil is Phil Thompson - * Ryan is Ryan Kirkpatrick - * Soo-Ho Ok * Stefan Simkovics - * Sven is Sven Verdoolaege * Tatsuo is Tatsuo Ishii * Tom is Tom Lane - * Thomas is Thomas Lockhart + * Thomas is Thomas Lockhart * TomH is Tom I Helbekkmo - * Vadim is "Vadim B. Mikheev" -Additional 6.4 developers include: ---------------------------------- - * Jun Kuwamura - * Zeugswetter Andreas SARZ - * Soonmyung. Hong - * Anders Hammarquist - * Jeroen van Vianen - * Aldrin L. - * Pascal ANDRE - * Magnus Hagander - * Robert Bruccoleri - * Paul A Vixie - * Jacek Lasecki + * Vadim is "Vadim B. Mikheev" RELIABILITY ----------- * Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup * Overhaul bufmgr/lockmgr/transaction manager * Remove EXTEND? -* 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 {} -* GROUP BY in INSERT INTO table SELECT * FROM table2 fails -* Prevent auto-table reference, like SELECT table.col WHERE col = 3 (?) -* SELECT * FROM table WHERE int4_column = '1' fails +* Two and three dimensional arrays display improperly, missing {} * SELECT a[1] FROM test fails, it needs test.a[1] * UPDATE table SET table.value = 3 fails * 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) * views on subselects fail * 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; * views containing aggregates sometimes fail(Jan) +* ALTER TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT +* array index references without table name cause problems +* views with spaces in view name fail when referenced +* plpgsql does not handle quoted mixed-case identifiers +* do not allow bpchar column creation without length +* INSERT INTO ... SELECT with AS columns matching result columns problem + ENHANCEMENTS ------------ -* Replace table-level locking with row or page-level locking(Vadim) -* Add SERIAL type * Transaction log, so re-do log can be on a separate disk * Allow transaction commits with rollback with no-fsync performance * More access control over who can create tables and access the database * Add full ANSI SQL capabilities - * add OUTER joins, left and right (Thomas) - * add INTERSECTS, SUBTRACTS(Stephan) - * add temporary tables + * add OUTER joins, left and right(Thomas) * add sql3 recursive unions * add the concept of dataspaces - * add DECIMAL, NUMERIC, DOUBLE PRECISION, BIT, BIT VARYING + * add 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) - * 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(Peter) + * Fix large object mapping scheme, own typeid or 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) -* Add REGEX internationalization * allow row re-use without vacuum, maybe?(Vadim) -* Add word index for text fields, maybe with trigrams, i.e.: - * ' (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 -* Add syslog functionality(Marc) +* Add ALTER TABLE DROP/ALTER COLUMN feature +* Add syslog functionality * Add STDDEV/VARIANCE() function for standard deviation computation/variance * add UNIQUE capability to non-btree indexes -* make number of backends a config parameter, storage/sinvaladt.h:MaxBackendId * certain indexes will not shrink, i.e. oid indexes with many inserts * make NULL's come out at the beginning or end depending on the ORDER BY direction -* change the library/backend interface to use network byte order * Restore unused oid's on backend exit if no one else has gotten oids -* remove non-standard types from the system, and make them loadable * have UPDATE/DELETE clean out indexes * allow WHERE restriction on ctid * allow pg_descriptions when creating types, tables, columns, and functions -* Fix compile and security of Kerberos/GSSAPI code * Allow psql to print nulls as distinct from ""(?) -* Allow variable casts with BETWEEN 'today'::asbtime AND 'today'::abstime -* Allow INSERT INTO ... SELECT ... FROM view to work -* Make VACUUM on database not lock pg_class -* Make VACUUM ANALYZE only use a readlock * 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 DISTINCT on views * Allow views of aggregate columns -* Allow variable block sizes(Darren) -* System tables are now more update-able from SQL(Jan) -* New pg_shadow file, pg_user is now a view of pg_shadow(Jan) * Allow flag to control COPY input/output of NULLs * Allow CLUSTER on all tables at once, and improve CLUSTER -* Change all references of Postgres to PostgreSQL, including binary names -* Add ELOG_TIMESTAMPS to elog()(?) -* Change LOCK tablename to LOCK TABLE tablename(?) -* Allow max tuple length to be changed(Darren) -* Have psql with no database name not connect to username as default(?) +* Allow elog() to return error codes, not just messages +* allow international error message support and add error codes * Allow subqueries in target list -* 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 * do autocommit so always in a transaction block * add SIMILAR TO to allow character classes, 'pg_[a-c]%' -* allow function isnull(val,'string') to return string if value is null -* multi-verion concurrency control(Vadim) * improve reporting of syntax errors by showing location of error in query -* allow chaining of pages to allow >8k tuples -* no min/max for oid type -* remove un-needed conversion functions +* allow chaining of pages to allow >8k tuples, auto-large object use * redesign the function call interface to handle NULLs better(Jan) +* permissions on indexes - prevent them? +* document/trigger/rule so changes to pg_shadow create pg_pwd +* generate postmaster pid file and remove flock/fcntl lock code +* add ability to specifiy location of lock/socket files +* auto-destroy sequence on DROP of table with SERIAL +* make a separate serial type? +* allow user to define char1 column +* allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison +* allow INSERT/UPDATE of system-generated oid value for a row +* missing optimizer selectivities for date, etc. +* Add support for & operator +* store binary-compatible type information in the system +* Allow ESCAPE '\' at the end of LIKE for ANSI compliance +* rewrite the LIKE handling by rewriting the user string with the + supplied ESCAPE +* Fix memory leak for expressions?, aggregates? +* Allow Subplans to use efficient joins(hash, merge) with upper variable +* Update reltuples from COPY command +* Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops) + fails index can't store constant parameters +* allow SQL function indexes +* ALTER TABLE ADD COLUMN to inherited table put column in wrong place +* Add IPv6 capability to INET/CIDR types +* Allow PQrequestCancel() to terminate when in waiting-for-lock state +* Increase identifier length(NAMEDATALEN) if small performance hit +* Fix for long table/column name auto-sequence serial name + PERFORMANCE ----------- * Use indexes in ORDER BY for restrictive data sets, min(), max() -* Allow LIMIT ability on single-table queries that have no ORDER BY or +* Allow LIMIT ability on single-table queries that have no ORDER BY to use a matching index * Pull requested data directly from indexes, bypassing heap data -* Prevent psort() usage when query already using index matching ORDER BY -* Optimizing disjunctive queries -* Fix bushy-plans * 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 @@ -199,223 +148,24 @@ PERFORMANCE * Add FILLFACTOR to index creation * 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() -* Add base table name to \d index * Allow char() not to use variable-sized header to reduce disk size * Do async I/O to do better read-ahead of data -* Fix optmizer problem with self-table joins * Fix memory exhaustion when using many OR's -* Use spin locks only on multi-CPU systems, yield CPU instead * Get faster regex() code from Henry Spencer 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 * use index with constants on functions +* process const = const parts of OR clause in separate pass +* make oid use oidin/oidout not int4in/int4out in pg_type.h +* make oid use unsigned int more reliably, pg_atoi() +* create more system table indexes for faster cache lookups +* Move LIKE index optimization handling to the optimizer +* Improve LIMIT processing by using index to limit rows processed +* Improve Subplan list handling + DOCUMENTATION ------------- -* Update usermanual source(many) -* added features used in grammer but not in docs, like :: and CAST -* Add keyword list to documentation, already in /tools -* Add 'man pgsql' to show all manual page names * Add use of 'const' for varibles in source tree - - -============================================================================= - -CHANGES IN THE 6.4 RELEASE --------------------------- - -Bug Fixes ---------- -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) -Reduced busywaiting overhead for spinlocks with many backends (dg) -Stuck spinlock detection (dg) -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 shared invalidation cache overflow(Massimo) -Prevent file descriptor leaks in failed COPY's(Bruce) -Fix memory leak in libpgtcl's pg_select(Constantin) -Fix problems with username/passwords over 8 characters(Tom) -Fix problems with handling of asynchronous NOTIFY in backend(Tom) -Fix of many bad system table entries(Tom) - -Enhancements ------------- -Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael) -Show the index used in an EXPLAIN(Zeugswetter) -EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan) -Multi-byte awareness of many data types and functions, via configure(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) -Libpq users need not issue dummy queries to get NOTIFY messages(Tom) -NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom) -PGresult struct now includes associated error message, if any(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 handles NOTIFY as a Tcl event, need not send dummy queries(Tom) -libpgtcl cleanups(Tom) -Add -error option to libpgtcl's pg_result command(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 -New 8-byte integer type, checked by configure for OS support(Thomas) -Better support for quoted table/column names(Thomas) -Surround table and column names with double-quotes in pg_dump(Thomas) -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) -Make pg_dump -z flag work better, document it in manual page(Tom) -Add HAVING clause with full support for subselects and unions(Stephan) -Full text indexing routines in contrib/fulltextindex(Maarten) -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_tables, pg_indexes, pg_rules and pg_views system views - * Only a single action on SELECT rules - * Total rewrite overhaul, perhaps for 6.5 - * handle subselects - * handle aggregates on views - * handle insert into select from view works -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 and libpq now compile under win32 using win32.mak(Magnus) -Lo_read no longer stores trailing NULL(Bruce) -Identifiers are now truncated to 31 characters internally(Bruce) -Createuser options now availble on the command line -Code for 64-bit integer supported added, configure tested, int8 type(Thomas) -Prevent file descriptor leaf from failed COPY(Bruce) -New pg_upgrade command(Bruce) -Updated /contrib directories(Massimo) -New CREATE TABLE DEFAULT VALUES statement available(Thomas) -New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas) -New DECLARE and FETCH feature(Thomas) -libpq's internal structures now not exported(Tom) -Allow up to 8 key indexes(Bruce) -Remove ARCHIVE keyword, that is no longer used(Thomas) -pg_dump -n flag to supress quotes around indentifiers -disable system columns for views(Jan) -new INET and CIDR types for network addresses(TomH, Paul) -no more double quotes in psql output -pg_dump now dumps views(Terry) -new SET QUERY_LIMIT(Tatsuo,Jan) - -Source Tree Changes -------------------- -/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 PQconnectdb, PGUSER, PGPASSWORD to libpq man page -NS32K platform fixes(Phil Nelson, John Buller) -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) -Nextstep support(Jacek) -Aix support(David) -pginterface manual page(Bruce) -shared libraries all have version numbers -merged all OS-specific shared library defines into one file -smarter TCL/TK configuration checking(Billy) -smarter perl configuration(Brook) -configure uses supplied install-sh if no install script found(Tom) -new Makefile.shlib for shared library configuration(Tom) diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 312fccbefb..3663184162 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -280,6 +280,8 @@ Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan) Fix for computations in views(Jan) Fix for aggregates on array indexes(Tom) Fix for DEFAULT handles single quotes in value requiring too many quotes +Fix security problem with non-super users importing/exporting large objects(Tom) +Rollback of transaction that creates table cleaned up properly(Tom) Enhancements ------------ -- GitLab