他のバージョンの文書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.6. リリース9.4

リリース日: 2014-12-18

E.6.1. 概要

PostgreSQL9.4の主な強化点には以下のものがあります。

上記の項目については、以下でより詳細に説明します。

E.6.2. バージョン9.4への移行

以前のリリースからデータを移行したい時は、どのリリースについても、 pg_dumpを利用したダンプとリストア、 あるいはpg_upgradeの利用が必要です。

バージョン9.4には、以前のバージョンとの互換性に影響する多くの変更点が含まれています。 以下の非互換性に注意してください。

E.6.3. 変更点

これまでのメジャーリリースからのPostgreSQL 9.4 の変更点の詳細説明を以下に示します。

E.6.3.1. サーバ

  • バックグラウンドワーカプロセスを動的に 登録、開始、終了できるようにしました。 (Robert Haas)

    新たなworker_spiモジュールで本新機能の例を示します。

  • 共有メモリセグメントを動的に割り当てできるようにしました。 (Robert Haas, Amit Kapila)

    本機能はtest_shm_mqモジュールで例示されています。

  • クラッシュリカバリ、あるいは、immediateシャットダウンの際に、 即座に停止しない子プロセスにキャッチできないシグナル(SIGKILL) を送るようになりました。 (MauMau, Álvaro Herrera)

    これにより、postmasterシャットダウン後に子プロセスが 残ってしまう可能性を減らし、また、いくつかの子プロセスが"刺った" 場合でもクラッシュリカバリの進行を保証します。

  • データベースのシステム識別子のランダム性を改善しました。 (Tom Lane)

  • VACUUMが、削除済(dead)であるけれど未だ除去できない行に ついて統計情報コレクタに適切に報告するようにしました。 (Hari Babu)

    これまでは有効(live)行であるものと報告されていました。

E.6.3.1.1. インデックス

  • GINインデックスのサイズを減らしました。 (Alexander Korotkov, Heikki Linnakangas)

    pg_upgradeを使ってアップグレードした場合、動作しますが、 従来のサイズの大きいGIN形式のままです。REINDEX で新たな形式でインデックスを作り直す必要があります。

  • 複合キーでのGIN インデックス照会の速度を改善しました。 (Alexander Korotkov, Heikki Linnakangas)

  • GiST インデックスがinet型、 cidr型に対応しました。 (Emre Hasegeli)

    これらインデックス改善は、 サブネット・スーパーネット の照会や並べ替えのための比較を性能向上させます。

  • B-treeインデックスのページ削除における稀な競合状態を修正しました。 (Heikki Linnakangas)

  • 割り込みされたB-treeインデックスのページ分割の扱いをより頑健にしました。 (Heikki Linnakangas)

E.6.3.1.2. 性能全般

  • 複数バックエンドからWALバッファに 並行に挿入できるようになりました。 (Heikki Linnakangas)

    本変更は並列書き込み性能を改善します。

  • 条件によって、更新された行のうち変更部分だけを WALに書き込むようにしました。 (Amit Kapila)

  • WINDOW関数 として使われる集約関数の性能を改善しました。 (David Rowley, Florian Pflug, Tom Lane)

  • numeric型を 状態値に使う集約処理の速度を改善しました。

  • テーブルがCLUSTERまたはVACUUM FULLコマンドで書き直されたときにタプルの 凍結を試みます。 (Robert Haas, Andres Freund)

    これにより将来にタプル凍結が必要になることを避けられます。

  • デフォルトがシーケンスの nextval() である列に対するCOPYの速度を改善しました。 (Simon Riggs)

  • 一つの接続で多数のシーケンス にアクセスする場合の速度を改善しました。 (David Rowley)

  • メモリ上でソートやB-treeインデックス構築をする際のタプル数の固定上限を引き上げました。 (Noah Misch)

  • PL/pgSQL手続き言語のDOブロックによるメモリ割り当てを 小さくしました。 (Tom Lane)

  • プランナがAND/OR句が混在する中から、 より積極的に制約句を抽出するようにしました。 (Tom Lane)

  • 揮発性のWHERE句をDISTINCTサブクエリに プッシュダウンしないようにしました。 (Tom Lane)

    WHERE句のプッシュダウンは概してプラン改善に効果的ですが、 問い合わせ文によっては句の評価コストがより多くなると考えられます。 そのため、句がVOLATILE関数を含むときにはプッシュダウンを実施しません。

  • カタログキャッシュが自動でサイズ変更されるようにしました。 (Heikki Linnakangas)

    これは少数のテーブルにだけアクセスする接続に対してメモリ消費を減らし、 また、多数のテーブルにアクセスする接続に対しては性能を向上させます。

E.6.3.1.3. 監視

  • WALアーカイバの活動を報告する pg_stat_archiverシステムビューを追加しました。 (Gabriele Bartolini)

  • n_mod_since_analyze列を pg_stat_all_tablesと関連するシステムビューに追加しました。 (Mark Kirkwood)

    この列は最後にANALYZEが行われて以降のタプル変更回数の推計値を表示します。この推計値が自動ANALYZEの駆動を決めるために使われます。

  • backend_xid列、backend_xmin列を、 システムビューpg_stat_activityに追加し、 backend_xmin列がpg_stat_replication に追加しました。 (Christian Kruse)

E.6.3.1.4. SSL

  • SSLでECDH鍵交換をサポートしました。 (Marko Kreen)

    楕円曲線鍵でサーバ認証ができるようになります。 この鍵はRSA鍵よりも高速で安全です。 新たな設定パラメータssl_ecdh_curveでどの曲線を ECDHに使うかを制御します。

  • ssl_ciphers設定のデフォルト値を改善しました。 (Marko Kreen)

  • デフォルトでクライアント側でなくサーバ側の SSL暗号の優先順設定を使用するようにしました。 (Marko Kreen)

    これまでは、ssl_ciphersで指定した順番が、 クライアント側のデフォルトの好みによってたいてい無視されていました。 これはほとんどのPostgreSQLクライアントで設定不能です。 望むなら新たな設定パラメータssl_prefer_server_ciphersにより従来の振る舞いに戻すこともできます。

  • log_connectionsSSL暗号化情報を出力するようにしました。 (Andreas Kunert)

  • SSL再ネゴシエーション処理を改善しました。 (Álvaro Herrera)

E.6.3.1.5. サーバ設定

  • postgresql.conf設定ファイルの項目を変更できる新たなSQLコマンドALTER SYSTEMを追加しました。 (Amit Kapila)

    従来は設定変更するにはpostgresql.confを手で編集するほかありませんでした。

  • 自動VACUUMワーカーのメモリ使用量を調整するautovacuum_work_mem設定パラメータを追加しました。 (Peter Geoghegan)

  • Linuxのhuge pagesを利用できるhuge_pages設定パラメータを追加しました。 (Christian Kruse, Richard Poole, Abhijit Menon-Sen)

    これにより巨大メモリを持つシステムの性能を改善できます。

  • バックグラウンドワーカの数を制限する max_worker_processesパラメータを追加しました。 (Robert Haas)

    スタンバイサーバに必要な(プライマリと同じ)ワーカプロセス数を調整するときに役立ちます。

  • スーパーユーザのみ使用できるセッション開始時にライブラリをロードするsession_preload_librariesパラメータを追加しました。

    local_preload_librariesと違い、$libdir/pluginsディレクトリにあるものに限られず、本パラメータでは、どの共有ライブラリでもロードできます。

  • ヒントビットの変更もWAL出力するようにするwal_log_hintsパラメータを追加しました。 (Sawada Masahiko)

    チェックサムを有効にしているときを除き、通常ヒントビットはWAL記録されません。 本設定は、pg_rewindのような外部ツールにおいて有用です。

  • work_memmaintenance_work_mem のデフォルト設定値を4倍に増やしました。 maintenance_work_mem (Bruce Momjian)

    それぞれ4MBと64MBが新たなデフォルト値となります。

  • effective_cache_sizeのデフォルト値を4GBに増やしました。 (Bruce Momjian, Tom Lane)

  • log_line_prefixprintf形式の空白パディングを指定できるようにしました。 (David Rowley)

  • 設定ファイルにテラバイト単位 (TB)を記述できるようにしました。 (Simon Riggs)

  • log_lock_waitsによるログメッセージで、 ロックを保持しているプロセス、待っているプロセスのPID、 および、改善されたリレーション情報が出力されるようにしました。 (Christian Kruse)

  • 共有ライブラリをロードした際のログレベルをDEBUG1に下げました。 (Peter Geoghegan)

    これまではLOGレベルでしたが、接続ごとにロードされるライブラリの場合には冗長すぎました。

  • WindowsにてSQL_ASCIIエンコーディングのデータベースとサーバプロセス(例えば postmaster)が、サーバのWindowsユーザロケールの文字エンコーディングでメッセージを出力するようになりました。 (Alexander Law, Noah Misch)

    これまでは、WindowsのANSIコードページでメッセージが出力されていました。

E.6.3.2. レプリケーションとリカバリ

  • ストリーミングレプリケーション元ノードでスタンバイの活動を調整する レプリケーションスロット を追加しました。 (Andres Freund, Robert Haas)

    レプリケーションスロットにより、プライマリ上のWALファイル等リソースをスタンバイサーバが必要としなくなるまで保持することができます。

  • レプリケーションを遅延させるリカバリ設定パラメータrecovery_min_apply_delayを追加しました。 (Robert Haas, Fabrízio de Royes Mello, Simon Riggs)

    スタンバイサーバでの再生を遅らせることは、ユーザによる誤りから復旧するのに役立ちます。

  • リカバリ設定パラメータrecovery_targetにオプションimmediateを追加しました。WALリカバリを整合性のある状態に到達したらすぐに停止します。 (MauMau, Heikki Linnakangas)

  • リカバリターゲットの処理を改善しました。 (Heikki Linnakangas)

    停止を判定するpg_last_xact_replay_timestamp()が報告するタイムスタンプが、コミットされるであろうトランザクションでなく、コミット済みのレコードを反映するようにしました。 リストアポイントよりも早すぎる時点で再生が止まってしまうのを防ぎます。

  • pg_switch_xlog()が古いWALファイル上の使われない末尾領域をクリアするようにしました。 (Heikki Linnakangas)

    これはWALファイルの圧縮率を改善します。

  • リカバリ用外部コマンドからの リターンコードを報告するようにしました。 (Peter Eisentraut)

  • WAL再生中のスピンロック競合を減らしました。 (Heikki Linnakangas)

  • トランザクション実行のWALレコードの書き出しをより頻繁にしました。

    これによりスタンバイサーバで起動が速くなり、より積極的にリソースの片づけができるようになります。

E.6.3.2.1. ロジカルデコーディング

ロジカルデコーディングにより、データベース変更を可変な形式で流し出すことができるようになります。 データはWALから読みとり、望む形式に変換されます。本機能を実装するため、以下の改修が行われました。

  • データベース変更をカスタマイズ可能な形式で連続的に出力できる、WALデータのロジカルデコーディングをサポートしました。 (Andres Freund)

  • wal_level設定パラメータに、WALに論理変更セットのエンコードを有効にする新たなオプションlogicalを追加しました。 (Andres Freund)

  • 論理レプリケーションの制御用にテーブル単位のパラメータ REPLICA IDENTITY を追加しました。 (Andres Freund)

  • 論理変更セットのエンコードにおいてユーザ作成テーブルを識別するためのテーブル単位のパラメータ user_catalog_table を追加しました。 (Andres Freund)

  • ロジカルデコーディングデータを受け取るアプリケーションpg_recvlogicalを追加しました。 (Andres Freund)

  • SQLレベルでロジカルデコーディングを例示するtest_decodingモジュールを追加しました。 (Andres Freund)

E.6.3.3. 問い合わせ

  • FROM句の集合を返す関数から返される行に番号をつける WITH ORDINALITY構文を追加しました。 (Andrew Gierth, David Fetter)

    unnest()のような関数で特に役立ちます。

  • FROM句で集合を返す関数の水平結合ができる ROWS FROM()構文を追加しました。 (Andrew Gierth)

  • SELECTで空のターゲットリストを持てるようにしました。

    これにより、ゼロ個の列を選択するビューを正しくダンプ、リストアできるようになります。

  • SELECT ... FOR UPDATE NOWAITが例外的なケースでも既に同時更新されているタプルを待たないようにしました。 (Craig Ringer and Thomas Munro)

E.6.3.4. ユーティリティコマンド

  • キャッシュされたシーケンス関連の状態を破棄するDISCARD SEQUENCESコマンドを追加しました。 (Fabrízio de Royes Mello, Robert Haas)

    これからはDISCARD ALLもシーケンス関連の状態情報を破棄します。

  • COPY FROMに、 CSVモードで指定のNULL文字列に一致するクオートされた文字列をNULLに変換する、 FORCE NULLオプションを追加しました。 (Ian Barwick, Michael Paquier)

    本オプションが無い場合、クオートされていなくてマッチした文字列だけNULLとして扱われます。

  • トランザクションブロックの外で意味をなさないコマンドを実行したとき、警告を出すようにしました。 (Bruce Momjian)

    新たにSET LOCALSET CONSTRAINTSSET TRANSACTION、および、ABORTについて、トランザクション外で使うと警告がでるようになります。

E.6.3.4.1. EXPLAIN

  • EXPLAIN ANALYZEがプラン時間を表示するようにしました。 (Andreas Karlsson)

  • EXPLAINがAgg、Groupプラン要素にて集約している列を出力するようにしました。 (Tom Lane)

  • EXPLAIN ANALYZEでビットマップヒープスキャンのexactブロックカウントとlossyブロックカウントを出力するようにしました。 (Etsuro Fujita)

E.6.3.4.2. ビュー

  • マテリアライズドビューを他セッションの同時参照を妨げずにリフレッシュできるようにしました。 (Kevin Grittner)

    REFRESH MATERIALIZED VIEW CONCURRENTLYコマンドで行います。

  • たとえ更新できない列が含まれていても、ビューが自動更新可能になります。 (Dean Rasheed)

    これまでは、式や定数、関数呼び出しなどの更新不能な出力列があると、 ビューは自動更新可能にはなりませんでした。これからは、更新不能な列に新しい値を割り当てしようとしないならINSERTUPDATEDELETEがサポートされます。

  • INSERTUPDATEで、 自動更新可能ビューにそのビューにはあらわれない行を加えることができるかを制御できるようにしました。 (Dean Rasheed)

    新たに追加されたCREATE VIEWWITH CHECK OPTION句で制御します。

  • セキュリティバリアビューも自動更新可能になれるようにしました。 (Dean Rasheed)

E.6.3.5. オブジェクトの操作

  • 外部テーブルのトリガをサポートしました。 (Ronan Dunklau)

  • ALTER TABLEALTER INDEXALTER MATERIALIZED VIEWにて、 ALL IN TABLESPACE ... SET TABLESPACE指定を使って、 テーブルスペースのオブジェクト群をまとめて別テーブルスペースに移動できるようにしました。 (Stephen Frost)

  • ALTER TABLE ... ALTER CONSTRAINTで外部キー制約が遅延できるかを変更できるようにしました。 (Simon Riggs)

  • いくつかのALTER TABLEコマンドでロックの強さを下げました。 (Simon Riggs, Noah Misch, Robert Haas)

    特に、VALIDATE CONSTRAINTCLUSTER ONSET WITHOUT CLUSTERALTER COLUMN SET STATISTICSALTER COLUMN SET (attribute_option)ALTER COLUMN RESET (attribute_option)は、もはや ACCESS EXCLUSIVEロックを必要としません。

  • テーブルスペースのオプションを CREATE TABLESPACEで設定できるようにしました。 (Vik Fearing)

    以前はこれらのオプションはALTER TABLESPACEでしか設定できませんでした。

  • CREATE AGGREGATEで集約の遷移状態データの推定サイズを指定できるようにしました。 (Hadi Moshayedi)

    この機能を適切に使うことでプランナが集約での必要メモリ量をよりよく見積もれます。

  • DROP IF EXISTSが場合によってはオブジェクトが無いことでエラーになるのを修正しました。 (Pavel Stehule, Dean Rasheed)

  • システムリレーションの識別方法を改善しました。 (Andres Freund, Robert Haas)

    これまでは、一度pg_catalogスキーマに移動したリレーションは、変更も削除もできませんでした。

E.6.3.6. データ型

  • lineデータ型を完全に実装しました。 (Peter Eisentraut)

    線分データ型(lseg) は既にサポートされています。 従来のlineデータ型(コンパイルオプションでのみ有効にできます)は、バイナリでもダンプでも新しい実装と互換性がありません。

  • WALのログシーケンス番号(LSN)をあらわすpg_lsnデータ型を追加しました。 (Robert Haas, Michael Paquier)

  • 一点だけのpolygoncircleに変換できるようにしました。 (Bruce Momjian)

  • UTCオフセットが変化するタイムゾーン略称をサポートしました。 (Tom Lane)

    これまでPostgreSQLでは(ESTなどの)一つのタイムゾーン略称に関連づけられたUTCオフセットは、いかなるロケールでの使用でも変化しないと仮定していました。 しかしながら、実世界においてこの仮定は失敗しました。そこで、意味するUTCオフセットをときに変更できるタイムゾーン略称を導入しました。 1970年以来の略称のUTCオフセットが変更されたタイムゾーンロケールで本機能を使えるように(IANAタイムゾーンデータベースに基づいて)ゾーン略称定義ファイルを刷新しました。これからはPostgreSQLは、略称に日付に応じた適切なUTCオフセットを関連づけます。

  • timestampdateのISO形式以外の文字列で5桁以上の年を使用可能にしました。 (Bruce Momjian)

  • interval値のオーバーフロー、アンダーフローのチェックを加えました。 (Bruce Momjian)

E.6.3.6.1. JSON

  • より高機能で効率的なJSON文字列のデータ型jsonbを追加しました。 (Oleg Bartunov, Teodor Sigaev, Alexander Korotkov, Peter Geoghegan, Andrew Dunstan)

    この新しいデータ型は、JSON文書により高速にアクセスでき、また、JSON列により高速で有用なインデックス適用ができます。 従来のjson型がJSON文書全体をテキストとして格納するのに対し、 jsonb文書のスカラ値は適当なSQLデータ型として格納され、JSON文書の構造は事前解析されます。

  • 任意の複雑なJSONツリーを構築できる新たなJSON関数を追加しました。 (Andrew Dunstan, Laurence Rowe)

    新たな関数には、 json_array_elements_text()json_build_array()json_object()json_object_agg()json_to_record()json_to_recordset()が含まれます。

  • json値のデータ型を返す json_typeof()を追加しました。 (Andrew Tipton)

E.6.3.7. 関数

  • より柔軟に遅延を指定できるpg_sleep_for(interval)pg_sleep_until(timestamp)を追加しました。 (Vik Fearing, Julien Rouhaud)

    既存のpg_sleep()関数は秒指定の遅延のみをサポートしていました。

  • 配列を引数とするcardinality()関数を追加しました。 (Marko Tiikkaja)

    この関数は、配列要素の総数、要素が無い場合にはゼロを返します。

  • 任意のオフセットでラージオブジェクトを読み書きできるSQL関数を追加しました。 (Pavel Stehule)

  • unnest()を複数引数をとれるようにしました。引数は各々に展開され、水平に結合されます。 (Andrew Gierth)

  • 文字列ではなく個別の値から、timedatetimestamptimestamptzintervalの各データ型を構築する関数を追加しました。 (Pavel Stehule)

    これらの関数にはmake_という接頭辞が付きます(例えばmake_date())。

  • to_char()関数のTZ書式指示子が、数値であらわれたタイムゾーンオフセットに対して有効な値を返すようにしました。 (Tom Lane)

    これまでは、 timezoneに「-4」のような定数が設定されていると、 to_char(CURRENT_TIMESTAMP, 'TZ')が空文字列を返していました。

  • to_char()で タイムゾーンオフセットの書式指示子「OF」がサポートされました。 (Bruce Momjian)

  • random() のランダムシードを改善しました。 (Honza Horak)

  • chr(int)で ユニコードのコードポイントの正当性チェックをより厳しくしました。 (Tom Lane)

    本関数はRFC 3629に従ったUTF8文字のみを有効な値として受けるようになります。

E.6.3.7.1. システム情報関数

  • システムテーブルpg_classpg_procpg_typepg_operatorを検索して、オブジェクトが無くてもエラーを返さない関数をいくつか追加しました。 (Yugo Nagata, Nozomi Anzai, Robert Haas)

    例えば、to_regclass()pg_classregclass入力関数と同様に検索しますが、オブジェクトが無い場合には失敗するのでなくNULLを返します。 regclass

  • リレーション名をファイルノードからより効率的に検索できるpg_filenode_relation()関数を追加しました。 (Andres Freund)

  • information_schema.parametersビューにparameter_default列を追加しました。 (Peter Eisentraut)

  • information_schema.schemataが全てのアクセス可能なスキーマを表示するようにしました。 (Peter Eisentraut)

    これまでは現在ユーザが所有者のスキーマだけ表示していました。

E.6.3.7.2. 集約

  • どの行を集約関数に渡すかを制御するFILTER句が追加されました。 (David Fetter)

  • 順序付けされた集合(WITHIN GROUP)の集約をサポートしました。 (Atri Sharma, Andrew Gierth, Tom Lane)

  • SQL標準の順序集合の集約関数 percentile_cont()percentile_disc()mode()rank()dense_rank()percent_rank()cume_dist()が追加されました。 (Atri Sharma, Andrew Gierth)

  • 集約関数でVARIADIC をサポートしました。 (Tom Lane)

  • 引数に多態集約が多態でない状態データ型を持てるようにしました。 (Tom Lane)

    組み込みのarray_agg()のような集約関数をSQLで適切に宣言できるようになります。

E.6.3.8. サーバサイド言語

  • PL/PerlPL/Tclにイベントトリガのサポートを加えました。 (Dimitri Fontaine)

  • numeric型の値を PL/Pythondecimal型に変換するようにしました。 (Szymon Guz, Ronan Dunklau)

    これまでは、値をPythonのfloat型の値に変換していました。

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

  • GET DIAGNOSTICS を使ってPL/PgSQLの現在のコールスタックを取得できるようにしました。 (Pavel Stehule, Stephen Frost)

  • STRICT制約に違反したクエリを表示する print_strict_paramsオプションを追加しました。 (Marko Tiikkaja)

  • 追加的なPL/pgSQLの警告とエラーを有効にする plpgsql.extra_warnings変数、 plpgsql.extra_errors変数を追加しました。 (Marko Tiikkaja, Petr Jelinek)

    いまのところ隠し変数についての警告、エラーが有効になるだけです。

E.6.3.9. libpq

  • libpqのPQconndefaults()が 無効なサービスファイルを無視するようにしました。 (Steve Singer, Bruce Momjian)

    これまでは、不正なサービスファイルに遭遇するとNULLを返していました。

  • TLSv1以降バージョンのTLSプロトコルを受け付けます。 (Marko Kreen)

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

  • createuserに、所属するロールを指定する-gオプションを追加しました。 (Chistopher Browne)

  • vacuumdb粒度を増やして複数段階で解析を行う--analyze-in-stagesオプションが追加されました。

    これにより最小限の統計情報を素早く生成できます。

  • pg_resetxlog-nオプションにて現在値ともしかすると変更された値を出力するようにしました。 (Rajeev Rastogi)

  • initdbが誤ったロケール設定に黙って代替にデフォルトを選択するのでなくエラーを出すようにしました。 (Tom Lane)

  • pg_ctlがデータディレクトリにアクセスできないとき終了コード4を返すようにしました。 (Amit Kapila, Bruce Momjian)

    この振る舞いはLinux Standard Base(LSB)のコア仕様により厳密に適合します。

  • Windowsで相対パスで指定された-Dオプションをpg_ctlのカレントディレクトリからの相対パスと解釈することを保証します。 (Kumar Rajeev Rastogi)

    これまでは、元となるWindowsサービスが開始されたディレクトリを起点にして解釈されていました。

  • ECPGでC言語の配列定義にsizeof()を使用可能にしました。 (Michael Meskes)

  • ECPGで入れ子になったC言語スタイルのコメントをC言語中でも SQL中でも適切に扱えるようにしました。 (Michael Meskes)

E.6.3.10.1. psql

  • psqlexpanded モードでfooterが無効であるときには、"No rows"出力を抑止します。 (Bruce Momjian)

  • コネクション開始時にハングアップしたとき、Control-C押下で終了できるようにしました。 (Peter Eisentraut)

E.6.3.10.1.1. バックスラッシュコマンド

  • psql\db+でテーブルスペースオプションが 表示されるようにしました。 (Magnus Hagander)

  • \do+で演算子を実装している関数が表示されるようにしました。 (Marko Tiikkaja)

  • \d+でテーブルにoid列がある場合だけ OID行を表示するようにしました。 (Bruce Momjian)

    これまではoid列の有無にかかわらず常に報告されていました。

  • \dで無効になっているシステムトリガを表示するようにしました。 (Bruce Momjian)

    これまでは、すべてのトリガを無効にした場合、ユーザトリガだけが無効であるものとして表示されていました。

  • \copyで「stdin」とセミコロンの間の空白を不要にしました。 (Etsuro Fujita)

  • COPYですでにそうなっているように、 \copyで最後に行数を出力します。 (Kumar Rajeev Rastogi)

  • \conninfohostaddrを使って接続した場合に サーバのIPアドレスを表示するように修正しました。 (Fujii Masao)

    これまでは\conninfoはこのようなケースでサーバの IPアドレスを表示できませんでした。

  • \conninfoSSLプロトコルバージョンを表示します。 (Marko Kreen)

  • \psetのためのタブ補完が追加しました。 (Pavel Stehule)

  • 引数無しの\psetで設定一覧を表示するようにしました。 (Gilles Darold)

  • \sで書き出すヒストリファイル名を絶対パスに変換せずに表示するようにしました。 (Tom Lane)

    これまでのコードでは表示するのに相対パスを絶対パスに変換しようと試みていましたが、しばしば誤っていました。

E.6.3.10.2. pg_dump

  • pg_restoreのオプション-I-P-T-nを複数指定できるようにしました。 (Heikki Linnakangas)

    これにより一度の操作で複数オブジェクトをリストアできます。

  • 古いオブジェクトをリストア時に削除する場合にオプションでIF EXISTS句をDROPコマンド出力に加えることができます。 (Pavel Stehule)

    本変更は古いオブジェクトを削除する際に不要なエラーがでるのを防ぎます。 新たな--if-existsオプションは、pg_dumppg_dumpallpg_restore--cleanオプションも指定している場合に使用できます。

E.6.3.10.3. pg_basebackup

  • pg_basebackuppg_xlogディレクトリを指定するオプション --xlogdirを追加しました。 (Haribabu Kommi)

  • pg_basebackupでバックアップコピー内のテーブルスペースを 新しい場所に移すことができます。 (Steeve Lennmark)

    これは特に、プライマリと同マシンでpg_basebackupを使用するときに便利です。

  • ネットワークストリーム経由のベースバックアップ取得を減速できるようにしました。 (Antonin Houska)

    pg_basebackup--max-rateパラメータで制御できます。

E.6.3.11. ソースコード

  • タプルを調査情報を保持して凍結する方法を改善しました。 (Robert Haas, Andres Freund)

    この変更は、タプルをできるだけ早く凍結させることの難点を除去します。 タプルのフラグビットを解析するコードは修正が必要となります。

  • 関数宣言にはPG_FUNCTION_INFO_V1 マクロでの印づけを不要にしました。 (Peter Eisentraut)

    本変更は定形的なプロトタイプ記述の必要を除去します。 なお、コンパイラ警告を避けるため、PG_FUNCTION_INFO_V1 マクロは対応する関数定義の手前では必要です。

  • SnapshotNowHeapTupleSatisfiesNow()を除去しました。 (Robert Haas)

    既存の使用箇所はより適切なスナップショットタイプに切り替えられます。 これからはカタログスキャンにMVCCスナップショットが使われます。

  • 1GB以上のメモリ割り当てが可能なAPIを追加しました。 (Noah Misch)

  • 文字列構成用のメモリ割り当てを簡単にするpsprintf()を追加しました。 (Peter Eisentraut, Tom Lane)

  • size_t値を表示する printf()のサイズ修飾子zをサポートしました。 (Andres Freund)

  • vsnprintf()をよりよく使用するように appendStringInfoVA()APIが変更されました。 (David Rowley, Tom Lane)

  • 新たな種類の外部TOASTデータを作成できるようにしました。 (Andres Freund)

  • 単一リーダ、単一ライタの軽量な共有メッセージキューを追加しました。 (Robert Haas)

  • x86_64 CPUのスピンロックスピードを改善しました。 (Heikki Linnakangas)

  • サポートされないプラットフォームSINIXSun3NS32Kのスピンロックサポートを除去しました。 (Robert Haas)

  • IRIX移植を無くしました。 (Robert Haas)

  • --disable-spinlocks指定でビルドしたことによる必要セマフォ数を減らしました。 (Robert Haas)

  • duplicate_oidsシェルスクリプトをPerlで書き直しました。 (Andrew Dunstan)

  • クライアントプログラムむけにTest Anything Protocol(TAP)のテストを追加しました。 (Peter Eisentraut)

    現在、これらのテストはmake check-world--enable-tap-testsconfigureに指定されたときのみ実行されます。 将来の機能リリースでデフォルトの振る舞いになるかもしれません。

  • makeターゲットに、選択した個々のテストを実行できるcheck-testsinstallcheck-testsを追加しました。(Andrew Dunstan)

  • makefileルールのmaintainer-checkを除去しました。 (Peter Eisentraut)

    これからはデフォルトのビルドルールに以前はオプションであったテストが全て含まれます。

  • PGXSモジュールのVPATHビルドのサポートを改善しました。 (Cédric Villemain, Andrew Dunstan, Peter Eisentraut)

  • Autoconf 2.69にアップグレードしました。 (Peter Eisentraut)

  • PG_VERSION文字列に任意のカスタム文字列を追加できるconfigureフラグを追加しました。 (Oskari Saarenmaa)

    パッケージ製作者がカスタムバイナリを作るのに有用です。

  • DocBookのXML検証が改善されました。 (Peter Eisentraut)

  • Coverityスキャナーで報告された、多様な細かなセキュリティと健全性の問題を修正しました。 (Stephen Frost)

  • PostgreSQLValgrindでテストしたときの 不正なメモリ利用の検出を改善しました。 (Noah Misch)

  • サンプルEmacs設定ファイルemacs.samplesを改善しました。 (Peter Eisentraut)

    また、.dir-locals.elをソースツリーのトップに加えました。

  • pgindentがtypedefsのコマンドラインリストを受け入れるようにしました。 (Bruce Momjian)

  • pgindentを条件プリプロセッサ周辺の空行についてより賢くしました。 (Bruce Momjian)

  • CygwinMingwでのビルドで dlltoolをほとんど使用しないようにしました。 (Marco Atzeri, Hiroshi Inoue)

  • MSVC(Windows)ビルドでクライアントのみインストールをサポートしました。 (MauMau)

E.6.3.12. 追加モジュール

  • サーバ起動時にリレーションデータを共有バッファに事前読み込みするpg_prewarm拡張を追加しました。 (Robert Haas)

    これにより素早く完全な運用性能に達することができます。

  • pgcryptoUUID乱数を生成をするgen_random_uuid()を追加しました。 (Oskari Saarenmaa)

    uuid-osspをインストールすることなく、 バージョン 4 UUIDが生成可能です。

  • uuid-osspOSSPUUIDライブラリだけでなく、 BSDe2fsprogsのUUIDライブラリで動作するようにしました。 (Matteo Beccati)

    この改善は、もはや廃れつつあるOSSPライブラリを必要としないので、 uuid-osspモジュールの移植性を改善します。 モジュール名は今や不適切ですが変更しないつもりです。

  • auto_explainに実行時間を含めるオプションを追加しました。 (Horiguchi Kyotaro)

  • コミットされていないトランザクションの行をdeadと報告しないように pgstattupleを修正しました。 (Robert Haas)

  • pgstattuple関数がregclass型の引数を使うようにしました。 (Satoshi Nagayasu)

    しばらくはtext型引数も未だサポートしますが、将来のメジャーリリースで除かれるでしょう。

  • スナップショット規則を一貫して尊重してpgrowlocks 出力の一貫性を改善しました。 (Robert Haas)

  • pg_trgmでインデックス付けされた正規表現検索のためのトリグラム選択を 改善しました。 (Alexander Korotkov)

    本変更は通常低い選択性である空白文字を含むトリグラムの使用を抑止します。

  • pg_xlogdump--followオプションで活動中の ログストリームについて報告できるようにしました。 (Heikki Linnakangas)

  • cubeデータをより小さく格納します。 (Stas Kelvich)

    既存データはダンプ、リストアで新フォーマットにする必要があります。 旧フォーマットも未だ読み取り可能です。

  • カーソルを使うことでvacuumloのクライアント側メモリ使用量を減らしました。 (Andrew Dunstan)

  • pg_upgradeのメモリ使用量を大幅に削減しました。 (Bruce Momjian)

  • pg_upgradeでユーザ指定する-Uオプションを 生成される解析スクリプトに渡すようにしました。 (Bruce Momjian)

E.6.3.12.1. pgbench

  • pgbenchスクリプトの行の長さ制限をなくしました。 (Sawada Masahiko)

    以前はBUFSIZが行の長さの上限でした。

  • pgbenchに長いオプション名を追加しました。 (Fabien Coelho)

  • pgbenchにトランザクション速度を指定する--rateオプションを追加しました。 (Fabien Coelho)

  • pgbenchに定期的に進行報告を表示する--progressオプションを追加しました。 (Fabien Coelho)

E.6.3.12.2. pg_stat_statements

  • pg_stat_statementsがクエリ文字列の格納のために 共有メモリではなくファイルを使うようにしました。 (Peter Geoghegan)

    これにより、クエリ文字列の長さの制限をなくし、デフォルトでこれまでより たくさんの異なるステートメントを追跡できるようにしました。

  • pg_stat_statementsの内部クエリハッシュ識別子の報告を できるようにしました。 (Daniel Farina, Sameer Thakur, Peter Geoghegan)

  • クエリ文字列以外にのすべての情報についてpg_stat_statementsを 取り出す機能を追加しました。 (Peter Geoghegan)

    これにより、モニタリングツールが作成されたばかりのエントリをフェッチできるようになり、統計情報のために繰り返すクエリの性能を高めます。

  • pg_stat_statementsDEALLOCATEコマンドを 無視するようにしました。 (Fabien Coelho)

    すでにPREPAREを無視するようになっていますので、より一貫性を高めます。

  • サーバシャットダウン時に、統計ファイルを$PGDATA/globalではなく、 $PGDATA/pg_statに保存します。 (Fujii Masao)