
このリリースは 12.2 からの修正リリース(2020年5月14日リリース)です。12.x からのアップデートではダンプ、リストアは不要です。ただし、12.2よりも前のバージョンからアップデートする場合には、12.2 のリリース情報を参照してください。
PostgreSQL 12.2 から 12.3 への変更点
12.3、11.8、10.13、9.6.18、9.5.22 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。
- 生成列(GENERATED 指定された列)で起こりうるクラッシュが修正されました。 (David Rowley) (12)
- 生成列の継承の扱いが改善されました。 (Peter Eisentraut) (12)
- CREATE TABLE ... LIKE ... INCLUDING GENERATED で、列をまたがる参照が修正されました。 (Peter Eisentraut) (12)
- ALTER TABLE ... SET STORAGE がインデックスに伝搬するようになりました。 (Peter Eisentraut) (12)(11)
- ALTER TABLE で書き換えられたインデックスの indisclustered属性を維持するようになりました。 (Amit Langote, Justin Pryzby) (12)(11)(10)(9.6)(9.5)
- ALTER TABLE で書き換えられたインデックスの REPLICA IDENTITY属性が維持されるようになりました。 (Quan Zongliang, Peter Eisentraut) (12)(11)(10)(9.6)(9.5)
- REINDEX CONCURRENTLY で再構築されたインデックスの indisclustered属性が維持されるようになりました。 (Justin Pryzby) (12)
- DROP OWNED BY コマンドにおいて、オブジェクトをより早くロックするようになりました。 (Álvaro Herrera) (12)(11)(10)(9.6)(9.5)
- CREATE ROLE ... IN ROLE ... のエラー処理が修正されました。 (Andrew Gierth) (12)(11)(10)(9.6)(9.5)
- パーティションがデタッチされたときに、旧親テーブルから複製されたトリガが確実に除去されるように修正されました。 (Justin Pryzby) (12)(11)
- パーティション境界の式で、COLLATE が照合不可能な型に適用されるとクラッシュする不具合があり、修正されました。 (Dmitry Dolgov) (12)
- パーティショニングされたテーブル上のユニークインデックスが、パーティショニングキーの等価性セマンティクスと一致するかどうかを確認するようになりました。 (Guancheng Luo) (12)(11)
- pg_read_all_statsロールのメンバが、期待通りにすべての統計情報ビューを参照できるようになりました。 (Magnus Hagander) (12)(11)(10)
- information_schema.triggersビューのパフォーマンス劣化が修正されました。 (Tom Lane) (12)(11)
- 浮動小数点オーバーフローおよびアンダーフロー検出のパフォーマンス低下が修正されました。 (Emre Hasegeli) (12)
- 全文検索がフレーズ検索上の NOT を正しく処理できるように修正されました。 (Tom Lane) (12)(11)(10)(9.6)
- 全文検索のフレーズ検索で、前方一致と重み限定の両方を持つ項目が含まれる場合に、マッチ漏れが発生する不具合が修正されました。 (Tom Lane) (12)(11)(10)(9.6)
- フレーズ検索を使うときにより良い見出しが選択されるように、ts_headline() 関数が修正されました。 (Tom Lane) (12)(11)(10)(9.6)
- gin_fuzzy_search_limit の処理の不具合が修正されました。 (Adé Heyward, Tom Lane) (12)(11)(10)(9.6)(9.5)
- ドキュメント通りに circle型の入力として「(x,y),r」形式を受け付けるようになりました。 (David Zhang) (12)(11)(10)(9.6)(9.5)
- get_bit() と set_bit() 関数が 256MB より長い bytea文字列に対応しました。 (Movead Li) (12)(11)(10)(9.6)(9.5)
- pg_ls_waldir() とその関連関数で、ファイルが見つからないというエラーを無視するようになりました。 (Tom Lane) (12)(11)(10)
- pg_ls_dir()、pg_timezone_names()、pg_tablespace_databases()、および、関連関数で、ディレクトリの開いたファイルディスクリプタがリークする可能性があり、回避されました。 (Justin Pryzby) (12)(11)(10)(9.6)(9.5)
- 多様関数の型解決が修正されました。anyrange の入力のみを与えられた場合に、anyarray の出力が実際の型を正しく推論するようになりました。 (Tom Lane) (12)(11)(10)(9.6)(9.5)
- GSSAPI対応でコンパイルされていないために GSSAPI接続が拒否され、クライアントが代わりに SSL 接続を試みる場合の、サーバの接続開始ロジックが修正されました。 (Andrew Gierth) (12)
- GSSAPI暗号化でのメモリリークが修正されました。 (Tom Lane) (12)
- クエリの FROM句で使用される集合を返す関数のメモリリークが修正されました。 (Andres Freund) (12)
- 複数回使われるハッシュ化されたサブプランのハッシュテーブルのリークが回避されました。 (Andreas Karlsson, Tom Lane) (12)(11)
- プランナによる何もしないドメインに型変換する処理が改善されました。 (Tom Lane) (12)
- REINDEX が SIGTERM(セッションシャットダウン)シグナルで終了した時のクラッシュが回避されました。 (Tom Lane) (12)(11)(10)(9.6)(9.5)
- EXPLAIN でおそらく不正とみられるハッシュ結合テーブルの統計情報が出力されていたものが、防止されました。 (Konstantin Knizhnik, Tom Lane, Thomas Munro) (12)(11)(10)(9.6)(9.5)
- VACUUM VERBOSE でのヒープ切り捨て段階の経過時間の報告が修正されました。 (Tatsuhito Kasahara) (12)(11)(10)(9.6)(9.5)
- VACUUM VERBOSE の出力で、削除された B-treeインデックスについてページ数が過小に報告されていたものが、修正されました。 (Peter Geoghegan) (12)(11)
- B-treeインデックスで最も古い削除されたページに対する誤った記録付けが修正されました。 (Peter Geoghegan) (12)(11)
- TimelineHistoryRead と TimelineHistoryWrite の待機状態が、.historyファイルを読み書きするすべてのコードパスで報告されるようになりました。 (Masahiro Ikeda) (12)(11)(10)
- プロセスの PS状態で「waiting」が重複して表示されないように修正されました。 (Masahiko Sawada) (12)(11)(10)(9.6)(9.5)
- 拡張統計データのカタログタプルを ANALYZE で置き換えた場合の競合状態が回避されました。 (Dean Rasheed) (12)
- 「冗長な」周回防止バキュームの不用意なスキップが回避されました。 (Michael Paquier) (12)
- B-tree のピボットタプルから INCLUDEされたカラムが常に削除されるようになりました。 (Peter Geoghegan) (12)
- REINDEX CONCURRENTLY に失敗した後に残る可能性のある無効な TOASTインデックスを適切に扱うようになりました。 (Julien Rouhaud) (12)
- REINDEX CONCURRENTLY が失敗した後でも、有効なインデックスの依存関係が維持されるように対応されました。 (Michael Paquier) (12)
- autovacuum がドロップされたばかりの一時スキーマにアクセスしようとした場合にクラッシュする障害が回避されました。 (Tom Lane) (12)(11)
- クラッシュリカバリ中の WALセグメントの早すぎるリサイクルが回避されました。 (Jehan-Guillaume de Rorthais) (12)(11)(10)(9.6)(9.5)
- アーカイブリカバリ中に無関係なタイムラインがスキャンされないようになりました。 (Kyotaro Horiguchi) (12)(11)(10)(9.6)(9.5)
- 論理デコーディングでの「subtransaction logged without previous top-level txn record」 というエラーの検査が削除されました。 (Arseny Sher, Amit Kapila) (12)(11)(10)(9.6)(9.5)
- レプリケーションスロットのコピー後に障害が発生する可能性があり、回避されました。 (Masahiko Sawada, Arseny Sher) (12)
- レプリケーションスロットの「io_in_progress_lock」がエラー時のコードパスで確実に解放されるようになりました。 (Pavan Deolasee) (12)(11)(10)(9.6)(9.5)
- 論理レプリケーションによって発行された更新のときに、生成列が正しく確実に処理されるようになりました。 (Peter Eisentraut) (12)
- 同期スタンバイ管理での競合状態が修正されました。 (Tom Lane) (12)(11)(10)(9.6)
- いくつかのエラー報告に欠落していた SQLSTATE値が追加されました。 (Sawada Masahiko) (12)(11)(10)(9.6)(9.5)
- イベントトリガ関数の通常関数としての実行を確実に拒否するようにPL/pgSQL が修正されました。 (Tom Lane) (12)(11)(10)(9.6)(9.5)
- 「sslmode=verify-full」を使用した時の libpq でのメモリリークが修正されました。 (Roman Peshkurov) (12)(11)(10)(9.6)(9.5)
- すべてのプラットフォームで「-」引数を「標準入力からの読み込み」を意味するものとして扱うように ecpg が修正されました。 (Tom Lane) (12)(11)(10)(9.6)(9.5)
- psql で失敗した接続を復旧しようとした時に発生するクラッシュが修正されました。 (Michael Paquier) (12)
- psql の \gx コマンドが引数(ファイル名)のタブ補完できるようになりました。 (Vik Fearing) (12)(11)(10)
- pg_dump で ALTER ... DEPENDS ON EXTENSION がサポートされました。 (Álvaro Herrera) (12)(11)(10)(9.6)
- pg_dump が RLSポリシーオブジェクトのコメントをダンプするように修正されました。 (Tom Lane) (12)(11)(10)(9.6)(9.5)
- pg_dump がイベントトリガのリストアを最後に行なうようになりました。 (Fabrízio de Royes Mello, Hamid Akhtar, Tom Lane) (12)(11)(10)(9.6)(9.5)
- pg_basebackup が有効な tarファイルを確実に生成するようになりました。 (Robert Haas) (12)
- pg_checksums および pg_verify_checksums がメジャーバージョンの異なるテーブル空間のサブディレクトリをスキップするようになりました。 (Michael Banck, Bernd Helmle) (12) (11)
- pg_checksums および pg_verify_checksums と関連プログラムで、pg_internal.init の一時的なコピーを無視するようになりました。 (Michael Paquier) (12) (11)
- createdb の --encoding、--lc-ctype、--lc-collate の値のクォート処理が修正されました。 (Michael Paquier) (12)(11)(10)(9.6)(9.5)
- contrib/lo の lo_manage()関数が、トリガとしてではなく直接呼ばれた場合でもクラッシュしなくなりました。 (Tom Lane) (12)(11)(10)(9.6)(9.5)
- contrib/ltree で、ltree と lquery のフィールド長がオーバーフローしないようになりました。 (Nikita Glukhov) (12)(11)(10)(9.6)(9.5)
- oldest_xact値が 2^31-1 を超えても contrib/pageinspect の bt_metap() 関数が失敗しなくなりました。 (Peter Geoghegan) (12)(11)
- contrib/sepgsql で誤った「WARNING: cache reference leak」メッセージが出力されなくなりました。 (Michael Luo) (12)(11)(10)(9.6)(9.5)
- Windows で pg_ctl start 時の早すぎるログファイル作成を回避するようになりました。 (Alexander Lakhin) (12)
- Windows で Unixスタイルのロケール名を扱う際に失敗しないようになりました。 (Juan José Santamaría Flecha) (12)(11)(10)(9.6)(9.5)
- Windows で、PG_COLOR のカラー化をサポートするプログラムでコンソールの VT100 互換モードを設定するようになりました。 (Juan José Santamaría Flecha) (12)
- ereport() の呼び出しで余分な括弧が要求されなくなりました。 (Andres Freund, Tom Lane) (12)
- configure で libxml2 の位置を確認するために、利用可能な場合は pkg-config を使用するようになりました。 (Hugh McMaster, Tom Lane, Peter Eisentraut) (12)(11)(10)
- libpq と ecpg の、Makefile の依存関係を修正しました。 (Dagfinn Ilmari Mannsaker) (12)
- MSVCビルドで Python のパス名のスペースに対処するようになりました。 (Victor Wagner) (12)(11)(10)(9.6)(9.5)
- Visual Studio のバージョン検出が修正され、MSVC ビルドがより多くの言語設定で動作するようになりました。 (Andrew Dunstan) (12)(11)(10)(9.6)(9.5)
- Windows 以外のビルドではすでにそうなっているように、MSVC ビルドでも、3.0 より新しいバージョンの bison では "-Wno-deprecated" を使用するようになりました。 (Andrew Dunstan) (12)(11)(10)(9.6)(9.5)
- タイムゾーンデータファイルが tzdata release 2020a に更新されました。モロッコとカナダのユーコンの DST法の変更と上海の歴史的な修正が含まれます。 (12)(11)(10)(9.6)(9.5)
- パーティショニングされたテーブルで、制約違反エラーが発生した後に低頻度で発生するクラッシュが修正されました。 (Andres Freund) (11)(10)
- nextXid がスタンバイサーバ上で後戻りしないようになりました。 (Eka Palamadai) (11)(10)(9.6)(9.5)
- 共有ライブラリのビルドする時に CXXFLAGS に CFLAGS_SL を含めるようになりました。 (Oleksii Kliukin) (10)
生成列が、テーブル内の他の列の単なるコピーで、かつ、リファレンス渡しのデータ型(文字列型など)である場合、テーブルに壊れたデータが投入されるかクラッシュを引き起こす可能性がありました。他の列を単に複製する GENERATED式という役に立たない使い方に限られればよいですが、時に入力そのものを返す関数を使っている式で本状況が生じる可能性があります。
本障害で以下のようなデータ投入時に巨大なメモリ要求によるエラーが出るケースも報告されました。
ERROR: XX000: invalid memory alloc request size 18446744073709551613
CREATE TABLE ... INHERITS でテーブルの列が継承された場合、親の列が生成列(GENERATED)であるときに子の列で生成列であるという属性を変更することが禁止され、一方で、親の列が生成列でないときに子の列で GENERATED を指定して生成列にできるようになりました。
これらの規則が不明瞭であったことに起因して、生成列と継承の組み合わせを含むテーブル定義のダンプがリストアできない場合が報告されました。
物理的に後ろにある列を参照する GENERATED式をコピーしようとするときに CREATE TABLE ... LIKE が以下のようなエラーを起こしました。
(報告されたエラー発生例) db=# CREATE TABLE t3 ( funds float GENERATED ALWAYS AS (cast(funds_t AS double precision)) STORED, funds_t text, id bigserial not null); db=# CREATE TABLE IF NOT EXISTS t3_temp (LIKE t3 INCLUDING GENERATED); ERROR: XX000: unexpected varattno 3 in expression to be mapped
式でないインデックス列は作成時には常に、そのテーブル列の attstorage属性をコピーしていました。整合性を維持するように、ALTER TABLE ... SET STORAGE ... が実行されたときにインデックスに対しても属性を変更するようになりました。
indisclustered は pg_indexシステムテーブルの列で、前回テーブルを当該インデックスを使って CLUSTERコマンドを実行した場合にtrue となります。これまで、当該列を対象に ALTER TABLE を実行すると、この情報が失われていました。
REPLICA IDENTITY属性は、論理レプリケーション用に使われ、ALTER TABLE ... REPLICA IDENTITY USING INDEX ... コマンドで指定されます。pg_indexシステムテーブルの列名としては indisreplident です。これまで、当該列を対象に ALTER TABLE を実行すると、この情報が失われていました。
これまで、このような場合に属性が失われ、REINDEX CONCURRENTLY後のCLUSTERコマンド実行が失敗する可能性がありました。
これにより、他セッションがいくつかの同オブジェクトを削除している場合の競合状態によるエラーを回避します。以下のエラーが出るケースが報告されました。
ERROR: cache lookup failed for relation 41019
一部のエラーケースでは意図通りのメッセージの代わりに「unexpected node type」といったエラーメッセージが報告されていました。
これまで、パーティションをデタッチした際にトリガが残ってしまう動作があり、そのようなトリガは、旧親テーブルとの依存関係のために以下のようなエラーが出て、削除不能となっていました。
db=# ALTER TABLE t10p DETACH PARTITION t10c; db=# DROP TRIGGER trig ON t10c; ERROR: cannot drop trigger trig on table t10c because trigger trig on table t10p requires it
(該当する例: 整数型に COLLATE を指定する式を与えている) db=# CREATE TABLE t11p (i int) PARTITION BY LIST (i); db=# CREATE TABLE t11c1 PARTITION OF t11p FOR VALUES IN ('1' COLLATE "POSIX");
これは独自の等価性演算子を持つインデックス演算子クラスだけの問題ですが、理論的には間違っていたので、確認するように修正されました。
pg_read_all_statsロールのメンバ は pg_stat_progress_* ビューを参照できるとドキュメントに記載されていましたが、実際には参照できませんでした。
この修正は、テーブル名を制約する外側の WHERE句がプッシュダウンされるようにビューを再定義し、計算がデータベース内の全トリガではなく、対象テーブルに属するトリガに対してのみ行われるようにします。多くのトリガを持つデータベースでは、この変更でかなりの速度差が出ます。
バージョン11より前には修正後と同様に動作していたので、これは潜在的なパフォーマンス劣化でした。
本修正は既存のデータベースクラスタには適用されませんが、明示的にビュー定義を置き換えることで修正することができます。information_schema.triggersビューを含む情報スキーマの定義はソースコードの以下パスにあります。
src/backend/catalog/information_schema.sql
以前のリファクタリングで、いくつかのホットなコードパスで isinf() を余分に呼び出すようになっていました。
これまで、GiST や GIN インデックス検索として実行されている場合、「!(foo <-> bar)」のようなクエリで、マッチする行が見つからない問題が発生していました。
以下のような場合が該当します。
(マッチすべきところでマッチしない障害動作例) db=# SELECT 'wa:1D wb:2A'::tsvector @@ 'w:*D <-> w:*A'::tsquery as "true"; true ------ f (1 行)
検索条件部分が適切に強調されない動作が報告されました。
gin_fuzzy_search_limit の値が小さいと、意図せずに同じインデックスページを何度も再スキャンしてしまい、予期せず遅くなる可能性がありました。別のコードパスでは、意図したフィルタリングの適用に失敗しており、多すぎる値を返す可能性がありました。
(修正前のエラー発生例) db=# SELECT '( 1 , 1 ) , 5'::circle; ERROR: invalid input syntax for type circle: "( 1 , 1 ) , 5"
ビット数の引数が int4 のみなので、これらの関数を使用して長い bytea の最初の256MB を超えるビットにアクセスすることはできません。バージョン 13 では引数が int8 に拡張される予定ですが、それまでの間は、これらの関数が長い bytea の最初の部分文字列で動作します。
修正前は、このような場合に以下エラーが発生していました。
ERROR: index 0 out of valid range, 0..-1
これは、ディレクトリエントリが参照されてからstat() を実行しようとするまでの間にファイルが削除された場合の競合状態による失敗を防ぎます。
そのような場合に以下のエラーが出るケースが報告されました。
db=# CREATE FUNCTION f24(x anyrange, out lu anyarray, out ul anyarray) LANGUAGE SQL AS 'SELECT array[lower(x),upper(x)], array[upper(x),lower(x)]'; db=# SELECT * FROM foo24(int4range(6,9)); ERROR: cache lookup failed for type 0
これまで、以下の FATALメッセージで失敗していました。
FATAL: unsupported frontend protocol 1234.5679: server supports 2.0 to 3.0
これまで、GSSAPI暗号化が使用されている場合、バックエンドと libpq の両方がセッション中に送信されたデータの総量に相当するメモリリークが発生していました。
これにより以下のような問い合わせのメモリ使用量が巨大になっていました。
db=# SELECT sum(f) FROM generate_series(1, 1000000) g(i), generate_series(i, i+1) f;
この誤りは、ハッシュ化されたサブプランのクエリを十分な回数再実行した時に、深刻なメモリの肥大化を引き起こす可能性がありました。
何もしないドメインへの型変換が式から完全に取り除かれない場合があり、修正されました。旧メジャーバージョンと比べて動作が遅くなっていたことが報告されていました。
実際には上記の状況であっても本障害でのクラッシュ発生は稀です。
以下のような EXPLAIN出力(一部抜粋)が報告されていました。
-> Hash (cost=0.11..0.11 rows=10 width=12) (actual time=0.002..0.002 rows=1 loops=8) Buckets: 2139062143 Batches: 2139062143 Memory Usage: 8971876904722400kB -> Function Scan on unnest init_1 (cost=0.01..0.11 rows=10 width=12) (actual time=0.001..0.001 rows=1 loops=8)
これまで不正確な経過時間が報告されていました。
これによって、VACUUM がインデックスのクリーンアップスキャンをスキップできる場合について、微妙に間違った判断をする可能性がありました。
(誤った psコマンドの出力行の例) 46510 ?? Ss 0:00.05 postgres: startup recovering 000000010000000000000003 waiting waiting
VACUUM FULL などの操作が同時に行われた場合に、ANALYZE が間違ったタプルを置換してしまう可能性がありました。
これにより、自動バキュームが何度もトライしては同じバキュームジョブをスキップすることを繰り返すというまれなケースが回避されます。
この誤りはまれにスペースを無駄にしましたが、それ以外は無害です。
REINDEX CONCURRENTLY に失敗した後に REINDEX TABLE を行った場合に、使用できず、削除もできない重複したインデックスが作成されてしまう問題が生じていました。
以前は pg_depend のリンクがまったくない古いインデックスを残すことがありえたため、例えば親テーブルが削除されてもインデックスは削除されずに残ってしまいました。
この障害はスーパーユーザが一時スキーマを手動で削除した場合にのみ発生します。これは一般的な状況ではありませんが、この場合も動作すべきでした。
クラッシュリカバリの間にアーカイブされる準備が整った WALセグメントがアーカイブされずにリサイクルされる可能性がありました。
これにより、アーカイブストレージから存在しない WAL ファイルをフェッチしようとする多くの試みを排除することが可能となり、アーカイブへのアクセスが遅い場合に役立ちます。
この条件は様々なシナリオで正当に到達可能なため取り除かれました。
WALデータが適切に取りおかれず、早くに削除されてしまう可能性がありました。
本障害のため walsender が後でロックを待機したまま動けなくなる可能性がありました。
これまで、このような場合に生成列が更新されませんでした。
synchronous_standby_names の設定を変更している間、同期コミットを待っているトランザクションをリリースしてもよいかどうかについて、誤った判断を下す可能性がありました。 また、walsenderプロセスが終了してすぐにプロセスが再起動された場合にも、同様に誤った判断を下す危険性がありました。
そのような関数実行でクラッシュが発生していました。
接続開始時の証明書の検証は、いくらかのメモリリークの可能性があり、クライアントプロセスの起動中にデータベース接続を多数オープンした場合に問題となる可能性がありました。
AIX で動作しないケースが報告されていました。
\gx コマンドは直前の SQL 実行結果を拡張出力モードで引数に指定したファイルへ書き込みます。
以前の pg_dump はこの依存関係を無視してしまい、ダンプ/リストアや pg_upgrade時にそれらが反映されませんでした。
これにより、イベントトリガが他のオブジェクトの復元に干渉するリスクを最小限に抑えることができます。
ファイルの末尾にゼロ埋めされたブロックが追加されることがありました。これは一般的なバージョンの tar では問題ないようですが、POSIXファイル形式の仕様としては問題がありました。
このようなサブディレクトリは実際にはデータベースクラスタには属していないので、処理してはいけませんでした。
以下の通り、正しくクォートされた文字列を認識できるようになりました。
(PostgreSQL 12.2 の createdb コマンド) $ createdb --lc-collate "foo'; SELECT '1" 'foobar2' createdb: error: database creation failed: ERROR: CREATE DATABASE cannot run inside a transaction block (PostgreSQL 12.3 の createdb コマンド) $ createdb --lc-collate "foo'; SELECT '1" 'foobar2' createdb: error: database creation failed: ERROR: invalid locale name: "foo'; SELECT '1"
これまではフィールド長が 65535 を超えると 0 になっていましたが、本修正によって ERROR が返るようになりました。
(修正前の動作) db=# SELECT nlevel(('1' || repeat('.1', 65534))::ltree); nlevel -------- 65535 (1 row) db=# SELECT nlevel(('1' || repeat('.1', 65535))::ltree); nlevel -------- 0 (1 row) (修正後の動作) db=# SELECT nlevel(('1' || repeat('.1', 65535))::ltree); ERROR: number of ltree levels (65536) exceeds the maximum allowed (65535)
このような XID は負の整数として報告されるようになりました。これはワークアラウンドですが、エラーを投げるよりは良いと判断されました。これまで、以下のようなエラーが発生していました。
db=# SELECT * FROM bt_metap('index'); ERROR: value "2180413846" is out of range for type integer
Windows の pg_ctl で、-l で指定したログファイルがまだ存在せず、pg_ctl が Administrator権限で実行されている場合、postmaster から書き込みできないパーミッションでログファイルが作成されて、権限不足のエラーが生じる可能性がありました。
Unixスタイルのロケール文字列(たとえば "et_EE.UTF-8")の場合、ドットの後にあるのはエンコーディング名です。これを Windows のコードページ番号として扱って、以下のエラーが生じていました。
> initdb.exe --locale et_EE.UTF-8 -D C:\data initdb: ERROR: invalid locale name "et_EE.UTF-8"
そのため、ドットの後の文字がすべて数字であるかどうかを確認し、そうでない場合はコードページ番号ではなくエンコーディング名として扱うようになりました。
これを設定していないと、カラー化オプションが実際には動作しませんでした。
これはソースコード内のインターフェースに関連する修正です。
pkg-config が存在しないか、libxml2 に関する情報がない場合は、これまで通りxml2-config に問い合わせます。
この変更により、PostgreSQL がデフォルトではないバージョンの libxml2 を使用する場合、そのバージョンの xml2-config を PATH に設定すると、ビルドプロセスが中断される可能性があります。代わりに、XML2_CONFIG にデフォルトではない xml2-config を設定してください。この方法は、古いバージョンの PostgreSQL でも新しいバージョンの PostgreSQL でも動作します。
America/Godthabゾーンは、現在の英語の使用法を反映するために America/Nuuk に名称変更されました。変更前の名前も互換性のために利用可能なままです。
また、initdb の既知の Windowsタイムゾーン名のリストが最近追加されたものを含むように更新され、そのプラットフォーム上のシステムのタイムゾーン設定が正しく翻訳される可能性が高まりました。
この競合状態により、誤ったホットスタンバイフィードバックメッセージがプライマリサーバに送り返される可能性があり、VACUUM がプライマリ上ですぐに実行されてしまう可能性がありました。
これにより、必要に応じて "-fPIC" を追加するなど、C++ のソースファイルが正しくコンパイルされるようになります。11.x以降バージョンでは既にそのようになっています。