Update FAQ's for release.

This commit is contained in:
Bruce Momjian 1999-06-05 03:43:07 +00:00
parent bafe9e500d
commit bf1dd3ec40
7 changed files with 380 additions and 969 deletions

163
doc/FAQ
View File

@ -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?
2.13) When I try to start the postmaster, I get IpcSemaphoreCreate errors.
Why?
Edit include/storage/sinvaladt.h, and change the value of
MaxBackendId. In the future, we plan to make this a configurable
prameter.
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.
2.14) What non-unix ports are available?
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.

View File

@ -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

View File

@ -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

View File

@ -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 (<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
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

View File

@ -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 <mimo@lodz.pdi.net>
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 <t-ishii@sra.co.jp> 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
<john@intelligent.co.uk> 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 <t-ishii@sra.co.jp>):
(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

364
doc/TODO
View File

@ -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<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>
* Darren is Darren King <darrenk@insightdist.com>
* David is David Hartwig <daveh@insightdist.com>
* Edmund is Edmund Mergl <E.Mergl@bawue.de>
* Goran is Goran Thyni <goran@bildbasen.se>
* Henry is Henry B. Hotz <hotz@jpl.nasa.gov>
* Goran is Goran Thyni <goran@kyla.kiruna.se>
* Jan is Jan Wieck <wieck@sapserv.debis.de>
* Jun is Jun Kuwamura <juk@rccm.co.jp>
* 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>
* Peter is Peter T Mount <peter@retep.org.uk>
* Phil is Phil Thompson <phil@river-bank.demon.co.uk>
* 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>
* Tom is Tom Lane <tgl@sss.pgh.pa.us>
* Thomas is Thomas Lockhart <tgl@mythos.jpl.nasa.gov>
* Thomas is Thomas Lockhart <lockhart@alumni.caltech.edu>
* TomH is Tom I Helbekkmo <tih@Hamartun.Priv.NO>
* Vadim is "Vadim B. Mikheev" <vadim@sable.krasnoyarsk.su>
Additional 6.4 developers include:
---------------------------------
* 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>
* Robert Bruccoleri <bruc@pluto.njcc.com>
* Paul A Vixie <paul@vix.com>
* Jacek Lasecki <jacek@sound.eti.pg.gda.pl>
* Vadim is "Vadim B. Mikheev" <vadim@krs.ru>
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 <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
* 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)

View File

@ -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
------------