PostgreSQL 歷史版本列表
PostgreSQL 是一個跨平台的對象關係型數據庫管理系統,自 1995 年首次發布以來,已經成長為國際知名的解決方案,可幫助管理員輕鬆創建,組織,管理和部署各種形狀和大小的項目數據庫。這當然包括對運行 SQL 查詢,觸發管理,屬性管理以及其他企業級數據庫管理系統當前正在使用的所有功能的全面控制。為使日常管理多個作業和項目組件的管理員更容易訪問,PostgreSQL 符合大多數 SQL 2008... PostgreSQL 軟體介紹PostgreSQL (32-bit)PostgreSQL (64-bit)
更新時間:2018-08-09
更新細節:
What's new in this version:
Changes:
- Fix failure to reset libpq's state fully between connection attempts (Tom Lane)
- An unprivileged user of dblink or postgres_fdw could bypass the checks intended to prevent use of server-side credentials, such as a ~/.pgpass file owned by the operating-system user running the server. Servers allowing peer authentication on local connections are particularly vulnerable. Other attacks such as SQL injection into a postgres_fdw session are also possible. Attacking postgres_fdw in this way requires the ability to create a foreign server object with selected connection parameters, but any user with access to dblink could exploit the problem. In general, an attacker with the ability to select the connection parameters for a libpq-using application could cause mischief, though other plausible attack scenarios are harder to think of. Our thanks to Andrew Krasichkov for reporting this issue. (CVE-2018-10915)
- Fix INSERT ... ON CONFLICT UPDATE through a view that isn't just SELECT * FROM ... (Dean Rasheed, Amit Langote)
- Erroneous expansion of an updatable view could lead to crashes or “attribute ... has the wrong type” errors, if the view's SELECT list doesn't match one-to-one with the underlying table's columns. Furthermore, this bug could be leveraged to allow updates of columns that an attacking user lacks UPDATE privilege for, if that user has INSERT and UPDATE privileges for some other column(s) of the table. Any user could also use it for disclosure of server memory. (CVE-2018-10925)
- Ensure that updates to the relfrozenxid and relminmxid values for “nailed” system catalogs are processed in a timely fashion (Andres Freund)
- Overoptimistic caching rules could prevent these updates from being seen by other sessions, leading to spurious errors and/or data corruption. The problem was significantly worse for shared catalogs, such as pg_authid, because the stale cache data could persist into new sessions as well as existing ones.
- Fix case where a freshly-promoted standby crashes before having completed its first post-recovery checkpoint (Michael Paquier, Kyotaro Horiguchi, Pavan Deolasee, Álvaro Herrera)
- This led to a situation where the server did not think it had reached a consistent database state during subsequent WAL replay, preventing restart
- Avoid emitting a bogus WAL record when recycling an all-zero btree page (Amit Kapila)
- This mistake has been seen to cause assertion failures, and potentially it could result in unnecessary query cancellations on hot standby servers
- During WAL replay, guard against corrupted record lengths exceeding 1GB (Michael Paquier)
- Treat such a case as corrupt data. Previously, the code would try to allocate space and get a hard error, making recovery impossible
- When ending recovery, delay writing the timeline history file as long as possible (Heikki Linnakangas)
- This avoids some situations where a failure during recovery cleanup (such as a problem with a two-phase state file) led to inconsistent timeline state on-disk.
- Improve performance of WAL replay for transactions that drop many relations (Fujii Masao)
- This change reduces the number of times that shared buffers are scanned, so that it is of most benefit when that setting is large.
- Improve performance of lock releasing in standby server WAL replay (Thomas Munro)
- Make logical WAL senders report streaming state correctly (Simon Riggs, Sawada Masahiko)
- The code previously mis-detected whether or not it had caught up with the upstream server
- Ensure that a snapshot is provided when executing data type input functions in logical replication subscribers (Minh-Quan Tran, Álvaro Herrera)
- This omission led to failures in some cases, such as domains with constraints using SQL-language functions.
- Fix bugs in snapshot handling during logical decoding, allowing wrong decoding results in rare cases (Arseny Sher, Álvaro Herrera)
- Add subtransaction handling in logical-replication table synchronization workers (Amit Khandekar, Robert Haas)
- Previously, table synchronization could misbehave if any subtransactions were aborted after modifying a table being synchronized
- Ensure a table's cached index list is correctly rebuilt after an index creation fails partway through (Peter Geoghegan)
- Previously, the failed index's OID could remain in the list, causing problems later in the same session
- Fix mishandling of empty uncompressed posting list pages in GIN indexes (Sivasubramanian Ramasubramanian, Alexander Korotkov)
- This could result in an assertion failure after pg_upgrade of a pre-9.4 GIN index (9.4 and later will not create such pages)
- Pad arrays of unnamed POSIX semaphores to reduce cache line sharing (Thomas Munro)
- This reduces contention on many-CPU systems, fixing a performance regression (compared to previous releases) on Linux and FreeBSD.
- Ensure that a process doing a parallel index scan will respond to signals (Amit Kapila)
- Previously, parallel workers could get stuck waiting for a lock on an index page, and not notice requests to abort the query
- Ensure that VACUUM will respond to signals within btree page deletion loops (Andres Freund)
- Corrupted btree indexes could result in an infinite loop here, and that previously wasn't interruptible without forcing a crash
- Fix hash-join costing mistake introduced with inner_unique optimization (David Rowley)
- This could lead to bad plan choices in situations where that optimization was applicable
- Fix misoptimization of equivalence classes involving composite-type columns (Tom Lane)
- This resulted in failure to recognize that an index on a composite column could provide the sort order needed for a mergejoin on that column.
- Fix planner to avoid “ORDER/GROUP BY expression not found in targetlist” errors in some queries with set-returning functions (Tom Lane)
- Fix handling of partition keys whose data type uses a polymorphic btree operator class, such as arrays (Amit Langote, Álvaro Herrera)
- Fix SQL-standard FETCH FIRST syntax to allow parameters ($n), as the standard expects (Andrew Gierth)
- Remove undocumented restriction against duplicate partition key columns (Yugo Nagata)
- Disallow temporary tables from being partitions of non-temporary tables (Amit Langote, Michael Paquier)
- While previously allowed, this case didn't work reliably.
- Fix EXPLAIN's accounting for resource usage, particularly buffer accesses, in parallel workers (Amit Kapila, Robert Haas)
- Fix SHOW ALL to show all settings to roles that are members of pg_read_all_settings, and also allow such roles to see source filename and line number in the pg_settings view (Laurenz Albe, Álvaro Herrera)
- Fix failure to schema-qualify some object names in getObjectDescription and getObjectIdentity output (Kyotaro Horiguchi, Tom Lane)
- Names of collations, conversions, text search objects, publication relations, and extended statistics objects were not schema-qualified when they should be.
- Fix CREATE AGGREGATE type checking so that parallelism support functions can be attached to variadic aggregates (Alexey Bashtanov)
- Widen COPY FROM's current-line-number counter from 32 to 64 bits (David Rowley)
- This avoids two problems with input exceeding 4G lines: COPY FROM WITH HEADER would drop a line every 4G lines, not only the first line, and error reports could show a wrong line number.
- Allow replication slots to be dropped in single-user mode (Álvaro Herrera)
- This use-case was accidentally broken in release 10.0.
- Fix incorrect results from variance(int4) and related aggregates when run in parallel aggregation mode (David Rowley)
- Process TEXT and CDATA nodes correctly in xmltable() column expressions (Markus Winand)
- Cope with possible failure of OpenSSL's RAND_bytes() function (Dean Rasheed, Michael Paquier)
- Under rare circumstances, this oversight could result in “could not generate random cancel key” failures that could only be resolved by restarting the postmaster.
- Fix libpq's handling of some cases where hostaddr is specified (Hari Babu, Tom Lane, Robert Haas)
- PQhost() gave misleading or incorrect results in some cases. Now, it uniformly returns the host name if specified, or the host address if only that is specified, or the default host name (typically /tmp or localhost) if both parameters are omitted.
- Also, the wrong value might be compared to the server name when verifying an SSL certificate.
- Also, the wrong value might be compared to the host name field in ~/.pgpass. Now, that field is compared to the host name if specified, or the host address if only that is specified, or localhost if both parameters are omitted.
- Also, an incorrect error message was reported for an unparseable hostaddr value.
- Also, when the host, hostaddr, or port parameters contain comma-separated lists, libpq is now more careful to treat empty elements of a list as selecting the default behavior.
- Add a string freeing function to ecpg's pgtypes library, so that cross-module memory management problems can be avoided on Windows (Takayuki Tsunakawa)
- On Windows, crashes can ensue if the free call for a given chunk of memory is not made from the same DLL that malloc'ed the memory. The pgtypes library sometimes returns strings that it expects the caller to free, making it impossible to follow this rule. Add a PGTYPESchar_free() function that just wraps free, allowing applications to follow this rule.
- Fix ecpg's support for long long variables on Windows, as well as other platforms that declare strtoll/strtoull nonstandardly or not at all (Dang Minh Huong, Tom Lane)
- Fix misidentification of SQL statement type in PL/pgSQL, when a rule change causes a change in the semantics of a statement intra-session (Tom Lane)
- This error led to assertion failures, or in rare cases, failure to enforce the INTO STRICT option as expected
- Fix password prompting in client programs so that echo is properly disabled on Windows when stdin is not the terminal (Matthew Stickney)
- Further fix mis-quoting of values for list-valued GUC variables in dumps (Tom Lane)
- The previous fix for quoting of search_path and other list-valued variables in pg_dump output turned out to misbehave for empty-string list elements, and it risked truncation of long file paths
- Fix pg_dump's failure to dump REPLICA IDENTITY properties for constraint indexes (Tom Lane)
- Manually created unique indexes were properly marked, but not those created by declaring UNIQUE or PRIMARY KEY constraints
- Make pg_upgrade check that the old server was shut down cleanly (Bruce Momjian)
- The previous check could be fooled by an immediate-mode shutdown
- Fix contrib/hstore_plperl to look through Perl scalar references, and to not crash if it doesn't find a hash reference where it expects one (Tom Lane)
- Fix crash in contrib/ltree's lca() function when the input array is empty (Pierre Ducroquet)
- Fix various error-handling code paths in which an incorrect error code might be reported (Michael Paquier, Tom Lane, Magnus Hagander)
- Rearrange makefiles to ensure that programs link to freshly-built libraries (such as libpq.so) rather than ones that might exist in the system library directories (Tom Lane)
- This avoids problems when building on platforms that supply old copies of PostgreSQL libraries
- Update time zone data files to tzdata release 2018e for DST law changes in North Korea, plus historical corrections for Czechoslovakia
- This update includes a redefinition of “daylight savings” in Ireland, as well as for some past years in Namibia and Czechoslovakia. In those jurisdictions, legally standard time is observed in summer, and daylight savings time in winter, so that the daylight savings offset is one hour behind standard time not one hour ahead. This does not affect either the actual UTC offset or the timezone abbreviations in use; the only known effect is that the is_dst column in the pg_timezone_names view will now be true in winter and false in summer in these cases
更新時間:2018-08-09
更新細節:
What's new in this version:
- Image size grows after tagging
- Crash on 'Bring to front'
- Fixed possible startup crash on MacOS
- Objects missing due to mis-detection of empty clip
- Support a key file being passed on the command line
- Infix runs out of memory during 'Problem Report'
- Crash when trying to open PDF with radial shade fill nesting within type 1 pattern
- Signature widgets were not being displayed
- Fixed crash which could occur after saving edited PDF
- OCR causes "Out of Memory"
- Infix - 'Hide All OCR Text' was not always hiding the text. No does all pages, even if they've not been edited. Takes longer but has progress dlg
- Fixed bug in resize pages which stopped it working
- Stop button during 'Problem Report' generation doesn't work
- A '0' value in prefs 'edit:batch size' will now cause the default '150' to be used instead
- Turned off start-up reminder about crash logs
更新時間:2018-06-18
更新細節:
更新時間:2018-05-22
更新細節:
What's new in this version:
- Added upper/lower case control to text-tagging dialog
- Fixed problem which could cause characters to be wrongly recognised as accents
- Infix crashes when you load LiveCycle PDF and then print. black checkboxes and other widget bugs.
- Better handling of radio button groups in interactive forms
- Form controls from deleted pages could appear on remaining pages
- Resize Pages wasn't working if you tried to resize some pages after first resizing others
- Improved handling of PDFs with no embedded fonts to fix problem of garbage characters
- Better handling of transparent, indexed, PNG images
- Better handling of InDesign small-caps modified fonts when exporting to other formats
- Improved display of Type 3 1-bit-per-component fonts
更新時間:2018-05-20
更新細節:
What's new in this version:
The main new feature of Vim 8.1 is support for running a terminal in a Vim window. This builds on top of the asynchronous features added in Vim 8.0. The terminal window can be used for many purposes, here are a few examples:
- Run a command, such as "make", while continuing to edit in other windows. The progress of the command can be observed, the terminal window is continuously updated.
- Run a shell where you can execute a series of commands.
- Use the new terminal debugger plugin for debugging inside Vim. This is especially useful over an ssh connection, when opening other terminals is not possible or impractical. I use this to fix problems in Vim when travelling.
- The terminal window is also used in tests, to grab a screenshot and compare it with the expected state. This allows for testing interactive actions, such as the popup menu.
更新時間:2018-05-11
更新細節:
What's new in this version:
Security Issues:
- Too-permissive access control list on function pg_logfile_rotate()
Bug Fixes and Improvements:
This update also fixes over 50 bugs reported in the last several months. Some of these issues affect only version 10, but many affect all supported versions. These fixes include:
- Fix incorrect volatility and parallel-safety markings on several built-in functions to ensure correct query planning optimizations
- Several fixes for partitioning, including potential crashes as well as allowing TRUE and FALSE to be used as partition bounds
- Fix where a new TOAST value could be assigned to a dead-but-not-yet-vacuumed TOAST OID, which would result in an error similar to "unexpected chunk number 0 (expected 1) for toast value nnnnn"
- Fix "CREATE TABLE ... LIKE" with bigint identity columns on 32-bit platforms
- Fix memory leak within the runtime of a query that repeatedly executes hash joins
- Several crash fixes around queries using GROUPING SET
- Avoid failure if a query-cancel or session-termination interrupt occurs while committing a prepared transaction
- Reduce locking during autovacuum worker scheduling, which prevents loss of potential worker concurrency
- Fix possible slow execution of REFRESH MATERIALIZED VIEW CONCURRENTLY
- Several fixes around query plans that use "index-only" scans
- Avoid deadlocks in concurrent CREATE INDEX CONCURRENTLY commands that are run under SERIALIZABLE or REPEATABLE READ transaction isolation
- Several fixes for SP-GiST indexes, including one collation-aware searches on text columns
- Fixes related to counting the number of tuples in partial GiST, SP-GiST, and Bloom indexes
- Several fixes for logical decoding and replication
- Fix misquoting of values for list-valued GUC variables (e.g. local_preload_libraries, session_preload_libraries, shared_preload_libraries, temp_tablespaces) in dumps
- Several fixes for pg_stat_activity
- Several fixes for ecpg
- Fix for pg_recvlogical to ensure compatibility with PostgreSQL versions released before 10
- Several fixes for pg_rewind
- This update also contains tzdata release 2018d, with updates for Palestine and Antarctica (Casey Station), plus historical corrections for Portugal and its colonies, as well as Enderbury, Jamaica, Turks & Caicos Islands, and Uruguay
更新時間:2018-04-21
更新細節:
更新時間:2018-03-01
更新細節:
更新時間:2018-02-08
更新細節:
What's new in this version:
- Fix crash and potential disclosure of backend memory when processing partition keys containing multiple expressions
- Fix potential disclosure of temporary files containing database passwords created by pg_upgrade by not allowing these files to be world-accessible
- Fix cases where VACUUM would not remove dead rows if they were updated while "key-share" locked, leading to potential data corruption
- Fix for GIN indexes to prevent bloat by ensuring the pending-insertions list is cleaned up by VACUUM
- Fix potential index corruption with hash indexes due to failure to mark metapages as dirty
- Fix several potential crash scenarios for parallel queries, including when a bitmap heap scan cannot allocate memory
- Fix several potential hang-ups in parallel queries, including when a parallel worker fails to start
- Fix collection of EXPLAIN statistics from parallel workers
- Prevent fake deadlock failures when multiple sessions are running CREATE INDEX CONCURRENTLY
- Fix for trigger behavior when using logical replication
- Several fixes for "walsender" functionality to improve stability as well as visibility into the replication process
- Fix logical decoding to correctly clean up disk files for crashed transactions
- Several fixes for identity columns, including disallowing identity columns on tables derived from composite types and partitions
- Fix handling of list partitioning constraints for partition keys of boolean and array types
- Fix incorrectly generated plans for UPDATE and DELETE queries when a table has a mix of inherited regular and foreign child tables
- Fix incorrect query results from cases involving GROUPING SETS when used with flattened subqueries
- Fix UNION/INTERSECT/EXCEPT over zero columns, e.g. "SELECT UNION SELECT;"
- Several fixes for subqueries within a LATERAL subquery
- Several improvements for query planning estimation
- Allow a client that supports SCRAM channel binding, such as a future version of PostgreSQL or libpq, to connect to a PostgreSQL 10 server
- Fix sample INSTR() functions used to help transition from Oracle(r) PL/SQL to PostgreSQL PL/pgSQL to correctly match Oracle functional behavior
- Fix pg_dump to make permissions (ACL), security label, and comment entries reliably identifiable in archive outputs
- Modify behavior for contrib/cube's "cube ~> int" operator to make it compatible with KNN search. This is a backwards incompatible change and any expression indexes or materialized views using this operator will need to be reindexed and refreshed, respectively.
- Several fixes in contrib/postgres_fdw to prevent query planner errors
- Added modern examples of auto-start scripts for PostgreSQL on macOS in the contrib/start-scripts/macos directory
- Several fixes for Windows, including postmaster startup and compatibility with libperl
- Spinlock fixes and support for Motorola 68K and 88K architectures
更新時間:2018-01-25
更新細節: