2003-11-17
このリリースの大きな変更点を以下に示します。
IN
/NOT IN
副問い合わせが非常に効率的になりました
以前のリリースでは、IN
/NOT IN
副問い合わせは、シーケンシャルスキャンによって副問い合わせと一致する上位の問い合わせと結合されていました。
7.4のコードでは、通常の結合で使用される洗練された技術と同じものを使用し、そのため、非常に高速になりました。
これで IN
は通常、等価なEXISTS
と同程度の速度、場合によってはより高速になりました。
これにより、これまでのリリースにおいて行なっていた慣習的常識はくつがえりました。
GROUP BY
処理の改良
以前のリリースでは、グループ化される行が最初にソートされました。
7.4のコードでは、グループ当たり1項目で、ハッシュテーブルに結果を積むことによって、ソートを行なわずにGROUP BY
ができるようになりました。
しかし、ハッシュテーブルがsort_mem
に収まるには大き過ぎると推定した場合、まだソート技術を使用します。
以前のリリースでは、ハッシュ結合は1つのキー上でのみ存在できました。 このリリースでは、複数列に対するハッシュ結合が可能です。
JOIN
構文を使用した問い合わせはより良く最適化されるようになりました
以前のリリースでは、明示的なJOIN
構文を使用する問い合わせを、単に、
構文によって示される順番で評価していました。
7.4ではこれらの問い合わせを完全に最適化できるようになりました。
つまり、オプティマイザは全ての結合順序を考慮し、最も効率的なものを選択します。
しかし、外部結合はまだ宣言順に従わなければなりません。
正規表現モジュール全体が、もともとはTclで作成されたHenry Spencer氏による新しいバージョンに置き換えられました。 このコードではかなり性能が向上し、様々な種類の正規表現をサポートしています。
簡単なSQL関数を元の問い合わせ内のSQLに含めることによりインライン化できるようになりました。 呼び出しに伴うオーバーヘッドを抑制することにより、性能が向上します。 つまり、簡単なSQL関数がマクロのように動作するようになりました。
以前のリリースでは、IPv4接続のみが可能、そしてIPデータ型としてはIPv4アドレスのみをサポートしていました。 このリリースでは両者に関して完全なIPv6をサポートしています。
SSL APIに非常に詳しい方々により、SSLコードは書き直され、SSLキー調停やエラー復旧が改良されました。
以前のリリースでは、削除行によって空のまま残されたB-treeインデックスページは、元々そのページにインデックス付けされた行に近いインデックス値を持つ行によってのみ再利用されました。
7.4では、VACUUM
は空のインデックスページを記録し、それらを将来のインデックス行用に再利用することができます。
情報スキーマは、データベース内で定義されたスキーマオブジェクトについての情報にアクセスするための、標準化され、安定した方法を提供します。
FETCH
とMOVE
コマンドは、より標準SQLに近く従うよう改良されました。
これらのカーソルは保持可能カーソルとも呼ばれます。
新しいプロトコルでは、エラーコード、より多くの状況情報、より高速な起動、より優れたバイナリデータの通信、SQLコマンドとパラメータ値の分離、プロトコルレベルで利用できる準備された文が付与されました。また、COPY
失敗時の復旧がより明確になりました。
昔のプロトコルもまだ、サーバ、クライアントともサポートされています。
以前のlibpq のリリースでも既にスレッドをサポートしていましたが、このリリースでは、データベース接続開始期間に使用されていたスレッドセーフでないいくつかのコードを修正し、スレッドセーフに改良されました。
この機能を有効にするには、configure
の--enable-thread-safety
を使用しなければなりません。
contrib/tsearch2
にある新しいフルテキストインデックス手法が利用可能です。
contrib/autovacuum
にある新しい自動vacuumツールは、INSERT
/UPDATE
/DELETE
の活動について、統計情報テーブルを監視し、必要に応じて自動的にvacuumを行ないます。
多くの配列の制限が取り除かれました。 これにより、配列は、ほぼ完全にデータ型をサポートできるように動作します。
以前のリリースからデータを移行する場合、pg_dump によるダンプ/リストアが必要です。
以下の非互換部分を確認して下さい。
サーバ側での自動コミット設定は削除され、クライアントアプリケーションと言語内で再実装されました。 サーバ側の自動コミットは、自動コミットの振舞いを自身で制御したい言語やアプリケーションで、多くの問題の原因となっていました。 そのため、サーバから自動コミットは取り除かれ、個々のクライアントAPIに適切に追加されました。
エラーメッセージの言葉使いがこのリリースで大きく変わりました。 これらのメッセージをより正確に、よりユーザ向けにするために非常に多くの労力を費やしました。 アプリケーションがエラーメッセージを解析してエラー条件の違いを検知するようであれば、その代わりに、新しいエラーコード機能を使用するように強く勧めます。
明示的なJOIN
を使用する内部結合構文の振舞いが変わる可能性があります。
これらはより良く最適化されるようになったためです。
多くのサーバ設定パラメータの名前が、明確になるように変更されました。 主にログに関連したパラメータです。
FETCH 0
や MOVE 0
は何も行なわないようになりました。
以前のリリースでは、FETCH 0
は残存する全ての行を取り出し、MOVE 0
はカーソルの最後まで移動していました。
FETCH
と MOVE
は、実際に取り出し/移動した行の数を返すようになりました。
なお、カーソルがその先頭/最後にあった場合は0を返します。
以前のリリースは、そのコマンドに渡した行数を返し、実際に取り出した、あるいは、移動した行数を返しませんでした。
COPY
は、行末を表すシーケンスとして、復帰のみ、あるいは、復帰/改行を使用したファイルも処理できるようになりました。
復帰と改行そのものは、データ値としては受け付けられません。
その代わりに\r
と\n
を使用して下さい。
char(
から n
)varchar(
もしくは n
)text
への変換時、最後の空白は除去されるようになりました。
これは、ほとんどのユーザが常にそうなってほしいと期待している動作です。
float(
データ型は、10進数ではなく、2進数でのp
)p
桁を表すようになりました。
新しいこの動作は、標準SQLに従います。
曖昧な日付値は、datestyle
設定で指定した順序に一致しなければならなくなりました。
以前のリリースでは、10/20/03
というデータ指定は、datestyle
で日が最初であると指定していたとしても、10月と解釈されていました。
7.4では、日付の指定がその時点のdatestyle
設定では無効である場合、エラーが発生します。
oidrand
、oidsrand
、userfntest
関数が削除されました。
これらの関数は、もう使用されることはないと決定されました。
'now'
や'today'
のような時間が変動する日付/時刻値を指定する文字列リテラルは、列のデフォルト式で想定したとおりに働かなくなりました。
これらは、挿入時の時刻ではなく、テーブルを生成した時刻をそのデフォルトに設定するようになりました。
その代わりに、now()
、current_timestamp
、current_date
といった関数を使用して下さい。
以前のリリースでは、'now'
といった文字列がテーブル生成時刻ではなく、INSERT
時刻と解釈されるような特殊なコードがありました。
しかし、この回避方法は全ての場合に適用されませんでした。
リリース7.4では、デフォルト式はnow()
や current_timestamp
といった関数を適切に使用して定義することが必須となりました。
これらは全ての状況で動作します。
ドル印($
)は演算子名として使用できなくなりました。
その代わり、識別子の文字(先頭文字は除く)として使用できるようになりました。
これは、他のデータベースシステムとの互換性を向上させるため、および、パラメータのプレースホルダ($
)が演算子に近接していた場合の構文問題を防止するために行なわれました。
n
以下に、リリース7.4と以前のメジャーリリースとの間になされた変更点について、詳細な説明を示します。
Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce, Tom, Kurt Roeckx, Andrew Dunstan)
Fix SSL to handle errors cleanly (Nathan Mueller)
In prior releases, certain SSL API error reports were not handled correctly. This release fixes those problems.
SSL protocol security and performance improvements (Sean Chittenden)
SSLの性能の低さのために、SSLキーの再調停があまりにも頻繁に発生していました。 また、初期のキーの取扱いが改良されました。
Print lock information when a deadlock is detected (Tom)
これによりデッドロック状況のデバッグが容易になります。
Update /tmp
socket modification times
regularly to avoid their removal (Tom)
これは、/tmp
ディレクトリを整理する管理スクリプトによってサーバソケットファイルが削除されてしまうことを防ぐ助けになるでしょう。
Enable PAM for Mac OS X (Aaron Hillegass)
Make B-tree indexes fully WAL-safe (Tom)
以前のリリースでは、ある特定かつ稀な場合、サーバクラッシュによりB-treeインデックスが破損してしまいました。このリリースでは、これらのもっとも稀な場合について削除しました。
Allow B-tree index compaction and empty page reuse (Tom)
Fix inconsistent index lookups during split of first root page (Tom)
以前のリリースでは、単一ページのインデックスを2ページに分割する際に、 他のデータベースセッションがインデックス項目を探すことができない、短い時間がありました。 このリリースはこの稀に起こる失敗を修正しました。
Improve free space map allocation logic (Tom)
空領域マップの割り当てロジックの改良 (Tom)
Preserve free space information between server restarts (Tom)
以前のリリースでは、postmasterが停止した時に空領域は保存されませんでした。 そのため、新しく稼働したサーバは、空領域情報を持ちませんでした。 このリリースでは、空領域マップを保存し、サーバの再起動時にそれを再読み込みします。
Add start time to pg_stat_activity
(Neil)
New code to detect corrupt disk pages; erase with zero_damaged_pages
(Tom)
New client/server protocol: faster, no username length limit, allow clean exit from COPY
(Tom)
Add transaction status, table ID, column ID to client/server protocol (Tom)
Add binary I/O to client/server protocol (Tom)
Remove autocommit server setting; move to client applications (Tom)
New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)
Add hashing for GROUP BY
aggregates (Tom)
Make nested-loop joins be smarter about multicolumn indexes (Tom)
Allow multikey hash joins (Tom)
Improve constant folding (Tom)
Add ability to inline simple SQL functions (Tom)
Reduce memory usage for queries using complex functions (Tom)
以前のリリースでは、割り当てられたメモリを返す関数は、問い合わせが完了するまで、それを解放しませんでした。 このリリースでは、関数が割り当てたメモリを関数呼び出しの終了時に解放することができ、関数で使用される総メモリ量が減少します。
Improve GEQO optimizer performance (Tom)
このリリースでは、GEQOオプティマイザの潜在的な問い合わせ経路の管理方法において複数の非効率な点を修正しました。
Allow IN
/NOT IN
to be handled via hash
tables (Tom)
Improve NOT IN (
performance (Tom)
subquery
)
Allow most IN
subqueries to be processed as
joins (Tom)
Pattern matching operations can use indexes regardless of locale (Peter)
非ASCIIのロケールでは、LIKE
比較用の標準的なインデックスを使用する方法がありません。
このリリースではLIKE
用に特別なインデックスを作成する方法を追加しました。
Allow the postmaster to preload libraries using preload_libraries
(Joe)
長時間読み込まれる共有ライブラリでは、このオプションを利用でき、そのライブラリはpostmaster内であらかじめ読み込まれ、全てのデータベースセッションで継承されます。
Improve optimizer cost computations, particularly for subqueries (Tom)
Avoid sort when subquery ORDER BY
matches upper query (Tom)
Deduce that WHERE a.x = b.y AND b.y = 42
also
means a.x = 42
(Tom)
Allow hash/merge joins on complex joins (Tom)
Allow hash joins for more data types (Tom)
Allow join optimization of explicit inner joins, disable with
join_collapse_limit
(Tom)
Add parameter from_collapse_limit
to control
conversion of subqueries to joins (Tom)
Use faster and more powerful regular expression code from Tcl (Henry Spencer, Tom)
Use bit-mapped relation sets in the optimizer (Tom)
Improve connection startup time (Tom)
新しいクライアント/サーバプロトコルでは、データベースセッション開始のために必要なネットワークパケットがより少なくなりました。
Improve trigger/constraint performance (Stephan)
Improve speed of col IN (const, const, const, ...)
(Tom)
Fix hash indexes which were broken in rare cases (Tom)
Improve hash index concurrency and speed (Tom)
以前のリリースでは、特に、同時実行数が多い状況では、ハッシュインデックスの低性能が見られました。 このリリースではそれを修正し、開発グループでは、B-treeとハッシュインデックスとの性能比較についての報告をまとめました。
Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)
特定のCPUでは、アドレスが32バイトで整列された時にデータコピーがより高速になります。
Data type numeric
reimplemented for better performance (Tom)
numeric
は100を基として保存していました。
かなり良い性能のために、新しいコードでは10000を基として使用します。
Rename server parameter server_min_messages
to log_min_messages
(Bruce)
これはlog_
から始まるサーバのログを制御するほとんどのパラメータに対して行なわれました。
Rename show_*_stats
to log_*_stats
(Bruce)
Rename show_source_port
to log_source_port
(Bruce)
Rename hostname_lookup
to log_hostname
(Bruce)
Add checkpoint_warning
to warn of excessive checkpointing (Bruce)
以前のリリースでは、チェックポイントが頻繁に発生し過ぎているかどうかを認識することは困難でした。 この機能により、過度なチェックポイントの発生時にサーバログに警告が追加されます。
New read-only server parameters for localization (Tom)
Change debug server log messages to output as DEBUG
rather than LOG
(Bruce)
Prevent server log variables from being turned off by non-superusers (Bruce)
非スーパーユーザが管理者によって有効にされたログ取得を無効にすることを不可能とする、セキュリティに関するものです。
log_min_messages
/client_min_messages
now
controls debug_*
output (Bruce)
これはクライアントデバッグ情報を集中化し、これにより、全てのデバッグ用出力がクライアントログもしくはサーバログに送信できます。
Add Mac OS X Rendezvous server support (Chris Campbell)
これにより、Mac OS Xホストが利用可能なPostgreSQLサーバにネットワークから問い合わせできるようになります。
Add ability to print only slow statements using
log_min_duration_statement
(Christopher)
これは、よく要求のあったデバッグ機能で、これにより、管理者はサーバログ内で低速な問い合わせのみを見られるようになります。
Allow pg_hba.conf
to accept netmasks in CIDR format (Andrew Dunstan)
これにより、管理者はpg_hba.conf
内でホストIPアドレスとネットマスクフィールドを単一CIDRフィールドにまとめることができます。
New read-only parameter is_superuser
(Tom)
New parameter log_error_verbosity
to control error detail (Tom)
これは、新しいエラー報告機能と一緒に動作し、ヒントやファイル名、行番号などのエラー情報を更に提供します。
postgres --describe-config
now dumps server config variables (Aizaz Ahmed, Peter)
このオプションは、設定変数名とその最小、最大、デフォルト、説明文を把握する必要がある管理ツールで有用です。
Add new columns in pg_settings
:
context
, type
, source
,
min_val
, max_val
(Joe)
Make default shared_buffers
1000 and
max_connections
100, if possible (Tom)
以前のバージョンではデフォルトで64共有バッファでした。
そのため、非常に古いシステムでもPostgreSQLが起動できました。
このリリースでは、プラットフォームで許可された共有メモリ量を試験し、可能であれば、より理想的なデフォルト値を選択します。
もちろん、ユーザはリソースの使用状況を評価し、それに合わせてshared_buffers
の大きさを決定することもまだ可能です。
New pg_hba.conf
record type
hostnossl
to prevent SSL connections (Jon
Jensen)
以前のリリースでは、クライアントとサーバがSSLをサポートする場合、SSL接続を防ぐ方法がありませんでした。 このオプションでその機能が可能です。
Remove parameter geqo_random_seed
(Tom)
Add server parameter regex_flavor
to control regular expression processing (Tom)
Make pg_ctl
better handle nonstandard ports (Greg)
New SQL-standard information schema (Peter)
Add read-only transactions (Peter)
Print key name and value in foreign-key violation messages (Dmitry Tkach)
Allow users to see their own queries in pg_stat_activity
(Kevin Brown)
以前のリリースでは、スーパーユーザのみがpg_stat_activity
を使用して問い合わせ文字列を確認することができました。
通常のユーザが自身の問い合わせ文字列を確認できるようになりました。
Fix aggregates in subqueries to match SQL standard (Tom)
標準SQLでは、入れ子になった副問い合わせ内の集約関数は、その引数に問い合わせ外部の変数のみが含まれる場合、その外部の問い合わせに属すると規定しています。 以前のPostgreSQLのリリースでは、この点を正しく扱っていませんでした。
Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)
デフォルトでは、問い合わせ内にあり、FROM
句にまだ存在しないテーブルは自動的にFROM
句に追加されました。
これは、歴史的なPOSTGRESの振舞いと互換性がありますが、標準SQLとは反対です。
このオプションにより、標準と互換性がある動作を選択することができます。
Allow UPDATE ... SET col = DEFAULT
(Rod)
これによりUPDATE
は列を宣言されたデフォルト値に設定することができます。
Allow expressions to be used in LIMIT
/OFFSET
(Tom)
以前のリリースでは、LIMIT
/OFFSET
には定数のみを使用でき、式は使用できませんでした。
Implement CREATE TABLE AS EXECUTE
(Neil, Peter)
Make CREATE SEQUENCE
grammar more conforming to SQL:2003 (Neil)
Add statement-level triggers (Neil)
これにより文の終了時にトリガを発行することができます。しかし、そのトリガは文によって変更された全ての行にアクセスすることはできません。 この能力は将来のリリースで計画しています。
Add check constraints for domains (Rod)
ドメインに検査制約を使用できるようになり、ドメインの有用性が非常に高くなりました。
Add ALTER DOMAIN
(Rod)
これにより既存のドメインの操作が可能です。
Fix several zero-column table bugs (Tom)
PostgreSQLはゼロ列のテーブルをサポートします。 そうしたテーブルの使用時に発生する各種の不具合を修正しました。
Have ALTER TABLE ... ADD PRIMARY KEY
add not-null constraint (Rod)
以前のリリースでは、ALTER TABLE ... ADD PRIMARY
は一意性制約を追加しますが、非NULL制約を追加しませんでした。
このリリースで修正されました。
Add ALTER TABLE ... WITHOUT OIDS
(Rod)
これにより新規行、更新された行がOID列を持つかどうかを制御することができます。 これは、ほとんどの場合、格納領域の節約に有用です。
Add ALTER SEQUENCE
to modify minimum, maximum,
increment, cache, cycle values (Rod)
Add ALTER TABLE ... CLUSTER ON
(Alvaro Herrera)
このコマンドはpg_dump
で使用され、以前にクラスタ化された各テーブルのクラスタ用列を記録します。
この情報はデータベース全体のクラスタによって、以前にクラスタ化されたテーブルをクラスタ化するために使用されます。
Improve automatic type casting for domains (Rod, Tom)
Allow dollar signs in identifiers, except as first character (Tom)
Disallow dollar signs in operator names, so x=$1
works (Tom)
Allow copying table schema using LIKE
, also SQL:2003
feature subtable
INCLUDING DEFAULTS
(Rod)
Add WITH GRANT OPTION
clause to
GRANT
(Peter)
これにより、GRANT
は他のユーザにオブジェクトの権限を付与する能力を与えることができるようになります。
Add ON COMMIT
clause to CREATE TABLE
for temporary tables (Gavin)
これにより、トランザクションのコミット時にテーブルの削除、もしくは、全行の削除を行なう機能が追加されました。
Allow cursors outside transactions using WITH HOLD
(Neil)
以前のリリースでは、カーソルはそのカーソルを作成したトランザクションの終端で削除されました。
カーソルはWITH HOLD
オプションを付けて作成できるようになり、これにより、作成したトランザクションがコミットされた後でもそのカーソルにアクセスできるようになります。
FETCH 0
and MOVE 0
now do nothing (Bruce)
以前のリリースでは、FETCH 0
は全ての行を取り出し、MOVE 0
はカーソルの終端まで移動しました。
Cause FETCH
and MOVE
to
return the number of rows fetched/moved, or zero if at the
beginning/end of cursor, per SQL standard (Bruce)
以前のリリースでは、FETCH
と MOVE
で返される行数は、実際に処理された行数を反映したものではありませんでした。
Properly handle SCROLL
with cursors, or
report an error (Neil)
ある種の問い合わせに(前方、および、後方にスクロールする)ランダムアクセスを許可することは、何らかの追加作業なしでは行なうことができません。
カーソル生成時にSCROLL
が付与された場合、この追加作業が行なわれます。
さらに、そのカーソルがNO SCROLL
で生成された場合は、ランダムアクセスは許可されません。
Implement SQL-compatible options FIRST
,
LAST
, ABSOLUTE
,
n
RELATIVE
for
n
FETCH
and MOVE
(Tom)
Allow EXPLAIN
on DECLARE CURSOR
(Tom)
Allow CLUSTER
to use index marked as pre-clustered by default (Alvaro Herrera)
Allow CLUSTER
to cluster all tables (Alvaro Herrera)
これにより、過去にクラスタ化されたテーブルは全て、単一コマンドで再度クラスタ化することができます。
Prevent CLUSTER
on partial indexes (Tom)
Allow DOS and Mac line-endings in COPY
files (Bruce)
Disallow literal carriage return as a data value,
backslash-carriage-return and \r
are still allowed
(Bruce)
COPY
changes (binary, \.
) (Tom)
Recover from COPY
failure cleanly (Tom)
Prevent possible memory leaks in COPY
(Tom)
Make TRUNCATE
transaction-safe (Rod)
TRUNCATE
がトランザクション内部で使用できるようになりました。
トランザクションが中断した場合、TRUNCATE
で行なわれた変更は自動的にロールバックされます。
Allow prepare/bind of utility commands like
FETCH
and EXPLAIN
(Tom)
Add EXPLAIN EXECUTE
(Neil)
Improve VACUUM
performance on indexes by reducing WAL traffic (Tom)
Functional indexes have been generalized into indexes on expressions (Tom)
以前のリリースでは、関数インデックスは、1つ以上の列名に適用される単一の関数のみをサポートしていました。 このリリースでは、任意の種類のスカラ式を使用できます。
Have SHOW TRANSACTION ISOLATION
match input
to SET TRANSACTION ISOLATION
(Tom)
Have COMMENT ON DATABASE
on nonlocal
database generate a warning, rather than an error (Rod)
データベースのコメントは、データベースに局所的なテーブルに保存されます。 そのため、データベース上のコメントは各データベース内に保存されなければなりません。
Improve reliability of LISTEN
/NOTIFY
(Tom)
Allow REINDEX
to reliably reindex nonshared system catalog indexes (Tom)
これにより、以前のリリースでは必要であった、スタンドアロンセッションの必要なしにシステムテーブルのインデックスを再作成できます。
現時点で、インデックスの再作成のためにスタンドアロンセッションが必要なテーブルは、pg_database
、pg_shadow
、pg_group
.グローバルシステムテーブルのみです。
New server parameter extra_float_digits
to
control precision display of floating-point numbers (Pedro
Ferreira, Tom)
これにより、リグレッションテストで問題の原因となった、出力精度を制御することができます。
Allow +1300
as a numeric time-zone specifier, for FJST (Tom)
Remove rarely used functions oidrand
,
oidsrand
, and userfntest
functions
(Neil)
Add md5()
function to main server, already in contrib/pgcrypto
(Joe)
MD5関数がしばしば要求されました。
より複雑な暗号化のためにはcontrib/pgcrypto
を使用して下さい。
Increase date range of timestamp
(John Cochran)
Change EXTRACT(EPOCH FROM timestamp)
so
timestamp without time zone
is assumed to be in
local time, not GMT (Tom)
Trap division by zero in case the operating system doesn't prevent it (Tom)
Change the numeric
data type internally to base 10000 (Tom)
New hostmask()
function (Greg Wickham)
Fixes for to_char()
and to_timestamp()
(Karel)
Allow functions that can take any argument data type and return
any data type, using anyelement
and
anyarray
(Joe)
これにより、任意のデータ型で動作できる関数を作成できるようになります。
Arrays can now be specified as ARRAY[1,2,3]
,
ARRAY[['a','b'],['c','d']]
, or
ARRAY[ARRAY[ARRAY[2]]]
(Joe)
Allow proper comparisons for arrays, including ORDER
BY
and DISTINCT
support
(Joe)
Allow indexes on array columns (Joe)
Allow array concatenation with ||
(Joe)
Allow WHERE
qualification
(Joe)
expr
op
ANY/SOME/ALL
(array_expr
)
これにより、SELECT * FROM tab WHERE col IN (array_val)
のような目的のために、配列が値のリストのように振舞うことができます。
New array functions array_append
,
array_cat
, array_lower
,
array_prepend
, array_to_string
,
array_upper
, string_to_array
(Joe)
Allow user defined aggregates to use polymorphic functions (Joe)
Allow assignments to empty arrays (Joe)
Allow 60 in seconds fields of time
,
timestamp
, and interval
input values
(Tom)
閏秒には60秒という値が必要でした。
Allow cidr
data type to be cast to text
(Tom)
Disallow invalid time zone names in SET TIMEZONE
Trim trailing spaces when char
is cast to
varchar
or text
(Tom)
Make float(
measure the precision
p
)p
in binary digits, not decimal digits
(Tom)
Add IPv6 support to the inet
and cidr
data types (Michael Graff)
Add family()
function to report whether address is IPv4 or IPv6 (Michael Graff)
Have SHOW datestyle
generate output similar
to that used by SET datestyle
(Tom)
Make EXTRACT(TIMEZONE)
and SET/SHOW
TIME ZONE
follow the SQL convention for the sign of
time zone offsets, i.e., positive is east from UTC (Tom)
Fix date_trunc('quarter', ...)
(Böjthe Zoltán)
以前のリリースのこの関数の呼び出しは不正確な値を返しました。
Make initcap()
more compatible with Oracle (Mike Nolan)
initcap()
は空白文字の直後だけではなく、非英数字の直後の文字を大文字にするようになりました。
Allow only datestyle
field order for date values not in ISO-8601 format (Greg)
Add new datestyle
values MDY
,
DMY
, and YMD
to set input field order;
honor US
and European
for backward
compatibility (Tom)
String literals like 'now'
or
'today'
will no longer work as a column
default. Use functions such as now()
,
current_timestamp
instead. (change
required for prepared statements) (Tom)
Treat NaN as larger than any other value in min()
/max()
(Tom)
NaNは既にほとんどの目的で、通常の数値の後にソートされていましたが、min()
と max()
ではこれを正しく取っていませんでした。
Prevent interval from suppressing :00
seconds display
New functions pg_get_triggerdef(prettyprint)
and pg_conversion_is_visible()
(Christopher)
Allow time to be specified as 040506
or 0405
(Tom)
Input date order must now be YYYY-MM-DD
(with 4-digit year) or
match datestyle
Make pg_get_constraintdef
support
unique, primary-key, and check constraints (Christopher)
Prevent PL/pgSQL crash when RETURN NEXT
is
used on a zero-row record variable (Tom)
Make PL/Python's spi_execute
interface
handle null values properly (Andrew Bosma)
Allow PL/pgSQL to declare variables of composite types without %ROWTYPE
(Tom)
Fix PL/Python's _quote()
function to handle big integers
Make PL/Python an untrusted language, now called plpythonu
(Kevin Jacobs, Tom)
Python言語は制限付き実行環境をサポートしなくなりました。 そのため、信頼されたバージョンのPL/Pythonは削除されました。 この状態が変われば、非スーパーユーザで使用可能なバージョンのPL/Pythonは再び追加されるでしょう。
Allow polymorphic PL/pgSQL functions (Joe, Tom)
Allow polymorphic SQL functions (Joe)
Improved compiled function caching mechanism in PL/pgSQL with full support for polymorphism (Joe)
Add new parameter $0
in PL/pgSQL representing the
function's actual return type (Joe)
Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)
Fixed PL/Tcl's spi_prepare
to accept fully
qualified type names in the parameter type list
(Jan)
Add \pset pager always
to always use pager (Greg)
これにより行数がスクリーンの高さよりも少なかったとしても強制的にページャを使用します。 これは、スクリーンの複数行に跨がる行では価値があります。
Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)
Reorder \?
help into groupings (Harald Armin Massa, Bruce)
Add backslash commands for listing schemas, casts, and conversions (Christopher)
\encoding
now changes based on the server parameter
client_encoding
(Tom)
以前のリリースでは、SET client_encoding
を使用した符号化方式の変更は\encoding
に影響しませんでした。
Save editor buffer into readline history (Ross)
\e
を使用して問い合わせを編集する場合、その結果はreadlineの履歴に保存され、上矢印キーを使用して取り出すことができます。
Improve \d
display (Christopher)
Enhance HTML mode to be more standards-conforming (Greg)
New \set AUTOCOMMIT off
capability (Tom)
これは、削除されたautocommit
サーバパラメータの代わりになります。
New \set VERBOSITY
to control error detail (Tom)
これは新しいエラー報告の詳細を制御します。
New prompt escape sequence %x
to show transaction status (Tom)
Long options for psql are now available on all platforms
Multiple pg_dump fixes, including tar format and large objects
Allow pg_dump to dump specific schemas (Neil)
Make pg_dump preserve column storage characteristics (Christopher)
これはALTER TABLE ... SET STORAGE
の情報を保持します。
Make pg_dump preserve CLUSTER
characteristics (Christopher)
Have pg_dumpall use GRANT
/REVOKE
to dump database-level privileges (Tom)
Allow pg_dumpall to support the options -a
,
-s
, -x
of pg_dump (Tom)
Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)
pg_dump options --use-set-session-authorization
and --no-reconnect
now do nothing, all dumps
use SET SESSION AUTHORIZATION
pg_dumpはユーザを切替えるための再接続を行なわないようになりました。
その代わりに常にSET SESSION AUTHORIZATION
を使用します。
これはリストア時のパスワード問い合わせを減少させます。
Long options for pg_dump are now available on all platforms
PostgreSQLはその内部に長い名前のオプションを処理する関数を含むようになりました。
Add function PQfreemem
for freeing memory on
Windows, suggested for NOTIFY
(Bruce)
Windowsは、あるライブラリで割り当てられたメモリを同じライブラリ内の関数で解放することを要求します。
そのため、free()
では、libpqで割り当てられたメモリの解放を行なうことができません。
特にWindowsではPQfreemem
がlibpqのメモリを解放する適切な方法です。
そして、これは他のプラットフォームでも推奨されます。
Document service capability, and add sample file (Bruce)
これにより、クライアントはクライアントマシン上で中央にまとめられたファイル内の接続情報を検索することができます。
Make PQsetdbLogin
have the same defaults as
PQconnectdb
(Tom)
Allow libpq to cleanly fail when result sets are too large (Tom)
Improve performance of function PQunescapeBytea
(Ben Lamb)
Allow thread-safe libpq with configure
option --enable-thread-safety
(Lee Kindness,
Philip Yarra)
Allow function pqInternalNotice
to accept a
format string and arguments instead of just a preformatted
message (Tom, Sean Chittenden)
Control SSL negotiation with sslmode
values
disable
, allow
,
prefer
, and require
(Jon
Jensen)
Allow new error codes and levels of text (Tom)
Allow access to the underlying table and column of a query result (Tom)
指定した結果セットに関連する、背後にあるテーブルと列の名前を把握したい問い合わせ構築ツールで役にたちます。
Allow access to the current transaction status (Tom)
Add ability to pass binary data directly to the server (Tom)
Add function PQexecPrepared
and
PQsendQueryPrepared
functions which perform
bind/execute of previously prepared statements (Tom)
Allow setNull
on updateable result sets
Allow executeBatch
on a prepared statement (Barry)
Support SSL connections (Barry)
Handle schema names in result sets (Paul Sorenson)
Add refcursor support (Nic Ferrier)
Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)
Add Informix compatibility to ECPG (Michael)
これにより、ECPGは、Informix拡張を使用して作成された組み込みCプログラムを処理できます。
Add type decimal
to ECPG that is fixed length, for Informix (Michael)
Allow thread-safe embedded SQL programs with
configure
option
--enable-thread-safety
(Lee Kindness, Bruce)
これにより、複数のスレッドが同時にデータベースにアクセスできます。
Moved Python client PyGreSQL to http://www.pygresql.org (Marc)
Prevent need for separate platform geometry regression result files (Tom)
Improved PPC locking primitive (Reinhard Max)
New function palloc0
to allocate and clear memory (Bruce)
Fix locking code for s390x CPU (64-bit) (Tom)
Allow OpenBSD to use local ident credentials (William Ahern)
Make query plan trees read-only to executor (Tom)
Add Darwin startup scripts (David Wheeler)
Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)
Use our own version of getopt_long()
if needed (Peter)
Convert administration scripts to C (Peter)
Bison >= 1.85 is now required to build the PostgreSQL grammar, if building from CVS
Merge documentation into one book (Peter)
Add Windows compatibility functions (Bruce)
Allow client interfaces to compile under MinGW (Bruce)
New ereport()
function for error reporting (Tom)
Support Intel compiler on Linux (Peter)
Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)
Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)
Remove --enable-recode
option from configure
CREATE CONVERSION
がありますので、これはもはや不要です。
Generate a compile error if spinlock code is not found (Bruce)
スピンロック用のコードがないプラットフォームは、セマフォをこっそりと使用するのではなく、コンパイルに失敗するようになります。
この失敗は、新しいconfigure
オプションで無効にすることができます。
Change dbmirror license to BSD
Improve earthdistance (Bruno Wolff III)
Portability improvements to pgcrypto (Marko Kreen)
Prevent crash in xml (John Gray, Michael Richards)
Update oracle
Update mysql
Update cube (Bruno Wolff III)
Update earthdistance to use cube (Bruno Wolff III)
Update btree_gist (Oleg)
New tsearch2 full-text search module (Oleg, Teodor)
Add hash-based crosstab function to tablefuncs (Joe)
Add serial column to order connectby()
siblings in tablefuncs (Nabil Sayegh,Joe)
Add named persistent connections to dblink (Shridhar Daithanka)
New pg_autovacuum allows automatic VACUUM
(Matthew T. O'Connor)
Make pgbench honor environment variables PGHOST
, PGPORT
, PGUSER
(Tatsuo)
Improve intarray (Teodor Sigaev)
Improve pgstattuple (Rod)
Fix bug in metaphone()
in fuzzystrmatch
Improve adddepend (Rod)
Update spi/timetravel (Böjthe Zoltán)
Fix dbase -s
option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle)
Remove array module because features now included by default (Joe)