以下に本リリースにおける大きな変更点を示します。Windows®上でサーバとしてネイティブに稼動する最初のPostgreSQLリリースです。これはWindowsサービスとしても稼動可能です。2003などのNTベースのWindowsをサポートします。MEなどの古めのリリースはサポートされていません。これらのオペレーティングシステムではPostgreSQLをサポートするための基盤が存在しないためです。別に、Windows上でのインストールを簡単に行うために、インストーラプロジェクトが設立されました。http://www.postgresql.org/ftp/win32/を参照してください。リリース工程を通して試験を行いましたが、Windowsへの移植においてはPostgreSQLがUnixプラットフォームで培ってきた長年の製作環境の経験という利点がありません。そのため、新しい製品を使用する時と同等の注意をもってこれを扱ってください。Unixエミュレーションツールキットが必要でした。PostgreSQLは数年に渡ってWindows上のネイティブなクライアントをサポートしていました。セーブポイントセーブポイントにより、トランザクションの特定の一部を他の部分に影響することなく、アボートさせることができます。以前のリリースではこうした機能はありませんでした。トランザクション全体をアボートさせる以外に、トランザクション内のある文の失敗から復旧させる方法はありませんでした。この機能は、複雑なトランザクション内でエラーからの復旧が必要なアプリケーション作成者にとって有意です。ポイントインタイムリカバリこれまでのリリースでは、以前のバックアップからリストアする、もしくは、スタンバイ・リプリケーションサーバを使用する以外に、ディスク装置の障害から復旧させる方法はありませんでした。ポイントインタムリカバリにより、サーバの連続的なバックアップが可能です。障害発生時点まで復旧させることも過去のあるトランザクションまで復旧させることも可能です。テーブル空間テーブル空間を使用して、管理者は個々のテーブル、インデックス、および、データベース全体を格納するために異なるファイルシステムを選ぶことができます。これは、性能を改善し、また、ディスク領域全体の使用状況を制御できます。これまでのリリースでは、initlocationを使用し、こうした処理のためには手作業によってシンボリックリンクを管理していました。バッファ管理、CHECKPOINT、VACUUMの改良このリリースでは、より高度なバッファ交換戦略を使用します。これにより、利用可能な共有バッファの使用が改善され、性能が向上します。バキューム処理やチェックポイント処理が性能に与える影響も軽減されます。TABLEで列のデータ型が変更できるようになりました。トリガ、レコードを返すこと、レコードの配列を返すこと、データベースにアクセスするSPI呼び出しをサポートするようになりました。COPYにおけるカンマ区切り値書式(CSV)サポートCOPYで、カンマ区切り値書式ファイルの読み書きが可能になりました。これはまた、非標準的な引用符や文字の区切りを柔軟に解釈できます。全ての以前のリリースからデータの移行を行うためには、pg_dumpを使用したダンプ、リストアが必要です。以下の非互換性に注意してください。COMMITTEDシリアライゼーションモードにおいて、揮発性関数が、その関数の呼び出し元となったコマンドが始まるまでではなく、その関数内の各文が始まるまでに同時実行中のトランザクションによってコミットされた結果を参照できるようになりました。STABLEもしくはIMMUTABLEと宣言された関数は常に呼び出し中の問い合わせのスナップショットを使用します。そのため、呼び出し中の問い合わせが始まってから行われた活動の影響を、その活動が自身のトランザクションであっても他のトランザクションであっても、参照しません。した関数は読み取りのみでなければなりません。SELECT以外のSQLコマンドを全く使用することができません。非遅延のAFTERトリガが、現在の対話的コマンドの完了後ではなく、トリガの発行元となる問い合わせの完了後、即座に発行されるようになりました。これはトリガの発行元となる問い合わせが関数内にある時に差異が現れます。この場合トリガは、関数が次の操作を進める前に呼び出されます。サーバ設定パラメータvirtual_hostとtcpip_socketが、より一般的なパラメータlisten_addressesに置き換えられました。サーバはデフォルトでlocalhostに対する監視を行うようになりました。postmasterスイッチの必要性がなくなりました。サーバ設定パラメータSortMemおよびVacuumMemの名前が、より使用状況に合ったwork_memおよびmaintenance_work_memという名前に変更されました。元の名前はSETやSHOWでまだサポートされています。サーバ設定パラメータlog_pid、log_timestamp、log_source_portが、より柔軟なlog_line_prefixに置き換えられました。サーバ設定パラメータsyslogがより論理的なlog_destination変数に置き換えられ、この変数によってログの出力先を制御するようになりました。データ変更のみやデータ定義文のみを選択できるように、サーバ設定パラメータlog_statementが変更されました。サーバ設定パラメータlog_durationは、log_statementが問い合わせを出力する場合にのみ出力するようになりました。サーバ設定パラメータmax_expr_depthがmax_stack_depthに置き換えられました。これは、式の入れ子レベルではなく物理的なスタックサイズを単位とします。再帰的な関数によって引き起こされるスタックオーバーフローが原因で、セッションが終了してしまうことを防止するために、これは役に立ちます。length()が、CHAR(n)の値の最後に含まれる空白を数えないようになりました。整数からBIT(N)へのキャストにおいて、整数の右からNビットが選択されるようになりました。以前は左からNビットを選択していました。NULL配列値の一要素もしくは一部を更新することで、非NULLの配列、すなわち、代入された位置だけからなる配列が生成されるようになりました。配列への入力値の構文検査がかなり厳しくなりました。これまではおかしな場所に入力でき、おかしな結果を返していたごみが、エラーになるようになりました。空文字列の要素値は、何も入力しないのではなく、""と記述しなければなりません。配列要素の前後の空白に関する動作も変更されました。後にある空白が、前にある空白と同義(これはこれまでも無視されていました)となるように無視されるようになりました。整数演算操作のオーバーフローが検出されるようになりました。エラーとして報告されます。単一バイトの"char"データ型に関連する算術演算子が削除されました。extract()関数(date_partとも呼ばれます)が紀元前の時間に対して正確な年を返すようになりました。以前は正しい値よりも1少ない値が返されていました。この関数が千年紀や世紀についても正しい値を返すようになりました。CIDR値のマスクされないビットがゼロでなければならなくなりました。204.248.199.1/31はCIDRの値としてもはや許されません。した値はこれまでもPostgreSQLで受け付けられないはずでしたが、これが拒絶されるようになりました。EXECUTEが、実行した文に合った完了タグを返すようになりました。psqlの\copyコマンドが、psqlのstdin/stdoutではなく問い合わせのstdin/stdoutを読み書きするようになりました。新しいpstdin/pstdoutパラメータ経由でアクセスすることで以前の動作を行うことができます。JDBCクライアントインタフェースが標準配布から削除され、http://jdbc.postgresql.orgから提供されるようになりました。TCLクライアントインタフェースも削除されました。http://gborg.postgresql.orgで、複数のTCLインタフェースが提供されています。サーバが、オペレーティングシステムで提供されるものではなく、独自の時間帯データベースを使用するようになりました。これにより全てのプラットフォームにおいて一貫性のある振舞いが提供されます。TimeZoneで使用される時間帯名称はプラットフォームが提供する名称と異なる可能性があることに注意してください。configureのスレッド用オプションのために、ユーザによる試験やファイルの編集が不要になりました。スレッド用オプションが自動的に検出されるようになりました。テーブル空間が実装されました。そのためinitlocationが削除されました。ユーザ定義のGiSTインデックス用のAPIが変更されました。UnionおよびPickSplitメソッドで、byteaではなく、特別なGistEntryVector構造体へのポインタが渡されるようになりました。廃止予定の機能PostgreSQLの動作の一部は準最適となることが決定されています。後方互換性のために、これらは8.0では削除されませんでしたが、非推奨であり、次のメジャーリリースで削除される予定です。リリース8.1ではintervalに対するto_char()関数は削除される予定です。oid/float4/float8データ型に空文字列を代入した時に、サーバが警告を発するようになりました。これまで同様に、0として解釈して処理を継続します。次のメジャーリリースでは、空文字列はこうしたデータ型では無効とみなす予定です。8.0以前のテーブルはOID付きで作成されます。次のリリースでは、これは事実でなくなる予定です。OIDS句を指定する、あるいは、default_with_oids設定パラメータを設定する必要があります。OIDSを指定することを勧めます。以下に、リリース8.0とこれまでのメジャーリリースとの間での変更点の詳細な内容を示します。性能向上データ型を跨るインデックスの使用をサポート(Tom)この変更を行うまで、データ型が完全に一致しない場合、多くの問い合わせがインデックスを使用しませんでした。この改良によりインデックスの使用がより直感的かつ一貫的になります。新しいバッファ交換戦略によるキャッシュ処理の改良(Jan)これまでのリリースでは最長未使用時間(LRU)キャッシュを使用して、最近に参照されたページをメモリ内に保持していました。このLRUアルゴリズムでは、特定のキャッシュ項目が何回アクセスされたかを考慮しませんでした。そのため、大規模なテーブルスキャンにより、よく使用されるキャッシュページがメモリ外に追いやられてしまいます。新しいキャッシュアルゴリズムは、4つの独立したリストを使用して、最も最近に使用されたキャッシュページ、最もよく使用されたキャッシュページを管理し、作業負荷に基づいてその交換を動的に最適化します。これにより共有バッファキャッシュが非常に効率的に使用されるようになるはずです。これまで共有バッファのサイズを試行錯誤して決定していた管理者は、この新しいキャッシュ交換ポリシーで再度決定してください。定期的にダーティバッファを書き出すサブプロセスの追加によりチェックポイント時の書き出しを低減(Jan)これまでのリリースでは、数分程度の周期で実行されるチェックポイントプロセスが全てのダーティバッファをオペレーティングシステムのキャッシュに書き込み、オペレーティングシステムのダーティバッファをディスクに書き出していました。これによりディスクの使用に関して周期的なピークが現れるようになり、性能を悪化させることがよく起こりました。新しいコードでは、バックグランドライタを使用して、一定のペースで小刻みに書き出すようにしたので、チェックポイントの際にダーティページの書き出しがかなり少なくなりました。新しいコードでは、大域的なsync()を呼び出さずに、直前のチェックポイント以降に書き込まれたファイルのみに対するfsync()を呼び出します。これにより性能は向上し、チェックポイント時の性能劣化も最小限になります。バキュームを延長する機能の追加により性能への影響を軽減(Jan)負荷が高いシステムにおいてVACUUM処理は、多くのI/O要求を行いますので、他のユーザにとっての性能を悪化させてしまいます。このリリースでは、VACUUM速度を低めることで、他のユーザへの影響を低減させることができます。これはVACUUMの処理時間を多くしてしまいます。生成されるテーブルサイズ推定値を使用する(Tom)これまでプランナは、最後に実行したVACUUMまたはANALYZEによって判明した値を使用して、テーブルの物理サイズ(ページ数)や行数などのテーブルサイズを推定していました。現在のテーブルの物理サイズをカーネルから取得し、このテーブルサイズに最後に実行したVACUUMまたはANALYZEによって判明した値を乗じて行数を推定するようになりました。これにより、最後に保守用のコマンドを実行してからテーブルサイズに大きな変更があった場合でも、より信頼できる推定ができるようになるはずです。OR句のある場合のインデックス使用の改良(Tom)これにより、オプティマイザは、インデックス付けされていない、多くのOR句を持つ文に対してインデックスを使用できるようになりました。複数列に対するインデックスが、その最初の列が指定され、2番目の列がOR句の一部である場合でも使用できるようになりました。部分インデックス句の一致処理の改良(Tom)サーバが、複雑なWHERE句を持つ問い合わせにおける部分インデックスの使用に関してより賢明になりました。GEQOオプティマイザの性能向上(Tom)多く(デフォルトでは12以上)のテーブルを持つ問い合わせの計画を作成する時、GEQOオプティマイザが使用されます。このリリースでは、最適化に費やされる時間を減らすために、問い合わせの解析方法を高速化しました。実施された小規模な改良を全てここで示すことはできませんが、特定状況における多くの改善がこれまでのリリースよりなされています。C関数の検索速度の改良(Tom)このリリースでは、動的にロードされたC関数の情報を検索する時にハッシュテーブルを使用します。これにより、検索がサーバの実行形式に組み込まれた関数とほぼ同等の速度で実行されますので、速度が向上します。Cave-Ayland)この機能により、より柔軟な非標準のデータ型用の統計情報の生成が可能です。ANALYZEが式インデックスに対する統計情報を収集するようになりました(Tom)式インデックス(関数インデックスとも呼ばれます)により、ユーザは単なる列だけではなく式や関数呼び出しの結果に対してインデックスを付けることができます。このリリースでは、オプティマイザは式インデックスの内容に関する統計情報を収集、使用することができます。これにより式インデックスが最適な問い合わせに対して作成される計画の質がかなり向上します。Koizar)これにより、テーブルの領域によって有効な行の密度が非常に異なる場合により優れた統計情報が得られます。(Tom)7.4で見受けられたTRUNCATEの性能劣化を、トランザクションセーフのまま取り戻しました。Pflug)syslogや他のログ回転プログラムに依存することなく簡単にサーバメッセージのログができるようになりました。(Joe)sameuser、samegroup、allという引用符付けによるpg_hba.confでの特殊な意味付けを取消し(Andrew)デフォルトのpg_hba.conf内にてより明瞭なlocalhost用のIPv6名::1/128を使用(Andrew)pg_hba.confの例においてCIDR書式を使用(Andrew)サーバ設定パラメータSortMemとVacuumMemの名前をwork_memとmaintenance_work_memに変更(古い名前もまだサポートします)(Tom)この変更は、インデックスや外部キーの作成などのバルク操作にはmaintenance_work_mem、問い合わせの実行中に使用される作業空間用にはwork_mem、と明確に分けるために行われました。(Andrew)各ログ行に発行される情報を制御できるようにlog_line_prefixサーバ設定パラメータを新規追加(Andrew)ユーザ名、データベース名、リモートのIPアドレス、セッションの開始時刻を含めることができます。log_pid、log_timestamp、log_source_portサーバ設定パラメータの削除。これらの機能はlog_line_prefixで置き換えられました。Tom)virtual_hostでは単一の接続監視用IPアドレスしか指定できませんでした。listen_addressesでは複数のアドレスを指定することができます。postmasterスイッチの必要性を省いた(Andrew)ローカルホスト(127.0.0.1)の接続監視によってセキュリティ問題が発生することはありません。ローカルソケットをサポートしないWindowsやJDBCなどの設定において特別な調整を行うことなく動作させることができます。syslogサーバ設定パラメータを削除。ログ出力先を制御する、より論理的なlog_destination変数を追加。どの問い合わせをログに記録するかを選択するためにlog_statementサーバ設定パラメータがall、mod、ddl、noneを取るように変更(Bruce)これにより、管理者はデータ定義の変更のみやデータ変更文のみのログを取得することができます。一部のログ取得関連の設定パラメータは以前から普通のユーザによって調整可能でしたが、"より冗長"方向でのみにしか調整できませんでした。これらがより厳密に扱われるようになり、スーパーユーザのみがこれらを設定することができます。USERを使用して、ユーザ単位で非スーパーユーザ用の設定を提供することができます。スーパーユーザはPGOPTIONSを介してスーパーユーザのみの設定パラメータの値を設定することもできます。設定ファイルをデータディレクトリ外に格納できるようにした(mlw)デフォルトでは、設定ファイルはクラスタの最上位ディレクトリにあります。この追加によって、設定ファイルをデータディレクトリ以外に格納することができるようになり、管理しやすくなりました。最初に実行される時のみに準備済み問い合わせの計画を作成。これで定数を統計処理に使用することが可能。Jowett)準備済み文はその計画を一度作成し、何回も実行します。準備済み文では、その使用時に再計画分のオーバヘッドを防ぐことができますが、計画の質は、問い合わせで使用される正確なパラメータが不明である分劣化します。このリリースでは、無名の準備済み分の計画作成は最初の実行まで遅延され、そしてその実行時に使用された実際のパラメータ値を最適化のヒントとして使用します。これにより、行外のパラメータ渡しを性能を落とすことなく使用できるようになりました。CURSORを発行する際に有用です。Bind時点で送信されるパラメータ値が、カーソルの問い合わせの実行時に置き換えられます。inetとcidrデータ型に対するハッシュ結合と集約の修正(Tom)リリース7.4における、inetとcidr値が混在した場合のハッシュ処理に不具合がありました。(これらの型のハッシュを作成することはありませんので、この不具合はそれまでのリリースでは存在しません。log_durationを出力するようにしました。問い合わせにおける変更セーブポイント(入れ子のトランザクション)機能の追加(Alvaro)未サポートの隔離レベルを受け付け、サポートされたレベルの中で最も近いレベルに移るようになりました。(Peter)SQL仕様では、データベースが指定した隔離レベルをサポートしない場合はその次に厳しいレベルを使用すべきであると規定しています。この変更はこの推奨に従ったものです。WORKでトランザクション隔離レベルを指定可能です。Fetter)これまでのリリースでは、関数本体に引用符を付けるために単一引用符が使用されていましたので、関数テキストの内部の単一引用符を、二重の単一引用符、もしくはエラーが起こりやすい記述とする必要がありました。このリリースでは、テキストブロックの引用符付けに「ドル引用符付け」を使用できるように機能を追加しました。この機能により、異なる入れ子レベルで異なる引用符区切り文字を使用できますので、正確な引用符付けという処理がかなり簡単になりました。...におけるvalの評価を1回だけにしました(Tom)CASEが試験済みの式を複数回評価しないようになりました。式が複雑な場合や揮発性がある場合に利点があります。0などの場合における不適切な失敗を改修しました。これは正常動作すべきでしたが、これまではゼロ割で失敗することがありました。max_expr_depthパラメータを、スタックサイズをキロバイトで指定したmax_stack_depthパラメータで置き換えました(Tom)再帰的な関数の暴走によるクラッシュに対する防弾処理として提供される機能です。式の入れ子の深さを単位にするのではなく、直接実行スタックのサイズを単位にするようになりました。任意の行式の許可(Tom)このリリースでは、SQL式が任意の複合型、つまり行値を持つことができます。これにより、関数がより簡単に行を引数として取ることも行値を返すことができます。Coelho)識別子やキーワード内の基本ASCII文字についてロケール固有の大文字小文字の変換を行わない(Tom)Iとiを含む単語が誤動作する"トルコ語問題"を解消します。7ビットASCIIセット以外の文字の組み合わせは依然ロケールを無視します。Tom)構文エラーの報告が以前より使いやすくなりました。Jurka)これまでのリリースでは、全てのEXECUTE呼び出しはEXECUTEタグを返していました。このリリースでは、実行されたコマンドを反映したタグを返します。JOINの発行を行わない(Tom)こうした句は論理的な意味がありません。ルールでコンパイラがこの構文を生成することがありました。TABLEをデフォルトでOID列を持つテーブルを作成するか持たないテーブルを作成するかを制御することができます。(現在の出荷時でデフォルトでは、default_with_oidsはTRUEですが、将来のリリースではデフォルトでFALSEとなります。COLUMNが可能になりました。TYPEが可能(Rod)列を削除し、再度追加することなく、列のデータ型が変更できるようになりました。COLUMNがあります)で便利です。ALTERコマンドをまとめることにより、必要なテーブルの書き換えは1回だけになります。TABLEが可能(Tom)これは、新規列にデフォルトを付与する新機能の結果によるものです。Oliveira)これまでは、直接システムテーブルを変更する必要がありました。(Christopher)これまでのリリースでは、システムテーブルを変更する他、自動クラスタ指定を削除する方法がありませんでした。スキーマ内での一意性を保証するために制約/インデックス/SERIAL名が番号付きのtable_column_typeになりました(Tom)SQL仕様では、こうした名前はスキーマ内で一意であるべきと規定してます。SERIAL列のシーケンス名を返すpg_get_serial_sequence()の追加(Christopher)これにより自動スクリプトが確実にSERIALシーケンス名を見つけることができます。Coelho)ALSOがルール生成に追加できるようになりました。これはINSTEADルールと反対です。LOCKにNOWAITオプションを追加(Tatsuo)LOCKが、要求したロックを待機する必要がある場合に失敗することができるようになりました。INDEXとCHECKPOINT間のロック競合を防止(Tom)7.3と7.4では、長時間実行されるB-treeインデックスの構築により同時実行されるCHECKPOINTの完了がブロックされることがありました。これにより、WALログの再利用を行うことができないためWALが膨れ上がることがありました。データベース全体のANALYZEはテーブルを跨ってロックを保持しない(Tom)これは、テーブルの排他ロックを必要とする他のバックエンドがデッドロックする可能性を低減します。これは各テーブルに対してコミットされ新しいトランザクションが生成できなければなりません。REINDEXはインデックスの親テーブルの排他的ロックを全く取得しません。インデックス自体はまだ排他的にロックされます。構築中のインデックスを使用していない場合はテーブルの読み込みを続行することができます。ユーザ名を変更したときにMD5ユーザパスワードを消去(Bruce)PostgreSQLは、MD5を使用してパスワードを暗号化する時にユーザ名をソルトとして使用します。ユーザ名が変更された場合、そのソルトは保存されたMD5パスワードと一致しませんので、過去のパスワードを使用することができなくなります。このリリースでは、注意が表示され、パスワードが削除されます。その後、そのユーザでパスワード認証を行う場合には、新しいパスワードを割り当てなければなりません。オプション(Andrew)Windowsはバックエンドにシグナルを送信するためのkillコマンドがありません。そこでpg_ctlにこの機能が追加されました。データ型および関数における変更より完全な複合型(行型)のサポート(Tom)これまでスカラ型の値のみが動作していた多くの場所で複合型の値が使用できるようになりました。非長方配列値をエラーとして拒絶(Joe)これまではarray_inは何もメッセージを出さずにおかしな結果を構築しました。operator"エラーとなることがより適切である多くの場合で、こうした演算子を選択していました。実際に"char"列に対する算術演算を行いたいのであれば、明示的に整数型にキャストしてください。配列への入力における構文検査をできるだけ厳密化(Joe)これまでおかしな場所に許され、おかしな結果を生成したごみがERRORになるようになりました。何も記述しないのではなく""と記述しなければならない(Joe)これまでは、どちらの方法でも空文字列要素値を記述できましたが、引用符付きの文字列のみが有効になりました。何も指定しないところは、おそらく将来のリリースではNULL要素値とみなされる予定です。配列要素の終わりの空白を無視(Joe)これまでは要素値と区切り文字もしくは右括弧の間で、前方の空白は無視され、後方の空白は意味がありました。現在は、後方の空白も無視されます。(Joe)日付文字列としてYYYY-monthname-DDを受け付ける(Tom)netmaskとhostmask関数が最大のマスク長を返す(Tom)階乗関数がnumericを返すように変更(Gavin)numericを返すことにより、階乗関数はより広範な入力値で動作するようになりました。(Gavin)この変更は整合性を高めるために行われました。CHAR(n)データにおける最後に続く空白は重要な意味を持ちません。これらをlength()で数えるべきではありません。OID/float4/float8データ型に空文字列を渡した場合の警告(Neil)8.1ではエラーになる予定です。InfinityとNaNのサポートの改良(Neil)IEEE準拠の浮動小数点演算をサポートする全てのプラットフォームで動作するようになりました。Coelho)これまでのバージョンでは、世紀と千年紀は、標準的な計算方法と比べて、間違った値を返し、また、間違った年から数えていました。Chittenden)他のバックエンドにキャンセル要求を送信する関数の追加(Magnus)intervalにdatetimeを加算する演算子(Tom)順番が反対のdatetimeにintervalを加算するほうは既にサポートされていましたが、標準SQLでは両方とも必要です。(Tom)これまでのリリースでは、左から数えてNビットが選択されていましたが、いうまでもありませんが、BITからintへのキャスト時に整合性がないため、役に立つものとは思われません。COMMITTEDシリアライゼーションモードにて、volatile関数は、その関数の呼び出しに対応するコマンドの始まるまでではなく、その関数内の各行が始まるまでに同時実行トランザクションがコミットした結果を参照するようになりました。STABLEまたはIMMUTABLEと宣言された関数は常に問い合わせ呼び出し時のスナップショットを使用します。従って、問い合わせ呼び出し開始後に行われた操作は、それが自身のトランザクション内であろうと他のトランザクション内であろうと、その影響を受けません。関数は読み取りのみでなければなりません。SELECT以外のSQLコマンドを使用することはできません。関数をVOLATILEで宣言するのではなくSTABLEまたはIMMUTABLEで宣言することで、かなりの性能向上があります。非遅延のAFTERトリガは、対応するコマンドの完了時ではなく、トリガを発行した問い合わせの完了直後に発行されるようになりました。関数内にある問い合わせがトリガを発行する時に違いが現れます。トリガは関数が次の操作に進む前に実行されます。関数がテーブルに新規行を挿入する場合、関数の処理が進む前に非遅延の外部キー検査が行われます。Björklund)関数の文書化を改善することができます。この名前を実際にどう使用できるかは使用する関数言語に依存します。Björklund)これは基本的に、名前付きパラメータに対する別名を自動的に作成します。PL/pgSQL生成時の最低限の構文検査の実施(Tom)これにより、より早く構文エラーを検出することができます。関数に単一の値として行型の値を渡すことができるようになりました。FORループの解析の改良(Tom)FOR変数のデータ型ではなく".."の存在によって解析が開始されるようになりました。これは、正常な関数では違いがありませんが、結果として失敗があった時のエラーメッセージがより判りやすくなります。Dunstan)PL/Tclにおいて、SPIコマンドが副トランザクション内で実行されるようになりました。エラーが発生した場合、副トランザクションは消え、通常のTclエラーと同様にエラーが報告されます。このエラーはcatchで捕捉可能です。これまでは、こうしたエラーを捕捉できませんでした。PL/pgSQLでELSEIFを受け付けるようになりました。(Neil)これまではPL/pgSQLではELSIFしか解釈できませんでした。多くのユーザはこのELSEIFキーワードという綴りに慣れています。(Bruce)これにより、全体的なpsql起動コマンドを格納できる中核的なファイルを持つことができます。pg_dumpにおける変更pg_dumpの信頼性を向上させるために依存性情報を使用(Tom)これにより、関連するオブジェクトが稀に間違った順序でダンプされるという長い間存在した問題が解決したはずです。可能な限りアルファベット順でpg_dumpにオブジェクトの出力を行う(Tom)これによりダンプファイル間の変更を簡単に区別できるようになるはずです。Coelho)これにより、pg_restoreの動作は、pg_dumpの出力スクリプトをpsqlに渡した時の動作と同様になりました。ほとんどの場合、エラーを無視して先に進めることは使いやすくなるでしょう。エラー時に終了する旧来の動作を指定するためにpg_restoreにオプションが追加されました。Peter)元のソースツリーの外部で拡張を構築する作業を簡単にします。再割当て可能なインストレーションのサポート(Bruce)再設定や再構築を行わずにインストレーションのツリーを別の場所に移動できるように、インストールされるファイルのディレクトリパス(/shareディレクトリなど)が実行ファイルの実際のパスから相対的に計算されるようになりました。文書のインストール先を指定するための--with-docdirの使用。CVSタグ(Marc)PostgreSQLのCVSレポジトリの独自のコピーを管理する組織でより簡単に行うことができるようにするために変更されました。マスタリポジトリのファイルバージョンスタンプが、コピーされたレポジトリへのチェックイン、チェックアウトによって破壊されないようになります。Spraul)最近のgccリリースでの警告を防ぐためのスピンロックアセンブルコードの整理(Tom)ソースツリーからJDBCを削除。別のプロジェクトになりました。ソースツリーからlibpgtclを削除。別のプロジェクトになりました。Peter)pg_encodingの削除。不要pg_idの削除。不要initlocationの削除。(Bruce)Olsonのパブリックドメインのtimezoneライブラリの使用(Magnus)スレッド処理が有効であれば、Unixwareではバックエンド実行形式同様にスレッドフラグを使用(Bruce)Unixwareでは、スレッド化されたオブジェクトとスレッド化されないオブジェクトを混在させることができません。そのため全てスレッド化されるものとしてコンパイルされなければなりません。コマンド文字列の解析にpsqlはflexが生成する字句解析を使用バックエンド全体で使用されるリンクリストデータ構造を再実装(Neil)リストへの追加ができることにより性能が向上します。length操作がより効率的になります。(Teodor)PostgreSQL用trigramマッチング、contrib/trgmの追加。ログ取得副プロセスへの統合によって廃止されました。contrib/rservの削除。各種の別プロジェクトにより廃棄されました。リリース7.4.17。