他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

E.30. リリース8.4

リリース日: 2009-07-01

E.30.1. 概要

長年の開発の結果PostgreSQLは多くの領域においてその機能が完全なものになりました。 このリリースでは新機能(認証、監視、領域再利用など)に関しては的を絞った手法を取り、また最近の標準SQLで定義された機能を追加しています。 改良された主な点を以下に示します。

上記項目は以下の節で詳細に説明します。

E.30.2. バージョン8.4への移行

すべての過去のリリースからデータを移行する場合、pg_dumpを使用したダンプ/リストアが必要です。

既知の非互換性を以下に示します。

E.30.2.1. 一般

  • デフォルトでは64ビット整数型の日付時間型を使用します。(Neil Conway)

    これまでは、configure--enable-integer-datetimesオプションでこれを選択していました。 過去の動作を維持するためには--disable-integer-datetimes付きで構築してください。

  • ipccleanユーティリティコマンドを削除しました。(Bruce)

    このユーティリティは一部のプラットフォームでしか動作しませんでした。 ユーザは代わりに使用するオペレーティングシステムのツールを使用すべきです。

E.30.2.2. サーバの設定

  • ログファイルのサイズを小さくするためlog_min_messagesのデフォルト設定をwarningに変更しました(これまではnoticeでした)。(Tom)

  • max_prepared_transactionsのデフォルト設定をゼロに変更しました(これまでは5でした)。(Tom)

  • LOGメッセージレベルでdebug_print_parsedebug_print_rewrittenおよびdebug_print_planの出力が行われるようにしました。 これまではDEBUG1レベルでした。(Tom)

  • debug_pretty_printのデフォルトをonにしました。(Tom)

  • explain_pretty_printパラメータを削除しました(必要がなくなりました)。(Tom)

  • 他のログ処理用のオプションと同様に、スーパーユーザのみがlog_temp_filesを設定できるようにしました。(Simon Riggs)

  • log_filename%エスケープが存在しない場合、エポックタイムスタンプが自動的につかないようにしました。(Robert Haas)

    外部のログローテーションツールで使用できるようにログファイル名を固定化したいユーザが一部にいましたので、この変更がなされました。

  • recovery.confからlog_restartpointsを削除しました。 代わりにlog_checkpointsを使用してください。(Simon)

  • krb_realmおよびkrb_server_hostnameを削除しました。 これらはpg_hba.conf内で設定されるようになりました。(Magnus)

  • また、後述のようにpg_hba.confには大きな変更点があります。

E.30.2.3. 問い合わせ

  • TRUNCATEおよびLOCKが指定したテーブルの子テーブルにも適用されるよう変更しました。(Peter)

    これらのコマンドは子テーブルの処理を抑制できるようにONLYオプションを受け付けるようになりました。 これまでの動作が必要な場合このオプションを使用しなければなりません。

  • SELECT DISTINCTおよびUNION/INTERSECT/EXCEPTはソートされた出力を常に生成しないようになりました。(Tom)

    これまでは、こうした種類の問い合わせは常に、ソート・一意性処理(つまりソート後隣接する重複を除去)により重複行を取り除きました。 これがハッシュ処理により実装できるようになり、その結果ソートされた出力が生成されなくなりました。 出力順がソートされていることに依存するアプリケーションで推奨する修正方法はORDER BY句を付与することです。 短期的な回避方法として、enable_hashaggを無効にすることで過去の動作に戻すことができます。 しかしこれは性能を大きく劣化させる修正方法です。 しかしSELECT DISTINCT ONではハッシュ処理を使用しませんので、この動作には変更ありません。

  • 子テーブルは親テーブルのCHECK制約を強制的に継承します。(Alex Hunsaker, Nikhil Sontakke, Tom)

    これまではこうした制約を子テーブルで削除することができ、その結果、親テーブルの走査時に制約に反する行が現れることがありました。 これは非一貫性、かつ標準SQLに反するものと考えられました。

  • 負のLIMITまたは負のOFFSET値を、ゼロとして扱うことなく、許さなくなりました。(Simon)

  • トランザクションブロック外でのLOCK TABLEを許さなくなりました。(Tom)

    ロックは即座に解放されますので、こうした操作は無意味です。

  • シーケンスが追加のstart_value列を持つようになりました。(Zoltan Boszormenyi)

    これがALTER SEQUENCE ... RESTARTをサポートします。

E.30.2.4. 関数および演算子

  • numeric型の0の累乗がエラーとならずに、0を返すようになりました。 またnumeric型の0の0乗もエラーとならずに、1を返すようになりました。(Bruce)

    これは、従来のfloat8型における動作と一致します。

  • 浮動小数点における単項のマイナスがマイナスゼロを生成できるようになりました。(Tom)

    変更後の動作はIEEE標準との互換性がより高いものです。

  • エスケープ文字がLIKEパターンの最後の文字であった場合(つまりエスケープすべきものが存在しない場合)、エラーになります。(Tom)

    これまでは、こうしたエスケープ文字は警告なく無視されました。 このためアプリケーションのロジックエラーを隠してしまう可能性がありました。

  • これまでLIKEインデックス比較に使用されていた演算子~=~および~<>~を削除しました。(Tom)

    パターンインデックスは通常の等価演算子を使用するようになりました。

  • xpath()がその引数を変更することなくlibxmlに渡すようになりました。(Andrew)

    これは、XML引数が整形済みのXML文書でなければならないことを意味します。 これまでのコードではXML断片も許可するようにもくろんでいましたが、うまく動作しませんでした。

  • xmlelement()が要素値と同様に属性値を整形するようになりました(Peter)

    これまでは、属性値は通常のSQL出力の動作に従って成形されていました。 これはXMLの規約に時として合致しません。

  • libxmlを使用する関数向けのメモリ管理を作成し直しました。(Tom)

    この変更により、PL/Perlや他の追加コードにおけるlibxmlを使用した場合とのいくつかの互換性に関する問題が避けられるはずです。

  • ハッシュ関数用により高速なアルゴリズムを採用しました。(Bob Jenkinsの作業を元としたKenneth Marshall)

    組み込みのハッシュ関数の多くで、リトルエンディアンマシンとビッグエンディアンマシンとで異なる結果になるようになりました。

E.30.2.4.1. 時間に関する関数および演算子

  • DateStyleinterval型の出力書式を制御しないようになりました。 代わりとなる新しいIntervalStyle変数が存在します。(Ron Mayer)

  • timestampおよびintervalの出力における秒の小数部の扱いに関する一貫性を向上しました。(Ron Mayer)

    これにより、小数部の桁が以前と異なる表示になったり、切り捨てではなく四捨五入になったりする可能性があります。

  • to_char()の翻訳された月名、日名がLC_MESSAGESではなくLC_TIMEに依存するようになりました。(Euler Taveira de Oliveira)

  • to_date()およびto_timestamp()が無効な入力に対してより一貫したエラー報告を行うようにしました。(Brendan Jurd)

    これまでのバージョンでは、書式文字列に一致しない入力を無視したり、警告なく誤解釈したりすることがよくありました。 こうした状況でエラーとなるようになりました。

  • 午前/午後(AM/PM)および紀元(BC/AD)の書式指定に関して大文字小文字の厳密な違いを必要としないようにto_timestamp()を修正しました。(Brendan Jurd)

    例えばadという入力値はAD書式文字列に一致するようになりました。

E.30.3. 変更点

PostgreSQL 8.4とこれまでのメジャーリリースとの間の変更点についての詳細を以下に示します。

E.30.3.1. 性能

  • オプティマイザの統計情報計算を改良しました。(Jan Urbanski, Tom)

    特に全文検索演算子に関する推定が大きく改良されました。

  • ハッシュ処理を用いたSELECT DISTINCTおよびUNION/INTERSECT/EXCEPTが可能になりました。(Tom)

    これは、こうした種類の問い合わせが自動的にソートされた出力を生成しなくなったことを意味します。

  • 半結合および反結合に関して明確な概念を作成しました。(Tom)

    この作業により、IN (SELECT ...)句に関するこれまでのとってつけたような扱いを形式化しました。 さらにこれをEXISTSおよびNOT EXISTS句にも拡張しました。 これによりEXISTSおよびNOT EXISTS問い合わせの計画作成が非常に改善されるはずです。 一般的には、論理的には同一であるINEXISTS句が、同程度の性能を持つようになりました。 これまではよくINの方が勝っていました。

  • 外部結語が背後にある副問い合わせの最適化を改良しました。(Tom)

    これまでは、副問い合わせまたはビューが外部結合のNULLを持ち得る側にそれが現れる場合や厳密でない式(例えば定数)がその結果リストに含まれる場合、非常によく最適化することができませんでした。

  • Boyer-Moore-Horspool検索を使用することで、text_position()と関連する関数の性能を改良しました。(David Rowley)

    これは特に長い検索パターンで有用です。

  • 要求があった時にのみファイルに書き込むことにより、統計情報集計ファイルの書き込みによるI/O負荷が低減しました。 (Martin Pihlak)

  • 一括挿入の性能を改良しました。(Robert Haas, Simon)

  • default_statistics_targetのデフォルト値を10から100に増やしました。(Greg Sabino Mullane, Tom)

    また最大値も1000から10000に増やしました。

  • 継承またはUNION ALLを含む問い合わせにおいて、デフォルトでconstraint_exclusion検査を行います。(Tom)

    constraint_exclusionの新しい設定partitionがこの動作を指定するために追加されました。

  • ビットマップインデックス走査においてI/Oの先読みが可能になりました。(Greg Stark)

    先読み量はeffective_io_concurrencyにより制御されます。 この機能はカーネルがposix_fadvise()サポートを有する場合のみ利用可能です。

  • FROM句内の単純な集合を返すSQL関数をインライン化しました。(Richard Rowell)

  • 外側のリレーション内で特に一般的な値が結合キー値となる特別な状況を考慮することにより、複数バッチのハッシュ結合の性能を向上しました。(Bryce Cutt, Ramon Lawrence)

  • "physical tlist"を抑制することにより複数バッチのハッシュ結合における一時データ量を軽減しました。(Michael Henderson, Ramon Lawrence)

  • CREATE INDEX CONCURRENTLY中のトランザクション内待機状態セッションを待機しないようにしました。(Simon)

  • 共有キャッシュの無効化の性能を向上しました。(Tom)

E.30.3.2. サーバ

E.30.3.2.1. 設定

  • pg_settingsが有効な値を表示できるようにするために、多くのpostgresql.conf設定が列挙型の値に変換されます。(Magnus)

  • プランナが取り出すものと仮定するカーソル行数を制御するためのcursor_tuple_fractionパラメータを追加しました。(Robert Hell)

  • postgresql.confにおけるカスタム変数クラスの名前にアンダースコアが使用できるようになりました。(Tom)

E.30.3.2.2. 認証とセキュリティ

  • (安全ではない)crypt認証方式サポートを削除しました。(Magnus)

    使用することができる平文ではないパスワード方式はまったくありませんでしたので、これは実質的にPostgreSQL 7.2クライアントライブラリで廃止されていました。

  • pg_ident.conf内の正規表現をサポートします。(Magnus)

  • Kerberos/GSSAPIパラメータがpostmasterを再起動させることなく変更できるようになりました。(Magnus)

  • サーバ証明書ファイル内のSSL証明書チェインをサポートします。(Andrew Gierth)

    完全な証明書チェインを含めることにより、クライアントは、商用CAを使用する場合によくある、ローカルに保持した中間CAの証明書をすべてに持たせることなく証明書を検証できるようになります。

  • db_user_namespaceを有効にし、MD5認証を組み合わせて使用した場合に、適切なエラーメッセージを報告するようになりました。(Bruce)

E.30.3.2.3. pg_hba.conf

  • すべての認証オプションがname=value構文を使用するように変更しました。(Magnus)

    これによりldappamident認証方式において互換性がない変更がなされました。 これらの方式を持つpg_hba.confはすべて新しい書式を使う形に書き換えなければなりません。

  • ident sameuserオプションを削除しました。 代わりにこれをユーザマップの指定がない場合のデフォルトの動作としました。(Magnus)

  • すべての外部認証方式においてユーザマップパラメータを許可します。(Magnus)

    これまではユーザマップはident認証でのみサポートされていました。

  • クライアント証明要求を制御するためのclientcertオプションを追加しました。(Magnus)

    これまではサーバのデータディレクトリ内のルート証明書の有無により制御されていました。

  • SSL証明書経由のユーザ認証を可能にするcert認証方式を追加しました。(Magnus)

    これまでのSSL証明書はクライアントが証明書へのアクセスを持つかどうか検証するのみで、ユーザの認証は行いませんでした。

  • krb5gssapisspiのレルムおよびkrb5のホスト設定がpg_hba.conf内で指定できるようになりました。(Magnus)

    これらはpostgresql.conf内の設定を上書きします。

  • krb5gssapisspi方式向けのinclude_realmパラメータを追加しました。(Magnus)

    これにより異なるレルムからの同一ユーザがユーザマップを使用する別のデータベースユーザとして認証できるようになります。

  • 即座にエラーを報告するために、ロード時にpg_hba.confを完全に解析します。(Magnus)

    これまでは、ファイル内のほとんどのエラーは、クライアントが接続しようとするまで検知されませんでした。 このためエラーのあるファイルによりシステムを使用できないようにしてしまいます。 新しい動作では、エラーが再読み込み時に検知されると、おかしなファイルは拒絶され、postmasterは過去の値を用いて継続します。

  • pg_hba.conf内の最初のエラーを検知した後中断するのではなく、すべての解析エラーを表示します。(Selena Deckelmann)

  • SolarisにおいてUnixドメインソケット経由でのident認証をサポートします。(Garick Hamlin)

E.30.3.2.4. 継続的なアーカイブ処理

  • チェックポイントをできる限り早い終了を強制するためのオプションをpg_start_backup()に提供します。(Tom)

    デフォルトの動作では過度なI/O消費を抑えますが、同時実行の問い合わせ活動がなければ意味がありません。

  • 変更されたWALファイルがアーカイブされるまでpg_stop_backup()を待機させます。(Simon)

    これはpg_stop_backup()完了時にバックアップが有効になったことを保証します。

  • アーカイブが有効な場合、すべてのトランザクションを即座にアーカイブすることができるように、シャットダウン時に最終WALセグメントをローテートします。(Guillaume Smet, Heikki)

  • 継続的なアーカイブ処理のベースバックアップが実行している間、"smart"シャットダウンを遅延します。(Laurenz Albe)

  • "fast"シャットダウンが要求された場合は継続的なアーカイブ処理のベースバックアップをキャンセルします。(Laurenz Albe)

  • recovery.confの論理型の変数がpostgresql.confの論理型変数と同じ範囲の文字列を取ることができるようになりました。(Bruce)

E.30.3.2.5. 監視

  • PostgreSQL設定ファイルが最後に読み込まれた日時を報告するpg_conf_load_time()を追加しました。(George Gensure)

  • 安全にバックエンドを停止させるpg_terminate_backend()を追加しました(SIGTERMシグナルも動作します)。(Tom, Bruce)

    常に単一バックエンドに対してSIGTERMを行うことは可能でしたが、これまでは未サポートとされていました。 この状況を試験したところいくつか不具合があり、それらを修正しました。

  • ユーザ定義関数呼び出し数と実行時間を追跡する機能を追加しました。(Martin Pihlak)

    関数統計情報は新しいシステムビューpg_stat_user_functionsに出力されます。 追跡は新しいパラメータtrack_functionsにより制御されます。

  • pg_stat_activity内の最大問い合わせ文字列サイズの指定がtrack_activity_query_sizeパラメータでできるようになりました。(Thomas Lee)

  • 性能改善を目的として、syslogに送信する最大行数を増やしました。(Tom)

  • 読み取りのみの設定変数segment_sizewal_block_sizewal_segment_sizeを追加しました。(Bernd Helmle)

  • デッドロックの報告時に、サーバログにデッドロックに関わるすべての問い合わせテキストを記録します。(Itagaki Takahiro)

  • 特定のプロセスIDに関する情報を返すpg_stat_get_activity(pid)関数を追加しました。(Magnus)

  • サーバの統計情報ファイルの場所をstats_temp_directory経由で指定できるようにしました。(Magnus)

    これにより統計情報ファイルをRAM上のディレクトリに格納させて、I/O要求を低減させることができます。 再起動に渡って保持できるように、起動時または終了時にファイルは通常の場所($PGDATA/global/)にコピーされます。

E.30.3.3. 問い合わせ

  • WINDOW関数のサポートを追加しました。(Hitoshi Harada)

  • WITH句(CTE)のサポートを追加しました。これにはWITH RECURSIVEが含まれます。(Yoshiyuki Asaba, Tatsuo Ishii, Tom)

  • TABLEコマンドを追加しました。(Peter)

    TABLE tablenameは、SELECT * FROM tablenameの標準SQLにおける省略形です。

  • SELECT(またはRETURNING)の列出力ラベルを指定する時ASを省略可能にしました。(Hiroshi Saito)

    これは列ラベルがPostgreSQLキーワードではない場合のみ動作します。 その他の場合はASはまだ必要です。

  • SELECT結果リスト内において集合を返す関数を、タプルストアを介して結果を返す関数であったとしてもサポートします。(Tom)

    具体的には、これはPL/pgSQLや他のPL言語で作成された関数をこの方法で呼び出すことができるようになったことを意味します。

  • 集約問い合わせやグループ化問い合わせの出力において集合を返す関数をサポートします。(Tom)

  • SELECT FOR UPDATE/SHAREが継承ツリー上に動作できるようになりました。(Tom)

  • SQL/MED用の基盤を追加しました。(Martin Pihlak, Peter)

    リモートまたは外部SQL/MED機能はまだありません。 しかしこの変更は、dblinkplproxyのようなモジュール向けの接続情報の管理のための標準化と陳腐化されないシステムを提供します。

  • 参照されるスキーマ、関数、演算子、演算子クラスが変更された時にキャッシュされた計画を無効化します。(Martin Pihlak, Tom)

    これは、DDLの変更にその場で応答するシステム機能を改良します。

  • 複合型の比較を可能とし、かつ、匿名複合型の配列を可能としました。(Tom)

    これにより、row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])のような式が可能になります。 これは特に再帰問い合わせで有用です。

  • Uniode文字列リテラルと、たとえばU&'d\0061t\+000061'といったコードポイントを使用した識別子指定のサポートを追加しました。(Peter)

  • 文字列リテラルおよびCOPYデータ内の\000を拒絶します。(Tom)

    これまでは、これは受け付けられましたが、文字列定数の終端という作用がありました。

  • エラー位置を報告するパーサ機能を改良しました。(Tom)

    エラー位置がデータ型の不一致などの多くの意味的なエラーに対して報告されるようになりました。 これまでは位置づけすることができませんでした。

E.30.3.3.1. TRUNCATE

  • 文レベルのON TRUNCATEトリガをサポートします。(Simon)

  • TRUNCATE TABLERESTART/CONTINUE IDENTITYオプションを追加しました。(Zoltan Boszormenyi)

    シーケンスの開始値をALTER SEQUENCE START WITHで変更できます。

  • TRUNCATE tab1, tab1が成功するようになりました。(Bruce)

  • 独立したTRUNCATE権限を追加しました。(Robert Haas)

E.30.3.3.2. EXPLAIN

  • EXPLAIN VERBOSEが計画ノード毎に出力列を表示するようにしました。(Tom)

    これまでのEXPLAIN VERBOSEでは問い合わせ計画の内部表現を出力しました。 (この動作はdebug_print_planを介して利用できるようになりました。)

  • EXPLAINが個々のテーブルの副計画と初期計画とを識別するようにしました。(Tom)

  • EXPLAINdebug_print_planを順守するようにしました。(Tom)

  • CREATE TABLE ASに対するEXPLAINが可能です。(Peter)

E.30.3.3.3. LIMIT/OFFSET

  • LIMITおよびOFFSET内の副問い合わせが可能です。(Tom)

  • LIMIT/OFFSET機能に標準SQL構文を追加しました。(Peter)

    すなわちOFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS} ONLYです。

E.30.3.4. オブジェクト操作

  • 列レベル権限のサポートを追加しました。(Stephen Frost, KaiGai Kohei)

  • CASCADEの必要性を軽減させるために複数オブジェクトのDROP操作を再作成しました。(Alex Hunsaker)

    例えば、テーブルBがテーブル Aに依存している場合、コマンドDROP TABLE A, BCASCADEオプションを必要としないようになりました。

  • オブジェクトの依存関係を削除を開始する前にロックを確実に取得することにより、同時実行のDROPコマンドに関する各種問題を修正しました。(Tom)

  • DROPコマンド中の依存関係の報告を改良しました。(Tom)

  • 標準SQLに従い、CREATE TABLE ASWITH [NO] DATA句を追加しました。(Peter, Tom)

  • ユーザ定義のI/O変換キャストのサポートを追加しました。(Heikki)

  • CREATE AGGREGATEinternal遷移データ型を使用できるようにしました。 (Tom)

  • CREATE TYPELIKE句を追加しました。(Tom)

    これにより既存の型と同じ内部表現を使用するデータ型の作成が簡易になりました。

  • ユーザ定義の基本型に対する型カテゴリと"好ましい"状態指定を可能としました。(Tom)

    これにより、ユーザ定義型の強制動作についてより多くの制御が可能になります。

  • CREATE OR REPLACE VIEWがビューの最後に列を追加できるようにしました。(Robert Haas)

E.30.3.4.1. ALTER

  • ALTER TYPE RENAMEを追加しました。(Petr Jelinek)

  • シーケンスが初期値をリセットできるようにALTER SEQUENCE ... RESTART (パラメータなし)を追加しました。(Zoltan Boszormenyi)

  • テーブル、インデックス、シーケンス、ビューを合理的に組み合わせられるようにALTER TABLEの構文を変更しました。(Tom)

    この変更により以下の新しい構文を使用することができます。

    • ALTER SEQUENCE OWNER TO

    • ALTER VIEW ALTER COLUMN SET/DROP DEFAULT

    • ALTER VIEW OWNER TO

    • ALTER VIEW SET SCHEMA

    実際ここでは新しい機能はありませんが、これまではこれらを行うためにはALTER TABLEと記述する必要があり、混乱を招きました。

  • ALTER TABLE ... ALTER COLUMN ... SET DATA TYPE構文サポートを追加しました。(Peter)

    これはすでにサポートされていた機能に関する標準SQLの構文です。

  • 物理的にOID値を削除するためにALTER TABLE SET WITHOUT OIDSがテーブルを書き換えるようにしました。(Tom)

    また、OIDを追加できるようにテーブルを書き換えるためのALTER TABLE SET WITH OIDSを追加しました。

E.30.3.4.2. データベース操作

  • 未コミットな準備済みトランザクションが原因でCREATE/DROP/RENAME DATABASEが失敗した場合の報告を改良しました。(Tom)

  • LC_COLLATEおよびLC_CTYPEをデータベース単位の設定にしました。(Radek Strnad, Heikki)

    これはこれまでデータベース単位の設定であった照合順を符号化方式に似せました。

  • データベース符号化方式、照合順(LC_COLLATE)、文字クラス(LC_CTYPE)が一致するかどうかの検査を改良しました。(Heikki, Tom)

    新しいデータベースの符号化方式とロケール設定がtemplate0からコピーした場合のみ変更できることに特に注意してください。 これは設定が一致しないデータを複製する可能性を防止します。

  • データベースを新しいテーブル空間に移動させるALTER DATABASE SET TABLESPACEを追加しました。(Guillaume Lelarge, Bernd Helmle)

E.30.3.5. ユーティリティ操作

  • CLUSTERコマンドとclusterdbVERBOSEオプションを追加しました。(Jim Cox)

  • 待機中のトリガイベントの記録に必要なメモリを減らしました。(Tom)

E.30.3.5.1. インデックス

  • ハッシュインデックスの構築速度とアクセス速度を大幅に改良しました。(Tom Raney, Shreya Bhargava)

    これによりハッシュインデックスがB-Treeインデックスより高速になる場合もあり得ます。 しかしハッシュインデックスはまだクラッシュに対して安全ではありません。

  • ハッシュインデックスがインデックス対象の列の完全な値ではなく、ハッシュコードのみを保管するようにしました。(Xiao Meng)

    これによりインデックス対象の列が長い場合ハッシュインデックスのサイズが大きく減少し、性能が向上しました。

  • GINインデックスにおける高速更新オプションを実装しました。(Teodor, Oleg)

    このオプションは大きく更新速度を向上しますが、検索速度に小さな影響が現れます。

  • xxx_pattern_opsインデックスがLIKEだけではなく、単純な等価演算子でも使用できるようになりました。(Tom)

E.30.3.5.2. 全文検索

  • GIN重みづけ検索を全文検索インデックスに対して行う際、@@@を使用する必要性をなくしました。(Tom, Teodor)

    通常の@@テキスト検索演算子を代わりに使用することができます。

  • @@テキスト検索操作用のオプティマイザの選択性関数を追加しました。(Jan Urbanski)

  • 全文検索において前方一致が可能になりました。(Teodor Sigaev, Oleg Bartunov)

  • 複数列に対するGINインデックスをサポートします。(Teodor Sigaev)

  • ネパール語とヒンディーアルファベットのサポートを改良しました。(Teodor)

E.30.3.5.3. VACUUM

  • 独立したリレーション単位の"フォーク"ファイル内で空き領域を追跡します。(Heikki)

    VACUUMで見つかった空き領域は、固定長の共有メモリ領域ではなく*_fsmファイルに記録されるようになりました。 max_fsm_pagesmax_fsm_relations設定は削除され、空き領域管理の管理作業を大きく簡易化しました。

  • バキューム処理を必要としないページを追跡する可視性マップを追加しました。(Heikki)

    これにより、テーブルのごく一部のみがバキューム処理を必要とする場合に、VACUUMがテーブルすべてを走査することを防ぐことができます。 可視性マップはリレーション単位の"フォーク"ファイル内に保管されます。

  • VACUUMが可視性マップを無視し、そしてタプルを凍結するためにテーブル全体に対して行われなければならないタイミングを制御するvacuum_freeze_table_ageパラメータを追加しました。(Heikki)

  • トランザクションスナップショットをより入念に追跡します。(Alvaro)

    これは、長期のトランザクションが存在する領域を回収する、VACUUM能力を向上します。

  • リレーション単位の自動バキュームの指定する機能とCREATE TABLE内でTOASTパラメータを指定する機能を追加しました。(Alvaro, Euler Taveira de Oliveira)

    自動バキュームオプションはシステムテーブル内に保管するために使用されます。

  • vacuumdb--freezeオプションを追加しました。(Bruce)

E.30.3.6. データ型

  • 全文検索類義語辞書用にCaseSensitiveオプションを追加しました。(Simon)

  • NUMERIC除算の精度を改良しました。(Tom)

  • int2int8を使用した基本算術演算子を追加しました。(Tom)

    これは、一部の状況における明示的なキャストの必要性を除去します。

  • UUIDの入力にて4桁ごとに省略可能なハイフンが受け付けられるようになりました。(Robert Haas)

  • 論理データ型の入力としてon/offを可能としました。(Itagaki Takahiro)

  • numeric型の入力文字列においてNaNの前後の空白を許可します。(Sam Mason)

E.30.3.6.1. 時間に関するデータ型

  • 0 BC0000000という年を拒絶します。(Tom)

    これまでは、これらは1 BCとして解釈されました。 (注意:0および 00という年はまだ2000年であると仮定されます。)

  • デフォルトの既知の時間帯省略形リストにSGT(シンガポール時間)を含めました。(Tom)

  • date型の値としてinfinityおよび-infinityをサポートします。(Tom)

  • intervalリテラルの解析をより標準に近づけました。(Tom, Ron Mayer)

    例えばINTERVAL '1' YEARは想定通りになりました。

  • 標準SQLに従うために、intervalの秒の端数に関する精度をsecondキーワードの後に指定できるようにしました。(Tom)

    これまでは、この精度はintervalキーワードの後に指定する必要がありました。 (後方互換性のためこの構文はまだサポートされますが、廃止予定です。) データ型の定義は標準の書式を使用して出力されるようになりました。

  • IS0 8601 interval構文をサポートします。(Ron Mayer, Kevin Grittner)

    例えば、INTERVAL 'P1Y2M3DT4H5M6.7S'がサポートされるようになりました。

  • interval値の出力方法を制御するIntervalStyleパラメータを追加しました。(Ron Mayer)

    有効な値は、postgrespostgres_verbosesql_standardiso_8601です。 この設定はまた、一部のフィールドのみが正または負の指定を持つ場合の、負のintervalの取り扱い方法を制御します。

  • timestampおよびinterval出力における秒の端数の取扱いの一貫性を改良しました。 (Ron Mayer)

E.30.3.6.2. 配列

  • ARRAY[...]::integer[]などARRAY[]式に適用されるキャストの扱いを改良しました。(Brendan Jurd)

    これまでのPostgreSQLは、その後に続くキャストを参照することなく、ARRAY[]式のデータ型を決定しようと試みました。 これは多くの場合、特にARRAY[]式が空またはNULLなどの曖昧な項目しか含まないような場合で不要に失敗することがあり得ました。 配列要素が必要とする型を決定する時にキャストが考慮されるようになりました。

  • 標準SQLに一致させるため、ARRAY次元のSQL構文を省略可能にしました。(Peter)

  • 配列次元数を返すarray_ndims()を追加しました。(Robert Haas)

  • 配列の指定次元の長さを返す array_length()を追加しました。(Jim Nasby, Robert Haas, Peter Eisentraut)

  • すべての集約した値を単一の配列として返すarray_agg()集約関数を追加しました。(Robert Haas, Jeff Davis, Peter)

  • 配列を個々の行値に変換するunnest()を追加しました。(Tom)

    これはarray_agg()の反対です。

  • 初期値を持つ配列を作成するarray_fill()を追加しました。(Pavel Stehule)

  • 配列の添え字範囲を簡単に生成するgenerate_subscripts()を追加しました。(Pavel Stehule)

E.30.3.6.3. 大規模値の格納(TOAST

  • 値に対するTOAST圧縮は32バイト程度とみなします(これまでは256バイト)。(Greg Stark)

  • TOAST圧縮を使用する前に空き領域が最低25%必要です。 (これまでは小規模値では20%、大規模値ではその規模程度が必要でした。)(Greg)

  • TOAST可能なフィールドが大規模フィールドと小規模フィールドとが混在する行に対して、大規模値を優先して行外に押し出し、小規模な値を不要に圧縮することを防ぐことができるように、TOASTの発見的処理過程を改良しました。

E.30.3.7. 関数

  • setseed()-1から1までの値(0から1ではありません)を受け付けられることを文書化し、そしてその有効範囲を強制するようにしました。(Kris Jurka)

  • lo_import(filename, oid)サーバサイド関数を追加しました。(Tatsuo)

  • quote_nullable()を追加しました。 この動作はquote_literal()と似ていますが、引数NULLに対して文字列NULLを返します。(Brendan Jurd)

  • 複数のテキスト断片を抽出できるように全文検索headline()関数を改良しました。(Sushant Sinha)

  • データの変更がない更新に対するオーバーヘッドを防止するためのsuppress_redundant_updates_trigger()トリガ関数を追加しました。(Andrew)

  • numeric除算を丸めなく実行するdiv(numeric, numeric)を追加しました。(Tom)

  • generate_series()timestamp版とtimestamptz版を追加しました。(Hitoshi Harada)

E.30.3.7.1. オブジェクト情報関数

  • 現在実行中の問い合わせを知る必要がある関数による使用を目的としたcurrent_query()を実装しました。(Tomas Doran)

  • パーサのキーワードのリストを返すpg_get_keywords()を追加しました。(Dave Page)

  • 関数定義を見るためのpg_get_functiondef()を追加しました。(Abhijit Menon-Sen)

  • 変数を含まない式のデパース時にpg_get_expr()2番目の引数をゼロにすることができます。

  • pg_relation_size()regclassを使用するように変更しました。(Heikki)

    pg_relation_size(data_type_name)は動作しなくなりました。

  • pg_settingsの出力にboot_val列とreset_val列を追加しました。(Greg Smith)

  • 設定ファイル内の変数集合のために、pg_settingsの出力にソースファイル名と行番号列を追加しました。(Magnus, Alvaro)

    セキュリティ上の理由により、これらの列はスーパーユーザのみが参照することができます。

  • CURRENT_CATALOGCURRENT_SCHEMASET CATALOGSET SCHEMAのサポートを追加しました。(Peter)

    これらは既存の機能に対して標準SQL構文を提供します。

  • 任意の値のデータ型を返すpg_typeof()を追加しました。(Brendan Jurd)

  • version()は、サーバが32ビットバイナリか64ビットバイナリかについての情報を返すようにしました。(Bruce)

  • 情報スキーマの列is_insertable_intois_updatableが一貫性を持つ動作をするよう修正しました。(Peter)

  • 情報スキーマのdatetime_precision列の動作を改良しました。 (Peter)

    これらの列はdate列ではゼロを、timetimestamp、精度宣言がないintervalでは6(デフォルト精度)を表示するようになりました。 これまではNULLを表示していました。

  • 残りの集合を返す組み込み関数がOUTパラメータを使用するように変換しました。(Jaime Casanova)

    これにより次の関数を列リストの指定を行わずに呼び出すことができるようになります。 pg_show_all_settings()pg_lock_status()pg_prepared_xact()pg_prepared_statement()pg_cursor()

  • pg_*_is_visible()およびhas_*_privilege()関数が無効なOIDに対して、エラーとならずにNULLを返すようにしました。(Tom)

  • 1度の呼び出しで複数の権限の論理和を調査できるようにhas_*_privilege()関数を拡張しました。(Stephen Frost, Tom)

  • has_column_privilege()およびhas_any_column_privilege()関数を追加しました。(Stephen Frost, Tom)

E.30.3.7.2. 関数作成

  • 可変長引数の関数(引数の数が変動する関数)をサポートします。(Pavel Stehule)

    終端までの引数のみを省略可能とすることができます。 またこれらはすべて同じデータ型でなければなりません。

  • 関数引数のデフォルト値をサポートします。(Pavel Stehule)

  • CREATE FUNCTION ... RETURNS TABLE句を追加しました。(Pavel Stehule)

  • SQL言語関数がINSERT/UPDATE/DELETE RETURNING句の出力を返すことができます。(Tom)

E.30.3.7.3. PL/pgSQLサーバサイド言語

  • より簡単に動的問い合わせ文字列にデータを挿入するためのEXECUTE USINGをサポートします。(Pavel Stehule)

  • FORループを使用するカーソルの結果全体を繰り返すことが可能になりました。(Pavel Stehule)

  • RETURN QUERY EXECUTEをサポートします。(Pavel Stehule)

  • RAISEコマンドを改良しました。(Pavel Stehule)

    • DETAILおよびHINTフィールドをサポートします。

    • SQLSTATEエラーコードの指定をサポートします。

    • 例外名パラメータをサポートします。

    • そこで起こったエラーを再発行できるように例外ブロックにおいてパラメータ無しのRAISEを可能としました。

  • EXCEPTIONリスト内でSQLSTATEコードの指定を可能としました。(Pavel Stehule)

    これは独自のSQLSTATEコードを扱う際に有用です。

  • CASE文をサポートします。(Pavel Stehule)

  • RETURN QUERYが特殊なFOUNDGET DIAGNOSTICS ROW_COUNT変数を設定するようにしました。(Pavel Stehule)

  • FETCHおよびMOVEGET DIAGNOSTICS ROW_COUNT変数を設定するようにしました。(Andrew Gierth)

  • ラベル無しのEXITが常にもっとも内側のループを抜けるようにしました。(Tom)

    これまでは、他のループよりも入れ子に最も近いBEGINブロックが存在すると、そのブロックが代わりに終了します。 新しい動作はOracle(TM)と一致するもので、かつ、これまで文書で説明していたものです。

  • 文字列リテラルと入れ子状ブロックのコメントの処理が主SQLパーサの処理と一致するようにしました。(Tom)

    具体的には、RAISE内の書式文字列が、standard_conforming_stringsに従うようになることを含め、他の文字列リテラルと同じように動作するようになりました。 またこの変更は、standard_conforming_stringsが有効な場合に有効なコマンドが失敗するといった他の問題も修正します。

  • 入れ子状の例外ブロックの深さが異なる場所で、同一関数が呼び出された時のメモリリークを防止します。(Tom)

E.30.3.8. クライアントアプリケーション

  • pg_ctl restartがコマンドライン引数を保持するよう修正しました。(Bruce)

  • -W/--passwordオプションを持つすべてのユーティリティにおいて、パスワードプロンプト表示を防止する-w/--no-passwordオプションを追加しました。(Peter)

  • createdbcreateuserdropdbdropuser-q(メッセージ無し)オプションを削除しました。(Peter)

    これらのオプションはPostgreSQL 8.3から効果がないものでした。

E.30.3.8.1. psql

  • 起動時の冗長なバナーを除去しました。単にhelpを勧めるだけのものになりました。(Joshua Drake)

  • helpが一般的なバックスラッシュコマンドを表示するようにしました。(Greg Sabino Mullane)

  • 画面幅に合わせて出力を、または、\pset columnsが設定された場合はファイルもしくはパイプへの出力も改行する、\pset format wrappedモードを追加しました。(Bryce Nesbitt)

  • \pset内でonおよびoffだけでなく、サポートされるすべての論理型の値の綴りが利用できるようにしました。(Bruce)

    これまでは、"off"以外の文字列は警告なくtrueを意味するものと解釈されていました。 psqlは認識できない綴りについて警告を出すようになりました(ただしまだtrueと解釈されます)。

  • 幅が広い出力の際にページャを使用します。(Bruce)

  • 一文字のバックスラッシュコマンドと最初の引数との間に空白を要求します。(Bernd Helmle)

    これにより歴史的なあいまいさの根源がなくなりました。

  • スキーマ修飾および引用符付きの識別子に対するタブ補間サポートを改良しました。(Greg Sabino Mullane)

  • \timingに省略可能なon/off引数を追加しました。(David Fetter)

  • 複数行に渡ってアクセス制御権限を表示します。(Brendan Jurd, Andreas Scherbaum)

  • \lがデータベースアクセス権限を表示するようにしました。(Andrew Gilligan)

  • 権限がある場合\l+がデータベース容量を表示するようにしました。(Andrew Gilligan)

  • 関数定義を編集するための\efコマンドを追加しました。 (Abhijit Menon-Sen)

E.30.3.8.2. psql \d*コマンド

  • S修飾子が指定された場合のみ、パターン引数を持たない\d*コマンドがシステムオブジェクトを表示するようにしました。(Greg Sabino Mullane, Bruce)

    これまでの動作では\dの亜種の間での一貫性がありませんでした。 また、ほとんどの場合ユーザオブジェクトのみを参照する簡単な方法がありませんでした。

  • 現行バージョンのサーバだけではなく、古めの(7.4までの)バージョンのPostgreSQLサーバで\d*コマンドが動作するように改良しました。(Guillaume Lelarge)

  • \dが対象テーブルを参照する外部キー制約を表示するようにしました。(Kenneth D'Souza)

  • シーケンスに対する\dがその列値を表示するようにしました。(Euler Taveira de Oliveira)

  • \d+の表示に列の格納種類や関連するその他のオプションを追加しました。(Gregory Stark, Euler Taveira de Oliveira)

  • \dt+出力にリレーション容量を表示します。(Dickson S. Guedes)

  • \dT+においてenum型で取り得る値を表示します。(David Fetter)

  • キャスト内に存在するデータ型に一致するワイルドカードパターンを、\dCが受け付けることを可能としました。(Tom)

  • \dfの出力に関数種類列を追加しました。 また、選択した種類の関数のみを列挙するオプションを追加しました。(David Fetter)

  • \dfcstring型を取る、または、返す関数を隠さないようにしました。(Tom)

    これまでは、そのほとんどが興味を引くとは思われないデータ型のI/O関数であったため、こうした関数は隠れていました。 デフォルトのシステム関数の隠ぺいに関する新しいポリシーではこの欠点を不要にします。

E.30.3.8.3. pg_dump

  • ダンプをテーブル空間の構造が異なるクラスタにリストアできるように、pg_dump/pg_dumpall/pg_restore--no-tablespacesオプションを追加しました。(Gavin Roy)

  • pg_dumppg_dumpallから-dおよび-Dオプションを削除しました。(Tom)

    これらのオプションは、他のPostgreSQLクライアントアプリケーションにおけるデータベース名を選択するためのオプションと、あまりに頻繁に混乱されていました。 この機能はまだ利用可能ですが、長めのオプション名--insertsまたは--column-insertsと記述する必要があります。

  • pg_dumppg_dumpallから-iおよび--ignore-versionオプションを削除しました。(Tom)

    このオプションを使用してもエラーにはなりませんが、何も効果はありません。 安全のためバージョン検査が必須となりましたので、このオプションは削除されました。

  • ダンプまたはリストア中のstatement_timeoutを無効にしました。(Joshua Drake)

  • pg_dump/pg_dumpall--lock-wait-timeoutオプションを追加しました。(David Gould)

    これにより、指定期間中に共有ロックを獲得できなかった場合に、ダンプが失敗できるようになりました。

  • 参照テーブルより前に外部キーにより参照されるテーブルをダンプするためにpg_dump --data-onlyの出力順序を変更します。(Tom)

    これにより、外部キーがすでに存在する時にデータロードができるようになりました。 巡回参照により安全な順序付けができない場合、NOTICEが発行されます。

  • pg_dumppg_dumpallpg_restoreが指定したロールを使用することができるようになりました。(Benedek László)

  • pg_restoreがリストアするために複数の同時接続を使用できるようになりました。(Andrew)

    同時接続数は--jobsオプションにより制御されます。 これは独自書式のアーカイブでのみサポートされます。

E.30.3.9. プログラミングツール

E.30.3.9.1. libpq

  • 新しいlo_import_with_oid()関数を使用して、ラージオブジェクトのインポートの際にOIDを指定できるようになりました。(Tatsuo)

  • "イベント"サポートを追加しました。(Andrew Chernow, Merlin Moncure)

    これは、PGconnおよびPGresultオブジェクトに関連付けされた非公開データを管理するためのコールバックを登録する機能を追加したものです。

  • 複数のエラーメッセージを複数行のエラー報告として返すことができるようにエラー処理を改良しました。(Magnus)

  • PQexecParams()と関連する関数が、空の問い合わせに対してPGRES_EMPTY_QUERYを返すようにしました。(Tom)

    これまではPGRES_COMMAND_OKを返していました。

  • WindowsにおけるWSACleanup()のオーバーヘッドを防止する方法を文書化しました。(Andrew Chernow)

  • デフォルトのデータベースユーザ名を決定する際にKerberosチケットに依存しません。(Magnus)

    これまでは、Kerberos機能を有効に構築したlibpqでは、Kerberos認証を使用しない接続であったとしても、利用可能なKerberosチケットのプリンシパル名をデフォルトのデータベースユーザ名として使用しました。 これは一貫性がなく混乱を招くものと思われます。 デフォルトのユーザ名はKerberosの有無に関係なく同じ方法で決定されるようになりました。 しかし、Kerberos認証を使用する場合、データベースユーザ名はチケットと一致しなければならないことに注意してください。

E.30.3.9.2. libpq SSL(セキュアソケットレイア)サポート

  • SSL接続の証明書検証を修正しました。(Magnus)

    libpqは、SSL接続を確立する際に、証明書とサーバ名の検証をサポートするようになりました。 検証においてルート証明書が利用できない場合、SSL接続は失敗します。 sslmodeパラメータは証明書検証を有効にするため、および、その検査レベルを設定するために使用されます。 デフォルトではまだまったく検証を行わず、クライアント上でルート証明書を必要とすることなくSSLを有効にしたサーバと接続することができます。

  • ワイルドカードサーバ証明書をサポートします。(Magnus)

    証明書のCN*で始まる場合、ホスト名との比較を行う際にワイルドカードとして扱われ、複数のサーバで同じ証明書を使用できるようになります。

  • クライアント証明書ファイルの位置を指定できるようになりました。(Mark Woodward, Alvaro, Magnus)

  • OpenSSL/libcryptoの初期化について多くを制御できるようにPQinitOpenSSL関数を追加しました。(Andrew Chernow)

  • データベース接続が開いたままの場合、libpqOpenSSLコールバックの登録を取り消すようにしました。(Bruce, Magnus, Russell Smith)

    これはlibpqライブラリをアンロードするアプリケーションで必要とされます。 こうしないと無効なOpenSSLコールバックが残ってしまいます。

E.30.3.9.3. ecpg

  • 翻訳メッセージのサポートを追加しました。(Euler Taveira de Oliveira)

  • ecpgパーサが自動的にサーバパーサから生成されるようになりました。(Michael)

    これまではecpgパーサは手作業で保守されていました。

E.30.3.9.4. サーバプログラミングインタフェース(SPI

  • 行外のパラメータを持つ、一回しか使用されない計画をサポートするようになりました。(Tom)

  • SPI_execute()に新しい戻り値コードSPI_OK_REWRITTENを追加しました。(Heikki)

    これは、コマンドが別の種類のコマンドに書き換えられた時に使用されます。

  • executor/spi.hから不要なインクルードを削除しました。(Tom)

    これらをインクルードするためにspi.hに依存している場合、SPIを使用するモジュールにいくつか#include行の追加が必要となる場合があります。

E.30.3.10. 構築オプション

  • 構築システムをAutoconf 2.61を使用するように更新しました。 (Peter)

  • ソースコードから構築する場合GNU bisonが必要です。(Peter)

    実質ここ数年で、これは必要とされていましたが、他のパーサツールをサポートしようという要望がなくなりました。

  • pg_config --htmldirオプションを追加しました。(Peter)

  • サーバ内部でfloat4を値渡しします。(Zoltan Boszormenyi)

    過去の動作を使用するために--disable-float4-byvalオプションをconfigureに追加しました。 この変更により、旧スタイル(バージョン0)の呼び出し規約を使用し、float4値を渡したり返したりする外部C関数は動作しなくなります。 このため、こうした関数があり、それを変更したくない場合は、このconfigureオプションが必要になるでしょう。

  • 64ビットプラットフォーム上では、サーバ内部でfloat8int8、これらに関連するデータ型を値渡しします。(Zoltan Boszormenyi)

    過去の動作を使用するために--disable-float8-byvalオプションをconfigureに追加しました。 上記のとおり、この変更は旧スタイルの外部C関数の動作に影響を与えます。

  • --with-segsize--with-blocksize--with-wal-blocksize--with-wal-segsizeオプションをconfigureに追加しました。(Zdenek Kotala, Tom)

    これまではpg_config_manual.hを編集して変更するしかなかった、複数の定数を簡単に構築時に制御することができるようになります。

  • Solaris 2.5でスレッド版の構築ができるようになりました。(Bruce)

  • Solaris上でシステムのgetopt_long()を使用します。(Zdenek Kotala, Tom)

    これにより、Solarisユーザが期待するものに、より矛盾がないオプション処理ができるようになりました。

  • LinuxにおけるSun Studioコンパイラのサポートを追加しました。(Julius Stroffek)

  • バックエンドのgettextドメインにメジャーバージョン番号を追加しました。 また、ライブラリのgettextドメインにsonameメジャーバージョン番号を追加しました。(Peter)

    これは複数のバージョンの並行インストレーションを簡易化します。

  • gcovを使用したコードカバレッジ試験のサポートを追加しました。(Michelle Caisse)

  • MingwおよびCygwinにおけるout-of-tree構築が可能です。(Richard Evans)

  • ソースのクロスコンパイルを行うプラットフォームとしてのMingwの使用を修正しました。(Peter)

E.30.3.11. ソースコード

  • 64ビットの時間帯データファイルをサポートします。(Heikki)

    これは、2038年以降の夏時間(DST)計算のサポートを追加します。

  • プラットフォームのtime_tデータ型の使用を廃止しました。(Tom)

    一部のプラットフォームでは64ビットのtime_tに移行されましたが、一部はまだです。 またWindowsではまだどうするか決められていません。 しかし、time_tと同じ意味を持つpg_time_t定義は(プラットフォームが64ビット整数型を持たない限り)常に64ビットです。 そして、すべてのモジュールのAPIとディスク上のデータ書式においてこの型を使用します。

  • クロスコンパイル時の時間帯データベース処理における不具合を修正しました。(Richard Evans)

  • 複数ではなく単一処理でバックエンドのオブジェクトファイルをリンクします。(Peter)

  • 複数形のより良い翻訳を可能にするためにgettextサポートを改良しました。(Peter)

  • PL言語にメッセージ翻訳サポートを追加しました。(Alvaro, Peter)

  • より多くのDTraceプローブを追加しました。(Robert Lor)

  • Mac OS X LeopardやSolaris以外のプラットフォーム上のDTraceサポートを有効にしました。(Robert Lor)

  • C文字列とtextデータの間の変換を、この目的のために共通化された関数を提供することで、簡易化および標準化しました。(Brendan Jurd, Tom)

  • フロントエンドプログラムがpostgres.hをインクルードすることなくインクルードすることができるように、include/catalog/ヘッダファイルを整理しました。(Zdenek Kotala)

  • nameをcharと同じ整列とし、インデックス内のname項目のゼロ埋めを抑制します。(Tom)

  • 動的にロードされたコードがexit()を実行した場合の復旧を改良しました。(Tom)

  • プラグインにエグゼキュータを監視させるためのフックを追加しました。(Itagaki Takahiro)

  • プランナの統計情報検索動作を上書きできるようにするフックを追加しました。(Simon Riggs)

  • 独自の共有メモリ要求のためにshmem_startup_hook()を追加しました。(Tom)

  • インデックスアクセスメソッドamgetmultiのエントリポイントをamgetbitmapに置き換えました。 また、実行時の演算子損失の決定をサポートするためにamgettupleのAPIを拡張しました。(Heikki, Tom, Teodor)

    GINおよびGiST演算子クラスconsistent関数のAPIも同様に拡張しました。

  • GINインデックスにおいて部分一致検索のサポートを追加しました。(Teodor Sigaev, Oleg Bartunov)

  • pg_classreltriggers列を論理値型のrelhastriggersに置き換えました。(Simon)

    またpg_classの使用されない、relukeysrelfkeysrelrefs列を削除しました。

  • 一時テーブルの識別を簡単にするためにpg_classrelistemp列を追加しました。(Tom)

  • プラットフォーム向けのFAQを主文書に移しました。(Peter)

  • パーサ入力ファイルが競合状態で構築されることを防ぎます。(Peter)

  • KOI8U(ウクライナ語)符号化方式のサポートを追加しました。(Peter)

  • 日本語翻訳メッセージを追加しました。(Japan PostgreSQL Users Group)

    これは別のプロジェクトとして保守されたものを使用しました。

  • MSVC構築システムにおけるLC_MESSAGESを設定した場合の問題を修正しました。(Hiroshi Inoue, Hiroshi Saito, Magnus)

E.30.3.12. Contrib

  • 指定期間を超える問い合わせに対して自動的にEXPLAINを行うcontrib/auto_explainを追加しました。(Itagaki Takahiro, Tom)

  • GINインデックスがより多くのデータ型を扱うことを可能にするcontrib/btree_ginを追加しました。(Oleg, Teodor)

  • 大文字小文字を区別しない、マルチバイトに対応したテキストデータ型を提供するcontrib/citextを追加しました。(David Wheeler)

  • サーバ全体で文の実行統計情報を追跡するcontrib/pg_stat_statementsを追加しました。(Itagaki Takahiro)

  • contrib/pgbenchに期間オプションと問い合わせモードオプションを追加しました。(Itagaki Takahiro)

  • contrib/pgbenchが、単なるaccountsbrancheshistorytellersではなく、pgbench_accountspgbench_branchespgbench_historypgbench_tellersという名前のテーブルを使用するようにしました。(Tom)

    これはpgbenchの実行により、実データが偶然破壊されてしまう危険性を低減させるためのものです。

  • 20億ページを超えるテーブルとインデックスを扱うようにcontrib/pgstattupleを修正しました。(Tatsuhito Kasahara)

  • contrib/fuzzystrmatchにおいて、ユーザが挿入・削除・置換のコストを指定できる、レーベンシュタイン文字列距離関数を追加しました。(Volkan Yazici)

  • contrib/ltreeがマルチバイト符号化方式をサポートするようにしました。(laser)

  • contrib/dblinkがSQL/MEDカタログに格納された接続情報を使用できるようにしました。(Joe Conway)

  • リモートサーバからのエラーに対するcontrib/dblinkの報告を改良しました。(Joe Conway)

  • ローカルなデータベース符号化方式と一致させるためにcontrib/dblinkclient_encodingを設定するようにしました。(Joe Conway)

    これにより、異なる符号化方式を使用するリモートサーバとの通信時の符号化方式に関する問題を防ぎます。

  • 偶発的にサーバの.pgpassファイルが使用されることなく、contrib/dblinkがユーザが提供したパスワードを確実に使用するようにしました。(Joe Conway)

    これは小規模なセキュリティの向上です。

  • contrib/pageinspectfsm_page_contents()を追加しました。(Heikki)

  • 空き領域マップファイル(*_fsm)をサポートするようにget_raw_page()を変更しました。 またcontrib/pg_freespacemapも更新しました。

  • contrib/pg_trgmにマルチバイト符号化方式のサポートを追加しました。(Teodor)

  • 新しいarray_agg()およびunnest()関数を使用するようにcontrib/intaggを作成し直しました。(Tom)

  • contrib/pg_standbyがフェイルオーバ前にすべての利用可能なWALを復旧するようにしました。(Fujii Masao, Simon, Heikki)

    この作業を安全にするために、recovery.conf内で新しいrecovery_end_commandオプションを設定して、フェイルオーバ後のトリガファイルを整理する必要があります。 pg_standbyは自身でトリガファイルを削除しないようになりました。

  • contrib/pg_standby-lオプションを無効にしました。 シンボリックリンクの使用が安全ではないためです。(Simon)