PostgreSQL 10がリリースされました。私たちは長い間新しい機能を待っていました。 私の同僚は、春に新しいバージョンをテストし、バグレポートを送信しました: one 、 two 。 そして、更新にとても満足し、リリースノートのロシア語への翻訳を準備しました。 議論しましょう。

内容
E.1.1。 概要(TLDR)
E.1.2。 バージョン10への移行
E.1.3。 変更点
E.1.3.1。 サーバー
E.1.3.1.1。 同時クエリ
E.1.3.1.2。 指数
E.1.3.1.3。 ロック
E.1.3.1.4。 オプティマイザー
E.1.3.1.5。 全体的なパフォーマンス
E.1.3.1.6。 モニタリング
E.1.3.1.6.1。 ロギング
E.1.3.1.6.2。 pg_stat_activity
E.1.3.1.7。 認証
E.1.3.1.8。 サーバー構成
E.1.3.1.9。 信頼性
E.1.3.1.9.1。 フォワードログ(WAL)
E.1.3.2。 複製と回復
E.1.3.3。 お問い合わせ
E.1.3.4。 ヘルパーコマンド
E.1.3.5。 データ型
E.1.3.6。 機能
E.1.3.7。 サーバー言語
E.1.3.7.1。 PL / Tcl
E.1.3.8。 クライアントインターフェース
E.1.3.9。 クライアントアプリケーション
E.1.3.9.1。 psql
E.1.3.9.2。 pgbench
E.1.3.10。 サーバーアプリケーション
E.1.3.10.1。 pg_dump、pg_dumpall、pg_restore
E.1.3.10.2。 pg_basebackup
E.1.3.10.3。 pg_ctl
E.1.3.11。 ソースコード
E.1.3.12。 追加モジュール
E.1.1。 概要(TLDR)
PostgreSQL 10の大幅な改善:
- パブリッシュ/サブスクライブを使用した論理レプリケーション
- テーブルの宣言的分割
- 同時リクエスト処理の改善
- 大幅な全体的なパフォーマンスの改善
- SCRAM-SHA-256に基づく強力なパスワード検証
- 改善された監視と管理
上記のすべてについて、以下で詳しく説明します。
E.1.2。 バージョン10への移行
以前のバージョンから移行するには、 pg_dumpallを使用してダンプ/復元するか、 pg_upgradeを使用する必要があります。
バージョン10には、以前のリリースとの互換性に影響する可能性のある多くの変更が含まれています。 これらの変更は次のとおりです。
- ハッシュインデックスは、PostgreSQLの以前のメジャーバージョン(Mithun Cy、Robert Haas、Amit Kapila)からのpg_upgradeの後に再構築する必要があります。 ハッシュインデックスの重要な変更により、再構築が必要になります。 pg_upgradeは、再構築に役立つスクリプトを作成します。
pg_xlog先行書き込みログディレクトリの名前をpg_walに変更し、 pg_clogトランザクションステータスpg_clog名前をpg_walに変更しpg_xact (Michael Paquier)。
ユーザーは、これらのディレクトリには必須ではないログファイルのみが含まれていると考えたり、転送ログファイルまたはトランザクションステータスのファイルを手動で削除したりして、修復不可能なデータ損失を引き起こした。 このような名前の変更は、将来的に同様のユーザーアクションを防ぐ必要があります。- 「xlog」に関連するSQL関数、ユーティリティ、およびオプションの名前を「wal」に変更(Robert Haas)。
たとえば、 pg_switch_xlog()はpg_switch_xlog()になり、 pg_receivexlogはpg_receivexlogになりpg_receivewal 。 --xlogdirは--xlogdirになり--waldir 。 これは、 pg_xlogの名前変更との一貫性のために行われます。 一般に、「xlog」という用語はユーザーによって使用されなくなります。 location代わりにlsnを使用して、WAL関連の関数とビューの名前をlsn location (David Rowley)。 以前は、2つの用語を使用すると矛盾がありました。SELECTリスト(Andres Freund)に含まれるSRF(セットを返す関数)の実装が変更されました。 SELECTリスト内のスカラー式がLATERAL FROM式に配置されているかのように評価される前に、集合戻り関数(SRF)が評価されるようになりました。 これにより、複数のSRFを使用するときに、より堅牢なセマンティクスが提供されます。 異なる行数を返す場合、NULL値を追加することにより、短い結果が最長に拡張されます。 以前は、SRF結果のサイズの最小共通因子が見つかり、それらは周期的に繰り返されていました。 また、 CASEおよびCOALESCE構造では、SRFの呼び出しが禁止されています。 詳細については、 セクション37.4.8ドキュメントのセクションを参照してください。ALTER TABLE ... ADD PRIMARY KEYがNOT NULL列属性を設定する場合、この変更はレガシーの子テーブル(Michael Paquier)にも適用されます。- ステートメントトリガーの呼び出しが、リクエスト(ステートメント)ごとに複数回呼び出されることを防止しました(Tom Lane)。 書き込みCTEを使用する場合、同じテーブルまたは別の書き込みCTEを更新するときに、
BEFORE STATEMENTまたはAFTER STATEMENTトリガーが複数回呼び出されました。 また、外部キー制約( ON DELETE CASCADE )の影響を受けるテーブルにステートメントトリガーがある場合、外部SQL式に対して複数回呼び出すことができます。 これは標準に反していたため、変更されました。 - シーケンスメタデータは、新しい
pg_sequenceシステムカタログ(Peter Eisentraut)に移動されました。 新しいテーブルには、 nextval()関数、つまりlast_value 、 log_cnt 、およびis_calledを使用して変更できるフィールドが含まれています。 初期値や増分などの他のシーケンスプロパティは、 pg_sequenceディレクトリの対応する行に格納されます。 ALTER SEQUENCE完全にトランザクションになり、コミットするまでシーケンスロックを意味します。 関数nextval()およびsetval()は非トランザクションのままです。
この変更によって導入された主な非互換性は、シーケンスを含むテーブルから選択すると、上記の3つのフィールドのみが返されることです。 シーケンスプロパティの残りを取得するには、アプリケーションはpg_sequenceそれらを見つける必要があります。 新しいシステム表現pg_sequencesは、これらの目的にも使用できます。 既存のコードとより互換性のある列名を提供します。 pg_basebackupは、デフォルトのバックアップ(Magnus Hagander)を復元するために必要なWALストリーミングします。 これにより、 pg_basebackupの-X/--xlog-method pg_basebackup -X/--xlog-method pg_basebackupデフォルト値がstreamれstream 。 値noneは、古い動作を再現するために追加されます。 pg_basebackupの-xオプションは削除されました(代わりに-X fetch使用してください)。- pg_hba.confが論理レプリケーションを使用する方法を変更しました(Peter Eisentraut)。 以前のリリースでは、論理レプリケーションでは、データベース列で
replicationキーワードを使用する必要がありました。 このリリースの時点で、論理レプリケーションはデータベース名またはキーワードallの通常の出現を使用します。 物理複製では、 replicationキーワードが引き続き使用されます。 論理レプリケーションはこのリリースの目新しさであるため、変更はサードパーティのレプリケーションプラグインのユーザーにのみ影響します。 - すべての
pg_ctlアクションはデフォルトで完了を待機します(Peter Eisentraut)。 これまで、一部のpg_ctlアクションは完了を待たず、これを使用するには-wオプションが必要でした。 - デフォルトのサーバーパラメーター
log_directory pg_logからlog log_directoryれました(Andreas Karlsson)。 ssl_dh_params_file構成ssl_dh_params_fileを追加して、変更されたDiffie-Hellmanパラメーターを持つファイルを指定します(Heikki Linnakangas)。 これにより、ハードコーディングされた文書化されていないdh1024.pemファイルdh1024.pem削除されます。 dh1024.pemデフォルトではチェックされなくなりました。 独自のDiffie-Hellmanパラメーターを使用するには、オプションの値を設定する必要があります。- 一時的なDiffie-Hellman OpenSSLアルゴリズム(Heikki Linnakangas)の場合、Diffie-Hellmanパラメーターのデフォルトサイズは2048に増加します。 提供されるDiffie-Hellmanパラメータのサイズが1024ビットから2048ビットに増加し、Diffie-Hellmanキー交換がブルートフォース攻撃に対してより耐性を持つようになりました。 ただし、一部の古いSSL実装、特にJava Runtime Environmentバージョン6の一部のエディションでは、1024ビットより長いDiffie-Hellmanパラメーターを受け入れないため、SSL経由で接続できません。 このような古いクライアントをサポートする場合は、デフォルトのパラメーターの代わりに通常の1024ビットDiffie-Hellmanパラメーターパラメーターを使用できます。 ssl_dh_params_fileを参照してください。
- 暗号化されていないパスワードをサーバーに保存する機能を削除しました(Heikki Linnakangas)。
password_encryptionサーバーパラメーターは、 offまたはplainサポートoffなくなりました。 UNENCRYPTEDオプションUNENCRYPTED 、 CREATE/ALTER USER ... PASSWORDコマンドではサポートされなくなりました。 同様に、 --unencryptedオプション--unencryptedコマンドから削除されました。 古いバージョンからの移行中の暗号化されていないパスワードは、このリリースでは暗号化されたままになります。 password_encryptionのデフォルト値はまだmd5です。 - 並列クエリを管理するためのサーバーパラメーターmin_parallel_table_scan_sizeおよびmin_parallel_index_scan_sizeが追加されました(Amit Kapila、Robert Haas)。 これは
min_parallel_relation_size置き換えmin_parallel_relation_size 、これは一般的すぎることが判明しました。 shared_preload_librariesパラメーターなどの値は、引用符で囲まれていないと小文字に変換されません(QL Zhuo)。 これらの設定はファイル名のリストですが、それまでは、他のルールに従って処理されるSQL識別子として処理されていました。sql_inheritanceサーバーパラメータが削除されsql_inheritance (Robert Haas)。 このパラメーターのデフォルト値を変更すると、親テーブルへのクエリに子テーブルからのデータが含まれなくなりました。 標準SQLではそれらを含める必要がありますが、これはすでにPostgreSQL 7.1のデフォルトです。- PL / Pythonの関数に多次元配列を渡し、Python言語のネストされたリストとして返すことが許可されています(Alexey Grishchenko、Dave Cramer、Heikki Linnakangas)。 この機能では、複合PL / Python型の配列の処理に後方互換性のない変更が必要でした。 以前は、たとえば
[[col1, col2], [col1, col2]]ように記述することで、複合値を持つ配列を返すことができました。 しかし、現在は2次元配列として解釈されます。 配列内の複合型は、明確にするために、リストではなくPythonタプルとして記述する必要があります。 これは、次のように書く必要があることを意味します: [(col1, col2), (col1, col2)] 。 - PL / Tclのモジュールから自動ロードする機能を削除しました(Tom Lane)。 この機能は、2つの新しいサーバーパラメーターpltcl.start_procおよびpltclu.start_procに置き換えられました。これらは使いやすく、他の手続き型言語の機能により似ています。
- pg_dump / pg_dumpallのバージョン8.0までのサポートを削除しました(Tom Lane)。 8.0より前のバージョンからダンプを削除する必要があるユーザーは、PostgreSQLバージョン9.6以前を使用する必要があります。 結果の出力は、新しいバージョンに正常にロードされるはずです。
- タイムスタンプと浮動小数点間隔のサポートを削除しました(Tom Lane)。 構成パラメーター
--disable-integer-datetimes削除しました。 浮動小数点のタイムスタンプにはいくつかの利点がありますが、PostgreSQL 8.3ではデフォルトでは使用されませんでした。 - クライアントサーバープロトコルバージョン1.0(Tom Lane)のサーバーサポートが削除されました。 このプロトコルは、PostgreSQL 6.3以降ではサポートされていません。
contrib/tsearch2削除しました(Robert Haas)。 このモジュールは、バージョン8.3より前に出荷された全文検索バージョンとの互換性を提供しました。createlangおよびdroplangコマンドラインdroplang削除(Peter Eisentraut)。 PostgreSQL 9.1では非推奨です。 代わりにCREATE EXTENSIONおよびDROP EXTENSIONコマンドを使用してください。- 関数呼び出し規約バージョン0(Andres Freund)のサポートを削除しました。 C関数を使用する拡張機能は、関数呼び出し規則のバージョン1に準拠する必要があります。 バージョン0は2001年に廃止されました。
E.1.3。 変更点
以下は、PostgreSQL 10と以前のメジャーリリースとの間の変更に関する詳細情報です。
E.1.3.1。 サーバー
E.1.3.1.1。 同時クエリ
- Bツリー(Rahila Syed、Amit Kapila、Robert Haas、Rafia Sabih)の並列インデックススキャンをサポートしました。 この変更により、さまざまな並列ワーカーがBツリーインデックスページをスキャンできます。
- 並列ビットマップヒープスキャンをサポート(Dilip Kumar)。 これにより、単一のインデックススキャンでさまざまな並列ワーカーによるヒープスキャンをディスパッチできます。
- マージ結合(Dilip Kumar)の並列実行が許可されています。
- 相互接続されていないサブクエリ(Amit Kapila)の並列実行は許可されています。
- 事前に並べ替えられたデータを返すパラレルワーカーの能力が向上しました(Rushabh Lathia)。
- 手続き関数での並列クエリの使用が増加しました(Robert Haas、Rafia Sabih)。
- サーバーパラメータmax_parallel_workersを追加して、リクエストの並列処理に使用できるワーカーの数を制限しました(Julien Rouhaud)。 このパラメーターは、要求要求の並列処理とは異なるワーカーを予約するために、 max_worker_processesよりも小さい値に設定できます。
E.1.3.1.2。 指数
- ハッシュインデックスのWALへの書き込みのサポートが追加されました(Amit Kapila)。 これにより、フォールトトレラントになり、レプリケーションに追加できます。 ハザード警告メッセージは削除されました。
- ハッシュインデックスのパフォーマンスの改善(Amit Kapila、Mithun Cy、Ashutosh Sharma)。
INETおよびCIDRタイプのSP-GiSTインデックスのサポートが追加されました(Emre Hasegeli)。- BRINインデックスのより積極的な要約のためのパラメーターを追加しました(ÁlvaroHerrera)。 新しい
CREATE INDEXオプションを使用すると、新しいページ範囲が作成されたときに、BRINページの以前の範囲の自動合計が有効になります。 - BRINインデックス範囲のBRIN要約を削除および再追加する機能が追加されました(ÁlvaroHerrera)。 新しい
brin_summarize_range() SQL関数は、指定された範囲のBRINインデックスとbrin_desummarize_range()の合計を更新して更新します。 これは、UPDATEとDELETEにより範囲が狭くなった範囲の合計を更新するのに便利です。 - BRINインデックスのスキャンの収益性を判断する精度が向上しました(David Rowley、Emre Hasegeli)。
- GiSTインデックスページのより効率的な再利用により、より高速な挿入と更新が可能になりました(Andrey Borodin)。
- GINインデックスの更新中のページブロックのレベル(Andrey Borodin)が削減されました。
E.1.3.1.3。 ロック
E.1.3.1.4。 オプティマイザー
- 相関係数と一意の値の数を計算するためのマルチカラムオプティマイザー統計が追加されました(Tomas Vondra、David Rowley、ÁlvaroHerrera)。 新しいコマンド
CREATE STATISTICS 、 ALTER STATISTICS 、およびDROP STATISTICS追加されました。 この機能は、クエリによるメモリ使用量を評価するとき、および異なる列の統計を組み合わせるときに役立ちます。 - 行レベルのセキュリティ(Tom Lane)の制限の影響を受けるクエリのパフォーマンスが向上しました。 オプティマイザーは、RLSフィルターを配置できる場所について多くの知識を持っているため、より良い計画を作成し、RLS条件を安全に提供できます。
E.1.3.1.5。 全体的なパフォーマンス
SUM() 、 AVG() 、およびSTDDEV()いくつかのバリアントを含む、 numeric型の算術を使用するときに現在の金額を計算する集計関数が計算されます(Heikki Linnakangas)。- 基数ツリーを使用した文字エンコード変換のパフォーマンスの向上(堀口yo太郎、Heikki Linnakangas)。
- クエリの実行中に式を計算するためのオーバーヘッドの削減、およびプランノードを呼び出すためのオーバーヘッド(Andres Freund)。 特に、これは多数の文字列を処理するクエリに役立ちます。
- グループ化セットでハッシュ集約を使用する機能を追加しました(Andrew Gierth)。
- 特定の種類の関連付けを最適化するために一意性保証が使用されました(David Rowley)。
macaddr ( macaddr Leach)データ型のソートパフォーマンスが向上しました。- 何千ものリレーションシップ(Aleksander Alekseev)を使用するセッションで統計を追跡するオーバーヘッドが削減されました。
E.1.3.1.6。 モニタリング
- 計画時間の表示と
EXPLAINコマンドの実行に対する明示的な制御を追加しました(Ashutosh Bapat)。 デフォルトでは、計画および実行時間はEXPLAIN ANALYZEコマンドで表示され、他の場合には表示されませんでした。 新しいEXPLAIN SUMMARYコマンドオプションにより、明示的な表示制御が可能になります。 - デフォルトの監視ルール(デイブページ)が追加されました。 新しい
pg_monitor 、 pg_read_all_settings 、 pg_read_all_statsおよびpg_stat_scan_tablesにより、特権の設定が簡単になります。 - 実行時の
REFRESH MATERIALIZED VIEW (Jim Mlodgenski)での統計コレクターの正しい更新。
E.1.3.1.6.1。 ロギング
log_line_prefixパラメーターのデフォルト値がlog_line_prefixされ、各ポストマスター出力行(Christoph Berg)にミリ秒とPIDのタイムスタンプが含まれるようになりました。 以前は、プレフィックスは空でした。- ログおよびWALディレクトリのコンテンツを返す関数を追加しました(Dave Page)
新しい関数pg_ls_logdir()およびpg_ls_waldir()は、適切な特権設定を持つ非スーパーユーザーによって起動できます。 - pg_current_logfile()関数が追加され、現在のstderrまたはcsvlog(Gilles Darold)がエラーコレクターに書き込むファイルの名前が表示されます。
- postmaster(Tom Lane)の起動中に、サーバーログで各リスニングソケットのアドレスとポート番号を報告します。 さらに、リスニングソケットへの接続にエラーがある場合は、接続しようとした特定のアドレスが示されます。
- ランチャーサブプロセスの開始および停止に関するログへのメッセージ数を削減しました(Tom Lane)。 現在、彼らは
DEBUG1メッセージDEBUG1を使用してDEBUG1ます。 - log_min_messages (Robert Haas)によって管理される低デバッグレベルのメッセージの冗長性を削減しました。 また、 client_min_messagesデバッグレベルの詳細度も変更します。
pg_stat_activityに低レベルの待機状態のレポートを追加しました(Michael Paquier、Robert Haas、Rushabh Lathia)。 この変更により、ラッチ待機、fsyncファイルの読み取り/書き込み、クライアントの読み取り/書き込み、同期レプリケーションなど、多数の低レベルロックを報告できます。- バックグラウンドプロセス、バックグラウンドワーカー、およびwalsenderプロセスのマッピングを
pg_stat_activity追加しました(Kuntal Ghosh、Michael Paquier)。 これにより、監視が簡素化されます。 新しいbackend_type列は、プロセスのタイプを識別します。 - 実行中の並列ワーカーのpg_stat_activity SQLマッピングを追加しました(Rafia Sabih)。
pg_stat_activity.wait_event_type LWLockTrancheおよびLWLockNamedをLWLock (Robert Haas)にLWLock LWLockNamedしLWLock 。 これにより、結論の一貫性が高まります。
E.1.3.1.7。 認証
- パスワードを転送および保存するためのSCRAM-SHA-256のサポートが追加されました(Michael Paquier、Heikki Linnakangas)。 これは、現在の(
md5 )転送および保存方法よりも高いセキュリティを提供します。 - password_encryptionサーバーパラメータタイプが
booleanからenum変更されました(Michael Paquier)。 これは、追加のパスワードハッシュオプションをサポートするために必要でした。 pg_hba.confコンテンツを表示するpg_hba_file_rulesを追加しました(Haribabu Kommi)。 ファイルの内容は表示されますが、現在アクティブな設定は表示されません。- 複数のRADIUSサーバーのサポート(Magnus Hagander)。 すべてのRADIUS関連パラメータは複数形になり、サーバーのコンマ区切りリストをサポートします。
E.1.3.1.8。 サーバー構成
- SSL構成は、構成の再読み込み時に更新できるようになりました(Andreas Karlsson、Tom Lane)。 これにより、
pg_ctl reload 、 SELECT pg_reload_conf()またはSIGHUPシグナルを送信して、サーバーを再起動せずにSSLを再構成できます。 ただし、SSLサーバーキーにパスワードが必要な場合、パスワードを提供する方法がないため、SSL構成の再読み込みは機能しません。 この場合、初期構成が適用されます。 - bgwriter_lru_maxpagesの最大値は本当に無制限になります(Jim Nasby)。
E.1.3.1.9。 信頼性
- ファイルを作成または削除した後、親ディレクトリ(Michael Paquier)に対してfsyncが呼び出されます。 これにより、停電時のデータ損失のリスクが軽減されます。
- 単純なシステムで不要なチェックポイントとWALアーカイブを削除しました(Michael Paquier)
- スタンバイで確認する必要がある情報をWALに追加するサーバーパラメーターwal_consistency_checkingを追加しました(Kuntal Ghosh、Robert Haas)。 検証中にエラーが発生すると、スタンバイで致命的なエラーが生成されます。
- 構成可能な最大WALセグメントをギガバイトに増やしました(Beena Emerson)
より大きなWALセグメントを使用すると、 archive_commandをより少なく呼び出して、より少ないWALファイルを管理できます。
E.1.3.2。 複製と回復
- スタンドベイでテーブルを論理的に複製する機能を追加しました(Petr Jelinek)。 論理レプリケーションは、PostgreSQLのさまざまなメジャーバージョン間のレプリケーションや選択的レプリケーションなど、物理レプリケーションよりも柔軟性があります。
- synchronous_standby_names (澤田雅彦)にリストされている順番に関係なく、スタンドベイからのコミットの確認を待つことができます。 ,
synchronous_standby_names . synchronous_standby_names ANY , . . - (Magnus Hagander, Dang Minh Huong). , wal_level , max_wal_senders , max_replication_slots hot_standby , .
pg_hba.conf (Michael Paquier). pg_hba.conf . , pg_basebackup .- pg_stat_replication (Thomas Munro). :
write_lag , flush_lag replay_lag . - Log Sequence Number (LSN)
recovery.conf (Michael Paquier). XID'. pg_stop_backup() , WAL' (David Steele). pg_stop_backup() .- (Petr Jelinek). .
- Access Exclusive (Simon Riggs, David Rowley).
- (Stas Kelvich, Nikhil Sontakke, Michael Paquier).
E.1.3.3. お問い合わせ
XMLTABLE , XML - (Pavel Stehule, Álvaro Herrera).UPDATE ... SET (column_list) = row_constructor (Tom Lane). row_constructor ROW ; . table_name.* row_constructor , row_constructors .- , Unicode
U+7FF (Tom Lane). , , [[:alpha:]] .
E.1.3.4.
- , (Amit Langote). .
AFTER - , (Kevin Grittner, Thomas Munro). , .- (Stephen Frost). , , . , . .
REFERENCES - (Tom Lane). REFERENCES - . , - SQL. ( ) , REFERENCES - .- (Matheus Oliveira).
ALTER DEFAULT PRIVILEGES . CREATE SEQUENCE AS , (Peter Eisentraut). , .COPY view FROM source INSTEAD INSERT - (Haribabu Kommi). COPY .- DDL, (Peter Eisentraut). ,
DROP FUNCTION , . SQL. - ,
DROP (Peter Eisentraut). IF NOT EXISTS CREATE SERVER , CREATE USER MAPPING CREATE COLLATION (Anastasia Lubennikova, Peter Eisentraut).VACUUM VERBOSE xmin (Masahiko Sawada, Simon Riggs). log_autovacuum_min_duration .VACUUM - (Claudio Freire, Álvaro Herrera).
E.1.3.5. データ型
JSON JSONB (Dmitry Dolgov). ts_headline() to_tsvector() .- EUI-64 MAC- macaddr8 (Haribabu Kommi). MAC- EUI-48 (type
macaddr ). - (Peter Eisentraut).
SERIAL , SQL. - ENUM (Dagfinn Ilmari Mannsåker). ALTER TYPE… RENAME VALUE .
- (
anyarray ) to_json() to_jsonb() (Andrew Dunstan). , anyarray ( , pg_stats ) JSON -, . - of
money int8 (Peter Eisentraut). int8 - float8 money -- float8 . . , money int8 , , . money (Peter Eisentraut).
E.1.3.6. 機能
regexp_match() (Emre Hasegeli). regexp_matches() , , , .jsonb , (Magnus Hagander).json_populate_record() JSON (Nikita Glukhov). SQL JSON, JSON. , array_in() record_in() JSON-, , .txid_current_ifassigned() NULL , (Craig Ringer). txid_current() , , . .txid_status() (Craig Ringer). , , .make_date() , . . (Álvaro Herrera).to_timestamp() to_date() (Artur Zakirov). , to_date('2009-06-40','YYYY-MM-DD') 2009-07-10 . .
E.1.3.7.
cursor() execute() PL/Python (Peter Eisentraut). - .GET DIAGNOSTICS PL/pgSQL (Tom Lane). .
E.1.3.8.
- URI libpq (Robert Haas, Heikki Linnakangas). libpq .
- URI libpq / (Victor Wagner, Mithun Cy). . libpq
target_session_attrs . - libpq (Julian Markwort). .
PQencryptPasswordConn() , (Michael Paquier, Heikki Linnakangas). MD5 - PQencryptPassword() . SCRAM-SHA-256- .- ecpg 4.12 10 (Tom Lane). ecpg PostgreSQL.
E.1.3.9.
E.1.3.9.1. psql
- psql (Corey Huinker). psql
\if , \elif , \else \endif . , . - psql
\gx ( \g ) ( \x ) (Christoph Berg). - psql , (Tom Lane). , psql.
- psql (Daniel Vérité, Tom Lane). psql .
\set , . , \set on ; , . \unset , , . , , psql. - , psql (Fabien Coelho).
- psql
\d ( ) \dD ( ), , null, (Peter Eisentraut)
“Modifiers”. \d (Daniel Gustafsson). stderr, stdout, .- psql (Jeff Janes, Ian Barwick, Andreas Karlsson, Sehrope Sarkuni, Thomas Munro, Kevin Grittner, Dagfinn Ilmari Mannsåker).
- pgbench
--log-prefix (Masahiko Sawada). - pgbench (Fabien Coelho). .
-M , (Tom Lane).
E.1.3.10.
- pg_receivewal
-Z/--compress (Michael Paquier). - pg_recvlogical
--endpos (Craig Ringer). --startpos . - initdb --noclean
--nosync --no-clean --no-sync (Vik Fearing, Peter Eisentraut). .
- pg_restore (Michael Banck).
-N/--exclude-schema . --no-blobs pg_dump (Guillaume Lelarge). .- pg_dumpall
--no-role-passwords , (Robins Tharakan, Simon Riggs). pg_dumpall , . - (Petr Jelinek).
fsync() , pg_dump pg_dumpall (Michael Paquier). , .. . --no-sync .
- pg_basebackup WAL tar- (Magnus Hagander). WAL tar- base backup'.
- pg_basebackup (Magnus Hagander). , pg_basebackup WAL .
- fsync pg_basebackup pg_receivewal (Michael Paquier).
- pg_basebackup
--no-sync fsync (Michael Paquier). - pg_basebackup', (David Steele).
- pg_ctl (Peter Eisentraut).
- pg_ctl wait (
--wait ) no-wait ( --no-wait ) (Vik Fearing). - pg_ctl (
--options ) (Peter Eisentraut). pg_ctl start --wait postmaster.pid , (Tom Lane). postmaster , postmaster.pid, pg_ctl , , . , , .- pg_ctl / postmaster' (Tom Lane). pg_ctl postmaster', .
- pg_ctl , (Peter Eisentraut).
start promote 1, 0, . stop .
E.1.3.11. ソースコード
- (Peter Eisentraut, Tom Lane). (, 10.1), (eg, 9.6.3). , — . (, 10 9.6). , PostgreSQL .
- pgindent (Piotr Stefaniak, Tom Lane). pg_bsd_indent, , FreeBSD. , C. , (, , ), , .
- ICU (Peter Eisentraut). ICU , .
--with-icu . . - PG_FUNCTION_INFO_V1
DLLEXPORT Windows (Laurenz Albe). extern , DLLEXPORT . SPI SPI_push() , SPI_pop() , SPI_push_conditional() , SPI_pop_conditional() SPI_restore_connection() (Tom Lane). . , , .
, SPI_palloc() SPI-; palloc() , . .- (Thomas Munro, Robert Haas).
- slab-like (Tomas Vondra).
- POSIX SysV Linux FreeBSD (Tom Lane). SysV.
- 64- - (Andres Freund).
- 64- ARM64 (Roman Shaposhnik).
clock_gettime() , , (Tom Lane). gettimeofday() , clock_gettime() .- (Magnus Hagander, Michael Paquier, Heikki Linnakangas). , configure ,
--disable-strong-random . pgcrypto , . WaitLatchOrSocket() Windows (Andres Freund).tupconvert.c , OID (Ashutosh Bapat, Tom Lane). OID , Datum, , , OID.- SCO Unixware (Tom Lane).
- (Alexander Lakhin).
- XSLT PostgreSQL (Peter Eisentraut). Jade, DSSSL, JadeTex.
- HTML- XSLT- (Peter Eisentraut).
E.1.3.12.
- file_fdw , (Corey Huinker, Adam Gomaa).
- postgres_fdw , (Jeevan Chalke, Ashutosh Bapat). , , .
- postgres_fdw (David Rowley, Ashutosh Bapat, Etsuro Fujita).
OID postgres_fdw (Etsuro Fujita). OID .- btree_gist btree_gin (Andrew Dunstan). exclusion constraints.
- btree_gist
UUID (Paul Jungwirth). - amcheck , B-tree (Peter Geoghegan).
$N ? pg_stat_statements (Lukas Fittl).- - ( cube ) (Tom Lane).
infinite- NaN -. - pg_buffercache (Ivan Kartyshov). .
- pgstattuple
pgstathashindex() - (Ashutosh Sharma). GRANT pgstattuple (Stephen Frost). .- - pgstattuple (Amit Kapila).
- pageinspect
page_checksum() , (Tomas Vondra). - pageinspect
bt_page_items() (Tomas Vondra). - pageinspect - (Jesper Pedersen, Ashutosh Sharma).
翻訳者から
.
— . . , WAL.
. , , .
.
: .
? ?