diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 345a5b3404..fb3dec68d3 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,5 +1,5 @@ @@ -275,8 +275,8 @@ statistics collector addresses in INET data types (Tom) - - + + Release 8.0.1 @@ -342,2354 +342,2354 @@ pg_dump/pg_restore typedefs (Michael) - - + + - - Release 8.0 + + Release 8.0 - - Release date - 2005-01-19 - - - - Overview - - - Major changes in this release: - - - - - Microsoft Windows Native Server - - - - - This is the first PostgreSQL release - to run natively on Microsoft Windows as - a server. It can run as a Windows service. This - release supports NT-based Windows releases like - Windows 2000, Windows XP, and - Windows 2003. Older releases like - Windows 95, Windows 98, and - Windows ME are not supported because these operating - systems do not have the infrastructure to support - PostgreSQL. A separate installer - project has been created to ease installation on - Windows — see . - - - - Although tested throughout our release cycle, the Windows port - does not have the benefit of years of use in production - environments that PostgreSQL has on - Unix platforms. Therefore it should be treated with the same - level of caution as you would a new product. - - - - Previous releases required the Unix emulation toolkit - Cygwin in order to run the server on Windows - operating systems. PostgreSQL has - supported native clients on Windows for many years. - - - - - - - Savepoints - - - - - Savepoints allow specific parts of a transaction to be aborted - without affecting the remainder of the transaction. Prior - releases had no such capability; there was no way to recover - from a statement failure within a transaction except by - aborting the whole transaction. This feature is valuable for - application writers who require error recovery within a - complex transaction. - - - - - - - Point-In-Time Recovery - - - - - In previous releases there was no way to recover from disk - drive failure except to restore from a previous backup or use - a standby replication server. Point-in-time recovery allows - continuous backup of the server. You can recover either to - the point of failure or to some transaction in the past. - - - - - - - Tablespaces - - - - - Tablespaces allow administrators to select different file systems - for storage of individual tables, indexes, and databases. - This improves performance and control over disk space - usage. Prior releases used initlocation and - manual symlink management for such tasks. - - - - - - - Improved Buffer Management, CHECKPOINT, - VACUUM - - - - - This release has a more intelligent buffer replacement strategy, - which will make better use of available shared buffers and - improve performance. The performance impact of vacuum and - checkpoints is also lessened. - - - - - - - Change Column Types - - - - - A column's data type can now be changed with ALTER - TABLE. - - - - - - - New Perl Server-Side Language - - - - - A new version of the plperl server-side language now - supports a persistent shared storage area, triggers, returning records - and arrays of records, and SPI calls to access the database. - - - - - - - Comma-separated-value (CSV) support in COPY - - - - - COPY can now read and write - comma-separated-value files. It has the flexibility to - interpret non-standard quoting and separation characters too. - - - - - - - - - - Migration to version 8.0 - - - A dump/restore using pg_dump is - required for those wishing to migrate data from any previous - release. - - - - Observe the following incompatibilities: - - - - - - In - - - - - Functions declared - - - - - Non-deferred - - - - - Server configuration parameters virtual_host and - tcpip_socket have been replaced with a more general - parameter listen_addresses. Also, the server now listens on - localhost by default, which eliminates the need for the - -i postmaster switch in many scenarios. - - - - - - Server configuration parameters SortMem and - VacuumMem have been renamed to work_mem - and maintenance_work_mem to better reflect their - use. The original names are still supported in - SET and SHOW. - - - - - - Server configuration parameters log_pid, - log_timestamp, and log_source_port have been - replaced with a more general parameter log_line_prefix. - - - - - - Server configuration parameter syslog has been - replaced with a more logical log_destination variable to - control the log output destination. - - - - - - Server configuration parameter log_statement has been - changed so it can selectively log just database modification or - data definition statements. Server configuration parameter - log_duration now prints only when log_statement - prints the query. - - - - - - Server configuration parameter max_expr_depth parameter has - been replaced with max_stack_depth which measures the - physical stack size rather than the expression nesting depth. This - helps prevent session termination due to stack overflow caused by - recursive functions. - - - - - - The length() function no longer counts trailing spaces in - CHAR(n) values. - - - - - - Casting an integer to BIT(N) selects the rightmost N bits of the - integer, not the leftmost N bits as before. - - - - - - Updating an element or slice of a NULL array value now produces - a non-NULL array result, namely an array containing - just the assigned-to positions. - - - - - - Syntax checking of array input values has been tightened up - considerably. Junk that was previously allowed in odd places with - odd results now causes an error. Empty-string element values - must now be written as "", rather than writing nothing. - Also changed behavior with respect to whitespace surrounding - array elements: trailing whitespace is now ignored, for symmetry - with leading whitespace (which has always been ignored). - - - - - - Overflow in integer arithmetic operations is now detected and - reported as an error. - - - - - - The arithmetic operators associated with the single-byte - "char" data type have been removed. - - - - - - The extract() function (also called - date_part) now returns the proper year for BC dates. - It previously returned one less than the correct year. The - function now also returns the proper values for millennium and - century. - - - - - - CIDR values now must have their non-masked bits be zero. - For example, we no longer allow - 204.248.199.1/31 as a CIDR value. Such - values should never have been accepted by - PostgreSQL and will now be rejected. - - - - - - EXECUTE now returns a completion tag that - matches the executed statement. - - - - - - psql's \copy command now reads or - writes to the query's stdin/stdout, rather than - psql's stdin/stdout. The previous - behavior can be accessed via new - - - - - - The JDBC client interface has been removed from the core - distribution, and is now hosted at . - - - - - - The Tcl client interface has also been removed. There are several - Tcl interfaces now hosted at . - - - - - - The server now uses its own time zone database, rather than the - one supplied by the operating system. This will provide consistent - behavior across all platforms. In most cases, there should be - little noticeable difference in time zone behavior, except that - the time zone names used by SET/SHOW - TimeZone may - be different from what your platform provides. - - - - - - Configure's threading option no longer requires - users to run tests or edit configuration files; threading options - are now detected automatically. - - - - - - Now that tablespaces have been implemented, - initlocation has been removed. - - - - - - The API for user-defined GiST indexes has been changed. The - Union and PickSplit methods are now passed a pointer to a - special GistEntryVector structure, - rather than a bytea. - - - - - - - - - Deprecated Features - - - Some aspects of PostgreSQL's behavior - have been determined to be suboptimal. For the sake of backward - compatibility these have not been removed in 8.0, but they are - considered deprecated and will be removed in the next major - release. + + Release date + 2005-01-19 + + + + Overview + + + Major changes in this release: + + + + + Microsoft Windows Native Server + + + + + This is the first PostgreSQL release + to run natively on Microsoft Windows as + a server. It can run as a Windows service. This + release supports NT-based Windows releases like + Windows 2000, Windows XP, and + Windows 2003. Older releases like + Windows 95, Windows 98, and + Windows ME are not supported because these operating + systems do not have the infrastructure to support + PostgreSQL. A separate installer + project has been created to ease installation on + Windows — see . + + + + Although tested throughout our release cycle, the Windows port + does not have the benefit of years of use in production + environments that PostgreSQL has on + Unix platforms. Therefore it should be treated with the same + level of caution as you would a new product. + + + + Previous releases required the Unix emulation toolkit + Cygwin in order to run the server on Windows + operating systems. PostgreSQL has + supported native clients on Windows for many years. + + + + + + + Savepoints + + + + + Savepoints allow specific parts of a transaction to be aborted + without affecting the remainder of the transaction. Prior + releases had no such capability; there was no way to recover + from a statement failure within a transaction except by + aborting the whole transaction. This feature is valuable for + application writers who require error recovery within a + complex transaction. + + + + + + + Point-In-Time Recovery + + + + + In previous releases there was no way to recover from disk + drive failure except to restore from a previous backup or use + a standby replication server. Point-in-time recovery allows + continuous backup of the server. You can recover either to + the point of failure or to some transaction in the past. + + + + + + + Tablespaces + + + + + Tablespaces allow administrators to select different file systems + for storage of individual tables, indexes, and databases. + This improves performance and control over disk space + usage. Prior releases used initlocation and + manual symlink management for such tasks. + + + + + + + Improved Buffer Management, CHECKPOINT, + VACUUM + + + + + This release has a more intelligent buffer replacement strategy, + which will make better use of available shared buffers and + improve performance. The performance impact of vacuum and + checkpoints is also lessened. + + + + + + + Change Column Types + + + + + A column's data type can now be changed with ALTER + TABLE. + + + + + + + New Perl Server-Side Language + + + + + A new version of the plperl server-side language now + supports a persistent shared storage area, triggers, returning records + and arrays of records, and SPI calls to access the database. + + + + + + + Comma-separated-value (CSV) support in COPY + + + + + COPY can now read and write + comma-separated-value files. It has the flexibility to + interpret non-standard quoting and separation characters too. + + + + + - - - - - The 8.1 release will remove the to_char() function - for intervals. - - - + + + + Migration to version 8.0 + + + A dump/restore using pg_dump is + required for those wishing to migrate data from any previous + release. + + + + Observe the following incompatibilities: + + + + + + In + + + + + Functions declared + + + + + Non-deferred + + + + + Server configuration parameters virtual_host and + tcpip_socket have been replaced with a more general + parameter listen_addresses. Also, the server now listens on + localhost by default, which eliminates the need for the + -i postmaster switch in many scenarios. + + + + + + Server configuration parameters SortMem and + VacuumMem have been renamed to work_mem + and maintenance_work_mem to better reflect their + use. The original names are still supported in + SET and SHOW. + + + + + + Server configuration parameters log_pid, + log_timestamp, and log_source_port have been + replaced with a more general parameter log_line_prefix. + + + + + + Server configuration parameter syslog has been + replaced with a more logical log_destination variable to + control the log output destination. + + + + + + Server configuration parameter log_statement has been + changed so it can selectively log just database modification or + data definition statements. Server configuration parameter + log_duration now prints only when log_statement + prints the query. + + + + + + Server configuration parameter max_expr_depth parameter has + been replaced with max_stack_depth which measures the + physical stack size rather than the expression nesting depth. This + helps prevent session termination due to stack overflow caused by + recursive functions. + + + + + + The length() function no longer counts trailing spaces in + CHAR(n) values. + + + - The server now warns of empty strings passed to - oid/float4/float8 data - types, but continues to interpret them as zeroes as before. - In the next major release, empty strings will be considered - invalid input for these data types. + Casting an integer to BIT(N) selects the rightmost N bits of the + integer, not the leftmost N bits as before. - - - - By default, tables in PostgreSQL 8.0 - and earlier are created with OIDs. In the next release, - this will not be the case: to create a table - that contains OIDs, the - - - - - - Changes - - - Below you will find a detailed account of the changes between - release 8.0 and the previous major release. - - - - Performance Improvements - - - - - Support cross-data-type index usage (Tom) - - - Before this change, many queries would not use an index if the data - types did not match exactly. This improvement makes index usage more - intuitive and consistent. - - - - - - New buffer replacement strategy that improves caching (Jan) - - - Prior releases used a least-recently-used (LRU) cache to keep - recently referenced pages in memory. The LRU algorithm - did not consider the number of times a specific cache entry was - accessed, so large table scans could force out useful cache pages. - The new cache algorithm uses four separate lists to track most - recently used and most frequently used cache pages and dynamically - optimize their replacement based on the work load. This should - lead to much more efficient use of the shared buffer cache. - Administrators who have tested shared buffer sizes in the past - should retest with this new cache replacement policy. - - - - - - Add subprocess to write dirty buffers periodically to reduce - checkpoint writes (Jan) - - - In previous releases, the checkpoint process, which runs every few - minutes, would write all dirty buffers to the operating system's - buffer cache then flush all dirty operating system buffers to - disk. This resulted in a periodic spike in disk usage that often - hurt performance. The new code uses a background writer to trickle - disk writes at a steady pace so checkpoints have far fewer dirty - pages to write to disk. Also, the new code does not issue a global - sync() call, but instead fsync()s just - the files written since the last checkpoint. This should improve - performance and minimize degradation during checkpoints. - - - - - - Add ability to prolong vacuum to reduce performance impact (Jan) - - - On busy systems, VACUUM performs many I/O - requests which can hurt performance for other users. This - release allows you to slow down VACUUM to - reduce its impact on other users, though this increases the - total duration of VACUUM. - - - - - - Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom) - - - This improves the way indexes are scanned when many duplicate - values exist in the index. - - - - - - Use dynamically-generated table size estimates while planning (Tom) - - - Formerly the planner estimated table sizes using the values seen - by the last VACUUM or ANALYZE, - both as to physical table size (number of pages) and number of rows. - Now, the current physical table size is obtained from the kernel, - and the number of rows is estimated by multiplying the table size - by the row density (rows per page) seen by the last - VACUUM or ANALYZE. This should - produce more reliable estimates in cases where the table size has - changed significantly since the last housekeeping command. - - - - - - Improved index usage with OR clauses (Tom) - - - This allows the optimizer to use indexes in statements with many OR - clauses that would not have been indexed in the past. It can also use - multi-column indexes where the first column is specified and the second - column is part of an OR clause. - - - - - - Improve matching of partial index clauses (Tom) - - - The server is now smarter about using partial indexes in queries - involving complex - - - - - Improve performance of the GEQO optimizer (Tom) - - - The GEQO optimizer is used to plan queries involving many tables (by - default, twelve or more). This release speeds up the way queries are - analyzed to decrease time spent in optimization. - - - - - - Miscellaneous optimizer improvements - - - There is not room here to list all the minor improvements made, but - numerous special cases work better than in prior releases. - - - - - - Improve lookup speed for C functions (Tom) - - - This release uses a hash table to lookup information for dynamically - loaded C functions. This improves their speed so they perform nearly as - quickly as functions that are built into the server executable. - - - - - - Add type-specific ANALYZE statistics - capability (Mark Cave-Ayland) - - - This feature allows more flexibility in generating statistics - for non-standard data types. - - - - - - ANALYZE now collects statistics for - expression indexes (Tom) - - - Expression indexes (also called functional indexes) allow users to - index not just columns but the results of expressions and function - calls. With this release, the optimizer can gather and use statistics - about the contents of expression indexes. This will greatly improve - the quality of planning for queries in which an expression index is - relevant. - - - - - - New two-stage sampling method for ANALYZE - (Manfred Koizar) - - - This gives better statistics when the density of valid rows is very - different in different regions of a table. - - - - - - Speed up TRUNCATE (Tom) - - - This buys back some of the performance loss observed in 7.4, while still - keeping TRUNCATE transaction-safe. - - - - - - - - - Server Changes - - - - - Add WAL file archiving and point-in-time recovery (Simon Riggs) - - - - - - Add tablespaces so admins can control disk layout (Gavin) - - - - - - Add a built-in log rotation program (Andreas Pflug) - - - It is now possible to log server messages conveniently without - relying on either syslog or an external log - rotation program. - - - - - - Add new read-only server configuration parameters to show server - compile-time settings: block_size, - integer_datetimes, max_function_args, - max_identifier_length, max_index_keys (Joe) - - - - - - Make quoting of sameuser, samegroup, and - all remove special meaning of these terms in - pg_hba.conf (Andrew) - - - - - - Use clearer IPv6 name ::1/128 for - localhost in default pg_hba.conf (Andrew) - - - - - - Use CIDR format in pg_hba.conf examples (Andrew) - - - - - - Rename server configuration parameters SortMem and - VacuumMem to work_mem and - maintenance_work_mem (Old names still supported) (Tom) - - - This change was made to clarify that bulk operations such as index and - foreign key creation use maintenance_work_mem, while - work_mem is for workspaces used during query execution. - - - - - - Allow logging of session disconnections using server configuration - log_disconnections (Andrew) - - - - - - Add new server configuration parameter log_line_prefix to - allow control of information emitted in each log line (Andrew) - - - Available information includes user name, database name, remote IP - address, and session start time. - - - - - - Remove server configuration parameters log_pid, - log_timestamp, log_source_port; functionality - superseded by log_line_prefix (Andrew) - - - - - - Replace the virtual_host and tcpip_socket - parameters with a unified listen_addresses parameter - (Andrew, Tom) - - - virtual_host could only specify a single IP address to - listen on. listen_addresses allows multiple addresses - to be specified. - - - - - - Listen on localhost by default, which eliminates the need for the - - - Listening on localhost (127.0.0.1) opens no new - security holes but allows configurations like Windows and JDBC, - which do not support local sockets, to work without special - adjustments. - - - - - - Remove syslog server configuration parameter, and add more - logical log_destination variable to control log output - location (Magnus) - - - - - - Change server configuration parameter log_statement to take - values all, mod, ddl, or - none to select which queries are logged (Bruce) - - - This allows administrators to log only data definition changes or - only data modification statements. - - - - - - Some logging-related configuration parameters could formerly be adjusted - by ordinary users, but only in the more verbose direction. - They are now treated more strictly: only superusers can set them. - However, a superuser may use ALTER USER to provide per-user - settings of these values for non-superusers. Also, it is now possible - for superusers to set values of superuser-only configuration parameters - via PGOPTIONS. - - - - - - Allow configuration files to be placed outside the data directory (mlw) - - - By default, configuration files are kept in the cluster's top directory. - With this addition, configuration files can be placed outside the - data directory, easing administration. - - - - - - Plan prepared queries only when first executed so constants can be - used for statistics (Oliver Jowett) - - - Prepared statements plan queries once and execute them many - times. While prepared queries avoid the overhead of re-planning - on each use, the quality of the plan suffers from not knowing the exact - parameters to be used in the query. In this release, planning of - unnamed prepared statements is delayed until the first execution, - and the actual parameter values of that execution are used as - optimization hints. This allows use of out-of-line parameter passing - without incurring a performance penalty. - - - - - - Allow DECLARE CURSOR to take parameters - (Oliver Jowett) - - - It is now useful to issue DECLARE CURSOR in a - Parse message with parameters. The parameter values - sent at Bind time will be substituted into the - execution of the cursor's query. - - - - - - Fix hash joins and aggregates of inet and - cidr data types (Tom) - - - Release 7.4 handled hashing of mixed inet and - cidr values incorrectly. (This bug did not exist - in prior releases because they wouldn't try to hash either - data type.) - - - - - - Make log_duration print only when log_statement - prints the query (Ed L.) - - - - - - - - - Query Changes - - - - - Add savepoints (nested transactions) (Alvaro) - - - - - - Unsupported isolation levels are now accepted and promoted to the - nearest supported level (Peter) - - - The SQL specification states that if a database doesn't support a - specific isolation level, it should use the next more restrictive level. - This change complies with that recommendation. - - - - - - Allow BEGIN WORK to specify transaction - isolation levels like START TRANSACTION does - (Bruce) - - - - - - Fix table permission checking for cases in which rules generate - a query type different from the originally submitted query (Tom) - - - - - - Implement dollar quoting to simplify single-quote usage (Andrew, Tom, - David Fetter) - - - In previous releases, because single quotes had to be used to - quote a function's body, the use of single quotes inside the - function text required use of two single quotes or other error-prone - notations. With this release we add the ability to use "dollar - quoting" to quote a block of text. The ability to use different - quoting delimiters at different nesting levels greatly simplifies - the task of quoting correctly, especially in complex functions. - Dollar quoting can be used anywhere quoted text is needed. - - - - - - Make CASE val WHEN compval1 THEN ... evaluate val only once (Tom) - - - - - - - - Test - - Fixes improper failure of cases such as SELECT SUM(win)/SUM(lose) - ... GROUP BY ... HAVING SUM(lose) > 0. This should work but formerly - could fail with divide-by-zero. - - - - - - Replace max_expr_depth parameter with - max_stack_depth parameter, measured in kilobytes of stack - size (Tom) - - - This gives us a fairly bulletproof defense against crashing due to - runaway recursive functions. Instead of measuring the depth of expression - nesting, we now directly measure the size of the execution stack. - - - - - - Allow arbitrary row expressions (Tom) - - - This release allows SQL expressions to contain arbitrary composite - types, that is, row values. It also allows functions to more easily - take rows as arguments and return row values. - - - - - - Allow - - - - - Avoid locale-specific case conversion of basic ASCII letters in - identifiers and keywords (Tom) - - - This solves the Turkish problem with mangling of words - containing I and i. Folding of characters - outside the 7-bit-ASCII set is still locale-aware. - - - - - - Improve syntax error reporting (Fabien, Tom) - - - Syntax error reports are more useful than before. - - - - - - Change EXECUTE to return a completion tag - matching the executed statement (Kris Jurka) - - - Previous releases return an EXECUTE tag for - any EXECUTE call. In this release, the tag - returned will reflect the command executed. - - - - - - Avoid emitting - - Such a clause makes no logical sense, but in some cases the rule - decompiler formerly produced this syntax. - - - - - - - - - Object Manipulation Changes - - - - - Add COMMENT ON for casts, conversions, languages, - operator classes, and large objects (Christopher) - - - - - - Add new server configuration parameter default_with_oids to - control whether tables are created with OIDs by default (Neil) - - - This allows administrators to control whether CREATE - TABLE commands create tables with or without OID - columns by default. (Note: the current factory default setting for - default_with_oids is TRUE, but the default - will become FALSE in future releases.) - - - - - - Add - - - - - Allow ALTER TABLE DROP COLUMN to drop an OID - column (ALTER TABLE SET WITHOUT OIDS still works) - (Tom) - - - - - - Allow composite types as table columns (Tom) - - - - - - Allow ALTER ... ADD COLUMN with defaults and - - - It is now possible for - - - - - Add ALTER COLUMN TYPE to change column's type (Rod) - - - It is now possible to alter a column's data type without dropping - and re-adding the column. - - - - - - Allow multiple ALTER actions in a single ALTER - TABLE command (Rod) - - - This is particularly useful for ALTER commands that - rewrite the table (which include - - - - - Allow ALTER TABLE to add SERIAL - columns (Tom) - - - This falls out from the new capability of specifying defaults for new - columns. - - - - - - Allow changing the owners of aggregates, conversions, databases, - functions, operators, operator classes, schemas, types, and tablespaces - (Christopher, Euler Taveira de Oliveira) - - - Previously this required modifying the system tables directly. - - - - - - Allow temporary object creation to be limited to - - - - - Add - - Prior to this release, there was no way to clear an auto-cluster - specification except to modify the system tables. - - - - - - Constraint/Index/SERIAL names are now - table_column_type - with numbers appended to guarantee uniqueness within the schema - (Tom) - - - The SQL specification states that such names should be unique - within a schema. - - - - - - Add pg_get_serial_sequence() to return a - SERIAL column's sequence name (Christopher) - - - This allows automated scripts to reliably find the SERIAL - sequence name. - - - - - - Warn when primary/foreign key data type mismatch requires costly lookup - - - - - - New ALTER INDEX command to allow moving of indexes - between tablespaces (Gavin) - - - - - - Make ALTER TABLE OWNER change dependent sequence - ownership too (Alvaro) - - - - - - - - - - Utility Command Changes - - - - - Allow CREATE SCHEMA to create triggers, - indexes, and sequences (Neil) - - - - - - Add - - This allows - - - - - Add - - This allows the LOCK command to fail if it - would have to wait for the requested lock. - - - - - - Allow COPY to read and write - comma-separated-value (CSV) files (Andrew, Bruce) - - - - - - Generate error if the COPY delimiter and NULL - string conflict (Bruce) - - - - - - GRANT/REVOKE behavior - follows the SQL spec more closely - - - - - - Avoid locking conflict between CREATE INDEX - and CHECKPOINT (Tom) - - - In 7.3 and 7.4, a long-running B-tree index build could block concurrent - CHECKPOINTs from completing, thereby causing WAL bloat because the - WAL log could not be recycled. - - - - - - Database-wide ANALYZE does not hold locks - across tables (Tom) - - - This reduces the potential for deadlocks against other backends - that want exclusive locks on tables. To get the benefit of this - change, do not execute database-wide ANALYZE - inside a transaction block (BEGIN block); it - must be able to commit and start a new transaction for each - table. - - - - - - REINDEX does not exclusively lock the index's - parent table anymore - - - The index itself is still exclusively locked, but readers of the - table can continue if they are not using the particular index - being rebuilt. - - - - - - Erase MD5 user passwords when a user is renamed (Bruce) - - - PostgreSQL uses the user name as salt - when encrypting passwords via MD5. When a user's name is changed, - the salt will no longer match the stored MD5 password, so the - stored password becomes useless. In this release a notice is - generated and the password is cleared. A new password must then - be assigned if the user is to be able to log in with a password. - - - - - - New pg_ctl - - Windows does not have a kill command to send signals to - backends so this capability was added to pg_ctl. - - - - - - Information schema improvements - - - - - - Add - - - - - Detect locale/encoding mismatch in - initdb (Peter) - - - - - - Add - - - - - - - - Data Type and Function Changes - - - - - More complete support for composite types (row types) (Tom) - - - Composite values can be used in many places where only scalar values - worked before. - - - - - - Reject non-rectangular array values as erroneous (Joe) - - - Formerly, array_in would silently build a - surprising result. - - - + - Overflow in integer arithmetic operations is now detected (Tom) + Updating an element or slice of a NULL array value now produces + a non-NULL array result, namely an array containing + just the assigned-to positions. - + + + + Syntax checking of array input values has been tightened up + considerably. Junk that was previously allowed in odd places with + odd results now causes an error. Empty-string element values + must now be written as "", rather than writing nothing. + Also changed behavior with respect to whitespace surrounding + array elements: trailing whitespace is now ignored, for symmetry + with leading whitespace (which has always been ignored). + + + + + + Overflow in integer arithmetic operations is now detected and + reported as an error. + + + + + + The arithmetic operators associated with the single-byte + "char" data type have been removed. + + + + + + The extract() function (also called + date_part) now returns the proper year for BC dates. + It previously returned one less than the correct year. The + function now also returns the proper values for millennium and + century. + + + - The arithmetic operators associated with the single-byte - "char" data type have been removed. - - - Formerly, the parser would select these operators in many situations - where an unable to select an operator error would be more - appropriate, such as null * null. If you actually want - to do arithmetic on a "char" column, you can cast it to - integer explicitly. + CIDR values now must have their non-masked bits be zero. + For example, we no longer allow + 204.248.199.1/31 as a CIDR value. Such + values should never have been accepted by + PostgreSQL and will now be rejected. - - + + + + EXECUTE now returns a completion tag that + matches the executed statement. + + + + + + psql's \copy command now reads or + writes to the query's stdin/stdout, rather than + psql's stdin/stdout. The previous + behavior can be accessed via new + + + + + + The JDBC client interface has been removed from the core + distribution, and is now hosted at . + + + + + + The Tcl client interface has also been removed. There are several + Tcl interfaces now hosted at . + + + + + + The server now uses its own time zone database, rather than the + one supplied by the operating system. This will provide consistent + behavior across all platforms. In most cases, there should be + little noticeable difference in time zone behavior, except that + the time zone names used by SET/SHOW + TimeZone may + be different from what your platform provides. + + + + + + Configure's threading option no longer requires + users to run tests or edit configuration files; threading options + are now detected automatically. + + + + + + Now that tablespaces have been implemented, + initlocation has been removed. + + + + + + The API for user-defined GiST indexes has been changed. The + Union and PickSplit methods are now passed a pointer to a + special GistEntryVector structure, + rather than a bytea. + + + + + + + + + Deprecated Features + + + Some aspects of PostgreSQL's behavior + have been determined to be suboptimal. For the sake of backward + compatibility these have not been removed in 8.0, but they are + considered deprecated and will be removed in the next major + release. + + + + - Syntax checking of array input values considerably tightened up (Joe) + The 8.1 release will remove the to_char() function + for intervals. - - Junk that was previously allowed in odd places with odd results - now causes an ERROR, for example, non-whitespace - after the closing right brace. - - - - + + + + + The server now warns of empty strings passed to + oid/float4/float8 data + types, but continues to interpret them as zeroes as before. + In the next major release, empty strings will be considered + invalid input for these data types. + + + + - Empty-string array element values must now be written as - "", rather than writing nothing (Joe) + By default, tables in PostgreSQL 8.0 + and earlier are created with OIDs. In the next release, + this will not be the case: to create a table + that contains OIDs, the - - Formerly, both ways of writing an empty-string element value were - allowed, but now a quoted empty string is required. The case where - nothing at all appears will probably be considered to be a NULL - element value in some future release. - - - - - - Array element trailing whitespace is now ignored (Joe) - - - Formerly leading whitespace was ignored, but trailing whitespace - between an element value and the delimiter or right brace was - significant. Now trailing whitespace is also ignored. - - - - - - Emit array values with explicit array bounds when lower bound is not one - (Joe) - - - - - - Accept YYYY-monthname-DD as a date string (Tom) - - - - - - Make netmask and hostmask functions - return maximum-length mask length (Tom) - - - - - - Change factorial function to return numeric (Gavin) - - - Returning numeric allows the factorial function to - work for a wider range of input values. - - - - - - to_char/to_date() date conversion - improvements (Kurt Roeckx, Fabien Coelho) - - - - - - Make length() disregard trailing spaces in - CHAR(n) (Gavin) - - - This change was made to improve consistency: trailing spaces are - semantically insignificant in CHAR(n) data, so they - should not be counted by length(). - - - - - - Warn about empty string being passed to - OID/float4/float8 data types (Neil) - - - 8.1 will throw an error instead. - - - - - - Allow leading or trailing whitespace in - int2/int4/int8/float4/float8 - input routines - (Neil) - - - - - - Better support for IEEE Infinity and NaN - values in float4/float8 (Neil) - - - These should now work on all platforms that support IEEE-compliant - floating point arithmetic. - - - - - - Add - - - - - Fix to_char for 1 BC - (previously it returned 1 AD) (Bruce) - - - - - - Fix date_part(year) for BC dates (previously it - returned one less than the correct year) (Bruce) - - - - - - Fix date_part() to return the proper millennium and - century (Fabien Coelho) - - - In previous versions, the century and millennium results had a wrong - number and started in the wrong year, as compared to standard - reckoning of such things. - - - - - - Add ceiling() as an alias for ceil(), - and power() as an alias for pow() for - standards compliance (Neil) - - - - - - Change ln(), log(), - power(), and sqrt() to emit the correct - SQLSTATE error codes for certain error conditions, as - specified by SQL:2003 (Neil) - - - - - - Add width_bucket() function as defined by SQL:2003 (Neil) - - - - - - Add generate_series() functions to simplify working - with numeric sets (Joe) - - - - - - Fix upper/lower/initcap() functions to work with - multibyte encodings (Tom) - - - - - - Add boolean and bitwise integer - - - - - New session information functions to return network addresses for client - and server (Sean Chittenden) - - - - - - Add function to determine the area of a closed path (Sean Chittenden) - - - - - - Add function to send cancel request to other backends (Magnus) - - - - - - Add interval plus datetime operators (Tom) - - - The reverse ordering, datetime plus interval, - was already supported, but both are required by the SQL standard. - - - - - - Casting an integer to BIT(N) selects the rightmost N bits - of the integer - (Tom) - - - In prior releases, the leftmost N bits were selected, but this was - deemed unhelpful, not to mention inconsistent with casting from bit - to int. - - - - - - Require CIDR values to have all non-masked bits be zero - (Kevin Brintnall) - - - - - - - - - Server-Side Language Changes - - - - - In READ COMMITTED serialization mode, volatile functions - now see the results of concurrent transactions committed up to the - beginning of each statement within the function, rather than up to the - beginning of the interactive command that called the function. - - - - - - Functions declared STABLE or IMMUTABLE always - use the snapshot of the calling query, and therefore do not see the - effects of actions taken after the calling query starts, whether in - their own transaction or other transactions. Such a function must be - read-only, too, meaning that it cannot use any SQL commands other than - SELECT. There is a considerable performance gain from - declaring a function STABLE or IMMUTABLE - rather than VOLATILE. - - - - - - Non-deferred - - - - - Allow function parameters to be declared with names (Dennis Bjorklund) - - - This allows better documentation of functions. Whether the names - actually do anything depends on the specific function language - being used. - - - - - - Allow PL/pgSQL parameter names to be referenced in the function (Dennis Bjorklund) - - - This basically creates an automatic alias for each named parameter. - - - - - - Do minimal syntax checking of PL/pgSQL functions at creation time (Tom) - - - This allows us to catch simple syntax errors sooner. - - - - - - More support for composite types (row and record variables) in PL/pgSQL - - - For example, it now works to pass a rowtype variable to another function - as a single variable. - - - - - - Default values for PL/pgSQL variables can now reference previously - declared variables - - - - - - Improve parsing of PL/pgSQL FOR loops (Tom) - - - Parsing is now driven by presence of ".." rather than - data type of - - - - - Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan) - - - - - - In PL/Tcl, SPI commands are now run in subtransactions. If an error - occurs, the subtransaction is cleaned up and the error is reported - as an ordinary Tcl error, which can be trapped with catch. - Formerly, it was not possible to catch such errors. - - - - - - Accept ELSEIF in PL/pgSQL (Neil) - - - Previously PL/pgSQL only allowed ELSIF, but many people - are accustomed to spelling this keyword ELSEIF. - - - - - - - - - <application>psql</> Changes - - - - - Improve psql information display about database - objects (Christopher) - - - - - - Allow psql to display group membership in - \du and \dg (Markus Bertheau) - - - - - - Prevent psql \dn from showing - temporary schemas (Bruce) - - - - - - Allow psql to handle tilde user expansion for file - names (Zach Irmen) - - - - - - Allow psql to display fancy prompts, including - color, via readline (Reece Hart, Chet Ramey) - - - - - - Make psql \copy match COPY command syntax - fully (Tom) - - - - - - Show the location of syntax errors (Fabien Coelho, Tom) - - - - - - Add CLUSTER information to psql - \d display - (Bruce) - - - - - - Change psql \copy stdin/stdout to read - from command input/output (Bruce) - - - - - - Add - - - - - Add global psql configuration file, psqlrc.sample - (Bruce) - - - This allows a central file where global psql startup commands can - be stored. - - - - - - Have psql \d+ indicate if the table - has an OID column (Neil) - - - - - - On Windows, use binary mode in psql when reading files so control-Z - is not seen as end-of-file - - - - - - Have \dn+ show permissions and description for schemas (Dennis - Bjorklund) - - - - - - Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane) - - - - - - Allow boolean settings to be set using upper or lower case (Michael Paesold) - - - - - - - - - <application>pg_dump</> Changes - - - - - Use dependency information to improve the reliability of - pg_dump (Tom) - - - This should solve the longstanding problems with related objects - sometimes being dumped in the wrong order. - - - - - - Have pg_dump output objects in alphabetical order if possible (Tom) - - - This should make it easier to identify changes between - dump files. - - - - - - Allow pg_restore to ignore some SQL errors (Fabien Coelho) - - - This makes pg_restore's behavior similar to the - results of feeding a pg_dump output script to - psql. In most cases, ignoring errors and plowing - ahead is the most useful thing to do. Also added was a pg_restore - option to give the old behavior of exiting on an error. - - - - - - pg_restore - - - - - New begin/end markers in pg_dump text output (Bruce) - - - - - - Add start/stop times for - pg_dump/pg_dumpall in verbose mode - (Bruce) - - - - - - Allow most pg_dump options in - pg_dumpall (Christopher) - - - - - - Have pg_dump use ALTER OWNER rather - than SET SESSION AUTHORIZATION by default - (Christopher) - - - - - - - - - libpq Changes - - - - - Make libpq's - - - - - Add PQmbdsplen() which returns the display length - of a character (Tatsuo) - - - - - - Add thread locking to SSL and - Kerberos connections (Manfred Spraul) - - - - - - Allow PQoidValue(), PQcmdTuples(), and - PQoidStatus() to work on EXECUTE - commands (Neil) - - - - - - Add PQserverVersion() to provide more convenient - access to the server version number (Greg Sabino Mullane) - - - - - - Add PQprepare/PQsendPrepared() functions to support - preparing statements without necessarily specifying the data types - of their parameters (Abhijit Menon-Sen) - - - - - - Many ECPG improvements, including SET DESCRIPTOR (Michael) - - - - - - - - - Source Code Changes - - - - - Allow the database server to run natively on Windows (Claudio, Magnus, Andrew) - - - - - - Shell script commands converted to C versions for Windows support (Andrew) - - - - - - Create an extension makefile framework (Fabien Coelho, Peter) - - - This simplifies the task of building extensions outside the original - source tree. - - - - - - Support relocatable installations (Bruce) - - - Directory paths for installed files (such as the - /share directory) are now computed relative to the - actual location of the executables, so that an installation tree - can be moved to another place without reconfiguring and - rebuilding. - - - - - - Use - - - - - Add - - - - - Upgrade to DocBook V4.2 SGML (Peter) - - - - - - New PostgreSQL CVS tag (Marc) - - - This was done to make it easier for organizations to manage their - own copies of the PostgreSQL - CVS repository. File version stamps from the master - repository will not get munged by checking into or out of a copied - repository. - - - - - - Clarify locking code (Manfred Koizar) - - - - - - Buffer manager cleanup (Neil) - - - - - - Decouple platform tests from CPU spinlock code (Bruce, Tom) - - - - - - Add inlined test-and-set code on PA-RISC for gcc - (ViSolve, Tom) - - - - - - Improve i386 spinlock code (Manfred Spraul) - - - - - - Clean up spinlock assembly code to avoid warnings from newer - gcc releases (Tom) - - - - - - Remove JDBC from source tree; now a separate project - - - - - - Remove the libpgtcl client interface; now a separate project - - - - - - More accurately estimate memory and file descriptor usage (Tom) - - - - - - Improvements to the Mac OS X startup scripts (Ray A.) - - - - - - New fsync() test program (Bruce) - - - - - - Major documentation improvements (Neil, Peter) - - - - - - Remove pg_encoding; not needed - anymore - - - - - - Remove pg_id; not needed anymore - - - - - - Remove initlocation; not needed - anymore - - - - - - Auto-detect thread flags (no more manual testing) (Bruce) - - - - - - Use Olson's public domain timezone library (Magnus) - - - - - - With threading enabled, use thread flags on Unixware for - backend executables too (Bruce) - - - Unixware cannot mix threaded and non-threaded object files in the - same executable, so everything must be compiled as threaded. - - - - - - psql now uses a flex-generated - lexical analyzer to process command strings - - - - - - Reimplement the linked list data structure used throughout the - backend (Neil) - - - This improves performance by allowing list append and length - operations to be more efficient. - - - - - - Allow dynamically loaded modules to create their own server configuration - parameters (Thomas Hallgren) - - - - - - New Brazilian version of FAQ (Euler Taveira de Oliveira) - - - - - - Add French FAQ (Guillaume Lelarge) - - - - - - New pgevent for Windows logging - - - - - - Make libpq and ECPG build as proper shared libraries on OS X (Tom) - - - - - - - - - Contrib Changes - - - - - Overhaul of contrib/dblink (Joe) - - - - - - contrib/dbmirror improvements (Steven Singer) - - - - - - New contrib/xml2 (John Gray, Torchbox) - - - - - - Updated contrib/mysql - - - - - - New version of contrib/btree_gist (Teodor) - - - - - - New contrib/trgm, trigram matching for - PostgreSQL (Teodor) - - - - - - Many contrib/tsearch2 improvements (Teodor) - - - - - - Add double metaphone to contrib/fuzzystrmatch (Andrew) - - - - - - Allow contrib/pg_autovacuum to run as a Windows service (Dave Page) - - - - - - Add functions to contrib/dbsize (Andreas Pflug) - - - - - - Removed contrib/pg_logger: obsoleted by integrated logging - subprocess - - - - - - Removed contrib/rserv: obsoleted by various separate projects - - - - - - - - - + + + + + + Changes + + + Below you will find a detailed account of the changes between + release 8.0 and the previous major release. + + + + Performance Improvements + + + + + Support cross-data-type index usage (Tom) + + + Before this change, many queries would not use an index if the data + types did not match exactly. This improvement makes index usage more + intuitive and consistent. + + + + + + New buffer replacement strategy that improves caching (Jan) + + + Prior releases used a least-recently-used (LRU) cache to keep + recently referenced pages in memory. The LRU algorithm + did not consider the number of times a specific cache entry was + accessed, so large table scans could force out useful cache pages. + The new cache algorithm uses four separate lists to track most + recently used and most frequently used cache pages and dynamically + optimize their replacement based on the work load. This should + lead to much more efficient use of the shared buffer cache. + Administrators who have tested shared buffer sizes in the past + should retest with this new cache replacement policy. + + + + + + Add subprocess to write dirty buffers periodically to reduce + checkpoint writes (Jan) + + + In previous releases, the checkpoint process, which runs every few + minutes, would write all dirty buffers to the operating system's + buffer cache then flush all dirty operating system buffers to + disk. This resulted in a periodic spike in disk usage that often + hurt performance. The new code uses a background writer to trickle + disk writes at a steady pace so checkpoints have far fewer dirty + pages to write to disk. Also, the new code does not issue a global + sync() call, but instead fsync()s just + the files written since the last checkpoint. This should improve + performance and minimize degradation during checkpoints. + + + + + + Add ability to prolong vacuum to reduce performance impact (Jan) + + + On busy systems, VACUUM performs many I/O + requests which can hurt performance for other users. This + release allows you to slow down VACUUM to + reduce its impact on other users, though this increases the + total duration of VACUUM. + + + + + + Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom) + + + This improves the way indexes are scanned when many duplicate + values exist in the index. + + + + + + Use dynamically-generated table size estimates while planning (Tom) + + + Formerly the planner estimated table sizes using the values seen + by the last VACUUM or ANALYZE, + both as to physical table size (number of pages) and number of rows. + Now, the current physical table size is obtained from the kernel, + and the number of rows is estimated by multiplying the table size + by the row density (rows per page) seen by the last + VACUUM or ANALYZE. This should + produce more reliable estimates in cases where the table size has + changed significantly since the last housekeeping command. + + + + + + Improved index usage with OR clauses (Tom) + + + This allows the optimizer to use indexes in statements with many OR + clauses that would not have been indexed in the past. It can also use + multi-column indexes where the first column is specified and the second + column is part of an OR clause. + + + + + + Improve matching of partial index clauses (Tom) + + + The server is now smarter about using partial indexes in queries + involving complex + + + + + Improve performance of the GEQO optimizer (Tom) + + + The GEQO optimizer is used to plan queries involving many tables (by + default, twelve or more). This release speeds up the way queries are + analyzed to decrease time spent in optimization. + + + + + + Miscellaneous optimizer improvements + + + There is not room here to list all the minor improvements made, but + numerous special cases work better than in prior releases. + + + + + + Improve lookup speed for C functions (Tom) + + + This release uses a hash table to lookup information for dynamically + loaded C functions. This improves their speed so they perform nearly as + quickly as functions that are built into the server executable. + + + + + + Add type-specific ANALYZE statistics + capability (Mark Cave-Ayland) + + + This feature allows more flexibility in generating statistics + for non-standard data types. + + + + + + ANALYZE now collects statistics for + expression indexes (Tom) + + + Expression indexes (also called functional indexes) allow users to + index not just columns but the results of expressions and function + calls. With this release, the optimizer can gather and use statistics + about the contents of expression indexes. This will greatly improve + the quality of planning for queries in which an expression index is + relevant. + + + + + + New two-stage sampling method for ANALYZE + (Manfred Koizar) + + + This gives better statistics when the density of valid rows is very + different in different regions of a table. + + + + + + Speed up TRUNCATE (Tom) + + + This buys back some of the performance loss observed in 7.4, while still + keeping TRUNCATE transaction-safe. + + + + + + + + + Server Changes + + + + + Add WAL file archiving and point-in-time recovery (Simon Riggs) + + + + + + Add tablespaces so admins can control disk layout (Gavin) + + + + + + Add a built-in log rotation program (Andreas Pflug) + + + It is now possible to log server messages conveniently without + relying on either syslog or an external log + rotation program. + + + + + + Add new read-only server configuration parameters to show server + compile-time settings: block_size, + integer_datetimes, max_function_args, + max_identifier_length, max_index_keys (Joe) + + + + + + Make quoting of sameuser, samegroup, and + all remove special meaning of these terms in + pg_hba.conf (Andrew) + + + + + + Use clearer IPv6 name ::1/128 for + localhost in default pg_hba.conf (Andrew) + + + + + + Use CIDR format in pg_hba.conf examples (Andrew) + + + + + + Rename server configuration parameters SortMem and + VacuumMem to work_mem and + maintenance_work_mem (Old names still supported) (Tom) + + + This change was made to clarify that bulk operations such as index and + foreign key creation use maintenance_work_mem, while + work_mem is for workspaces used during query execution. + + + + + + Allow logging of session disconnections using server configuration + log_disconnections (Andrew) + + + + + + Add new server configuration parameter log_line_prefix to + allow control of information emitted in each log line (Andrew) + + + Available information includes user name, database name, remote IP + address, and session start time. + + + + + + Remove server configuration parameters log_pid, + log_timestamp, log_source_port; functionality + superseded by log_line_prefix (Andrew) + + + + + + Replace the virtual_host and tcpip_socket + parameters with a unified listen_addresses parameter + (Andrew, Tom) + + + virtual_host could only specify a single IP address to + listen on. listen_addresses allows multiple addresses + to be specified. + + + + + + Listen on localhost by default, which eliminates the need for the + + + Listening on localhost (127.0.0.1) opens no new + security holes but allows configurations like Windows and JDBC, + which do not support local sockets, to work without special + adjustments. + + + + + + Remove syslog server configuration parameter, and add more + logical log_destination variable to control log output + location (Magnus) + + + + + + Change server configuration parameter log_statement to take + values all, mod, ddl, or + none to select which queries are logged (Bruce) + + + This allows administrators to log only data definition changes or + only data modification statements. + + + + + + Some logging-related configuration parameters could formerly be adjusted + by ordinary users, but only in the more verbose direction. + They are now treated more strictly: only superusers can set them. + However, a superuser may use ALTER USER to provide per-user + settings of these values for non-superusers. Also, it is now possible + for superusers to set values of superuser-only configuration parameters + via PGOPTIONS. + + + + + + Allow configuration files to be placed outside the data directory (mlw) + + + By default, configuration files are kept in the cluster's top directory. + With this addition, configuration files can be placed outside the + data directory, easing administration. + + + + + + Plan prepared queries only when first executed so constants can be + used for statistics (Oliver Jowett) + + + Prepared statements plan queries once and execute them many + times. While prepared queries avoid the overhead of re-planning + on each use, the quality of the plan suffers from not knowing the exact + parameters to be used in the query. In this release, planning of + unnamed prepared statements is delayed until the first execution, + and the actual parameter values of that execution are used as + optimization hints. This allows use of out-of-line parameter passing + without incurring a performance penalty. + + + + + + Allow DECLARE CURSOR to take parameters + (Oliver Jowett) + + + It is now useful to issue DECLARE CURSOR in a + Parse message with parameters. The parameter values + sent at Bind time will be substituted into the + execution of the cursor's query. + + + + + + Fix hash joins and aggregates of inet and + cidr data types (Tom) + + + Release 7.4 handled hashing of mixed inet and + cidr values incorrectly. (This bug did not exist + in prior releases because they wouldn't try to hash either + data type.) + + + + + + Make log_duration print only when log_statement + prints the query (Ed L.) + + + + + + + + + Query Changes + + + + + Add savepoints (nested transactions) (Alvaro) + + + + + + Unsupported isolation levels are now accepted and promoted to the + nearest supported level (Peter) + + + The SQL specification states that if a database doesn't support a + specific isolation level, it should use the next more restrictive level. + This change complies with that recommendation. + + + + + + Allow BEGIN WORK to specify transaction + isolation levels like START TRANSACTION does + (Bruce) + + + + + + Fix table permission checking for cases in which rules generate + a query type different from the originally submitted query (Tom) + + + + + + Implement dollar quoting to simplify single-quote usage (Andrew, Tom, + David Fetter) + + + In previous releases, because single quotes had to be used to + quote a function's body, the use of single quotes inside the + function text required use of two single quotes or other error-prone + notations. With this release we add the ability to use "dollar + quoting" to quote a block of text. The ability to use different + quoting delimiters at different nesting levels greatly simplifies + the task of quoting correctly, especially in complex functions. + Dollar quoting can be used anywhere quoted text is needed. + + + + + + Make CASE val WHEN compval1 THEN ... evaluate val only once (Tom) + + + + + + + + Test + + Fixes improper failure of cases such as SELECT SUM(win)/SUM(lose) + ... GROUP BY ... HAVING SUM(lose) > 0. This should work but formerly + could fail with divide-by-zero. + + + + + + Replace max_expr_depth parameter with + max_stack_depth parameter, measured in kilobytes of stack + size (Tom) + + + This gives us a fairly bulletproof defense against crashing due to + runaway recursive functions. Instead of measuring the depth of expression + nesting, we now directly measure the size of the execution stack. + + + + + + Allow arbitrary row expressions (Tom) + + + This release allows SQL expressions to contain arbitrary composite + types, that is, row values. It also allows functions to more easily + take rows as arguments and return row values. + + + + + + Allow + + + + + Avoid locale-specific case conversion of basic ASCII letters in + identifiers and keywords (Tom) + + + This solves the Turkish problem with mangling of words + containing I and i. Folding of characters + outside the 7-bit-ASCII set is still locale-aware. + + + + + + Improve syntax error reporting (Fabien, Tom) + + + Syntax error reports are more useful than before. + + + + + + Change EXECUTE to return a completion tag + matching the executed statement (Kris Jurka) + + + Previous releases return an EXECUTE tag for + any EXECUTE call. In this release, the tag + returned will reflect the command executed. + + + + + + Avoid emitting + + Such a clause makes no logical sense, but in some cases the rule + decompiler formerly produced this syntax. + + + + + + + + + Object Manipulation Changes + + + + + Add COMMENT ON for casts, conversions, languages, + operator classes, and large objects (Christopher) + + + + + + Add new server configuration parameter default_with_oids to + control whether tables are created with OIDs by default (Neil) + + + This allows administrators to control whether CREATE + TABLE commands create tables with or without OID + columns by default. (Note: the current factory default setting for + default_with_oids is TRUE, but the default + will become FALSE in future releases.) + + + + + + Add + + + + + Allow ALTER TABLE DROP COLUMN to drop an OID + column (ALTER TABLE SET WITHOUT OIDS still works) + (Tom) + + + + + + Allow composite types as table columns (Tom) + + + + + + Allow ALTER ... ADD COLUMN with defaults and + + + It is now possible for + + + + + Add ALTER COLUMN TYPE to change column's type (Rod) + + + It is now possible to alter a column's data type without dropping + and re-adding the column. + + + + + + Allow multiple ALTER actions in a single ALTER + TABLE command (Rod) + + + This is particularly useful for ALTER commands that + rewrite the table (which include + + + + + Allow ALTER TABLE to add SERIAL + columns (Tom) + + + This falls out from the new capability of specifying defaults for new + columns. + + + + + + Allow changing the owners of aggregates, conversions, databases, + functions, operators, operator classes, schemas, types, and tablespaces + (Christopher, Euler Taveira de Oliveira) + + + Previously this required modifying the system tables directly. + + + + + + Allow temporary object creation to be limited to + + + + + Add + + Prior to this release, there was no way to clear an auto-cluster + specification except to modify the system tables. + + + + + + Constraint/Index/SERIAL names are now + table_column_type + with numbers appended to guarantee uniqueness within the schema + (Tom) + + + The SQL specification states that such names should be unique + within a schema. + + + + + + Add pg_get_serial_sequence() to return a + SERIAL column's sequence name (Christopher) + + + This allows automated scripts to reliably find the SERIAL + sequence name. + + + + + + Warn when primary/foreign key data type mismatch requires costly lookup + + + + + + New ALTER INDEX command to allow moving of indexes + between tablespaces (Gavin) + + + + + + Make ALTER TABLE OWNER change dependent sequence + ownership too (Alvaro) + + + + + + + + + + Utility Command Changes + + + + + Allow CREATE SCHEMA to create triggers, + indexes, and sequences (Neil) + + + + + + Add + + This allows + + + + + Add + + This allows the LOCK command to fail if it + would have to wait for the requested lock. + + + + + + Allow COPY to read and write + comma-separated-value (CSV) files (Andrew, Bruce) + + + + + + Generate error if the COPY delimiter and NULL + string conflict (Bruce) + + + + + + GRANT/REVOKE behavior + follows the SQL spec more closely + + + + + + Avoid locking conflict between CREATE INDEX + and CHECKPOINT (Tom) + + + In 7.3 and 7.4, a long-running B-tree index build could block concurrent + CHECKPOINTs from completing, thereby causing WAL bloat because the + WAL log could not be recycled. + + + + + + Database-wide ANALYZE does not hold locks + across tables (Tom) + + + This reduces the potential for deadlocks against other backends + that want exclusive locks on tables. To get the benefit of this + change, do not execute database-wide ANALYZE + inside a transaction block (BEGIN block); it + must be able to commit and start a new transaction for each + table. + + + + + + REINDEX does not exclusively lock the index's + parent table anymore + + + The index itself is still exclusively locked, but readers of the + table can continue if they are not using the particular index + being rebuilt. + + + + + + Erase MD5 user passwords when a user is renamed (Bruce) + + + PostgreSQL uses the user name as salt + when encrypting passwords via MD5. When a user's name is changed, + the salt will no longer match the stored MD5 password, so the + stored password becomes useless. In this release a notice is + generated and the password is cleared. A new password must then + be assigned if the user is to be able to log in with a password. + + + + + + New pg_ctl + + Windows does not have a kill command to send signals to + backends so this capability was added to pg_ctl. + + + + + + Information schema improvements + + + + + + Add + + + + + Detect locale/encoding mismatch in + initdb (Peter) + + + + + + Add + + + + + + + + Data Type and Function Changes + + + + + More complete support for composite types (row types) (Tom) + + + Composite values can be used in many places where only scalar values + worked before. + + + + + + Reject non-rectangular array values as erroneous (Joe) + + + Formerly, array_in would silently build a + surprising result. + + + + + + Overflow in integer arithmetic operations is now detected (Tom) + + + + + + The arithmetic operators associated with the single-byte + "char" data type have been removed. + + + Formerly, the parser would select these operators in many situations + where an unable to select an operator error would be more + appropriate, such as null * null. If you actually want + to do arithmetic on a "char" column, you can cast it to + integer explicitly. + + + + + + Syntax checking of array input values considerably tightened up (Joe) + + + Junk that was previously allowed in odd places with odd results + now causes an ERROR, for example, non-whitespace + after the closing right brace. + + + + + + Empty-string array element values must now be written as + "", rather than writing nothing (Joe) + + + Formerly, both ways of writing an empty-string element value were + allowed, but now a quoted empty string is required. The case where + nothing at all appears will probably be considered to be a NULL + element value in some future release. + + + + + + Array element trailing whitespace is now ignored (Joe) + + + Formerly leading whitespace was ignored, but trailing whitespace + between an element value and the delimiter or right brace was + significant. Now trailing whitespace is also ignored. + + + + + + Emit array values with explicit array bounds when lower bound is not one + (Joe) + + + + + + Accept YYYY-monthname-DD as a date string (Tom) + + + + + + Make netmask and hostmask functions + return maximum-length mask length (Tom) + + + + + + Change factorial function to return numeric (Gavin) + + + Returning numeric allows the factorial function to + work for a wider range of input values. + + + + + + to_char/to_date() date conversion + improvements (Kurt Roeckx, Fabien Coelho) + + + + + + Make length() disregard trailing spaces in + CHAR(n) (Gavin) + + + This change was made to improve consistency: trailing spaces are + semantically insignificant in CHAR(n) data, so they + should not be counted by length(). + + + + + + Warn about empty string being passed to + OID/float4/float8 data types (Neil) + + + 8.1 will throw an error instead. + + + + + + Allow leading or trailing whitespace in + int2/int4/int8/float4/float8 + input routines + (Neil) + + + + + + Better support for IEEE Infinity and NaN + values in float4/float8 (Neil) + + + These should now work on all platforms that support IEEE-compliant + floating point arithmetic. + + + + + + Add + + + + + Fix to_char for 1 BC + (previously it returned 1 AD) (Bruce) + + + + + + Fix date_part(year) for BC dates (previously it + returned one less than the correct year) (Bruce) + + + + + + Fix date_part() to return the proper millennium and + century (Fabien Coelho) + + + In previous versions, the century and millennium results had a wrong + number and started in the wrong year, as compared to standard + reckoning of such things. + + + + + + Add ceiling() as an alias for ceil(), + and power() as an alias for pow() for + standards compliance (Neil) + + + + + + Change ln(), log(), + power(), and sqrt() to emit the correct + SQLSTATE error codes for certain error conditions, as + specified by SQL:2003 (Neil) + + + + + + Add width_bucket() function as defined by SQL:2003 (Neil) + + + + + + Add generate_series() functions to simplify working + with numeric sets (Joe) + + + + + + Fix upper/lower/initcap() functions to work with + multibyte encodings (Tom) + + + + + + Add boolean and bitwise integer + + + + + New session information functions to return network addresses for client + and server (Sean Chittenden) + + + + + + Add function to determine the area of a closed path (Sean Chittenden) + + + + + + Add function to send cancel request to other backends (Magnus) + + + + + + Add interval plus datetime operators (Tom) + + + The reverse ordering, datetime plus interval, + was already supported, but both are required by the SQL standard. + + + + + + Casting an integer to BIT(N) selects the rightmost N bits + of the integer + (Tom) + + + In prior releases, the leftmost N bits were selected, but this was + deemed unhelpful, not to mention inconsistent with casting from bit + to int. + + + + + + Require CIDR values to have all non-masked bits be zero + (Kevin Brintnall) + + + + + + + + + Server-Side Language Changes + + + + + In READ COMMITTED serialization mode, volatile functions + now see the results of concurrent transactions committed up to the + beginning of each statement within the function, rather than up to the + beginning of the interactive command that called the function. + + + + + + Functions declared STABLE or IMMUTABLE always + use the snapshot of the calling query, and therefore do not see the + effects of actions taken after the calling query starts, whether in + their own transaction or other transactions. Such a function must be + read-only, too, meaning that it cannot use any SQL commands other than + SELECT. There is a considerable performance gain from + declaring a function STABLE or IMMUTABLE + rather than VOLATILE. + + + + + + Non-deferred + + + + + Allow function parameters to be declared with names (Dennis Bjorklund) + + + This allows better documentation of functions. Whether the names + actually do anything depends on the specific function language + being used. + + + + + + Allow PL/pgSQL parameter names to be referenced in the function (Dennis Bjorklund) + + + This basically creates an automatic alias for each named parameter. + + + + + + Do minimal syntax checking of PL/pgSQL functions at creation time (Tom) + + + This allows us to catch simple syntax errors sooner. + + + + + + More support for composite types (row and record variables) in PL/pgSQL + + + For example, it now works to pass a rowtype variable to another function + as a single variable. + + + + + + Default values for PL/pgSQL variables can now reference previously + declared variables + + + + + + Improve parsing of PL/pgSQL FOR loops (Tom) + + + Parsing is now driven by presence of ".." rather than + data type of + + + + + Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan) + + + + + + In PL/Tcl, SPI commands are now run in subtransactions. If an error + occurs, the subtransaction is cleaned up and the error is reported + as an ordinary Tcl error, which can be trapped with catch. + Formerly, it was not possible to catch such errors. + + + + + + Accept ELSEIF in PL/pgSQL (Neil) + + + Previously PL/pgSQL only allowed ELSIF, but many people + are accustomed to spelling this keyword ELSEIF. + + + + + + + + + <application>psql</> Changes + + + + + Improve psql information display about database + objects (Christopher) + + + + + + Allow psql to display group membership in + \du and \dg (Markus Bertheau) + + + + + + Prevent psql \dn from showing + temporary schemas (Bruce) + + + + + + Allow psql to handle tilde user expansion for file + names (Zach Irmen) + + + + + + Allow psql to display fancy prompts, including + color, via readline (Reece Hart, Chet Ramey) + + + + + + Make psql \copy match COPY command syntax + fully (Tom) + + + + + + Show the location of syntax errors (Fabien Coelho, Tom) + + + + + + Add CLUSTER information to psql + \d display + (Bruce) + + + + + + Change psql \copy stdin/stdout to read + from command input/output (Bruce) + + + + + + Add + + + + + Add global psql configuration file, psqlrc.sample + (Bruce) + + + This allows a central file where global psql startup commands can + be stored. + + + + + + Have psql \d+ indicate if the table + has an OID column (Neil) + + + + + + On Windows, use binary mode in psql when reading files so control-Z + is not seen as end-of-file + + + + + + Have \dn+ show permissions and description for schemas (Dennis + Bjorklund) + + + + + + Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane) + + + + + + Allow boolean settings to be set using upper or lower case (Michael Paesold) + + + + + + + + + <application>pg_dump</> Changes + + + + + Use dependency information to improve the reliability of + pg_dump (Tom) + + + This should solve the longstanding problems with related objects + sometimes being dumped in the wrong order. + + + + + + Have pg_dump output objects in alphabetical order if possible (Tom) + + + This should make it easier to identify changes between + dump files. + + + + + + Allow pg_restore to ignore some SQL errors (Fabien Coelho) + + + This makes pg_restore's behavior similar to the + results of feeding a pg_dump output script to + psql. In most cases, ignoring errors and plowing + ahead is the most useful thing to do. Also added was a pg_restore + option to give the old behavior of exiting on an error. + + + + + + pg_restore + + + + + New begin/end markers in pg_dump text output (Bruce) + + + + + + Add start/stop times for + pg_dump/pg_dumpall in verbose mode + (Bruce) + + + + + + Allow most pg_dump options in + pg_dumpall (Christopher) + + + + + + Have pg_dump use ALTER OWNER rather + than SET SESSION AUTHORIZATION by default + (Christopher) + + + + + + + + + libpq Changes + + + + + Make libpq's + + + + + Add PQmbdsplen() which returns the display length + of a character (Tatsuo) + + + + + + Add thread locking to SSL and + Kerberos connections (Manfred Spraul) + + + + + + Allow PQoidValue(), PQcmdTuples(), and + PQoidStatus() to work on EXECUTE + commands (Neil) + + + + + + Add PQserverVersion() to provide more convenient + access to the server version number (Greg Sabino Mullane) + + + + + + Add PQprepare/PQsendPrepared() functions to support + preparing statements without necessarily specifying the data types + of their parameters (Abhijit Menon-Sen) + + + + + + Many ECPG improvements, including SET DESCRIPTOR (Michael) + + + + + + + + + Source Code Changes + + + + + Allow the database server to run natively on Windows (Claudio, Magnus, Andrew) + + + + + + Shell script commands converted to C versions for Windows support (Andrew) + + + + + + Create an extension makefile framework (Fabien Coelho, Peter) + + + This simplifies the task of building extensions outside the original + source tree. + + + + + + Support relocatable installations (Bruce) + + + Directory paths for installed files (such as the + /share directory) are now computed relative to the + actual location of the executables, so that an installation tree + can be moved to another place without reconfiguring and + rebuilding. + + + + + + Use + + + + + Add + + + + + Upgrade to DocBook V4.2 SGML (Peter) + + + + + + New PostgreSQL CVS tag (Marc) + + + This was done to make it easier for organizations to manage their + own copies of the PostgreSQL + CVS repository. File version stamps from the master + repository will not get munged by checking into or out of a copied + repository. + + + + + + Clarify locking code (Manfred Koizar) + + + + + + Buffer manager cleanup (Neil) + + + + + + Decouple platform tests from CPU spinlock code (Bruce, Tom) + + + + + + Add inlined test-and-set code on PA-RISC for gcc + (ViSolve, Tom) + + + + + + Improve i386 spinlock code (Manfred Spraul) + + + + + + Clean up spinlock assembly code to avoid warnings from newer + gcc releases (Tom) + + + + + + Remove JDBC from source tree; now a separate project + + + + + + Remove the libpgtcl client interface; now a separate project + + + + + + More accurately estimate memory and file descriptor usage (Tom) + + + + + + Improvements to the Mac OS X startup scripts (Ray A.) + + + + + + New fsync() test program (Bruce) + + + + + + Major documentation improvements (Neil, Peter) + + + + + + Remove pg_encoding; not needed + anymore + + + + + + Remove pg_id; not needed anymore + + + + + + Remove initlocation; not needed + anymore + + + + + + Auto-detect thread flags (no more manual testing) (Bruce) + + + + + + Use Olson's public domain timezone library (Magnus) + + + + + + With threading enabled, use thread flags on Unixware for + backend executables too (Bruce) + + + Unixware cannot mix threaded and non-threaded object files in the + same executable, so everything must be compiled as threaded. + + + + + + psql now uses a flex-generated + lexical analyzer to process command strings + + + + + + Reimplement the linked list data structure used throughout the + backend (Neil) + + + This improves performance by allowing list append and length + operations to be more efficient. + + + + + + Allow dynamically loaded modules to create their own server configuration + parameters (Thomas Hallgren) + + + + + + New Brazilian version of FAQ (Euler Taveira de Oliveira) + + + + + + Add French FAQ (Guillaume Lelarge) + + + + + + New pgevent for Windows logging + + + + + + Make libpq and ECPG build as proper shared libraries on OS X (Tom) + + + + + + + + + Contrib Changes + + + + + Overhaul of contrib/dblink (Joe) + + + + + + contrib/dbmirror improvements (Steven Singer) + + + + + + New contrib/xml2 (John Gray, Torchbox) + + + + + + Updated contrib/mysql + + + + + + New version of contrib/btree_gist (Teodor) + + + + + + New contrib/trgm, trigram matching for + PostgreSQL (Teodor) + + + + + + Many contrib/tsearch2 improvements (Teodor) + + + + + + Add double metaphone to contrib/fuzzystrmatch (Andrew) + + + + + + Allow contrib/pg_autovacuum to run as a Windows service (Dave Page) + + + + + + Add functions to contrib/dbsize (Andreas Pflug) + + + + + + Removed contrib/pg_logger: obsoleted by integrated logging + subprocess + + + + + + Removed contrib/rserv: obsoleted by various separate projects + + + + + + + + + Release 7.4.8 @@ -2869,8 +2869,8 @@ holder of the lock released it within a very narrow window. ALTER TABLE SET WITHOUT OIDS - - + + Release 7.4.7 @@ -2927,8 +2927,8 @@ datestyles GMT - - + + Release 7.4.6 @@ -2997,8 +2997,8 @@ This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN. ECPG prepare statement - - + + Release 7.4.5 @@ -3033,8 +3033,8 @@ still worth a re-release. The bug does not exist in pre-7.4 releases. - - + + Release 7.4.4 @@ -3083,8 +3083,8 @@ aggregate plan Translation updates (various contributors) - - + + Release 7.4.3 @@ -3139,8 +3139,8 @@ names from outer query levels. Numerous translation updates (various contributors) - - + + Release 7.4.2 @@ -3280,8 +3280,8 @@ inconveniences associated with the i/I problem. Various JDBC fixes - - + + Release 7.4.1 @@ -11226,4 +11226,3 @@ sgml-local-catalogs:("/usr/lib/sgml/catalog") sgml-local-ecat-files:nil End: --> -