diff --git a/HISTORY b/HISTORY index 04daa724a1..8b37cb596b 100644 --- a/HISTORY +++ b/HISTORY @@ -8,27 +8,28 @@ Major changes in this release: Performance - IN/NOT IN subqueries are now much more efficient + IN/NOT IN subqueries are now much more efficient [1] - Improved GROUP BY processing by using hash buckets + Improved GROUP BY processing by using hash buckets [2] - New multi-key hash join capability + New multi-key hash join capability [3] - ANSI joins are now better optimized + ANSI joins are now better optimized [4] - Faster and more powerful regular expression code + Faster and more powerful regular expression code [5] - Function-inlining for simple SQL functions + Function-inlining for simple SQL functions [6] IPv6 Full support for IPv6 connections and IPv6 address data types + [7] SSL - Major improvements in SSL performance and reliability + Major improvements in SSL performance and reliability [8] Index Growth Prevention Allow free space map to efficiently reuse empty index pages, - and other free space management improvements. + and other free space management improvements. [9] Standards Compliance Implement information schema @@ -47,14 +48,15 @@ Threads libpq and ecpg are now fully thread-safe with - --enable-thread-safety + --enable-thread-safety [10] Contrib New version of full text indexing (tsearch2) - New autovacuum tool + New autovacuum tool [11] Array handling has been improved and moved into the main server + [12] _________________________________________________________________ Migration to version 7.4 @@ -65,30 +67,33 @@ Observe the following incompatibilities: * The server-side autocommit setting was removed and reimplemented - in client applications and languages. + in client applications and languages. [13] * 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; return value of MOVE/FETCH 1/0 - varies based on the current offset in the cursor - * COPY now can process carriage-return/line-feed and carriage-return - terminated files. Literal carriage-returns and line-feeds are no - longer accepted as data values; use \r and \n instead. + * A number of server variables have been renamed for clarity, + primarily those related to logging + * MOVE/FETCH 0 now does nothing [14] + * MOVE/FETCH now returns the actual number of rows moved/fetched, or + zero if at the beginning/end of the cursor [15] + * 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 + DateStyle [16] * The oidrand(), oidsrand(), and userfntest() functions have been - removed. + removed. [17] * 'now' will no longer work as a column default; now() or - CURRENT_TIMESTAMP should be used instead + CURRENT_TIMESTAMP should be used instead [18] * 'today' will no longer work as a column default; CURRENT_DATE - should be used instead + should be used instead [19] * 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 [20] _________________________________________________________________ Changes @@ -97,19 +102,20 @@ Server Operation * 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) [21] * SSL protocol security and performance improvements (Sean - Chittenden) - * Print lock information when a deadlock is detected (Tom) + Chittenden) [22] + * Print lock information when a deadlock is detected (Tom) [23] * Update "/tmp" socket mod. times regularly to avoid their removal - (Tom) + (Tom) [24] * Enable PAM for MAC OS X (Aaron Hillegass) - * Make btree indexes fully WAL-safe (Tom) + * Make btree indexes fully WAL-safe (Tom) [25] * Allow btree index compaction and empty page reuse (Tom) * Fix inconsistent index lookups during split of first root page - (Tom) + (Tom) [26] * Improve free space map allocation logic (Tom) * Preserve free space information between postmaster restarts (Tom) + [27] * Set proper schema permissions in initdb (Peter) * Add start time to pg_stat_activity (Neil) * New code to detect corrupt disk pages; erase with @@ -132,13 +138,13 @@ Performance * 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) - * Improve GEQO optimizer performance (Tom) + * Reduce memory usage for queries using complex functions (Tom) [28] + * Improve GEQO optimizer performance (Tom) [29] * 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) + (Joe) [30] * Improve optimizer cost computations, particularly for subqueries (Tom) * Avoid sort when subquery ORDER BY matches upper query (Tom) @@ -156,17 +162,17 @@ Performance * 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) [31] * Align shared buffers on 32-byte boundary for copy speed - improvement (Manfred Spraul) + improvement (Manfred Spraul) [32] * The NUMERIC datatype has been reimplemented for better performance - (Tom) + (Tom) [33] _________________________________________________________________ Server Configuration * Rename server parameter server_min_messages to log_min_messages - (Bruce) + (Bruce) [34] * Rename show_*_stats to log_*_stats (Bruce) * Rename show_source_port to log_source_port (Bruce) * Rename hostname_lookup to log_hostname (Bruce) @@ -243,10 +249,9 @@ Utility Commands * Add ON COMMIT clause to CREATE TABLE for temp tables (Gavin) * Allow cursors outside transactions using WITH HOLD (Neil) - * Make MOVE/FETCH 0 actually move/fetch 0 (Bruce) - * Cause FETCH 1 to return the next cursor row number, or zero if at - beginning/end of cursor, per SQL spec (Bruce) - * Have MOVE return 0 or 1 depending on cursor position (Bruce) + * MOVE/FETCH 0 now does nothing (Bruce) + * Cause MOVE/FETCH to return the number of rows moved/fetched, or + zero if at the beginning/end of cursor, per SQL spec (Bruce) * Properly handle SCROLL with cursors, or report an error (Neil) * Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n options for FETCH and MOVE (Tom) @@ -4704,3 +4709,171 @@ The following bugs have been fixed in postgres95-beta-0.02: Release date: 1995-05-01 Initial release. + + Notes + + [1] + + In previous releases, IN/NOT IN subqueries were joined to the upper + query by sequentially scanning the subquery looking for a join. The + 7.4 code uses the same sophisticated techniques used by ordinary joins + and so is much faster, and is now faster than EXISTS subqueries. + [2] + + 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. + [3] + + In previous releases, hash joins could only occur on single-column + joins. This release allows multi-column hash joins. + [4] + + 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. + [5] + + 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. + [6] + + 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. + [7] + + 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. + [8] + + Several people very familiar with the SSL API have overhauled our SSL + code to improve SSL key negotiation and error recovery. + [9] + + 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. + [10] + + 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. + [11] + + This new tool monitors the database statistics tables for + INSERT/UPDATE/DELETE activity and automatically vacuums tables when + needed. + [12] + + Many array limitations have been removed and they behave more like + fully-supported data types. + [13] + + 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. + [14] + + In prior releases, FETCH 0 would fetch all remaining rows, and MOVE 0 + would move to the end of the cursor. + [15] + + Prior releases would return the tuple count passed to the command, not + the actual number of rows FETCHed or MOVEd. + [16] + + 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. + [17] + + These functions were determined to be no longer useful. + [18] + + 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. + [19] + + Same description as above. + [20] + + This was done to improve compatibility with other database systems. + [21] + + In prior releases, certain rare SSL API error reports were not handled + correctly. This release fixes those problems. gracefully. + [22] + + SSL key renegotiation was happening too frequently, causing poor SSL + performance. Also, initial key handling was improved. + [23] + + This allows easier debugging of deadlock situations. + [24] + + This should help prevent "/tmp" directory cleaner administration + scripts from removing server socket files. + [25] + + In prior releases, under certain rare cases, a server crash could + cause btree indexes to become corrupt. This release removes those last + few rare cases. + [26] + + In prior releases, when a single-page index split into two page, there + was a brief period when another database session would miss seeing an + index entry. This failure was possible primarly on multi-cpu machines. + This release fixes that rare failure case. + [27] + + In prior releases, the free space map was not saved when the + postmaster was stopped, so newly started servers has no free space + information. This release saves the free space map, which is loaded + when the server is restarted. + [28] + + In prior releases, functions returning allocated memory would not free + it until the query completed. This release allows the freeing of + function-allocated memory when the function call completes, reducing + the total memory used by functions. + [29] + + There were several inefficiencies in the way the GEQO optimizer + managed potential query paths. This release fixes this. + [30] + + For shared libraries that require a long time to load, this option is + available so the library can be pre-loaded in the postmaster and + inherited by all database sessions. + [31] + + Prior releases suffered from poor hash index performance, particularly + for high concurrency situations. This release fixes that, and the + development group is interested in reports comparing btree and hash + index performance. + [32] + + Certain CPU's perform faster data copies when addresses are 32-bit + aligned. + [33] + + NUMERIC used to be stored in base-100. The new code uses base-10000, + for significantly better performance. + [34] + + This was done so most parameters that control the server logs being + with log_. diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index f6b9a73cea..b9b94bb3a7 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,5 +1,5 @@ @@ -456,13 +456,14 @@ required for those wishing to migrate data from any previous release. Server Configuration -Rename server parameter server_min_messages to log_min_messages (Bruce) +Rename server parameter server_min_messages to log_min_messages (Bruce) This was done so most parameters that control the server logs being - with log_>/>. + with log_. + Rename show_*_stats to log_*_stats (Bruce) Rename show_source_port to log_source_port (Bruce) Rename hostname_lookup to log_hostname (Bruce)