E.303. リリース6.1



PostgreSQL 6.1リリースでは、リグレッションテストが追加され、また、多くの変更がなされました。

新しい3個のデータ型(datetimetimespancircle) がPostgreSQL 固有の型セットとして追加されました。 point、boxe、path、polygon の出力書式において、これら型の間で一貫性を持たせました。 misc.out における polygon 出力は元のリグレッション出力からの相対値の正確さをチェックする部分的なものになりました。

PostgreSQL 6.1では、遺伝的アルゴリズムを使用した、新しい、もう一つのオプティマイザを導入しました。 問い合わせに複数の条件や複数のテーブルが含まれる(オプティマイザが評価の順番を選択することになる)場合、このアルゴリズムは問い合わせ結果の順番において不規則な動作をもたらします。 多くのリグレッションテストがその結果を明示的に順序付けするように変更されましたので、オプティマイザの選択の影響はありません。 ごく一部の(例えば、pointや time intervalなどの)生来順番を持たないデータ型用のリグレッションテストやこれらの型を使用するテストは、明示的にset geqo to 'off'reset geqoの間で行われます。

配列指示子(大括弧に囲まれた原子値)の解釈が、元となるリグレッションテストが生成された後に数回変更されたようです。 現在の./expected/*.out はこの新しい解釈を反映していますが、間違っているかもしれません。

float8リグレッションテストは少なくともいくつかのプラットフォームで失敗します。 これは、pow()exp()の実装やオーバーフロー、アンダーフロー検出に使用される通知機構の違いが原因です。

randomテストの結果は不規則なものであり、リグレッションテストの評価は単なるdiffコマンドを使用しますので、randomテストは失敗するでしょう。 しかし、私の試験用マシン(Linux/gcc/i686)ではrandomは不規則な結果を生成しないようです。

E.303.1. バージョン6.1への移行



E.303.2. 変更点

Bug Fixes
packet length checking in library routines
lock manager priority patch
check for under/over flow of float8(Bruce)
multitable join fix(Vadim)
SIGPIPE crash fix(Darren)
large object fixes(Sven)
allow btree indexes to handle NULLs(Vadim)
timezone fixes(D'Arcy)
select SUM(x) can return NULL on no rows(Thomas)
internal optimizer, executor bug fixes(Vadim)
fix problem where inner loop in < or <= has no rows(Vadim)
prevent re-commuting join index clauses(Vadim)
fix join clauses for multiple tables(Vadim)
fix hash, hashjoin for arrays(Vadim)
fix btree for abstime type(Vadim)
large object fixes(Raymond)
fix buffer leak in hash indexes (Vadim)
fix rtree for use in inner scan (Vadim)
fix gist for use in inner scan, cleanups (Vadim, Andrea)
avoid unnecessary local buffers allocation (Vadim, Massimo)
fix local buffers leak in transaction aborts (Vadim)
fix file manager memmory leaks, cleanups (Vadim, Massimo)
fix storage manager memmory leaks (Vadim)
fix btree duplicates handling (Vadim)
fix deleted rows reincarnation caused by vacuum (Vadim)
fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)

attribute optimization statistics(Bruce)
much faster new btree bulk load code(Paul)
BTREE UNIQUE added to bulk load code(Vadim)
new lock debug code(Massimo)
massive changes to libpg++(Leo)
new GEQO optimizer speeds table multitable optimization(Martin)
new WARN message for non-unique insert into unique key(Marc)
update x=-3, no spaces, now valid(Bruce)
remove case-sensitive identifier handling(Bruce,Thomas,Dan)
debug backend now pretty-prints tree(Darren)
new Oracle character functions(Edmund)
new plaintext password functions(Dan)
no such class or insufficient privilege changed to distinct messages(Dan)
new ANSI timestamp function(Dan)
new ANSI Time and Date types (Thomas)
move large chunks of data in backend(Martin)
multicolumn btree indexes(Vadim)
new SET var TO value command(Martin)
update transaction status on reads(Dan)
new locale settings for character types(Oleg)
new SEQUENCE serial number generator(Vadim)
GROUP BY function now possible(Vadim)
re-organize regression test(Thomas,Marc)
new optimizer operation weights(Vadim)
new psql \z grant/permit option(Marc)
new MONEY data type(D'Arcy,Thomas)
tcp socket communication speed improved(Vadim)
new VACUUM option for attribute statistics, and for certain columns (Vadim)
many geometric type improvements(Thomas,Keith)
additional regression tests(Thomas)
new datestyle variable(Thomas,Vadim,Martin)
more comparison operators for sorting types(Thomas)
new conversion functions(Thomas)
new more compact btree format(Vadim)
allow pg_dumpall to preserve database ownership(Bruce)
new SET GEQO=# and R_PLANS variable(Vadim)
old (!GEQO) optimizer can use right-sided plans (Vadim)
typechecking improvement in SQL parser(Bruce)
new SET, SHOW, RESET commands(Thomas,Vadim)
new \connect database USER option
new destroydb -i option (Igor)
new \dt and \di psql commands (Darren)
SELECT "\n" now escapes newline (A. Duursma)
new geometry conversion functions from old format (Thomas)

Source tree changes
new configuration script(Marc)
readline configuration option added(Marc)
OS-specific configuration options removed(Marc)
new OS-specific template files(Marc)
no more need to edit Makefile.global(Marc)
re-arrange include files(Marc)
nextstep patches (Gregor Hoffleit)
removed Windows-specific code(Bruce)
removed postmaster -e option, now only postgres -e option (Bruce)
merge duplicate library code in front/backends(Martin)
now works with eBones, international Kerberos(Jun)
more shared library support
c++ include file cleanup(Bruce)
warn about buggy flex(Bruce)
DG/UX, Ultrix, IRIX, AIX portability fixes