|
|
|
@ -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_. |
|
|
|
|