PostgreSQL Global Development Group 已發布我們資料庫系統所有受支援版本的更新,包含 9.6.1、9.5.5、9.4.10、9.3.15、9.2.19 和 9.1.24。 這也是 PostgreSQL 9.1 系列的最後一個更新,因為它現在已終止支援 (end-of-life)。 此版本修復了兩個可能導致資料損毀的問題,詳細說明如下。 它也修補了過去三個月報告的許多其他錯誤。 專案小組強烈建議使用者在下次可能的停機時間套用此更新。
在此版本之前,PostgreSQL 實例有可能嘗試存取磁碟上不再存在的資料。 如果未更新可用空間對應表以識別截斷,則 PostgreSQL 資料庫可能會傳回已截斷的頁面,並產生類似以下的錯誤:
ERROR: could not read block 28991 in file "base/16390/572026": read only 0 of 8192 bytes
如果啟用了總和檢查碼,也可能發生可見性對應表中的總和檢查碼失敗。
此問題存在於 PostgreSQL 9.3、9.4、9.5 和 9.6 系列版本中。
在大端機器上 (例如,許多非 Intel CPU 架構),pg_upgrade 會錯誤地寫入可見性對應表的位元組,導致 pg_upgrade 無法完成。
如果您使用的是大端機器(許多非 Intel 架構都是大端)並且已使用 pg_upgrade 從 9.6 之前的版本升級,則應假定所有可見性對應表都不正確,需要重新產生。 使用 contrib/pg_visibility 的 pg_truncate_visibility_map() 函數截斷每個關聯的可見性對應表就足夠了。 請閱讀「更新」部分,了解有關如何在 PostgreSQL 實例上解決此問題的安裝後說明。
此問題僅存在於 PostgreSQL 9.6.0 版本中。
除了上述內容之外,此更新還修復了過去幾個月報告的許多錯誤。 其中一些問題僅影響 9.6 系列,但許多問題會影響所有受支援的版本。 此版本提供了超過 50 個修復,包含
此更新還包含 tzdata 版本 2016h,用於巴勒斯坦和土耳其的 DST 法律變更,以及土耳其和俄羅斯某些地區的歷史修正。 切換為南極洲、前蘇聯和斯里蘭卡某些時區的數字縮寫。
IANA 時區資料庫先前為所有時區提供文字縮寫,有時會捏造在當地居民中很少或沒有流通的縮寫。 他們正在反轉該政策,轉而使用在沒有證據表明實際使用英語縮寫的區域中使用數字 UTC 偏移量。 至少目前,PostgreSQL 將繼續接受此類已刪除的縮寫以進行時間戳記輸入。 但它們不會顯示在 pg_timezone_names 檢視表中,也不會用於輸出。
在此更新中,AMT 不再顯示為用於表示亞美尼亞時間。 因此,我們已變更預設縮寫集,將其解釋為亞馬遜時間,即 UTC-4 而不是 UTC+4。
PostgreSQL 9.1 版本現在已終止支援 (EOL)。 社群將不會為此版本發布任何額外的更新或安全性修補程式。 仍在使用 9.1 的使用者應盡快升級。 請參閱我們的版本控制政策 (https://postgres.tw/support/versioning/) 以獲取更多資訊。
所有 PostgreSQL 更新版本都是累積性的。 與其他小版本一樣,使用者不需要傾印並重新載入資料庫或使用 pg_upgrade 即可套用此更新版本; 您可以簡單地關閉 PostgreSQL 並更新其二進位檔。
如果您的系統受到大端 pg_upgrade 錯誤的影響,請閱讀 Visibility Map Problems 並按照說明操作,了解如何在 PostgreSQL 實例上修復此問題。
跳過一個或多個更新版本的使用者可能需要執行額外的更新後步驟; 請參閱早期版本的發布說明以了解詳細資訊。
連結