リリース 7.4

PostgreSQL 9.0.0文書
前のページ | 巻戻し | 付録 E. リリースノート | 早送り | 次のページ

# E.114. リリース 7.4

> リリース日: 2003-11-17

## E.114.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に近く従うようになりました。

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

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

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

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

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

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

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

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

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

新しい自動vacuumツール。

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

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

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

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

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

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

- サーバ側での自動コミット設定は削除され、クライアントアプリケーションと言語内で再実装されました。 サーバ側の自動コミットは、自動コミットの振舞いを自身で制御したい言語やアプリケーションで、多くの問題の原因となっていました。 そのため、サーバから自動コミットは取り除かれ、個々のクライアントAPIに適切に追加されました。

- エラーメッセージの言葉使いがこのリリースで大きく変わりました。 これらのメッセージをより正確に、よりユーザ向けにするために非常に多くの労力を費やしました。 アプリケーションがエラーメッセージを解析してエラー条件の違いを検知するようであれば、その代わりに、新しいエラーコード機能を使用するように強く勧めます。

- 明示的な`JOIN`を使用する内部結合構文の振舞いが変わる可能性があります。 これらはより良く最適化されるようになったためです。

- 多くのサーバ設定パラメータの名前が、明確になるように変更されました。 主にログに関連したパラメータです。

- `FETCH 0` や `MOVE 0` は何も行なわないようになりました。 以前のリリースでは、`FETCH 0`は残存する全ての行を取り出し、`MOVE 0` はカーソルの最後まで移動していました。

- `FETCH` と `MOVE` は、実際に取り出し/移動した行の数を返すようになりました。 なお、カーソルがその先頭/最後にあった場合は0を返します。 以前のリリースは、そのコマンドに渡した行数を返し、実際に取り出した、あるいは、移動した行数を返しませんでした。

- `COPY` は、行末を表すシーケンスとして、復帰のみ、あるいは、復帰/改行を使用したファイルも処理できるようになりました。 復帰と改行そのものは、データ値としては受け付けられません。 その代わりに`\r` と`\n`を使用して下さい。

- `char(`n`)` から `varchar(`n`)` もしくは `text`への変換時、最後の空白は除去されるようになりました。 これは、ほとんどのユーザが常にそうなってほしいと期待している動作です。

- `float(`p`)` データ型は、10進数ではなく、2進数での`p`桁を表すようになりました。 新しいこの動作は、標準SQLに従います。

- 曖昧な日付値は、`datestyle`設定で指定した順序に一致しなければならなくなりました。 以前のリリースでは、`10/20/03`というデータ指定は、`datestyle`で日が最初であると指定していたとしても、10月と解釈されていました。 7.4では、日付の指定がその時点の`datestyle`設定では無効である場合、エラーが発生します。

- `oidrand`、`oidsrand`、`userfntest` 関数が削除されました。 これらの関数は、もう使用されることはないと決定されました。

- `'now'` or `'today'`時間が変動する日付/時刻値を指定する文字列リテラルは、列のデフォルト式で想定したとおりに働かなくなりました。 これらは、挿入時の時刻ではなく、テーブルを生成した時刻をそのデフォルトに設定するようになりました。 その代わりに、`now()`、`current_timestamp`、`current_date`といった関数を使用して下さい。

  以前のリリースでは、`'now'`といった文字列がテーブル生成時刻ではなく、`INSERT`時刻と解釈されるような特殊なコードがありました。 しかし、この回避方法は全ての場合に適用されませんでした。 リリース7.4では、デフォルト式は`now()` や `current_timestamp`といった関数を適切に使用して定義することが必須となりました。 これらは全ての状況で動作します。

- ドル印(`$`)は演算子名として使用できなくなりました。 その代わり、識別子の文字(先頭文字は除く)として使用できるようになりました。 これは、他のデータベースシステムとの互換性を向上させるため、および、パラメータのプレースホルダ(`$`n``)が演算子に近接していた場合の構文問題を防止するために行なわれました。

## E.114.3. 変更点

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

### E.114.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.114.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.114.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.114.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.114.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.114.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)

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

- 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, rather than an error (Rod)

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

- Improve reliability of `LISTEN`/`NOTIFY` (Tom)

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

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

### E.114.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 can 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 functions `pg_get_triggerdef(prettyprint)` and `pg_conversion_is_visible()` (Christopher)

- 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` support unique, primary-key, and check constraints (Christopher)

### E.114.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.114.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` (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.114.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 privileges (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.114.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 `PQunescapeBytea` (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.114.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.114.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.114.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.114.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)

前のページ | ホーム | 次のページ
リリース7.4.1 | 上に戻る | リリース7.3.21