Overview
Major changes in this release:
-
-<glossentry> Performance>
+<itemizedlist>
-<
glossdef> IN/NOT IN subqueries are now much more efficient
+<
listitem> IN/NOT IN subqueries are now much more efficient
In previous releases, IN/NOT IN subqueries were joined to the
than EXISTS subqueries.
-para>
+listitem>
-<para> Improved GROUP BY processing by using hash buckets
+<
listitem> Improved GROUP BY processing by using hash buckets
In previous releases, GROUP BY totals were accumulated by
number of distinct GROUP BY values.
-para>
+listitem>
-<para> New multi-key hash join capability
+<
listitem> New multi-key hash join capability
In previous releases, hash joins could only occur on single-column
joins. This release allows multi-column hash joins.
- >
+>
-<para> ANSI joins are now better optimized
+<
listitem> ANSI joins are now better optimized
Prior releases evaluated ANSI join syntax only in the order
all possible join orderings and chooses the most efficient.
- >
+>
-
Faster and more powerful regular expression code
+
Faster and more powerful regular expression code
+
The entire regular expression module has been replaced with a new
of regular expressions.
- >
+>
-<para> Function-inlining for simple SQL functions
+<
listitem> Function-inlining for simple SQL functions
Simple SQL functions can now be inlined by including their SQL
SQL functions to behave like macros.
-
-
-
- IPv6
+
-<
glossdef>
Full support for IPv6 connections and IPv6 address
-data types
+<
listitem>
Full support for IPv6 connections and IPv6 address
+data types
Prior releases allowed only IPv6 connections and IP data types only
both of these areas.
-
-
-
- SSL
+
-<
glossdef>
Major improvements in SSL performance and
-reliability
+<
listitem>
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.
-
-
-
- Index Growth Prevention
+
-<
glossdef>
Allow free space map to efficiently reuse empty index
-pages, and other free space management improvements.
+<
listitem>
Allow free space map to efficiently reuse empty index
+pages, and other free space management improvements.
In prior releases, index pages that were left empty because of
rows.
-
-
-
- Standards Compliance
+
-
Implement information schema
+
Implement information schema
+
-
Support for read-only transactions
+
Support for read-only transactions
+
-
Make cursors comply more closely with the SQL standard
+<listitem><para>Make cursors comply more closely with the SQL standard
+
-
-
- New Client/Server Communication
-Protocol
-
-
New protocol improves connection speed/reliability,
+
New protocol improves connection speed/reliability,
and adds error codes, status information, a binary protocol, error
reporting verbosity, and cleaner startup packets.
-glossentry>
+listitem>
- Holdable Cursors
-
-
Allow cursors to exist outside transactions
-
-
-
- Threads
+
Allow cursors to exist outside transactions,
+also called holdable cursors
+
+
-
libpq and ecpg are now fully thread-safe with
---enable-thread-safety
+<
listitem><glossdef>
libpq and ecpg are now fully thread-safe with
+--enable-thread-safety
While prior libpq releases already supported threads, this release
was used in the database connection routines.
-
-
-
- Contrib
+
-
New version of full text indexing (tsearch2)
+
New version of full text indexing in /contrib/tsearch2
+
-<para> New autovacuum tool
+<
listitem> New autovacuum tool in /contrib
This new tool monitors the database statistics tables for
needed.
- >
+>
-
Array handling has been improved and moved into the main
-server
+<listitem><para> Array handling has been improved and moved into the main
+server
Many array limitations have been removed and they behave more like
fully-supported data types.
-
-
-
+
+
Migration to version 7.4
Observe the following incompatibilities:
The server-side autocommit setting was removed and reimplemented
- in client applications and languages.
+ in client applications and languages.
Server-side autocommit was causing too many problems with
and added to individual client API's as appropriate.
- para>listitem>
+
Error message wording has changed substantially in this release,
and error codes have been added.
ANSI inner joins may behave differently because they are now better optimized
A number of server variables have been renamed for
clarity, primarily those related to logging
-
MOVE/FETCH 0 now does nothing
+
MOVE/FETCH 0 now does nothing
In prior releases, FETCH 0 would fetch all remaining rows, and
MOVE 0 would move to the end of the cursor.
-
+
MOVE/FETCH now returns the actual number of rows moved/fetched, or zero
- if at the beginning/end of the cursor
+ if at the beginning/end of the cursor
Prior releases would return the tuple count passed to the
command, not the actual number of rows FETCHed or MOVEd.
-
+
COPY now can process carriage-return and
carriage-return/line-feed end-of-line terminated files.
Literal carriage-returns and line-feeds are no
from CHAR(n) to
VARCHAR(n) / TEXT
FLOAT(p) now measures 'p' in bits, not digits
-
Ambiguous date values now must match the ordering specified by DateStyle
+
Ambiguous date values now must match the ordering specified by DateStyle
In prior releases, a date of 10/20/03> was
current DateStyle>.
-
+
The oidrand(), oidsrand(),
- and userfntest() functions have been removed.
+ and userfntest() functions have been removed.
These functions were determined to be no longer useful.
-
+
'now' will no longer work as a column default; now()> or
- CURRENT_TIMESTAMP> should be used instead
+ CURRENT_TIMESTAMP> should be used instead
In prior releases, there was special code so the string
situations.
-
+
'today' will no longer work as a column default; CURRENT_DATE>
- should be used instead
+ should be used instead
Same description as above.
-
+
Dollar sign ($>) is no longer allowed in operator names
-
Dollar sign ($>) can be a non-first character in identifiers
+
Dollar sign ($>) can be a non-first character in identifiers
This was done to improve compatibility with other database
systems.
-
+
Server Operation Changes
-
SSL protocol security and performance improvements (Sean Chittenden)
+
SSL protocol security and performance improvements (Sean Chittenden)
SSL key renegotiation was happening too frequently, causing poor SSL
performance. Also, initial key handling was improved.
- para>listitem>
-
Print lock information when a deadlock is detected (Tom)
+
+
Print lock information when a deadlock is detected (Tom)
This allows easier debugging of deadlock situations.
- para>listitem>
-
Update /tmp socket mod. times regularly to avoid their removal (Tom)
+
+
Update /tmp socket mod. times regularly to avoid their removal (Tom)
This should help prevent /tmp directory cleaner
administration scripts from removing server socket files.
- para>listitem>
+
Enable PAM for MAC OS X (Aaron Hillegass)
-
Make btree indexes fully WAL-safe (Tom)
+
Make btree indexes fully WAL-safe (Tom)
In prior releases, under certain rare cases, a server crash could
last few rare cases.
- para>listitem>
+
Allow btree index compaction and empty page reuse (Tom)
-
Fix inconsistent index lookups during split of first root page (Tom)
+
Fix inconsistent index lookups during split of first root page (Tom)
In prior releases, when a single-page index split into two page,
multi-cpu machines. This release fixes that rare failure case.
- para>listitem>
+
Improve free space map allocation logic (Tom)
-
Preserve free space information between postmaster restarts (Tom)
+
Preserve free space information between postmaster restarts (Tom)
In prior releases, the free space map was not saved when the
when the server is restarted.
- para>listitem>
+
Set proper schema permissions in initdb (Peter)
Add start time to pg_stat_activity (Neil)
New code to detect corrupt disk pages; erase with zero_damaged_pages (Tom)
Allow multi-key hash joins (Tom)
Improve constant folding (Tom)
Add ability to inline simple SQL functions (Tom)
-
Reduce memory usage for queries using complex functions (Tom)
+
Reduce memory usage for queries using complex functions (Tom)
In prior releases, functions returning allocated memory would
completes, reducing the total memory used by functions.
- para>listitem>
-
Improve GEQO optimizer performance (Tom)
+
+
Improve GEQO optimizer performance (Tom)
There were several inefficiencies in the way the GEQO optimizer
managed potential query paths. This release fixes this.
- para>listitem>
+
Allow IN/NOT IN to be handled via hash tables (Tom)
Improve NOT IN (subquery) performance (Tom)
Allow most IN subqueries to be processed as joins (Tom)
-
Allow the postmaster to preload libraries using preload_libraries (Joe)
+
Allow the postmaster to preload libraries using preload_libraries (Joe)
For shared libraries that require a long time to load, this option
inherited by all database sessions.
- para>listitem>
+
Improve optimizer cost computations, particularly for subqueries (Tom)
Avoid sort when subquery ORDER BY matches upper query (Tom)
Assume WHERE a.x = b.y and b.y = 42 also means a.x = 42 (Tom)
Add from_collapse_limit to control conversion of subqueries to joins (Tom)
Use faster and more powerful regular expression code from TCL (Henry Spencer, Tom)
Use bit-mapped relation sets in the optimizer (Tom)
-
Improve backend startup time (Tom)
+
Improve backend startup time (Tom)
The new network protocol requires fewer network packets to start a
database session.
- para>listitem>
+
Improve trigger/constraint performance (Stephan)
Improve speed of col IN (const, const, const, ...) (Tom)
Fix hash indexes which were broken in rare cases (Tom)
-
Improve hash index concurrency and speed (Tom)
+
Improve hash index concurrency and speed (Tom)
Prior releases suffered from poor hash index performance,
btree and hash index performance.
- para>listitem>
-
Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)
+
+
Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)
Certain CPU's perform faster data copies when addresses are 32-bit
aligned.
- para>listitem>
-
The NUMERIC datatype has been reimplemented for better performance (Tom)
+
+
The NUMERIC datatype has been reimplemented for better performance (Tom)
NUMERIC used to be stored in base-100. The new code uses base-10000,
for significantly better performance.
- para>listitem>
+
Server Configuration Changes
-
Rename server parameter server_min_messages to log_min_messages (Bruce)
+
Rename server parameter server_min_messages to log_min_messages (Bruce)ara>
This was done so most parameters that control the server logs being
with log_>.
-ara>istitem>
+
Rename show_*_stats to log_*_stats (Bruce)
Rename show_source_port to log_source_port (Bruce)
Rename hostname_lookup to log_hostname (Bruce)
-
Add checkpoint_warning to warn of excessive checkpointing (Bruce)
+
Add checkpoint_warning to warn of excessive checkpointing (Bruce)
In prior releases, it was difficult to determine if checkpoint was
logs when excessive checkpointing happens.
- para>listitem>
+
New read-only server parameters for localization (Tom)
Change debug server log messages to output as DEBUG rather than LOG (Bruce)
-
Prevent server log variables from being turned off by non-super users (Bruce)
+
Prevent server log variables from being turned off by non-super users (Bruce)
This is a security feature so non-super-users can't disable logging
that was enabled by the administrator.
- para>listitem>
-
log_min_messages/client_min_messages now controls debug_* output (Bruce)
+
+
log_min_messages/client_min_messages now controls debug_* output (Bruce)
This centralizes client debug information so all debug output can
be sent to either the client or server logs.
- para>listitem>
-
Add OS X Rendezvous server support (Chris Campbell)
+
+
Add OS X Rendezvous server support (Chris Campbell)
This allows OS X machines to query the network for available
PostgreSQL servers.
- para>listitem>
+
Add ability to print only slow statements using log_min_duration_statement
- (Christopher)
+ (Christopher)
This is an often requested debugging feature that allows administrators to
- see only slow queries in their server logs.
+ see only slow queries in their server logs.
- para>listitem>
-
Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan)
+
+
Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan)
This allows administrators to merge the host IP address and netmask
fields into a single CIDR field in pg_hba.conf.
- para>listitem>
+
New is_superuser read-only variable (Tom)
-
New server-side parameter log_error_verbosity to control error detail (Tom)
+
New server-side parameter log_error_verbosity to control error detail (Tom)
This works with the new error reporting feature to supply additional
error information like hints, file names and line numbers.
- para>listitem>
-
postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter)
+
+
postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter)
This option is useful for administration tools that need to know the
and descriptions.
- para>listitem>
-
Make default shared_buffers 1000 and max_connections 100, if possible (Tom)
+
+
Make default shared_buffers 1000 and max_connections 100, if possible (Tom)
Prior versions defaulted to 64 shared buffers so PostgreSQL would
and size shared_buffers accordingly.
- para>listitem>
+
Add new columns in pg_settings: context, type, source, min_val, max_val (Joe)
New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon Jensen)
capability.
- para>listitem>
+
Remove geqo_random_seed server parameter (Tom)