PostgreSQL 歷史版本列表
PostgreSQL 是一個跨平台的對象關係型數據庫管理系統,自 1995 年首次發布以來,已經成長為國際知名的解決方案,可幫助管理員輕鬆創建,組織,管理和部署各種形狀和大小的項目數據庫。這當然包括對運行 SQL 查詢,觸發管理,屬性管理以及其他企業級數據庫管理系統當前正在使用的所有功能的全面控制。為使日常管理多個作業和項目組件的管理員更容易訪問,PostgreSQL 符合大多數 SQL 2008... PostgreSQL 軟體介紹PostgreSQL (32-bit)PostgreSQL (64-bit)
更新時間:2013-02-10
更新細節:
What's new in this version:
Changes:
- Prevent execution of enum_recv from SQL
- The function was misdeclared, allowing a simple SQL command to crash the server. In principle an attacker might be able to use it to examine the contents of server memory.
- Fix multiple problems in detection of when a consistent database state has been reached during WAL replay
- Fix detection of end-of-backup point when no actual redo work is required
- This mistake could result in incorrect "WAL ends before end of online backup" errors.
- Update minimum recovery point when truncating a relation file
- Once data has been discarded, it's no longer safe to stop recovery at an earlier point in the timeline.
- Fix recycling of WAL segments after changing recovery target timeline
- Properly restore timeline history files from archive on cascading standby servers
- Fix lock conflict detection on hot-standby servers
- Fix missing cancellations in hot standby mode
- The need to cancel conflicting hot-standby queries would sometimes be missed, allowing those queries to see inconsistent data.
- Prevent recovery pause feature from pausing before users can connect
- Fix SQL grammar to allow subscripting or field selection from a sub-SELECT result
- Fix performance problems with autovacuum truncation in busy workloads
- Truncation of empty pages at the end of a table requires exclusive lock, but autovacuum was coded to fail (and release the table lock) when there are conflicting lock requests. Under load, it is easily possible that truncation would never occur, resulting in table bloat. Fix by performing a partial truncation, releasing the lock, then attempting to re-acquire the lock and continue. This fix also greatly reduces the average time before autovacuum releases the lock after a conflicting request arrives.
- Improve performance of SPI_execute and related functions, thereby improving PL/pgSQL's EXECUTE
- Remove some data-copying overhead that was added in 9.2 as a consequence of revisions in the plan caching mechanism. This eliminates a performance regression compared to 9.1, and also saves memory, especially when the query string to be executed contains many SQL statements.
- A side benefit is that multi-statement query strings are now processed fully serially, that is we complete execution of earlier statements before running parse analysis and planning on the following ones. This eliminates a long-standing issue, in that DDL that should affect the behavior of a later statement will now behave as expected.
- Restore pre-9.2 cost estimates for index usage
- An ill-considered change of a fudge factor led to undesirably high cost estimates for use of very large indexes.
- Fix intermittent crash in DROP INDEX CONCURRENTLY
- Fix potential corruption of shared-memory lock table during CREATE/DROP INDEX CONCURRENTLY
- Fix COPY's multiple-tuple-insertion code for the case of a tuple larger than page size minus fillfactor
- The previous coding could get into an infinite loop.
- Protect against race conditions when scanning pg_tablespace
- CREATE DATABASE and DROP DATABASE could misbehave if there were concurrent updates of pg_tablespace entries.
- Prevent DROP OWNED from trying to drop whole databases or tablespaces
- For safety, ownership of these objects must be reassigned, not dropped.
- Fix error in vacuum_freeze_table_age implementation (Andres Freund)
- The main consequence of this mistake is that lowering vacuum_freeze_min_age would cause full-table vacuuming scans to occur much more frequently than intended.
- Prevent misbehavior when a RowExpr or XmlExpr is parse-analyzed twice
- This mistake could be user-visible in contexts such as CREATE TABLE LIKE INCLUDING INDEXES.
- Improve defenses against integer overflow in hashtable sizing calculations
- Fix some bugs associated with privileges on datatypes
- There were some issues with default privileges for types, and pg_dump failed to dump such privileges at all.
- Fix failure to ignore leftover temporary tables after a server crash
- Fix failure to rotate postmaster log files for size reasons on Windows
- Reject out-of-range dates in to_date()
- Fix pg_extension_config_dump() to handle extension-update cases properly
- This function will now replace any existing entry for the target table, making it usable in extension update scripts.
- Fix PL/pgSQL's reporting of plan-time errors in possibly-simple expressions
- The previous coding resulted in sometimes omitting the first line in the CONTEXT traceback for the error.
- Fix PL/Python's handling of functions used as triggers on multiple tables
- Ensure that non-ASCII prompt strings are translated to the correct code page on Windows
- This bug affected psql and some other client programs.
- Fix possible crash in psql's ? command when not connected to a database
- Fix possible error if a relation file is removed while pg_basebackup is running
- Tolerate timeline switches while pg_basebackup -X fetch is backing up a standby server
- Make pg_dump exclude data of unlogged tables when running on a hot-standby server
- This would fail anyway because the data is not available on the standby server, so it seems most convenient to assume --no-unlogged-table-data automatically.
- Fix pg_upgrade to deal with invalid indexes safely
- Fix pg_upgrade's -O/-o options
- Fix one-byte buffer overrun in libpq's PQprintTuples
- This ancient function is not used anywhere by PostgreSQL itself, but it might still be used by some client code.
- Make ecpglib use translated messages properly
- Properly install ecpg_compat and pgtypes libraries on MSVC
- Include our version of isinf() in libecpg if it's not provided by the system
- Rearrange configure's tests for supplied functions so it is not fooled by bogus exports from libedit/libreadline
- Ensure Windows build number increases over time
- Make pgxs build executables with the right .exe suffix when cross-compiling for Windows
- Add new timezone abbreviation FET
- This is now used in some eastern-European time zones.
更新時間:2013-02-10
更新細節:
What's new in this version:
Changes:
- Prevent execution of enum_recv from SQL
- The function was misdeclared, allowing a simple SQL command to crash the server. In principle an attacker might be able to use it to examine the contents of server memory.
- Fix multiple problems in detection of when a consistent database state has been reached during WAL replay
- Fix detection of end-of-backup point when no actual redo work is required
- This mistake could result in incorrect "WAL ends before end of online backup" errors.
- Update minimum recovery point when truncating a relation file
- Once data has been discarded, it's no longer safe to stop recovery at an earlier point in the timeline.
- Fix recycling of WAL segments after changing recovery target timeline
- Properly restore timeline history files from archive on cascading standby servers
- Fix lock conflict detection on hot-standby servers
- Fix missing cancellations in hot standby mode
- The need to cancel conflicting hot-standby queries would sometimes be missed, allowing those queries to see inconsistent data.
- Prevent recovery pause feature from pausing before users can connect
- Fix SQL grammar to allow subscripting or field selection from a sub-SELECT result
- Fix performance problems with autovacuum truncation in busy workloads
- Truncation of empty pages at the end of a table requires exclusive lock, but autovacuum was coded to fail (and release the table lock) when there are conflicting lock requests. Under load, it is easily possible that truncation would never occur, resulting in table bloat. Fix by performing a partial truncation, releasing the lock, then attempting to re-acquire the lock and continue. This fix also greatly reduces the average time before autovacuum releases the lock after a conflicting request arrives.
- Improve performance of SPI_execute and related functions, thereby improving PL/pgSQL's EXECUTE
- Remove some data-copying overhead that was added in 9.2 as a consequence of revisions in the plan caching mechanism. This eliminates a performance regression compared to 9.1, and also saves memory, especially when the query string to be executed contains many SQL statements.
- A side benefit is that multi-statement query strings are now processed fully serially, that is we complete execution of earlier statements before running parse analysis and planning on the following ones. This eliminates a long-standing issue, in that DDL that should affect the behavior of a later statement will now behave as expected.
- Restore pre-9.2 cost estimates for index usage
- An ill-considered change of a fudge factor led to undesirably high cost estimates for use of very large indexes.
- Fix intermittent crash in DROP INDEX CONCURRENTLY
- Fix potential corruption of shared-memory lock table during CREATE/DROP INDEX CONCURRENTLY
- Fix COPY's multiple-tuple-insertion code for the case of a tuple larger than page size minus fillfactor
- The previous coding could get into an infinite loop.
- Protect against race conditions when scanning pg_tablespace
- CREATE DATABASE and DROP DATABASE could misbehave if there were concurrent updates of pg_tablespace entries.
- Prevent DROP OWNED from trying to drop whole databases or tablespaces
- For safety, ownership of these objects must be reassigned, not dropped.
- Fix error in vacuum_freeze_table_age implementation (Andres Freund)
- The main consequence of this mistake is that lowering vacuum_freeze_min_age would cause full-table vacuuming scans to occur much more frequently than intended.
- Prevent misbehavior when a RowExpr or XmlExpr is parse-analyzed twice
- This mistake could be user-visible in contexts such as CREATE TABLE LIKE INCLUDING INDEXES.
- Improve defenses against integer overflow in hashtable sizing calculations
- Fix some bugs associated with privileges on datatypes
- There were some issues with default privileges for types, and pg_dump failed to dump such privileges at all.
- Fix failure to ignore leftover temporary tables after a server crash
- Fix failure to rotate postmaster log files for size reasons on Windows
- Reject out-of-range dates in to_date()
- Fix pg_extension_config_dump() to handle extension-update cases properly
- This function will now replace any existing entry for the target table, making it usable in extension update scripts.
- Fix PL/pgSQL's reporting of plan-time errors in possibly-simple expressions
- The previous coding resulted in sometimes omitting the first line in the CONTEXT traceback for the error.
- Fix PL/Python's handling of functions used as triggers on multiple tables
- Ensure that non-ASCII prompt strings are translated to the correct code page on Windows
- This bug affected psql and some other client programs.
- Fix possible crash in psql's ? command when not connected to a database
- Fix possible error if a relation file is removed while pg_basebackup is running
- Tolerate timeline switches while pg_basebackup -X fetch is backing up a standby server
- Make pg_dump exclude data of unlogged tables when running on a hot-standby server
- This would fail anyway because the data is not available on the standby server, so it seems most convenient to assume --no-unlogged-table-data automatically.
- Fix pg_upgrade to deal with invalid indexes safely
- Fix pg_upgrade's -O/-o options
- Fix one-byte buffer overrun in libpq's PQprintTuples
- This ancient function is not used anywhere by PostgreSQL itself, but it might still be used by some client code.
- Make ecpglib use translated messages properly
- Properly install ecpg_compat and pgtypes libraries on MSVC
- Include our version of isinf() in libecpg if it's not provided by the system
- Rearrange configure's tests for supplied functions so it is not fooled by bogus exports from libedit/libreadline
- Ensure Windows build number increases over time
- Make pgxs build executables with the right .exe suffix when cross-compiling for Windows
- Add new timezone abbreviation FET
- This is now used in some eastern-European time zones.
更新時間:2013-02-07
更新細節:
What's new in this version:
- Prevent execution of enum_recv from SQL (Tom Lane)
- The function was misdeclared, allowing a simple SQL command to crash the server. In principle an attacker might be able to use it to examine the contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) for reporting this issue. (CVE-2013-0255)
- Fix SQL grammar to allow subscripting or field selection from a sub-SELECT result (Tom Lane)
- Protect against race conditions when scanning pg_tablespace (Stephen Frost, Tom Lane)
- CREATE DATABASE and DROP DATABASE could misbehave if there were concurrent updates of pg_tablespace entries.
- Prevent DROP OWNED from trying to drop whole databases or tablespaces (Álvaro Herrera)
- For safety, ownership of these objects must be reassigned, not dropped.
- Prevent misbehavior when a RowExpr or XmlExpr is parse-analyzed twice (Andres Freund, Tom Lane)
- This mistake could be user-visible in contexts such as CREATE TABLE LIKE INCLUDING INDEXES.
- Improve defenses against integer overflow in hashtable sizing calculations (Jeff Davis)
- Ensure that non-ASCII prompt strings are translated to the correct code page on Windows (Alexander Law, Noah Misch)
- This bug affected psql and some other client programs.
- Fix possible crash in psql's ? command when not connected to a database (Meng Qingzhong)
- Fix one-byte buffer overrun in libpq's PQprintTuples (Xi Wang)
- This ancient function is not used anywhere by PostgreSQL itself, but it might still be used by some client code.
- Rearrange configure's tests for supplied functions so it is not fooled by bogus exports from libedit/libreadline (Christoph Berg)
- Ensure Windows build number increases over time (Magnus Hagander)
- Make pgxs build executables with the right .exe suffix when cross-compiling for Windows (Zoltan Boszormenyi)
- Add new timezone abbreviation FET (Tom Lane)
- This is now used in some eastern-European time zones.
更新時間:2012-12-07
更新細節:
What's new in this version:
Changes:
* Fix multiple bugs associated with CREATE/DROP INDEX CONCURRENTLY
- An error introduced while adding DROP INDEX CONCURRENTLY allowed incorrect indexing decisions to be made during the initial phase of CREATE INDEX CONCURRENTLY; so that indexes built by that command could be corrupt. It is recommended that indexes built in 9.2.X with CREATE INDEX CONCURRENTLY be rebuilt after applying this update.
- In addition, fix CREATE/DROP INDEX CONCURRENTLY to use in-place updates when changing the state of an index's pg_index row. This prevents race conditions that could cause concurrent sessions to miss updating the target index, thus again resulting in corrupt concurrently-created indexes.
- Also, fix various other operations to ensure that they ignore invalid indexes resulting from a failed CREATE INDEX CONCURRENTLY command. The most important of these is VACUUM, because an auto-vacuum could easily be launched on the table before corrective action can be taken to fix or remove the invalid index.
- Also fix DROP INDEX CONCURRENTLY to not disable insertions into the target index until all queries using it are done.
- Also fix misbehavior if DROP INDEX CONCURRENTLY is canceled: the previous coding could leave an un-droppable index behind.
* Correct predicate locking for DROP INDEX CONCURRENTLY
- Previously, SSI predicate locks were processed at the wrong time, possibly leading to incorrect behavior of serializable transactions executing in parallel with the DROP.
* Fix buffer locking during WAL replay
- The WAL replay code was insufficiently careful about locking buffers when replaying WAL records that affect more than one page. This could result in hot standby queries transiently seeing inconsistent states, resulting in wrong answers or unexpected failures.
* Fix an error in WAL generation logic for GIN indexes
- This could result in index corruption, if a torn-page failure occurred.
* Fix an error in WAL replay logic for SP-GiST indexes
- This could result in index corruption after a crash, or on a standby server.
* Fix incorrect detection of end-of-base-backup location during WAL recovery
- This mistake allowed hot standby mode to start up before the database reaches a consistent state.
* Properly remove startup process's virtual XID lock when promoting a hot standby server to normal running
- This oversight could prevent subsequent execution of certain operations such as CREATE INDEX CONCURRENTLY.
* Avoid bogus "out-of-sequence timeline ID" errors in standby mode
* Prevent the postmaster from launching new child processes after it's received a shutdown signal
- This mistake could result in shutdown taking longer than it should, or even never completing at all without additional user action.
* Fix the syslogger process to not fail when log_rotation_age exceeds 2^31 milliseconds (about 25 days)
* Fix WaitLatch() to return promptly when the requested timeout expires
- With the previous coding, a steady stream of non-wait-terminating interrupts could delay return from WaitLatch() indefinitely. This has been shown to be a problem for the autovacuum launcher process, and might cause trouble elsewhere as well.
* Avoid corruption of internal hash tables when out of memory
* Prevent file descriptors for dropped tables from being held open past transaction end
- This should reduce problems with long-since-dropped tables continuing to occupy disk space.
* Prevent database-wide crash and restart when a new child process is unable to create a pipe for its latch
- Although the new process must fail, there is no good reason to force a database-wide restart, so avoid that. This improves robustness when the kernel is nearly out of file descriptors.
* Avoid planner crash with joins to unflattened subqueries
* Fix planning of non-strict equivalence clauses above outer joins
- The planner could derive incorrect constraints from a clause equating a non-strict construct to something else, for example WHERE COALESCE(foo, 0) = 0 when foo is coming from the nullable side of an outer join. 9.2 showed this type of error in more cases than previous releases, but the basic bug has been there for a long time.
* Fix SELECT DISTINCT with index-optimized MIN/MAX on an inheritance tree
- The planner would fail with "failed to re-find MinMaxAggInfo record" given this combination of factors.
* Make sure the planner sees implicit and explicit casts as equivalent for all purposes, except in the minority of cases where there's actually a semantic difference
* Include join clauses when considering whether partial indexes can be used for a query
- A strict join clause can be sufficient to establish an x IS NOT NULL predicate, for example. This fixes a planner regression in 9.2, since previous versions could make comparable deductions.
* Limit growth of planning time when there are many indexable join clauses for the same index
* Improve planner's ability to prove exclusion constraints from equivalence classes
* Fix partial-row matching in hashed subplans to handle cross-type cases correctly
- This affects multicolumn NOT IN subplans, such as WHERE (a, b) NOT IN (SELECT x, y FROM ...) when for instance b and y are int4 and int8 respectively. This mistake led to wrong answers or crashes depending on the specific datatypes involved.
* Fix btree mark/restore functions to handle array keys
- This oversight could result in wrong answers from merge joins whose inner side is an index scan using an indexed_column = ANY(array) condition.
* Revert patch for taking fewer snapshots
- The 9.2 change to reduce the number of snapshots taken during query execution led to some anomalous behaviors not seen in previous releases, because execution would proceed with a snapshot acquired before locking the tables used by the query. Thus, for example, a query would not be guaranteed to see updates committed by a preceding transaction even if that transaction had exclusive lock. We'll probably revisit this in future releases, but meanwhile put it back the way it was before 9.2.
* Acquire buffer lock when re-fetching the old tuple for an AFTER ROW UPDATE/DELETE trigger
- In very unusual circumstances, this oversight could result in passing incorrect data to a trigger WHEN condition, or to the precheck logic for a foreign-key enforcement trigger. That could result in a crash, or in an incorrect decision about whether to fire the trigger.
* Fix ALTER COLUMN TYPE to handle inherited check constraints properly
- This worked correctly in pre-8.4 releases, and now works correctly in 8.4 and later.
* Fix ALTER EXTENSION SET SCHEMA's failure to move some subsidiary objects into the new schema
* Handle CREATE TABLE AS EXECUTE correctly in extended query protocol
* Don't modify the input parse tree in DROP RULE IF NOT EXISTS and DROP TRIGGER IF NOT EXISTS
- This mistake would cause errors if a cached statement of one of these types was re-executed.
* Fix REASSIGN OWNED to handle grants on tablespaces
* Ignore incorrect pg_attribute entries for system columns for views
- Views do not have any system columns. However, we forgot to remove such entries when converting a table to a view. That's fixed properly for 9.3 and later, but in previous branches we need to defend against existing mis-converted views.
* Fix rule printing to dump INSERT INTO table DEFAULT VALUES correctly
* Guard against stack overflow when there are too many UNION/INTERSECT/EXCEPT clauses in a query
* Prevent platform-dependent failures when dividing the minimum possible integer value by -1
* Fix possible access past end of string in date parsing
* Fix failure to advance XID epoch if XID wraparound happens during a checkpoint and wal_level is hot_standby
- While this mistake had no particular impact on PostgreSQL itself, it was bad for applications that rely on txid_current() and related functions: the TXID value would appear to go backwards.
* Fix pg_terminate_backend() and pg_cancel_backend() to not throw error for a non-existent target process
- This case already worked as intended when called by a superuser, but not so much when called by ordinary users.
* Fix display of pg_stat_replication.sync_state at a page boundary
* Produce an understandable error message if the length of the path name for a Unix-domain socket exceeds the platform-specific limit
- Formerly, this would result in something quite unhelpful, such as "Non-recoverable failure in name resolution".
* Fix memory leaks when sending composite column values to the client
* Save some cycles by not searching for subtransaction locks at commit
- In a transaction holding many exclusive locks, this useless activity could be quite costly.
* Make pg_ctl more robust about reading the postmaster.pid file
- This fixes race conditions and possible file descriptor leakage.
* Fix possible crash in psql if incorrectly-encoded data is presented and the client_encoding setting is a client-only encoding, such as SJIS
* Make pg_dump dump SEQUENCE SET items in the data not pre-data section of the archive
- This fixes an undesirable inconsistency between the meanings of --data-only and --section=data, and also fixes dumping of sequences that are marked as extension configuration tables.
* Fix pg_dump's handling of DROP DATABASE commands in --clean mode
- Beginning in 9.2.0, pg_dump --clean would issue a DROP DATABASE command, which was either useless or dangerous depending on the usage scenario. It no longer does that. This change also fixes the combination of --clean and --create to work sensibly, i.e., emit DROP DATABASE then CREATE DATABASE before reconnecting to the target database.
* Fix pg_dump for views with circular dependencies and no relation options
- The previous fix to dump relation options when a view is involved in a circular dependency didn't work right for the case that the view has no options; it emitted ALTER VIEW foo SET () which is invalid syntax.
* Fix bugs in the restore.sql script emitted by pg_dump in tar output format
- The script would fail outright on tables whose names include upper-case characters. Also, make the script capable of restoring data in --inserts mode as well as the regular COPY mode.
* Fix pg_restore to accept POSIX-conformant tar files
- The original coding of pg_dump's tar output mode produced files that are not fully conformant with the POSIX standard. This has been corrected for version 9.3. This patch updates previous branches so that they will accept both the incorrect and the corrected formats, in hopes of avoiding compatibility problems when 9.3 comes out.
* Fix tar files emitted by pg_basebackup to be POSIX conformant
* Fix pg_resetxlog to locate postmaster.pid correctly when given a relative path to the data directory
- This mistake could lead to pg_resetxlog not noticing that there is an active postmaster using the data directory.
* Fix libpq's lo_import() and lo_export() functions to report file I/O errors properly
* Fix ecpg's processing of nested structure pointer variables
* Fix ecpg's ecpg_get_data function to handle arrays properly
* Prevent pg_upgrade from trying to process TOAST tables for system catalogs
- This fixes an error seen when the information_schema has been dropped and recreated. Other failures were also possible.
* Improve pg_upgrade performance by setting synchronous_commit to off in the new cluster
* Make contrib/pageinspect's btree page inspection functions take buffer locks while examining pages
* Work around unportable behavior of malloc(0) and realloc(NULL, 0)
- On platforms where these calls return NULL, some code mistakenly thought that meant out-of-memory. This is known to have broken pg_dump for databases containing no user-defined aggregates. There might be other cases as well.
* Ensure that make install for an extension creates the extension installation directory
- Previously, this step was missed if MODULEDIR was set in the extension's Makefile.
* Fix pgxs support for building loadable modules on AIX
- Building modules outside the original source tree didn't work on AIX.
* Update time zone data files to tzdata release 2012j for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western Samoa, and portions of Brazil.
更新時間:2012-12-07
更新細節:
What's new in this version:
Changes:
* Fix multiple bugs associated with CREATE/DROP INDEX CONCURRENTLY
- An error introduced while adding DROP INDEX CONCURRENTLY allowed incorrect indexing decisions to be made during the initial phase of CREATE INDEX CONCURRENTLY; so that indexes built by that command could be corrupt. It is recommended that indexes built in 9.2.X with CREATE INDEX CONCURRENTLY be rebuilt after applying this update.
- In addition, fix CREATE/DROP INDEX CONCURRENTLY to use in-place updates when changing the state of an index's pg_index row. This prevents race conditions that could cause concurrent sessions to miss updating the target index, thus again resulting in corrupt concurrently-created indexes.
- Also, fix various other operations to ensure that they ignore invalid indexes resulting from a failed CREATE INDEX CONCURRENTLY command. The most important of these is VACUUM, because an auto-vacuum could easily be launched on the table before corrective action can be taken to fix or remove the invalid index.
- Also fix DROP INDEX CONCURRENTLY to not disable insertions into the target index until all queries using it are done.
- Also fix misbehavior if DROP INDEX CONCURRENTLY is canceled: the previous coding could leave an un-droppable index behind.
* Correct predicate locking for DROP INDEX CONCURRENTLY
- Previously, SSI predicate locks were processed at the wrong time, possibly leading to incorrect behavior of serializable transactions executing in parallel with the DROP.
* Fix buffer locking during WAL replay
- The WAL replay code was insufficiently careful about locking buffers when replaying WAL records that affect more than one page. This could result in hot standby queries transiently seeing inconsistent states, resulting in wrong answers or unexpected failures.
* Fix an error in WAL generation logic for GIN indexes
- This could result in index corruption, if a torn-page failure occurred.
* Fix an error in WAL replay logic for SP-GiST indexes
- This could result in index corruption after a crash, or on a standby server.
* Fix incorrect detection of end-of-base-backup location during WAL recovery
- This mistake allowed hot standby mode to start up before the database reaches a consistent state.
* Properly remove startup process's virtual XID lock when promoting a hot standby server to normal running
- This oversight could prevent subsequent execution of certain operations such as CREATE INDEX CONCURRENTLY.
* Avoid bogus "out-of-sequence timeline ID" errors in standby mode
* Prevent the postmaster from launching new child processes after it's received a shutdown signal
- This mistake could result in shutdown taking longer than it should, or even never completing at all without additional user action.
* Fix the syslogger process to not fail when log_rotation_age exceeds 2^31 milliseconds (about 25 days)
* Fix WaitLatch() to return promptly when the requested timeout expires
- With the previous coding, a steady stream of non-wait-terminating interrupts could delay return from WaitLatch() indefinitely. This has been shown to be a problem for the autovacuum launcher process, and might cause trouble elsewhere as well.
* Avoid corruption of internal hash tables when out of memory
* Prevent file descriptors for dropped tables from being held open past transaction end
- This should reduce problems with long-since-dropped tables continuing to occupy disk space.
* Prevent database-wide crash and restart when a new child process is unable to create a pipe for its latch
- Although the new process must fail, there is no good reason to force a database-wide restart, so avoid that. This improves robustness when the kernel is nearly out of file descriptors.
* Avoid planner crash with joins to unflattened subqueries
* Fix planning of non-strict equivalence clauses above outer joins
- The planner could derive incorrect constraints from a clause equating a non-strict construct to something else, for example WHERE COALESCE(foo, 0) = 0 when foo is coming from the nullable side of an outer join. 9.2 showed this type of error in more cases than previous releases, but the basic bug has been there for a long time.
* Fix SELECT DISTINCT with index-optimized MIN/MAX on an inheritance tree
- The planner would fail with "failed to re-find MinMaxAggInfo record" given this combination of factors.
* Make sure the planner sees implicit and explicit casts as equivalent for all purposes, except in the minority of cases where there's actually a semantic difference
* Include join clauses when considering whether partial indexes can be used for a query
- A strict join clause can be sufficient to establish an x IS NOT NULL predicate, for example. This fixes a planner regression in 9.2, since previous versions could make comparable deductions.
* Limit growth of planning time when there are many indexable join clauses for the same index
* Improve planner's ability to prove exclusion constraints from equivalence classes
* Fix partial-row matching in hashed subplans to handle cross-type cases correctly
- This affects multicolumn NOT IN subplans, such as WHERE (a, b) NOT IN (SELECT x, y FROM ...) when for instance b and y are int4 and int8 respectively. This mistake led to wrong answers or crashes depending on the specific datatypes involved.
* Fix btree mark/restore functions to handle array keys
- This oversight could result in wrong answers from merge joins whose inner side is an index scan using an indexed_column = ANY(array) condition.
* Revert patch for taking fewer snapshots
- The 9.2 change to reduce the number of snapshots taken during query execution led to some anomalous behaviors not seen in previous releases, because execution would proceed with a snapshot acquired before locking the tables used by the query. Thus, for example, a query would not be guaranteed to see updates committed by a preceding transaction even if that transaction had exclusive lock. We'll probably revisit this in future releases, but meanwhile put it back the way it was before 9.2.
* Acquire buffer lock when re-fetching the old tuple for an AFTER ROW UPDATE/DELETE trigger
- In very unusual circumstances, this oversight could result in passing incorrect data to a trigger WHEN condition, or to the precheck logic for a foreign-key enforcement trigger. That could result in a crash, or in an incorrect decision about whether to fire the trigger.
* Fix ALTER COLUMN TYPE to handle inherited check constraints properly
- This worked correctly in pre-8.4 releases, and now works correctly in 8.4 and later.
* Fix ALTER EXTENSION SET SCHEMA's failure to move some subsidiary objects into the new schema
* Handle CREATE TABLE AS EXECUTE correctly in extended query protocol
* Don't modify the input parse tree in DROP RULE IF NOT EXISTS and DROP TRIGGER IF NOT EXISTS
- This mistake would cause errors if a cached statement of one of these types was re-executed.
* Fix REASSIGN OWNED to handle grants on tablespaces
* Ignore incorrect pg_attribute entries for system columns for views
- Views do not have any system columns. However, we forgot to remove such entries when converting a table to a view. That's fixed properly for 9.3 and later, but in previous branches we need to defend against existing mis-converted views.
* Fix rule printing to dump INSERT INTO table DEFAULT VALUES correctly
* Guard against stack overflow when there are too many UNION/INTERSECT/EXCEPT clauses in a query
* Prevent platform-dependent failures when dividing the minimum possible integer value by -1
* Fix possible access past end of string in date parsing
* Fix failure to advance XID epoch if XID wraparound happens during a checkpoint and wal_level is hot_standby
- While this mistake had no particular impact on PostgreSQL itself, it was bad for applications that rely on txid_current() and related functions: the TXID value would appear to go backwards.
* Fix pg_terminate_backend() and pg_cancel_backend() to not throw error for a non-existent target process
- This case already worked as intended when called by a superuser, but not so much when called by ordinary users.
* Fix display of pg_stat_replication.sync_state at a page boundary
* Produce an understandable error message if the length of the path name for a Unix-domain socket exceeds the platform-specific limit
- Formerly, this would result in something quite unhelpful, such as "Non-recoverable failure in name resolution".
* Fix memory leaks when sending composite column values to the client
* Save some cycles by not searching for subtransaction locks at commit
- In a transaction holding many exclusive locks, this useless activity could be quite costly.
* Make pg_ctl more robust about reading the postmaster.pid file
- This fixes race conditions and possible file descriptor leakage.
* Fix possible crash in psql if incorrectly-encoded data is presented and the client_encoding setting is a client-only encoding, such as SJIS
* Make pg_dump dump SEQUENCE SET items in the data not pre-data section of the archive
- This fixes an undesirable inconsistency between the meanings of --data-only and --section=data, and also fixes dumping of sequences that are marked as extension configuration tables.
* Fix pg_dump's handling of DROP DATABASE commands in --clean mode
- Beginning in 9.2.0, pg_dump --clean would issue a DROP DATABASE command, which was either useless or dangerous depending on the usage scenario. It no longer does that. This change also fixes the combination of --clean and --create to work sensibly, i.e., emit DROP DATABASE then CREATE DATABASE before reconnecting to the target database.
* Fix pg_dump for views with circular dependencies and no relation options
- The previous fix to dump relation options when a view is involved in a circular dependency didn't work right for the case that the view has no options; it emitted ALTER VIEW foo SET () which is invalid syntax.
* Fix bugs in the restore.sql script emitted by pg_dump in tar output format
- The script would fail outright on tables whose names include upper-case characters. Also, make the script capable of restoring data in --inserts mode as well as the regular COPY mode.
* Fix pg_restore to accept POSIX-conformant tar files
- The original coding of pg_dump's tar output mode produced files that are not fully conformant with the POSIX standard. This has been corrected for version 9.3. This patch updates previous branches so that they will accept both the incorrect and the corrected formats, in hopes of avoiding compatibility problems when 9.3 comes out.
* Fix tar files emitted by pg_basebackup to be POSIX conformant
* Fix pg_resetxlog to locate postmaster.pid correctly when given a relative path to the data directory
- This mistake could lead to pg_resetxlog not noticing that there is an active postmaster using the data directory.
* Fix libpq's lo_import() and lo_export() functions to report file I/O errors properly
* Fix ecpg's processing of nested structure pointer variables
* Fix ecpg's ecpg_get_data function to handle arrays properly
* Prevent pg_upgrade from trying to process TOAST tables for system catalogs
- This fixes an error seen when the information_schema has been dropped and recreated. Other failures were also possible.
* Improve pg_upgrade performance by setting synchronous_commit to off in the new cluster
* Make contrib/pageinspect's btree page inspection functions take buffer locks while examining pages
* Work around unportable behavior of malloc(0) and realloc(NULL, 0)
- On platforms where these calls return NULL, some code mistakenly thought that meant out-of-memory. This is known to have broken pg_dump for databases containing no user-defined aggregates. There might be other cases as well.
* Ensure that make install for an extension creates the extension installation directory
- Previously, this step was missed if MODULEDIR was set in the extension's Makefile.
* Fix pgxs support for building loadable modules on AIX
- Building modules outside the original source tree didn't work on AIX.
* Update time zone data files to tzdata release 2012j for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western Samoa, and portions of Brazil.
更新時間:2012-09-25
更新細節:
What's new in this version:
- Fix persistence marking of shared buffers during WAL replay
- Fix possible incorrect sorting of output from queries involving WHERE indexed_column IN (list_of_values)
- Fix planner failure for queries involving GROUP BY expressions along with window functions and aggregates
- Fix planner's assignment of executor parameters
- This error could result in wrong answers from queries that scan the same WITH subquery multiple times.
- Improve planner's handling of join conditions in index scans
- Improve selectivity estimation for text search queries involving prefixes, i.e. word:* patterns
- Fix delayed recognition of permissions changes
- A command that needed no locks other than ones its transaction already had might fail to notice a concurrent GRANT or REVOKE that committed since the start of its transaction.
- Fix ANALYZE to not fail when a column is a domain over an array type
- Prevent PL/Perl from crashing if a recursive PL/Perl function is redefined while being executed
- Work around possible misoptimization in PL/Perl
- Some Linux distributions contain an incorrect version of pthread.h that results in incorrect compiled code in PL/Perl, leading to crashes if a PL/Perl function calls another one that throws an error.
- Remove unnecessary dependency on pg_config from pg_upgrade
- Update time zone data files to tzdata release 2012f for DST law changes in Fiji
更新時間:2012-09-25
更新細節:
What's new in this version:
- Fix persistence marking of shared buffers during WAL replay
- Fix possible incorrect sorting of output from queries involving WHERE indexed_column IN (list_of_values)
- Fix planner failure for queries involving GROUP BY expressions along with window functions and aggregates
- Fix planner's assignment of executor parameters
- This error could result in wrong answers from queries that scan the same WITH subquery multiple times.
- Improve planner's handling of join conditions in index scans
- Improve selectivity estimation for text search queries involving prefixes, i.e. word:* patterns
- Fix delayed recognition of permissions changes
- A command that needed no locks other than ones its transaction already had might fail to notice a concurrent GRANT or REVOKE that committed since the start of its transaction.
- Fix ANALYZE to not fail when a column is a domain over an array type
- Prevent PL/Perl from crashing if a recursive PL/Perl function is redefined while being executed
- Work around possible misoptimization in PL/Perl
- Some Linux distributions contain an incorrect version of pthread.h that results in incorrect compiled code in PL/Perl, leading to crashes if a PL/Perl function calls another one that throws an error.
- Remove unnecessary dependency on pg_config from pg_upgrade
- Update time zone data files to tzdata release 2012f for DST law changes in Fiji
更新時間:2012-09-11
更新細節:
What's new in this version:
- Allow queries to retrieve data only from indexes, avoiding heap access (index-only scans)
- Allow the planner to generate custom plans for specific parameter values even when using prepared statements
- Improve the planner's ability to use nested loops with inner index scans
- Allow streaming replication slaves to forward data to other slaves (cascading replication)
- Allow pg_basebackup to make base backups from standby servers
- Add a pg_receivexlog tool to archive WAL file changes as they are written
- Add the SP-GiST (Space-Partitioned GiST) index access method
- Add support for range data types
- Add a JSON data type
- Add a security_barrier option for views
- Allow libpq connection strings to have the format of a URI
- Add a single-row processing mode to libpq for better handling of large result sets
更新時間:2012-09-11
更新細節:
What's new in this version:
- Allow queries to retrieve data only from indexes, avoiding heap access (index-only scans)
- Allow the planner to generate custom plans for specific parameter values even when using prepared statements
- Improve the planner's ability to use nested loops with inner index scans
- Allow streaming replication slaves to forward data to other slaves (cascading replication)
- Allow pg_basebackup to make base backups from standby servers
- Add a pg_receivexlog tool to archive WAL file changes as they are written
- Add the SP-GiST (Space-Partitioned GiST) index access method
- Add support for range data types
- Add a JSON data type
- Add a security_barrier option for views
- Allow libpq connection strings to have the format of a URI
- Add a single-row processing mode to libpq for better handling of large result sets
更新時間:2012-08-20
更新細節:
What's new in this version:
- Prevent access to external files/URLs via XML entity references
- Prevent access to external files/URLs via contrib/xml2's xslt_process()
- Prevent too-early recycling of btree index pages
- Fix crash-safety bug with newly-created-or-reset sequences
- Fix race condition in enum-type value comparisons
- Fix txid_current() to report the correct epoch when not in hot standby
- Prevent selection of unsuitable replication connections as the synchronous standby
- Fix bug in startup of Hot Standby when a master transaction has many subtransactions
- Ensure the backup_label file is fsync'd after pg_start_backup()
- Fix timeout handling in walsender processes
- Wake walsenders after each background flush by walwriter
- Fix LISTEN/NOTIFY to cope better with I/O problems, such as out of disk space
- Only allow autovacuum to be auto-canceled by a directly blocked process
- Improve logging of autovacuum cancels
- Fix log collector so that log_truncate_on_rotation works during the very first log rotation after server start
- Fix WITH attached to a nested set operation (UNION/INTERSECT/EXCEPT)
- Ensure that a whole-row reference to a subquery doesn't include any extra GROUP BY or ORDER BY columns
- Fix dependencies generated during ALTER TABLE ... ADD CONSTRAINT USING INDEX
- Fix REASSIGN OWNED to work on extensions
- Disallow copying whole-row references in CHECK constraints and index definitions during CREATE TABLE
- Fix memory leak in ARRAY(SELECT ...) subqueries
- Fix planner to pass correct collation to operator selectivity estimators
- Fix extraction of common prefixes from regular expressions
- Fix bugs with parsing signed hh:mm and hh:mm:ss fields in interval constants
- Fix pg_dump to better handle views containing partial GROUP BY lists
- In PL/Perl, avoid setting UTF8 flag when in SQL_ASCII encoding
- Use Postgres' encoding conversion functions, not Python's, when converting a Python Unicode string to the server encoding in PL/Python
- Fix mapping of PostgreSQL encodings to Python encodings in PL/Python
- Report errors properly in contrib/xml2's xslt_process()
- Update time zone data files to tzdata release 2012e for DST law changes in Morocco and Tokelau