| |
| Release 7.4.1 Overview |
| |
| Major changes in this release: |
| |
| IN/NOT IN subqueries are now much more efficient |
| In previous releases, IN/NOT IN subqueries were joined to the upper query by
sequentially scanning the subquery looking for a match. The 7.4 code uses the same
sophisticated techniques used by ordinary joins and so is much faster. An IN will
now usually be as fast as or faster than an equivalent EXISTS subquery; this reverses
the conventional wisdom that applied to previous releases. |
| |
| Improved GROUP BY processing by using hash buckets |
| In previous releases, rows to be grouped had to be sorted first. The 7.4 code can
do GROUP BY without sorting, by accumulating results into a hash table with one entry
per group. It will still use the sort technique, however, if the hash table is estimated
to be too large to fit in sort_mem. |
| |
| New multikey hash join capability |
| In previous releases, hash joins could only occur on single keys. This release allows
multicolumn hash joins. |
| |
| Queries using the explicit JOIN syntax are now better optimized |
| Prior releases evaluated queries using the explicit JOIN syntax only in the order implied
by the syntax. 7.4 allows full optimization of these queries, meaning the optimizer considers
all possible join orderings and chooses the most efficient. Outer joins, however, must still
follow the declared ordering. |
| |
| Faster and more powerful regular expression code |
| The entire regular expression module has been replaced with a new version by Henry Spencer,
originally written for Tcl. The code greatly improves performance and supports several flavors
of regular expressions. |
| |
| Function-inlining for simple SQL functions |
| Simple SQL functions can now be inlined by including their SQL in the main query. This improves
performance by eliminating per-call overhead. That means, simple SQL functions now behave like
macros. |
| |
| Full support for IPv6 connections and IPv6 address data types |
| Previous releases allowed only IPv4 connections, and the IP data types only supported
IPv4 addresses. This release adds full IPv6 support in both of these areas. |
| |
| Major improvements in SSL performance and reliability |
| Several people very familiar with the SSL API have overhauled our SSL code to improve
SSL key negotiation and error recovery. |
| |
| Make free space map to efficiently reuse empty index pages, and other
free space management improvements |
| In previous releases, B-tree index pages that were left empty because of deleted rows
could only be reused by rows with index values similar to the original rows indexed on that
page. In 7.4, VACUUM records empty index pages and allows them to be reused for any future
index rows. |
| |
| SQL-standard information schema |
| The information schema provides a standardized and stable way to access information about
the schema objects defined in a database. |
| |
| Cursors conform more closely with the SQL standard |
| The commands FETCH and MOVE have been overhauled to conform more closely to the SQL
standard. |
| |
| Cursors can exist outside transactions |
| These cursors are also called holdable cursors |
| |
| New client-to-server protocol |
| The new protocol adds error codes, more status information, faster
startup, better support for binary data transmission, parameter values
separated from SQL commands, prepared statements available at the protocol
level, and cleaner recovery from COPY failures. The older protocol is still
supported by both server and clients. |
| |
| libpq and ECPG applications are now fully thread-safe |
| While previous libpq releases already supported threads, this release
improves thread safety by fixing some non-thread-safe code that was used
during database connection startup. The configure option --enable-thread-safety
must be used to enable this feature. |
| |
| New version of full-text indexing |
| A new full-text indexing suite is available in contrib/tsearch2. |
| |
| New autovacuum tool |
| The new autovacuum tool in contrib/autovacuum monitors the database statistics
tables for INSERT/UPDATE/DELETE activity and automatically vacuums tables when needed. |
| |
| Array handling has been improved and moved into the server core |
| Many array limitations have been removed, and arrays behave more like fully-supported
data types. |
| |
| |
|
| |
| Release 7.3.2 Overview |
| |
| Major changes in this release: |
| |
| Schemas |
| Schemas allow users to create objects in their own namespace so two people or applications can have tables with the same name. There is also a public schema for shared tables. |
| |
| Table/index |
| Table/index creations can be restricted by removing permissions on the public schema. |
| |
| Drop Column |
| PostgreSQL now support ALTER TABLE... DROP COLUMN functionality. |
| |
| Table Functions |
| Functions returning multiple rows and/or multiple columns are now much easier to use than before. You can call such a "table function" in the SELECT FROM clause, treating its output like a table. Also, plpgsql functions can now return sets. |
| |
| Prepared Queries |
| For performance, PostgreSQL now supports prepared queries. |
| |
| Dependency Tracking |
| PosgreSQL now records object dependencies, which allows improvements in many areas. |
| |
| Privileges |
| Functions and procedural languages now have privileges, and people running then can take on the privileges of their creators. |
| |
| Multibyte/Locate |
| Both multibyte and locale are now always enabled. |
| |
| Logging |
| A variety of logging options have been enhanced. |
| |
| Interfaces |
| A large number of interfaces have been moved to http://gborg.postgresql.org where they can developed and released independently. |
| |
| Functions/Identifiers |
| By default, functions can now take up to 32 parameters, and identifiers can be up to 63 bytes long. |
| |
| |
| |
| |