After many years of development, PostgreSQL has become feature-complete in many areas. This release shows a targeted approach to adding features (e.g., authentication, monitoring, space reuse), and adds capabilities defined in the later SQL standards. The major areas of enhancement are:<p><pre><code> * Windowing Functions
* Common Table Expressions and Recursive Queries
* Default and variadic parameters for functions
* Parallel Restore
* Column Permissions
* Per-database locale settings
* Improved hash indexes
* Improved join performance for EXISTS and NOT EXISTS queries
* Easier-to-use Warm Standby
* Automatic sizing of the Free Space Map
* Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
* Version-aware psql (backslash commands work against older servers)
* Support SSL certificates for user authentication
* Per-function runtime statistics
* Easy editing of functions in psql
* New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin</code></pre>
tsally, don't look!<p>I was hoping to see simple built-in replication in 8.4 (didn't make it into 8.3, see here: <a href="http://it.toolbox.com/blogs/database-soup/postgresql-development-priorities-31886" rel="nofollow">http://it.toolbox.com/blogs/database-soup/postgresql-develop...</a>), so I guess it's on the 8.5 wishlist.
It's a shame that PostgreSQL still lacks meaningful XML support. That's one critical area where the commercial relational database vendors are way ahead.
I am salivating over the new WITH RECURSIVE ... SELECT ... syntax (<a href="http://www.postgresql.org/docs/8.4/static/sql-select.html" rel="nofollow">http://www.postgresql.org/docs/8.4/static/sql-select.html</a>). There's a very hairy piece of C++ code in my group's codebase that grinds over a certain schema to perform a certain transitive closure, and if I can redo that operation in SQL, we might be able to change its status from "only godlike programmers may dare touch this code" to "only demigodlike programmers may dare touch this code".
"A dump/restore using pg_dump is required for those wishing to migrate data from any previous release."<p>Don't know much about postgresql, but that sounds fun...