From c4e3cff48c074cbf9373691296b55789001abfb2 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 14 Nov 2003 02:06:42 +0000 Subject: [PATCH] Beat some sense into the release notes. --- doc/src/sgml/release.sgml | 3127 +++++++++++++++++++++++-------------- 1 file changed, 1978 insertions(+), 1149 deletions(-) diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 6a1c90a7ba..725942434f 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,5 +1,5 @@ @@ -8,1015 +8,1844 @@ $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.238 2003/11/12 22:47:47 pe Release 7.4 -Overview - Major changes in this release: + + Overview - - - IN/NOT IN subqueries are now much more efficient - - In previous releases, IN/NOT IN subqueries were joined to the - upper query by sequentially scanning the subquery looking for - a match. The 7.4 code uses the same sophisticated techniques - used by ordinary joins and so is much faster. An IN - will now usually be as fast as or faster than an equivalent EXISTS - subquery; this reverses the conventional wisdom that applied to - previous releases. - - - - Improved GROUP BY processing by using hash buckets - - In previous releases, rows to be grouped had to be sorted first. - The 7.4 code can do GROUP BY without sorting, by accumulating results - into a hash table with one entry per group. It will still use the sort - technique if the hash table is estimated to be too large to fit in - sort_mem, however. - - - - New multi-key hash join capability - In previous releases, hash joins could only occur on single keys. - This release allows multi-column hash joins. + Major changes in this release: + + + + + IN/NOT IN subqueries are + now much more efficient + + + + + In previous releases, IN/NOT + IN subqueries were joined to the upper query by + sequentially scanning the subquery looking for a match. The + 7.4 code uses the same sophisticated techniques used by + ordinary joins and so is much faster. An + IN will now usually be as fast as or faster + than an equivalent EXISTS subquery; this + reverses the conventional wisdom that applied to previous + releases. + + + + + + + Improved GROUP BY processing by using hash buckets + + + + + In previous releases, rows to be grouped had to be sorted + first. The 7.4 code can do GROUP BY + without sorting, by accumulating results into a hash table + with one entry per group. It will still use the sort + technique, however, if the hash table is estimated to be too + large to fit in sort_mem. + + + + + + + New multikey hash join capability + + + + + In previous releases, hash joins could only occur on single + keys. This release allows multicolumn hash joins. + + + + + + + Queries using the explicit JOIN syntax are + now better optimized + + + + + Prior releases evaluated queries using the explicit + JOIN syntax only in the order implied by + the syntax. 7.4 allows full optimization of these queries, + meaning the optimizer considers all possible join orderings + and chooses the most efficient. Outer joins, however, must + still follow the declared ordering. + + + + + + + Faster and more powerful regular expression code + + + + + The entire regular expression module has been replaced with a + new version by Henry Spencer, originally written for Tcl. The + code greatly improves performance and supports several flavors + of regular expressions. + + + + + + + Function-inlining for simple SQL functions + + + + + Simple SQL functions can now be inlined by including their SQL + in the main query. This improves performance by eliminating + per-call overhead. That means, simple SQL functions now + behave like macros. + + + + + + + Full support for IPv6 connections and IPv6 address data types + + + + + Previous releases allowed only IPv4 connections, and the IP + data types only supported IPv4 addresses. This release adds + full IPv6 support in both of these areas. + + + + + + + Major improvements in SSL performance and reliability + + + + + Several people very familiar with the SSL API have overhauled + our SSL code to improve SSL key negotiation and error + recovery. + + + + + + + Make free space map to efficiently reuse empty index pages, + and other free space management improvements + + + + + In previous releases, B-tree index pages that were left empty + because 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 records empty index + pages and allows them to be reused for any future index rows. + + + + + + + SQL-standard information schema + + + + + The information schema provides a standardized and stable way + to access information about the schema objects defined in a + database. + + + + + + + Cursors conform more closely with the SQL standard + + + + + The commands FETCH and + MOVE have been overhauled to conform more + closely to the SQL standard. + + + + + + + Cursors can exist outside transactions + + + + + These cursors are also called holdable cursors + + + + + + + New client-to-server protocol + + + + + The new protocol adds error codes, more status information, + faster startup, better support for binary data transmission, + parameter values separated from SQL commands, prepared + statements available at the protocol level, and cleaner + recovery from COPY failures. The older + protocol is still supported by both server and clients. + + + + + + + libpq and + ECPG applications are now fully + thread-safe + + + + + While previous libpq releases + already supported threads, this release improves thread safety + by fixing some non-thread-safe code that was used during + database connection startup. The configure + option must be used to + enable this feature. + + + + + + + New version of full-text indexing + + + + + A new full-text indexing suite is available in + contrib/tsearch2. + + + + + + + New autovacuum tool + + + + + The new autovacuum tool in + contrib/autovacuum monitors the database + statistics tables for + INSERT/UPDATE/DELETE + activity and automatically vacuums tables when needed. + + + + + + + Array handling has been improved and moved into the server core + + + + + Many array limitations have been removed, and arrays behave + more like fully-supported data types. + + + + - + - ANSI joins are now better optimized - - Prior releases evaluated ANSI join syntax only in the order - implied by the syntax. 7.4 allows full optimization of - queries using ANSI join syntax, meaning the optimizer considers - all possible join orderings and chooses the most efficient. - Outer joins, however, must still follow the declared ordering. - - - - Faster and more powerful regular expression code - - - The entire regular expression module has been replaced with a new - version by Henry Spencer, originally written for TCL. The code - greatly improves performance and supports several flavors - of regular expressions. - - - - Function-inlining for simple SQL functions - - Simple SQL functions can now be inlined by including their SQL - in the main query. This improves performance by eliminating - per-call overhead --- that is, simple SQL functions now behave - like macros. - - - - Full support for IPv6 connections and IPv6 address -data types - - Prior releases allowed only IPv4 connections, and the IP data types only - supported IPv4 addresses. This release adds full IPv6 support in - both of these areas. - - - - Major improvements in SSL performance and -reliability - - Several people very familiar with the SSL API have overhauled our - SSL code to improve SSL key negotiation and error recovery. - - - - Allow free space map to efficiently reuse empty index -pages, and other free space management improvements - - In prior releases, B-tree index pages that were left empty because 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 records - empty index pages and allows them to be reused for any future index - rows. - - - -Implement SQL-standard information schema - - -Support read-only transactions - - -Make cursors comply more closely with the SQL standard - - - - Allow cursors to exist outside transactions, -also called holdable cursors - - - - New client-to-server protocol - - The new protocol adds error codes, more status information, faster - startup, better support for binary data transmission, parameter values - separated from SQL commands, prepared statements available at the - protocol level, and cleaner recovery from COPY failures. - The older protocol is still supported by both servers and clients. - - - - libpq and ecpg are now fully thread-safe with ---enable-thread-safety - - While prior libpq releases already supported threads, this release - improves thread safety by fixing some non-thread-safe code that - was used during database connection startup. - - - - New version of full text indexing in /contrib/tsearch2 - - - New autovacuum tool in /contrib - - This new tool monitors the database statistics tables for - INSERT/UPDATE/DELETE activity and automatically vacuums tables when - needed. - - - - Array handling has been improved and moved into the main -server - - Many array limitations have been removed and they behave more like - fully-supported data types. - - - - - Migration to version 7.4 + + Migration to version 7.4 - A dump/restore using pg_dump is -required for those wishing to migrate data from any previous release. + + A dump/restore using pg_dump is + required for those wishing to migrate data from any previous + release. + - Observe the following incompatibilities: - - The server-side autocommit setting was removed and reimplemented - in client applications and languages. - - Server-side autocommit was causing too many problems with - languages and applications that wanted to control their own - autocommit behavior, so autocommit was removed from the server - and added to individual client APIs as appropriate. - - - Error message wording has changed substantially in this release, - and error codes have been added. - - Significant effort was invested to make the messages more - consistent and user-oriented. - - - ANSI inner joins may behave differently because they are now better optimized - A number of server variables have been renamed for - clarity, primarily those related to logging - MOVE/FETCH 0 now does nothing - - In prior releases, FETCH 0 would fetch all remaining rows, and - MOVE 0 would move to the end of the cursor. - - - MOVE/FETCH now returns the actual number of rows moved/fetched, or zero - if at the beginning/end of the cursor - - Prior releases would return the row count passed to the - command, not the actual number of rows FETCHed or MOVEd. - - - COPY now can process files that use carriage-return or - carriage-return/line-feed end-of-line sequences. - Literal carriage-returns and line-feeds are no - longer accepted in data values; use \r and \n instead. - Trailing spaces are now trimmed when converting - from CHAR(n) to - VARCHAR(n) / TEXT - FLOAT(p) now measures 'p' in bits, not digits - Ambiguous date values now must match the ordering specified by DateStyle - - In prior releases, a date of 10/20/03 was - interpreted as a date in October even if the - DateStyle specified the day should be first. - 7.4 will throw an error if the date is invalid for the - current DateStyle. - - - The oidrand(), oidsrand(), - and userfntest() functions have been removed. - - These functions were determined to be no longer useful. - - - 'now' will no longer work as a column default; now() or - CURRENT_TIMESTAMP should be used instead - - In prior releases, there was special code so the string - 'now' was interpreted at - INSERT time and not at table creation time, but - this work around didn't cover all cases. Release 7.4 - now requires that defaults be defined properly using - now() or - CURRENT_TIMESTAMP. These will work in all - situations. - - - 'today' will no longer work as a column default; CURRENT_DATE - should be used instead - - Same description as above. - - - Dollar sign ($) is no longer allowed in operator names - Dollar sign ($) can be a non-first character in identifiers - - This was done to improve compatibility with other database - systems, and to avoid syntax problems when parameter placeholders - ($n) are written adjacent to operators. - - - + + Observe the following incompatibilities: - Server Operation Changes - -Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce, Tom, Kurt - Roeckx, Andrew Dunstan) -Fix SSL to handle errors cleanly (Nathan Mueller) - - In prior releases, certain SSL API error reports were not - handled correctly. This release fixes those problems. - - -SSL protocol security and performance improvements (Sean Chittenden) - - SSL key renegotiation was happening too frequently, causing poor SSL - performance. Also, initial key handling was improved. - - -Print lock information when a deadlock is detected (Tom) - - This allows easier debugging of deadlock situations. - - -Update /tmp socket modification times -regularly to avoid their removal (Tom) - - This should help prevent /tmp directory cleaner - administration scripts from removing server socket files. - - -Enable PAM for Mac OS X (Aaron Hillegass) -Make btree indexes fully WAL-safe (Tom) - - In prior releases, under certain rare cases, a server crash could - cause btree indexes to become corrupt. This release removes those - last few rare cases. - - -Allow btree index compaction and empty page reuse (Tom) -Fix inconsistent index lookups during split of first root page (Tom) - - In prior releases, when a single-page index split into two pages, - there was a brief period when another database session could miss - seeing an index entry. This release fixes that rare failure case. - - -Improve free space map allocation logic (Tom) -Preserve free space information between postmaster restarts (Tom) - - In prior releases, the free space map was not saved when the - postmaster was stopped, so newly started servers had no free space - information. This release saves the free space map, and reloads it - when the server is restarted. - - -Set proper schema permissions in initdb (Peter) -Add start time to pg_stat_activity (Neil) -New code to detect corrupt disk pages; erase with zero_damaged_pages (Tom) -New client/server protocol: faster, no username length limit, allow - clean exit from COPY (Tom) -Add transaction status, tableid, columnid to backend protocol (Tom) -Add new binary I/O protocol (Tom) -Remove autocommit server setting; move to client applications (Tom) -New error message wording, error codes, and three levels of -error detail (Tom, Joe, Peter) - + + + + The server-side autocommit setting was removed and + reimplemented in client applications and languages. + Server-side autocommit was causing too many problems with + languages and applications that wanted to control their own + autocommit behavior, so autocommit was removed from the server + and added to individual client APIs as appropriate. + + -Performance Changes + + + Error message wording has changed substantially in this + release. Significant effort was invested to make the messages + more consistent and user-oriented. If your applications try to + detect different error conditions by parsing the error message, + you are strongly encourage to use the new error code facility. + + - + + + Inner joins using the explicit JOIN syntax + may behave differently because they are now better + optimized. + + -Add hashing for GROUP BY aggregates (Tom) -Allow nested loops to be smarter about multicolumn indexes (Tom) -Allow multi-key hash joins (Tom) -Improve constant folding (Tom) -Add ability to inline simple SQL functions (Tom) -Reduce memory usage for queries using complex functions (Tom) - - In prior releases, functions returning allocated memory would - not free it until the query completed. This release allows the - freeing of function-allocated memory when the function call - completes, reducing the total memory used by functions. - - -Improve GEQO optimizer performance (Tom) - - There were several inefficiencies in the way the GEQO optimizer - managed potential query paths. This release fixes this. - - -Allow IN/NOT IN to be handled via hash tables (Tom) -Improve NOT IN (subquery) performance (Tom) -Allow most IN subqueries to be processed as joins (Tom) -Allow the postmaster to preload libraries using preload_libraries (Joe) - - 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 - inherited by all database sessions. - - -Improve optimizer cost computations, particularly for subqueries (Tom) -Avoid sort when subquery ORDER BY matches upper query (Tom) -Deduce that WHERE a.x = b.y and b.y = 42 also means a.x = 42 (Tom) -Allow hash/merge joins on complex joins (Tom) -Allow hash joins for more data types (Tom) -Allow join optimization of ANSI inner joins, disable with join_collapse_limit (Tom) -Add from_collapse_limit to control conversion of subqueries to joins (Tom) -Use faster and more powerful regular expression code from TCL (Henry Spencer, Tom) -Use bit-mapped relation sets in the optimizer (Tom) -Improve backend startup time (Tom) - - The new client/server protocol requires fewer network packets to start a - database session. - - -Improve trigger/constraint performance (Stephan) -Improve speed of col IN (const, const, const, ...) (Tom) -Fix hash indexes which were broken in rare cases (Tom) -Improve hash index concurrency and speed (Tom) - - Prior releases suffered from poor hash index performance, - particularly for high concurrency situations. This release fixes - that, and the development group is interested in reports comparing - btree and hash index performance. - - -Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul) - - Certain CPU's perform faster data copies when addresses are 32-byte - aligned. - - -The NUMERIC datatype has been reimplemented for better performance (Tom) - - NUMERIC used to be stored in base-100. The new code uses base-10000, - for significantly better performance. - - - + + + A number of server configuration parameters have been renamed + for clarity, primarily those related to + logging. + + -Server Configuration Changes + + + FETCH 0 or MOVE 0 now + does nothing. In prior releases, FETCH 0 + would fetch all remaining rows, and MOVE 0 + would move to the end of the cursor. + + + + + + FETCH and MOVE now return + the actual number of rows fetched/moved, or zero if at the + beginning/end of the cursor. Prior releases would return the + row count passed to the command, not the number of rows + actually fetched or moved. + + - -Rename server parameter server_min_messages to log_min_messages (Bruce) - - This was done so most parameters that control the server logs begin - with log_. + + + COPY now can process files that use + carriage-return or carriage-return/line-feed end-of-line + sequences. Literal carriage-returns and line-feeds are no + longer accepted in data values; use \r and + \n instead. + + + + + + Trailing spaces are now trimmed when converting from type + char(n) to + varchar(n) or text. + This is what most people always expected to happen anyway. + + + + + + The data type float(p) now + measures p in binary digits, not decimal + digits. The new behavior follows the SQL standard. + + + + + + Ambiguous date values now must match the ordering specified by + the datestyle setting. In prior releases, a + date specification of 10/20/03 was interpreted as a + date in October even if datestyle specified that + the day should be first. 7.4 will throw an error if a date + specification is invalid for the current setting of + datestyle. + + + + + + The functions oidrand, + oidsrand, and + userfntest have been removed. These + functions were determined to be no longer useful. + + + + + + String literals specifying time-varying date/time values, such + as 'now' or 'today' will + no longer work as expected in column default expressions; they + now cause the time of the table creation to be the default, not + the time of the insertion. Functions such as + now(), current_timestamp, or + current_date should be used instead. + + + + In previous releases, there was special code so that strings + such as 'now' were interpreted at + INSERT time and not at table creation time, but + this work around didn't cover all cases. Release 7.4 now + requires that defaults be defined properly using functions such + as now() or current_timestamp. These + will work in all situations. + + + + + + The dollar sign ($) is no longer allowed in + operator names. It can instead be a non-first character in + identifiers. This was done to improve compatibility with other + database systems, and to avoid syntax problems when parameter + placeholders ($n) are written + adjacent to operators. + + + - -Rename show_*_stats to log_*_stats (Bruce) -Rename show_source_port to log_source_port (Bruce) -Rename hostname_lookup to log_hostname (Bruce) -Add checkpoint_warning to warn of excessive checkpointing (Bruce) + + + + Changes + - In prior releases, it was difficult to determine if checkpoint was - happening too frequently. This feature adds a warning to the server - logs when excessive checkpointing happens. + Below you will find a detailed account of the changes between + release 7.4 and the previous major release. - -New read-only server parameters for localization (Tom) -Change debug server log messages to output as DEBUG rather than LOG (Bruce) -Prevent server log variables from being turned off by non-super users (Bruce) - - This is a security feature so non-super-users can't disable logging - that was enabled by the administrator. - - -log_min_messages/client_min_messages now controls debug_* output (Bruce) - - This centralizes client debug information so all debug output can - be sent to either the client or server logs. - - -Add Mac OS X Rendezvous server support (Chris Campbell) - - This allows Mac OS X machines to query the network for available - PostgreSQL servers. - - -Add ability to print only slow statements using log_min_duration_statement - (Christopher) + + + Server Operation Changes + + + - This is an often requested debugging feature that allows administrators to - see only slow queries in their server logs. + Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, + Bruce, Tom, Kurt Roeckx, Andrew Dunstan) - -Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan) - - This allows administrators to merge the host IP address and netmask - fields into a single CIDR field in pg_hba.conf. - - -New is_superuser read-only variable (Tom) -New server-side parameter log_error_verbosity to control error detail (Tom) - - This works with the new error reporting feature to supply additional - error information like hints, file names and line numbers. - - -postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter) - - This option is useful for administration tools that need to know the - configuration variable names and their minimums, maximums, defaults, - and descriptions. - - -Add new columns in pg_settings: context, type, source, min_val, max_val (Joe) -Make default shared_buffers 1000 and max_connections 100, if possible (Tom) - - Prior versions defaulted to 64 shared buffers so PostgreSQL would - start on even very old systems. This release tests the amount of shared - memory allowed by the platform and selects more reasonable default values - if possible. Of course, users are still encouraged to evaluate their - resource load and size shared_buffers accordingly. - - -New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon Jensen) - - In prior releases, there was no way to prevent SSL connections if - both the client and server supported SSL. This option allows that - capability. - - -Remove geqo_random_seed server parameter (Tom) - + -Query Changes - - -New SQL-standard information schema (Peter) - -Add read-only transactions (Peter) -Add server variable regex_flavor to control regular expression - processing (Tom) -Print key name and value in foreign-key violation messages (Dmitry Tkach) -Allow users to see their own queries in pg_stat_activity (Kevin Brown) - - In prior releases, only the super-user could see query strings using - pg_stat_activity. Now ordinary users can see their own query - strings. - - -Fix aggregates in subqueries to match SQL spec (Tom) - - The SQL spec says that an aggregate function appearing within a nested - subquery belongs to the outer query if its argument contains only - outer-query variables. Prior PG releases did not handle this fine point - correctly. - - -Add option to prevent auto-addition of tables referenced in query (Nigel J. - Andrews) + - By default, tables mentioned in the query are automatically added - to the FROM clause if they are not already there. This is compatible with - historic Postgres behavior but is contrary to the SQL spec. - This option allows selecting spec-compatible behavior. + Fix SSL to handle errors cleanly (Nathan Mueller) - -Allow UPDATE ... SET col = DEFAULT (Rod) - - This allows UPDATE to set a column to its declared default value. - - -Allow expressions to be used in LIMIT/OFFSET (Tom) - - In prior releases, LIMIT/OFFSET could only use constants, not - expressions. - - -Change EXECUTE INTO to CREATE TABLE AS EXECUTE (Peter) - - bjm ? - - - + + In prior releases, certain SSL API error reports were not + handled correctly. This release fixes those problems. + + -Object Manipulation Changes + + + SSL protocol security and performance improvements (Sean Chittenden) + + + SSL key renegotiation was happening too frequently, causing poor + SSL performance. Also, initial key handling was improved. + + - -Make CREATE SEQUENCE grammar more SQL1999 standards compliant (Neil) - - bjm ? - - -Add FOR EACH STATEMENT statement-level triggers (Neil) - - 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 - query. This capability is planned for a future release. - - -Add DOMAIN CHECK constraints (Rod) - - This greatly increases the usefulness of domains by allowing them to - use CHECK constraints. - - -Add ALTER DOMAIN .. SET / DROP NOT NULL, SET / DROP DEFAULT, ADD / DROP - CONSTRAINT (Rod) + + + Print lock information when a deadlock is detected (Tom) + + + This allows easier debugging of deadlock situations. + + + + + + Update /tmp socket modification times + regularly to avoid their removal (Tom) + + + This should help prevent /tmp directory + cleaner administration scripts from removing server socket + files. + + + + Enable PAM for Mac OS X (Aaron Hillegass) + + + Make B-tree indexes fully WAL-safe (Tom) + + In prior releases, under certain rare cases, a server crash + could cause B-tree indexes to become corrupt. This release + removes those last few rare cases. + + + + Allow B-tree index compaction and empty page reuse (Tom) + + + + Fix inconsistent index lookups during split of first root page (Tom) + + + In prior releases, when a single-page index split into two + pages, there was a brief period when another database session + could miss seeing an index entry. This release fixes that rare + failure case. + + + + Improve free space map allocation logic (Tom) + + + Preserve free space information between server restarts (Tom) + + In prior releases, the free space map was not saved when the + postmaster was stopped, so newly started servers had no free + space information. This release saves the free space map, and + reloads it when the server is restarted. + + + + Add start time to pg_stat_activity (Neil) + New code to detect corrupt disk pages; erase with zero_damaged_pages (Tom) + New client/server protocol: faster, no username length limit, allow clean exit from COPY (Tom) + Add transaction status, table ID, column ID to client/server protocol (Tom) + Add binary I/O to client/server protocol (Tom) + Remove autocommit server setting; move to client applications (Tom) + New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter) + + + + + Performance Improvements + + + Add hashing for GROUP BY aggregates (Tom) + Make nested-loop joins be smarter about multicolumn indexes (Tom) + Allow multikey hash joins (Tom) + Improve constant folding (Tom) + Add ability to inline simple SQL functions (Tom) + + + Reduce memory usage for queries using complex functions (Tom) + + In prior releases, functions returning allocated memory would + not free it until the query completed. This release allows the + freeing of function-allocated memory when the function call + completes, reducing the total memory used by functions. + + + + + Improve GEQO optimizer performance (Tom) + + There were several inefficiencies in the way the GEQO optimizer + managed potential query paths. This release fixes this. + + + + + + Allow IN/NOT IN to be handled via hash + tables (Tom) + + + + + + Improve NOT IN (subquery) + performance (Tom) + + + + + + Allow most IN subqueries to be processed as + joins (Tom) + + + + + + Pattern matching operations can use indexes regardless of + locale (Peter) + + + There is no way for non-ASCII locales to use the standard + indexes for LIKE comparisons. This release + adds a way to create a special index for + LIKE. + + + + + Allow the postmaster to preload libraries using preload_libraries (Joe) + + For shared libraries that require a long time to load, this + option is available so the library can be preloaded in the + postmaster and inherited by all database sessions. + + + + + + Improve optimizer cost computations, particularly for subqueries (Tom) + + + + + + Avoid sort when subquery ORDER BY matches upper query (Tom) + + + + + + Deduce that WHERE a.x = b.y AND b.y = 42 also + means a.x = 42 (Tom) + + + + + + Allow hash/merge joins on complex joins (Tom) + + + + + + Allow hash joins for more data types (Tom) + + + + + + Allow join optimization of explicit inner joins, disable with + join_collapse_limit (Tom) + + + + + + Add parameter from_collapse_limit to control + conversion of subqueries to joins (Tom) + + + + + + Use faster and more powerful regular expression code from Tcl + (Henry Spencer, Tom) + + + + + + Use bit-mapped relation sets in the optimizer (Tom) + + + + + Improve connection startup time (Tom) + + The new client/server protocol requires fewer network packets to + start a database session. + + + + + + Improve trigger/constraint performance (Stephan) + + + + + + Improve speed of col IN (const, const, const, ...) (Tom) + + + + + + Fix hash indexes which were broken in rare cases (Tom) + + + + Improve hash index concurrency and speed (Tom) + + Prior releases suffered from poor hash index performance, + particularly for high concurrency situations. This release fixes + that, and the development group is interested in reports + comparing B-tree and hash index performance. + + + + + Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul) + + Certain CPU's perform faster data copies when addresses are + 32-byte aligned. + + + + + Data type numeric reimplemented for better performance (Tom) + + numeric used to be stored in base 100. The new code + uses base 10000, for significantly better performance. + + + + + + + Server Configuration Changes + + + + Rename server parameter server_min_messages to log_min_messages (Bruce) + + This was done so most parameters that control the server logs + begin with log_. + + + + Rename show_*_stats to log_*_stats (Bruce) + Rename show_source_port to log_source_port (Bruce) + Rename hostname_lookup to log_hostname (Bruce) + + + Add checkpoint_warning to warn of excessive checkpointing (Bruce) + + In prior releases, it was difficult to determine if checkpoint + was happening too frequently. This feature adds a warning to the + server logs when excessive checkpointing happens. + + + + New read-only server parameters for localization (Tom) + + + + Change debug server log messages to output as DEBUG + rather than LOG (Bruce) + + + + + Prevent server log variables from being turned off by non-superusers (Bruce) + + This is a security feature so non-superusers cannot disable + logging that was enabled by the administrator. + + + + + + log_min_messages/client_min_messages now + controls debug_* output (Bruce) + + + This centralizes client debug information so all debug output + can be sent to either the client or server logs. + + + + + Add Mac OS X Rendezvous server support (Chris Campbell) + + This allows Mac OS X hosts to query the network for available + PostgreSQL servers. + + + + + + Add ability to print only slow statements using + log_min_duration_statement + (Christopher) + + + This is an often requested debugging feature that allows + administrators to see only slow queries in their server logs. + + + + + Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan) + + This allows administrators to merge the host IP address and + netmask fields into a single CIDR field in pg_hba.conf. + + + + New read-only parameter is_superuser (Tom) + + + New parameter log_error_verbosity to control error detail (Tom) + + This works with the new error reporting feature to supply + additional error information like hints, file names and line + numbers. + + + + + postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter) + + This option is useful for administration tools that need to know + the configuration variable names and their minimums, maximums, + defaults, and descriptions. + + + + + + Add new columns in pg_settings: + context, type, source, + min_val, max_val (Joe) + + + + + + Make default shared_buffers 1000 and + max_connections 100, if possible (Tom) + + + Prior versions defaulted to 64 shared buffers so PostgreSQL + would start on even very old systems. This release tests the + amount of shared memory allowed by the platform and selects more + reasonable default values if possible. Of course, users are + still encouraged to evaluate their resource load and size + shared_buffers accordingly. + + + + + + New pg_hba.conf record type + hostnossl to prevent SSL connections (Jon + Jensen) + + + In prior releases, there was no way to prevent SSL connections + if both the client and server supported SSL. This option allows + that capability. + + + + + + Remove parameter geqo_random_seed + (Tom) + + + + + + Add server parameter regex_flavor to control regular expression processing (Tom) + + + + + + Make pg_ctl better handle nonstandard ports (Greg) + + + + + + + Query Changes + + + New SQL-standard information schema (Peter) + Add read-only transactions (Peter) + Print key name and value in foreign-key violation messages (Dmitry Tkach) + + + Allow users to see their own queries in pg_stat_activity (Kevin Brown) + + In prior releases, only the superuser could see query strings + using pg_stat_activity. Now ordinary users + can see their own query strings. + + + + + Fix aggregates in subqueries to match SQL standard (Tom) + + The SQL standard says that an aggregate function appearing + within a nested subquery belongs to the outer query if its + argument contains only outer-query variables. Prior PostgreSQL + releases did not handle this fine point correctly. + + + + + Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews) + + By default, tables mentioned in the query are automatically + added to the FROM clause if they are not already + there. This is compatible with historic POSTGRES behavior but + is contrary to the SQL standard. This option allows selecting + standard-compatible behavior. + + + + + Allow UPDATE ... SET col = DEFAULT (Rod) + + This allows UPDATE to set a column to its + declared default value. + + + + + Allow expressions to be used in LIMIT/OFFSET (Tom) + + In prior releases, LIMIT/OFFSET could + only use constants, not expressions. + + + + + Implement CREATE TABLE AS EXECUTE (Neil, Peter) + + + + + + Object Manipulation Changes + + + + Make CREATE SEQUENCE grammar more conforming to SQL 2003 (Neil) + + + + Add statement-level triggers (Neil) + + 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 + statement. This capability is planned for a future release. + + + + + Add check constraints for domains (Rod) + + This greatly increases the usefulness of domains by allowing + them to use check constraints. + + + + + Add ALTER DOMAIN (Rod) This allows manipulation of existing domains. - -Fix several zero-column table bugs (Tom) - - PostgreSQL supports zero-column tables. This fixes various bugs - that occur when using such tables. - - -Have ALTER TABLE ... ADD PRIMARY KEY add NOT NULL constraint (Rod) - - In prior releases, ALTER TABLE ADD PRIMARY would add a unique index, - but not a NOT NULL constraint. That is fixed in this release. - - -Add ALTER DOMAIN OWNER (Rod) -Add ALTER TABLE ... WITHOUT OIDS (Rod) - - This allows control over whether new and updated rows will have an - oid column. This is most useful for saving storage space. - - -Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values (Rod) -Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera) - - This command is used by pg_dump to record the CLUSTER column - for each table previously clustered. This information is used by database-wide - cluster to cluster all previously clustered tables. - - -Improve DOMAIN automatic type casting (Rod, Tom) -Allow dollar signs in identifiers, except as first character (Tom) -Disallow dollar signs in operator names, so x=$1 works (Tom) -Allow SQL200X inheritance syntax LIKE subtable, INCLUDING DEFAULTS (Rod) -Add WITH GRANT OPTION clause to GRANT, per SQL spec (Peter) - - Allow GRANT to give other users the ability to grant permissions on - a object. - - - + -Utility Command Changes - -Add ON COMMIT clause to CREATE TABLE for temp tables (Gavin) - - This adds the ability for a table to be dropped or all rows deleted - on transaction commit. - - -Allow cursors outside transactions using WITH HOLD (Neil) - - In previous releases, cursors were removed at the end of the - transaction. Using WITH HOLD, the current release allows cursors - to remain readable after the creating transaction. - - -MOVE/FETCH 0 now does nothing (Bruce) - - In previous releases, MOVE 0 moved to the end of the cursor, and - FETCH 0 fetched all remaining rows. - - -Cause MOVE/FETCH to return the number of rows moved/fetched, or zero if at the beginning/end of cursor, - per SQL spec (Bruce) - - In prior releases, the row count returned by MOVE and FETCH did - not accurately reflect the number of rows processed. - - -Properly handle SCROLL with cursors, or report an error (Neil) - - Certain cursors can not be fetched backwards optimally. By specifying SCROLL, - extra work will be performed to guarantee that the cursor can be - fetched in reverse or random order. - - -Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n options - for FETCH and MOVE (Tom) -Allow EXPLAIN on DECLARE CURSOR (Tom) - - Prior versions would not allow EXPLAIN on a DECLARE statement. - - -Allow CLUSTER to use index marked as pre-clustered by default (Alvaro Herrera) -Allow CLUSTER to cluster all tables (Alvaro Herrera) - - This allows all previously clustered tables in a database to be - reclustered with a single command. - - -Prevent CLUSTER on partial indexes (Tom) -Allow \r and \r\n termination for COPY files (Bruce) -Disallow literal carriage return as a data value, backslash-carriage-return - and \r are still allowed (Bruce) -COPY changes (binary, \.)? (Tom) -Recover from COPY IN/OUT failure cleanly (Tom) -Prevent possible memory leaks in COPY (Tom) -Make TRUNCATE transaction-safe (Rod) - - Truncate can now be used inside a transaction, and rolled back if - the transaction aborts. - - -Multiple pg_dump fixes, including tar format and large objects -Allow pg_dump to dump specific schemas (Neil) -Allow pg_dump to preserve column storage characteristics (Christopher) - - This preserves ALTER TABLE ... SET STORAGE information. - - -Allow pg_dump to preserve CLUSTER characteristics (Christopher) -Have pg_dumpall use GRANT/REVOKE to dump database-level permissions (Tom) -Allow pg_dumpall to support the -a, -s, -x options of pg_dump (Tom) -Prevent pg_dump from lowercasing identifiers specified on the command line (Tom) -Allow PREPARE/bind of utility commands like FETCH and EXPLAIN (Tom) -Add EXPLAIN EXECUTE (Neil) -Allow pg_get_constraintdef() to support UNIQUE, PRIMARY KEY and - CHECK constraints (Christopher) -Improve VACUUM performance on indexes by reducing WAL traffic (Tom) -Allow pg_ctl to better handle non-standard ports (Greg) -Functional indexes have been generalized into expressional indexes (Tom) - - In prior releases, functional indexes only supported a simple function - applied to one or more column names. - This release allows any type of scalar expression. - - -Have SHOW TRANSACTION_ISOLATION match input to SET TRANSACTION_ISOLATION (Tom) -Have COMMENT ON DATABASE on non-local database generate a warning (Rod) - - Database comments are stored in database-local tables so comments on - a database have to be stored in each database. - - -Improve reliability of LISTEN/NOTIFY (Tom) -Allow REINDEX to reliably reindex non-shared system catalog indexes (Tom) - - This allows system tables to be reindexed without the requirement of - a standalone backend, which was necessary in previous releases. The - only tables that now require a standalone 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 nothing, - all dumps use SET SESSION AUTHORIZATION + + Fix several zero-column table bugs (Tom) - pg_dump no longer reconnects to switch users, but instead always uses - SET SESSION AUTHORIZATION. This should reduce password prompting - during restores. + PostgreSQL supports zero-column tables. This fixes various bugs + that occur when using such tables. - -Long options for pg_dump are now available on all platforms - - We now include our own long option processing routines. - - - + + + Have ALTER TABLE ... ADD PRIMARY KEY add not-null constraint (Rod) + + In prior releases, ALTER TABLE ... ADD + PRIMARY would add a unique index, but not a not-null + constraint. That is fixed in this release. + + -Data Type and Function Changes - -New extra_float_digits server parameter to control float precision display - (Pedro Ferreira, Tom) + Add ALTER TABLE ... WITHOUT OIDS (Rod) + + This allows control over whether new and updated rows will have + an OID column. This is most useful for saving storage space. + + + + + + Add ALTER SEQUENCE to modify minimum, maximum, + increment, cache, cycle values (Rod) + + + + + Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera) + + This command is used by pg_dump to record the + cluster column for each table previously clustered. This + information is used by database-wide cluster to cluster all + previously clustered tables. + + + + Improve automatic type casting for domains (Rod, Tom) + Allow dollar signs in identifiers, except as first character (Tom) + Disallow dollar signs in operator names, so x=$1 works (Tom) + + + + Allow copying table schema using LIKE + subtable, also SQL 2003 + feature INCLUDING DEFAULTS (Rod) + + + + + + Add WITH GRANT OPTION clause to + GRANT (Peter) + + + This enabled GRANT to give other users the + ability to grant privileges on a object. + + + + + + + Utility Command Changes + + + + Add ON COMMIT clause to CREATE TABLE for temporary tables (Gavin) + + This adds the ability for a table to be dropped or all rows + deleted on transaction commit. + + + + + Allow cursors outside transactions using WITH HOLD (Neil) + + In previous releases, cursors were removed at the end of the + transaction. Using WITH HOLD, the current + release allows cursors to remain readable after the creating + transaction. + + + + + FETCH 0 and MOVE 0 now do nothing (Bruce) + + In previous releases, FETCH 0 fetched all + remaining rows, and MOVE 0 moved to the end + of the cursor. + + + + + + Cause FETCH and MOVE to + return the number of rows fetched/moved, or zero if at the + beginning/end of cursor, per SQL standard (Bruce) + + + In prior releases, the row count returned by + FETCH and MOVE did not + accurately reflect the number of rows processed. + + + + + Properly handle SCROLL with cursors, or + report an error (Neil) + + Certain cursors can not be fetched backwards optimally. By + specifying SCROLL, extra work will be + performed to guarantee that the cursor can be fetched in reverse + or random order. + + + + + + Implement SQL-compatible option FIRST, + LAST, ABSOLUTE n, + RELATIVE n for + FETCH and MOVE (Tom) + + + + + Allow EXPLAIN on DECLARE CURSOR (Tom) + + + + Allow CLUSTER to use index marked as pre-clustered by default (Alvaro Herrera) + + + + Allow CLUSTER to cluster all tables (Alvaro Herrera) + + This allows all previously clustered tables in a database to be + reclustered with a single command. + + + + Prevent CLUSTER on partial indexes (Tom) + + Allow DOS and Mac line-endings in COPY files (Bruce) + + + + Disallow literal carriage return as a data value, + backslash-carriage-return and \r are still allowed + (Bruce) + + + + + COPY changes (binary, \.) (Tom) + + + + Recover from COPY failure cleanly (Tom) + + + + Prevent possible memory leaks in COPY (Tom) + + + + Make TRUNCATE transaction-safe (Rod) + + TRUNCATE can now be used inside a + transaction, and rolled back if the transaction aborts. + + + + + + Allow prepare/bind of utility commands like + FETCH and EXPLAIN (Tom) + + + + + Add EXPLAIN EXECUTE (Neil) + + + + Improve VACUUM performance on indexes by reducing WAL traffic (Tom) + + + + Functional indexes have been generalized into indexes on expressions (Tom) + + In prior releases, functional indexes only supported a simple + function applied to one or more column names. This release + allows any type of scalar expression. + + + + + + Have SHOW TRANSACTION ISOLATION match input + to SET TRANSACTION ISOLATION + (Tom) + + + + + Have COMMENT ON DATABASE on nonlocal database generate a warning (Rod) + + Database comments are stored in database-local tables so + comments on a database have to be stored in each database. + + + + + + Improve reliability of LISTEN/NOTIFY (Tom) + + + + + Allow REINDEX to reliably reindex nonshared system catalog indexes (Tom) + + This allows system tables to be reindexed without the + requirement of a standalone session, which was necessary in + previous releases. The only tables that now require a standalone + session for reindexing are the global system tables + pg_database, pg_shadow, and + pg_group. + + + + + + + Data Type and Function Changes + + + + + New server parameter extra_float_digits to + control precision display of floating-point numbers (Pedro + Ferreira, Tom) + This controls output precision which was causing regression testing problems. - -Allow +1300 as a numeric timezone specifier, for FJST (Tom) -Remove rarely used oidrand(), oidsrand(), and userfntest() functions (Neil) -Add md5() function to main server, already in /contrib/pgcrypto (Joe) - - An md5 function was frequently requested. For more complex - encryption capabilities, use /contrib/pgcrypto. - - -Increase date range of timestamp (John Cochran) - - bjm ?? - - -Change EXTRACT(EPOCH FROM timestamp) so timestamp without time zone - is assumed to be in local time, not GMT (Tom) -Trap division by zero in case the operating system doesn't prevent it (Tom) -Change the NUMERIC data type internally to base 10000 (Tom) -New hostmask() function (Greg Wickham) -Fixes for to_char() and to_timestamp() (Karel) -Allow functions that can take any argument data type and return - any data type, using ANYELEMENT and ANYARRAY (Joe) + + + Allow +1300 as a numeric time-zone specifier, for FJST (Tom) + + - This allows the creation of functions that can work with any data - type. + Remove rarely used functions oidrand, + oidsrand, and userfntest functions + (Neil) + + + + Add md5() function to main server, already in contrib/pgcrypto (Joe) + + An MD5 function was frequently requested. For more complex + encryption capabilities, use + contrib/pgcrypto. + + + + Increase date range of timestamp (John Cochran) + + + + Change EXTRACT(EPOCH FROM timestamp) so + timestamp without time zone is assumed to be in + local time, not GMT (Tom) + + + + Trap division by zero in case the operating system doesn't prevent it (Tom) + Change the numeric data type internally to base 10000 (Tom) + New hostmask() function (Greg Wickham) + Fixes for to_char() and to_timestamp() (Karel) + + + + Allow functions that can take any argument data type and return + any data type, using anyelement and + anyarray (Joe) + + + This allows the creation of functions that can work with any + data type. + + + + + + Arrays may now be specified as ARRAY[1,2,3], + ARRAY[['a','b'],['c','d']], or + ARRAY[ARRAY[ARRAY[2]]] (Joe) + + + + + + Allow proper comparisons for arrays, including ORDER + BY and DISTINCT support + (Joe) + + + + Allow indexes on array columns (Joe) + Allow array concatenation with || (Joe) + + + + Allow WHERE qualification + expr op ANY/SOME/ALL + (array_expr) (Joe) + + + This allows arrays to behave like a list of values, for purposes + like SELECT * FROM tab WHERE col IN + (array_val). + + + + + + New array functions array_append, + array_cat, array_lower, + array_prepend, array_to_string, + array_upper, string_to_array (Joe) + + + + Allow user defined aggregates to use polymorphic functions (Joe) + Allow assignments to empty arrays (Joe) + + + + Allow 60 in seconds fields of time, + timestamp, and interval input values + (Tom) + + + Sixty-second values are needed for leap seconds. + + + + Allow cidr data type to be cast to text (Tom) + + Disallow invalid time zone names (Tom) + + + + Trim trailing spaces when char is cast to + varchar or text (Tom) + + + + + + Make float(p) measure the precision + p in binary digits, not decimal digits + (Tom) + + + + + Add IPv6 support to the inet and cidr data types (Michael Graff) + + + + Add family() function to report whether address is IPv4 or IPv6 (Michael Graff) + + + + + Have SHOW datestyle generate output similar + to that used by SET datestyle (Tom) + + + + + + Make EXTRACT(TIMEZONE) and SET/SHOW + TIME ZONE follow the SQL convention for the sign of + time zone offsets, i.e., positive is east from UTC (Tom) + + + + + Fix date_trunc('quarter', ...) (B?jthe Zolt?n) + + Prior releases returned an incorrect value for this function call. + + + + + Make initcap() more compatible with Oracle (Mike Nolan) + + initcap() now uppercases a letter appearing + after any non-alphanumeric character, rather than only after + whitespace. + + + + + Allow only datestyle field order for date values not in ISO-8601 format (Greg) + + + + + Add new datestyle values MDY, + DMY, and YMD to set input field order; + honor US and European for backward + compatibility (Tom) + + + + + + String literals like 'now' or + 'today' will no longer work as a column + default. Use functions such as now(), + current_timestamp instead. (change + required for prepared statements) (Tom) + + + + + Treat NaN as larger than any other value in min()/max() (Tom) + + NaN was already sorted after ordinary numeric values for most + purposes, but min() and max() didn't + get this right. + + + + + Prevent interval from suppressing :00 + seconds display + + + + + New function pg_get_triggerdef(prettyprint) + and pg_constraint_is_visible() + + + + + Allow time to be specified as 040506 or 0405 (Tom) + + + + + Input date order must now be YYYY-MM-DD (with 4-digit year) or + match datestyle + + + + + + Make pg_get_constraintdef to support + unique, primary-key, and check constraints (Christopher) + + + + + + + Server-Side Language Changes + + + + + Prevent PL/pgSQL crash when RETURN NEXT is + used on a zero-row record variable (Tom) + + + + + + Make PL/Python's spi_execute interface + handle null values properly (Andrew Bosma) + + + + + Allow PL/pgSQL to declare variables of composite types without %ROWTYPE (Tom) + + + + Fix PL/Python's _quote() function to handle big integers + + + + Make PL/Python an untrusted language, now called plpythonu (Kevin Jacobs, Tom) + + The Python language no longer supports a restricted execution + environment, so the trusted version of PL/Python was removed. If + this situation changes, a version of PL/python that can be used + by non-superusers will be readded. + + + + + Allow polymorphic PL/pgSQL functions (Tom, Joe) + + + + Allow polymorphic SQL functions (Joe) + + + + + Improved compiled function caching mechanism in PL/pgSQL with + full support for polymorphism (Joe) + + + + + + Add new parameter $0 in PL/pgSQL representing the + function's actual return type (Joe) + + + + + + Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom) + + + + + + Fixed PL/Tcl's spi_prepare to accept fully + qualified type names in the parameter type list + (Jan) + + + + + + + psql Changes + + + + Add \pset pager always to always use pager (Greg) + + 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 across several screen rows. + + + + Improve tab completion (Rod, Ross Reedstrom, Ian Barwick) + Reorder \? help into groupings (Harald Armin Massa, Bruce) + Add backslash commands for listing schemas, casts, and conversions (Christopher) + + + + \encoding now changes based on the server parameter + client_encoding server (Tom) + + + In previous versions, \encoding was not aware + of encoding changes made using SET + client_encoding. + + + + + Save editor buffer into readline history (Ross) + + When \e is used to edit a query, the result is saved + in the readline history for retrieval using the up arrow. + + + + Improve \d display (Christopher) + Enhance HTML mode to be more standards-conforming (Greg) + + + New \set AUTOCOMMIT off capability (Tom) + + This takes the place of the removed server parameter autocommit. + + + + + New \set VERBOSITY to control error detail (Tom) + + This controls the new error reporting details. + + + + New prompt escape sequence %x to show transaction status (Tom) + Long options for psql are now available on all platforms + + + + + pg_dump Changes + + + Multiple pg_dump fixes, including tar format and large objects + Allow pg_dump to dump specific schemas (Neil) + + + Make pg_dump preserve column storage characteristics (Christopher) + + This preserves ALTER TABLE ... SET STORAGE information. + + + + Make pg_dump preserve CLUSTER characteristics (Christopher) + + + + Have pg_dumpall use GRANT/REVOKE to dump database-level privleges (Tom) + + + + + + Allow pg_dumpall to support the options + + + Prevent pg_dump from lowercasing identifiers specified on the command line (Tom) + + + + pg_dump options + and now do nothing, all dumps + use SET SESSION AUTHORIZATION + + + pg_dump no longer reconnects to switch users, but instead always + uses SET SESSION AUTHORIZATION. This will + reduce password prompting during restores. + + + + + Long options for pg_dump are now available on all platforms + + PostgreSQL now includes its own long-option processing routines. + + + + + + + libpq Changes + + + + + Add function PQfreemem for freeing memory on + Windows, suggested for NOTIFY (Bruce) + + + Windows requires that memory allocated in a library be freed by + a function in the same library, hence + free() doesn't work for freeing memory + allocated by libpq. PQfreemem is the proper + way to free libpq memory, especially on Windows, and is + recommended for other platforms as well. + + + + + Document service capability, and add sample file (Bruce) + + This allows clients to look up connection information in a + central file on the client machine. + + + + + + Make PQsetdbLogin have the same defaults as + PQconnectdb (Tom) + + + + Allow libpq to cleanly fail when result sets are too large (Tom) + + + + Improve performance of function PGunescapeBytea (Ben Lamb) + + + + + + Allow thread-safe libpq with configure + option (Lee Kindness, + Philip Yarra) + + + + + + Allow function pqInternalNotice to accept a + format string and arguments instead of just a preformatted + message (Tom, Sean Chittenden) + + + + + + Control SSL negotiation with sslmode values + disable, allow, + prefer, and require (Jon + Jensen) + + + + + Allow new error codes and levels of text (Tom) + + + + Allow access to the underlying table and column of a query result (Tom) + + This is helpful for query-builder applications that want to know + the underlying table and column names associated with a specific + result set. + + + + Allow access to the current transaction status (Tom) + Add ability to pass binary data directly to the server (Tom) + + + + Add function PQexecPrepared and + PQsendQueryPrepared functions which perform + bind/execute of previously prepared statements (Tom) + -Arrays may now be specified as ARRAY[1,2,3], ARRAY[['a','b'],['c','d']], - or ARRAY[ARRAY[ARRAY[2]]] (Joe) -Allow proper comparisons for arrays, including ORDER BY and -DISTINCT support (Joe) -Allow indexes on array columns (Joe) -Allow array concatenation with '||' (Joe) -Allow WHERE qualification 'expr <oper> ANY/SOME/ALL (array-expr)' (Joe) - - This allows arrays to behave like a list of values, for purposes like - SELECT * FROM tab WHERE col IN array_val - - -New array functions array_append(), array_cat(), array_lower(), - array_prepend(), array_to_string(), array_upper(), string_to_array() (Joe) -Allow user defined aggregates to use polymorphic functions (Joe) -Allow assignments to empty arrays (Joe) -Allow 60 in seconds fields of timestamp, time, interval input values (Tom) - - Sixty-second values are needed for leap seconds. - - -Allow CIDR data type to be cast to text (Tom) -Allow the creation of special LIKE indexes for non-C locales (Peter) - - There is no way for non-ASCII locales to use indexes for LIKE - comparisons. However, this release adds a way to create a special - index for LIKE. bjm ?? - - -Disallow invalid timezone names (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 (Tom) -Add IPv6 support to the inet and cidr data types (Michael Graff) -Add family() function to report whether address is IPv4 or IPv6 (Michael Graff) -Have SHOW DATESTYLE generate output similar to that used by SET DATESTYLE (Tom) -Make EXTRACT(TIMEZONE) and SET/SHOW TIMEZONE follow the SQL convention - for the sign of timezone offsets, ie, positive is east from UTC (Tom) -Fix date_trunc('quarter',...) (B?jthe Zolt?n) - - Prior releases returned an incorrect value for this function call. - - -Make initcap() more compatible with Oracle (Mike Nolan) - - initcap() now uppercases a letter appearing after any non-alphanumeric - character, rather than only after whitespace. - - -Allow only DateStyle field order for date values not in ISO format (Greg) -Add new DateStyle values MDY, DMY, and YMD; honor US and European for - backward compatibility (Tom) -'now' will no longer work as a column default, use now() (change required for - prepared statements) (Tom) -Treat NaN as larger than any other value in MIN()/MAX() (Tom) - - NaN was already sorted after ordinary numeric values for most purposes, - but MIN() and MAX() didn't get this right. - - -Prevent interval from suppressing ':00' seconds display -New pg_get_triggerdef(prettyprint) and pg_constraint_is_visible() functions -Allow time to be specified as '040506' or '0405' (Tom) - + + -Server-side Language Changes + + JDBC Changes - -Prevent PL/pgSQL crash when RETURN NEXT is used on a -zero-row record variable (Tom) -Make PL/python's spi_execute interface handle NULLs properly (Andrew Bosma) -Allow PL/pgSQL to declare variables of composite types without %ROWTYPE (Tom) -Fix PL/python _quote() function to handle big integers (?) -Make PL/python an untrusted language, now called plpythonu (Kevin Jacobs, Tom) - - The Python language no longer supports a restricted execution - 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 - used by non-super users. - - -Allow polymorphic PL/pgSQL functions (Tom, Joe) -Allow polymorphic SQL functions (Joe) - - Allow functions to accept arbitrary data types for input, and return arbitrary types. - - -Improved compiled function caching mechanism in PL/pgSQL with full - support for polymorphism (Joe) -Add new $0 parameter in PL/pgSQL representing the function's actual - return type (Joe) -Allow pltcl and plpython to use the same trigger on multiple tables (Tom) -Fixed PL/Tcl's spi_prepare to accept full qualified type names in - the parameter type list (Jan) - + + Allow setNull on updateable result sets + Allow executeBatch on a prepared statement (Barry) + Support SSL connections (Barry) + Handle schema names in result sets (Paul Sorenson) + Add refcursor support (Nic Ferrier) + + -Psql Changes + + Miscellaneous Interface Changes - -Add "\pset pager always" to always use pager (Greg) - - 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 - across several screen rows. - - -Improve tab completion (Rod, Ross Reedstrom, Ian Barwick) -Reorder \? help into groupings (Harald Armin Massa, Bruce) -Add backslash commands for listing schemas, casts, and conversions (Christopher) -\encoding now changes based on the client_encoding server variable (Tom) - - In previous versions, \encoding was not aware of encoding changes - made using SET CLIENT_ENCODING. - - -Save edit history into readline history (Ross) - - When \e is used to edit a query, the result is saved in the readline - history for retrieval using the up arrow. - - -Improve \d display (Christopher) -Enhance HTML mode to be more standards-compliant (Greg) -New '\set AUTOCOMMIT off' capability (Tom) - - This takes the place of the removed server variable 'autocommit'. - - -New '\set VERBOSITY' to control error detail (Tom) - - This controls the new error reporting details. - - -New %T prompt string to show transaction status (Tom) -Long options for psql are now available on all platforms - + + + Prevent possible memory leak or core dump during libpgtcl shutdown (Tom) + + + Add Informix compatibility to ECPG (Michael) + + This allows ECPG to process embedded C programs that were + written using certain Informix extensions. + + -Libpq Changes + + Add type decimal to ECPG that is fixed length, for Informix (Michael) + - -Allow PQcmdTuples() to return row counts for MOVE and FETCH (Neil) -Add PQfreemem() for freeing memory on Windows, suggest for NOTIFY (Bruce) - - Windows requires that memory allocated in a library be freed by a - function in the same library, hence free() doesn't work for freeing - memory allocated by libpq. PQfreemem() is the proper way to free - libpq memory, especially on Windows, and is recommended for other - platforms as well. - - -Document service capability, and add sample file (Bruce) - - This allows clients to look up connection information in a central - file on the client machine. - - -Make PQsetdbLogin() have the same defaults as PQconnectdb() (Tom) -Allow libpq to cleanly fail when result sets are too large (Tom) -Improve performance of PGunescapeBytea() (Ben Lamb) -Allow thread-safe libpq with --enable-thread-safety (Lee Kindness, Philip Yarra) -Allow pqInternalNotice() to accept a format string and args instead of - just a preformatted message (Tom, Sean Chittenden) -Control SSL negotiation with sslmode values "disable", "allow", - "prefer", and "require" (Jon Jensen) -Allow new error codes and levels of text (Tom) -Allow access to the underlying table and column of a query result (Tom) - - This is helpful for query-builder applications that want to know the - underlying table and column names associated with a specific result - set. - - -Allow access to the current transaction status (Tom) -Add ability to pass binary data directly to the backend (Tom) -Add PQexecPrepared() and PQsendQueryPrepared() functions which - perform Bind/Execute of previously prepared statements (Tom) - + + + Allow thread-safe embedded SQL programs with + configure option + (Lee Kindness, Bruce) + + + This allows multiple threads to access the database at the same + time. + + -JDBC Changes + + Moved Python client PyGreSQL to (Marc) + + + - -Allow setNull on updateable resultsets -Allow executeBatch on a prepared statement (Barry) -Support SSL connections (Barry) -Handle schema names in result sets (Paul Sorenson) -Add refcursor support (Nic Ferrier) - + + Source Code Changes -Miscellaneous Interface Changes - -Prevent possible memory leak or core dump during libpgtcl shutdown (Tom) -Add ecpg Informix compatibility (Michael) - - This allows ecpg to process embedded C programs that were written - using certain Informix extensions. - - -Add ecpg DECIMAL type that is fixed length, for Informix (Michael) -Allow thread-safe ecpg with --enable-thread-safety (Lee Kindness, Bruce) - - This allows multiple ecpg threads to access the database at the same - time. - - -Move python client interface to http://www.pygresql.org (Marc) - + + Prevent need for separate platform geometry regression result files (Tom) + Improved PPC locking primitive (Reinhard Max) + New function palloc0 to allocate and clear memory (Bruce) + Fix locking code for s390x CPU (64-bit) (Tom) + Allow OpenBSD to use local ident credentials (William Ahern) + Make query plan trees read-only to executor (Tom) + Add Darwin startup scripts (David Wheeler) + Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek) + Use our own version of getopt_long() if needed (Peter) + Convert administration scripts to C (Peter) + Bison >= 1.85 is now required to build the PostgreSQL grammar, if building from CVS + Merge documentation into one book (Peter) + Add Windows compatibility functions (Bruce) + Allow client interfaces to compile under MinGW (Bruce) + New ereport() function for error reporting (Tom) + Support Intel compiler on Linux (Peter) + Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil) + Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce) + + Remove option from configure + + This was no longer needed now that we have CREATE CONVERSION. + + + + Generate a compile error if spinlock code is not found (Bruce) + + Platforms without spinlock code will now fail to compile, rather + than silently using semaphores. This failure can be disabled + with a new configure option. + + + + -Source Code Changes + + Contrib Changes - - -Prevent need for separate platform geometry regression result files (Tom) -Improved PPC locking primitive (Reinhard Max) -Embed LD_LIBRARY_PATH used for build process into binaries (Billy) -New palloc0 function to allocate and clear memory (Bruce) -Fix locking code for s390x CPU (64-bit) (Tom) -Allow OpenBSD to use local ident credentials (William Ahern) -Make query plan trees read-only to executor (Tom) -Add Darwin startup scripts (David Wheeler) -Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek) -Use our own version of getopt_long() if needed (Peter) -Convert administration scripts to C (Peter) -Bison >= 1.85 is now required to build the PostgreSQL grammar, if building from CVS -Merge documentation into one book (Peter) -Add Windows compatibility functions (Bruce) -Allow client interfaces to compile under MinGW (Bruce) -New ereport() function for error reporting (Tom) -Support Intel Linux compiler (Peter) -Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil) -Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce) -Remove --enable-recode option to configure - - This was no longer needed now that we have CREATE CONVERSION. - - -Generate a compile error if spinlock code is not found (Bruce) - - Platforms without spinlock code will now fail to compile, rather - than silently using semaphores. This failure can be disabled with a - new configure option. - - - - -Contrib Changes - - -Change dbmirror license to BSD -Improve earthdistance (Bruno Wolff III) -Portability improvements to pgcrypto (Marko Kreen) -Prevent xml crash (John Gray, Michael Richards) -Update oracle -Update mysql -Update cube (Bruno Wolff III) -Update earthdistance to use cube (Bruno Wolff III) -Update btree_gist (Oleg) -New tsearch2 full-text search module (Oleg, Teodor) -Add hashed based crosstab function to tablefuncs (Joe) -Add serial column to order connectby() siblings in tablefuncs (Nabil Sayegh,Joe) -Add named persistent connections to dblink (Shridhar Daithanka) -New pg_autovacuum allows automatic VACUUM (Matthew T. O'Connor) -Allow pgbench to honor PGHOST, PGPORT, PGUSER env. variables (Tatsuo) -Improve intarray (Teodor Sigaev) -Improve pgstattuple (Rod) -Fix bug in metaphone() in fuzzystrmatch -Improve adddepend (Rod) -Update spi/timetravel (B?jthe Zolt?n) -Fix dbase -s option and improve non-ASCII handling (Thomas Behr,M?rcio Smiderle) -Remove array module because features now included by default (Joe) - - - Other Uncategorized Changes - -DATESTYLE can now be set to DMY, YMD, or MDY to specify input field order -Input date order must now be YYYY-MM-DD (with 4-digit - year) or match DATESTYLE -Pattern matching operations can use indexes regardless -of locale? - - + + Change dbmirror license to BSD + Improve earthdistance (Bruno Wolff III) + Portability improvements to pgcrypto (Marko Kreen) + Prevent crash in xml (John Gray, Michael Richards) + Update oracle + Update mysql + Update cube (Bruno Wolff III) + Update earthdistance to use cube (Bruno Wolff III) + Update btree_gist (Oleg) + New tsearch2 full-text search module (Oleg, Teodor) + Add hash-based crosstab function to tablefuncs (Joe) + Add serial column to order connectby() siblings in tablefuncs (Nabil Sayegh,Joe) + Add named persistent connections to dblink (Shridhar Daithanka) + New pg_autovacuum allows automatic VACUUM (Matthew T. O'Connor) + Make pgbench honor environment variables PGHOST, PGPORT, PGUSER (Tatsuo) + Improve intarray (Teodor Sigaev) + Improve pgstattuple (Rod) + Fix bug in metaphone() in fuzzystrmatch + Improve adddepend (Rod) + Update spi/timetravel (B?jthe Zolt?n) + Fix dbase + Remove array module because features now included by default (Joe) + + + + Release 7.3.4 @@ -1099,13 +1928,13 @@ of locale? not applied unless you initdb) Fix pg_proc entry for timestampt_izone (fix is not applied unless you - initdb) + initdb) Make EXTRACT(EPOCH FROM timestamp without time zone) treat input as local time 'now'::timestamptz gave wrong answer if timezone changed earlier in transaction HAVE_INT64_TIMESTAMP code for time with timezone overwrote its input Accept GLOBAL TEMP/TEMPORARY as a synonym for TEMPORARY -Avoid improper schema-permissions-check failure in foreign-key triggers +Avoid improper schema-privilege-check failure in foreign-key triggers Fix bugs in foreign-key triggers for SET DEFAULT action Fix incorrect time-qual check in row fetch for UPDATE and DELETE triggers @@ -1138,7 +1967,7 @@ of locale? Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo) Fix failure to respond to pg_ctl stop -m fast after Async_NotifyHandler runs Fix SPI for case where rule contains multiple statements of the same type -Fix problem with checking for wrong type of access permission in rule query +Fix problem with checking for wrong type of access privilege in rule query Fix problem with EXCEPT in CREATE RULE Prevent problem with dropping temp tables having serial columns Fix replace_vars_with_subplan_refs failure in complex views @@ -1301,7 +2130,7 @@ of locale? Schemas allow users to create objects in separate namespaces, so two people or applications can have tables with the same name. There is also a public schema for shared tables. - Table/index creation can be restricted by removing permissions + Table/index creation can be restricted by removing privileges on the public schema. @@ -1563,7 +2392,7 @@ of locale? Add privileges on functions and procedural languages (Peter) Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom) -Add new object permission bits EXECUTE and USAGE (Tom) +Add new object privilege bits EXECUTE and USAGE (Tom) Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom) Allow functions to be executed with the privilege of the function owner (Peter) @@ -2297,7 +3126,7 @@ of locale? Privileges -Change UPDATE, DELETE permissions to be distinct (Peter E) +Change UPDATE, DELETE privileges to be distinct (Peter E) New REFERENCES, TRIGGER privileges (Peter E) Allow GRANT/REVOKE to/from more than one user at a time (Peter E) New has_table_privilege() function (Joe Conway) @@ -2381,7 +3210,7 @@ of locale? Disable COPY TO/FROM on views (Bruce) COPY DELIMITERS string must be exactly one character (Tom) VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout) -Fix permission checks for CREATE INDEX (Tom) +Fix privilege checks for CREATE INDEX (Tom) Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom) @@ -2704,7 +3533,7 @@ Cygwin build (Jason Tishler) Fix PL/pgSQL SELECTs when returning no rows Fix for psql backslash core dump -Referential integrity permission fix +Referential integrity privilege fix Optimizer fixes pg_dump cleanups @@ -2769,8 +3598,8 @@ Python fixes (Darcy) - This release focuses on removing limitations that have existed in the - PostgreSQL code for many years. + This release focuses on removing limitations that have existed in the + PostgreSQL code for many years. @@ -2779,7 +3608,7 @@ Python fixes (Darcy) - Write-ahead Log (WAL) + Write-ahead Log (WAL) @@ -2795,11 +3624,11 @@ disk flushes, you may want to consider discontinuing its use. - TOAST + TOAST - TOAST - Previous releases had a compiled-in row length limit, + TOAST - Previous releases had a compiled-in row length limit, typically 8k - 32k. This limit made storage of long text fields difficult. With TOAST, long rows of any length can be stored with good performance. @@ -2809,7 +3638,7 @@ performance. - Outer Joins + Outer Joins @@ -2822,7 +3651,7 @@ outer join syntax. - Function Manager + Function Manager @@ -2837,7 +3666,7 @@ function manager call interface. - Complex Queries + Complex Queries @@ -2857,8 +3686,8 @@ Subqueries in FROM are now supported. Migration to version 7.1 - A dump/restore using pg_dump is required for those wishing to migrate - data from any previous release. + A dump/restore using pg_dump is required for those wishing to migrate + data from any previous release. @@ -3246,9 +4075,9 @@ ecpg changes (Michael) - Foreign keys are now implemented, with the exception of PARTIAL MATCH - foreign keys. Many users have been asking for this feature, and we are - pleased to offer it. + Foreign keys are now implemented, with the exception of PARTIAL MATCH + foreign keys. Many users have been asking for this feature, and we are + pleased to offer it. @@ -3259,9 +4088,9 @@ ecpg changes (Michael) - Continuing on work started a year ago, the optimizer has been - improved, allowing better query plan selection and faster performance - with less memory usage. + Continuing on work started a year ago, the optimizer has been + improved, allowing better query plan selection and faster performance + with less memory usage. @@ -3272,8 +4101,8 @@ ecpg changes (Michael) - psql, our interactive terminal monitor, has been - updated with a variety of new features. See the psql manual page for details. + psql, our interactive terminal monitor, has been + updated with a variety of new features. See the psql manual page for details. @@ -3284,11 +4113,11 @@ ecpg changes (Michael) - SQL92 join syntax is now supported, though only as - INNER JOIN for this release. JOIN, - NATURAL JOIN, JOIN/USING, - and JOIN/ON are available, as are - column correlation names. + SQL92 join syntax is now supported, though only as + INNER JOIN for this release. JOIN, + NATURAL JOIN, JOIN/USING, + and JOIN/ON are available, as are + column correlation names. @@ -3300,8 +4129,8 @@ ecpg changes (Michael) - In 7.1 or 7.2, we plan to have outer joins, storage for very long rows, and a - write-ahead logging system. + In 7.1 or 7.2, we plan to have outer joins, storage for very long rows, and a + write-ahead logging system. @@ -3329,45 +4158,45 @@ ecpg changes (Michael) - The date/time types datetime and - timespan have been superseded by the - SQL92-defined types timestamp and - interval. Although there has been some effort to - ease the transition by allowing - PostgreSQL to recognize - the deprecated type names and translate them to the new type - names, this mechanism may not be completely transparent to - your existing application. + The date/time types datetime and + timespan have been superseded by the + SQL92-defined types timestamp and + interval. Although there has been some effort to + ease the transition by allowing + PostgreSQL to recognize + the deprecated type names and translate them to the new type + names, this mechanism may not be completely transparent to + your existing application. - The optimizer has been substantially improved in the area of - query cost estimation. In some cases, this will result in - decreased query times as the optimizer makes a better choice - for the preferred plan. However, in a small number of cases, - usually involving pathological distributions of data, your - query times may go up. If you are dealing with large amounts - of data, you may want to check your queries to verify - performance. + The optimizer has been substantially improved in the area of + query cost estimation. In some cases, this will result in + decreased query times as the optimizer makes a better choice + for the preferred plan. However, in a small number of cases, + usually involving pathological distributions of data, your + query times may go up. If you are dealing with large amounts + of data, you may want to check your queries to verify + performance. - The JDBC and ODBC - interfaces have been upgraded and extended. + The JDBC and ODBC + interfaces have been upgraded and extended. - The string function CHAR_LENGTH is now a - native function. Previous versions translated this into a call - to LENGTH, which could result in - ambiguity with other types implementing - LENGTH such as the geometric types. + The string function CHAR_LENGTH is now a + native function. Previous versions translated this into a call + to LENGTH, which could result in + ambiguity with other types implementing + LENGTH such as the geometric types. @@ -3430,12 +4259,12 @@ Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom) Y2K timestamp fix (Massimo) Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom) Fix for views with tables/columns containing spaces (Tom) -Prevent permissions on indexes (Peter E) +Prevent privileges on indexes (Peter E) Fix for spinlock stuck problem when error is generated (Hiroshi) Fix ipcclean on Linux Fix handling of NULL constraint conditions (Tom) Fix memory leak in odbc driver (Nick Gorham) -Fix for permission check on UNION tables (Tom) +Fix for privilege check on UNION tables (Tom) Fix to allow SELECT 'a' LIKE 'a' (Tom) Fix for SELECT 1 + NULL (Tom) Fixes to CHAR @@ -3493,7 +4322,7 @@ Change backend-side COPY to write files with permissions 644 not 666 (Tom) Force permissions on PGDATA directory to be secure, even if it exists (Tom) Added psql LASTOID variable to return last inserted oid (Peter E) Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom) -Add permissions check for vacuum (Peter E) +Add privilege check for vacuum (Peter E) New libpq functions to allow asynchronous connections: PQconnectStart(), PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(), PQsetenvPoll(), PQsetenvAbort (Ewan Mellor) @@ -3514,7 +4343,7 @@ All administration scripts now support --long options (Peter E, Karel) Vacuumdb script now supports --all option (Peter E) ecpg new portable FETCH syntax Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF - and EXEC SQL ENDIF directives + and EXEC SQL ENDIF directives Add pg_ctl script to control backend start-up (Tatsuo) Add postmaster.opts.default file to store start-up flags (Tatsuo) Allow --with-mb=SQL_ASCII @@ -3536,7 +4365,7 @@ Allow COPY IN to read file that do not end with a newline (Tom) Indicate when long identifiers are truncated (Tom) Allow aggregates to use type equivalency (Peter E) Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number() - conversion functions (Karel Zak <zakkr@zf.jcu.cz>) + conversion functions (Karel Zak <zakkr@zf.jcu.cz>) Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom) Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom) Add NUMERIC and int8 types to ODBC @@ -3875,17 +4704,17 @@ Add Win1250 (Czech) support (Pavel Behal) - This removes our old - table-level locking, and replaces it with a locking system that is - superior to most commercial database systems. In a traditional system, - each row that is modified is locked until committed, preventing reads by - other users. MVCC uses the natural multiversion nature of PostgreSQL - to allow readers to continue reading consistent data during writer - activity. Writers continue to use the compact pg_log transaction - system. This is all performed without having to allocate a lock for - every row like traditional database systems. So, basically, we no - longer are restricted by simple table-level locking; - we have something better than row-level locking. + This removes our old + table-level locking, and replaces it with a locking system that is + superior to most commercial database systems. In a traditional system, + each row that is modified is locked until committed, preventing reads by + other users. MVCC uses the natural multiversion nature of PostgreSQL + to allow readers to continue reading consistent data during writer + activity. Writers continue to use the compact pg_log transaction + system. This is all performed without having to allocate a lock for + every row like traditional database systems. So, basically, we no + longer are restricted by simple table-level locking; + we have something better than row-level locking. @@ -3896,9 +4725,9 @@ Add Win1250 (Czech) support (Pavel Behal) - pg_dump takes advantage of the new - MVCC features to give a consistent database dump/backup while - the database stays online and available for queries. + pg_dump takes advantage of the new + MVCC features to give a consistent database dump/backup while + the database stays online and available for queries. @@ -3909,8 +4738,8 @@ Add Win1250 (Czech) support (Pavel Behal) - We now have a true numeric data type, with - user-specified precision. + We now have a true numeric data type, with + user-specified precision. @@ -3921,8 +4750,8 @@ Add Win1250 (Czech) support (Pavel Behal) - Temporary tables are guaranteed to have unique names - within a database session, and are destroyed on session exit. + Temporary tables are guaranteed to have unique names + within a database session, and are destroyed on session exit. @@ -3933,9 +4762,9 @@ Add Win1250 (Czech) support (Pavel Behal) - We now have CASE, INTERSECT, and EXCEPT statement - support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL, - SELECT ... FOR UPDATE, and an improved LOCK TABLE command. + We now have CASE, INTERSECT, and EXCEPT statement + support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL, + SELECT ... FOR UPDATE, and an improved LOCK TABLE command. @@ -3946,9 +4775,9 @@ Add Win1250 (Czech) support (Pavel Behal) - We continue to speed up PostgreSQL, thanks to the variety of - talents within our team. We have sped up memory allocation, - optimization, table joins, and row transfer routines. + We continue to speed up PostgreSQL, thanks to the variety of + talents within our team. We have sped up memory allocation, + optimization, table joins, and row transfer routines. @@ -3959,8 +4788,8 @@ Add Win1250 (Czech) support (Pavel Behal) - We continue to expand our port list, this time including - Windows NT/ix86 and NetBSD/arm32. + We continue to expand our port list, this time including + Windows NT/ix86 and NetBSD/arm32. @@ -3971,8 +4800,8 @@ Add Win1250 (Czech) support (Pavel Behal) - Most interfaces have new versions, and existing functionality - has been improved. + Most interfaces have new versions, and existing functionality + has been improved. @@ -3983,22 +4812,22 @@ Add Win1250 (Czech) support (Pavel Behal) - New and updated material is present throughout the - documentation. New FAQs have been - contributed for SGI and AIX platforms. - The Tutorial has introductory information - on SQL from Stefan Simkovics. - For the User's Guide, there are - reference pages covering the postmaster and more utility - programs, and a new appendix - contains details on date/time behavior. - The Administrator's Guide has a new - chapter on troubleshooting from Tom Lane. - And the Programmer's Guide has a - description of query processing, also from Stefan, and details - on obtaining the PostgreSQL source - tree via anonymous CVS and - CVSup. + New and updated material is present throughout the + documentation. New FAQs have been + contributed for SGI and AIX platforms. + The Tutorial has introductory information + on SQL from Stefan Simkovics. + For the User's Guide, there are + reference pages covering the postmaster and more utility + programs, and a new appendix + contains details on date/time behavior. + The Administrator's Guide has a new + chapter on troubleshooting from Tom Lane. + And the Programmer's Guide has a + description of query processing, also from Stefan, and details + on obtaining the PostgreSQL source + tree via anonymous CVS and + CVSup. @@ -4058,11 +4887,11 @@ Add Win1250 (Czech) support (Pavel Behal) - Note that if you run a transaction in SERIALIZABLE mode then you must - execute the LOCK commands above before execution of any - DML statement - (SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) in the - transaction. + Note that if you run a transaction in SERIALIZABLE mode then you must + execute the LOCK commands above before execution of any + DML statement + (SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) in the + transaction. @@ -4116,7 +4945,7 @@ Allow sequence nextval actions to be case-sensitive(Bruce) Fix optimizer indexing not working for negative numbers(Bruce) Fix for memory leak in executor with fjIsNull Fix for aggregate memory leaks(Erik Riedel) -Allow username containing a dash GRANT permissions +Allow user name containing a dash to grant privileges Cleanup of NULL in inet types Clean up system table bugs(Tom) Fix problems of PAGER and \? command(Masaaki Sakaida) @@ -4134,7 +4963,7 @@ Fix for memory leak in failed queries(Tom) DEFAULT now supports mixed-case identifiers(Tom) Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde) Disable use of pg_dump with both -o and -d options(Bruce) -Allow pg_dump to properly dump GROUP permissions(Bruce) +Allow pg_dump to properly dump group privileges(Bruce) Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan) Fix for computations in views(Jan) Fix for aggregates on array indexes(Tom) @@ -4311,12 +5140,12 @@ A dump/restore is not required for those running Add pg_dump -N flag to force double quotes around identifiers. This is - the default(Thomas) + the default(Thomas) Fix for NOT in where clause causing crash(Bruce) EXPLAIN VERBOSE coredump fix(Vadim) Fix shared-library problems on Linux Fix test for table existence to allow mixed-case and whitespace in - the table name(Thomas) + the table name(Thomas) Fix a couple of pg_dump bugs Configure matches template/.similar entries better(Tom) Change builtin function names from SPI_* to spi_* @@ -4522,7 +5351,7 @@ Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb) New contrib/lo code for large object orphan removal(Peter) New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes feature, see /doc/README.mb(Tatsuo) -/contrib/noupdate code to revoke update permission on a column +contrib/noupdate code to revoke update permission on a column libpq can now be compiled on Windows(Magnus) Add PQsetdbLogin() in libpq New 8-byte integer type, checked by configure for OS support(Thomas) @@ -4559,22 +5388,22 @@ Indexes for restriction clauses containing a constant(Thomas) New ISBN/ISSN code in /contrib/isbn_issn Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas) New rewrite system fixes many problems with rules and views(Jan) - * Rules on relations work - * Event qualifications on insert/update/delete work - * New OLD variable to reference CURRENT, CURRENT will be remove in future - * Update rules can reference NEW and OLD in rule qualifications/actions - * Insert/update/delete rules on views work - * Multiple rule actions are now supported, surrounded by parentheses - * Regular users can create views/rules on tables they have RULE permits - * Rules and views inherit the permissions on the creator - * No rules at the column level - * No UPDATE NEW/OLD rules - * New pg_tables, pg_indexes, pg_rules and pg_views system views - * Only a single action on SELECT rules - * Total rewrite overhaul, perhaps for 6.5 - * handle subselects - * handle aggregates on views - * handle insert into select from view works + * Rules on relations work + * Event qualifications on insert/update/delete work + * New OLD variable to reference CURRENT, CURRENT will be remove in future + * Update rules can reference NEW and OLD in rule qualifications/actions + * Insert/update/delete rules on views work + * Multiple rule actions are now supported, surrounded by parentheses + * Regular users can create views/rules on tables they have RULE permits + * Rules and views inherit the privileges of the creator + * No rules at the column level + * No UPDATE NEW/OLD rules + * New pg_tables, pg_indexes, pg_rules and pg_views system views + * Only a single action on SELECT rules + * Total rewrite overhaul, perhaps for 6.5 + * handle subselects + * handle aggregates on views + * handle insert into select from view works System indexes are now multikey(Bruce) Oidint2, oidint4, and oidname types are removed(Bruce) Use system cache for more system table lookups(Bruce) @@ -4837,7 +5666,7 @@ Better identify tcl and tk libs and includes(Bruce) - Better password authorization mechanisms. Default table permissions have changed. + Better password authorization mechanisms. Default table privileges have changed. @@ -4897,9 +5726,9 @@ Better identify tcl and tk libs and includes(Bruce) application without changes. - User-created tables now no longer have SELECT permission to PUBLIC by + User-created tables now no longer have SELECT privilege to PUBLIC by default. This was done because the ANSI standard requires it. You can - of course GRANT any permissions you want after the table is created. + of course GRANT any privileges you want after the table is created. System tables continue to be SELECT-able by PUBLIC. @@ -4916,7 +5745,7 @@ Better identify tcl and tk libs and includes(Bruce) For performance reasons, time travel is gone, but can be implemented using triggers (see pgsql/contrib/spi/README). Please check out the new \d command for types, operators, etc. Also, views have their own - permissions now, not based on the underlying tables, so permissions on + privileges now, not based on the underlying tables, so privileges on them have to be set separately. Check /pgsql/interfaces for some new ways to talk to PostgreSQL. @@ -4962,19 +5791,19 @@ Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce) Fix cluster(Bruce) Fix for PQtrace start/stop several times(Bruce) Fix a variety of locking problems like newer lock waiters getting - lock before older waiters, and having readlock people not share - locks if a writer is waiting for a lock, and waiting writers not - getting priority over waiting readers(Bruce) + lock before older waiters, and having readlock people not share + locks if a writer is waiting for a lock, and waiting writers not + getting priority over waiting readers(Bruce) Fix crashes in psql when executing queries from external files(James) Fix problem with multiple order by columns, with the first one having - NULL values(Jeroen) + NULL values(Jeroen) Use correct hash table support functions for float8 and int4(Thomas) Re-enable JOIN= option in CREATE OPERATOR statement (Thomas) Change precedence for boolean operators to match expected behavior(Thomas) Generate elog(ERROR) on over-large integer(Bruce) Allow multiple-argument functions in constraint clauses(Thomas) Check boolean input literals for 'true','false','yes','no','1','0' - and throw elog(ERROR) if unrecognized(Thomas) + and throw elog(ERROR) if unrecognized(Thomas) Major large objects fix Fix for GROUP BY showing duplicates(Vadim) Fix for index scans in MergeJion(Vadim) @@ -4986,7 +5815,7 @@ New User Manual(Thomas, others) Speedup by inlining some frequently-called functions Real deadlock detection, no more timeouts(Bruce) Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, - CURRENT_USER(Thomas) + CURRENT_USER(Thomas) Modify constraint syntax to be SQL92-compliant(Thomas) Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas) Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas) @@ -4998,11 +5827,11 @@ Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas) Allow SQL92 delimited identifiers(Thomas) Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas) Support SQL92 syntax for type coercion of literal strings - (e.g. "DATETIME 'now'")(Thomas) + (e.g. "DATETIME 'now'")(Thomas) Add conversions for int2, int4, and OID types to and from text(Thomas) Use shared lock when building indexes(Vadim) Free memory allocated for an user query inside transaction block after - this query is done, was turned off in <= 6.2.1(Vadim) + this query is done, was turned off in <= 6.2.1(Vadim) New SQL statement CREATE PROCEDURAL LANGUAGE(Jan) New PostgreSQL Procedural Language (PL) backend interface(Jan) Rename pg_dump -H option to -h(Bruce) @@ -5020,10 +5849,10 @@ Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas) Enable SET TIME ZONE using TZ environment variable(Thomas) Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas) Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO - frontend library initialization environment variables(Thomas) + frontend library initialization environment variables(Thomas) Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas) Add pg_description table for info on tables, columns, operators, types, and - aggregates(Bruce) + aggregates(Bruce) Increase 16 char limit on system table/index names to 32 characters(Bruce) Rename system indexes(Bruce) Add 'GERMAN' option to SET DATESTYLE(Thomas) @@ -5034,8 +5863,8 @@ Implement day of year as possible input to date_part()(Thomas) Define timespan_finite() and text_timespan() functions(Thomas) Remove archive stuff(Bruce) Allow for a pg_password authentication database that is separate from - the system password file(Todd) -Dump ACLs, GRANT, REVOKE permissions(Matt) + the system password file(Todd) +Dump ACLs, GRANT, REVOKE privileges(Matt) Define text, varchar, and bpchar string length functions(Thomas) Fix Query handling for inheritance, and cost computations(Bruce) Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas) @@ -5065,10 +5894,10 @@ Reduce system column overhead(Vadmin) Remove pg_time table(Vadim) Add pg_type attribute to identify types that need length (bpchar, varchar) Add report of offending line when COPY command fails -Allow VIEW permissions to be set separately from the underlying tables. - For security, use GRANT/REVOKE on views as appropriate(Jan) +Allow VIEW privileges to be set separately from the underlying tables. + For security, use GRANT/REVOKE on views as appropriate(Jan) Tables now have no default GRANT SELECT TO PUBLIC. You must - explicitly grant such permissions. + explicitly grant such privileges. Clean up tutorial examples(Darren) Source Tree Changes @@ -5081,7 +5910,7 @@ Make configure more automated(Brook) Add script to check regression test results Break parser functions into smaller files, group together(Bruce) Rename heap_create to heap_create_and_catalog, rename heap_creatr - to heap_create()(Bruce) + to heap_create()(Bruce) Sparc/Linux patch for locking(TomS) Remove PORTNAME and reorganize port-specific stuff(Marc) Add optimizer README file(Bruce) @@ -5090,7 +5919,7 @@ Fix for NetBSD locking(Henry) Fix for libptcl make(Tatsuo) AIX patch(Darren) Change IS TRUE, IS FALSE, ... to expressions using "=" rather than - function calls to istrue() or isfalse() to allow optimization(Thomas) + function calls to istrue() or isfalse() to allow optimization(Thomas) Various fixes NetBSD/Sparc related(TomH) Alpha linux locking(Travis,Ryan) Change elog(WARN) to elog(ERROR)(Bruce) @@ -5238,24 +6067,24 @@ Bug Fixes --------- Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce) Fix compile errors on overflow due to shifts, unsigned, and bad prototypes - from Solaris(Diab Jerius) + from Solaris(Diab Jerius) Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas) Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas) Catch non-functional delete attempts(Vadim) Change time function names to be more consistent(Michael Reifenberg) Check for zero divides(Michael Reifenberg) Fix very old bug which made rows changed/inserted by a command - visible to the command itself (so we had multiple update of - updated rows, etc.)(Vadim) + visible to the command itself (so we had multiple update of + updated rows, etc.)(Vadim) Fix for SELECT null, 'fail' FROM pg_am (Patrick) SELECT NULL as EMPTY_FIELD now allowed(Patrick) Remove un-needed signal stuff from contrib/pginterface Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim) Fix time_cmp function (Vadim) Fix handling of functions with non-attribute first argument in - WHERE clauses (Vadim) + WHERE clauses (Vadim) Fix GROUP BY when order of entries is different from order - in target list (Vadim) + in target list (Vadim) Fix pg_dump for aggregates without sfunc1 (Vadim) Enhancements @@ -5267,7 +6096,7 @@ pg_password utility Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim) Triggers implemented with CREATE TRIGGER (SQL3)(Vadim) SPI (Server Programming Interface) allows execution of queries inside - C-functions (Vadim) + C-functions (Vadim) NOT NULL implemented (SQL92)(Robson Paniago de Miranda) Include reserved words for string handling, outer joins, and unions(Thomas) Implement extended comments ("/* ... */") using exclusive states(Thomas) @@ -5278,7 +6107,7 @@ Add text concatenation operator and function (SQL92)(Thomas) Support WITH TIME ZONE syntax (SQL92)(Thomas) Support INTERVAL unit TO unit syntax (SQL92)(Thomas) Define types DOUBLE PRECISION, INTERVAL, CHARACTER, - and CHARACTER VARYING (SQL92)(Thomas) + and CHARACTER VARYING (SQL92)(Thomas) Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas) Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas) Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas) @@ -5288,7 +6117,7 @@ Allow hh:mm:ss time entry for timespan/reltime types(Thomas) Add center() routines for lseg, path, polygon(Thomas) Add distance() routines for circle-polygon, polygon-polygon(Thomas) Check explicitly for points and polygons contained within polygons - using an axis-crossing algorithm(Thomas) + using an axis-crossing algorithm(Thomas) Add routine to convert circle-box(Thomas) Merge conflicting operators for different geometric data types(Thomas) Replace distance operator "<===>" with "<->"(Thomas) @@ -5614,7 +6443,7 @@ Fix unitialized reads of memory(Kurt) Fixed ALTER TABLE ... char(3) bug(Bruce) Fixed a few small memory leaks Fixed EXPLAIN handling of options and changed full_path option name -Fixed output of group acl permissions +Fixed output of group acl privileges Memory leaks (hunt and destroy with tools like Purify(Kurt) Minor improvements to rules system NOTIFY fixes @@ -5768,7 +6597,7 @@ Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02 1.01 or 1.02 database is named testdb and you have cut the commands from the end of this file and saved them in addfunc.sql: - % psql testdb -f addfunc.sql + % psql testdb -f addfunc.sql Those upgrading 1.02 databases will get a warning when executing the @@ -5791,7 +6620,7 @@ end-of-data marker. Also, empty strings are now loaded in as '' rather than NULL. See the copy manual page for full details. - sed 's/^\.$/\\./g' <in_file >out_file + sed 's/^\.$/\\./g' <in_file >out_file @@ -5844,7 +6673,7 @@ New Ports