Commit ef1b846d authored by Bruce Momjian's avatar Bruce Momjian

Remove <note> take, use another paragraph for description.

parent 88a75768
...@@ -14,52 +14,44 @@ ...@@ -14,52 +14,44 @@
ordinary joins and so is much faster, and is now faster than ordinary joins and so is much faster, and is now faster than
EXISTS subqueries. EXISTS subqueries.
* Improved GROUP BY processing by using hash buckets * Improved GROUP BY processing by using hash buckets
In previous releases, GROUP BY totals were accumulated by
Note: In previous releases, GROUP BY totals were accumulated by sequentially scanning the list of groups looking for a match; the
sequentially scanning the list of groups looking for a match; the 7.4 code places GROUP BY values in hash buckets so the proper
7.4 code places GROUP BY values in hash buckets so the proper match match can be found much quicker. This is particularly significant
can be found much quicker. This is particularly significant in in speeding up queries that have a large number of distinct GROUP
speeding up queries that have a large number of distinct GROUP BY BY values.
values.
* New multi-key hash join capability * New multi-key hash join capability
In previous releases, hash joins could only occur on single-column
Note: In previous releases, hash joins could only occur on joins. This release allows multi-column hash joins.
single-column joins. This release allows multi-column hash joins.
* ANSI joins are now better optimized * ANSI joins are now better optimized
Prior releases evaluated ANSI join syntax only in the order
Note: Prior releases evaluated ANSI join syntax only in the order specified by the query; 7.4 allows full optimization of queries
specified by the query; 7.4 allows full optimization of queries using ANSI join syntax, meaning the optimizer considers all
using ANSI join syntax, meaning the optimizer considers all possible join orderings and chooses the most efficient.
possible join orderings and chooses the most efficient.
* Faster and more powerful regular expression code * Faster and more powerful regular expression code
The entire regular expression module has been replaced with a new
Note: The entire regular expression module has been replaced with a version by Henry Spencer, originally written for TCL. The code
new version by Henry Spencer, originally written for TCL. The code greatly improves performance and supports several flavors of
greatly improves performance and supports several flavors of regular expressions.
regular expressions.
* Function-inlining for simple SQL functions * Function-inlining for simple SQL functions
Simple SQL functions can now be inlined by including their SQL in
Note: Simple SQL functions can now be inlined by including their the main query. This improves performance by preventing repeated
SQL in the main query. This improves performance by preventing calls to the SQL function --- this allows simple SQL functions to
repeated calls to the SQL function --- this allows simple SQL behave like macros.
functions to behave like macros.
* Full support for IPv6 connections and IPv6 address data types * Full support for IPv6 connections and IPv6 address data types
Prior releases allowed only IPv6 connections and IP data types
Note: Prior releases allowed only IPv6 connections and IP data only supported IPv4 addresses. This release adds full IPv6 support
types only supported IPv4 addresses. This release adds full IPv6 in both of these areas.
support in both of these areas.
* Major improvements in SSL performance and reliability * Major improvements in SSL performance and reliability
Several people very familiar with the SSL API have overhauled our
Note: Several people very familiar with the SSL API have overhauled SSL code to improve SSL key negotiation and error recovery.
our SSL code to improve SSL key negotiation and error recovery.
* Allow free space map to efficiently reuse empty index pages, and * Allow free space map to efficiently reuse empty index pages, and
other free space management improvements. other free space management improvements.
In prior releases, index pages that were left empty because of
Note: In prior releases, index pages that were left empty because deleted rows could only be reused by rows with index values
of deleted rows could only be reused by rows with index values similar to the original rows indexed on that page. In 7.4, VACUUM
similar to the original rows indexed on that page. In 7.4, VACUUM records empty index pages and allows them to be used for any
records empty index pages and allows them to be used for any future future index rows.
index rows.
* Implement information schema * Implement information schema
* Support for read-only transactions * Support for read-only transactions
* Make cursors comply more closely with the SQL standard * Make cursors comply more closely with the SQL standard
...@@ -70,20 +62,17 @@ ...@@ -70,20 +62,17 @@
cursors cursors
* libpq and ecpg are now fully thread-safe with * libpq and ecpg are now fully thread-safe with
--enable-thread-safety --enable-thread-safety
While prior libpq releases already supported threads, this release
Note: While prior libpq releases already supported threads, this improves thread safety by fixing some non-thread-safe code that
release improves thread safety by fixing some non-thread-safe code was used in the database connection routines.
that was used in the database connection routines.
* New version of full text indexing in /contrib/tsearch2 * New version of full text indexing in /contrib/tsearch2
* New autovacuum tool in /contrib * New autovacuum tool in /contrib
This new tool monitors the database statistics tables for
Note: This new tool monitors the database statistics tables for INSERT/UPDATE/DELETE activity and automatically vacuums tables
INSERT/UPDATE/DELETE activity and automatically vacuums tables when when needed.
needed.
* Array handling has been improved and moved into the main server * Array handling has been improved and moved into the main server
Many array limitations have been removed and they behave more like
Note: Many array limitations have been removed and they behave more fully-supported data types.
like fully-supported data types.
_________________________________________________________________ _________________________________________________________________
Migration to version 7.4 Migration to version 7.4
...@@ -95,11 +84,10 @@ ...@@ -95,11 +84,10 @@
* The server-side autocommit setting was removed and reimplemented * The server-side autocommit setting was removed and reimplemented
in client applications and languages. in client applications and languages.
Server-side autocommit was causing too many problems with
Note: Server-side autocommit was causing too many problems with languages and applications that wanted to control their own
languages and applications that wanted to control their own autocommit behavior so autocommit was removed from the server and
autocommit behavior so autocommit was removed from the server and added to individual client API's as appropriate.
added to individual client API's as appropriate.
* Error message wording has changed substantially in this release, * Error message wording has changed substantially in this release,
and error codes have been added. and error codes have been added.
* ANSI inner joins may behave differently because they are now * ANSI inner joins may behave differently because they are now
...@@ -107,14 +95,12 @@ ...@@ -107,14 +95,12 @@
* A number of server variables have been renamed for clarity, * A number of server variables have been renamed for clarity,
primarily those related to logging primarily those related to logging
* MOVE/FETCH 0 now does nothing * MOVE/FETCH 0 now does nothing
In prior releases, FETCH 0 would fetch all remaining rows, and
Note: In prior releases, FETCH 0 would fetch all remaining rows, MOVE 0 would move to the end of the cursor.
and MOVE 0 would move to the end of the cursor.
* MOVE/FETCH now returns the actual number of rows moved/fetched, or * MOVE/FETCH now returns the actual number of rows moved/fetched, or
zero if at the beginning/end of the cursor zero if at the beginning/end of the cursor
Prior releases would return the tuple count passed to the command,
Note: Prior releases would return the tuple count passed to the not the actual number of rows FETCHed or MOVEd.
command, not the actual number of rows FETCHed or MOVEd.
* COPY now can process carriage-return and carriage-return/line-feed * COPY now can process carriage-return and carriage-return/line-feed
end-of-line terminated files. end-of-line terminated files.
* Literal carriage-returns and line-feeds are no longer accepted as * Literal carriage-returns and line-feeds are no longer accepted as
...@@ -124,33 +110,27 @@ ...@@ -124,33 +110,27 @@
* FLOAT(p) now measures 'p' in bits, not digits * FLOAT(p) now measures 'p' in bits, not digits
* Ambiguous date values now must match the ordering specified by * Ambiguous date values now must match the ordering specified by
DateStyle DateStyle
In prior releases, a date of 10/20/03 was interpreted as a date in
Note: In prior releases, a date of 10/20/03 was interpreted as a October even if the DateStyle specified the day should be first.
date in October even if the DateStyle specified the day should be In 7.4, DateStyle is honored when converting such values and will
first. In 7.4, DateStyle is honored when converting such values and throw an error if the date is invalid for the current DateStyle.
will throw an error if the date is invalid for the current
DateStyle.
* The oidrand(), oidsrand(), and userfntest() functions have been * The oidrand(), oidsrand(), and userfntest() functions have been
removed. removed.
These functions were determined to be no longer useful.
Note: These functions were determined to be no longer useful.
* 'now' will no longer work as a column default; now() or * 'now' will no longer work as a column default; now() or
CURRENT_TIMESTAMP should be used instead CURRENT_TIMESTAMP should be used instead
In prior releases, there was special code so the string 'now' was
Note: In prior releases, there was special code so the string 'now' interpreted at "INSERT" time and not at table creation time, but
was interpreted at "INSERT" time and not at table creation time, this work around didn't cover all cases. Release 7.4 now requires
but this work around didn't cover all cases. Release 7.4 now that defaults be defined properly using the now() or the special
requires that defaults be defined properly using the now() or the value CURRENT_TIMESTAMP. These will work in all situations.
special value CURRENT_TIMESTAMP. These will work in all situations.
* 'today' will no longer work as a column default; CURRENT_DATE * 'today' will no longer work as a column default; CURRENT_DATE
should be used instead should be used instead
Same description as above.
Note: Same description as above.
* Dollar sign ($) is no longer allowed in operator names * Dollar sign ($) is no longer allowed in operator names
* Dollar sign ($) can be a non-first character in identifiers * Dollar sign ($) can be a non-first character in identifiers
This was done to improve compatibility with other database
Note: This was done to improve compatibility with other database systems.
systems.
_________________________________________________________________ _________________________________________________________________
Server Operation Changes Server Operation Changes
...@@ -158,44 +138,36 @@ ...@@ -158,44 +138,36 @@
* Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce, * Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce,
Tom, Kurt Roeckx, Andrew Dunstan) Tom, Kurt Roeckx, Andrew Dunstan)
* Fix SSL to handle errors cleanly (Nathan Mueller) * Fix SSL to handle errors cleanly (Nathan Mueller)
In prior releases, certain rare SSL API error reports were not
Note: In prior releases, certain rare SSL API error reports were handled correctly. This release fixes those problems. gracefully.
not handled correctly. This release fixes those problems.
gracefully.
* SSL protocol security and performance improvements (Sean * SSL protocol security and performance improvements (Sean
Chittenden) Chittenden)
SSL key renegotiation was happening too frequently, causing poor
Note: SSL key renegotiation was happening too frequently, causing SSL performance. Also, initial key handling was improved.
poor SSL performance. Also, initial key handling was improved.
* Print lock information when a deadlock is detected (Tom) * Print lock information when a deadlock is detected (Tom)
This allows easier debugging of deadlock situations.
Note: This allows easier debugging of deadlock situations.
* Update "/tmp" socket mod. times regularly to avoid their removal * Update "/tmp" socket mod. times regularly to avoid their removal
(Tom) (Tom)
This should help prevent "/tmp" directory cleaner administration
Note: This should help prevent "/tmp" directory cleaner scripts from removing server socket files.
administration scripts from removing server socket files.
* Enable PAM for MAC OS X (Aaron Hillegass) * Enable PAM for MAC OS X (Aaron Hillegass)
* Make btree indexes fully WAL-safe (Tom) * Make btree indexes fully WAL-safe (Tom)
In prior releases, under certain rare cases, a server crash could
Note: In prior releases, under certain rare cases, a server crash cause btree indexes to become corrupt. This release removes those
could cause btree indexes to become corrupt. This release removes last few rare cases.
those last few rare cases.
* Allow btree index compaction and empty page reuse (Tom) * Allow btree index compaction and empty page reuse (Tom)
* Fix inconsistent index lookups during split of first root page * Fix inconsistent index lookups during split of first root page
(Tom) (Tom)
In prior releases, when a single-page index split into two page,
Note: In prior releases, when a single-page index split into two there was a brief period when another database session would miss
page, there was a brief period when another database session would seeing an index entry. This failure was possible primarly on
miss seeing an index entry. This failure was possible primarly on multi-cpu machines. This release fixes that rare failure case.
multi-cpu machines. This release fixes that rare failure case.
* Improve free space map allocation logic (Tom) * Improve free space map allocation logic (Tom)
* Preserve free space information between postmaster restarts (Tom) * Preserve free space information between postmaster restarts (Tom)
In prior releases, the free space map was not saved when the
Note: In prior releases, the free space map was not saved when the postmaster was stopped, so newly started servers has no free space
postmaster was stopped, so newly started servers has no free space information. This release saves the free space map, which is
information. This release saves the free space map, which is loaded loaded when the server is restarted.
when the server is restarted.
* Set proper schema permissions in initdb (Peter) * Set proper schema permissions in initdb (Peter)
* Add start time to pg_stat_activity (Neil) * Add start time to pg_stat_activity (Neil)
* New code to detect corrupt disk pages; erase with * New code to detect corrupt disk pages; erase with
...@@ -219,24 +191,21 @@ ...@@ -219,24 +191,21 @@
* Improve constant folding (Tom) * Improve constant folding (Tom)
* Add ability to inline simple SQL functions (Tom) * Add ability to inline simple SQL functions (Tom)
* Reduce memory usage for queries using complex functions (Tom) * Reduce memory usage for queries using complex functions (Tom)
In prior releases, functions returning allocated memory would not
Note: In prior releases, functions returning allocated memory would free it until the query completed. This release allows the freeing
not free it until the query completed. This release allows the of function-allocated memory when the function call completes,
freeing of function-allocated memory when the function call reducing the total memory used by functions.
completes, reducing the total memory used by functions.
* Improve GEQO optimizer performance (Tom) * Improve GEQO optimizer performance (Tom)
There were several inefficiencies in the way the GEQO optimizer
Note: There were several inefficiencies in the way the GEQO managed potential query paths. This release fixes this.
optimizer managed potential query paths. This release fixes this.
* Allow IN/NOT IN to be handled via hash tables (Tom) * Allow IN/NOT IN to be handled via hash tables (Tom)
* Improve NOT IN (subquery) performance (Tom) * Improve NOT IN (subquery) performance (Tom)
* Allow most IN subqueries to be processed as joins (Tom) * Allow most IN subqueries to be processed as joins (Tom)
* Allow the postmaster to preload libraries using preload_libraries * Allow the postmaster to preload libraries using preload_libraries
(Joe) (Joe)
For shared libraries that require a long time to load, this option
Note: For shared libraries that require a long time to load, this is available so the library can be pre-loaded in the postmaster
option is available so the library can be pre-loaded in the and inherited by all database sessions.
postmaster and inherited by all database sessions.
* Improve optimizer cost computations, particularly for subqueries * Improve optimizer cost computations, particularly for subqueries
(Tom) (Tom)
* Avoid sort when subquery ORDER BY matches upper query (Tom) * Avoid sort when subquery ORDER BY matches upper query (Tom)
...@@ -251,109 +220,93 @@ ...@@ -251,109 +220,93 @@
(Henry Spencer, Tom) (Henry Spencer, Tom)
* Use bit-mapped relation sets in the optimizer (Tom) * Use bit-mapped relation sets in the optimizer (Tom)
* Improve backend startup time (Tom) * Improve backend startup time (Tom)
The new network protocol requires fewer network packets to start a
Note: The new network protocol requires fewer network packets to database session.
start a database session.
* Improve trigger/constraint performance (Stephan) * Improve trigger/constraint performance (Stephan)
* Improve speed of col IN (const, const, const, ...) (Tom) * Improve speed of col IN (const, const, const, ...) (Tom)
* Fix hash indexes which were broken in rare cases (Tom) * Fix hash indexes which were broken in rare cases (Tom)
* Improve hash index concurrency and speed (Tom) * Improve hash index concurrency and speed (Tom)
Prior releases suffered from poor hash index performance,
Note: Prior releases suffered from poor hash index performance, particularly for high concurrency situations. This release fixes
particularly for high concurrency situations. This release fixes that, and the development group is interested in reports comparing
that, and the development group is interested in reports comparing btree and hash index performance.
btree and hash index performance.
* Align shared buffers on 32-byte boundary for copy speed * Align shared buffers on 32-byte boundary for copy speed
improvement (Manfred Spraul) improvement (Manfred Spraul)
Certain CPU's perform faster data copies when addresses are 32-bit
Note: Certain CPU's perform faster data copies when addresses are aligned.
32-bit aligned.
* The NUMERIC datatype has been reimplemented for better performance * The NUMERIC datatype has been reimplemented for better performance
(Tom) (Tom)
NUMERIC used to be stored in base-100. The new code uses
Note: NUMERIC used to be stored in base-100. The new code uses base-10000, for significantly better performance.
base-10000, for significantly better performance.
_________________________________________________________________ _________________________________________________________________
Server Configuration Changes Server Configuration Changes
* Rename server parameter server_min_messages to log_min_messages * Rename server parameter server_min_messages to log_min_messages
(Bruce) (Bruce)
This was done so most parameters that control the server logs
Note: This was done so most parameters that control the server logs being with log_.
being with log_.
* Rename show_*_stats to log_*_stats (Bruce) * Rename show_*_stats to log_*_stats (Bruce)
* Rename show_source_port to log_source_port (Bruce) * Rename show_source_port to log_source_port (Bruce)
* Rename hostname_lookup to log_hostname (Bruce) * Rename hostname_lookup to log_hostname (Bruce)
* Add checkpoint_warning to warn of excessive checkpointing (Bruce) * Add checkpoint_warning to warn of excessive checkpointing (Bruce)
In prior releases, it was difficult to determine if checkpoint was
Note: In prior releases, it was difficult to determine if happening too frequently. This feature adds a warning to the
checkpoint was happening too frequently. This feature adds a server logs when excessive checkpointing happens.
warning to the server logs when excessive checkpointing happens.
* New read-only server parameters for localization (Tom) * New read-only server parameters for localization (Tom)
* Change debug server log messages to output as DEBUG rather than * Change debug server log messages to output as DEBUG rather than
LOG (Bruce) LOG (Bruce)
* Prevent server log variables from being turned off by non-super * Prevent server log variables from being turned off by non-super
users (Bruce) users (Bruce)
This is a security feature so non-super-users can't disable
Note: This is a security feature so non-super-users can't disable logging that was enabled by the administrator.
logging that was enabled by the administrator.
* log_min_messages/client_min_messages now controls debug_* output * log_min_messages/client_min_messages now controls debug_* output
(Bruce) (Bruce)
This centralizes client debug information so all debug output can
Note: This centralizes client debug information so all debug output be sent to either the client or server logs.
can be sent to either the client or server logs.
* Add OS X Rendezvous server support (Chris Campbell) * Add OS X Rendezvous server support (Chris Campbell)
This allows OS X machines to query the network for available
Note: This allows OS X machines to query the network for available PostgreSQL servers.
PostgreSQL servers.
* Add ability to print only slow statements using * Add ability to print only slow statements using
log_min_duration_statement (Christopher) log_min_duration_statement (Christopher)
This is an often requested debugging feature that allows
Note: This is an often requested debugging feature that allows administrators to see only slow queries in their server logs.
administrators to see only slow queries in their server logs.
* Allow pg_hba.conf to accept netmasks in CIDR format (Andrew * Allow pg_hba.conf to accept netmasks in CIDR format (Andrew
Dunstan) Dunstan)
This allows administrators to merge the host IP address and
Note: This allows administrators to merge the host IP address and netmask fields into a single CIDR field in pg_hba.conf.
netmask fields into a single CIDR field in pg_hba.conf.
* New is_superuser read-only variable (Tom) * New is_superuser read-only variable (Tom)
* New server-side parameter log_error_verbosity to control error * New server-side parameter log_error_verbosity to control error
detail (Tom) detail (Tom)
This works with the new error reporting feature to supply
Note: This works with the new error reporting feature to supply additional error information like hints, file names and line
additional error information like hints, file names and line numbers.
numbers.
* postgres --describe-config now dumps server config variables * postgres --describe-config now dumps server config variables
(Aizaz Ahmed, Peter) (Aizaz Ahmed, Peter)
This option is useful for administration tools that need to know
Note: This option is useful for administration tools that need to the configuration variable names and their minimum, maximums,
know the configuration variable names and their minimum, maximums, defaults, and descriptions.
defaults, and descriptions.
* Make default shared_buffers 1000 and max_connections 100, if * Make default shared_buffers 1000 and max_connections 100, if
possible (Tom) possible (Tom)
Prior versions defaulted to 64 shared buffers so PostgreSQL would
Note: Prior versions defaulted to 64 shared buffers so PostgreSQL start on even old computers. This release tests the amount of
would start on even old computers. This release tests the amount of shared memory supported by the hardware and sizes it accordingly.
shared memory supported by the hardware and sizes it accordingly. Of course, users are still encouraged to evaluate their resource
Of course, users are still encouraged to evaluate their resource load and size shared_buffers accordingly.
load and size shared_buffers accordingly.
* Add new columns in pg_settings: context, type, source, min_val, * Add new columns in pg_settings: context, type, source, min_val,
max_val (Joe) max_val (Joe)
* New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon * New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon
Jensen) Jensen)
In prior releases, there was no way to prevent SSL connections if
Note: In prior releases, there was no way to prevent SSL both the client and server supported SSL. This option allows that
connections if both the client and server supported SSL. This capability.
option allows that capability.
* Remove geqo_random_seed server parameter (Tom) * Remove geqo_random_seed server parameter (Tom)
_________________________________________________________________ _________________________________________________________________
Query Changes Query Changes
* New SQL-standard information schema (Peter) * New SQL-standard information schema (Peter)
bjm
Note: bjm
* Add read-only transactions (Peter) * Add read-only transactions (Peter)
* Add server variable regex_flavor to control regular expression * Add server variable regex_flavor to control regular expression
processing (Tom) processing (Tom)
...@@ -361,121 +314,97 @@ ...@@ -361,121 +314,97 @@
Tkach) Tkach)
* Allow users to see their own queries in pg_stat_activity (Kevin * Allow users to see their own queries in pg_stat_activity (Kevin
Brown) Brown)
In prior releases, only the super-user could see query strings
Note: In prior releases, only the super-user could see query using pg_stat_activity. Now ordinary users can see their own query
strings using pg_stat_activity. Now ordinary users can see their strings.
own query strings.
* Fix subquery aggregates of upper query columns to match SQL spec. * Fix subquery aggregates of upper query columns to match SQL spec.
(Tom) (Tom)
bjm
Note: bjm
* Add option to prevent auto-addition of tables referenced in query * Add option to prevent auto-addition of tables referenced in query
(Nigel J. Andrews) (Nigel J. Andrews)
By default, tables mentioned in the query are automatically added
Note: By default, tables mentioned in the query are automatically to the FROM clause if they are not already there. This option
added to the FROM clause if they are not already there. This option disabled that behavior.
disabled that behavior.
* Allow UPDATE ... SET col = DEFAULT (Rod) * Allow UPDATE ... SET col = DEFAULT (Rod)
This allows UPDATE to set a column to its default value.
Note: This allows UPDATE to set a column to its default value.
* Allow expressions to be used in LIMIT/OFFSET (Tom) * Allow expressions to be used in LIMIT/OFFSET (Tom)
In prior releases, LIMIT/OFFSET could only use constants, not
Note: In prior releases, LIMIT/OFFSET could only use constants, not expressions.
expressions.
* Change EXECUTE INTO to CREATE TABLE AS EXECUTE (Peter) * Change EXECUTE INTO to CREATE TABLE AS EXECUTE (Peter)
bjm ?
Note: bjm ?
_________________________________________________________________ _________________________________________________________________
Object Manipulation Changes Object Manipulation Changes
* Make CREATE SEQUENCE grammar more SQL1999 standards compliant * Make CREATE SEQUENCE grammar more SQL1999 standards compliant
(Neil) (Neil)
bjm ?
Note: bjm ?
* Add FOR EACH STATEMENT statement-level triggers (Neil) * Add FOR EACH STATEMENT statement-level triggers (Neil)
While this allows a trigger to fire at the end of a statement, it
Note: While this allows a trigger to fire at the end of a does not allow the trigger to access all rows modified by the
statement, it does not allow the trigger to access all rows query. This capability is planned for a future release.
modified by the query. This capability is planned for a future
release.
* Add DOMAIN CHECK constraints (Rod) * Add DOMAIN CHECK constraints (Rod)
This greatly increases the usefulness of domains by allowing them
Note: This greatly increases the usefulness of domains by allowing to use CHECK constraints.
them to use CHECK constraints.
* Add ALTER DOMAIN .. SET / DROP NOT NULL, SET / DROP DEFAULT, ADD / * Add ALTER DOMAIN .. SET / DROP NOT NULL, SET / DROP DEFAULT, ADD /
DROP CONSTRAINT (Rod) DROP CONSTRAINT (Rod)
This allows manipulation of existing domains.
Note: This allows manipulation of existing domains.
* Fix several zero-column table bugs (Tom) * Fix several zero-column table bugs (Tom)
PostgreSQL supports zero-column tables. This fixes various bugs
Note: PostgreSQL supports zero-column tables. This fixes various that occur when using such tables.
bugs that occur when using such tables.
* Have ALTER TABLE ... ADD PRIMARY KEY add NOT NULL constraint (Rod) * Have ALTER TABLE ... ADD PRIMARY KEY add NOT NULL constraint (Rod)
In prior releases, ALTER TABLE ADD PRIMARY would add a unique
Note: In prior releases, ALTER TABLE ADD PRIMARY would add a unique index, but not a NOT NULL constraint. That is fixed in this
index, but not a NOT NULL constraint. That is fixed in this release.
release.
* Add ALTER DOMAIN OWNER (Rod) * Add ALTER DOMAIN OWNER (Rod)
* Add ALTER TABLE ... WITHOUT OIDS (Rod) * Add ALTER TABLE ... WITHOUT OIDS (Rod)
This allows control over whether new and updated rows will have an
Note: This allows control over whether new and updated rows will oid column. This is most useful for saving storage space.
have an oid column. This is most useful for saving storage space.
* Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values * Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values
(Rod) (Rod)
* Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera) * Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera)
This command is used by pg_dump to record the CLUSTER column for
Note: This command is used by pg_dump to record the CLUSTER column each table previously clustered. This information is used by
for each table previously clustered. This information is used by database-wide cluster to cluster all previously clustered tables.
database-wide cluster to cluster all previously clustered tables.
* Improve DOMAIN automatic type casting (Rod, Tom) * Improve DOMAIN automatic type casting (Rod, Tom)
* Allow dollar signs in identifiers, except as first character (Tom) * Allow dollar signs in identifiers, except as first character (Tom)
* Disallow dollar signs in operator names, so x=$1 works (Tom) * Disallow dollar signs in operator names, so x=$1 works (Tom)
* Allow SQL200X inheritance syntax LIKE *subtable*, INCLUDING * Allow SQL200X inheritance syntax LIKE *subtable*, INCLUDING
DEFAULTS (Rod) DEFAULTS (Rod)
* Add WITH GRANT OPTION clause to GRANT, per SQL spec (Peter) * Add WITH GRANT OPTION clause to GRANT, per SQL spec (Peter)
Allow GRANT to give other users the ability to grant permissions
Note: Allow GRANT to give other users the ability to grant on a object.
permissions on a object.
_________________________________________________________________ _________________________________________________________________
Utility Command Changes Utility Command Changes
* Add ON COMMIT clause to CREATE TABLE for temp tables (Gavin) * Add ON COMMIT clause to CREATE TABLE for temp tables (Gavin)
This adds the ability for a table to be dropped or all rows
Note: This adds the ability for a table to be dropped or all rows deleted on transaction commit.
deleted on transaction commit.
* Allow cursors outside transactions using WITH HOLD (Neil) * Allow cursors outside transactions using WITH HOLD (Neil)
In previous releases, cursors were removed at the end of the
Note: In previous releases, cursors were removed at the end of the transaction. Using WITH HOLD, the current release allows
transaction. Using WITH HOLD, the current release allows transaction to remain outside their own transaction.
transaction to remain outside their own transaction.
* MOVE/FETCH 0 now does nothing (Bruce) * MOVE/FETCH 0 now does nothing (Bruce)
In previous releases, MOVE 0 moved to the end of the cursor, and
Note: In previous releases, MOVE 0 moved to the end of the cursor, FETCH 0 fetched all remaning rows.
and FETCH 0 fetched all remaning rows.
* Cause MOVE/FETCH to return the number of rows moved/fetched, or * Cause MOVE/FETCH to return the number of rows moved/fetched, or
zero if at the beginning/end of cursor, per SQL spec (Bruce) zero if at the beginning/end of cursor, per SQL spec (Bruce)
In prior releases, the row count returned by MOVE and FETCH did
Note: In prior releases, the row count returned by MOVE and FETCH not accurately reflect the number of rows processed.
did not accurately reflect the number of rows processed.
* Properly handle SCROLL with cursors, or report an error (Neil) * Properly handle SCROLL with cursors, or report an error (Neil)
Certain cursors can not be fetched backwards optimally. By
Note: Certain cursors can not be fetched backwards optimally. By specifying SCROLL, extra work will be performed to guarantee that
specifying SCROLL, extra work will be performed to guarantee that the cursor can be fetched in reverse or random order.
the cursor can be fetched in reverse or random order.
* Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n * Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n
options for FETCH and MOVE (Tom) options for FETCH and MOVE (Tom)
* Allow EXPLAIN on DECLARE CURSOR (Tom) * Allow EXPLAIN on DECLARE CURSOR (Tom)
Prior versions would not allow EXPLAIN on a DECLARE statement.
Note: Prior versions would not allow EXPLAIN on a DECLARE
statement.
* Allow CLUSTER to use index marked as pre-clustered by default * Allow CLUSTER to use index marked as pre-clustered by default
(Alvaro Herrera) (Alvaro Herrera)
* Allow CLUSTER to cluster all tables (Alvaro Herrera) * Allow CLUSTER to cluster all tables (Alvaro Herrera)
This allows all previously clustered tables in a database to be
Note: This allows all previously clustered tables in a database to reclustered with a single command.
be reclustered with a single command.
* Prevent CLUSTER on partial indexes (Tom) * Prevent CLUSTER on partial indexes (Tom)
* Allow \r and \r\n termination for COPY files (Bruce) * Allow \r and \r\n termination for COPY files (Bruce)
* Disallow literal carriage return as a data value, * Disallow literal carriage return as a data value,
...@@ -484,15 +413,13 @@ ...@@ -484,15 +413,13 @@
* Recover from COPY IN/OUT failure cleanly (Tom) * Recover from COPY IN/OUT failure cleanly (Tom)
* Prevent possible memory leaks in COPY (Tom) * Prevent possible memory leaks in COPY (Tom)
* Make TRUNCATE transaction-safe (Rod) * Make TRUNCATE transaction-safe (Rod)
Truncate can now be used inside a transaction, and rolled back if
Note: Truncate can now be used inside a transaction, and rolled the transaction aborts.
back if the transaction aborts.
* Multiple pggla_dump fixes, including tar format and large objects * Multiple pggla_dump fixes, including tar format and large objects
* Allow pg_dump to dump specific schemas (Neil) * Allow pg_dump to dump specific schemas (Neil)
* Allow pg_dump to preserve column storage characteristics * Allow pg_dump to preserve column storage characteristics
(Christopher) (Christopher)
This preserves ALTER TABLE ... SET STORAGE information.
Note: This preserves ALTER TABLE ... SET STORAGE information.
* Allow pg_dump to preserve CLUSTER characteristics (Christopher) * Allow pg_dump to preserve CLUSTER characteristics (Christopher)
* Have pg_dumpall use GRANT/REVOKE to dump database-level * Have pg_dumpall use GRANT/REVOKE to dump database-level
permissions (Tom) permissions (Tom)
...@@ -510,56 +437,47 @@ ...@@ -510,56 +437,47 @@
* Allow pg_ctl to better handle non-standard ports (Greg) * Allow pg_ctl to better handle non-standard ports (Greg)
* Functional indexes have been generalized into expressional indexes * Functional indexes have been generalized into expressional indexes
(Tom) (Tom)
In prior releases, only columns could be used in functional
Note: In prior releases, only columns could be used in functional indexes. This release allows any type of expression.
indexes. This release allows any type of expression.
* Syntax errors now reported as 'syntax error' rather than 'parse * Syntax errors now reported as 'syntax error' rather than 'parse
error' (Tom) error' (Tom)
* Have SHOW TRANSACTION_ISOLATION match input to SET * Have SHOW TRANSACTION_ISOLATION match input to SET
TRANSACTION_ISOLATION (Tom) TRANSACTION_ISOLATION (Tom)
* Have COMMENT ON DATABASE on non-local database generate a warning * Have COMMENT ON DATABASE on non-local database generate a warning
(Rod) (Rod)
Database comments are stored in database-local tables so comments
Note: Database comments are stored in database-local tables so on a database have to be stored in each database.
comments on a database have to be stored in each database.
* Improve reliability of LISTEN/NOTIFY (Tom) * Improve reliability of LISTEN/NOTIFY (Tom)
* Allow REINDEX to reliably reindex non-shared system catalog * Allow REINDEX to reliably reindex non-shared system catalog
indexes (Tom) indexes (Tom)
This allows system tables to be reindexed without the requirement
Note: This allows system tables to be reindexed without the of a standalone backend, which was necessary in previous releases.
requirement of a standalone backend, which was necessary in The only tables that now require a standalone backend for reindex
previous releases. The only tables that now require a standalone are the global system tables pg_database, pg_shadow, and pg_group.
backend for reindex are the global system tables pg_database,
pg_shadow, and pg_group.
* pg_dump --use-set-session-authorization and --no-reconnect now do * pg_dump --use-set-session-authorization and --no-reconnect now do
nothing, all dumps use SET SESSION AUTHORIZATION nothing, all dumps use SET SESSION AUTHORIZATION
pg_dump now no longer reconnects to switch users, but instead uses
Note: pg_dump now no longer reconnects to switch users, but instead SET SESSION AUTHORIZATION. This should reduce password prompting
uses SET SESSION AUTHORIZATION. This should reduce password during restores.
prompting during restores.
* Long options for pg_dump are now available on all platforms * Long options for pg_dump are now available on all platforms
We now include our own long option processing routines.
Note: We now include our own long option processing routines.
_________________________________________________________________ _________________________________________________________________
Data Type and Function Changes Data Type and Function Changes
* New extra_float_digits server parameter to control float precision * New extra_float_digits server parameter to control float precision
display (Pedro Ferreira, Tom) display (Pedro Ferreira, Tom)
This controls precision output which was causing regression
Note: This controls precision output which was causing regression testing problems.
testing problems.
* Allow +1300 as a numeric timezone specifier, for FJST (Tom) * Allow +1300 as a numeric timezone specifier, for FJST (Tom)
* Remove rarely used oidrand(), oidsrand(), and userfntest() * Remove rarely used oidrand(), oidsrand(), and userfntest()
functions (Neil) functions (Neil)
* Add md5() function to main server, already in /contrib/pgcrypto * Add md5() function to main server, already in /contrib/pgcrypto
(Joe) (Joe)
An md5 function was frequently requested. For more complex
Note: An md5 function was frequently requested. For more complex encryption capabilities, use /contrib/pgcrypto.
encryption capabilities, use /contrib/pgcrypto.
* Increase date range of timestamp (John Cochran) * Increase date range of timestamp (John Cochran)
bjm ??
Note: bjm ??
* Change EXTRACT(EPOCH FROM timestamp) so timestamp without time * Change EXTRACT(EPOCH FROM timestamp) so timestamp without time
zone is assumed to be in local time, not GMT (Tom) zone is assumed to be in local time, not GMT (Tom)
* Trap division by zero in case the operating system doesn't prevent * Trap division by zero in case the operating system doesn't prevent
...@@ -569,9 +487,8 @@ ...@@ -569,9 +487,8 @@
* Fixes for to_char() (Karel) * Fixes for to_char() (Karel)
* Allow functions that can take any argument data type and return * Allow functions that can take any argument data type and return
any data type, using ANYELEMENT and ANYARRAY (Joe) any data type, using ANYELEMENT and ANYARRAY (Joe)
This allows the creation of functions that can work with any data
Note: This allows the creation of functions that can work with any type.
data type.
* Arrays may now be specified as ARRAY[1,2,3], * Arrays may now be specified as ARRAY[1,2,3],
ARRAY[['a','b'],['c','d']], or ARRAY[ARRAY[ARRAY[2]]] (Joe) ARRAY[['a','b'],['c','d']], or ARRAY[ARRAY[ARRAY[2]]] (Joe)
* Allow proper comparisons for arrays (Joe) * Allow proper comparisons for arrays (Joe)
...@@ -580,31 +497,26 @@ ...@@ -580,31 +497,26 @@
(Joe) (Joe)
* Allow WHERE qualification 'expr >oper< ANY/SOME/ALL (array-expr)' * Allow WHERE qualification 'expr >oper< ANY/SOME/ALL (array-expr)'
(Joe) (Joe)
This allows arrays to behave like subqueries or a list of values:
Note: This allows arrays to behave like subqueries or a list of SELECT * FROM tab WHERE col IN array_val
values: SELECT * FROM tab WHERE col IN array_val
* Allow polymorphic SQL functions (Joe) * Allow polymorphic SQL functions (Joe)
bjm ??
Note: bjm ??
* New array functions array_append(), array_cat(), array_lower(), * New array functions array_append(), array_cat(), array_lower(),
array_prepend(), array_to_string(), array_upper(), array_prepend(), array_to_string(), array_upper(),
string_to_array() (Joe) string_to_array() (Joe)
* Allow user defined aggregates to use polymorphic functions (Joe) * Allow user defined aggregates to use polymorphic functions (Joe)
bjm ??
Note: bjm ??
* Allow polymorphic user defined aggregates (Joe) * Allow polymorphic user defined aggregates (Joe)
* Allow assignments to empty arrays (Joe) * Allow assignments to empty arrays (Joe)
* Allow 60 in seconds fields of timestamp, time, interval input * Allow 60 in seconds fields of timestamp, time, interval input
values (Tom) values (Tom)
Sixty-second values are needed for leap seconds.
Note: Sixty-second values are needed for leap seconds.
* Allow CIDR data type to be cast to text (Tom) * Allow CIDR data type to be cast to text (Tom)
* Allow the creation of special LIKE indexes for non-C locales * Allow the creation of special LIKE indexes for non-C locales
(Peter) (Peter)
There is no way for non-ASCII locales to use indexes for LIKE
Note: There is no way for non-ASCII locales to use indexes for LIKE comparisons. However, this release adds a way to create a special
comparisons. However, this release adds a way to create a special index for LIKE. bjm ??
index for LIKE. bjm ??
* Disallow invalid timezone names (Tom) * Disallow invalid timezone names (Tom)
* Trim trailing spaces when CHAR() is cast to VARCHAR or TEXT (Tom) * Trim trailing spaces when CHAR() is cast to VARCHAR or TEXT (Tom)
* Make FLOAT(p) measure the precision p in bits, not decimal digits * Make FLOAT(p) measure the precision p in bits, not decimal digits
...@@ -618,12 +530,9 @@ ...@@ -618,12 +530,9 @@
convention for the sign of timezone offsets, ie, positive is east convention for the sign of timezone offsets, ie, positive is east
from UTC (Tom) from UTC (Tom)
* Fix date_trunc('quarter',...) (B?jthe Zolt?n) * Fix date_trunc('quarter',...) (B?jthe Zolt?n)
Prior releases returned an incorrect value for this function call.
Note: Prior releases returned an incorrect value for this function
call.
* Make initcap() more compatible with Oracle (Mike Nolan) * Make initcap() more compatible with Oracle (Mike Nolan)
bjm ??
Note: bjm ??
* Allow only DateStyle field order for date values not in ISO format * Allow only DateStyle field order for date values not in ISO format
(Greg) (Greg)
* Add new DateStyle values MDY, DMY, and YMD; honor US and European * Add new DateStyle values MDY, DMY, and YMD; honor US and European
...@@ -649,11 +558,10 @@ ...@@ -649,11 +558,10 @@
* Fix PL/python _quote() function to handle big integers (?) * Fix PL/python _quote() function to handle big integers (?)
* Make PL/python an untrusted language, now called plpythonu (Kevin * Make PL/python an untrusted language, now called plpythonu (Kevin
Jacobs, Tom) Jacobs, Tom)
The Python language no longer supports a restricted execution
Note: The Python language no longer supports a restricted execution environment, so we removed the trusted version of PL/python. If
environment, so we removed the trusted version of PL/python. If this situation changes, we will re-add a version of PL/python that
this situation changes, we will re-add a version of PL/python that can be used by non-super users.
can be used by non-super users.
* Allow polymorphic PL/pgSQL functions (Tom, Joe) * Allow polymorphic PL/pgSQL functions (Tom, Joe)
* Improved compiled function caching mechanism in PL/pgSQL with full * Improved compiled function caching mechanism in PL/pgSQL with full
support for polymorphism (Joe) support for polymorphism (Joe)
...@@ -668,32 +576,26 @@ ...@@ -668,32 +576,26 @@
Psql Changes Psql Changes
* Add "\pset pager always" to always use pager (Greg) * Add "\pset pager always" to always use pager (Greg)
This forces the pager to be used even if the number of rows is
Note: This forces the pager to be used even if the number of rows less than the screen height --- this is valuable for rows that
is less than the screen height --- this is valuable for rows that wrap across several screen rows.
wrap across several screen rows.
* Improve tab completion (Rod, Ross Reedstrom, Ian Barwick) * Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)
* Reorder \? help into groupings (Harald Armin Massa, Bruce) * Reorder \? help into groupings (Harald Armin Massa, Bruce)
* Add backslash commands for listing schemas, casts, and conversions * Add backslash commands for listing schemas, casts, and conversions
(Christopher) (Christopher)
* \encoding now changes based on the client_encoding server variable * \encoding now changes based on the client_encoding server variable
(Tom) (Tom)
In previous versions, \encoding was not aware of encoding changes
Note: In previous versions, \encoding was not aware of encoding made using SET CLIENT_ENCODING.
changes made using SET CLIENT_ENCODING.
* Save edit history into readline history (Ross) * Save edit history into readline history (Ross)
When \e is used to edit a query, the result is saved in the
Note: When \e is used to edit a query, the result is saved in the readline history for retrieval using the up arrow.
readline history for retrieval using the up arrow.
* Improve \d display (Christopher) * Improve \d display (Christopher)
* Enhance HTML mode to be more standards-compliant (Greg) * Enhance HTML mode to be more standards-compliant (Greg)
* New '\set AUTOCOMMIT off' capability (Tom) * New '\set AUTOCOMMIT off' capability (Tom)
This takes the place of the remove server variable 'autocommit'.
Note: This takes the place of the remove server variable
'autocommit'.
* New '\set VERBOSITY' to control error detail (Tom) * New '\set VERBOSITY' to control error detail (Tom)
This controls the new error reporting details.
Note: This controls the new error reporting details.
* New %T prompt string to show transaction status (Tom) * New %T prompt string to show transaction status (Tom)
* Long options for psql are now available on all platforms * Long options for psql are now available on all platforms
_________________________________________________________________ _________________________________________________________________
...@@ -703,16 +605,14 @@ ...@@ -703,16 +605,14 @@
* Allow PQcmdTuples() to return row counts for MOVE and FETCH (Neil) * Allow PQcmdTuples() to return row counts for MOVE and FETCH (Neil)
* Add PQfreemem() for freeing memory on Win32, suggest for NOTIFY * Add PQfreemem() for freeing memory on Win32, suggest for NOTIFY
(Bruce) (Bruce)
Win32 requires that memory allocated in a library be freed by a
Note: Win32 requires that memory allocated in a library be freed by function in the same library, hence free() doesn't work for
a function in the same library, hence free() doesn't work for freeing memory allocated by libpq. PQfreemem() is the proper way
freeing memory allocated by libpq. PQfreemem() is the proper way to to free libpq memory, especially on Win32, and is recommended for
free libpq memory, especially on Win32, and is recommended for other platforms as well.
other platforms as well.
* Document service capability, and add sample file (Bruce) * Document service capability, and add sample file (Bruce)
This allows clients to look up connection information in a central
Note: This allows clients to look up connection information in a file on the client machine.
central file on the client machine.
* Make PQsetdbLogin() have the same defaults as PQconnectdb() (Tom) * Make PQsetdbLogin() have the same defaults as PQconnectdb() (Tom)
* Allow libpq to cleanly fail when result sets are too large (Tom) * Allow libpq to cleanly fail when result sets are too large (Tom)
* Improve performance of PGunescapeBytea() (Ben Lamb) * Improve performance of PGunescapeBytea() (Ben Lamb)
...@@ -725,10 +625,9 @@ ...@@ -725,10 +625,9 @@
* Allow new error codes and levels of text (Tom) * Allow new error codes and levels of text (Tom)
* Allow access to the underlying table and column of a query result * Allow access to the underlying table and column of a query result
(Tom) (Tom)
This is helpful for query-builder applications that want to know
Note: This is helpful for query-builder applications that want to the underlying table and column names associated with a specific
know the underlying table and column names associated with a result set.
specific result set.
* Allow access to the current transaction status (Tom) * Allow access to the current transaction status (Tom)
* Add ability to pass binary data directly to the backend (Tom) * Add ability to pass binary data directly to the backend (Tom)
* Add PQexecPrepared() and PQsendQueryPrepared() functions which * Add PQexecPrepared() and PQsendQueryPrepared() functions which
...@@ -749,15 +648,13 @@ ...@@ -749,15 +648,13 @@
* Prevent possible memory leak or core dump during libpgtcl shutdown * Prevent possible memory leak or core dump during libpgtcl shutdown
(Tom) (Tom)
* Add ecpg Informix compatibility (Michael) * Add ecpg Informix compatibility (Michael)
This allows ecpg to process embedded C programs that were written
Note: This allows ecpg to process embedded C programs that were using certain Informix extensions.
written using certain Informix extensions.
* Add ecpg DECIMAL type that is fixed length, for Informix (Michael) * Add ecpg DECIMAL type that is fixed length, for Informix (Michael)
* Allow thread-safe ecpg with --enable-thread-safety (Lee Kindness, * Allow thread-safe ecpg with --enable-thread-safety (Lee Kindness,
Bruce) Bruce)
This allows multiple ecpg threads to access the database at the
Note: This allows multiple ecpg threads to access the database at same time.
the same time.
* Move python client interface to http://www.pygresql.org (Marc) * Move python client interface to http://www.pygresql.org (Marc)
_________________________________________________________________ _________________________________________________________________
...@@ -786,13 +683,11 @@ ...@@ -786,13 +683,11 @@
* Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil) * Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)
* Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce) * Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)
* Remove --enable-recode option to configure * Remove --enable-recode option to configure
This was no longer needed now that we have CREATE CONVERSION.
Note: This was no longer needed now that we have CREATE CONVERSION.
* Generate a compile error if spinlock code is not found (Bruce) * Generate a compile error if spinlock code is not found (Bruce)
Platforms without spinlock code will now fail to compile, rather
Note: Platforms without spinlock code will now fail to compile, than silently using semaphores. This failure can be disabled with
rather than silently using semaphores. This failure can be disabled a new configure option.
with a new configure option.
_________________________________________________________________ _________________________________________________________________
Contrib Changes Contrib Changes
......
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.228 2003/10/31 04:30:22 momjian Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.229 2003/10/31 04:44:25 momjian Exp $
--> -->
<appendix id="release"> <appendix id="release">
...@@ -24,7 +24,6 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.228 2003/10/31 04:30:22 mo ...@@ -24,7 +24,6 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.228 2003/10/31 04:30:22 mo
</listitem> </listitem>
<listitem><para> Improved GROUP BY processing by using hash buckets</para> <listitem><para> Improved GROUP BY processing by using hash buckets</para>
<note>
<para> <para>
In previous releases, GROUP BY totals were accumulated by In previous releases, GROUP BY totals were accumulated by
sequentially scanning the list of groups looking for a match; sequentially scanning the list of groups looking for a match;
...@@ -33,76 +32,62 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.228 2003/10/31 04:30:22 mo ...@@ -33,76 +32,62 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.228 2003/10/31 04:30:22 mo
significant in speeding up queries that have a large significant in speeding up queries that have a large
number of distinct GROUP BY values. number of distinct GROUP BY values.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> New multi-key hash join capability</para> <listitem><para> New multi-key hash join capability</para>
<note>
<para> <para>
In previous releases, hash joins could only occur on single-column In previous releases, hash joins could only occur on single-column
joins. This release allows multi-column hash joins. joins. This release allows multi-column hash joins.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> ANSI joins are now better optimized</para> <listitem><para> ANSI joins are now better optimized</para>
<note>
<para> <para>
Prior releases evaluated ANSI join syntax only in the order Prior releases evaluated ANSI join syntax only in the order
specified by the query; 7.4 allows full optimization of specified by the query; 7.4 allows full optimization of
queries using ANSI join syntax, meaning the optimizer considers queries using ANSI join syntax, meaning the optimizer considers
all possible join orderings and chooses the most efficient. all possible join orderings and chooses the most efficient.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> Faster and more powerful regular expression code <listitem><para> Faster and more powerful regular expression code
</para> </para>
<note>
<para> <para>
The entire regular expression module has been replaced with a new The entire regular expression module has been replaced with a new
version by Henry Spencer, originally written for TCL. The code version by Henry Spencer, originally written for TCL. The code
greatly improves performance and supports several flavors greatly improves performance and supports several flavors
of regular expressions. of regular expressions.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> Function-inlining for simple SQL functions</para> <listitem><para> Function-inlining for simple SQL functions</para>
<note>
<para> <para>
Simple SQL functions can now be inlined by including their SQL Simple SQL functions can now be inlined by including their SQL
in the main query. This improves performance by preventing in the main query. This improves performance by preventing
repeated calls to the SQL function --- this allows simple repeated calls to the SQL function --- this allows simple
SQL functions to behave like macros. SQL functions to behave like macros.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> Full support for IPv6 connections and IPv6 address <listitem><para> Full support for IPv6 connections and IPv6 address
data types</para> data types</para>
<note>
<para> <para>
Prior releases allowed only IPv6 connections and IP data types only Prior releases allowed only IPv6 connections and IP data types only
supported IPv4 addresses. This release adds full IPv6 support in supported IPv4 addresses. This release adds full IPv6 support in
both of these areas. both of these areas.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> Major improvements in SSL performance and <listitem><para> Major improvements in SSL performance and
reliability</para> reliability</para>
<note>
<para> <para>
Several people very familiar with the SSL API have overhauled our Several people very familiar with the SSL API have overhauled our
SSL code to improve SSL key negotiation and error recovery. SSL code to improve SSL key negotiation and error recovery.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> Allow free space map to efficiently reuse empty index <listitem><para> Allow free space map to efficiently reuse empty index
pages, and other free space management improvements.</para> pages, and other free space management improvements.</para>
<note>
<para> <para>
In prior releases, index pages that were left empty because of In prior releases, index pages that were left empty because of
deleted rows could only be reused by rows with index values similar deleted rows could only be reused by rows with index values similar
...@@ -110,7 +95,6 @@ pages, and other free space management improvements.</para> ...@@ -110,7 +95,6 @@ pages, and other free space management improvements.</para>
empty index pages and allows them to be used for any future index empty index pages and allows them to be used for any future index
rows. rows.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Implement information schema</para> <listitem><para>Implement information schema</para>
...@@ -135,36 +119,30 @@ also called holdable cursors ...@@ -135,36 +119,30 @@ also called holdable cursors
<listitem><para> libpq and ecpg are now fully thread-safe with <listitem><para> libpq and ecpg are now fully thread-safe with
--enable-thread-safety</para> --enable-thread-safety</para>
<note>
<para> <para>
While prior libpq releases already supported threads, this release While prior libpq releases already supported threads, this release
improves thread safety by fixing some non-thread-safe code that improves thread safety by fixing some non-thread-safe code that
was used in the database connection routines. was used in the database connection routines.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> New version of full text indexing in /contrib/tsearch2</para> <listitem><para> New version of full text indexing in /contrib/tsearch2</para>
</listitem> </listitem>
<listitem><para> New autovacuum tool in /contrib</para> <listitem><para> New autovacuum tool in /contrib</para>
<note>
<para> <para>
This new tool monitors the database statistics tables for This new tool monitors the database statistics tables for
INSERT/UPDATE/DELETE activity and automatically vacuums tables when INSERT/UPDATE/DELETE activity and automatically vacuums tables when
needed. needed.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> Array handling has been improved and moved into the main <listitem><para> Array handling has been improved and moved into the main
server</para> server</para>
<note>
<para> <para>
Many array limitations have been removed and they behave more like Many array limitations have been removed and they behave more like
fully-supported data types. fully-supported data types.
</para> </para>
</note>
</listitem> </listitem>
</itemizedlist></para></sect2> </itemizedlist></para></sect2>
...@@ -177,14 +155,12 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -177,14 +155,12 @@ required for those wishing to migrate data from any previous release.</para>
<itemizedlist> <itemizedlist>
<listitem><para> The server-side autocommit setting was removed and reimplemented <listitem><para> The server-side autocommit setting was removed and reimplemented
in client applications and languages.</para> in client applications and languages.</para>
<note>
<para> <para>
Server-side autocommit was causing too many problems with Server-side autocommit was causing too many problems with
languages and applications that wanted to control their own languages and applications that wanted to control their own
autocommit behavior so autocommit was removed from the server autocommit behavior so autocommit was removed from the server
and added to individual client API's as appropriate. and added to individual client API's as appropriate.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> Error message wording has changed substantially in this release, <listitem><para> Error message wording has changed substantially in this release,
and error codes have been added.</para></listitem> and error codes have been added.</para></listitem>
...@@ -192,21 +168,17 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -192,21 +168,17 @@ required for those wishing to migrate data from any previous release.</para>
<listitem><para> A number of server variables have been renamed for <listitem><para> A number of server variables have been renamed for
clarity, primarily those related to logging</para></listitem> clarity, primarily those related to logging</para></listitem>
<listitem><para> MOVE/FETCH 0 now does nothing</para> <listitem><para> MOVE/FETCH 0 now does nothing</para>
<note>
<para> <para>
In prior releases, FETCH 0 would fetch all remaining rows, and In prior releases, FETCH 0 would fetch all remaining rows, and
MOVE 0 would move to the end of the cursor. MOVE 0 would move to the end of the cursor.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> MOVE/FETCH now returns the actual number of rows moved/fetched, or zero <listitem><para> MOVE/FETCH now returns the actual number of rows moved/fetched, or zero
if at the beginning/end of the cursor</para> if at the beginning/end of the cursor</para>
<note>
<para> <para>
Prior releases would return the tuple count passed to the Prior releases would return the tuple count passed to the
command, not the actual number of rows FETCHed or MOVEd. command, not the actual number of rows FETCHed or MOVEd.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> COPY now can process carriage-return and <listitem><para> COPY now can process carriage-return and
carriage-return/line-feed end-of-line terminated files.</para></listitem> carriage-return/line-feed end-of-line terminated files.</para></listitem>
...@@ -217,7 +189,6 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -217,7 +189,6 @@ required for those wishing to migrate data from any previous release.</para>
<type>VARCHAR(n)</type> / <type>TEXT</type></para></listitem> <type>VARCHAR(n)</type> / <type>TEXT</type></para></listitem>
<listitem><para> <function>FLOAT(p)</function> now measures 'p' in bits, not digits</para></listitem> <listitem><para> <function>FLOAT(p)</function> now measures 'p' in bits, not digits</para></listitem>
<listitem><para> Ambiguous date values now must match the ordering specified by DateStyle</para> <listitem><para> Ambiguous date values now must match the ordering specified by DateStyle</para>
<note>
<para> <para>
In prior releases, a date of <literal>10/20/03</> was In prior releases, a date of <literal>10/20/03</> was
interpreted as a date in October even if the interpreted as a date in October even if the
...@@ -226,19 +197,15 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -226,19 +197,15 @@ required for those wishing to migrate data from any previous release.</para>
values and will throw an error if the date is invalid for the values and will throw an error if the date is invalid for the
current <varname>DateStyle</>. current <varname>DateStyle</>.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> The <function>oidrand()</function>, <function>oidsrand()</function>, <listitem><para> The <function>oidrand()</function>, <function>oidsrand()</function>,
and <function>userfntest()</function> functions have been removed.</para> and <function>userfntest()</function> functions have been removed.</para>
<note>
<para> <para>
These functions were determined to be no longer useful. These functions were determined to be no longer useful.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> <literal>'now'</literal> will no longer work as a column default; <function>now()</> or <listitem><para> <literal>'now'</literal> will no longer work as a column default; <function>now()</> or
<function>CURRENT_TIMESTAMP</> should be used instead</para> <function>CURRENT_TIMESTAMP</> should be used instead</para>
<note>
<para> <para>
In prior releases, there was special code so the string In prior releases, there was special code so the string
<literal>'now'</literal> was interpreted at <literal>'now'</literal> was interpreted at
...@@ -249,24 +216,19 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -249,24 +216,19 @@ required for those wishing to migrate data from any previous release.</para>
<function>CURRENT_TIMESTAMP</>. These will work in all <function>CURRENT_TIMESTAMP</>. These will work in all
situations. situations.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> <literal>'today'</literal> will no longer work as a column default; <function>CURRENT_DATE</> <listitem><para> <literal>'today'</literal> will no longer work as a column default; <function>CURRENT_DATE</>
should be used instead</para> should be used instead</para>
<note>
<para> <para>
Same description as above. Same description as above.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para> Dollar sign (<literal>$</>) is no longer allowed in operator names</para></listitem> <listitem><para> Dollar sign (<literal>$</>) is no longer allowed in operator names</para></listitem>
<listitem><para> Dollar sign (<literal>$</>) can be a non-first character in identifiers</para> <listitem><para> Dollar sign (<literal>$</>) can be a non-first character in identifiers</para>
<note>
<para> <para>
This was done to improve compatibility with other database This was done to improve compatibility with other database
systems. systems.
</para> </para>
</note>
</listitem> </listitem>
</itemizedlist></para></sect2> </itemizedlist></para></sect2>
...@@ -275,68 +237,54 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -275,68 +237,54 @@ required for those wishing to migrate data from any previous release.</para>
<listitem><para>Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce, Tom, Kurt <listitem><para>Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce, Tom, Kurt
Roeckx, Andrew Dunstan)</para></listitem> Roeckx, Andrew Dunstan)</para></listitem>
<listitem><para>Fix SSL to handle errors cleanly (Nathan Mueller) <listitem><para>Fix SSL to handle errors cleanly (Nathan Mueller)
<note>
<para> <para>
In prior releases, certain rare SSL API error reports were not In prior releases, certain rare SSL API error reports were not
handled correctly. This release fixes those problems. handled correctly. This release fixes those problems.
gracefully. gracefully.
</para> </para>
</note> </listitem>
</para></listitem>
<listitem><para>SSL protocol security and performance improvements (Sean Chittenden)</para> <listitem><para>SSL protocol security and performance improvements (Sean Chittenden)</para>
<note>
<para> <para>
SSL key renegotiation was happening too frequently, causing poor SSL SSL key renegotiation was happening too frequently, causing poor SSL
performance. Also, initial key handling was improved. performance. Also, initial key handling was improved.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Print lock information when a deadlock is detected (Tom)</para> <listitem><para>Print lock information when a deadlock is detected (Tom)</para>
<note>
<para> <para>
This allows easier debugging of deadlock situations. This allows easier debugging of deadlock situations.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Update <filename>/tmp</filename> socket mod. times regularly to avoid their removal (Tom)</para> <listitem><para>Update <filename>/tmp</filename> socket mod. times regularly to avoid their removal (Tom)</para>
<note>
<para> <para>
This should help prevent <filename>/tmp</filename> directory cleaner This should help prevent <filename>/tmp</filename> directory cleaner
administration scripts from removing server socket files. administration scripts from removing server socket files.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Enable PAM for MAC OS X (Aaron Hillegass)</para></listitem> <listitem><para>Enable PAM for MAC OS X (Aaron Hillegass)</para></listitem>
<listitem><para>Make btree indexes fully WAL-safe (Tom)</para> <listitem><para>Make btree indexes fully WAL-safe (Tom)</para>
<note>
<para> <para>
In prior releases, under certain rare cases, a server crash could In prior releases, under certain rare cases, a server crash could
cause btree indexes to become corrupt. This release removes those cause btree indexes to become corrupt. This release removes those
last few rare cases. last few rare cases.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow btree index compaction and empty page reuse (Tom)</para></listitem> <listitem><para>Allow btree index compaction and empty page reuse (Tom)</para></listitem>
<listitem><para>Fix inconsistent index lookups during split of first root page (Tom)</para> <listitem><para>Fix inconsistent index lookups during split of first root page (Tom)</para>
<note>
<para> <para>
In prior releases, when a single-page index split into two page, In prior releases, when a single-page index split into two page,
there was a brief period when another database session would miss there was a brief period when another database session would miss
seeing an index entry. This failure was possible primarly on seeing an index entry. This failure was possible primarly on
multi-cpu machines. This release fixes that rare failure case. multi-cpu machines. This release fixes that rare failure case.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Improve free space map allocation logic (Tom)</para></listitem> <listitem><para>Improve free space map allocation logic (Tom)</para></listitem>
<listitem><para>Preserve free space information between postmaster restarts (Tom)</para> <listitem><para>Preserve free space information between postmaster restarts (Tom)</para>
<note>
<para> <para>
In prior releases, the free space map was not saved when the In prior releases, the free space map was not saved when the
postmaster was stopped, so newly started servers has no free space postmaster was stopped, so newly started servers has no free space
information. This release saves the free space map, which is loaded information. This release saves the free space map, which is loaded
when the server is restarted. when the server is restarted.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Set proper schema permissions in initdb (Peter)</para></listitem> <listitem><para>Set proper schema permissions in initdb (Peter)</para></listitem>
<listitem><para>Add start time to pg_stat_activity (Neil)</para></listitem> <listitem><para>Add start time to pg_stat_activity (Neil)</para></listitem>
...@@ -359,34 +307,28 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -359,34 +307,28 @@ required for those wishing to migrate data from any previous release.</para>
<listitem><para>Improve constant folding (Tom)</para></listitem> <listitem><para>Improve constant folding (Tom)</para></listitem>
<listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem> <listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem>
<listitem><para>Reduce memory usage for queries using complex functions (Tom)</para> <listitem><para>Reduce memory usage for queries using complex functions (Tom)</para>
<note>
<para> <para>
In prior releases, functions returning allocated memory would In prior releases, functions returning allocated memory would
not free it until the query completed. This release allows the not free it until the query completed. This release allows the
freeing of function-allocated memory when the function call freeing of function-allocated memory when the function call
completes, reducing the total memory used by functions. completes, reducing the total memory used by functions.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Improve GEQO optimizer performance (Tom)</para> <listitem><para>Improve GEQO optimizer performance (Tom)</para>
<note>
<para> <para>
There were several inefficiencies in the way the GEQO optimizer There were several inefficiencies in the way the GEQO optimizer
managed potential query paths. This release fixes this. managed potential query paths. This release fixes this.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow IN/NOT IN to be handled via hash tables (Tom)</para></listitem> <listitem><para>Allow IN/NOT IN to be handled via hash tables (Tom)</para></listitem>
<listitem><para>Improve NOT IN (subquery) performance (Tom)</para></listitem> <listitem><para>Improve NOT IN (subquery) performance (Tom)</para></listitem>
<listitem><para>Allow most IN subqueries to be processed as joins (Tom)</para></listitem> <listitem><para>Allow most IN subqueries to be processed as joins (Tom)</para></listitem>
<listitem><para>Allow the postmaster to preload libraries using preload_libraries (Joe)</para> <listitem><para>Allow the postmaster to preload libraries using preload_libraries (Joe)</para>
<note>
<para> <para>
For shared libraries that require a long time to load, this option For shared libraries that require a long time to load, this option
is available so the library can be pre-loaded in the postmaster and is available so the library can be pre-loaded in the postmaster and
inherited by all database sessions. inherited by all database sessions.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Improve optimizer cost computations, particularly for subqueries (Tom)</para></listitem> <listitem><para>Improve optimizer cost computations, particularly for subqueries (Tom)</para></listitem>
<listitem><para>Avoid sort when subquery ORDER BY matches upper query (Tom)</para></listitem> <listitem><para>Avoid sort when subquery ORDER BY matches upper query (Tom)</para></listitem>
...@@ -398,41 +340,33 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -398,41 +340,33 @@ required for those wishing to migrate data from any previous release.</para>
<listitem><para>Use faster and more powerful regular expression code from TCL (Henry Spencer, Tom)</para></listitem> <listitem><para>Use faster and more powerful regular expression code from TCL (Henry Spencer, Tom)</para></listitem>
<listitem><para>Use bit-mapped relation sets in the optimizer (Tom)</para></listitem> <listitem><para>Use bit-mapped relation sets in the optimizer (Tom)</para></listitem>
<listitem><para>Improve backend startup time (Tom)</para> <listitem><para>Improve backend startup time (Tom)</para>
<note>
<para> <para>
The new network protocol requires fewer network packets to start a The new network protocol requires fewer network packets to start a
database session. database session.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Improve trigger/constraint performance (Stephan)</para></listitem> <listitem><para>Improve trigger/constraint performance (Stephan)</para></listitem>
<listitem><para>Improve speed of col IN (const, const, const, ...) (Tom)</para></listitem> <listitem><para>Improve speed of col IN (const, const, const, ...) (Tom)</para></listitem>
<listitem><para>Fix hash indexes which were broken in rare cases (Tom)</para></listitem> <listitem><para>Fix hash indexes which were broken in rare cases (Tom)</para></listitem>
<listitem><para>Improve hash index concurrency and speed (Tom)</para> <listitem><para>Improve hash index concurrency and speed (Tom)</para>
<note>
<para> <para>
Prior releases suffered from poor hash index performance, Prior releases suffered from poor hash index performance,
particularly for high concurrency situations. This release fixes particularly for high concurrency situations. This release fixes
that, and the development group is interested in reports comparing that, and the development group is interested in reports comparing
btree and hash index performance. btree and hash index performance.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para> <listitem><para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para>
<note>
<para> <para>
Certain CPU's perform faster data copies when addresses are 32-bit Certain CPU's perform faster data copies when addresses are 32-bit
aligned. aligned.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>The NUMERIC datatype has been reimplemented for better performance (Tom)</para> <listitem><para>The NUMERIC datatype has been reimplemented for better performance (Tom)</para>
<note>
<para> <para>
NUMERIC used to be stored in base-100. The new code uses base-10000, NUMERIC used to be stored in base-100. The new code uses base-10000,
for significantly better performance. for significantly better performance.
</para> </para>
</note>
</listitem> </listitem>
</itemizedlist></sect2> </itemizedlist></sect2>
...@@ -440,88 +374,69 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -440,88 +374,69 @@ required for those wishing to migrate data from any previous release.</para>
<itemizedlist> <itemizedlist>
<listitem><para>Rename server parameter server_min_messages to log_min_messages (Bruce)</para> <listitem><para>Rename server parameter server_min_messages to log_min_messages (Bruce)</para>
<note>
<para> <para>
This was done so most parameters that control the server logs being This was done so most parameters that control the server logs being
with <literal>log_</>. with <literal>log_</>.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Rename show_*_stats to log_*_stats (Bruce)</para></listitem> <listitem><para>Rename show_*_stats to log_*_stats (Bruce)</para></listitem>
<listitem><para>Rename show_source_port to log_source_port (Bruce)</para></listitem> <listitem><para>Rename show_source_port to log_source_port (Bruce)</para></listitem>
<listitem><para>Rename hostname_lookup to log_hostname (Bruce)</para></listitem> <listitem><para>Rename hostname_lookup to log_hostname (Bruce)</para></listitem>
<listitem><para>Add checkpoint_warning to warn of excessive checkpointing (Bruce)</para> <listitem><para>Add checkpoint_warning to warn of excessive checkpointing (Bruce)</para>
<note>
<para> <para>
In prior releases, it was difficult to determine if checkpoint was In prior releases, it was difficult to determine if checkpoint was
happening too frequently. This feature adds a warning to the server happening too frequently. This feature adds a warning to the server
logs when excessive checkpointing happens. logs when excessive checkpointing happens.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>New read-only server parameters for localization (Tom)</para></listitem> <listitem><para>New read-only server parameters for localization (Tom)</para></listitem>
<listitem><para>Change debug server log messages to output as DEBUG rather than LOG (Bruce)</para></listitem> <listitem><para>Change debug server log messages to output as DEBUG rather than LOG (Bruce)</para></listitem>
<listitem><para>Prevent server log variables from being turned off by non-super users (Bruce)</para> <listitem><para>Prevent server log variables from being turned off by non-super users (Bruce)</para>
<note>
<para> <para>
This is a security feature so non-super-users can't disable logging This is a security feature so non-super-users can't disable logging
that was enabled by the administrator. that was enabled by the administrator.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>log_min_messages/client_min_messages now controls debug_* output (Bruce)</para> <listitem><para>log_min_messages/client_min_messages now controls debug_* output (Bruce)</para>
<note>
<para> <para>
This centralizes client debug information so all debug output can This centralizes client debug information so all debug output can
be sent to either the client or server logs. be sent to either the client or server logs.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add OS X Rendezvous server support (Chris Campbell)</para> <listitem><para>Add OS X Rendezvous server support (Chris Campbell)</para>
<note>
<para> <para>
This allows OS X machines to query the network for available This allows OS X machines to query the network for available
PostgreSQL servers. PostgreSQL servers.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add ability to print only slow statements using log_min_duration_statement <listitem><para>Add ability to print only slow statements using log_min_duration_statement
(Christopher)</para> (Christopher)</para>
<note>
<para> <para>
This is an often requested debugging feature that allows administrators to This is an often requested debugging feature that allows administrators to
see only slow queries in their server logs. see only slow queries in their server logs.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan)</para> <listitem><para>Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan)</para>
<note>
<para> <para>
This allows administrators to merge the host IP address and netmask This allows administrators to merge the host IP address and netmask
fields into a single CIDR field in pg_hba.conf. fields into a single CIDR field in pg_hba.conf.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>New is_superuser read-only variable (Tom)</para></listitem> <listitem><para>New is_superuser read-only variable (Tom)</para></listitem>
<listitem><para>New server-side parameter log_error_verbosity to control error detail (Tom)</para> <listitem><para>New server-side parameter log_error_verbosity to control error detail (Tom)</para>
<note>
<para> <para>
This works with the new error reporting feature to supply additional This works with the new error reporting feature to supply additional
error information like hints, file names and line numbers. error information like hints, file names and line numbers.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter)</para> <listitem><para>postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter)</para>
<note>
<para> <para>
This option is useful for administration tools that need to know the This option is useful for administration tools that need to know the
configuration variable names and their minimum, maximums, defaults, configuration variable names and their minimum, maximums, defaults,
and descriptions. and descriptions.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Make default shared_buffers 1000 and max_connections 100, if possible (Tom)</para> <listitem><para>Make default shared_buffers 1000 and max_connections 100, if possible (Tom)</para>
<note>
<para> <para>
Prior versions defaulted to 64 shared buffers so PostgreSQL would Prior versions defaulted to 64 shared buffers so PostgreSQL would
start on even old computers. This release tests the amount of shared start on even old computers. This release tests the amount of shared
...@@ -529,17 +444,14 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -529,17 +444,14 @@ required for those wishing to migrate data from any previous release.</para>
course, users are still encouraged to evaluate their resource load course, users are still encouraged to evaluate their resource load
and size shared_buffers accordingly. and size shared_buffers accordingly.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add new columns in pg_settings: context, type, source, min_val, max_val (Joe)</para></listitem> <listitem><para>Add new columns in pg_settings: context, type, source, min_val, max_val (Joe)</para></listitem>
<listitem><para>New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon Jensen)</para> <listitem><para>New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon Jensen)</para>
<note>
<para> <para>
In prior releases, there was no way to prevent SSL connections if In prior releases, there was no way to prevent SSL connections if
both the client and server supported SSL. This option allows that both the client and server supported SSL. This option allows that
capability. capability.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Remove geqo_random_seed server parameter (Tom)</para></listitem> <listitem><para>Remove geqo_random_seed server parameter (Tom)</para></listitem>
</itemizedlist></sect2> </itemizedlist></sect2>
...@@ -548,63 +460,49 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -548,63 +460,49 @@ required for those wishing to migrate data from any previous release.</para>
<itemizedlist> <itemizedlist>
<listitem><para>New SQL-standard information schema (Peter)</para> <listitem><para>New SQL-standard information schema (Peter)</para>
<note>
<para> <para>
bjm bjm
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add read-only transactions (Peter)</para></listitem> <listitem><para>Add read-only transactions (Peter)</para></listitem>
<listitem><para>Add server variable regex_flavor to control regular expression <listitem><para>Add server variable regex_flavor to control regular expression
processing (Tom)</para></listitem> processing (Tom)</para></listitem>
<listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem> <listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem>
<listitem><para>Allow users to see their own queries in pg_stat_activity (Kevin Brown)</para> <listitem><para>Allow users to see their own queries in pg_stat_activity (Kevin Brown)</para>
<note>
<para> <para>
In prior releases, only the super-user could see query strings using In prior releases, only the super-user could see query strings using
pg_stat_activity. Now ordinary users can see their own query pg_stat_activity. Now ordinary users can see their own query
strings. strings.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Fix subquery aggregates of upper query columns to match SQL spec. (Tom)</para> <listitem><para>Fix subquery aggregates of upper query columns to match SQL spec. (Tom)</para>
<note>
<para> <para>
bjm bjm
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add option to prevent auto-addition of tables referenced in query (Nigel J. <listitem><para>Add option to prevent auto-addition of tables referenced in query (Nigel J.
Andrews) </para> Andrews) </para>
<note>
<para> <para>
By default, tables mentioned in the query are automatically added By default, tables mentioned in the query are automatically added
to the FROM clause if they are not already there. This option to the FROM clause if they are not already there. This option
disabled that behavior. disabled that behavior.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow UPDATE ... SET col = DEFAULT (Rod)</para> <listitem><para>Allow UPDATE ... SET col = DEFAULT (Rod)</para>
<note>
<para> <para>
This allows UPDATE to set a column to its default value. This allows UPDATE to set a column to its default value.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow expressions to be used in LIMIT/OFFSET (Tom)</para> <listitem><para>Allow expressions to be used in LIMIT/OFFSET (Tom)</para>
<note>
<para> <para>
In prior releases, LIMIT/OFFSET could only use constants, not In prior releases, LIMIT/OFFSET could only use constants, not
expressions. expressions.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Change EXECUTE INTO to CREATE TABLE AS EXECUTE (Peter)</para> <listitem><para>Change EXECUTE INTO to CREATE TABLE AS EXECUTE (Peter)</para>
<note>
<para> <para>
bjm ? bjm ?
</para> </para>
</note>
</listitem> </listitem>
</itemizedlist></sect2> </itemizedlist></sect2>
...@@ -612,149 +510,117 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -612,149 +510,117 @@ required for those wishing to migrate data from any previous release.</para>
<itemizedlist> <itemizedlist>
<listitem><para>Make CREATE SEQUENCE grammar more SQL1999 standards compliant (Neil)</para> <listitem><para>Make CREATE SEQUENCE grammar more SQL1999 standards compliant (Neil)</para>
<note>
<para> <para>
bjm ? bjm ?
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add FOR EACH STATEMENT statement-level triggers (Neil)</para> <listitem><para>Add FOR EACH STATEMENT statement-level triggers (Neil)</para>
<note>
<para> <para>
While this allows a trigger to fire at the end of a statement, it While this allows a trigger to fire at the end of a statement, it
does not allow the trigger to access all rows modified by the does not allow the trigger to access all rows modified by the
query. This capability is planned for a future release. query. This capability is planned for a future release.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add DOMAIN CHECK constraints (Rod)</para> <listitem><para>Add DOMAIN CHECK constraints (Rod)</para>
<note>
<para> <para>
This greatly increases the usefulness of domains by allowing them to This greatly increases the usefulness of domains by allowing them to
use CHECK constraints. use CHECK constraints.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add ALTER DOMAIN .. SET / DROP NOT NULL, SET / DROP DEFAULT, ADD / DROP <listitem><para>Add ALTER DOMAIN .. SET / DROP NOT NULL, SET / DROP DEFAULT, ADD / DROP
CONSTRAINT (Rod) </para> CONSTRAINT (Rod) </para>
<note>
<para> <para>
This allows manipulation of existing domains. This allows manipulation of existing domains.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Fix several zero-column table bugs (Tom)</para> <listitem><para>Fix several zero-column table bugs (Tom)</para>
<note>
<para> <para>
PostgreSQL supports zero-column tables. This fixes various bugs PostgreSQL supports zero-column tables. This fixes various bugs
that occur when using such tables. that occur when using such tables.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Have ALTER TABLE ... ADD PRIMARY KEY add NOT NULL constraint (Rod)</para> <listitem><para>Have ALTER TABLE ... ADD PRIMARY KEY add NOT NULL constraint (Rod)</para>
<note>
<para> <para>
In prior releases, ALTER TABLE ADD PRIMARY would add a unique index, In prior releases, ALTER TABLE ADD PRIMARY would add a unique index,
but not a NOT NULL constraint. That is fixed in this release. but not a NOT NULL constraint. That is fixed in this release.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add ALTER DOMAIN OWNER (Rod)</para></listitem> <listitem><para>Add ALTER DOMAIN OWNER (Rod)</para></listitem>
<listitem><para>Add ALTER TABLE ... WITHOUT OIDS (Rod)</para> <listitem><para>Add ALTER TABLE ... WITHOUT OIDS (Rod)</para>
<note>
<para> <para>
This allows control over whether new and updated rows will have an This allows control over whether new and updated rows will have an
oid column. This is most useful for saving storage space. oid column. This is most useful for saving storage space.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values (Rod)</para></listitem> <listitem><para>Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values (Rod)</para></listitem>
<listitem><para>Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera)</para> <listitem><para>Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera)</para>
<note>
<para> <para>
This command is used by pg_dump to record the CLUSTER column This command is used by pg_dump to record the CLUSTER column
for each table previously clustered. This information is used by database-wide for each table previously clustered. This information is used by database-wide
cluster to cluster all previously clustered tables. cluster to cluster all previously clustered tables.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Improve DOMAIN automatic type casting (Rod, Tom)</para></listitem> <listitem><para>Improve DOMAIN automatic type casting (Rod, Tom)</para></listitem>
<listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem> <listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem>
<listitem><para>Disallow dollar signs in operator names, so x=$1 works (Tom)</para></listitem> <listitem><para>Disallow dollar signs in operator names, so x=$1 works (Tom)</para></listitem>
<listitem><para>Allow SQL200X inheritance syntax LIKE <emphasis>subtable</emphasis>, INCLUDING DEFAULTS (Rod)</para></listitem> <listitem><para>Allow SQL200X inheritance syntax LIKE <emphasis>subtable</emphasis>, INCLUDING DEFAULTS (Rod)</para></listitem>
<listitem><para>Add WITH GRANT OPTION clause to GRANT, per SQL spec (Peter)</para> <listitem><para>Add WITH GRANT OPTION clause to GRANT, per SQL spec (Peter)</para>
<note>
<para> <para>
Allow GRANT to give other users the ability to grant permissions on Allow GRANT to give other users the ability to grant permissions on
a object. a object.
</para> </para>
</note>
</listitem> </listitem>
</itemizedlist></sect2> </itemizedlist></sect2>
<sect2><title>Utility Command Changes</title> <sect2><title>Utility Command Changes</title>
<itemizedlist> <itemizedlist>
<listitem><para>Add ON COMMIT clause to CREATE TABLE for temp tables (Gavin)</para> <listitem><para>Add ON COMMIT clause to CREATE TABLE for temp tables (Gavin)</para>
<note>
<para> <para>
This adds the ability for a table to be dropped or all rows deleted This adds the ability for a table to be dropped or all rows deleted
on transaction commit. on transaction commit.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow cursors outside transactions using WITH HOLD (Neil)</para> <listitem><para>Allow cursors outside transactions using WITH HOLD (Neil)</para>
<note>
<para> <para>
In previous releases, cursors were removed at the end of the In previous releases, cursors were removed at the end of the
transaction. Using WITH HOLD, the current release allows transaction transaction. Using WITH HOLD, the current release allows transaction
to remain outside their own transaction. to remain outside their own transaction.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>MOVE/FETCH 0 now does nothing (Bruce)</para> <listitem><para>MOVE/FETCH 0 now does nothing (Bruce)</para>
<note>
<para> <para>
In previous releases, MOVE 0 moved to the end of the cursor, and In previous releases, MOVE 0 moved to the end of the cursor, and
FETCH 0 fetched all remaning rows. FETCH 0 fetched all remaning rows.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Cause MOVE/FETCH to return the number of rows moved/fetched, or zero if at the beginning/end of cursor, <listitem><para>Cause MOVE/FETCH to return the number of rows moved/fetched, or zero if at the beginning/end of cursor,
per SQL spec (Bruce)</para> per SQL spec (Bruce)</para>
<note>
<para> <para>
In prior releases, the row count returned by MOVE and FETCH did In prior releases, the row count returned by MOVE and FETCH did
not accurately reflect the number of rows processed. not accurately reflect the number of rows processed.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Properly handle SCROLL with cursors, or report an error (Neil)</para> <listitem><para>Properly handle SCROLL with cursors, or report an error (Neil)</para>
<note>
<para> <para>
Certain cursors can not be fetched backwards optimally. By specifying SCROLL, Certain cursors can not be fetched backwards optimally. By specifying SCROLL,
extra work will be performed to guarantee that the cursor can be extra work will be performed to guarantee that the cursor can be
fetched in reverse or random order. fetched in reverse or random order.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n options <listitem><para>Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n options
for FETCH and MOVE (Tom)</para></listitem> for FETCH and MOVE (Tom)</para></listitem>
<listitem><para>Allow EXPLAIN on DECLARE CURSOR (Tom)</para> <listitem><para>Allow EXPLAIN on DECLARE CURSOR (Tom)</para>
<note>
<para> <para>
Prior versions would not allow EXPLAIN on a DECLARE statement. Prior versions would not allow EXPLAIN on a DECLARE statement.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow CLUSTER to use index marked as pre-clustered by default (Alvaro Herrera)</para></listitem> <listitem><para>Allow CLUSTER to use index marked as pre-clustered by default (Alvaro Herrera)</para></listitem>
<listitem><para>Allow CLUSTER to cluster all tables (Alvaro Herrera) <listitem><para>Allow CLUSTER to cluster all tables (Alvaro Herrera)
<note>
<para> <para>
This allows all previously clustered tables in a database to be This allows all previously clustered tables in a database to be
reclustered with a single command. reclustered with a single command.
</para> </para>
</note> </listitem>
</para></listitem>
<listitem><para>Prevent CLUSTER on partial indexes (Tom)</para></listitem> <listitem><para>Prevent CLUSTER on partial indexes (Tom)</para></listitem>
<listitem><para>Allow \r and \r\n termination for COPY files (Bruce)</para></listitem> <listitem><para>Allow \r and \r\n termination for COPY files (Bruce)</para></listitem>
<listitem><para>Disallow literal carriage return as a data value, backslash-carriage-return <listitem><para>Disallow literal carriage return as a data value, backslash-carriage-return
...@@ -763,21 +629,17 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -763,21 +629,17 @@ required for those wishing to migrate data from any previous release.</para>
<listitem><para>Recover from COPY IN/OUT failure cleanly (Tom)</para></listitem> <listitem><para>Recover from COPY IN/OUT failure cleanly (Tom)</para></listitem>
<listitem><para>Prevent possible memory leaks in COPY (Tom)</para></listitem> <listitem><para>Prevent possible memory leaks in COPY (Tom)</para></listitem>
<listitem><para>Make TRUNCATE transaction-safe (Rod)</para> <listitem><para>Make TRUNCATE transaction-safe (Rod)</para>
<note>
<para> <para>
Truncate can now be used inside a transaction, and rolled back if Truncate can now be used inside a transaction, and rolled back if
the transaction aborts. the transaction aborts.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Multiple pggla_dump fixes, including tar format and large objects</para></listitem> <listitem><para>Multiple pggla_dump fixes, including tar format and large objects</para></listitem>
<listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem> <listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem>
<listitem><para>Allow pg_dump to preserve column storage characteristics (Christopher)</para> <listitem><para>Allow pg_dump to preserve column storage characteristics (Christopher)</para>
<note>
<para> <para>
This preserves ALTER TABLE ... SET STORAGE information. This preserves ALTER TABLE ... SET STORAGE information.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow pg_dump to preserve CLUSTER characteristics (Christopher)</para></listitem> <listitem><para>Allow pg_dump to preserve CLUSTER characteristics (Christopher)</para></listitem>
<listitem><para>Have pg_dumpall use GRANT/REVOKE to dump database-level permissions (Tom)</para></listitem> <listitem><para>Have pg_dumpall use GRANT/REVOKE to dump database-level permissions (Tom)</para></listitem>
...@@ -790,50 +652,40 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -790,50 +652,40 @@ required for those wishing to migrate data from any previous release.</para>
<listitem><para>Improve VACUUM performance on indexes by reducing WAL traffic (Tom)</para></listitem> <listitem><para>Improve VACUUM performance on indexes by reducing WAL traffic (Tom)</para></listitem>
<listitem><para>Allow pg_ctl to better handle non-standard ports (Greg)</para></listitem> <listitem><para>Allow pg_ctl to better handle non-standard ports (Greg)</para></listitem>
<listitem><para>Functional indexes have been generalized into expressional indexes (Tom)</para> <listitem><para>Functional indexes have been generalized into expressional indexes (Tom)</para>
<note>
<para> <para>
In prior releases, only columns could be used in functional indexes. In prior releases, only columns could be used in functional indexes.
This release allows any type of expression. This release allows any type of expression.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Syntax errors now reported as 'syntax error' rather than 'parse error' (Tom)</para></listitem> <listitem><para>Syntax errors now reported as 'syntax error' rather than 'parse error' (Tom)</para></listitem>
<listitem><para>Have SHOW TRANSACTION_ISOLATION match input to SET TRANSACTION_ISOLATION (Tom)</para></listitem> <listitem><para>Have SHOW TRANSACTION_ISOLATION match input to SET TRANSACTION_ISOLATION (Tom)</para></listitem>
<listitem><para>Have COMMENT ON DATABASE on non-local database generate a warning (Rod)</para> <listitem><para>Have COMMENT ON DATABASE on non-local database generate a warning (Rod)</para>
<note>
<para> <para>
Database comments are stored in database-local tables so comments on Database comments are stored in database-local tables so comments on
a database have to be stored in each database. a database have to be stored in each database.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Improve reliability of LISTEN/NOTIFY (Tom)</para></listitem> <listitem><para>Improve reliability of LISTEN/NOTIFY (Tom)</para></listitem>
<listitem><para>Allow REINDEX to reliably reindex non-shared system catalog indexes (Tom)</para> <listitem><para>Allow REINDEX to reliably reindex non-shared system catalog indexes (Tom)</para>
<note>
<para> <para>
This allows system tables to be reindexed without the requirement of This allows system tables to be reindexed without the requirement of
a standalone backend, which was necessary in previous releases. The a standalone backend, which was necessary in previous releases. The
only tables that now require a standalone backend for reindex are only tables that now require a standalone backend for reindex are
the global system tables pg_database, pg_shadow, and pg_group. the global system tables pg_database, pg_shadow, and pg_group.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>pg_dump --use-set-session-authorization and --no-reconnect now do nothing, <listitem><para>pg_dump --use-set-session-authorization and --no-reconnect now do nothing,
all dumps use SET SESSION AUTHORIZATION </para> all dumps use SET SESSION AUTHORIZATION </para>
<note>
<para> <para>
pg_dump now no longer reconnects to switch users, but instead uses pg_dump now no longer reconnects to switch users, but instead uses
SET SESSION AUTHORIZATION. This should reduce password prompting SET SESSION AUTHORIZATION. This should reduce password prompting
during restores. during restores.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Long options for <application>pg_dump</application> are now available on all platforms</para> <listitem><para>Long options for <application>pg_dump</application> are now available on all platforms</para>
<note>
<para> <para>
We now include our own long option processing routines. We now include our own long option processing routines.
</para> </para>
</note>
</listitem> </listitem>
</itemizedlist></sect2> </itemizedlist></sect2>
...@@ -842,29 +694,23 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -842,29 +694,23 @@ required for those wishing to migrate data from any previous release.</para>
<itemizedlist> <itemizedlist>
<listitem><para>New extra_float_digits server parameter to control float precision display <listitem><para>New extra_float_digits server parameter to control float precision display
(Pedro Ferreira, Tom) </para> (Pedro Ferreira, Tom) </para>
<note>
<para> <para>
This controls precision output which was causing regression This controls precision output which was causing regression
testing problems. testing problems.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow +1300 as a numeric timezone specifier, for FJST (Tom)</para></listitem> <listitem><para>Allow +1300 as a numeric timezone specifier, for FJST (Tom)</para></listitem>
<listitem><para>Remove rarely used oidrand(), oidsrand(), and userfntest() functions (Neil)</para></listitem> <listitem><para>Remove rarely used oidrand(), oidsrand(), and userfntest() functions (Neil)</para></listitem>
<listitem><para>Add md5() function to main server, already in /contrib/pgcrypto (Joe)</para> <listitem><para>Add md5() function to main server, already in /contrib/pgcrypto (Joe)</para>
<note>
<para> <para>
An md5 function was frequently requested. For more complex An md5 function was frequently requested. For more complex
encryption capabilities, use /contrib/pgcrypto. encryption capabilities, use /contrib/pgcrypto.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Increase date range of timestamp (John Cochran)</para> <listitem><para>Increase date range of timestamp (John Cochran)</para>
<note>
<para> <para>
bjm ?? bjm ??
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Change EXTRACT(EPOCH FROM timestamp) so timestamp without time zone <listitem><para>Change EXTRACT(EPOCH FROM timestamp) so timestamp without time zone
is assumed to be in local time, not GMT (Tom)</para></listitem> is assumed to be in local time, not GMT (Tom)</para></listitem>
...@@ -874,12 +720,10 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -874,12 +720,10 @@ required for those wishing to migrate data from any previous release.</para>
<listitem><para>Fixes for to_char() (Karel)</para></listitem> <listitem><para>Fixes for to_char() (Karel)</para></listitem>
<listitem><para>Allow functions that can take any argument data type and return <listitem><para>Allow functions that can take any argument data type and return
any data type, using ANYELEMENT and ANYARRAY (Joe) </para> any data type, using ANYELEMENT and ANYARRAY (Joe) </para>
<note>
<para> <para>
This allows the creation of functions that can work with any data This allows the creation of functions that can work with any data
type. type.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Arrays may now be specified as ARRAY[1,2,3], ARRAY[['a','b'],['c','d']], <listitem><para>Arrays may now be specified as ARRAY[1,2,3], ARRAY[['a','b'],['c','d']],
or ARRAY[ARRAY[ARRAY[2]]] (Joe)</para></listitem> or ARRAY[ARRAY[ARRAY[2]]] (Joe)</para></listitem>
...@@ -887,47 +731,37 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -887,47 +731,37 @@ required for those wishing to migrate data from any previous release.</para>
<listitem><para>Allow array concatenation with '||' (Joe)</para></listitem> <listitem><para>Allow array concatenation with '||' (Joe)</para></listitem>
<listitem><para>Allow indexes on array columns, and used in ORDER BY and DISTINCT (Joe)</para></listitem> <listitem><para>Allow indexes on array columns, and used in ORDER BY and DISTINCT (Joe)</para></listitem>
<listitem><para>Allow WHERE qualification 'expr &gt;oper&lt; ANY/SOME/ALL (array-expr)' (Joe)</para> <listitem><para>Allow WHERE qualification 'expr &gt;oper&lt; ANY/SOME/ALL (array-expr)' (Joe)</para>
<note>
<para> <para>
This allows arrays to behave like subqueries or a list of values: This allows arrays to behave like subqueries or a list of values:
SELECT * FROM tab WHERE col IN array_val SELECT * FROM tab WHERE col IN array_val
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow polymorphic SQL functions (Joe)</para> <listitem><para>Allow polymorphic SQL functions (Joe)</para>
<note>
<para> <para>
bjm ?? bjm ??
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>New array functions array_append(), array_cat(), array_lower(), <listitem><para>New array functions array_append(), array_cat(), array_lower(),
array_prepend(), array_to_string(), array_upper(), string_to_array() (Joe)</para></listitem> array_prepend(), array_to_string(), array_upper(), string_to_array() (Joe)</para></listitem>
<listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para> <listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para>
<note>
<para> <para>
bjm ?? bjm ??
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow polymorphic user defined aggregates (Joe)</para></listitem> <listitem><para>Allow polymorphic user defined aggregates (Joe)</para></listitem>
<listitem><para>Allow assignments to empty arrays (Joe)</para></listitem> <listitem><para>Allow assignments to empty arrays (Joe)</para></listitem>
<listitem><para>Allow 60 in seconds fields of timestamp, time, interval input values (Tom)</para> <listitem><para>Allow 60 in seconds fields of timestamp, time, interval input values (Tom)</para>
<note>
<para> <para>
Sixty-second values are needed for leap seconds. Sixty-second values are needed for leap seconds.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow CIDR data type to be cast to text (Tom)</para></listitem> <listitem><para>Allow CIDR data type to be cast to text (Tom)</para></listitem>
<listitem><para>Allow the creation of special LIKE indexes for non-C locales (Peter)</para> <listitem><para>Allow the creation of special LIKE indexes for non-C locales (Peter)</para>
<note>
<para> <para>
There is no way for non-ASCII locales to use indexes for LIKE There is no way for non-ASCII locales to use indexes for LIKE
comparisons. However, this release adds a way to create a special comparisons. However, this release adds a way to create a special
index for LIKE. bjm ?? index for LIKE. bjm ??
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Disallow invalid timezone names (Tom)</para></listitem> <listitem><para>Disallow invalid timezone names (Tom)</para></listitem>
<listitem><para>Trim trailing spaces when CHAR() is cast to VARCHAR or TEXT (Tom)</para></listitem> <listitem><para>Trim trailing spaces when CHAR() is cast to VARCHAR or TEXT (Tom)</para></listitem>
...@@ -938,18 +772,14 @@ required for those wishing to migrate data from any previous release.</para> ...@@ -938,18 +772,14 @@ required for those wishing to migrate data from any previous release.</para>
<listitem><para>Make EXTRACT(TIMEZONE) and SET/SHOW TIMEZONE follow the SQL convention <listitem><para>Make EXTRACT(TIMEZONE) and SET/SHOW TIMEZONE follow the SQL convention
for the sign of timezone offsets, ie, positive is east from UTC (Tom)</para></listitem> for the sign of timezone offsets, ie, positive is east from UTC (Tom)</para></listitem>
<listitem><para>Fix date_trunc('quarter',...) (B?jthe Zolt?n)</para> <listitem><para>Fix date_trunc('quarter',...) (B?jthe Zolt?n)</para>
<note>
<para> <para>
Prior releases returned an incorrect value for this function call. Prior releases returned an incorrect value for this function call.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Make initcap() more compatible with Oracle (Mike Nolan)</para> <listitem><para>Make initcap() more compatible with Oracle (Mike Nolan)</para>
<note>
<para> <para>
bjm ?? bjm ??
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow only DateStyle field order for date values not in ISO format (Greg)</para></listitem> <listitem><para>Allow only DateStyle field order for date values not in ISO format (Greg)</para></listitem>
<listitem><para>Add new DateStyle values MDY, DMY, and YMD; honor US and European for <listitem><para>Add new DateStyle values MDY, DMY, and YMD; honor US and European for
...@@ -971,14 +801,12 @@ zero-row record variable (Tom)</para></listitem> ...@@ -971,14 +801,12 @@ zero-row record variable (Tom)</para></listitem>
<listitem><para>Allow PL/pgSQL to declare variables of composite types without %ROWTYPE (Tom)</para></listitem> <listitem><para>Allow PL/pgSQL to declare variables of composite types without %ROWTYPE (Tom)</para></listitem>
<listitem><para>Fix PL/python _quote() function to handle big integers (?)</para></listitem> <listitem><para>Fix PL/python _quote() function to handle big integers (?)</para></listitem>
<listitem><para>Make PL/python an untrusted language, now called plpythonu (Kevin Jacobs, Tom)</para> <listitem><para>Make PL/python an untrusted language, now called plpythonu (Kevin Jacobs, Tom)</para>
<note>
<para> <para>
The Python language no longer supports a restricted execution The Python language no longer supports a restricted execution
environment, so we removed the trusted version of PL/python. If this environment, so we removed the trusted version of PL/python. If this
situation changes, we will re-add a version of PL/python that can be situation changes, we will re-add a version of PL/python that can be
used by non-super users. used by non-super users.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow polymorphic PL/pgSQL functions (Tom, Joe)</para></listitem> <listitem><para>Allow polymorphic PL/pgSQL functions (Tom, Joe)</para></listitem>
<listitem><para>Improved compiled function caching mechanism in PL/pgSQL with full <listitem><para>Improved compiled function caching mechanism in PL/pgSQL with full
...@@ -994,48 +822,38 @@ zero-row record variable (Tom)</para></listitem> ...@@ -994,48 +822,38 @@ zero-row record variable (Tom)</para></listitem>
<itemizedlist> <itemizedlist>
<listitem><para>Add "\pset pager always" to always use pager (Greg)</para> <listitem><para>Add "\pset pager always" to always use pager (Greg)</para>
<note>
<para> <para>
This forces the pager to be used even if the number of rows is less This forces the pager to be used even if the number of rows is less
than the screen height --- this is valuable for rows that wrap than the screen height --- this is valuable for rows that wrap
across several screen rows. across several screen rows.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem> <listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem>
<listitem><para>Reorder \? help into groupings (Harald Armin Massa, Bruce)</para></listitem> <listitem><para>Reorder \? help into groupings (Harald Armin Massa, Bruce)</para></listitem>
<listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem> <listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem>
<listitem><para>\encoding now changes based on the client_encoding server variable (Tom)</para> <listitem><para>\encoding now changes based on the client_encoding server variable (Tom)</para>
<note>
<para> <para>
In previous versions, \encoding was not aware of encoding changes In previous versions, \encoding was not aware of encoding changes
made using SET CLIENT_ENCODING. made using SET CLIENT_ENCODING.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Save edit history into readline history (Ross)</para> <listitem><para>Save edit history into readline history (Ross)</para>
<note>
<para> <para>
When \e is used to edit a query, the result is saved in the readline When \e is used to edit a query, the result is saved in the readline
history for retrieval using the up arrow. history for retrieval using the up arrow.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Improve \d display (Christopher)</para></listitem> <listitem><para>Improve \d display (Christopher)</para></listitem>
<listitem><para>Enhance HTML mode to be more standards-compliant (Greg)</para></listitem> <listitem><para>Enhance HTML mode to be more standards-compliant (Greg)</para></listitem>
<listitem><para>New '\set AUTOCOMMIT off' capability (Tom)</para> <listitem><para>New '\set AUTOCOMMIT off' capability (Tom)</para>
<note>
<para> <para>
This takes the place of the remove server variable 'autocommit'. This takes the place of the remove server variable 'autocommit'.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>New '\set VERBOSITY' to control error detail (Tom)</para> <listitem><para>New '\set VERBOSITY' to control error detail (Tom)</para>
<note>
<para> <para>
This controls the new error reporting details. This controls the new error reporting details.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>New %T prompt string to show transaction status (Tom)</para></listitem> <listitem><para>New %T prompt string to show transaction status (Tom)</para></listitem>
<listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem> <listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem>
...@@ -1046,7 +864,6 @@ zero-row record variable (Tom)</para></listitem> ...@@ -1046,7 +864,6 @@ zero-row record variable (Tom)</para></listitem>
<itemizedlist> <itemizedlist>
<listitem><para>Allow PQcmdTuples() to return row counts for MOVE and FETCH (Neil)</para></listitem> <listitem><para>Allow PQcmdTuples() to return row counts for MOVE and FETCH (Neil)</para></listitem>
<listitem><para>Add PQfreemem() for freeing memory on Win32, suggest for NOTIFY (Bruce)</para> <listitem><para>Add PQfreemem() for freeing memory on Win32, suggest for NOTIFY (Bruce)</para>
<note>
<para> <para>
Win32 requires that memory allocated in a library be freed by a Win32 requires that memory allocated in a library be freed by a
function in the same library, hence free() doesn't work for freeing function in the same library, hence free() doesn't work for freeing
...@@ -1054,15 +871,12 @@ zero-row record variable (Tom)</para></listitem> ...@@ -1054,15 +871,12 @@ zero-row record variable (Tom)</para></listitem>
libpq memory, especially on Win32, and is recommended for other libpq memory, especially on Win32, and is recommended for other
platforms as well. platforms as well.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Document service capability, and add sample file (Bruce)</para> <listitem><para>Document service capability, and add sample file (Bruce)</para>
<note>
<para> <para>
This allows clients to look up connection information in a central This allows clients to look up connection information in a central
file on the client machine. file on the client machine.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Make PQsetdbLogin() have the same defaults as PQconnectdb() (Tom)</para></listitem> <listitem><para>Make PQsetdbLogin() have the same defaults as PQconnectdb() (Tom)</para></listitem>
<listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem> <listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem>
...@@ -1074,13 +888,11 @@ zero-row record variable (Tom)</para></listitem> ...@@ -1074,13 +888,11 @@ zero-row record variable (Tom)</para></listitem>
"prefer", and "require" (Jon Jensen)</para></listitem> "prefer", and "require" (Jon Jensen)</para></listitem>
<listitem><para>Allow new error codes and levels of text (Tom)</para></listitem> <listitem><para>Allow new error codes and levels of text (Tom)</para></listitem>
<listitem><para>Allow access to the underlying table and column of a query result (Tom)</para> <listitem><para>Allow access to the underlying table and column of a query result (Tom)</para>
<note>
<para> <para>
This is helpful for query-builder applications that want to know the This is helpful for query-builder applications that want to know the
underlying table and column names associated with a specific result underlying table and column names associated with a specific result
set. set.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Allow access to the current transaction status (Tom)</para></listitem> <listitem><para>Allow access to the current transaction status (Tom)</para></listitem>
<listitem><para>Add ability to pass binary data directly to the backend (Tom)</para></listitem> <listitem><para>Add ability to pass binary data directly to the backend (Tom)</para></listitem>
...@@ -1102,21 +914,17 @@ zero-row record variable (Tom)</para></listitem> ...@@ -1102,21 +914,17 @@ zero-row record variable (Tom)</para></listitem>
<itemizedlist> <itemizedlist>
<listitem><para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para></listitem> <listitem><para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para></listitem>
<listitem><para>Add ecpg Informix compatibility (Michael)</para> <listitem><para>Add ecpg Informix compatibility (Michael)</para>
<note>
<para> <para>
This allows ecpg to process embedded C programs that were written This allows ecpg to process embedded C programs that were written
using certain Informix extensions. using certain Informix extensions.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Add ecpg DECIMAL type that is fixed length, for Informix (Michael)</para></listitem> <listitem><para>Add ecpg DECIMAL type that is fixed length, for Informix (Michael)</para></listitem>
<listitem><para>Allow thread-safe ecpg with --enable-thread-safety (Lee Kindness, Bruce)</para> <listitem><para>Allow thread-safe ecpg with --enable-thread-safety (Lee Kindness, Bruce)</para>
<note>
<para> <para>
This allows multiple ecpg threads to access the database at the same This allows multiple ecpg threads to access the database at the same
time. time.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Move python client interface to http://www.pygresql.org (Marc)</para></listitem> <listitem><para>Move python client interface to http://www.pygresql.org (Marc)</para></listitem>
</itemizedlist></sect2> </itemizedlist></sect2>
...@@ -1145,20 +953,16 @@ zero-row record variable (Tom)</para></listitem> ...@@ -1145,20 +953,16 @@ zero-row record variable (Tom)</para></listitem>
<listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem> <listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem>
<listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem> <listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem>
<listitem><para>Remove --enable-recode option to configure</para> <listitem><para>Remove --enable-recode option to configure</para>
<note>
<para> <para>
This was no longer needed now that we have CREATE CONVERSION. This was no longer needed now that we have CREATE CONVERSION.
</para> </para>
</note>
</listitem> </listitem>
<listitem><para>Generate a compile error if spinlock code is not found (Bruce)</para> <listitem><para>Generate a compile error if spinlock code is not found (Bruce)</para>
<note>
<para> <para>
Platforms without spinlock code will now fail to compile, rather Platforms without spinlock code will now fail to compile, rather
than silently using semaphores. This failure can be disabled with a than silently using semaphores. This failure can be disabled with a
new configure option. new configure option.
</para> </para>
</note>
</listitem> </listitem>
</itemizedlist></sect2> </itemizedlist></sect2>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment