2009-07-01
長年の開発の結果PostgreSQLは多くの領域においてその機能が完全なものになりました。 このリリースでは新機能(認証、監視、領域再利用など)に関しては的を絞った手法を取り、また最近の標準SQLで定義された機能を追加しています。 改良された主な点を以下に示します。
ウィンドウ関数
共通テーブル式および再帰問い合わせ
関数のデフォルトパラメータおよび可変長パラメータ
並行リストア
列権限
データベース単位のロケール設定
ハッシュインデックスの改良
EXISTS
およびNOT EXISTS
問い合わせにおける、結合性能の改良
ウォームスタンバイの使用の簡易化
空き領域マップの自動サイズ調整
可視性マップ(変更頻度が少ないテーブルにおけるバキュームオーバーヘッドを大きく低減します)
バージョンを問わないpsql(古めのサーバに対してもバックスラッシュコマンドが動作します)
ユーザ認証におけるSSL証明書のサポート
関数単位の実行時統計情報
psqlにおける関数編集の簡易化
新しいcontribモジュール:pg_stat_statements、auto_explain、citext、btree_gin
上記項目は以下の節で詳細に説明します。
すべての過去のリリースからデータを移行する場合、pg_dumpを使用したダンプ/リストアが必要です。
既知の非互換性を以下に示します。
デフォルトでは64ビット整数型の日付時間型を使用します。(Neil Conway)
これまでは、configureの--enable-integer-datetimes
オプションでこれを選択していました。
過去の動作を維持するためには--disable-integer-datetimes
付きで構築してください。
ipccleanユーティリティコマンドを削除しました。(Bruce)
このユーティリティは一部のプラットフォームでしか動作しませんでした。 ユーザは代わりに使用するオペレーティングシステムのツールを使用すべきです。
ログファイルのサイズを小さくするためlog_min_messages
のデフォルト設定をwarning
に変更しました(これまではnotice
でした)。(Tom)
max_prepared_transactions
のデフォルト設定をゼロに変更しました(これまでは5でした)。(Tom)
LOG
メッセージレベルでdebug_print_parse
、debug_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
には大きな変更点があります。
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
をサポートします。
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)
組み込みのハッシュ関数の多くで、リトルエンディアンマシンとビッグエンディアンマシンとで異なる結果になるようになりました。
DateStyle
がinterval
型の出力書式を制御しないようになりました。
代わりとなる新しい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
書式文字列に一致するようになりました。
PostgreSQL 8.4とこれまでのメジャーリリースとの間の変更点についての詳細を以下に示します。
オプティマイザの統計情報計算を改良しました。(Jan Urbanski、Tom)
特に全文検索演算子に関する推定が大きく改良されました。
ハッシュ処理を用いたSELECT DISTINCT
およびUNION
/INTERSECT
/EXCEPT
が可能になりました。(Tom)
これは、こうした種類の問い合わせが自動的にソートされた出力を生成しなくなったことを意味します。
半結合および反結合に関して明確な概念を作成しました。(Tom)
この作業により、IN (SELECT ...)
句に関するこれまでのとってつけたような扱いを形式化しました。
さらにこれをEXISTS
およびNOT EXISTS
句にも拡張しました。
これによりEXISTS
およびNOT EXISTS
問い合わせの計画作成が非常に改善されるはずです。
一般的には、論理的には同一であるIN
とEXISTS
句が、同程度の性能を持つようになりました。
これまではよく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)
pg_settings
が有効な値を表示できるようにするために、多くのpostgresql.conf
設定が列挙型の値に変換されます。(Magnus)
プランナが取り出すものと仮定するカーソル行数を制御するためのcursor_tuple_fraction
パラメータを追加しました。(Robert Hell)
postgresql.conf
におけるカスタム変数クラスの名前にアンダースコアが使用できるようになりました。(Tom)
(安全ではない)crypt
認証方式サポートを削除しました。(Magnus)
使用することができる平文ではないパスワード方式はまったくありませんでしたので、これは実質的にPostgreSQL 7.2クライアントライブラリで廃止されていました。
pg_ident.conf
内の正規表現をサポートします。(Magnus)
Kerberos/GSSAPIパラメータがpostmasterを再起動させることなく変更できるようになりました。(Magnus)
サーバ証明書ファイル内のSSL証明書チェインをサポートします。(Andrew Gierth)
完全な証明書チェインを含めることにより、クライアントは、商用CAを使用する場合によくある、ローカルに保持した中間CAの証明書をすべてに持たせることなく証明書を検証できるようになります。
db_user_namespace
を有効にし、MD5
認証を組み合わせて使用した場合に、適切なエラーメッセージを報告するようになりました。(Bruce)
pg_hba.conf
すべての認証オプションがname=value
構文を使用するように変更しました。(Magnus)
これによりldap
、pam
、ident
認証方式において互換性がない変更がなされました。
これらの方式を持つpg_hba.conf
はすべて新しい書式を使う形に書き換えなければなりません。
ident sameuser
オプションを削除しました。
代わりにこれをユーザマップの指定がない場合のデフォルトの動作としました。(Magnus)
すべての外部認証方式においてユーザマップパラメータを許可します。(Magnus)
これまではユーザマップはident
認証でのみサポートされていました。
クライアント証明要求を制御するためのclientcert
オプションを追加しました。(Magnus)
これまではサーバのデータディレクトリ内のルート証明書の有無により制御されていました。
SSL証明書経由のユーザ認証を可能にするcert
認証方式を追加しました。(Magnus)
これまでのSSL証明書はクライアントが証明書へのアクセスを持つかどうか検証するのみで、ユーザの認証は行いませんでした。
krb5
、gssapi
、sspi
のレルムおよびkrb5
のホスト設定がpg_hba.conf
内で指定できるようになりました。(Magnus)
これらはpostgresql.conf
内の設定を上書きします。
krb5
、gssapi
、sspi
方式向けのinclude_realm
パラメータを追加しました。(Magnus)
これにより異なるレルムからの同一ユーザがユーザマップを使用する別のデータベースユーザとして認証できるようになります。
即座にエラーを報告するために、ロード時にpg_hba.conf
を完全に解析します。(Magnus)
これまでは、ファイル内のほとんどのエラーは、クライアントが接続しようとするまで検知されませんでした。 このためエラーのあるファイルによりシステムを使用できないようにしてしまいます。 新しい動作では、エラーが再読み込み時に検知されると、おかしなファイルは拒絶され、postmasterは過去の値を用いて継続します。
pg_hba.conf
内の最初のエラーを検知した後中断するのではなく、すべての解析エラーを表示します。(Selena Deckelmann)
SolarisにおいてUnixドメインソケット経由でのident
認証をサポートします。(Garick Hamlin)
チェックポイントをできる限り早い終了を強制するためのオプションを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)
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_size
、wal_block_size
、wal_segment_size
を追加しました。(Bernd Helmle)
デッドロックの報告時に、サーバログにデッドロックに関わるすべての問い合わせテキストを記録します。(Itagaki Takahiro)
特定のプロセスIDに関する情報を返すpg_stat_get_activity(pid)
関数を追加しました。(Magnus)
サーバの統計情報ファイルの場所をstats_temp_directory
経由で指定できるようにしました。(Magnus)
これにより統計情報ファイルをRAM上のディレクトリに格納させて、I/O要求を低減させることができます。
再起動に渡って保持できるように、起動時または終了時にファイルは通常の場所($PGDATA/global/
)にコピーされます。
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機能はまだありません。
しかしこの変更は、dblink
やplproxy
のようなモジュール向けの接続情報の管理のための標準化と陳腐化されないシステムを提供します。
参照されるスキーマ、関数、演算子、演算子クラスが変更された時にキャッシュされた計画を無効化します。(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)
エラー位置がデータ型の不一致などの多くの意味的なエラーに対して報告されるようになりました。 これまでは位置づけすることができませんでした。
TRUNCATE
文レベルのON TRUNCATE
トリガをサポートします。(Simon)
TRUNCATE TABLE
にRESTART
/CONTINUE IDENTITY
オプションを追加しました。(Zoltan Boszormenyi)
シーケンスの開始値をALTER SEQUENCE START WITH
で変更できます。
TRUNCATE tab1, tab1
が成功するようになりました。(Bruce)
独立したTRUNCATE
権限を追加しました。(Robert Haas)
EXPLAIN
EXPLAIN VERBOSE
が計画ノード毎に出力列を表示するようにしました。(Tom)
これまでのEXPLAIN VERBOSE
では問い合わせ計画の内部表現を出力しました。
(この動作はdebug_print_plan
を介して利用できるようになりました。)
EXPLAIN
が個々のテーブルの副計画と初期計画とを識別するようにしました。(Tom)
EXPLAIN
がdebug_print_plan
を順守するようにしました。(Tom)
CREATE TABLE AS
に対するEXPLAIN
が可能です。(Peter)
LIMIT
/OFFSET
LIMIT
およびOFFSET
内の副問い合わせが可能です。(Tom)
LIMIT
/OFFSET
機能に標準SQL構文を追加しました。(Peter)
すなわちOFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS} ONLY
です。
列レベル権限のサポートを追加しました。(Stephen Frost、KaiGai Kohei)
CASCADE
の必要性を軽減させるために複数オブジェクトのDROP
操作を再作成しました。(Alex Hunsaker)
例えば、テーブルB
がテーブル A
に依存している場合、コマンドDROP TABLE A, B
がCASCADE
オプションを必要としないようになりました。
オブジェクトの依存関係を削除を開始する前にロックを確実に取得することにより、同時実行のDROP
コマンドに関する各種問題を修正しました。(Tom)
DROP
コマンド中の依存関係の報告を改良しました。(Tom)
標準SQLに従い、CREATE TABLE AS
にWITH [NO] DATA
句を追加しました。(Peter、Tom)
ユーザ定義のI/O変換キャストのサポートを追加しました。(Heikki)
CREATE AGGREGATE
がinternal
遷移データ型を使用できるようにしました。 (Tom)
CREATE TYPE
にLIKE
句を追加しました。(Tom)
これにより既存の型と同じ内部表現を使用するデータ型の作成が簡易になりました。
ユーザ定義の基本型に対する型カテゴリと「好ましい」状態指定を可能としました。(Tom)
これにより、ユーザ定義型の強制動作についてより多くの制御が可能になります。
CREATE OR REPLACE VIEW
がビューの最後に列を追加できるようにしました。(Robert Haas)
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
を追加しました。
未コミットな準備済みトランザクションが原因で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)
CLUSTER
コマンドとclusterdbにVERBOSE
オプションを追加しました。(Jim Cox)
待機中のトリガイベントの記録に必要なメモリを減らしました。(Tom)
ハッシュインデックスの構築速度とアクセス速度を大幅に改良しました。(Tom Raney、Shreya Bhargava)
これによりハッシュインデックスがB-Treeインデックスより高速になる場合もあり得ます。 しかしハッシュインデックスはまだクラッシュに対して安全ではありません。
ハッシュインデックスがインデックス対象の列の完全な値ではなく、ハッシュコードのみを保管するようにしました。(Xiao Meng)
これによりインデックス対象の列が長い場合ハッシュインデックスのサイズが大きく減少し、性能が向上しました。
GINインデックスにおける高速更新オプションを実装しました。(Teodor、Oleg)
このオプションは大きく更新速度を向上しますが、検索速度に小さな影響が現れます。
xxx_pattern_ops
インデックスがLIKE
だけではなく、単純な等価演算子でも使用できるようになりました。(Tom)
GIN重みづけ検索を全文検索インデックスに対して行う際、@@@
を使用する必要性をなくしました。(Tom、Teodor)
通常の@@
テキスト検索演算子を代わりに使用することができます。
@@
テキスト検索操作用のオプティマイザの選択性関数を追加しました。(Jan Urbanski)
全文検索において前方一致が可能になりました。(Teodor Sigaev、Oleg Bartunov)
複数列に対するGINインデックスをサポートします。(Teodor Sigaev)
ネパール語とヒンディーアルファベットのサポートを改良しました。(Teodor)
VACUUM
独立したリレーション単位の「フォーク」ファイル内で空き領域を追跡します。(Heikki)
VACUUM
で見つかった空き領域は、固定長の共有メモリ領域ではなく*_fsm
ファイルに記録されるようになりました。
max_fsm_pages
とmax_fsm_relations
設定は削除され、空き領域管理の管理作業を大きく簡易化しました。
バキューム処理を必要としないページを追跡する可視性マップを追加しました。(Heikki)
これにより、テーブルのごく一部のみがバキューム処理を必要とする場合に、VACUUM
がテーブルすべてを走査することを防ぐことができます。
可視性マップはリレーション単位の「フォーク」ファイル内に保管されます。
VACUUM
が可視性マップを無視し、そしてタプルを凍結するためにテーブル全体に対して行われなければならないタイミングを制御するvacuum_freeze_table_age
パラメータを追加しました。(Heikki)
トランザクションスナップショットをより入念に追跡します。(Alvaro)
これは、長期のトランザクションが存在する領域を回収する、VACUUM
能力を向上します。
リレーション単位の自動バキュームの指定する機能とCREATE TABLE
内でTOASTパラメータを指定する機能を追加しました。(Alvaro、Euler Taveira de Oliveira)
自動バキュームオプションはシステムテーブル内に保管するために使用されます。
vacuumdbに--freeze
オプションを追加しました。(Bruce)
全文検索類義語辞書用にCaseSensitive
オプションを追加しました。(Simon)
NUMERIC
除算の精度を改良しました。(Tom)
int2
にint8
を使用した基本算術演算子を追加しました。(Tom)
これは、一部の状況における明示的なキャストの必要性を除去します。
UUID
の入力にて4桁ごとに省略可能なハイフンが受け付けられるようになりました。(Robert Haas)
論理データ型の入力としてon
/off
を可能としました。(Itagaki Takahiro)
numeric
型の入力文字列においてNaN
の前後の空白を許可します。(Sam Mason)
0 BC
や000
、0000
という年を拒絶します。(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)
有効な値は、postgres
、postgres_verbose
、sql_standard
、iso_8601
です。
この設定はまた、一部のフィールドのみが正または負の指定を持つ場合の、負のinterval
の取り扱い方法を制御します。
timestamp
およびinterval
出力における秒の端数の取扱いの一貫性を改良しました。 (Ron Mayer)
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)
値に対するTOAST圧縮は32バイト程度とみなします(これまでは256バイト)。(Greg Stark)
TOAST圧縮を使用する前に空き領域が最低25%必要です。 (これまでは小規模値では20%、大規模値ではその規模程度が必要でした。)(Greg)
TOAST可能なフィールドが大規模フィールドと小規模フィールドとが混在する行に対して、大規模値を優先して行外に押し出し、小規模な値を不要に圧縮することを防ぐことができるように、TOASTの発見的処理過程を改良しました。(Greg、Tom)
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)
現在実行中の問い合わせを知る必要がある関数による使用を目的とした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_CATALOG
、CURRENT_SCHEMA
、SET CATALOG
、SET SCHEMA
のサポートを追加しました。(Peter)
これらは既存の機能に対して標準SQL構文を提供します。
任意の値のデータ型を返すpg_typeof()
を追加しました。(Brendan Jurd)
version()
は、サーバが32ビットバイナリか64ビットバイナリかについての情報を返すようにしました。(Bruce)
情報スキーマの列is_insertable_into
とis_updatable
が一貫性を持つ動作をするよう修正しました。(Peter)
情報スキーマのdatetime_precision
列の動作を改良しました。 (Peter)
これらの列はdate
列ではゼロを、time
、timestamp
、精度宣言がない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)
可変長引数の関数(引数の数が変動する関数)をサポートします。(Pavel Stehule)
終端までの引数のみを省略可能とすることができます。 またこれらはすべて同じデータ型でなければなりません。
関数引数のデフォルト値をサポートします。(Pavel Stehule)
CREATE FUNCTION ... RETURNS TABLE
句を追加しました。(Pavel Stehule)
SQL言語関数がINSERT
/UPDATE
/DELETE
RETURNING
句の出力を返すことができます。(Tom)
より簡単に動的問い合わせ文字列にデータを挿入するための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
が特殊なFOUND
とGET DIAGNOSTICS
ROW_COUNT
変数を設定するようにしました。(Pavel Stehule)
FETCH
およびMOVE
がGET DIAGNOSTICS
ROW_COUNT
変数を設定するようにしました。(Andrew Gierth)
ラベル無しのEXIT
が常にもっとも内側のループを抜けるようにしました。(Tom)
これまでは、他のループよりも入れ子に最も近いBEGIN
ブロックが存在すると、そのブロックが代わりに終了します。
新しい動作はOracle(TM)と一致するもので、かつ、これまで文書で説明していたものです。
文字列リテラルと入れ子状ブロックのコメントの処理が主SQLパーサの処理と一致するようにしました。(Tom)
具体的には、RAISE
内の書式文字列が、standard_conforming_strings
に従うようになることを含め、他の文字列リテラルと同じように動作するようになりました。
またこの変更は、standard_conforming_strings
が有効な場合に有効なコマンドが失敗するといった他の問題も修正します。
入れ子状の例外ブロックの深さが異なる場所で、同一関数が呼び出された時のメモリリークを防止します。(Tom)
pg_ctl restart
がコマンドライン引数を保持するよう修正しました。(Bruce)
-W
/--password
オプションを持つすべてのユーティリティにおいて、パスワードプロンプト表示を防止する-w
/--no-password
オプションを追加しました。(Peter)
createdb、createuser、dropdb、dropuserの-q
(メッセージ無し)オプションを削除しました。(Peter)
これらのオプションはPostgreSQL 8.3から効果がないものでした。
起動時の冗長なバナーを除去しました。単に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)
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)
\df
がcstring
型を取る、または、返す関数を隠さないようにしました。(Tom)
これまでは、そのほとんどが興味を引くとは思われないデータ型のI/O関数であったため、こうした関数は隠れていました。 デフォルトのシステム関数の隠ぺいに関する新しいポリシーではこの欠点を不要にします。
ダンプをテーブル空間の構造が異なるクラスタにリストアできるように、pg_dump/pg_dumpall/pg_restoreに--no-tablespaces
オプションを追加しました。(Gavin Roy)
pg_dumpとpg_dumpallから-d
および-D
オプションを削除しました。(Tom)
これらのオプションは、他のPostgreSQLクライアントアプリケーションにおけるデータベース名を選択するためのオプションと、あまりに頻繁に混乱されていました。
この機能はまだ利用可能ですが、長めのオプション名--inserts
または--column-inserts
と記述する必要があります。
pg_dumpとpg_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_dump、pg_dumpall、pg_restoreが指定したロールを使用することができるようになりました。(Benedek László)
pg_restoreがリストアするために複数の同時接続を使用できるようになりました。(Andrew)
同時接続数は--jobs
オプションにより制御されます。
これは独自書式のアーカイブでのみサポートされます。
新しい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認証を使用する場合、データベースユーザ名はチケットと一致しなければならないことに注意してください。
SSL接続の証明書検証を修正しました。(Magnus)
libpqは、SSL接続を確立する際に、証明書とサーバ名の検証をサポートするようになりました。
検証においてルート証明書が利用できない場合、SSL接続は失敗します。
sslmode
パラメータは証明書検証を有効にするため、および、その検査レベルを設定するために使用されます。
デフォルトではまだまったく検証を行わず、クライアント上でルート証明書を必要とすることなくSSLを有効にしたサーバと接続することができます。
ワイルドカードサーバ証明書をサポートします。(Magnus)
証明書のCNが*
で始まる場合、ホスト名との比較を行う際にワイルドカードとして扱われ、複数のサーバで同じ証明書を使用できるようになります。
クライアント証明書ファイルの位置を指定できるようになりました。(Mark Woodward、Alvaro、Magnus)
OpenSSL/libcryptoの初期化について多くを制御できるようにPQinitOpenSSL
関数を追加しました。(Andrew Chernow)
データベース接続が開いたままの場合、libpqがOpenSSLコールバックの登録を取り消すようにしました。(Bruce、Magnus、Russell Smith)
これはlibpqライブラリをアンロードするアプリケーションで必要とされます。 こうしないと無効なOpenSSLコールバックが残ってしまいます。
翻訳メッセージのサポートを追加しました。(Euler Taveira de Oliveira)
ecpgパーサが自動的にサーバパーサから生成されるようになりました。(Michael)
これまではecpgパーサは手作業で保守されていました。
行外のパラメータを持つ、一回しか使用されない計画をサポートするようになりました。(Tom)
SPI_execute()
に新しい戻り値コードSPI_OK_REWRITTEN
を追加しました。(Heikki)
これは、コマンドが別の種類のコマンドに書き換えられた時に使用されます。
executor/spi.h
から不要なインクルードを削除しました。(Tom)
これらをインクルードするためにspi.h
に依存している場合、SPIを使用するモジュールにいくつか#include
行の追加が必要となる場合があります。
構築システムをAutoconf 2.61を使用するように更新しました。 (Peter)
ソースコードから構築する場合GNU bisonが必要です。(Peter)
実質ここ数年で、これは必要とされていましたが、他のパーサツールをサポートしようという要望がなくなりました。
pg_config --htmldir
オプションを追加しました。(Peter)
サーバ内部でfloat4
を値渡しします。(Zoltan Boszormenyi)
過去の動作を使用するために--disable-float4-byval
オプションをconfigureに追加しました。
この変更により、旧スタイル(バージョン0)の呼び出し規約を使用し、float4
値を渡したり返したりする外部C関数は動作しなくなります。
このため、こうした関数があり、それを変更したくない場合は、このconfigureオプションが必要になるでしょう。
64ビットプラットフォーム上では、サーバ内部でfloat8
、int8
、これらに関連するデータ型を値渡しします。(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)
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_class
のreltriggers
列を論理値型のrelhastriggers
に置き換えました。(Simon)
またpg_class
の使用されない、relukeys
、relfkeys
、relrefs
列を削除しました。
一時テーブルの識別を簡単にするためにpg_class
にrelistemp
列を追加しました。(Tom)
プラットフォーム向けのFAQを主文書に移しました。(Peter)
パーサ入力ファイルが競合状態で構築されることを防ぎます。(Peter)
KOI8U
(ウクライナ語)符号化方式のサポートを追加しました。(Peter)
日本語翻訳メッセージを追加しました。(Japan PostgreSQL Users Group)
これは別のプロジェクトとして保守されたものを使用しました。
MSVC構築システムにおけるLC_MESSAGES
を設定した場合の問題を修正しました。(Hiroshi Inoue、Hiroshi Saito、Magnus)
指定期間を超える問い合わせに対して自動的に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
が、単なるaccounts
、branches
、history
、tellers
ではなく、pgbench_accounts
、pgbench_branches
、pgbench_history
、pgbench_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/dblink
がclient_encoding
を設定するようにしました。(Joe Conway)
これにより、異なる符号化方式を使用するリモートサーバとの通信時の符号化方式に関する問題を防ぎます。
偶発的にサーバの.pgpass
ファイルが使用されることなく、contrib/dblink
がユーザが提供したパスワードを確実に使用するようにしました。(Joe Conway)
これは小規模なセキュリティの向上です。
contrib/pageinspect
にfsm_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)