E.3. リリース 7.4

リリース日: 2003-11-17

E.3.1. 概要

このリリースの大きな変更点を以下に示します。

IN/NOT IN 副問い合わせが非常に効率的になりました。

以前のリリースでは、IN/NOT IN 副問い合わせは、シーケンシャルスキャンによって副問い合わせと一致する上位の問い合わせと結合されていました。 7.4のコードでは、通常の結合で使用される洗練された技術と同じものを使用し、そのため、非常に高速になりました。 これで INは通常、等価なEXISTS と同程度の速度、場合によってはより高速になりました。 これにより、これまでのリリースにおいて行なっていた慣習的常識はくつがえりました。

ハッシュバケットを使用したGROUP BY処理の改良

以前のリリースでは、グループ化される行が最初にソートされました。 7.4のコードでは、グループ当たり1項目で、ハッシュテーブルに結果を積むことによって、ソートを行なわずにGROUP BYができるようになりました。 しかし、ハッシュテーブルがsort_memに収まるには大き過ぎると推定した場合、まだソート技術を使用します。

複数キーによるハッシュ結合能力(新規)

以前のリリースでは、ハッシュ結合は1つのキー上でのみ存在できました。 このリリースでは、複数列に対するハッシュ結合が可能です。

明示的なJOIN構文を使用した問い合わせはより良く最適化されるようになりました。

以前のリリースでは、明示的なJOIN構文を使用する問い合わせを、単に、 構文によって示される順番で評価していました。 7.4ではこれらの問い合わせを完全に最適化できるようになりました。 つまり、オプティマイザはすべての結合順序を考慮し、最も効率的なものを選択します。 しかし、外部結合はまだ宣言順に従わなければなりません。

より強力、より高速な正規表現コード。

正規表現モジュール全体が、もともとはTclで作成されたHenry Spencer氏による新しいバージョンに置き換えられました。 このコードではかなり性能が向上し、様々な種類の正規表現をサポートしています。

簡単なSQL関数のインライン関数

簡単なSQL関数を元の問い合わせ内のSQLに含めることによりインライン化できるようになりました。 呼び出しに伴うオーバーヘッドを抑制することにより、性能が向上します。 つまり、簡単なSQL関数がマクロのように動作するようになりました。

完全なIPv6接続とIPv6アドレスデータ型のサポート

以前のリリースでは、IPv4接続のみが可能、そしてIPデータ型としてはIPv4アドレスのみをサポートしていました。 このリリースでは両者に関して完全なIPv6をサポートしています。

SSLの性能と信頼性の大きな改良

SSL APIに非常に詳しい方々により、SSLコードは書き直され、SSLキー調停やエラー復旧が改良されました。

空き領域マップを効率的に空インデックスページを再利用させました。また、他の空き領域の管理を改良しました。

以前のリリースでは、削除行によって空のまま残されたB-treeインデックスページは、元々そのページにインデックス付けされた行に近いインデックス値を持つ行によってのみ再利用されました。 7.4では、VACUUMは空のインデックスページを記録し、それらを将来のインデックス行用に再利用することができます。

標準SQLの情報スキーマ。

情報スキーマは、データベース内で定義されたスキーマオブジェクトについての情報にアクセスするための、標準化され、安定した方法を提供します。

カーソルはより標準SQLに近く従うようになりました。

FETCHMOVEコマンドは、より標準SQLに近く従うよう改良されました。

カーソルがトランザクションの外側でも存在できるようになりました。

これらのカーソルは保持可能カーソルとも呼ばれます。

新しいクライアントからサーバへのプロトコル。

新しいプロトコルでは、エラーコード、より多くの状況情報、より高速な起動、より優れたバイナリデータの通信、SQLコマンドとパラメータ値の分離、プロトコルレベルで利用できる準備された文が付与されました。また、COPY失敗時の復旧がより明確になりました。 昔のプロトコルもまだ、サーバ、クライアント共サポートされています。

libpqECPG アプリケーションが完全にスレッドセーフになりました。

以前のlibpq のリリースでも既にスレッドをサポートしていましたが、このリリースでは、データベース接続開始期間に使用されていたスレッドセーフでないいくつかのコードを修正し、スレッドセーフに改良されました。 この機能を有効にするには、configure--enable-thread-safetyを使用しなければなりません。

新しいバージョンのフルテキストインデックス

contrib/tsearch2にある新しいフルテキストインデックス手法が利用可能です。

新しい自動vacuumツール。

contrib/autovacuumにある新しい自動vacuumツールは、INSERT/UPDATE/DELETEの活動について、統計情報テーブルを監視し、必要に応じて自動的にvacuumを行ないます。

配列の扱いは、改良され、サーバの中核部分に移りました。

多くの配列の制限が取り除かれました。 これにより、配列は、ほぼ完全にデータ型をサポートできるように動作します。

E.3.2. バージョン7.4への移行

A dump/restore using pg_dump is required for those wishing to migrate data from any previous release. 以前のリリースからデータを移行する場合、pg_dump によるダンプ/リストアが必要です。

以下の非互換部分を確認して下さい。

E.3.3. 変更点

以下に、リリース7.4と以前のメジャーリリースとの間になされた変更点について、詳細な説明を示します。

E.3.3.1. サーバ操作についての変更

  • Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce, Tom, Kurt Roeckx, Andrew Dunstan)

  • Fix SSL to handle errors cleanly (Nathan Mueller)

    In prior releases, certain SSL API error reports were not handled correctly. This release fixes those problems.

  • SSL protocol security and performance improvements (Sean Chittenden)

    SSLの性能の低さのために、SSLキーの再調停があまりにも頻繁に発生していました。 また、初期のキーの取扱いが改良されました。

  • Print lock information when a deadlock is detected (Tom)

    これによりデッドロック状況のデバッグが容易になります。

  • Update /tmp socket modification times regularly to avoid their removal (Tom)

    これは、/tmp ディレクトリを整理する管理スクリプトによってサーバソケットファイルが削除されてしまうことを防ぐ助けになるでしょう。

  • Enable PAM for Mac OS X (Aaron Hillegass)

  • Make B-tree indexes fully WAL-safe (Tom)

    以前のリリースでは、ある特定かつ稀な場合、サーバクラッシュによりB-treeインデックスが破損してしまいました。このリリースでは、これらのもっとも稀な場合について削除しました。

  • Allow B-tree index compaction and empty page reuse (Tom)

  • Fix inconsistent index lookups during split of first root page (Tom)

    以前のリリースでは、単一ページのインデックスを2ページに分割する際に、 他のデータベースセッションがインデックス項目を探すことができない、短い時間がありました。 このリリースはこの稀に起こる失敗を修正しました。

  • Improve free space map allocation logic (Tom)

  • 空領域マップの割り当てロジックの改良 (Tom)

  • Preserve free space information between server restarts (Tom)

    以前のリリースでは、postmasterが停止した時に空領域は保存されませんでした。 そのため、新しく稼働したサーバは、空領域情報を持ちませんでした。 このリリースでは、空領域マップを保存し、サーバの再起動時にそれを再読み込みします。

  • Add start time to pg_stat_activity (Neil)

  • New code to detect corrupt disk pages; erase with zero_damaged_pages (Tom)

  • New client/server protocol: faster, no username length limit, allow clean exit from COPY (Tom)

  • Add transaction status, table ID, column ID to client/server protocol (Tom)

  • Add binary I/O to client/server protocol (Tom)

  • Remove autocommit server setting; move to client applications (Tom)

  • New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)

E.3.3.2. 性能の向上

  • Add hashing for GROUP BY aggregates (Tom)

  • Make nested-loop joins be smarter about multicolumn indexes (Tom)

  • Allow multikey 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)

    このリリースでは、GEQOオプティマイザの潜在的な問い合わせ経路の管理方法において複数の非効率な点を修正しました。

  • 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)

  • Pattern matching operations can use indexes regardless of locale (Peter)

    非ASCIIのロケールでは、LIKE比較用の標準的なインデックスを使用する方法がありません。 このリリースではLIKE用に特別なインデックスを作成する方法を追加しました。

  • Allow the postmaster to preload libraries using preload_libraries (Joe)

    長時間読み込まれる共有ライブラリでは、このオプションを利用でき、そのライブラリはpostmaster内であらかじめ読み込まれ、すべてのデータベースセッションで継承されます。

  • Improve optimizer cost computations, particularly for subqueries (Tom)

  • Avoid sort when subquery ORDER BY matches upper query (Tom)

  • Deduce that WHERE a.x = b.y AND b.y = 42 also means a.x = 42 (Tom)

  • Allow hash/merge joins on complex joins (Tom)

  • Allow hash joins for more data types (Tom)

  • Allow join optimization of explicit inner joins, disable with join_collapse_limit (Tom)

  • Add parameter 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 connection startup time (Tom)

    新しいクライアント/サーバプロトコルでは、データベースセッション開始のために必要なネットワークパケットがより少なくなりました。

  • 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)

    以前のリリースでは、特に、同時実行数が多い状況では、ハッシュインデックスの低性能が見られました。 このリリースではそれを修正し、開発グループでは、B-treeとハッシュインデックスとの性能比較についての報告をまとめました。

  • Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)

    特定のCPUの性能は、アドレスが32バイトで整列された時のデータコピーがより高速になります。

  • Data type numeric reimplemented for better performance (Tom)

    numericは100を基として保存していました。 かなり良い性能のために、新しいコードでは10000を基として使用します。

E.3.3.3. サーバ設定の変更

  • Rename server parameter server_min_messages to log_min_messages (Bruce)

    これはlog_から始まるサーバのログを制御するほとんどのパラメータに対して行なわれました。

  • 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)

    以前のリリースでは、チェックポイントが頻繁に発生し過ぎているかどうかを認識することは困難でした。 この機能により、過度なチェックポイントの発生時にサーバログに警告が追加されます。

  • 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-superusers (Bruce)

    非スーパーユーザが管理者によって有効にされたログ取得を無効にすることを不可能とする、セキュリティに関するものです。

  • log_min_messages/client_min_messages now controls debug_* output (Bruce)

    これはクライアントデバッグ情報を集中化し、これにより、すべてのデバッグ用出力がクライアントログもしくはサーバログに送信できます。

  • Add Mac OS X Rendezvous server support (Chris Campbell)

    これにより、Mac OS Xホストが利用可能なPostgreSQLサーバにネットワークから問い合わせできるようになります。

  • Add ability to print only slow statements using log_min_duration_statement (Christopher)

    これは、よく要求のあったデバッグ機能で、これにより、管理者はサーバログ内で低速な問い合わせのみを見られるようになります。

  • Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan)

    これにより、管理者はpg_hba.conf内でホストIPアドレスとネットマスクフィールドを単一CIDRフィールドにまとめることができます。

  • New read-only parameter is_superuser (Tom)

  • New parameter log_error_verbosity to control error detail (Tom)

    これは、新しいエラー報告機能と一緒に動作し、ヒントやファイル名、行番号などのエラー情報を更に提供します。

  • postgres --describe-config now dumps server config variables (Aizaz Ahmed, Peter)

    このオプションは、設定変数名とその最小、最大、デフォルト、説明文を把握する必要がある管理ツールで有用です。

  • Add new columns in pg_settings: context, type, source, min_val, max_val (Joe)

  • Make default shared_buffers 1000 and max_connections 100, if possible (Tom)

    以前のバージョンではデフォルトで64共有バッファでした。 そのため、非常に古いシステムでもPostgreSQLが起動できました。 このリリースでは、プラットフォームで許可された共有メモリ量を試験し、可能であれば、より理想的なデフォルト値を選択します。 もちろん、ユーザはリソースの使用状況を評価し、それに合わせてshared_buffersの大きさを決定することもまだ可能です。

  • New pg_hba.conf record type hostnossl to prevent SSL connections (Jon Jensen)

    以前のリリースでは、クライアントとサーバがSSLをサポートする場合、SSL接続を防ぐ方法がありませんでした。 このオプションでその機能が可能です。

  • Remove parameter geqo_random_seed (Tom)

  • Add server parameter regex_flavor to control regular expression processing (Tom)

  • Make pg_ctl better handle nonstandard ports (Greg)

E.3.3.4. 問い合わせに関する変更

  • New SQL-standard information schema (Peter)

  • Add read-only transactions (Peter)

  • Print key name and value in foreign-key violation messages (Dmitry Tkach)

  • Allow users to see their own queries in pg_stat_activity (Kevin Brown)

    以前のリリースでは、スーパーユーザのみがpg_stat_activityを使用して問い合わせ文字列を確認することができました。 通常のユーザが自身の問い合わせ文字列を確認できるようになりました。

  • Fix aggregates in subqueries to match SQL standard (Tom)

    標準SQLでは、入れ子になった副問い合わせ内の集約関数は、その引数に問い合わせ外部の変数のみが含まれる場合、その外部の問い合わせに属すると規定しています。 以前のPostgreSQLのリリースでは、この点を正しく扱っていませんでした。

  • Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)

    デフォルトでは、問い合わせ内にあり、FROM句にまだ存在しないテーブルは自動的にFROM句に追加されました。 これは、歴史的なPOSTGRESの振舞いと互換性がありますが、標準SQLとは反対です。 このオプションにより、標準と互換性がある動作を選択することができます。

  • Allow UPDATE ... SET col = DEFAULT (Rod)

    これによりUPDATEは列を宣言されたデフォルト値に設定することができます。

  • Allow expressions to be used in LIMIT/OFFSET (Tom)

    以前のリリースでは、LIMIT/OFFSETには定数のみを使用でき、式は使用できませんでした。

  • Implement CREATE TABLE AS EXECUTE (Neil, Peter)

E.3.3.5. オブジェクト操作に関する変更

  • Make CREATE SEQUENCE grammar more conforming to SQL 2003 (Neil)

  • Add statement-level triggers (Neil)

    これにより文の終了時にトリガを発行することができます。しかし、そのトリガは文によって変更されたすべての行にアクセスすることはできません。 この能力は将来のリリースで計画しています。

  • Add check constraints for domains (Rod)

    ドメインに検査制約を使用できるようになり、ドメインの有用性が非常に高くなりました。

  • Add ALTER DOMAIN (Rod)

    これにより既存のドメインの操作が可能です。

  • Fix several zero-column table bugs (Tom)

    PostgreSQLはゼロ列のテーブルをサポートします。 そうしたテーブルの使用時に発生する各種の不具合を修正しました。

  • Have ALTER TABLE ... ADD PRIMARY KEY add not-null constraint (Rod)

    以前のリリースでは、ALTER TABLE ... ADD PRIMARYは一意性制約を追加しますが、非NULL制約を追加しませんでした。 このリリースで修正されました。

  • Add ALTER TABLE ... WITHOUT OIDS (Rod)

    これにより新規行、更新された行がOID列を持つかどうかを制御することができます。 これは、ほとんどの場合、格納領域の節約に有用です。

  • Add ALTER SEQUENCE to modify minimum, maximum, increment, cache, cycle values (Rod)

  • Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera)

    このコマンドはpg_dumpで使用され、以前にクラスタ化された各テーブルのクラスタ用列を記録します。 この情報はデータベース全体のクラスタによって、以前にクラスタ化されたテーブルをクラスタ化するために使用されます。

  • Improve automatic type casting for domains (Rod, Tom)

  • Allow dollar signs in identifiers, except as first character (Tom)

  • Disallow dollar signs in operator names, so x=$1 works (Tom)

  • Allow copying table schema using LIKE subtable, also SQL 2003 feature INCLUDING DEFAULTS (Rod)

  • Add WITH GRANT OPTION clause to GRANT (Peter)

    これにより、GRANTは他のユーザにオブジェクトの権限を付与する能力を与えることができるようになります。

E.3.3.6. ユーティリティコマンドに関する変更

  • Add ON COMMIT clause to CREATE TABLE for temporary tables (Gavin)

    これにより、トランザクションのコミット時にテーブルの削除、もしくは、全行の削除を行なう機能が追加されました。

  • Allow cursors outside transactions using WITH HOLD (Neil)

    以前のリリースでは、カーソルはそのカーソルを作成したトランザクションの終端で削除されました。 カーソルはWITH HOLDオプションを付けて作成できるようになり、これにより、作成したトランザクションがコミットされた後でもそのカーソルにアクセスできるようになります。

  • FETCH 0 and MOVE 0 now do nothing (Bruce)

    以前のリリースでは、FETCH 0はすべての行を取り出し、MOVE 0はカーソルの終端まで移動しました。

  • Cause FETCH and MOVE to return the number of rows fetched/moved, or zero if at the beginning/end of cursor, per SQL standard (Bruce)

    以前のリリースでは、FETCHMOVEで返される行数は、実際に処理された行数を反映したものではありませんでした。

  • Properly handle SCROLL with cursors, or report an error (Neil)

    ある種の問い合わせに(前方、および、後方にスクロールする)ランダムアクセスを許可することは、何らかの追加作業なしでは行なうことができません。 カーソル生成時にSCROLLが付与された場合、この追加作業が行なわれます。 さらに、そのカーソルがNO SCROLLで生成された場合は、ランダムアクセスは許可されません。

  • Implement SQL-compatible options FIRST, LAST, ABSOLUTE n, RELATIVE n for FETCH and MOVE (Tom)

  • Allow EXPLAIN on DECLARE CURSOR (Tom)

  • Allow CLUSTER to use index marked as pre-clustered by default (Alvaro Herrera)

  • Allow CLUSTER to cluster all tables (Alvaro Herrera)

    これにより、過去にクラスタ化されたテーブルはすべて、単一コマンドで再度クラスタ化することができます。

  • Prevent CLUSTER on partial indexes (Tom)

  • Allow DOS and Mac line-endings in COPY files (Bruce)

  • Disallow literal carriage return as a data value, backslash-carriage-return and \r are still allowed (Bruce)

  • COPY changes (binary, \.) (Tom)

  • Recover from COPY failure cleanly (Tom)

  • Prevent possible memory leaks in COPY (Tom)

  • Make TRUNCATE transaction-safe (Rod)

    TRUNCATE がトランザクション内部で使用できるようになりました。 トランザクションが中断した場合、TRUNCATE で行なわれた変更は自動的にロールバックされます。

  • Allow prepare/bind of utility commands like FETCH and EXPLAIN (Tom)

  • Add EXPLAIN EXECUTE (Neil)

  • Improve VACUUM performance on indexes by reducing WAL traffic (Tom)

  • Functional indexes have been generalized into indexes on expressions (Tom)

    以前のリリースでは、関数インデックスは、1つ以上の列名に適用される単一の関数のみをサポートしていました。 このリリースでは、任意の種類のスカラ式を使用できます。

  • Have SHOW TRANSACTION ISOLATION match input to SET TRANSACTION ISOLATION (Tom)

  • Have COMMENT ON DATABASE on nonlocal database generate a warning (Rod)

    データベースのコメントは、データベースに局所的なテーブルに保存されます。 そのため、データベース上のコメントは各データベース内に保存されなければなりません。

  • Improve reliability of LISTEN/NOTIFY (Tom)

  • Allow REINDEX to reliably reindex nonshared system catalog indexes (Tom)

    これにより、以前のリリースでは必要であった、スタンドアロンセッションの必要なしにシステムテーブルのインデックスを再作成できます。 現時点で、インデックスの再作成のためにスタンドアロンセッションが必要なテーブルは、pg_databasepg_shadowpg_group.グローバルシステムテーブルのみです。

E.3.3.7. データ型と関数に関する変更

  • New server parameter extra_float_digits to control precision display of floating-point numbers (Pedro Ferreira, Tom)

    これにより、レグレッション試験で問題の原因となった、出力制度を制御することができます。

  • Allow +1300 as a numeric time-zone specifier, for FJST (Tom)

  • Remove rarely used functions oidrand, oidsrand, and userfntest functions (Neil)

  • Add md5() function to main server, already in contrib/pgcrypto (Joe)

    MD5関数がしばしば要求されました。 より複雑な暗号化のためにはcontrib/pgcryptoを使用して下さい。

  • Increase date range of timestamp (John Cochran)

  • Change EXTRACT(EPOCH FROM timestamp) so timestamp without time zone is assumed to be in local time, not GMT (Tom)

  • Trap division by zero in case the operating system doesn't prevent it (Tom)

  • Change the numeric data type internally to base 10000 (Tom)

  • New hostmask() function (Greg Wickham)

  • Fixes for to_char() and to_timestamp() (Karel)

  • Allow functions that can take any argument data type and return any data type, using anyelement and anyarray (Joe)

    これにより、任意のデータ型で動作できる関数を作成できるようになります。

  • Arrays may now be specified as ARRAY[1,2,3], ARRAY[['a','b'],['c','d']], or ARRAY[ARRAY[ARRAY[2]]] (Joe)

  • Allow proper comparisons for arrays, including ORDER BY and DISTINCT support (Joe)

  • Allow indexes on array columns (Joe)

  • Allow array concatenation with || (Joe)

  • Allow WHERE qualification expr op ANY/SOME/ALL (array_expr) (Joe)

    これにより、SELECT * FROM tab WHERE col IN (array_val).のような目的のために、配列が値のリストのように振舞うことができます。

  • New array functions array_append, array_cat, array_lower, array_prepend, array_to_string, array_upper, string_to_array (Joe)

  • Allow user defined aggregates to use polymorphic functions (Joe)

  • Allow assignments to empty arrays (Joe)

  • Allow 60 in seconds fields of time, timestamp, and interval input values (Tom)

    閏秒には60秒という値が必要でした。

  • Allow cidr data type to be cast to text (Tom)

  • Disallow invalid time zone names in SET TIMEZONE

  • Trim trailing spaces when char is cast to varchar or text (Tom)

  • Make float(p) measure the precision p in binary digits, not decimal digits (Tom)

  • Add IPv6 support to the inet and cidr data types (Michael Graff)

  • Add family() function to report whether address is IPv4 or IPv6 (Michael Graff)

  • Have SHOW datestyle generate output similar to that used by SET datestyle (Tom)

  • Make EXTRACT(TIMEZONE) and SET/SHOW TIME ZONE follow the SQL convention for the sign of time zone offsets, i.e., positive is east from UTC (Tom)

  • Fix date_trunc('quarter', ...) (BÖjthe ZoltÁn)

    以前のリリースのこの関数の呼び出しは不正確な値を返しました。

  • Make initcap() more compatible with Oracle (Mike Nolan)

    initcap() は空白文字の直後だけではなく、非英数字の直後の文字を大文字にするようになりました。

  • Allow only datestyle field order for date values not in ISO-8601 format (Greg)

  • Add new datestyle values MDY, DMY, and YMD to set input field order; honor US and European for backward compatibility (Tom)

  • String literals like 'now' or 'today' will no longer work as a column default. Use functions such as now(), current_timestamp instead. (change required for prepared statements) (Tom)

  • Treat NaN as larger than any other value in min()/max() (Tom)

    NaNは既にほとんどの目的で、通常の数値の後にソートされてましたが、min()max()ではこれを正しく取っていませんでした。

  • Prevent interval from suppressing :00 seconds display

  • New function pg_get_triggerdef(prettyprint) and pg_constraint_is_visible()

  • Allow time to be specified as 040506 or 0405 (Tom)

  • Input date order must now be YYYY-MM-DD (with 4-digit year) or match datestyle

  • Make pg_get_constraintdef to support unique, primary-key, and check constraints (Christopher)

E.3.3.8. サーバ側の言語に関する変更

  • Prevent PL/pgSQL crash when RETURN NEXT is used on a zero-row record variable (Tom)

  • Make PL/Python's spi_execute interface handle null values properly (Andrew Bosma)

  • Allow PL/pgSQL to declare variables of composite types without %ROWTYPE (Tom)

  • Fix PL/Python's _quote() function to handle big integers

  • Make PL/Python an untrusted language, now called plpythonu (Kevin Jacobs, Tom)

    Python言語は制限付き実行環境をサポートしなくなりました。 そのため、信頼されたバージョンのPL/Pythonは削除されました。 この状態が変われば、非スーパーユーザで使用可能なバージョンのPL/pythonは再び追加されるでしょう。

  • Allow polymorphic PL/pgSQL functions (Joe, Tom)

  • Allow polymorphic SQL functions (Joe)

  • Improved compiled function caching mechanism in PL/pgSQL with full support for polymorphism (Joe)

  • Add new parameter $0 in PL/pgSQL representing the function's actual return type (Joe)

  • Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)

  • Fixed PL/Tcl's spi_prepare to accept fully qualified type names in the parameter type list (Jan)

E.3.3.9. psql の変更

  • Add \pset pager always to always use pager (Greg)

    これにより行数がスクリーンの高さよりも少なかったとしても強制的にページャを使用します。 これは、複数のスクリーンの行を越えた行では価値があります。

  • Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)

  • Reorder \? help into groupings (Harald Armin Massa, Bruce)

  • Add backslash commands for listing schemas, casts, and conversions (Christopher)

  • \encoding now changes based on the server parameter client_encoding server (Tom)

    以前のリリースでは、SET client_encodingを使用した符号化方式の変更は\encodingに影響しませんでした。

  • Save editor buffer into readline history (Ross)

    \eを使用して問い合わせを編集する場合、その結果はreadlineの履歴に保存され、上矢印キーを使用して取り出すことができます。

  • Improve \d display (Christopher)

  • Enhance HTML mode to be more standards-conforming (Greg)

  • New \set AUTOCOMMIT off capability (Tom)

    これは、削除されたautocommitサーバパラメータの代わりになります。

  • New \set VERBOSITY to control error detail (Tom)

    これは新しいエラー報告の詳細を制御します。

  • New prompt escape sequence %x to show transaction status (Tom)

  • Long options for psql are now available on all platforms

E.3.3.10. pg_dump の変更

  • Multiple pg_dump fixes, including tar format and large objects

  • Allow pg_dump to dump specific schemas (Neil)

  • Make pg_dump preserve column storage characteristics (Christopher)

    これはALTER TABLE ... SET STORAGEの情報を保持します。

  • Make pg_dump preserve CLUSTER characteristics (Christopher)

  • Have pg_dumpall use GRANT/REVOKE to dump database-level privleges (Tom)

  • Allow pg_dumpall to support the options -a, -s, -x of pg_dump (Tom)

  • Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)

  • pg_dump options --use-set-session-authorization and --no-reconnect now do nothing, all dumps use SET SESSION AUTHORIZATION

    pg_dumpはユーザを切替えるための再接続を行なわないようになりました。 その代わりに常にSET SESSION AUTHORIZATIONを使用します。 これはリストア時のパスワード問い合わせを減少させます。

  • Long options for pg_dump are now available on all platforms

    PostgreSQLはその内部に長い名前のオプションを処理する関数を含むようになりました。

E.3.3.11. libpq の変更

  • Add function PQfreemem for freeing memory on Windows, suggested for NOTIFY (Bruce)

    Windowsは、あるライブラリで割り当てられたメモリを同じライブラリ内の関数で解放することを要求します。 そのため、free()では、libpqで割り当てられたメモリの解放を行なうことができません。 特にWindowsではPQfreemem がlibpqのメモリを解放する適切な方法です。 そして、これは他のプラットフォームでも推奨されます。

  • Document service capability, and add sample file (Bruce)

    これにより、クライアントはクライアントマシン上で中央にまとめられたファイル内の接続情報を検索することができます。

  • Make PQsetdbLogin have the same defaults as PQconnectdb (Tom)

  • Allow libpq to cleanly fail when result sets are too large (Tom)

  • Improve performance of function PGunescapeBytea (Ben Lamb)

  • Allow thread-safe libpq with configure option --enable-thread-safety (Lee Kindness, Philip Yarra)

  • Allow function pqInternalNotice to accept a format string and arguments instead of just a preformatted message (Tom, Sean Chittenden)

  • Control SSL negotiation with sslmode values disable, allow, prefer, and require (Jon Jensen)

  • Allow new error codes and levels of text (Tom)

  • Allow access to the underlying table and column of a query result (Tom)

    指定した結果セットに関連する、背後にあるテーブルと列の名前を把握したい問い合わせ構築ツールで役にたちます。

  • Allow access to the current transaction status (Tom)

  • Add ability to pass binary data directly to the server (Tom)

  • Add function PQexecPrepared and PQsendQueryPrepared functions which perform bind/execute of previously prepared statements (Tom)

E.3.3.12. JDBC に関する変更

  • Allow setNull on updateable result sets

  • Allow executeBatch on a prepared statement (Barry)

  • Support SSL connections (Barry)

  • Handle schema names in result sets (Paul Sorenson)

  • Add refcursor support (Nic Ferrier)

E.3.3.13. インタフェースに関する雑多な変更

  • Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)

  • Add Informix compatibility to ECPG (Michael)

    これにより、ECPGは、Informix拡張を使用して作成された組み込みCプログラムを処理できます。

  • Add type decimal to ECPG that is fixed length, for Informix (Michael)

  • Allow thread-safe embedded SQL programs with configure option --enable-thread-safety (Lee Kindness, Bruce)

    これにより、複数のスレッドが同時にデータベースにアクセスできます。

  • Moved Python client PyGreSQL to http://www.pygresql.org (Marc)

E.3.3.14. ソースコードに関する変更

  • Prevent need for separate platform geometry regression result files (Tom)

  • Improved PPC locking primitive (Reinhard Max)

  • New function palloc0 to allocate and clear memory (Bruce)

  • Fix locking code for s390x CPU (64-bit) (Tom)

  • Allow OpenBSD to use local ident credentials (William Ahern)

  • Make query plan trees read-only to executor (Tom)

  • Add Darwin startup scripts (David Wheeler)

  • Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)

  • Use our own version of getopt_long() if needed (Peter)

  • Convert administration scripts to C (Peter)

  • Bison >= 1.85 is now required to build the PostgreSQL grammar, if building from CVS

  • Merge documentation into one book (Peter)

  • Add Windows compatibility functions (Bruce)

  • Allow client interfaces to compile under MinGW (Bruce)

  • New ereport() function for error reporting (Tom)

  • Support Intel compiler on Linux (Peter)

  • Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)

  • Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)

  • Remove --enable-recode option from configure

    CREATE CONVERSIONがありますので、これはもはや不要です。

  • Generate a compile error if spinlock code is not found (Bruce)

    スピンロック用のコードがないプラットフォームは、セマフォをこっそりと使用するのではなく、コンパイルに失敗するようになります。 この失敗は、新しいconfigureオプションで無効にすることができます。

E.3.3.15. 寄贈物に関する変更

  • Change dbmirror license to BSD

  • Improve earthdistance (Bruno Wolff III)

  • Portability improvements to pgcrypto (Marko Kreen)

  • Prevent crash in xml (John Gray, Michael Richards)

  • Update oracle

  • Update mysql

  • Update cube (Bruno Wolff III)

  • Update earthdistance to use cube (Bruno Wolff III)

  • Update btree_gist (Oleg)

  • New tsearch2 full-text search module (Oleg, Teodor)

  • Add hash-based crosstab function to tablefuncs (Joe)

  • Add serial column to order connectby() siblings in tablefuncs (Nabil Sayegh,Joe)

  • Add named persistent connections to dblink (Shridhar Daithanka)

  • New pg_autovacuum allows automatic VACUUM (Matthew T. O'Connor)

  • Make pgbench honor environment variables PGHOST, PGPORT, PGUSER (Tatsuo)

  • Improve intarray (Teodor Sigaev)

  • Improve pgstattuple (Rod)

  • Fix bug in metaphone() in fuzzystrmatch

  • Improve adddepend (Rod)

  • Update spi/timetravel (BÖjthe ZoltÁn)

  • Fix dbase -s option and improve non-ASCII handling (Thomas Behr, MÁrcio Smiderle)

  • Remove array module because features now included by default (Joe)