リリース日: 2013-09-09
PostgreSQL 9.3の主な機能強化には以下のものがあります。
マテリアライズドビューを追加しました。
単純なビューを自動更新可能(auto-updatable)にしました。
JSON
の値から要素を抽出する演算子および関数を含めJSON
データ型に多くの機能を追加しました。
FROM
句の副問い合わせや関数呼び出しで使用できるSQL標準のLATERAL
オプションを実装しました。
外部データラッパで外部テーブルへの書き込み(挿入/更新/削除)が出来るようになりました。
他のPostgresサーバにアクセスできる、Postgres外部データラッパを追加しました。
event triggersのサポートを追加しました。
データページをチェックサムで検査し、破損を報告するオプションの機能を追加しました。
キー列によらない行の更新で外部キー検査をブロックしないようにしました。
System Vにおける共有メモリの要件を大幅に削減しました。
上記の項目については、以下でより詳細に説明します。
以前のリリースからデータを移行したい時は、どのリリースについても、pg_dumpallを利用したダンプとリストア、 あるいはpg_upgradeの利用が必要です。
バージョン9.3には、以前のバージョンとの互換性に影響する多くの変更点が含まれています。 以下の非互換性に注意してください。
replication_timeout
の名前をwal_sender_timeout
に変更しました。
この設定はWAL送信のタイムアウトを設定します。
他のセッションを遅延させる可能性があるため、commit_delay
の設定に、スーパーユーザー権限が必要になります。 (Simon Riggs)
メモリ上のソートに全てのメモリ割り当てを行うことを許します。(Jeff Janes)
work_mem
を以前の振る舞いに基づいて設定しているユーザーは、設定を再検討する必要があります。
更新もしくは削除されようとしたタプルがすでにBEFORE
トリガで更新もしくは削除されていた場合、エラーを投げます。(Kevin Grittner)
以前は、元々意図していた更新は何も発することなくスキップされていました。
意図していた更新によって、トリガが他の場所へデータを伝播した可能性があるため、結果として、論理的に一貫性がない状態になっていました。
本バージョンでは、一貫性のない結果がコミットされることがないようにエラーを投げます。
もしこの変更がアプリケーションに影響を及ぼす場合、最適な解法は恐らくデータの伝播動作をAFTER
トリガで実行することです。
このエラーは、クエリがそのクエリ自身によって、後で変更された行を変更するvolatile関数を呼び出す場合に投げられます。 このような例は同様に、以前は何も発することなく更新をスキップしていました。
複数列に対するON UPDATE SET NULL/SET DEFAULT
における外部キーの動作を変更し、UPDATE
文で更新されるものだけではなく、全ての制約つきの列に影響するようにしました。(Tom Lane)
以前は、UPDATE
文で変更された参照列に該当する列のみ設定されていました。これはSQL-92版で要求されていたものですが、より新しい版のSQL標準では、この新しい動作が明記されています。
search_path
が変わった場合、キャッシュされた計画が再計画されるようになりました。
(Tom Lane)
新しいsearch_path
とともにクエリが再実行された場合、以前は、現在のセッションで、すでに作成されているキャッシュされた計画は再計画されず、驚くべき動作になっていました。
to_number()
が、3桁毎の区切り文字として使用されるピリオドを適切に扱えるように修正しました。(Tom Lane)
以前は、ロケールでそれが小数点ではないと示されても、ロケール固有の小数点を指定するD
書式コードが使われても、ピリオドは小数点だと認識されていました。FM
書式が使用された場合も、誤った結果に終わっていました。
集合以外を返すSTRICT
関数の引数に集合を返す関数があるとき、適切にNULLを返すように修正しました。
(Tom Lane)
strict関数にわたったNULL値は、出力行が完全に隠されるのではなく、NULLという結果に終わるべきです。
4GBごとに最後の16MBをスキップするのではなく、WALを継続的に格納します。(Heikki Linnakangas)
以前は、ファイル名がFF
で終わるWALファイルは使われませんでした。もし、このスキップを考慮したWALバックアップやリストアのスクリプトを使っていた場合、それらを直す必要があります。
pg_constraint.confmatchtype
において、(FULL
でも、PARTIAL
でもない場合の)外部キーの一致型として、「simple」を示すs
を格納します。(Tom Lane)
以前は、「unspecified」を示すu
で表されていました。
以下に、PostgreSQL 9.3とそれ以前のメジャーリリースとの違いに関する詳細な説明をします。
キーではない行の更新が外部キー制約によりブロックされることを防ぎます。(Álvaro Herrera, Noah Misch, Andres Freund, Alexander Shulgin, Marti Raudsepp, Alexander Shulgin)
この変更は同時実行性を改善し、外部キー制約を持つテーブルを更新する際に、デッドロックに陥る可能性を減らします。外部キーで参照される列を変更しないUPDATE
は、その行に対して新しいロックモードであるNO KEY UPDATE
を使い、外部キー検査は新しいロックモードであるKEY SHARE
を使います。このKEY SHARE
は、NO KEY UPDATE
と競合しません。そのため、外部キーが変更されない場合、ブロックされることはありません。
セッションがロックを獲得するまで待機する時間を制限できるようにするために、設定変数lock_timeout
を追加しました。
(Zoltán Böszörményi)
範囲型について、上限と下限、および範囲の長さの度数分布を収集し、利用するようにしました。(Alexander Korotkov)
インデックスアクセスに対してのオプティマイザのコスト見積もりを改善しました。 (Tom Lane)
ハッシュ集約を使用したDISTINCT
について、オプティマイザによるハッシュテーブルサイズの見積もりを改善しました。
(Tom Lane)
操作を行わないResult計画ノード、Limit計画ノードを抑制します。(Kyotaro Horiguchi, Amit Kapila, Tom Lane)
オプティマイザが総コスト全体のみを気にするとき、安価な起動コストを基にしたプランを持ち続けることをやめることにより、オプティマイザのオーバーヘッドを削減しました。(Tom Lane)
あとでタプルを凍結状態にするオーバヘッドを避けるため、COPY FREEZE
オプションを追加しました。
NUMERIC
の計算における性能を向上しました。
commit_delay
を待機するセッションの同期性能を向上しました。(Peter Geoghegan)
これはcommit_delay
の便利さを大いに改善します。
一時テーブルにアクセスしないトランザクションにおいて、一時テーブルを空にすることをやめることにより、CREATE TEMPORARY TABLE ... ON COMMIT DELETE ROWS
オプションの性能を向上しました。(Heikki Linnakangas)
Vacuumが無効になったタプルを削除した後に、可視性を再検査するようにしました。(Pavan Deolasee)
これは、ページがすべて可視とマークされる機会を増加させます。
リソース所有者ごとのロックのキャッシュを追加しました。(Jeff Janes)
これはたくさんのロックを含む複数の文から成るトランザクションでSQL文が完了した際のロックの内部処理を高速にします。これは特にpg_dumpに有効です。
新しいリレーションを作るトランザクションのコミット時に、すべてのリレーションキャッシュをスキャンすることをやめました。 (Jeff Janes)
これはpg_restoreの実行のような、連続する小さなトランザクションで多くのテーブルを作成するセッションを高速化します。
多くのリレーションを削除するトランザクションの性能を向上しました。(Tomas Vondra)
データページのチェックサムを確認し、破損があった場合に報告を行うオプション機能を追加しました。(Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
チェックサムオプションは、initdb実行時に設定できます。
統計情報コレクタのデータファイルをグローバルで持つものとデータベース単位でもつファイルに分割しました。(Tomas Vondra)
これは、統計情報追跡に必要なI/Oを削減します。
システム時刻が後戻りしても、適切に操作できるように統計情報コレクタを修正しました。 (Tom Lane)
以前は、記録した最新の時刻に達するまで、統計情報コレクタが停止していました。
postmasterが標準エラーへのログ出力を終了する前に、標準エラーに有益なメッセージを出力します。(Tom Lane)
この修正は、postmaster起動時にのみ標準エラーへログ出力する一般的な設定において、どこにログが出力されるのか探す手間を減らすでしょう。
意図しない失敗のデバッグを容易にするため、認証が失敗した際、それに対応するpg_hba.conf
の行を出力します。(Magnus Hagander)
LDAPのエラー報告とドキュメントを改善しました。(Peter Eisentraut)
RFC 4516に従って、URLにおけるLDAP認証のパラメータを指定するサポートを追加しました。(Peter Eisentraut)
ALL
ではなく、DEFAULT
で始まるようにssl_ciphers
のパラメータを変更し、安全ではない暗号を削除しました。(Magnus Hagander)
これにより、より適切なSSL暗号の集合がもたらされます。
接続するたびにではなく、一度のみ、pg_ident.conf
を解析し、ロードするようにしました。(Amit Kapila)
これは、pg_hba.conf
の処理と同様です。
System Vの共有メモリの要件を大幅に減少させました。(Robert Haas)
Unix系のシステムにおいて、大部分のPostgreSQLの共有メモリには現在、mmap()
が使われています。
これによって多くのユーザは、共有メモリのカーネルパラメータを調整する必要がなくなります。
postmasterが複数のUnixドメインソケットを監視できるようにしました。(Honza Horák)
設定パラメータunix_socket_directory
は、ディレクトリの一覧を受け入れるunix_socket_directories
に置き換えられました。
設定ファイルのディレクトリを指定できるようにしました。(Magnus Hagander, Greg Smith, Selena Deckelmann)
そのようなディレクトリは、サーバ設定ファイル内のinclude_dir
で指定されます。
initdbの設定値shared_buffers
の上限を128MBに増加しました。
これは、initdb実行時にpostgresql.conf
に設定される上限値です。以前は、32MBが上限値でした。
external PID fileがあれば、postmaster終了時に削除します。(Peter Eisentraut)
ストリーミングレプリケーションのスタンバイのタイムラインスイッチへの追従が可能になりました。(Heikki Linnakangas)
ストリーミングレプリケーションのスタンバイサーバに、新しくマスタに昇格したスレーブからWALデータを受信することを可能にします。以前、その他のスレーブは新しいマスタとのレプリケーションを始めるために再同期が必要でした。
SQL関数pg_is_in_backup()
とpg_backup_start_time()
を追加しまし>た。(Gilles Darold)
これらの関数は、ベースバックアップ作成のステータスを報告します。
synchronous_commit
をオフにした場合のログシッピングの性能を向上しました。(Andres Freund)
ストリーミングレプリケーションのスレーブのプライマリへのとても速い昇格が可能になりました。(Simon Riggs, Kyotaro Horiguchi)
最後のチェックポイントの再実行位置をpg_controldataの出力に追加しました。(Fujii Masao)
この情報は、どのWALファイルがリストアに必要か決定するのに役立ちます。
pg_receivexlogのようなツールが異なるアーキテクチャのコンピュータで実行できるようにしました。(Heikki Linnakangas)
WALファイルは依然としてプライマリと同じアーキテクチャのサーバでしか再生できません。しかし、ストリーミングレプリケーションのプロトコルはマシンに非依存になったため、異なるアーキテクチャのマシンへWALファイルを転送し、格納することができます。
pg_basebackupの--write-recovery-conf
オプションにより、最小のrecovery.conf
を出力できるようにしました。(Zoltán Böszörményi, Magnus Hagander)
これにより、スタンバイサーバのセットアップが簡易になります。
pg_receivexlogとpg_basebackup--xlog-method
が、タイムラインの切替を扱えるようになりました。(Heikki Linnakangas)
WAL受信のタイムアウトを制御できるようにwal_receiver_timeout
パラメータを追加しました。(Amit Kapila)
これにより、より速く、接続が失敗したことを検知できます。
レコード用のヘッダがページを跨がって分割できるように、WALレコードの形式を変更しました。(Heikki Linnakangas)
新しい形式は多少小さくなり、書き込みが効率的になります。
イベントトリガをサポートしました。(Dimitri Fontaine, Robert Haas, Álvaro Herrera)
これにより、イベントで有効な言語で書かれたサーバサイドの関数が、DDL実行時に呼び出せるようになります。
外部データラッパが外部テーブルの書き込み(挿入/更新/削除)が可能になりました。(KaiGai Kohei)
CREATE SCHEMA ... IF NOT EXISTS
句を追加しました。(Fabrízio de Royes Mello)
REASSIGN OWNED
が共有オブジェクトの所有権も変更できるようになりました。(Álvaro Herrera)
与えられた初期値の文字列が遷移データ型として適切な入力値ではない場合に、CREATE AGGREGATE
が警告を発するようにしました。(Tom Lane)
CREATE TABLE
により、内部的にインデックスやシーケンスが作成されたことに関するメッセージを取り消しました。(Robert Haas)
これらのメッセージは、本バージョンから、DEBUG1
であらわれるようになったので、デフォルト設定では表示されません。
テーブル名で存在しないスキーマが指定されたとき、DROP TABLE IF EXISTS
が成功するようにしました。(Bruce Momjian)
以前は、スキーマが存在しない場合、エラーが投げられていました。
クライアントに、制約違反の詳細を別のフィールドとして提供するようになりました。(Pavel Stehule)
これにより、クライアントがテーブル、列、データ型、制約名のエラー詳細を取得できるようになります。以前は、こういった情報はエラー文字列から抽出するしかありませんでした。クライアントライブラリは、これらのフィールドへのアクセスが必要になります。
ALTER
ALTER TYPE ... ADD VALUE
でIF NOT EXISTS
オプションをサポートしました。(Andrew Dunstan)
これは列挙型に値を追加するときに有用です。
全ユーザに対する設定ができるように、ALTER ROLE ALL SET
を追加しました。(Peter Eisentraut)
これにより、全データベースの全ユーザに対する設定ができるようになります。ALTER DATABASE SET
では、すでに単一のデータベースの全ユーザに対する設定が出来ます。postgresql.conf
でも同様のことが効果があります。
ALTER RULE ... RENAME
のサポートを追加しました。(Ali Dar)
VIEW
マテリアライズドビューを追加しました。 (Kevin Grittner)
アクセスごとに、元になっているテーブルが読み込まれる通常のビューとは違い、作成時やリフレッシュ時にマテリアライズドビューは物理的なテーブルを作成します。マテリアライズドビューにアクセスすると、その物理的なテーブルから読み込みを行います。マテリアライズドビューの差分リフレッシュや、自動的に元となっているテーブルへアクセスする機能はまだありません。
単純なビューを自動更新可能にしました。(Dean Rasheed)
元となっている一つのテーブルが持ついくつかのもしくは全ての列を参照するシンプルなビューは、デフォルトで更新可能になりました。より複雑なビューはINSTEAD OF
トリガ、もしくは、INSTEAD
ルールを使用して、更新ができるように作成できます。
CREATE RECURSIVE VIEW
を追加しました。(Peter Eisentraut)
これは内部的に、CREATE VIEW ... WITH RECURSIVE ...
に変換されます。
参照されているテーブル名の変更、列名の変更、列の追加、削除が起きたときに使用されるビューやルールのコードを改善しました。(Tom Lane)
テーブル名と列名の変更により、ルールやビューの文字列に新しい名前を用いるだけの場合、結果があいまいになることがありました。 この変更では、ルールで生まれるコードが作成したテーブルや列の別名を必要に応じて挿入することで、元の意味を保存します。
array_remove()
とarray_replace()
を追加しました。(Marco Nenciarini, Gabriele Bartolini)
concat()
とformat()
が、適切にVARIADIC
と付けられた引数を展開できるようになりました。(Pavel Stehule)
フィールドの幅と左右の整列を決めるオプションを提供できるように、format()
を改善しました。(Pavel Stehule)
to_char()
、to_date()
、to_timestamp()
が、紀元前(BC)の値を正しく扱えるようにしました。(Bruce Momjian)
以前は、「IYYY-IW-DY」形式のように、誤っているか、紀元後(AD)とは一貫性のないふるまいとなっていました。
to_date()
、to_timestamp()
が、ISOとグレゴリオ暦が混ざった場合に、正しい値を返せるようにしました。(Bruce Momjian)
pg_get_viewdef()
が、SELECT
対象のリスト項目やFROM
句の項目の後に続いて、デフォルトで新しい行から始めるようにしました。(Marko Tiikkaja)
これにより、たとえば、pg_dumpの出力結果などに表示される行の長さが短くなります。
map_sql_value_to_xml_value()
が、基本型が出力されるのと同じ方法で、ドメイン型の値を出力できるように修正しました。(Pavel Stehule)
boolean
などいくつかの組み込み型には特別な出力形式のルールがあります。これらのルールは、本バージョンからドメイン型にも適用されます。
PL/pgSQLが、複合型の式をRETURN
に使えるようにしました。(Asif Rehman)
以前のバージョンでは、複合型の式を返す関数では、RETURN
はその型の変数を参照することしかできませんでした。
PL/pgSQLが、別のフィールドとして制約違反の詳細にアクセスできるようになりました。(Pavel Stehule)
PL/pgSQLがCOPY
によって処理された行数にアクセスできるようになりました。(Pavel Stehule)
PL/pgSQLの関数内で実行されたCOPY
は、本バージョンよりGET DIAGNOSTICS x = ROW_COUNT
で取得される値を更新します。
予約されていないキーワードが識別子としてPL/pgSQL内のどこでも使用できるようになりました。(Tom Lane)
たとえ名目上、予約されていない場合でも、PL/pgSQL文法内のある場所で、識別子として使用されるためには、キーワードに引用符を使用しなければなりませんでした。
サブトランザクションがアボートしている間、SPIタプルテーブルのリークを防ぎます。(Tom Lane)
失敗したサブトランザクションの終わりに、コアSPIコードがそのサブトランザクションで作成したSPIタプルテーブルを解放するようになります。これにより、SPIが使っているコードに、エラーリカバリコードの中で、タプルテーブルを追跡し、手動で解放させる必要がなくなります。こういった失敗は、PL/SQLやおそらく他のSPIクライアントでもトランザクション有効期間のメモリリークの問題を数多く発生させる原因となっていました。SPI_freetuptable()
は、複数の解法要求から守られており、手動で解放するように注意していた既存のコードがこの変更で使用できなくなることはありません。
SPI関数が、COPY
によって処理された行数にアクセスできるようになりました。(Pavel Stehule)
サーバが接続を受け付ける準備ができているか確認できるコマンドラインユーティリティ、pg_isreadyを追加しました。(Phil Sorber)
pg_restore、clusterdb、reindexdb、vacuumdbが、複数の--table
オプションを受け付けるようになりました。
これはpg_dumpの--table
オプションと同様の動きをします。
pg_dumpall、pg_basebackup、pg_receivexlogに、接続文字列を指定できる--dbname
オプションを追加しました。(Amit Kapila)
接続情報を返却するlibpq関数、PQconninfo()
を追加しました。(Zoltán Böszörményi, Magnus Hagander)
psqlのタブ補完とパターンサーチがより効率的になるように関数コスト設定が調整されました。(Tom Lane)
psqlのタブ補完のカバー範囲を改良しました。(Jeff Janes, Dean Rasheed, Peter Eisentraut, Magnus Hagander)
psqlの--single-transaction
モードが、標準入力からの読み込みに対応するようになりました。(Fabien Coelho, Robert Haas)
以前は、ファイルからの読み込み時のみ、このオプションが有効でした。
古いサーバへの接続時のpsqlの警告をとりやめました。(Peter Eisentraut)
psqlよりも新しいメジャーバージョンへの接続時には、警告があがります。
SQLコマンドを繰り返し実行できるpsqlのコマンド\watch
を追加しました。(Will Leinweber)
psql変数内にクエリ結果を格納するpsqlのコマンド\gset
を追加しました。(Pavel Stehule)
psqlの\conninfo
コマンドで、SSL情報を取得できるようになりました。(Alastair Turner)
psqlの\df+
コマンドの出力に「Security」列を追加しました。(Jon Erdman)
psqlの\l
コマンドでデータベース名のパターンを指定できるようにしました。(Peter Eisentraut)
psqlで、アクティブな接続がないときに、\connect
コマンドがデフォルトを使えないようにしました。(Bruce Momjian)
サーバがクラッシュした場合などがこれに該当します。
psqlの\g
file
で実行されたSQLコマンドが失敗した後に、状態を適切に初期化するようになりました。(Tom Lane)
以前は、SQLコマンドからの出力が期待していない形で、同じファイルに出力し続けていました。
psqlにlatex-longtable
出力形式を追加しました。(Bruce Momjian)
これの形式は、複数ページにまたがるテーブルを扱えます。
border=3
出力モードをpsqlのlatex
形式に加えました。(Bruce Momjian)
psqlのタプルのみ表示モードおよび拡張表示モードのとき、0行の取得結果に対して、「(No rows)」を出力しなくなりました。(Peter Eisentraut)
psqlの位置揃え無しで、拡張表示モードのとき、0行の取得結果に対して、空行を出力しなくなりました。(Peter Eisentraut)
並行してテーブルをダンプできるpg_dumpの--jobs
オプションを追加しました。(Joachim Wieland)
pg_dumpが関数をより予測可能な順番で出力するようにしました。(Joel Jacobson)
pg_dumpによって、出力されるtarファイルがPOSIXに準拠されるように修正しました。(Brian Weaver, Tom Lane)
他のクライアントコマンドとの一貫性を保つために、--dbname
オプションをpg_dumpに追加しました。(Heikki Linnakangas)
データベース名はすでに、フラグ無しで最後に書くことによって指定できました。
initdbが新しくデータディレクトリを作成するときにfsyncを行うようになりました。(Jeff Davis)
これによりinitdb直後にシステムがクラッシュした場合でもデータ整合性が保証されます。これは--nosync
オプションを使うことにより、無効化できます。
initdbに、データディレクトリを永続的なストレージに同期する--sync-only
オプションを追加しました。(Bruce Momjian)
これはpg_upgradeで使われています。
initdbで作成するデータディレクトリが、ファイルシステムのマウントポイントの最上位に配置することに対して、警告を発するようにしました。(Bruce Momjian)
バックグラウンドワーカープロセスプラグインを使用できる基盤を追加しました。(Álvaro Herrera)
一元化されたタイムアウトAPIを作成しました。(Zoltán Böszörményi)
libpgcommonを作成し、pg_malloc()
と他の関数をそこに移動させました。(Álvaro Herrera, Andres Freund)
これにより、libpgportには移植性関連のコードのみが使われることになります。
より大きい構造体に埋め込まれたリストをサポートします。(Andres Freund)
SIGALRM
を含むすべてのシグナルに対して、SA_RESTART
を使います。(Tom Lane)
errcontext()
メッセージが翻訳されたときに、正しいテキストドメインが使われることを保証するようになりました。(Heikki Linnakangas)
クライアント側のメモリアロケーション関数の名前を標準化しました。(Tom Lane)
コンパイル時定数の状態が合わない場合、コンパイルに失敗する「静的アサーション」をサポートします。(Andres Freund, Tom Lane)
クライアント側のコードにAssert()
をサポートします。(Andrew Dunstan)
ereport()
やelog()
が結果を返さないことを、Cコンパイラに伝えるようになりました。(Peter Eisentraut, Andres Freund, Tom Lane, Heikki Linnakangas)
リグレッションテストの出力比較ユーティリティに、PG_REGRESS_DIFF_OPTS
経由でオプションをわたせるようにしました。(Peter Eisentraut)
CREATE INDEX CONCURRENTLY
に対する隔離性テストを追加しました。
(Abhijit Menon-Sen)
よりよいint16
/int32
を代わりに使用するため、int2
/int4
に対するtypedefを削除しました。(Peter Eisentraut)
MacのOS X上でのinstall-stripを修正しました。(Peter Eisentraut)
configureフラグの--disable-shared
オプションがサポートされなくなったため、削除しました。(Bruce Momjian)
pgindentが、Perlで書き直されました。(Andrew Dunstan)
PostgreSQLのperltidy設定に合わせるPerl形式を設定するEmacsのマクロを提供します。(Peter Eisentraut)
バックエンドの文法が変わったときに、キーワード一覧をチェックできるようツールを実行します。(Tom Lane)
UESCAPE
の解析方法を変更し、字句解析テーブルのサイズが大幅に小さくなりました。
(Heikki Linnakangas)
flexとbisonのmakeルールが一元化されました。(Peter Eisentraut)
これはpgxsの作者に有益です。
内部の多くのバックエンド関数がvoidではなく、オブジェクトのOID
を返すように変更しました。(Dimitri Fontaine)
これはイベントトリガに有益です。
トランザクションのコールバックのために、pre-commit、pre-prepare、pre-subcommitというイベントを開発しました。(Tom Lane)
トランザクションのコールバックを使用するロード可能なモジュールは、これらの新しいイベントを扱えるように変更する必要があるかもしれません。
データベースオブジェクトのマシンが読める説明を生成するpg_identify_object()
を追加しました。 (Álvaro Herrera)
サーバフック、post-ALTER
-objectを追加しました。(KaiGai Kohei)
汎用バイナリヒープが実装しました。これは、マージ、アペンド操作に使用されます。 (Abhijit Menon-Sen)
src/timezone/data
のファイルの更新時に、時間帯省略形の変更の検知を助けるツールを提供します。(Tom Lane)
libpq、ecpgライブラリにpkg-configをサポートします。(Peter Eisentraut)
src/tool/backend
ディレクトリを削除しました。その内容は、PostgreSQLのwikiにあります。(Bruce Momjian)
WALの読み込みを分割し、独立した機能としました。(Heikki Linnakangas, Andres Freund)
WALの位置(XLogRecPtr
)を表現するのに、32bit整数ペアでなく、64bit整数を使います。(Heikki Linnakangas)
WAL形式を読む必要のあるツールは、概ね、修正する必要があるでしょう。
PL/Pythonがプラットフォーム固有のインクルードディレクトリをサポートするようになりました。(Peter Eisentraut)
OS X上のPL/Pythonが、カスタムバージョンのPythonでビルド出来るようになりました。(Peter Eisentraut)
他のPostgresサーバにアクセスできるPostgres外部データラッパをcontribモジュールに追加しました。(Shigeru Hanada)
この外部データラッパは書き込みもサポートします。
pg_xlogdumpをcontribモジュールに追加しました。(Andres Freund)
pg_trgmの正規表現検索にてインデックスが使えるようになりました。(Alexander Korotkov)
pg_trgmのマルチバイト文字の取り扱いを改善しました。(Tom Lane)
wcstombs()、もしくは、towlower()ライブラリ関数を持っていないプラットフォーム上では、非ASCIIデータに対するpg_trgmのインデックス内容に互換性のない変化が起きる可能性があります。
このような場合、それらのインデックスにREINDEX
を行うことにより、正しい検索結果が得られます。
GINインデックスの挿入保留リストのサイズを報告するpgstattuple関数を追加しました。(Fujii Masao)
pg_test_timingの出力を改善しました。(Bruce Momjian)
pg_test_fsyncの出力を改善しました。(Peter Geoghegan)
固有のオプション検証関数をもつdblink専用の外部データラッパを作成しました。
dblinkの接続先を定義するためにこの外部データラッパを使う場合、固定的な接続オプションリストを使うのでなく、どのような接続オプションがサポートされているかlibpqライブラリを確認します。
pg_upgradeによるダンプとリストアを並列に行えるようにしました。(Bruce Momjian, Andrew Dunstan)
これにより、テーブルスペースごとのデータファイルの並列コピー、リンクと同様に、データベースの並列スキーマダンプ、リストアが可能になります。--jobs
オプションで並列レベルを指定して下さい。
pg_upgradeが、カレントディレクトリに Unix-domainソケットを作るようになりました。 (Bruce Momjian, Tom Lane)
これにより、アップグレード中に誤って接続されてしまう可能性が少なくなります。
pg_upgradeの--check
モードが適切にデフォルトではないソケットディレクトリを検知するようになりました。 (Bruce Momjian, Tom Lane)
多くのテーブルを持つデータベースに対するpg_upgradeの性能を向上しました。(Bruce Momjian)
実行されたコマンドを表示することでpg_upgradeのログを改善しました。(Álvaro Herrera)
コピーやリンク中のpg_upgradeのステータス表示を改善しました。 (Bruce Momjian)
pgbenchに--foreign-keys
オプションを追加しました。 (Jeff Janes)
外部キーの性能試験で使用できるように、pgbenchで作成される通常のテーブルに外部キー制約を追加しました。
pgbenchが性能統計を集計し、--aggregate-interval
で設定した秒数ごとに集計結果を作成できるようにしました。 (Tomas Vondra)
ログに書き込まれるトランザクションの割合を制御できるpgbenchに--sampling-rate
オプションを追加しました。(Tomas Vondra)
pgbenchの初期化モードで出力されるステータスメッセージを削減し、改良しました。 (Robert Haas, Peter Eisentraut)
pgbenchに5秒ごとに1行出力する-q
オプションを追加しました。 (Tomas Vondra)
初期化中にpgbenchの経過時間と残りの推定時間を出力します。(Tomas Vondra)
要求されたスケールファクタが20000を超える場合には、関連するカラムがinteger
からbigint
に変わり、pgbenchがより大きいスケールファクタを使用できるようにしました。
(Greg Smith)
EPUB書式の文書が生成できるようになりました。(Peter Eisentraut)
FreeBSDのカーネルの設定文書を更新しました。(Brad Davis)
WINDOW
関数の文書を改善しました。(Bruce Momjian, Florian Pflug)
macOSでドキュメントツールをセットアップする手順を追加しました。(Peter Eisentraut)
commit_delay
の文書を改善しました。