Release Notes
- devel">
+ 7-4">
Release 7.4
Overview
-
Improved GROUP BY processing by using hash buckets
+
Improved GROUP BY processing by using hash buckets
+
+ In previous releases, GROUP BY totals were accumulated by
+ sequentially scanning the list of groups looking for a match;
+ the 7.4 code places GROUP BY values in hash buckets so the
+ proper match can be found much quicker. This is particularly
+ significant in speeding up queries that have a large
+ number of distinct GROUP BY values.
+
+
+
-
New multi-key hash join capability
+
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.
+
+
+
-
ANSI joins are now better optimized
+
ANSI joins are now better optimized
+
+ Prior releases evaluated ANSI join syntax only in the order
+ specified by the query; 7.4 allows full optimization of
+ queries using ANSI join syntax, meaning the optimizer considers
+ 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
+ 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
+
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 preventing
+ repeated calls to the SQL function --- this allows simple
+ SQL functions to behave like macros.
+
+
+
IPv6
Full support for IPv6 connections and IPv6 address
-data types
+data types
+
+ Prior releases allowed only IPv6 connections and IP data types only
+ supported IPv4 addresses. This release adds full IPv6 support in
+ both of these areas.
+
+
+
SSL
Major improvements in SSL performance and
-reliability
+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
Allow free space map to efficiently reuse empty index
-pages, and other free space management improvements.
+pages, and other free space management improvements.
+
+ In prior releases, 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 used for any future index
+ rows.
+
+
+
Standards Compliance
Threads
libpq and ecpg are now fully thread-safe with
---enable-thread-safety
+--enable-thread-safety
+
+ While prior libpq releases already supported threads, this release
+ improves thread safety by fixing some non-thread-safe code that
+ was used in the database connection routines.
+
+
+
Contrib
New version of full text indexing (tsearch2)
+
+ This new tool 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 main
-server
+server
+
+ Many array limitations have been removed and they behave more like
+ fully-supported data types.
+
+
+
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
+ languages and applications that wanted to control their own
+ autocommit behavior so autocommit was removed from the server
+ and added to individual client API's as appropriate.
+
+
+
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
-
MOVE/FETCH 0 now does nothing
+
A number of server variables have been renamed for
+ clarity, primarily those related to logging
+
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
-
COPY now can process carriage-return/line-feed and carriage-return
- terminated files. Literal carriage-returns and line-feeds are no
+ 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
longer accepted as data values; use \r and \n instead.
Trailing spaces are now trimmed when converting
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
+ interpreted as a date in October even if the
+ DateStyle> specified the day should be first. In
+ 7.4, DateStyle> is honored when converting such
+ values and will throw an error if the date is invalid for the
+ 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
+ 'now' was interpreted at
+ INSERT> time and not at table creation time, but
+ this work around didn't cover all cases. Release 7.4
+ now requires that defaults be defined properly using the
+ now()> or the special value
+ CURRENT_TIMESTAMP>. These will work in all
+ 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.
+
+
+
Changes
Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce, Tom, Kurt
Roeckx, Andrew Dunstan)
-
Fix SSL to handle errors cleanly (Nathan Mueller)
+
Fix SSL to handle errors cleanly (Nathan Mueller)
+
+ In prior releases,
+
+
+
SSL protocol security and performance improvements (Sean Chittenden)
Print lock information when a deadlock is detected (Tom)
Update /tmp socket mod. times regularly to avoid their removal (Tom)