Update HISTORY file for 7.0.

This commit is contained in:
Bruce Momjian 2000-03-23 06:30:58 +00:00
parent 5ca8eb9216
commit b508136d81
6 changed files with 610 additions and 122 deletions

153
HISTORY
View File

@ -1,56 +1,41 @@
Chapter 0. Release Notes
Table of Contents
Release 7.0
Release 6.5.3
Release 6.5.2
Release 6.5.1
Release 6.5
Release 6.4.2
Release 6.4.1
Release 6.4
Release 6.3.2
Release 6.3.1
Release 6.3
Release 6.2.1
Release 6.2
Release 6.1.1
Release 6.1
Release v6.0
Release v1.09
Release v1.02
Release v1.01
Release v1.0
Postgres95 Beta 0.03
Postgres95 Beta 0.02
Postgres95 Beta 0.01
Timing Results
------------------------------------------------------------------------
Release Notes
------------------------------------------------------------------------
Release 7.0
-----------
This release shows the continued growth of PostgreSQL. There are more
updated items in 7.0 than in any previous release. Don't be concerned
this is a dot-zero release. PostgreSQL does its best to put
out only solid releases, and this one is no exception.
This release shows the continued growth of PostgreSQL. There are more
changes in 7.0 than in any previous release. Don't be concerned this
is a dot-zero release. We do our best to put out only solid releases,
and this one is no exception.
Major changes in this release:
Foreign Keys
Foreign keys are now implemented, with the exception of PARTIAL
MATCH foreign keys. Many users have been asking for this
feature, and we are pleased to offer it.
Optimizer Overhaul
Continuing on work started a year ago, the optimizer has been
overhauled, allowing improved query execution and better
performance with less memory usage.
Updated psql
psql, our interactive terminal monitor, has been updated with a
variety of new features. See the psql manual page for details.
Upcoming Features
In 7.1, we plan to have outer joins, storage for very long
rows, and a write-ahead logging system.
Migration to v7.0
Foreign Keys: Foreign keys are now implemented, with the exception of
PARTIAL MATCH foreign keys. Many users have been asking for this
feature, and we are pleased to finally offer it.
Optimizer Overhaul: Continuing on work started a year ago, the
optimizer has been overhauled in many significant ways, allowing better
query execution processing with faster performance and less memory
usage.
Updated psql: psql, our interactive terminal monitor, has been updated,
with a variety of new features. See the psql manual page for the details.
Upcoming Features: In 7.1, we plan to have outer joins, storage for very long
rows, and a write-ahead logging system.
A dump/restore using pg_dump is required for those wishing to migrate
data from any previous release. For those upgrading from 6.5.*, you
can use pg_upgrade to upgrade to this release.
Detailed Change List
Bug Fixes
---------
@ -58,7 +43,6 @@ Prevent function calls with more than maximum number of arguments (Tom)
Many fixes for CASE (Tom)
Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
Allow utility statements in plpgsql (Tom)
Fix GROUP BY scan bug (Tom)
Improvements in SQL grammar processing (Tom)
Fix for views involved in INSERT ... SELECT ... (Tom)
@ -67,9 +51,9 @@ Fix for subselects in INSERT ... SELECT (Tom)
Prevent INSERT ... SELECT ... ORDER BY (Tom)
Fixes for relations greater than 2GB, including vacuum
Improve communication of system table changes to other running backends (Tom)
Improve communication of user table modifications to other running backends (Tom)
Improve communication of user table modifications to other running backends (To
m)
Fix handling of temp tables in complex situations (Bruce, Tom)
Disallow DROP TABLE/DROP INDEX inside a transaction block
Allow table locking when tables opened, improving concurrent reliability (Tom)
Properly quote sequence names in pg_dump (Ross J. Reedstrom)
Prevent DESTROY DATABASE while others accessing
@ -110,6 +94,12 @@ Fix for spinlock stuck problem when error is generated (Hiroshi)
Fix ipcclean on Linux
Fix handling of NULL constraint conditions (Tom)
Fix memory leak in odbc driver (Nick Gorham)
Fix for permission check on UNION tables (Tom)
Fix to allow SELECT 'a' LIKE 'a' (Tom)
Fix for SELECT 1 + NULL (Tom)
Fixes to CHAR
Fix log() on numeric type (Tom)
Remove ':' and ';' operators
Enhancements
------------
@ -123,8 +113,8 @@ Issue ecpg error if NULL value is returned to variable with no NULL
indicator (Christof)
Allow ^C to cancel COPY command (Massimo)
Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
Improve CREATE FUNCTION to allow type conversion specification
(Bernie Frankpitt)
Improve CREATE FUNCTION to allow type conversion specification
(Bernie Frankpitt)
Add CmdTuples() to libpq++(Vince)
New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
Allow CREATE FUNCTION WITH clause to be used for all language types
@ -133,12 +123,12 @@ configure --disable-debug removes -g (Peter E)
Allow more complex default expressions (Tom)
First real FOREIGN KEY constraint trigger functionality (Jan)
Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
Add FOREIGN KEY ... MATCH referential actions (Don Baccus)
Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
Add DEC and SESSION_USER as reserved words
Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
Add Oracle's COMMENT ON command (Mike Mascari <mascarim@yahoo.
Add Oracle's COMMENT ON command (Mike Mascari yahoo.
libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
Make USING in COPY optional (Bruce)
@ -151,8 +141,8 @@ Added psql LastOid variable to return last inserted oid (Peter E)
Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
Add permissions check so only Postgres superuser or table owner can
vacuum (Peter E)
New libpq functions to allow asynchronous connections: PQconnectStart(),
PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
New libpq functions to allow asynchronous connections: PQconnectStart(),
PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
New libpq PQsetenv() function (Ewan Mellor)
create/alter user extension (Peter E)
@ -170,8 +160,8 @@ Add CREATE/ALTER/DROP GROUP (Peter E)
All administration scripts now support --long options (Peter E, Karel)
Vacuumdb script now supports --alldb option (Peter E)
ecpg new portable FETCH syntax
Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
and EXEC SQL ENDIF directives
Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
and EXEC SQL ENDIF directives
Add pg_ctl script to control backend startup (Tatsuo)
Add postmaster.opts.default file to store startup flags (Tatsuo)
Allow --with-mb=SQL_ASCII
@ -196,7 +186,7 @@ Allow COPY IN to read file that do not end with a newline (Tom)
Indicate when long identifiers are truncated (Tom)
Allow aggregates to use type equivalency (Peter E)
Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
conversion functions (Karel Zak zf.jcu.cz>)
Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
Add NUMERIC and int8 types to ODBC
@ -222,9 +212,15 @@ Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
Allow negation of a negative number in all cases
Add ecpg descriptors (Christof, Michael)
Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
Allow casts with length, like foo::char(8)
New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
Add support for SJIS user defined characters (Tatsuo)
Larger views/rules supported
Make libpq's PQconndefaults() thread-safe (Tom)
Disable // as comment to be ANSI conforming, should use --
Allow column aliases on views CREATE VIEW name (collist)
Fixes for views with subqueries (Tom)
Allow UPDATE table SET fld = (SELECT ...) (Tom)
Types
-----
@ -233,10 +229,10 @@ Allow bare column names to be subscripted as arrays (Tom)
Improve type casting of int and float constants (Tom)
Cleanups for int8 inputs, range checking, and type conversion (Tom)
Fix for SELECT timespan('21:11:26'::time) (Tom)
Fix for netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0
(Oleg Sharoiko)
Fix for netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0
(Oleg Sharoiko)
Add btree index on NUMERIC(Jan)
Perl fix for large objects containing NUL characters (Douglas Thomson)
Perl fix for large objects containing NUL characters (Douglas Thomson)
ODBC fix for for large objects (free)
Fix indexing of cidr data type
Fix for Ethernet MAC addresses (macaddr type) comparisons
@ -249,13 +245,25 @@ Make char_length()/octet_length including trailing blanks (Tom)
Made abstime/reltime use int4 instead of time_t (Peter E)
New lztext data type for compressed text fields
Revise code to handle coercion of int and float constants (Tom)
New C-routines to implement a BIT and BIT VARYING type in /contrib
(Adriaan Joubert)
New C-routines to implement a BIT and BIT VARYING type in /contrib
(Adriaan Joubert)
NUMERIC now accepts scientific notation (Tom)
NUMERIC to int4 rounds (Tom)
Convert float4/8 to NUMERIC properly (Tom)
Allow type conversion with NUMERIC (Thomas)
Make ISO date style (2000-02-16 09:33) the default (Thomas)
Add NATIONAL CHAR [ VARYING ]
Allow NUMERIC round and trunc to accept negative scales (Tom)
New TIME WITH TIME ZONE type (Thomas)
Add MAX()/MIN() on time type (Thomas)
Add abs(), mod(), fac() for int8 (Thomas)
Add round(), sqrt(), cbrt(), pow()
Rename NUMERIC power() to pow()
Improved TRANSLATE() function
Allow X=-Y operators (Tom)
Add exp() and ln() as NUMERIC types
Allow SELECT float8(COUNT(*)) / (SELECT COUNT(*) FROM int4_tbl) FROM int4_tbl
GROUP BY f1; (Tom)
Performance
-----------
@ -286,7 +294,8 @@ Improve pg_statistics management for VACUUM speed improvement (Tom)
Flush backend cache less frequently (Tom, Hiroshi)
COPY now reuses previous memory allocation, improving performance (Tom)
Improve optimization cost estimation (Tom)
Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom
)
Use DNF instead of CNF where appropriate (Tom, Taral)
Further cleanup for OR-of-AND WHERE-clauses (Tom)
Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
@ -294,6 +303,7 @@ Smarter optimizer computations for random index page access (Tom)
New SET variable to control optimizer costs (Tom)
Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
Reduce optimizer internal housekeeping of join paths for speedup (Tom)
Major subquery speedup (Tom)
Source Tree Changes
-------------------
@ -304,9 +314,10 @@ Improved range checking for large integers on Alpha's
Clean up #include in /include directory (Bruce)
Add scripts for checking includes (Bruce)
Remove un-needed #include's from *.c files (Bruce)
Change #include's to use <> and "" as appropriate (Bruce)
Change #include's to use
and "" as appropriate (Bruce)
Enable WIN32 compilation of libpq
Alpha spinlock fix from Uncle George <gatgul@voicenet.com>
Alpha spinlock fix from Uncle George voicenet.com>
Overhaul of optimizer data structures (Tom)
Fix to cygipc library (Yutaka Tanida)
Allow pgsql to work on newer Cygwin snapshots(Dan)
@ -323,6 +334,10 @@ Internally change datetime and timespan into timestamp and interval (Thomas)
Fix for plpgsql on BSDI
Add SQL_ASCII test case to the regression test (Tatsuo)
configure --with-mb now deprecated (Tatsuo)
NT fixes
NetBSD fixes Johnny C. Lam stat.cmu.edu>
Fixes for Alpha compiles
New multibyte encodings

160
doc/FAQ
View File

@ -1,9 +1,9 @@
Frequently Asked Questions (FAQ) for PostgreSQL
Last updated: Tue Sep 28 01:06:15 EDT 1999
Last updated: Tue Mar 21 16:09:11 EST 2000
Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us)
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
The most recent version of this document can be viewed at the
postgreSQL Web site, http://www.PostgreSQL.org.
@ -87,7 +87,10 @@
regexp searching?
4.14) In a query, how do I detect if a field is NULL?
4.15) What is the difference between the various character types?
4.16) How do I create a serial/auto-incrementing field?
4.16.1) How do I create a serial/auto-incrementing field?
4.16.2) How do I get the value of a serial insert?
4.16.3) Wouldn't use of currval() and nextval() lead to a race
condition with other concurrent backend processes?
4.17) What is an oid? What is a tid?
4.18) What is the meaning of some of the terms used in PostgreSQL?
4.19) Why do I get the error "FATAL: palloc failure: memory
@ -96,6 +99,7 @@
4.21) My large-object operations get invalid large obj descriptor.
Why?
4.22) How do I create a column that will default to the current time?
4.23) Why are my subqueries using IN so slow?
Extending PostgreSQL
@ -144,7 +148,8 @@
PostgreSQL Data Base Management System
Copyright (c) 1994-6 Regents of the University of California
Portions copyright (c) 1996-2000, PostgreSQL, Inc Portions Copyright
(c) 1994-6 Regents of the University of California
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written
@ -198,8 +203,8 @@
Unix/NT porting library. See pgsql/doc/README.NT in the distribution.
There is also a web page at
http://members.tripod.com/~kevlo/postgres/portNT.html. There is
another port using U/Win at http://surya.wipro.com/uwin/ported.html.
http://www.freebsd.org/~kevlo/postgres/portNT.html. There is another
port using U/Win at http://surya.wipro.com/uwin/ported.html.
1.5) Where can I get PostgreSQL?
@ -279,10 +284,14 @@
There is a nice tutorial at http://w3.one.net/~jhoffman/sqltut.htm and
at
http://ourworld.compuserve.com/homepages/Graeme_Birchall/DB2_COOK.HTM.
http://ourworld.compuserve.com/homepages/Graeme_Birchall/HTM_COOK.HTM.
Another one is "Teach Yourself SQL in 21 Days, Second Edition" at
http://members.tripod.com/er4ebus/sql/index.htm
Many of our users like The Practical SQL Handbook, Bowman et al.,
Addison Wesley.
Addison Wesley. Others like Lan Times Guide to SQL, Groff et al.,
Osborne McGraw-Hill.
1.11) Is PostgreSQL Y2K compliant?
@ -295,7 +304,7 @@
subscribe to the pgsql-hackers and pgsql-patches mailing lists. Third,
submit high-quality patches to pgsql-patches.
There are about a dozen people who have commit privileges to the
There are about a dozen people who have COMMIT privileges to the
PostgreSQL CVS archive. All of them have submitted so many
high-quality patches that it was a pain for the existing committers to
keep up, and we had confidence that patches they committed were likely
@ -506,13 +515,13 @@
3.10) How do I tune the database engine for better performance?
Certainly, indices can speed up queries. The explain command allows
Certainly, indices can speed up queries. The EXPLAIN command allows
you to see how PostgreSQL is interpreting your query, and which
indices are being used.
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
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 in their own transaction.
Consider performing several statements in a single transaction block.
This reduces the transaction overhead. Also consider dropping and
@ -534,7 +543,7 @@
is unwise to make this value too large, or you may run out of memory
when a query invokes several concurrent sorts.
You can also use the cluster command to group data in base tables to
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.
3.11) What debugging features are available in PostgreSQL?
@ -607,7 +616,7 @@
3.13) What are the pg_tempNNN.NN files in my database directory?
They are temporary files generated by the query executor. For example,
if a sort needs to be done to satisfy an order by, and the sort
if a sort needs to be done to satisfy an ORDER BY, and the sort
requires more space than the backend's -S parameter allows, then temp
files are created to hold the extra data.
@ -648,16 +657,17 @@
4.2) What is the exact difference between binary cursors and normal
cursors?
See the declare manual page for a description.
See the DECLARE manual page for a description.
4.3) How do I select only the first few rows of a query?
4.3) How do I SELECT only the first few rows of a query?
See the fetch manual page, or use SELECT ... LIMIT....
See the FETCH manual page, or use SELECT ... LIMIT....
This only prevents all row results from being transferred to the
client. The entire query must be evaluated, even if you only want just
the first few rows. Consider a query that has an order by. There is no
way to return any rows until the entire query is evaluated and sorted.
The entire query may have to be evaluated, even if you only want the
first few rows. Consider a query that has an ORDER BY. If there is an
index that matches the ORDER BY, PostgreSQL may be able to evaluate
only the first few records requested, or the entire query may have to
be evaluated until the desired rows have been generated.
4.4) How do I get a list of tables, or other information I see in psql?
@ -669,7 +679,7 @@
4.5) How do you remove a column from a table?
We do not support alter table drop column, but do this:
We do not support ALTER TABLE DROP COLUMN, but do this:
SELECT ... -- select all columns but the one you want to remove
INTO TABLE new_table
FROM old_table;
@ -725,35 +735,36 @@
\? to see them.
Also try the file pgsql/src/tutorial/syscat.source. It illustrates
many of the selects needed to get information from the database system
many of the SELECTs needed to get information from the database system
tables.
4.9) 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
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 sequential
scan would be faster.
For column-specific optimization statistics, use vacuum analyze.
Vacuum analyze is important for complex multi-join queries, so the
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, so vacuum analyze must be run to collect
column statistics on its own, so VACUUM ANALYZE must be run to collect
them periodically.
Indexes are not used for order by operations.
Indexes are not used for ORDER BY operations.
When using wild-card operators such as 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 ^.
and ~(regular expression searches) should start with ^. If you have
locale enabled, indexes can't be used for wild-card searches.
4.10) How do I see how the query optimizer is evaluating my query?
See the explain manual page.
See the EXPLAIN manual page.
4.11) What is an R-tree index?
@ -816,14 +827,60 @@ BYTEA bytea variable-length array of bytes
using them. Specifically, the penalty is for access to all columns
after the first column of this type.
4.16) How do I create a serial/auto-incrementing field?
4.16.1) How do I create a serial/auto-incrementing field?
PostgreSQL supports a serial data type. It auto-creates a sequence and
index on the column. See the create_sequence manual page for more
information about sequences. You can also use each row's oid field as
a unique value. However, if you need to dump and reload the database,
you need to use pg_dump's -o option or copy with oids option to
preserve the oids.
PostgreSQL supports SERIAL data type. It auto-creates a sequence and
index on the column. For example, this...
CREATE TABLE person (
id SERIAL,
name TEXT
);
...is automatically translated into this...
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT
);
CREATE UNIQUE INDEX person_id_key ON person ( id );
See the create_sequence manual page for more information about
sequences. You can also use each row's oid field as a unique value.
However, if you need to dump and reload the database, you need to use
pg_dump's -o option or COPY WITH OIDS option to preserve the oids.
For more details, see Bruce Momjian's chapter on Numbering Rows.
4.16.2) How do I get the back the generated SERIAL value after an insert?
Probably the simplest approach is to to retrieve the next SERIAL value
from the sequence object with the nextval() function before inserting
and then insert it explicitly. Using the example table in 4.16.1, that
might look like this:
$newSerialID = nextval('person_id_seq');
INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal');
You would then also have the new value stored in $newSerialID for use
in other queries (e.g., as a foreign key to the person table). Note
that the name of the automatically-created SEQUENCE object will be
named <table>_<serialcolumn>_seq, where table and serialcolumn are the
names of your table and your SERIAL column, respectively.
Similarly, you could retrieve the just-assigned SERIAL value with the
currval() function after it was inserted by default, e.g.,
INSERT INTO person (name) VALUES ('Blaise Pascal');
$newID = currval('person_id_seq');
Finally, you could use the oid returned from the INSERT statement to
lookup the default value, though this is probably the least portable
approach. In perl, using DBI with Edmund Mergl's DBD::Pg module, the
oid value is made available via $sth->{pg_oid_status} after
$sth->execute().
4.16.3) Wouldn't use of currval() and nextval() lead to a race condition
with other concurrent backend processes?
No. That has been handled by the backends.
4.17) What is an oid? What is a tid?
@ -858,9 +915,9 @@ BYTEA bytea variable-length array of bytes
Some of the source code and older documentation use terms that have
more common usage. Here are some:
* table, relation, class
* row, record, tuple
* attribute, field, column
* table, class
* column, field, attribute
* retrieve, select
* replace, update
* append, insert
@ -913,10 +970,27 @@ BYTEA bytea variable-length array of bytes
but this makes the column default to the time of table creation, not
the time of row insertion. Instead do:
create table test (x int, modtime timestamp default text 'now');
CREATE TABLE test (x int, modtime timestamp default now() );
The casting of the value to text prevents the default value from being
computed at table creation time, and delays it until insertion time.
The calling of the function now() prevents the default value from
being computed at table creation time, and delays it until insertion
time. We believe this will not be a problem in post-6.5.* releases.
4.23) Why are my subqueries using IN so slow?
Currently, we join subqueries to outer queries by sequential scanning
the result of the subquery for each row of the outer query. A
workaround is to replace IN with EXISTS. For example, change:
SELECT *
FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2)
to:
SELECT *
FROM tab
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
We hope to fix this limitation in a future release.
_________________________________________________________________
Extending PostgreSQL

View File

@ -19,8 +19,8 @@
<title id="BOWMAN93-full">
The Practical <acronym>SQL</acronym> Handbook
</title>
<titleabbrev id="BOWMAN93">
Bowman et al, 1993
<titleabbrev id="BOWMAN96">
Bowman et al, 1996
</titleabbrev>
<subtitle>
Using Structured Query Language
@ -28,7 +28,7 @@
<edition>3</edition>
<authorgroup>
<author>
<firstname>Judity</firstname>
<firstname>Judith</firstname>
<surname>Bowman</surname>
</author>
<author>
@ -37,7 +37,7 @@
</author>
<author>
<firstname>Marcy</firstname>
<surname>Damovsky</surname>
<surname>Darnovsky</surname>
</author>
</authorgroup>
<isbn>0-201-44787-8</isbn>
@ -46,7 +46,7 @@
<publishername>Addison-Wesley</publishername>
</publisher>
<copyright>
<year>1997</year>
<year>1996</year>
<holder>Addison-Wesley Longman, Inc.</holder>
</copyright>
<!--

View File

@ -1,6 +1,405 @@
<chapter id="release">
<title>Release Notes</title>
<sect1>
<title>Release 7.0</title>
<!--
<docinfo>
<authorgroup>
<author>
<firstname>Bruce</firstname>
<surname>Momjian</surname>
</author>
</authorgroup>
<date>2000-04-01</date>
</docinfo>
-->
<para>
This release shows the continued growth of PostgreSQL. There are more
changes in 7.0 than in any previous release. Don't be concerned this is
a dot-zero release. We do our best to put out only solid releases, and
this one is no exception.
</para>
<para>
Major changes in this release:
<variablelist>
<varlistentry>
<term>
Foreign Keys
</term>
<listitem>
<para>
Foreign keys are now implemented, with the exception of PARTIAL MATCH
foreign keys. Many users have been asking for this feature, and we are
pleased to offer it.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Optimizer Overhaul
</term>
<listitem>
<para>
Continuing on work started a year ago, the optimizer has been
overhauled, allowing improved query execution and better performance
with less memory usage.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Updated psql
</term>
<listitem>
<para>
<application>psql</application>, our interactive terminal monitor, has been
updated with a variety of new features. See the psql manual page for details.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Upcoming Features
</term>
<listitem>
<para>
In 7.1, we plan to have outer joins, storage for very long rows, and a
write-ahead logging system.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<sect2>
<title>Migration to v7.0</title>
<para>
A dump/restore using <application>pg_dump</application>
is required for those wishing to migrate data from any
previous release of <productname>Postgres</productname>.
For those upgrading from 6.5.*, you can use
<application>pg_upgrade</application> to upgrade to this
release.
</para>
</sect2>
<sect2>
<title>Detailed Change List</title>
<para>
<programlisting>
Bug Fixes
---------
Prevent function calls with more than maximum number of arguments (Tom)
Many fixes for CASE (Tom)
Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
Fix GROUP BY scan bug (Tom)
Improvements in SQL grammar processing (Tom)
Fix for views involved in INSERT ... SELECT ... (Tom)
Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
Fix for subselects in INSERT ... SELECT (Tom)
Prevent INSERT ... SELECT ... ORDER BY (Tom)
Fixes for relations greater than 2GB, including vacuum
Improve communication of system table changes to other running backends (Tom)
Improve communication of user table modifications to other running backends (Tom)
Fix handling of temp tables in complex situations (Bruce, Tom)
Allow table locking when tables opened, improving concurrent reliability (Tom)
Properly quote sequence names in pg_dump (Ross J. Reedstrom)
Prevent DESTROY DATABASE while others accessing
Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
Fix pg_upgrade so it works for MVCC(Tom)
Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
Make TABLE optional keyword in LOCK TABLE (Bruce)
Fix for "f1 datetime DEFAULT 'now'" (Tom)
Fix problems with CURRENT_DATE used in DEFAULT (Tom)
Allow comment-only lines, and ;;; lines too. (Tom)
Improve recovery after failed disk writes, disk full (Hiroshi)
Fix cases where table is mentioned in FROM but not joined (Tom)
Allow HAVING clause without aggregate functions (Tom)
Fix for "--" comment and no trailing newline, as seen in Perl
Improve pg_dump failure error reports (Bruce)
Allow sorts and hashes to exceed 2GB file sizes (Tom)
Fix for pg_dump dumping of inherited rules (Tom)
Fix for NULL handling comparisons (Tom)
Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
Fix for dbname with dash
Prevent DROP INDEX from interfering with other backends (Tom)
Fix file descriptor leak in verify_password()
Fix for "Unable to identify an operator =$" problem
Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
Fix for recursive exit call (Massimo)
Fix for extra-long timezones (Jeroen van Vianen)
Make pg_dump preserve primary key information (Peter E)
Prevent databases with single quotes (Peter E)
Prevent DROP DATABASE inside transaction (Peter E)
ecpg memory leak fixes (Stephen Birch)
Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
Y2K timestamp fix (Massimo)
Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
Fix for views with tables/columns containing spaces (Tom)
Prevent permissions on indexes (Peter E)
Fix for spinlock stuck problem when error is generated (Hiroshi)
Fix ipcclean on Linux
Fix handling of NULL constraint conditions (Tom)
Fix memory leak in odbc driver (Nick Gorham)
Fix for permission check on UNION tables (Tom)
Fix to allow SELECT 'a' LIKE 'a' (Tom)
Fix for SELECT 1 + NULL (Tom)
Fixes to CHAR
Fix log() on numeric type (Tom)
Remove ':' and ';' operators
Enhancements
------------
New CLI interface include file sqlcli.h, based on SQL3/SQL98
Remove all limits on query length, row length limit still exists (Tom)
Update jdbc protocol to 2.0 (Jens Glaser jens@jens.de)
Add TRUNCATE command to quickly truncate relation (Mike Mascari)
Fix to give super user and createdb user proper update catalog rights (Peter E)
Allow ecpg bool variables to have NULL values (Christof)
Issue ecpg error if NULL value is returned to variable with no NULL
indicator (Christof)
Allow ^C to cancel COPY command (Massimo)
Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
Improve CREATE FUNCTION to allow type conversion specification
(Bernie Frankpitt)
Add CmdTuples() to libpq++(Vince)
New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
Allow CREATE FUNCTION WITH clause to be used for all language types
configure --enable-debug adds -g (Peter E)
configure --disable-debug removes -g (Peter E)
Allow more complex default expressions (Tom)
First real FOREIGN KEY constraint trigger functionality (Jan)
Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
Add DEC and SESSION_USER as reserved words
Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
Add Oracle's COMMENT ON command (Mike Mascari <mascarim@yahoo.
libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
Make USING in COPY optional (Bruce)
Allow subselects in the target list (Tom)
Allow subselects on the left side of comparison operators (Tom)
New parallel regression test (Jan)
Change backend-side COPY to write files with permissions 644 not 666 (Tom)
Force permissions on PGDATA directory to be secure, even if it exists (Tom)
Added psql LastOid variable to return last inserted oid (Peter E)
Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
Add permissions check so only Postgres superuser or table owner can
vacuum (Peter E)
New libpq functions to allow asynchronous connections: PQconnectStart(),
PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
New libpq PQsetenv() function (Ewan Mellor)
create/alter user extension (Peter E)
New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
New scripts for create/drop user/db (Peter E)
Major psql overhaul(Peter E)
Add const to libpq interface(Peter E)
New libpq function PQoidValue (Peter E)
Show specific non-aggregate causing problem with GROUP BY (Tom)
Make changes to pg_shadow recreate pg_pwd file (Peter E)
Add aggregate(DISTINCT ...) (Tom)
Allow flag to control COPY input/output of NULLs (Peter E)
Make postgres user have a password by default (Peter E)
Add CREATE/ALTER/DROP GROUP (Peter E)
All administration scripts now support --long options (Peter E, Karel)
Vacuumdb script now supports --alldb option (Peter E)
ecpg new portable FETCH syntax
Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
and EXEC SQL ENDIF directives
Add pg_ctl script to control backend startup (Tatsuo)
Add postmaster.opts.default file to store startup flags (Tatsuo)
Allow --with-mb=SQL_ASCII
Increase maximum number of index keys to 16 (Bruce)
Increase maximum number of function arguments to 16 (Bruce)
Allow user configuration of maximum number of index keys and arguments
(Bruce)
Allow unprivileged users to change their passwords (Peter E)
With password authentication enabled, new users without passwords can't
connect (Peter E)
Disallow dropping a user who owns a database (Peter E)
Add initdb --enable-multibyte option (Peter E)
Add option for initdb to prompts for superuser password (Peter E)
Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
Updated user interfaces on initdb, initlocation, pg_dump, ipcclean
(Peter E)
New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo
Libpq non-blocking mode (Alfred Perlstein)
Improve conversion of types in casts that don't specify a length
New plperl internal programming language (Mark Hollomon)
Allow COPY IN to read file that do not end with a newline (Tom)
Indicate when long identifiers are truncated (Tom)
Allow aggregates to use type equivalency (Peter E)
Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
Add NUMERIC and int8 types to ODBC
Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
Enable backward sequential scan even after reaching EOF (Hiroshi)
Add btree indexing of boolean values, >= and <= (Don Baccus)
Print current line number when COPY FROM fails (Massimo)
Recognize special case of POSIX time zone: "GMT+8" and "GMT-8" (Thomas)
Add DEC as synonym for "DECIMAL (Thomas)
Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas)
Implement column aliases (aka correlation names) and more join syntax
(Thomas)
Allow queries like SELECT a FROM t1 tx (a) (Thomas)
Allow queries like SELECT * FROM t1 NATURAL JOIN t2 (Thomas)
Make INTERVAL reserved word allowed as a column identifier (Thomas)
Implement REINDEX command (Hiroshi)
Accept ALL in aggregate function SUM(ALL col) (Tom)
Prevent GROUP BY from using column aliases (Tom)
New psql \encoding option (Tatsuo)
Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
Allow negation of a negative number in all cases
Add ecpg descriptors (Christof, Michael)
Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
Allow casts with length, like foo::char(8)
New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
Add support for SJIS user defined characters (Tatsuo)
Larger views/rules supported
Make libpq's PQconndefaults() thread-safe (Tom)
Disable // as comment to be ANSI conforming, should use --
Allow column aliases on views CREATE VIEW name (collist)
Fixes for views with subqueries (Tom)
Allow UPDATE table SET fld = (SELECT ...) (Tom)
Types
-----
Many array fixes (Tom)
Allow bare column names to be subscripted as arrays (Tom)
Improve type casting of int and float constants (Tom)
Cleanups for int8 inputs, range checking, and type conversion (Tom)
Fix for SELECT timespan('21:11:26'::time) (Tom)
Fix for netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0
(Oleg Sharoiko)
Add btree index on NUMERIC(Jan)
Perl fix for large objects containing NUL characters (Douglas Thomson)
ODBC fix for for large objects (free)
Fix indexing of cidr data type
Fix for Ethernet MAC addresses (macaddr type) comparisons
Fix for date/time types when overflows happened in computations (Tom)
Allow array on int8 (Peter E)
Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
Allow NUMERIC arrays
Fix bugs in NUMERIC ceil() and floor() functions (Tom)
Make char_length()/octet_length including trailing blanks (Tom)
Made abstime/reltime use int4 instead of time_t (Peter E)
New lztext data type for compressed text fields
Revise code to handle coercion of int and float constants (Tom)
New C-routines to implement a BIT and BIT VARYING type in /contrib
(Adriaan Joubert)
NUMERIC now accepts scientific notation (Tom)
NUMERIC to int4 rounds (Tom)
Convert float4/8 to NUMERIC properly (Tom)
Allow type conversion with NUMERIC (Thomas)
Make ISO date style (2000-02-16 09:33) the default (Thomas)
Add NATIONAL CHAR [ VARYING ]
Allow NUMERIC round and trunc to accept negative scales (Tom)
New TIME WITH TIME ZONE type (Thomas)
Add MAX()/MIN() on time type (Thomas)
Add abs(), mod(), fac() for int8 (Thomas)
Add round(), sqrt(), cbrt(), pow()
Rename NUMERIC power() to pow()
Improved TRANSLATE() function
Allow X=-Y operators (Tom)
Add exp() and ln() as NUMERIC types
Allow SELECT float8(COUNT(*)) / (SELECT COUNT(*) FROM int4_tbl) FROM int4_tbl
GROUP BY f1; (Tom)
Performance
-----------
Prevent exponential space consumption with many AND's and OR's (Tom)
Collect attribute selectivity values for system columns (Tom)
Reduce memory usage of aggregates (Tom)
Fix for LIKE optimization to use indexes with multi-byte encodings (Tom)
Fix r-tree index optimizer selectivity (Thomas)
Improve optimizer selectivity computations and functions (Tom)
Optimize btree searching for cases where many equal keys exist (Tom)
Enable fast LIKE index processing only if index present (Tom)
Re-use free space on index pages with duplicates (Tom)
Improve hash join processing (Tom)
Prevent descending sort if result is already sorted(Hiroshi)
Allow commuting of index scan query qualifications (Tom)
Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
Allocate large memory requests in fix-sized chunks for performance (Tom)
Fix vacuum's performance by reducing memory allocation requests (Tom)
Implement constant-expression simplification (Bernard Frankpitt, Tom)
Allow more than first column to be used to determine start of index scan
(Hiroshi)
Prevent quadruple use of disk space when doing internal sorting (Tom)
Faster sorting by calling fewer functions (Tom)
Create system indexes to match all system caches (Bruce, Hiroshi)
Make system caches use system indexes(Bruce)
Make all system indexes unique(Bruce)
Improve pg_statistics management for VACUUM speed improvement (Tom)
Flush backend cache less frequently (Tom, Hiroshi)
COPY now reuses previous memory allocation, improving performance (Tom)
Improve optimization cost estimation (Tom)
Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
Use DNF instead of CNF where appropriate (Tom, Taral)
Further cleanup for OR-of-AND WHERE-clauses (Tom)
Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
Smarter optimizer computations for random index page access (Tom)
New SET variable to control optimizer costs (Tom)
Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
Reduce optimizer internal housekeeping of join paths for speedup (Tom)
Major subquery speedup (Tom)
Source Tree Changes
-------------------
Fix for linux PPC compile
New generic expression-tree-walker subroutine (Tom)
Change form() to varargform() to prevent portability problems.
Improved range checking for large integers on Alpha's
Clean up #include in /include directory (Bruce)
Add scripts for checking includes (Bruce)
Remove un-needed #include's from *.c files (Bruce)
Change #include's to use <> and "" as appropriate (Bruce)
Enable WIN32 compilation of libpq
Alpha spinlock fix from Uncle George <gatgul@voicenet.com>
Overhaul of optimizer data structures (Tom)
Fix to cygipc library (Yutaka Tanida)
Allow pgsql to work on newer Cygwin snapshots(Dan)
New catalog version number (Tom)
Add Linux ARM.
Rename heap_replace to heap_update
Update for QNX (Kardos, Dr. Andreas)
New platform-specific regression handling (Tom)
Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
Included all yacc and lex files into the distribution (Peter E.)
Remove lextest, no longer needed (Peter E)
Fix for libpq and psql on Win32 (Magnus)
Internally change datetime and timespan into timestamp and interval (Thomas)
Fix for plpgsql on BSDI
Add SQL_ASCII test case to the regression test (Tatsuo)
configure --with-mb now deprecated (Tatsuo)
NT fixes
NetBSD fixes Johnny C. Lam <lamj@stat.cmu.edu>
Fixes for Alpha compiles
New multibyte encodings
</programlisting>
</para>
</sect2>
</sect1>
<sect1>
<title>Release 6.5.3</title>
<!--
@ -169,8 +568,8 @@ Add Win1250 (Czech) support (Pavel Behal)
</sect1>
<sect1>
<title>Release 6.5</title>
<sect1>
<title>Release 6.5</title>
<!--
<docinfo>
<authorgroup>
@ -442,7 +841,7 @@ Fix for memory leak in executor with fjIsNull
Fix for aggregate memory leaks(Erik Riedel)
Allow username containing a dash GRANT permissions
Cleanup of NULL in inet types
Clean up system table bugs(Tom)
Clean up system table bugs(Tom)
Fix problems of PAGER and \? command(Masaaki Sakaida)
Reduce default multi-segment file size limit to 1GB(Peter)
Fix for dumping of CREATE OPERATOR(Tom)

View File

@ -5,7 +5,6 @@ doc/Machine-specific FAQ's
doc/bug.template
update include/version.h.in after release, including subversion
update pgaccess
update odbc
update src/interfaces/jdbc/postgresql/jdbc1/DatabaseMetaData.java
update src/interfaces/jdbc/postgresql/jdbc2/DatabaseMetaData.java
update pg_upgrade to handle new version, or disable
@ -18,3 +17,4 @@ update documentation
man pages
sgml docs
update VERSION numbers of interfaces
update ports list

View File

@ -4,7 +4,7 @@
# Usage $0 [-r 'revision pattern'] file
# cvs log -d '>1999-06-14 00:00:00 GMT' > log
# cvs log -d '>1999-06-14 00:00:00 GMT' . > log
# pgcvslog -r '\.2\.[0-9]*$' log
if [ "X$1" = "X-r" ]