PostgreSQL 歷史版本列表
PostgreSQL 是一個跨平台的對象關係型數據庫管理系統,自 1995 年首次發布以來,已經成長為國際知名的解決方案,可幫助管理員輕鬆創建,組織,管理和部署各種形狀和大小的項目數據庫。這當然包括對運行 SQL 查詢,觸發管理,屬性管理以及其他企業級數據庫管理系統當前正在使用的所有功能的全面控制。為使日常管理多個作業和項目組件的管理員更容易訪問,PostgreSQL 符合大多數 SQL 2008... PostgreSQL 軟體介紹PostgreSQL (32-bit)PostgreSQL (64-bit)
更新時間:2019-07-31
更新細節:
更新時間:2019-06-21
更新細節:
What's new in this version:
- Fix buffer-overflow hazards in SCRAM verifier parsing.
- Any authenticated user could cause a stack-based buffer overflow by changing their own password to a purpose-crafted value. In addition to the ability to crash the PostgreSQL server, this could suffice for executing arbitrary code as the PostgreSQL operating system account.
- A similar overflow hazard existed in libpq, which could allow a rogue server to crash a client or perhaps execute arbitrary code as the client's operating system account.
- The PostgreSQL Project thanks Alexander Lakhin for reporting this problem.
- Fix assorted errors in run-time partition pruning logic.
- These mistakes could lead to wrong answers in queries on partitioned tables, if the comparison value used for pruning is dynamically determined, or if multiple range-partitioned columns are involved in pruning decisions, or if stable (not immutable) comparison operators are involved.
- Fix possible crash while trying to copy trigger definitions to a new partition.
- Fix failure of ALTER TABLE ... ALTER COLUMN TYPE when the table has a partial exclusion constraint.
- Fix failure of COMMENT command for comments on domain constraints
- Prevent possible memory clobber when there are duplicate columns in a hash aggregate's hash key list.
- Fix incorrect argument null-ness checking during partial aggregation of aggregates with zero or multiple arguments.
- Fix faulty generation of merge-append plans.
- This mistake could lead to “could not find pathkey item to sort” errors.
- Fix incorrect printing of queries with duplicate join names.
- This oversight caused a dump/restore failure for views containing such queries.
- Fix conversion of JSON string literals to JSON-type output columns in json_to_record() and json_populate_record().
- Such cases should produce the literal as a standalone JSON value, but the code misbehaved if the literal contained any characters requiring escaping.
- Fix misoptimization of {1,1} quantifiers in regular expressions.
- Such quantifiers were treated as no-ops and optimized away; but the documentation specifies that they impose greediness, or non-greediness in the case of the non-greedy variant {1,1}?, on the subexpression they're attached to, and this did not happen. The misbehavior occurred only if the subexpression contained capturing parentheses or a back-reference.
- Avoid writing an invalid empty btree index page in the unlikely case that a failure occurs while processing INCLUDEd columns during a page split.
- The invalid page would not affect normal index operations, but it might cause failures in subsequent VACUUMs. If that has happened to one of your indexes, recover by reindexing the index.
- Avoid possible failures while initializing a new process's pg_stat_activity data.
- Certain operations that could fail, such as converting strings extracted from an SSL certificate into the database encoding, were being performed inside a critical section. Failure there would result in database-wide lockup due to violating the access protocol for shared pg_stat_activity data.
- Fix race condition in check to see whether a pre-existing shared memory segment is still in use by a conflicting postmaster.
- Fix unsafe coding in walreceiver's signal handler.
- This avoids rare problems in which the walreceiver process would crash or deadlock when commanded to shut down.
- Avoid attempting to do database accesses for parameter checking in processes that are not connected to a specific database.
- This error could result in failures like “cannot read pg_class without having selected a database”.
- Avoid possible hang in libpq if using SSL and OpenSSL's pending-data buffer contains an exact multiple of 256 bytes.
- Improve initdb's handling of multiple equivalent names for the system time zone.
- Make initdb examine the /etc/localtime symbolic link, if that exists, to break ties between equivalent names for the system time zone. This makes initdb more likely to select the time zone name that the user would expect when multiple identical time zones exist. It will not change the behavior if /etc/localtime is not a symlink to a zone data file, nor if the time zone is determined from the TZ environment variable.
- Separately, prefer UTC over other spellings of that time zone, when neither TZ nor /etc/localtime provide a hint. This fixes an annoyance introduced by tzdata 2019a's change to make the UCT and UTC zone names equivalent: initdb was then preferring UCT, which almost nobody wants.
- Fix ordering of GRANT commands emitted by pg_dump and pg_dumpall for databases and tablespaces.
- If cascading grants had been issued, restore might fail due to the GRANT commands being given in an order that didn't respect their interdependencies.
- Make pg_dump recreate table partitions using CREATE TABLE then ATTACH PARTITION, rather than including PARTITION OF in the creation command.
- This avoids problems with the partition's column order possibly being changed to match the parent's. Also, a partition is now restorable from the dump (as a standalone table) even if its parent table isn't restored; the ATTACH will fail, but that can just be ignored.
- Fix misleading error reports from reindexdb.
- Ensure that vacuumdb returns correct status if an error occurs while using parallel jobs.
- Fix contrib/auto_explain to not cause problems in parallel queries.
- Previously, a parallel worker might try to log its query even if the parent query were not being logged by auto_explain. This would work sometimes, but it's confusing, and in some cases it resulted in failures like “could not find key N in shm TOC”.
- Also, fix an off-by-one error that resulted in not necessarily logging every query even when the sampling rate is set to 1.0.
- In contrib/postgres_fdw, account for possible data modifications by local BEFORE ROW UPDATE triggers.
- If a trigger modified a column that was otherwise not changed by the UPDATE, the new value was not transmitted to the remote server.
- On Windows, avoid failure when the database encoding is set to SQL_ASCII and we attempt to log a non-ASCII string.
- The code had been assuming that such strings must be in UTF-8, and would throw an error if they didn't appear to be validly encoded. Now, just transmit the untranslated bytes to the log.
- Make PL/pgSQL's header files C++-safe.
更新時間:2019-06-21
更新細節:
What's new in this version:
WordPress for Desktop 4.2.0
- Change log not available for this version
WordPress for Desktop 4.1.0
- Change log not available for this version
WordPress for Desktop 4.0.0
- Change log not available for this version
WordPress for Desktop 3.9.0
- Change log not available for this version
WordPress for Desktop 3.8.0
- Change log not available for this version
WordPress for Desktop 3.7.0
- Change log not available for this version
更新時間:2019-06-11
更新細節:
What's new in this version:
Release summary:
- 2.13 improves Scala in the following areas:
- Collections: Standard library collections have been overhauled for simplicity, performance, and safety. This is the centerpiece of the release.
- Standard library: Future is faster and more robust. Elsewhere, useful classes and methods have been added.
- Language: Literal types, partial unification, by-name implicits, more.
- Compiler: 5-10% faster, deterministic output, improved optimizer.
Collections redesign:
- Standard library collections have been overhauled for for simplicity, performance, and safety.
- This is the centerpiece of the release.
- Most ordinary code that used the old collections will continue to work as-is, except as detailed below.
The most important collections changes are:
- Simpler method signatures
- No more CanBuildFrom. Transformation methods no longer take an implicit CanBuildFrom parameter.
- The resulting library is easier to understand (in code, Scaladoc, and IDE code completion).
- It also makes user code compile faster.
- A new BuildFrom implicit is used in a handful of places that need it.
- Simpler type hierarchy
- No more Traversable and TraversableOnce.
- They remain only as deprecated aliases for Iterable and IterableOnce.
- Parallel collections are now a separate module.
- As a result, GenSeq, GenTraversableOnce, et al are gone.
- Immutable scala.Seq
- Seq is now an alias for collection.immutable.Seq
- Before, it was an alias for the possibly-mutable collection.Seq.
- This also changes the type of varargs in methods and pattern matches.
- Arrays passed as varargs are defensively copied. (#6970)
- Simplified views that work
- collection.Views have been vastly simplified and should now work reliably.
- New, faster HashMap/Set implementations
- Both immutable (d5ae93e) and mutable (#7348) versions were completely replaced.
- They substantially outperform the old implementations in most scenarios.
- The mutable versions now perform on par with the Java standard library's implementations.
- New concrete collections
- immutable.LazyList replaces immutable.Stream. Stream had different laziness behavior and is now deprecated. (#7558, #7000)
- immutable.ArraySeq is an immutable wrapper for an array; there is also a mutable version
- mutable.CollisionProofHashMap guards against denial-of-service attacks (#7633)
- mutable.ArrayDeque is a double-ended queue that internally uses a resizable circular buffer (scala/collection-strawman#490)
- New abstract collection type SeqMap
- immutable.SeqMap provides immutable maps that maintain insertion order. (#7954)
- Implementations: VectorMap (#6854) and TreeSeqMap (#7146) (in addition to the already existing ListMap).
Additional collections changes:
- New to(Collection) method
- Replaces old to[Collection] method.
- The argument is the companion object of the desired collection type, for example .to(Vector).
- The API change enables support for all collection types (including Map, BitSet, et al).
- No more collection.breakOut
- It required CanBuildFrom, which no longer exists.
- To avoid constructing intermediate collections, use .view and .to(Collection) instead.
- List and Vector are safer
- They now offer safe publication under the Java Memory Model, using releaseFence (#6425)
- Java interop has moved
- Extension methods for Scala are now in scala.jdk
- Explicit converters for Java are in scala.jdk.javaapi
- The reorganization centralizes all to-and-from-Java converters, including both collection and non-collection types, in a single package.
- Collection serialization has changed
- Collections now use the the serialization proxy pattern uniformly whenever possible. (#6676, #7624, scala-dev#562, sbt/sbt#89)
- In some classloading environments, notably sbt's non-forked test execution, code changes may be needed.
- Added .unfold
- This allows constructing a collection or iterator from an initial element and a repeated Option-returning operation, terminating on None.
- This was added collection companion objects and to Iterator (#6851)
- Added .lengthIs/.sizeIs and .sizeCompare
- These allow fluent size comparisons without traversing the whole collection (#6950, #6758)
- Examples: xs.sizeIs < 10, xs.sizeIs == 2
- Improved support for extension methods on collections
- Offered via IsIterable et al (#6674)
- Error-prone Map methods deprecated
- Deprecated .filterKeys and .mapValues (#7014)
- Instead, use the new methods of the same names on MapView (e.g. .view.filterKeys)
- Added .lazyZip
- Together with .zip on views, this replaces .zipped (now deprecated). (scala/collection-strawman#223)
- Deprecated symbolic methods with multiple arguments
- This is because such methods may be disallowed entirely in a future Scala (#6719)
- Adding custom collections and operations works very differently
- See documentation links below.
To learn more about the new APIs and how to adapt your code, consult:
- Scala 2.13's Collections
- Intro for newcomers. Skip if the collections from Scala 2.12 and earlier are already familiar to you.
- The Architecture of Scala 2.13 Collections
- Implementing Custom Collections (Scala 2.13)
- Adding Custom Collection Operations (Scala 2.13)
- Migrating a Project to 2.13's Collections.
- This document describes the main changes for collection users that migrate to Scala 2.13 and shows how to cross-build on Scala 2.11/12/13.
- scala-collection-compat
- This new module provides shims for cross-building on Scala 2.11/12/13.
- It also provides two sets of Scalafix rewrites: one for cross-building, one for moving to 2.13 only.
- We welcome assistance in continuing to expand and improve these documents.
Concurrency:
Futures were internally redesigned, with these goals:
- provide expected behavior under a broader set of failure conditions
- provide a foundation for increased performance
- support more robust applications
Details:
- Updated and revised our Future and Promise implementation. (#6610, #7663)
- Among other changes, handling of InterruptedException and RejectedExecutionException is improved.
- Made the global ExecutionContext “batched”. (#7470)
- Added synchronous ("parasitic") ExecutionContext. (#7784)
- Standard library: additions:
- Integrated Java interop (#7987)
- The old scala-java8-compat module is now part of the standard library. (#7458)
- This provides converters for options, function types and Java streams.
- (As mentioned above, collection converters such as JavaConverters were moved to fit into the new scheme.)
- new: scala.util.Using
- This provides a simple form of automatic resource management. (#6907)
- new: .toIntOption, et al
- These new extension methods on String are provided by StringOps.
- They parse literals and efficiently reject invalid input without throwing exceptions. (#6538)
- Examples: "12".toIntOption => Some(12), "12.3".toIntOption => None, "12.3".toDoubleOption => Some(12.3)
- new: named Product elements
- Case classes and other Products now have productElementNames and productElementName methods. (#6972)
- new: .withRight, .withLeft
- These methods on Left and Right allow upcasting the other type parameter (#7011, #7080)
- Example: Left(3).withRight[String] has type Either[Int, String] without having to write Int
- new: Ordering.Double.TotalOrdering, Ordering.Float.TotalOrdering
- The old orderings remain available at: Ordering.Double.IeeeOrdering, Ordering.Float.IeeeOrdering
- Example: List(2.0, 1.0).sorted is now ambiguous without specifying an ordering
- new: pipe and tap
- These chaining operations are available via import scala.util.chaining._. (#7007)
- Example: 3.pipe(_ * 5) evaluates to 15
- Example: 9.tap(println) first prints 9, then returns it
Standard library: changes:
- Library fits in compact1 profile
- This reduces deployment footprint for Scala applications. (#6164, scala/bug#10559)
- Option extends IterableOnce
- This improves type inference when calling an overloaded flatMap. (#8038)
Standard library: deprecations and removals:
- String-building using + with a non-String type on the left (aka any2stringadd) is now deprecated (#6315, #6755)
- PartialFunction.fromFunction replaces PartialFunction.apply (#6703)
- Right projections on Either are now deprecated (#6682, #8012)
- The following modules are no longer included in the distribution: scala-xml, scala-parser-combinators, scala-swing.
- They remain available from Maven Central.
- Assorted deprecated methods and classes throughout the standard library have been removed entirely.
Language changes:
- 2.13 is primarily a library release, not a language/compiler release. Regardless, some language changes are included:
Features:
- Literal types
- Literals (for strings, integers, and so on) now have associated literal types. (#5310)
- See the original proposal, SIP-23, for motivation and details.
- The compiler will provide instances of a new typeclass scala.ValueOf[T] for all singleton types T.
- The value of a singleton type can be accessed by calling method valueOf[T]. Example: val one: 1 = valueOf[1]
- Partial unification on by default
- Improves type constructor inference, fixes SI-2712.
- We recommend this [great explanation of this feature] (https://gist.github.com/djspiewak/7a81a395c461fd3a09a6941d4cd040f2).
- This feature is no longer considered experimental (#5102)
- The compiler no longer accepts -Ypartial-unification.
- By-name implicits with recursive dictionaries
- This extends by-name method arguments to support implicit (not just explicit) parameters.
- This enables implicit search to construct recursive values.
- The flagship use-case is typeclass derivation.
- Details: see the by-name implicits SIP, #6050, #7368
- Underscores in numeric literals
- Underscores can now be used as a spacer. (#6989)
- Example: 1_000_000
Experimental features:
- Macro annotations
- There is no more "macro paradise" compiler plugin for 2.13.
- Instead, macro annotations are handled directly by the compiler.
- Macro annotations are enabled with the -Ymacro-annotations flag. #6606
- Macro annotations remain experimental.
Deprecations:
- Procedure syntax deprecated
- Deprecated: def m() { ... }) #6325
- Use instead: def m(): Unit = { ... }
- View bounds deprecated
- Deprecated: A <% B (#6500)
- Use instead: (implicit ev: A => B)
Adjustments:
- Explicit imports now shadow locally defined identifiers. (#6589)
- This is a breaking change.
- Better typing for overloaded higher-order methods (#6871, #7631)
- This change was a key enabler for the new collections design.
- Rework unification of Object and Any in Java/Scala interop (#7966)
- Name-based pattern matching has changed to enable immutable Seq matches (#7068)
- Automatic eta-expansion of zero-argument methods is no longer deprecated (#7660)
- Improve binary stability of extension methods (#7896)
- Macros must now have explicit return types (#6942)
- Mixin fields with trait setters are no longer JVM final (#7028)
- In addition, object fields are now static (#7270)
- Support implicitNotFound on parameters (#6340)
- Disallow repeated parameters except in method signatures (#7399)
- x op () now parses as x.op(()) not x.op() (#7684)
Compiler:
- Deterministic, reproducible compilation
- The compiler generates identical output for identical input in more cases, for reproducible builds. (scala-dev#405)
- Optimizer improvements
- Operations on collections and arrays are now optimized more, including improved inlining. (#7133)
And:
- Scaladoc supports setting canonical URLs (#7834)
- This helps search engines identify the most relevant/recent version of a page when several versions are available.
- Compiler suggests possible corrections for unrecognized identifiers (#6711)
- Example: List(1).sizzle => value sizzle is not a member of List[Int], did you mean size?
- Added -Yimports for custom preamble imports. (#6764)
- Example: -Yimports:x,y,z means x, y, and z are root imports of the form: import x._ { import y._ { import z._ { ... } } }
- The scala-compiler JAR no longer depends on scala-xml (#6436)
Plus, changes to compiler options:
- Replaced -warn-option with -Woption (#7908)
- Promoted -deprecation to -Xlint:deprecation (#7714)
- Deprecated -Xfuture (#7328)
- Instead, use e.g. -Xsource:2.14
- Removed -Xmax-classfile-length
- It's hard-coded to 240 now (#7497)
Scripting and environment:
- The script runner (scala Script.scala) no longer uses the fsc compilation daemon by default. (#6747)
- The daemon was not reliable and will likely be removed entirely from a future release.
- JEP 293 style long command-line options are now supported (#6499)
- The REPL has undergone an internal refactoring to enable future improvements (#7384)
Compiler performance:
We invested heavily in compiler speedups during the 2.13 cycle, but most of that work actually already landed in the 2.12.x series, with more to - come in 2.12.9.
- In addition, the compiler performance in 2.13 is 5-10% better compared to 2.12, thanks mainly to the new collections. See performance graph.
- Also, certain kinds of code now compile much faster because the compiler aggressively prunes polymorphic implicits during search (#6580).
Compatibility:
- Like Scala 2.12, the 2.13 series targets Java 8, minimum. Both 2.12 and 2.13 also work on later JDKs such as JDK 11; see our JDK Compatibility - Guide.
Although Scala 2.11, 2.12, and 2.13 are mostly source compatible to facilitate cross-building, they are not binary compatible. This allows us to - keep improving the Scala compiler and standard library.
- All 2.13.x releases will be fully binary compatible with 2.13.0, in according with the policy we have followed since 2.10.
- The list of open-source libraries released for Scala 2.13 is growing quickly!
Projects built with sbt must use at least sbt 1.2.8 (or 0.13.18) to use Scala 2.13. To move to 2.13, bump the scalaVersion setting in your - existing project.
- Scala also works with Maven, Gradle, and other build tools.
更新時間:2019-02-15
更新細節:
更新時間:2019-02-15
更新細節:
更新時間:2019-02-15
更新細節:
更新時間:2019-02-14
更新細節:
更新時間:2018-11-09
更新細節:
更新時間:2018-11-08
更新細節: