mirror of
https://github.com/postgres/postgres.git
synced 2025-06-05 23:56:58 +03:00
Update HISTORY file for 7.0.
This commit is contained in:
parent
5ca8eb9216
commit
b508136d81
117
HISTORY
117
HISTORY
@ -1,64 +1,48 @@
|
|||||||
|
------------------------------------------------------------------------
|
||||||
Chapter 0. Release Notes
|
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 7.0
|
Release 7.0
|
||||||
-----------
|
|
||||||
|
|
||||||
This release shows the continued growth of PostgreSQL. There are more
|
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
|
changes in 7.0 than in any previous release. Don't be concerned this
|
||||||
this is a dot-zero release. PostgreSQL does its best to put
|
is a dot-zero release. We do our best to put out only solid releases,
|
||||||
out only solid releases, and this one is no exception.
|
and this one is no exception.
|
||||||
|
|
||||||
Major changes in this release:
|
Major changes in this release:
|
||||||
|
|
||||||
Foreign Keys: Foreign keys are now implemented, with the exception of
|
Foreign Keys
|
||||||
PARTIAL MATCH foreign keys. Many users have been asking for this
|
Foreign keys are now implemented, with the exception of PARTIAL
|
||||||
feature, and we are pleased to finally offer it.
|
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 Overhaul
|
||||||
optimizer has been overhauled in many significant ways, allowing better
|
Continuing on work started a year ago, the optimizer has been
|
||||||
query execution processing with faster performance and less memory
|
overhauled, allowing improved query execution and better
|
||||||
usage.
|
performance with less memory usage.
|
||||||
|
|
||||||
Updated psql: psql, our interactive terminal monitor, has been updated,
|
Updated psql
|
||||||
with a variety of new features. See the psql manual page for the details.
|
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
|
Upcoming Features
|
||||||
|
In 7.1, we plan to have outer joins, storage for very long
|
||||||
rows, and a write-ahead logging system.
|
rows, and a write-ahead logging system.
|
||||||
|
|
||||||
|
Migration to v7.0
|
||||||
|
|
||||||
|
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
|
Bug Fixes
|
||||||
---------
|
---------
|
||||||
Prevent function calls with more than maximum number of arguments (Tom)
|
Prevent function calls with more than maximum number of arguments (Tom)
|
||||||
Many fixes for CASE (Tom)
|
Many fixes for CASE (Tom)
|
||||||
Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (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 SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
|
||||||
Allow utility statements in plpgsql (Tom)
|
|
||||||
Fix GROUP BY scan bug (Tom)
|
Fix GROUP BY scan bug (Tom)
|
||||||
Improvements in SQL grammar processing (Tom)
|
Improvements in SQL grammar processing (Tom)
|
||||||
Fix for views involved in INSERT ... SELECT ... (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)
|
Prevent INSERT ... SELECT ... ORDER BY (Tom)
|
||||||
Fixes for relations greater than 2GB, including vacuum
|
Fixes for relations greater than 2GB, including vacuum
|
||||||
Improve communication of system table changes to other running backends (Tom)
|
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)
|
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)
|
Allow table locking when tables opened, improving concurrent reliability (Tom)
|
||||||
Properly quote sequence names in pg_dump (Ross J. Reedstrom)
|
Properly quote sequence names in pg_dump (Ross J. Reedstrom)
|
||||||
Prevent DESTROY DATABASE while others accessing
|
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 ipcclean on Linux
|
||||||
Fix handling of NULL constraint conditions (Tom)
|
Fix handling of NULL constraint conditions (Tom)
|
||||||
Fix memory leak in odbc driver (Nick Gorham)
|
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
|
Enhancements
|
||||||
------------
|
------------
|
||||||
@ -133,12 +123,12 @@ configure --disable-debug removes -g (Peter E)
|
|||||||
Allow more complex default expressions (Tom)
|
Allow more complex default expressions (Tom)
|
||||||
First real FOREIGN KEY constraint trigger functionality (Jan)
|
First real FOREIGN KEY constraint trigger functionality (Jan)
|
||||||
Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (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)
|
Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
|
||||||
Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
|
Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
|
||||||
Add DEC and SESSION_USER as reserved words
|
Add DEC and SESSION_USER as reserved words
|
||||||
Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
|
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)
|
libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
|
||||||
Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
|
Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
|
||||||
Make USING in COPY optional (Bruce)
|
Make USING in COPY optional (Bruce)
|
||||||
@ -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)
|
Indicate when long identifiers are truncated (Tom)
|
||||||
Allow aggregates to use type equivalency (Peter E)
|
Allow aggregates to use type equivalency (Peter E)
|
||||||
Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
|
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)
|
Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
|
||||||
Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
|
Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
|
||||||
Add NUMERIC and int8 types to ODBC
|
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
|
Allow negation of a negative number in all cases
|
||||||
Add ecpg descriptors (Christof, Michael)
|
Add ecpg descriptors (Christof, Michael)
|
||||||
Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
|
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)
|
New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
|
||||||
Add support for SJIS user defined characters (Tatsuo)
|
Add support for SJIS user defined characters (Tatsuo)
|
||||||
Larger views/rules supported
|
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
|
Types
|
||||||
-----
|
-----
|
||||||
@ -256,6 +252,18 @@ NUMERIC to int4 rounds (Tom)
|
|||||||
Convert float4/8 to NUMERIC properly (Tom)
|
Convert float4/8 to NUMERIC properly (Tom)
|
||||||
Allow type conversion with NUMERIC (Thomas)
|
Allow type conversion with NUMERIC (Thomas)
|
||||||
Make ISO date style (2000-02-16 09:33) the default (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
|
Performance
|
||||||
-----------
|
-----------
|
||||||
@ -286,7 +294,8 @@ Improve pg_statistics management for VACUUM speed improvement (Tom)
|
|||||||
Flush backend cache less frequently (Tom, Hiroshi)
|
Flush backend cache less frequently (Tom, Hiroshi)
|
||||||
COPY now reuses previous memory allocation, improving performance (Tom)
|
COPY now reuses previous memory allocation, improving performance (Tom)
|
||||||
Improve optimization cost estimation (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)
|
Use DNF instead of CNF where appropriate (Tom, Taral)
|
||||||
Further cleanup for OR-of-AND WHERE-clauses (Tom)
|
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)
|
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)
|
New SET variable to control optimizer costs (Tom)
|
||||||
Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
|
Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
|
||||||
Reduce optimizer internal housekeeping of join paths for speedup (Tom)
|
Reduce optimizer internal housekeeping of join paths for speedup (Tom)
|
||||||
|
Major subquery speedup (Tom)
|
||||||
|
|
||||||
Source Tree Changes
|
Source Tree Changes
|
||||||
-------------------
|
-------------------
|
||||||
@ -304,9 +314,10 @@ Improved range checking for large integers on Alpha's
|
|||||||
Clean up #include in /include directory (Bruce)
|
Clean up #include in /include directory (Bruce)
|
||||||
Add scripts for checking includes (Bruce)
|
Add scripts for checking includes (Bruce)
|
||||||
Remove un-needed #include's from *.c files (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
|
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)
|
Overhaul of optimizer data structures (Tom)
|
||||||
Fix to cygipc library (Yutaka Tanida)
|
Fix to cygipc library (Yutaka Tanida)
|
||||||
Allow pgsql to work on newer Cygwin snapshots(Dan)
|
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
|
Fix for plpgsql on BSDI
|
||||||
Add SQL_ASCII test case to the regression test (Tatsuo)
|
Add SQL_ASCII test case to the regression test (Tatsuo)
|
||||||
configure --with-mb now deprecated (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
160
doc/FAQ
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
Frequently Asked Questions (FAQ) for PostgreSQL
|
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
|
The most recent version of this document can be viewed at the
|
||||||
postgreSQL Web site, http://www.PostgreSQL.org.
|
postgreSQL Web site, http://www.PostgreSQL.org.
|
||||||
@ -87,7 +87,10 @@
|
|||||||
regexp searching?
|
regexp searching?
|
||||||
4.14) In a query, how do I detect if a field is NULL?
|
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.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.17) What is an oid? What is a tid?
|
||||||
4.18) What is the meaning of some of the terms used in PostgreSQL?
|
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
|
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.
|
4.21) My large-object operations get invalid large obj descriptor.
|
||||||
Why?
|
Why?
|
||||||
4.22) How do I create a column that will default to the current time?
|
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
|
Extending PostgreSQL
|
||||||
|
|
||||||
@ -144,7 +148,8 @@
|
|||||||
|
|
||||||
PostgreSQL Data Base Management System
|
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
|
Permission to use, copy, modify, and distribute this software and its
|
||||||
documentation for any purpose, without fee, and without a written
|
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.
|
Unix/NT porting library. See pgsql/doc/README.NT in the distribution.
|
||||||
|
|
||||||
There is also a web page at
|
There is also a web page at
|
||||||
http://members.tripod.com/~kevlo/postgres/portNT.html. There is
|
http://www.freebsd.org/~kevlo/postgres/portNT.html. There is another
|
||||||
another port using U/Win at http://surya.wipro.com/uwin/ported.html.
|
port using U/Win at http://surya.wipro.com/uwin/ported.html.
|
||||||
|
|
||||||
1.5) Where can I get PostgreSQL?
|
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
|
There is a nice tutorial at http://w3.one.net/~jhoffman/sqltut.htm and
|
||||||
at
|
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.,
|
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?
|
1.11) Is PostgreSQL Y2K compliant?
|
||||||
|
|
||||||
@ -295,7 +304,7 @@
|
|||||||
subscribe to the pgsql-hackers and pgsql-patches mailing lists. Third,
|
subscribe to the pgsql-hackers and pgsql-patches mailing lists. Third,
|
||||||
submit high-quality patches to pgsql-patches.
|
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
|
PostgreSQL CVS archive. All of them have submitted so many
|
||||||
high-quality patches that it was a pain for the existing committers to
|
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
|
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?
|
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
|
you to see how PostgreSQL is interpreting your query, and which
|
||||||
indices are being used.
|
indices are being used.
|
||||||
|
|
||||||
If you are doing a lot of inserts, consider doing them in a large
|
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
|
batch using the COPY command. This is much faster than single
|
||||||
individual inserts. Second, statements not in a begin work/commit
|
individual INSERTS. Second, statements not in a BEGIN WORK/COMMIT
|
||||||
transaction block are considered to be in their own transaction.
|
transaction block are considered to be in their own transaction.
|
||||||
Consider performing several statements in a single transaction block.
|
Consider performing several statements in a single transaction block.
|
||||||
This reduces the transaction overhead. Also consider dropping and
|
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
|
is unwise to make this value too large, or you may run out of memory
|
||||||
when a query invokes several concurrent sorts.
|
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.
|
match an index. See the cluster(l) manual page for more details.
|
||||||
|
|
||||||
3.11) What debugging features are available in PostgreSQL?
|
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?
|
3.13) What are the pg_tempNNN.NN files in my database directory?
|
||||||
|
|
||||||
They are temporary files generated by the query executor. For example,
|
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
|
requires more space than the backend's -S parameter allows, then temp
|
||||||
files are created to hold the extra data.
|
files are created to hold the extra data.
|
||||||
|
|
||||||
@ -648,16 +657,17 @@
|
|||||||
4.2) What is the exact difference between binary cursors and normal
|
4.2) What is the exact difference between binary cursors and normal
|
||||||
cursors?
|
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
|
The entire query may have to be evaluated, even if you only want the
|
||||||
client. The entire query must be evaluated, even if you only want just
|
first few rows. Consider a query that has an ORDER BY. If there is an
|
||||||
the first few rows. Consider a query that has an order by. There is no
|
index that matches the ORDER BY, PostgreSQL may be able to evaluate
|
||||||
way to return any rows until the entire query is evaluated and sorted.
|
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?
|
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?
|
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
|
SELECT ... -- select all columns but the one you want to remove
|
||||||
INTO TABLE new_table
|
INTO TABLE new_table
|
||||||
FROM old_table;
|
FROM old_table;
|
||||||
@ -725,35 +735,36 @@
|
|||||||
\? to see them.
|
\? to see them.
|
||||||
|
|
||||||
Also try the file pgsql/src/tutorial/syscat.source. It illustrates
|
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.
|
tables.
|
||||||
|
|
||||||
4.9) My queries are slow or don't make use of the indexes. Why?
|
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
|
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
|
updated, the optimizer knows how many rows in the table, and can
|
||||||
better decide if it should use indices. Note that the optimizer does
|
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
|
not use indices in cases when the table is small because a sequential
|
||||||
scan would be faster.
|
scan would be faster.
|
||||||
|
|
||||||
For column-specific optimization statistics, use vacuum analyze.
|
For column-specific optimization statistics, use VACUUM ANALYZE.
|
||||||
Vacuum analyze is important for complex multi-join queries, so the
|
VACUUM ANALYZE is important for complex multi-join queries, so the
|
||||||
optimizer can estimate the number of rows returned from each table,
|
optimizer can estimate the number of rows returned from each table,
|
||||||
and choose the proper join order. The backend does not keep track of
|
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.
|
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
|
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
|
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 %,
|
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?
|
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?
|
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
|
using them. Specifically, the penalty is for access to all columns
|
||||||
after the first column of this type.
|
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
|
PostgreSQL supports SERIAL data type. It auto-creates a sequence and
|
||||||
index on the column. See the create_sequence manual page for more
|
index on the column. For example, this...
|
||||||
information about sequences. You can also use each row's oid field as
|
CREATE TABLE person (
|
||||||
a unique value. However, if you need to dump and reload the database,
|
id SERIAL,
|
||||||
you need to use pg_dump's -o option or copy with oids option to
|
name TEXT
|
||||||
preserve the oids.
|
);
|
||||||
|
|
||||||
|
...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?
|
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
|
Some of the source code and older documentation use terms that have
|
||||||
more common usage. Here are some:
|
more common usage. Here are some:
|
||||||
|
* table, relation, class
|
||||||
* row, record, tuple
|
* row, record, tuple
|
||||||
* attribute, field, column
|
* column, field, attribute
|
||||||
* table, class
|
|
||||||
* retrieve, select
|
* retrieve, select
|
||||||
* replace, update
|
* replace, update
|
||||||
* append, insert
|
* 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
|
but this makes the column default to the time of table creation, not
|
||||||
the time of row insertion. Instead do:
|
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
|
The calling of the function now() prevents the default value from
|
||||||
computed at table creation time, and delays it until insertion time.
|
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
|
Extending PostgreSQL
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
<title id="BOWMAN93-full">
|
<title id="BOWMAN93-full">
|
||||||
The Practical <acronym>SQL</acronym> Handbook
|
The Practical <acronym>SQL</acronym> Handbook
|
||||||
</title>
|
</title>
|
||||||
<titleabbrev id="BOWMAN93">
|
<titleabbrev id="BOWMAN96">
|
||||||
Bowman et al, 1993
|
Bowman et al, 1996
|
||||||
</titleabbrev>
|
</titleabbrev>
|
||||||
<subtitle>
|
<subtitle>
|
||||||
Using Structured Query Language
|
Using Structured Query Language
|
||||||
@ -28,7 +28,7 @@
|
|||||||
<edition>3</edition>
|
<edition>3</edition>
|
||||||
<authorgroup>
|
<authorgroup>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Judity</firstname>
|
<firstname>Judith</firstname>
|
||||||
<surname>Bowman</surname>
|
<surname>Bowman</surname>
|
||||||
</author>
|
</author>
|
||||||
<author>
|
<author>
|
||||||
@ -37,7 +37,7 @@
|
|||||||
</author>
|
</author>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Marcy</firstname>
|
<firstname>Marcy</firstname>
|
||||||
<surname>Damovsky</surname>
|
<surname>Darnovsky</surname>
|
||||||
</author>
|
</author>
|
||||||
</authorgroup>
|
</authorgroup>
|
||||||
<isbn>0-201-44787-8</isbn>
|
<isbn>0-201-44787-8</isbn>
|
||||||
@ -46,7 +46,7 @@
|
|||||||
<publishername>Addison-Wesley</publishername>
|
<publishername>Addison-Wesley</publishername>
|
||||||
</publisher>
|
</publisher>
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>1997</year>
|
<year>1996</year>
|
||||||
<holder>Addison-Wesley Longman, Inc.</holder>
|
<holder>Addison-Wesley Longman, Inc.</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
<!--
|
<!--
|
||||||
|
@ -1,6 +1,405 @@
|
|||||||
<chapter id="release">
|
<chapter id="release">
|
||||||
<title>Release Notes</title>
|
<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>
|
<sect1>
|
||||||
<title>Release 6.5.3</title>
|
<title>Release 6.5.3</title>
|
||||||
<!--
|
<!--
|
||||||
@ -442,7 +841,7 @@ Fix for memory leak in executor with fjIsNull
|
|||||||
Fix for aggregate memory leaks(Erik Riedel)
|
Fix for aggregate memory leaks(Erik Riedel)
|
||||||
Allow username containing a dash GRANT permissions
|
Allow username containing a dash GRANT permissions
|
||||||
Cleanup of NULL in inet types
|
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)
|
Fix problems of PAGER and \? command(Masaaki Sakaida)
|
||||||
Reduce default multi-segment file size limit to 1GB(Peter)
|
Reduce default multi-segment file size limit to 1GB(Peter)
|
||||||
Fix for dumping of CREATE OPERATOR(Tom)
|
Fix for dumping of CREATE OPERATOR(Tom)
|
||||||
|
@ -5,7 +5,6 @@ doc/Machine-specific FAQ's
|
|||||||
doc/bug.template
|
doc/bug.template
|
||||||
update include/version.h.in after release, including subversion
|
update include/version.h.in after release, including subversion
|
||||||
update pgaccess
|
update pgaccess
|
||||||
update odbc
|
|
||||||
update src/interfaces/jdbc/postgresql/jdbc1/DatabaseMetaData.java
|
update src/interfaces/jdbc/postgresql/jdbc1/DatabaseMetaData.java
|
||||||
update src/interfaces/jdbc/postgresql/jdbc2/DatabaseMetaData.java
|
update src/interfaces/jdbc/postgresql/jdbc2/DatabaseMetaData.java
|
||||||
update pg_upgrade to handle new version, or disable
|
update pg_upgrade to handle new version, or disable
|
||||||
@ -18,3 +17,4 @@ update documentation
|
|||||||
man pages
|
man pages
|
||||||
sgml docs
|
sgml docs
|
||||||
update VERSION numbers of interfaces
|
update VERSION numbers of interfaces
|
||||||
|
update ports list
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
# Usage $0 [-r 'revision pattern'] file
|
# 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
|
# pgcvslog -r '\.2\.[0-9]*$' log
|
||||||
|
|
||||||
if [ "X$1" = "X-r" ]
|
if [ "X$1" = "X-r" ]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user