<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # E.19\. 發布9.1 > **發布日期:** 2011-09-12 ## E.19.1\. 概述 該發布顯示了PostgreSQL超越傳統關系數據庫功能設置為新, 突破性功能對PostgreSQL是唯一的。 發布9.0中介紹的流復制功能通過添加同步復制選項,流備份以及 監測改進而被顯著增強。主要功能包含: * 允許[同步復制](#calibre_link-1439) * 添加支持[外表](#calibre_link-0) * 添加每列[collation](#calibre_link-667)支持 * 添加[擴展](#calibre_link-840) 這簡化附加包到PostgreSQL。 * 添加真的[可串行化隔離級別](#calibre_link-727) * 在[`CREATE TABLE`](#calibre_link-7)中 使用`UNLOGGED`選項支持未記錄表 * 允許[`WITH`](#calibre_link-515)子句中 數據修改命令(`INSERT`/`UPDATE`/`DELETE`) * 添加最近鄰(算子排序)搜索到 [GiST索引](#calibre_link-1003) * 添加[`SECURITY LABEL`](#calibre_link-759) 命令并且支持[SELinux權限控制](#calibre_link-398) * 更新[PL/Python](#calibre_link-882)服務器端語言 在下面部分將詳細解釋上面項。 ## E.19.2\. 遷移到版本9.1 使用pg_dump或者pg_upgrade 備份/恢復, 對于那些希望從任何以前發布中遷移數據是必須的。 版本9.1包含了可能影響與以前版本的兼容性的一些變化。 觀察下面的不兼容性: ### E.19.2.1\. 字符串 * 改變 [`standard_conforming_strings`](#calibre_link-1031) 的缺省值(Robert Haas) 缺省情況下,反斜杠是字符串中普通字符, 而不是轉義字符。這一變化刪除與SQL標準長期存在的不兼容。 [`escape_string_warning`](#calibre_link-1523) 有多年關于這個用法的警告。 `E''`字符串是嵌入反斜杠轉義到字符串中的正確做法, 并且這種變化不受影響。 **Warning** 這個變化可以打斷不希望的應用,并且按照舊的規則執行字符串逃逸。 該結果可能與介紹的SQL注入安全中斷一樣嚴峻。 確保測試應用遭受不可信任輸入, 確保它們正確處理單引號和文本字符串中反斜線符號。 ### E.19.2.2\. 轉換 * 不允許函數樣式和屬性樣式數據類型轉換為復合類型(Tom Lane) 比如,不允許`_composite_value_`.text和 `text(``_composite_value_`)。 該語法的無意識使用經常導致錯誤報告; 盡管它不是錯誤,似乎追溯到拒絕這樣的表達式更好。 當實際上打算整個復合值計算時, `CAST`和`::`語法仍然可以使用。 * 加強基于數組的域轉換檢查(Tom Lane) 當域是基于數組類型時,它被允許"查看"域類型訪問數組元素, 包含下標域值抓取或者分配一個元素。 分配這樣一個域值元素,比如通過`UPDATE ... SET domaincol[5] = ...`, 將導致檢查域類型的約束,然而檢查之前被忽略。 ### E.19.2.3\. 數組 * 改變 [`string_to_array()`](#calibre_link-2233) 為零長字符串返回空數組(Pavel Stehule) 以前返回空值。 * 改變 [`string_to_array()`](#calibre_link-2233), 所以`NULL`分隔符分離字符串到字符(Pavel Stehule) 先前這返回空值。 ### E.19.2.4\. 對象修改 * 修復觸發器之前/之后的不當檢查(Tom Lane) 觸發器可以在三種情況下被觸發:`BEFORE`, `AFTER`或者`INSTEAD OF`一些操作。 觸發器函數發起者應該理智驗證三種情況下它們的邏輯操作。 * 需要超級用戶或者`CREATEROLE`權限目的是設置評論角色(Tom Lane) ### E.19.2.5\. 服務器設置 * 改變 [`pg_last_xlog_receive_location()`](#calibre_link-1049) 因此它不會向后移動(Fujii Masao) 先前,當重新啟動流復制的時候,`pg_last_xlog_receive_location()`的值 可以向后移動。 * 復制連接日志接受 [`log_connections`](#calibre_link-2315) (Magnus Hagander) 先前,復制連接總是被記錄。 ### E.19.2.6\. [PL/pgSQL](#calibre_link-857)服務器端語言 * 改變不帶參數的PL/pgSQL的`RAISE`命令 為通過附屬異常塊可捕獲(Piyush Newe) 以前代碼塊中`RAISE`總是限于附加異常塊中,因此 在同一范圍內是無法捕獲的。 * 調整PL/pgSQL的錯誤線編號代碼與其他PL相一致(Pavel Stehule) 先前,PL/pgSQL在函數體開始部分可能忽略(不計算)空行。 由于這是不符合所有其他語言的,特殊情況下被刪除。 * 使得PL/pgSQL抱怨IN和OUT參數名沖突(Tom Lane) 以前,檢測不到沖突,該名字可能就默默地指向OUT參數。 * PL/pgSQL變量類型修飾符對于SQL分析器是可見的(Tom Lane) 附屬于PL/pgSQL變量的類型修飾符(比如varchar長度限制) 在分配之間被執行,但是出于其他目的被忽略。 這些變量操作更像聲明了同一描述符的表列。 這不希望在多數情況下產生任何可見差異, 但是它可能產生通過PL/pgSQL函數發布的一些SQL命令的微妙變化。 ### E.19.2.7\. Contrib * 所有contrib模塊伴隨 [`CREATE EXTENSION`](#calibre_link-572) 被安裝而不是通過手動調用它們的SQL腳本(Dimitri Fontaine, Tom Lane) 為了更新包含contrib模塊9.0版本的現有數據庫, 使用`CREATE EXTENSION ... FROM unpackaged` 封裝現有contrib模塊的對象到一個擴展中。 當從先前9.0版本中更新時,使用舊的卸載腳本刪除contrib模塊的對象, 然后使用`CREATE EXTENSION`。 ### E.19.2.8\. 其他的不兼容 * 使得[`pg_stat_reset()`](#calibre_link-1055) 重置所有數據庫級別統計(Tomas Vondra) 一些`pg_stat_database`計數器沒有被重置。 * 修復一些 [`information_schema.triggers`](#calibre_link-768) 列名匹配新的SQL標準名(Dean Rasheed) * 把ECPG游標名看作不區分大小寫(Zoltan Boszormenyi) ## E.19.3\. 變化 下面你將發現在PostgreSQL 9.1 和以前主要發布之間的變化的詳細列表。 ### E.19.3.1\. 服務器 #### E.19.3.1.1\. 性能 * 支持 在[`CREATE TABLE`](#calibre_link-7)中 使用`UNLOGGED`選項的未記錄表(Robert Haas) 這個表提供了比常規表更好的更新性能,但是不安全:它們內容在 服務器崩潰的情況下被自動清除。 也不會被傳送到備份子服務器。 * 允許`FULL OUTER JOIN`作為哈希連接被實現, 并且允許`LEFT OUTER JOIN`或者 `RIGHT OUTER JOIN`的一側被哈希(Tom Lane) 以前`FULL OUTER JOIN`只能作為合并連接被實現, 并且`LEFT OUTER JOIN`和 `RIGHT OUTER JOIN`可以哈希連接空側。 這些變化提供了額外查詢優化可能性。 * 合并復制fsync請求(Robert Haas, Greg Smith) 這大大提高了大量寫入重載下性能。 * 提高 [`commit_siblings`](#calibre_link-2308) 的性能(Greg Smith) 這允許較少開銷的`commit_siblings`的使用。 * 減少大的ispell詞典存儲需求(Pavel Stehule, Tom Lane) * 避免"盲寫"后將數據文件打開(Alvaro Herrera) 這修復它們被刪除后后端保持文件打開時間,防止內核回收磁盤空間。 #### E.19.3.1.2\. 優化器 * 允許繼承表掃描返回有意義的排序結果 (Greg Stark, Hans-Jurgen Schonig, Robert Haas, Tom Lane) 這允許使用 `ORDER BY`,`LIMIT` 或者帶有繼承表的`MIN`/`MAX` 的查詢的更好優化。 * 提高GIN索引掃描成本估計(Teodor Sigaev) * 提高聚集和window函數成本估計(Tom Lane) #### E.19.3.1.3\. 認證 * 在[`pg_hba.conf`](#calibre_link-656) 中支持host名字和host后綴(比如`.example.com`) 先前只支持host IP 地址和CIDR值。 * 在[`pg_hba.conf`](#calibre_link-656)的host列 支持關鍵字`all`(Peter Eisentraut) 以前為了這個人們使用 `0.0.0.0/0`或者`::/0`。 * 在不支持Unix套接字連接的平臺上拒絕 [`pg_hba.conf`](#calibre_link-656)中的 `local`行(Magnus Hagander) 先前,默默忽略這樣的行,這可能是令人驚訝的。 這使得該操作更像其他不支持的情況。 * 允許[GSSAPI](#calibre_link-505) 通過[SSPI](#calibre_link-1554)用于 驗證到服務器(Christian Ullrich) 特別是允許基于Unix GSSAPI客戶端執行 伴隨Windows服務器的SSPI認證。 * 在區域套接字上的[`ident`](#calibre_link-1555) 認證被稱為[`peer`](#calibre_link-503) (Magnus Hagander) 該舊的術語仍然接受向后兼容性,但是 因為這兩種方法在根本上是不同的, 為它們采用不同的名字似乎更好。 * 重寫[peer](#calibre_link-503)認證 以避免證書控制信息的使用(Tom Lane) 這個變化使得同等驗證碼更加簡單而且可執行性更好。然而, 它需要平臺提供`getpeereid`函數或者等效套接字操作。 按目前所知,之前同等認證執行唯一平臺, 并且現在不是之前5.0 NetBSD。 #### E.19.3.1.4\. 監控 * 添加重啟點和檢查點記錄詳情,通過 [`log_checkpoints`](#calibre_link-2316)控制 (Fujii Masao, Greg Smith) 新的詳情包含WAL文件以及同步活動。 * 添加[`log_file_mode`](#calibre_link-2317) 其控制通過日志收集器創建的日志文件權限(Martin Pihlak) * 減少syslog記錄缺省最大行長度 到加上前綴900字節(Noah Misch) 這避免了syslog實現上具有1KB長度限制而不是常見的2KB的長日志行的 截斷。 #### E.19.3.1.5\. 統計視圖 * 添加`client_hostname`列到 [`pg_stat_activity`](#calibre_link-1440) (Peter Eisentraut) 先前只報道客戶端地址。 * 添加 [`pg_stat_xact_*`](#calibre_link-1440) 統計函數和視圖(Joel Jacobson) 這些更像數據庫端統計計算視圖, 但是反映了當前事務重要性。 * 添加數據庫級別最后重置時間以及后端寫統計視圖(Tomas Vondra) * 在[`pg_stat_*_tables`](#calibre_link-1440) 視圖中添加列顯示清理數和分析操作(Magnus Hagander) * 添加`buffers_backend_fsync`列到 [`pg_stat_bgwriter`](#calibre_link-1440) (Greg Smith) 這個新列計算后端同步緩沖區的次數。 #### E.19.3.1.6\. 服務器設置 * 提供 [`wal_buffers`](#calibre_link-1991) 的自動調整(Greg Smith) 缺省情況下,`wal_buffers`的值基于`shared_buffers`的值 被自動選擇。 * 為[`deadlock_timeout`](#calibre_link-1451), [`log_min_duration_statement`](#calibre_link-1450)和 [`log_autovacuum_min_duration`](#calibre_link-2304) 增加最大值(Peter Eisentraut) 這些參數的最大值先前只有35分鐘。 現在允許更大值。 ### E.19.3.2\. 備份與恢復 #### E.19.3.2.1\. 流復制和連續歸檔 * 允許[同步復制](#calibre_link-1439) (Simon Riggs, Fujii Masao) 這允許等待備用的主服務器在承認提交前寫事務信息到磁盤。 每次備用起著同步備份的作用。正如通過 [`synchronous_standby_names`](#calibre_link-1434) 設置控制。 在每個事務基礎上使用[`synchronous_commit`](#calibre_link-1216) 設置可以啟用或者禁用同步復制。 * 使用流復制網絡連接添加發送文件系統備份協議支持到備用服務器 (Magnus Hagander, Heikki Linnakangas) 當設置一個備用服務器時,這避免了手動傳送文件系統備份的需求。 * 添加`replication_timeout`設置(Fujii Masao, Heikki Linnakangas) 對于超過`replication_timeout`間隔空閑的復制連接將自動被終止。 先前,失敗連接通常不能被檢測直到TCP超時消逝, 在很多情況下這是不方便的。 * 添加命令行工具 [pg_basebackup](#calibre_link-471) 創建一個新的備用服務器或者數據庫備份(Magnus Hagander) * 為角色添加[復制許可](#calibre_link-10)(Magnus Hagander) 這是用于流復制的只讀權限。它允許非超級用戶 用于復制連接。 先前只有超級用戶可以啟動復制連接; 缺省情況下超級用戶具有此權限。 #### E.19.3.2.2\. 備份監控 * 增加系統視圖 [`pg_stat_replication`](#calibre_link-1440), 這顯示了WAL發送者進程活動 (Itagaki Takahiro, Simon Riggs) 報告所有連接備用服務器的狀態。 * 添加監控函數 [`pg_last_xact_replay_timestamp()`](#calibre_link-1049) (Fujii Masao) 這返回了主庫產生最近提交或者應用在備庫上的終止記錄的時間。 #### E.19.3.2.3\. 熱備份 * 添加配置參數 [`hot_standby_feedback`](#calibre_link-2318) 啟動備庫以推遲主庫舊行版本清理(Simon Riggs) 這有助于避免備庫上取消長時間運行查詢。 * 添加[`pg_stat_database_conflicts`](#calibre_link-1440) 系統視圖以顯示取消的查詢和原因(Magnus Hagander) 因為刪除的表空間,鎖超時,舊快照,保留區以及死鎖,可以發生取消。 * 添加`conflicts`計算到 [`pg_stat_database`](#calibre_link-1440) (Magnus Hagander) 發生在數據庫中的沖突數。 * 為[`max_standby_archive_delay`](#calibre_link-1686)和 [`max_standby_streaming_delay`](#calibre_link-1687) 增加最大值。 每個參數的最大值以前只有35分鐘。現在允許更大的值。 * 添加 [`ERRCODE_T_R_DATABASE_DROPPED`](#calibre_link-1092) 錯誤代碼以報告恢復沖突,由于已刪除數據庫(Tatsuo Ishii) 這對于連接池軟件是有用的。 #### E.19.3.2.4\. 恢復控制 * 添加函數以控制流復制重播(Simon Riggs) 新函數是 [`pg_xlog_replay_pause()`](#calibre_link-1693), [`pg_xlog_replay_resume()`](#calibre_link-1693), 并且狀態函數是 [`pg_is_xlog_replay_paused()`](#calibre_link-1693) * 添加`recovery.conf`設置 [`pause_at_recovery_target`](#calibre_link-2319) 在目標位置暫停恢復(Simon Riggs) 這允許需要恢復服務器檢查恢復點是否是所需的。 * 使用 [`pg_create_restore_point()`](#calibre_link-1642) 添加創建命名恢復點的能力(Jaime Casanova) 這些命名恢復點被聲明為使用新的 `recovery.conf`設置 [`recovery_target_name`](#calibre_link-1691) 的恢復目標。 * 允許備份恢復自動切換到新的時間線(Heikki Linnakangas) 目前備用服務器為周期性新的時間線掃描歸檔目錄。 * 添加[`restart_after_crash`](#calibre_link-2320) 設置,在后臺崩潰后禁用自動服務器重啟(Robert Haas) 這允許外部集群管理軟件控制數據庫服務器是否重新啟動。 * 允許 [`recovery.conf`](#calibre_link-1283) 使用和`postgresql.conf`相同的引用操作(Dimitri Fontaine) 以前所有值必須被引用。 ### E.19.3.3\. 查詢 * 添加真的 [可串行化隔離級別](#calibre_link-727) (Kevin Grittner, Dan Ports) 先前,要求串行化隔離保證了單獨MVCC快照可以用于整個事務, 這允許某些記錄異常。 舊的快照隔離級別通過請求 [`REPEATABLE READ`](#calibre_link-1160) 隔離級別可用。 * 允許[`WITH`](#calibre_link-515)子句中 數據修改命令(`INSERT`/`UPDATE`/`DELETE`) (Marko Tiikkaja, Hitoshi Harada) 這些命令可以使用`RETURNING`傳遞數據到所包含查詢。 * 允許[`WITH`](#calibre_link-515)子句被附屬于 `INSERT`,`UPDATE`, `DELETE`語句(Marko Tiikkaja, Hitoshi Harada) * 當在`GROUP BY`子句中指定主鍵時, 允許查詢目標列中的 非[`GROUP BY`](#calibre_link-1814)列(Peter Eisentraut) SQL標準允許該操作,由于該主鍵,結果是明確的。 * 允許[`UNION`/`INTERSECT`/`EXCEPT`](#calibre_link-486) 子句中關鍵字`DISTINCT`的使用(Tom Lane) `DISTINCT`是缺省操作,因此該關鍵字的使用是多余的, 但是SQL標準允許它。 * 修復普通規則查詢以使用和`EXPLAIN ANALYZE`相同快照操作(Marko Tiikkaja) 先前`EXPLAIN ANALYZE`使用涉及規則的查詢略微不同的快照時間。 `EXPLAIN ANALYZE`操作被認為更合乎邏輯。 #### E.19.3.3.1\. 字符串 * 添加每列 [collation](#calibre_link-667)支持 (Peter Eisentraut, Tom Lane) 以前在數據庫創建中選擇排序規則(文本字符串排序)。 排序規則可以設置每列,域,索引,或者表達式, 通過SQL標準`COLLATE`子句。 ### E.19.3.4\. 對象操作 * 添加[extensions](#calibre_link-840), 這簡化了附加PostgreSQL的包裝(Dimitri Fontaine, Tom Lane) 通過新的 [`CREATE`](#calibre_link-572)/[`ALTER`](#calibre_link-573)/[`DROP EXTENSION`](#calibre_link-46)命令 控制擴展。 這取代了分組對象的點對點方法被添加到PostgreSQL安裝中。 * 添加支持[外表](#calibre_link-0) (Shigeru Hanada, Robert Haas, Jan Urbanski, Heikki Linnakangas) 這允許存儲在數據庫外的數據像本地PostgreSQL存儲數據一樣使用。 然而,外表目前只讀。 * 允許新值通過[`ALTER TYPE`](#calibre_link-649)被 添加到現有枚舉類型中(Andrew Dunstan) * 添加[`ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE`](#calibre_link-649) (Peter Eisentraut) 這允許復合類型的修改。 #### E.19.3.4.1\. `ALTER`對象 * 在分類表上添加`RESTRICT`/`CASCADE`到 [`ALTER TYPE`](#calibre_link-649)操作(Peter Eisentraut) 這控制 `ADD`/`DROP`/`ALTER`/`RENAME ATTRIBUTE` 級聯操作。 * 支持`ALTER TABLE` `_name_` {OF | NOT OF} `_type_`(Noah Misch) 這個語法允許單獨表成為分類表,或者分類表成為單獨的。 * 在`ALTER ... SET SCHEMA`命令中添加支持多個對象類型(Dimitri Fontaine) 該命令現在支持轉換,算子,算子類, 算子族,文本搜索配置,文本搜索詞典,文本 搜索分析器,以及文本搜索模板。 #### E.19.3.4.2\. [`CREATE/ALTER TABLE`](#calibre_link-7) * 添加`ALTER TABLE ... ADD UNIQUE/PRIMARY KEY USING INDEX` (Gurjeet Singh) 這允許使用現有唯一索引包含 同時創建的唯一索引定義主鍵或者唯一約束。 * 允許`ALTER TABLE`添加沒有驗證的外鍵(Simon Riggs) 新選項稱為`NOT VALID`。 約束的狀態可以隨后被修改為`VALIDATED`并且 執行驗證檢查。同時這些允許你添加對讀寫操作影響最小的外鍵。 * 允許 [`ALTER TABLE... SET DATA TYPE`](#calibre_link-88)避免 在合適情況中的表重寫(Noah Misch, Robert Haas) 比如,轉換`varchar`列使得`text`不再需要表重寫。 然而,增加`varchar`列上長度限制仍然需要表重寫。 * 添加[`CREATE TABLE IF NOT EXISTS`](#calibre_link-7) 語法(Robert Haas) 如果該表已經存在,那么允許沒有導致錯誤的表創建。 * 當兩個后端嘗試添加繼承孩子到同一時間的同一表時, 修復可能"元組同時更新"錯誤(Robert Haas) [`ALTER TABLE`](#calibre_link-88) 需要采取更強鎖定父表,這樣該會話不能試圖同時更新它。 #### E.19.3.4.3\. 對象權限 * 添加[`SECURITY LABEL`](#calibre_link-759) 命令(KaiGai Kohei) 這允許安全標簽分配給對象。 ### E.19.3.5\. 實用操作 * 添加事務級別[咨詢鎖](#calibre_link-1164)(Marko Tiikkaja) 這與現有會話級別咨詢鎖類似, 但是在事務結束時自動釋放這種鎖。 * 使得[`TRUNCATE ... RESTART IDENTITY`](#calibre_link-89) 相互作用的重啟序列(Steve Singer) 如果在提交事務活動和提交完成之間發生后端崩潰, 那么該計數器可能已經不同步。 #### E.19.3.5.1\. [`COPY`](#calibre_link-777) * 添加`ENCODING`選項到 [`COPY TO/FROM`](#calibre_link-777) (Hitoshi Harada, Itagaki Takahiro) 這允許分別從客戶端編碼指定`COPY`文件編碼。 * 添加雙向[`COPY`](#calibre_link-777) 協議支持(Fujii Masao) 當前通過流復制被使用。 #### E.19.3.5.2\. [`EXPLAIN`](#calibre_link-575) * 使得`EXPLAIN VERBOSE`在`FunctionScan`節點中 顯示函數調用表達式(Tom Lane) #### E.19.3.5.3\. [`VACUUM`](#calibre_link-748) * 添加額外詳情到 [`VACUUM FULL VERBOSE`](#calibre_link-748)和 [`CLUSTER VERBOSE`](#calibre_link-71) 的輸出中(Itagaki Takahiro) 新信息包含活的和死的元組數, 以及是否`CLUSTER`使用索引重新創建。 * 如果它不能獲得表鎖, 那么阻止[autovacuum](#calibre_link-77)等待(Robert Haas) 它將嘗試隨后清理該表。 #### E.19.3.5.4\. [`CLUSTER`](#calibre_link-71) * 當它似乎比較廉價時,允許`CLUSTER`排序表而不是 掃描索引(Leonardo Francalanci) #### E.19.3.5.5\. 索引 * 添加最近鄰(算子排序)搜索到 [GiST索引](#calibre_link-1003) (Teodor Sigaev, Tom Lane) 這允許GiST索引迅速返回帶有`LIMIT`的查詢中的 `_N_`最近值。比如 ``` SELECT * FROM places ORDER BY location &lt;-&gt; point '(101,456)' LIMIT 10; ``` 找到離給定目標點最近的十個位置。 * 允許[GIN索引](#calibre_link-1006)索引無效和空值(Tom Lane) 這允許全GIN索引掃描, 并且修復GIN掃描可能失敗的情況。 * 允許[GIN索引](#calibre_link-1006) 更好識別重復搜索項(Tom Lane) 這降低了索引掃描成本, 尤其是在避免不必要全掃描索引的情況下。 * 修復[GiST索引](#calibre_link-1003)充分 碰撞安全(Heikki Linnakangas) 先前存在需要`REINDEX`的罕見情況(你可能被告知)。 ### E.19.3.6\. 數據類型 * 允許`numeric`在一般情況下使用更緊湊,兩字節標題。 以前所有`numeric`值有四字節標題, 這種變化節省磁盤存儲。 * 添加通過`money`劃分`money`的支持(Andy Balholm) * 允許類型`void`上的二進制I/O(Radoslaw Smogura) * 提高幾何學操作符的斜邊計算(Paul Matthews) 這避免了不必要的溢出,也可能更精準。 * 支持哈希數組值(Tom Lane) 這提供了額外查詢優化可能性。 * 不要將復合類型看作可分類的除非所有列類型是可分類的(Tom Lane) 這避免了可能的運行時"不能識別比較函數"錯誤, 如果可能實現沒有排序的查詢。 同時,`ANALYZE`不會嘗試為該復合類型列使用不恰當的統計收集方法。 #### E.19.3.6.1\. Casting * 添加支持`money`和`numeric`之間的轉換(Andy Balholm) * 添加從`int4`和`int8`到`money`的轉換(Joey Adams) * 如果它是一個分類表, 那么允許轉換表的行類型到表的父類型(Peter Eisentraut) 這與允許轉換行類型到父表行類型的現有功能類似。 #### E.19.3.6.2\. [XML](#calibre_link-1459) * 添加XML函數 [`XMLEXISTS`](#calibre_link-1971)和 [`xpath_exists()`](#calibre_link-1971) 函數(Mike Fowler) 這些用于XPath匹配。 * 添加XML函數 [`xml_is_well_formed()`](#calibre_link-1975), [`xml_is_well_formed_document()`](#calibre_link-1975), [`xml_is_well_formed_content()`](#calibre_link-1975) (Mike Fowler) 這些檢查輸入是否是恰當形成的XML。 它們提供了以前在棄用的`contrib/xml2`模塊中可用的功能。 ### E.19.3.7\. 函數 * 添加函數 [`format(text, ...)`](#calibre_link-2321), 這類似于C的`printf()` (Pavel Stehule, Robert Haas) 它目前支持字符串,SQL文本以及SQL標識符格式。 * 添加字符串函數 [`concat()`](#calibre_link-2069), [`concat_ws()`](#calibre_link-2069), [`left()`](#calibre_link-2069), [`right()`](#calibre_link-2069), 以及[`reverse()`](#calibre_link-2069) (Pavel Stehule) 這改善了與其他數據庫產品的兼容性。 * 添加函數 [`pg_read_binary_file()`](#calibre_link-1937) 以讀取二進制文件(Dimitri Fontaine, Itagaki Takahiro) * 添加函數 [`pg_read_file()`](#calibre_link-1937) 的一個參數版本以讀取整個文件(Dimitri Fontaine, Itagaki Takahiro) * 為空值處理控制添加 [`array_to_string()`](#calibre_link-2233) 和[`string_to_array()`](#calibre_link-2233) 的三個參數形式(Pavel Stehule) #### E.19.3.7.1\. 對象信息函數 * 添加 [`pg_describe_object()`](#calibre_link-2243) 函數(Alvaro Herrera) 該函數用于獲得人類可讀字符串描述對象,基于 [`pg_class`](#calibre_link-578)OID, 對象OID以及子對象OID。它可以有助于解釋 [`pg_depend`](#calibre_link-680) 的內容。 * 更新內置操作符注釋和潛在函數(Tom Lane) 打算通過相關算子使用的函數同樣被注釋。 * 添加函數 [`quote_all_identifiers`](#calibre_link-2322) 強迫`EXPLAIN`中以及系統目錄函數像 [`pg_get_viewdef()`](#calibre_link-2243) 中所有標識符引用。 嘗試輸出模式到工具和伴隨不同引用規則更加容易的其他數據庫。 * 添加列到 [`information_schema.sequences`](#calibre_link-719) 系統表(Peter Eisentraut) 先前,盡管視圖存在,未實現關于序列參數的列。 * 在[`has_table_privilege()`](#calibre_link-1074) 中以及相關函數中允許`public`作為偽角色名字(Alvaro Herrera) 這允許檢查public權限。 #### E.19.3.7.2\. 函數和觸發器創建 * 支持視圖上 [`INSTEAD OF`](#calibre_link-459) 觸發器(Dean Rasheed) 該功能可以充分實現可更新視圖。 ### E.19.3.8\. 服務器端語言 #### E.19.3.8.1\. [PL/pgSQL](#calibre_link-857)服務器端語言 * 添加[`FOREACH IN ARRAY`](#calibre_link-1677) 到PL/pgSQL(Pavel Stehule) 這比遍歷數組值元素的先前方法更有效并且可讀性更高。 * 允許可以從同一地方捕獲 `RAISE ERROR`的同一位置 捕獲不帶參數的`RAISE`(Piyush Newe) 前面編碼從包含活躍異常處理程序塊中拋出錯誤。 新操作與其他DBMS產品更加一致。 #### E.19.3.8.2\. [PL/Perl](#calibre_link-781)服務器端語言 * 允許通用記錄參數到PL/Perl函數(Andrew Dunstan) 可以聲明PL/Perl函數接受類型`record`。 該操作與任何命名復合類型是一樣的。 * 轉換PL/Perl數組參數到Perl數組(Alexey Klyukin,Alex Hunsaker) 字符串表示仍然可用。 * 轉換PL/Perl復合類型參數到Perl哈希(Alexey Klyukin, Alex Hunsaker) 字符串表示仍然可用。 #### E.19.3.8.3\. [PL/Python](#calibre_link-882)服務器端語言 * 添加表函數支持PL/Python(Jan Urbanski) PL/Python現在可以返回多個`OUT`參數和記錄集。 * 添加驗證器給PL/Python (Jan Urbanski) 這允許PL/Python函數在函數創建時間是語法檢查的。 * 允許PL/Python中SQL查詢異常(Jan Urbanski) 這允許從PL/Python異常塊中訪問SQL生成異常錯誤代碼。 * 添加明確子事務到PL/Python (Jan Urbanski) * 為引用字符串添加PL/Python函數(Jan Urbanski) 這些函數是 [`plpy.quote_ident`](#calibre_link-891), [`plpy.quote_literal`](#calibre_link-891), 和[`plpy.quote_nullable`](#calibre_link-891)。 * 添加跟蹤信息到PL/Python錯誤(Jan Urbanski) * 從帶有`PLy_elog`的迭代器中報告PL/Python錯誤(Jan Urbanski) * 修復Python 3異常處理(Jan Urbanski) 異常類以前在Python 3下`plpy`中不可用。 ### E.19.3.9\. 客戶端應用 * 標記 [createlang](#calibre_link-47) 和[droplang](#calibre_link-37) 為廢棄的現在它們只是調用擴展命令(Tom Lane) #### E.19.3.9.1\. [psql](#calibre_link-23) * 增加psql命令`\conninfo` 以顯示當前連接信息(David Christensen) * 添加psql命令`\sf`以顯示函數的定義(Pavel Stehule) * 添加psql命令`\dL`羅列語言(Fernando Ike) * 添加`S` ("system")選項到psql的 `\dn` (羅列模式)命令(Tom Lane) 沒有`S`的`\dn`現在抑制系統模式。 * 允許 psql的`\e`和`\ef`命令 接受用于定位編輯器中游標的行號(Pavel Stehule) 按照`PSQL_EDITOR_LINENUMBER_ARG`環境變量被傳遞給編輯器。 * psql設置來自缺省操作系統區域的客戶端編碼(Heikki Linnakangas) 如果沒有設置`PGCLIENTENCODING`環境變量, 那么只會發生。 * 嘗試`\d`區分唯一索引和唯一約束(Josh Kupershmidt) * 當討論9.0或者之后服務器時, 嘗試`\dt+`報告`pg_table_size` 而不是`pg_relation_size`(Bernd Helmle) 這是表大小更加有效的度量, 但是注意這與同一顯示中先前報告的是不一樣的。 * 額外的tab實現支持 (Itagaki Takahiro, Pavel Stehule, Andrey Popp, Christoph Berg, David Fetter, Josh Kupershmidt) #### E.19.3.9.2\. [pg_dump](#calibre_link-437) * 添加[pg_dump](#calibre_link-437) 和[pg_dumpall](#calibre_link-439) 選項`--quote-all-identifiers`強制引用所有標識符(Robert Haas) * 添加`directory`格式給pg_dump (Joachim Wieland, Heikki Linnakangas) 內部類似于`tar`pg_dump格式。 #### E.19.3.9.3\. [pg_ctl](#calibre_link-544) * 修復pg_ctl, 所以它不再錯誤地報告服務器沒有運行(Bruce Momjian) 如果服務器正在運行但是pg_ctl無法驗證, 先前這可能發生。 * 提高pg_ctl啟動的"wait" (`-w`)選項(Bruce Momjian, Tom Lane) 等待模式現在更加魯棒,它通過非缺省postmaster port號,非缺省 Unix域套接字位置,權限問題,或者舊的postmaster鎖文件不會被混亂。 * 添加`promote`選項到pg_ctl用來切換 備用服務器到主庫(Fujii Masao) ### E.19.3.10\. 開發工具 #### E.19.3.10.1\. [libpq](#calibre_link-496) * 添加libpq連接選項 [`client_encoding`](#calibre_link-2106) 這就像`PGCLIENTENCODING`環境變量(Heikki Linnakangas) 值`auto`設置基于操作系統區域的客戶端編碼。 * 添加 [`PQlibVersion()`](#calibre_link-2323) 函數,它返回libpq庫版本(Magnus Hagander) libpq已有`PQserverVersion()`返回服務器版本。 * 當通過伴隨新的 [`requirepeer`](#calibre_link-2102) 連接選項的Unix域套接字連接時, 允許libpq使用客戶端檢查服務器進程用戶名。(Peter Eisentraut) 當通過Unix域套接字連接時,PostgreSQL允許服務器檢查 客戶端用戶名。 * 添加[`PQping()`](#calibre_link-2324) 和[`PQpingParams()`](#calibre_link-2325) 到libpq (Bruce Momjian, Tom Lane) 這些函數允許不嘗試打開新會話的服務器狀態檢測。 #### E.19.3.10.2\. [ECPG](#calibre_link-620) * 允許ECPG接受`WHERE CURRENT OF`子句 中動態游標名稱(Zoltan Boszormenyi) * 嘗試ecpglib寫帶有15位精度而不是以前的14位的 `double`值(Akira Kurosawa) ### E.19.3.11\. 編譯選項 * 使用可以接受它的HP-UX C編譯器的`+Olibmerrno`編譯標記(Ibrar Ahmed) 這避免了最新HP平臺上math庫調用的可能的不當操作。 #### E.19.3.11.1\. Makefiles * 改善并行make支持(Peter Eisentraut) 允許更快編譯。同時,`make -k`更加一致運行。 * 需要GNU [make](#calibre_link-1220) 3.80或者更新版本(Peter Eisentraut) 由于并行make改進這是必須的。 * 添加`make maintainer-check`目標(Peter Eisentraut) 這個目標執行各種不適用于編譯或者回歸測試的源代碼檢查。 目前,duplicate_oids,SGML語法和tab檢查,NLS語法檢查。 * 支持`contrib`中的`make check`(Peter Eisentraut) 以前只有`make installcheck`運行,但是現在 支持臨時安裝中測試。 頂級`make check-world`包含這種方式測試`contrib`。 #### E.19.3.11.2\. Windows * 在Windows上,允許[pg_ctl](#calibre_link-544) 注冊服務為自動啟動或者是按需啟動(Quan Zongliang) * 添加Windows上支持收集 [崩潰轉儲](#calibre_link-2326) (Craig Ringer, Magnus Hagander) 通過非調試Windows二進制文件產生minidumps, 并且通過標準調試工具進行分析。 * 啟動MinGW64編譯器編譯(Andrew Dunstan) 這允許編譯64位Windows二進制文件即使在非Windows平臺通過交叉編譯。 ### E.19.3.12\. 源代碼 * 修訂GUC變量分配鉤的API(Tom Lane) 以往分配鉤函數劃分檢查鉤和分配鉤, 前者可以失敗但是后者不能。 這一變化將影響定義自定義GUC參數的附加模塊。 * 添加源代碼鎖存器以支持等待事件(Heikki Linnakangas) * 集中數據修改權限檢查邏輯(KaiGai Kohei) * 為了保持一致性添加缺失的`get_`_object_`_oid()`函數(Robert Haas) * 為了[compiling add-on modules](#calibre_link-835) 通過刪除沖突關鍵字提高使用C++編譯器的能力(Tom Lane) * 添加支持DragonFly BSD (Rumko) * 出于后端使用暴露`quote_literal_cstr()`(Robert Haas) * 在缺省編碼中運行[回歸測試](#calibre_link-1090)(Peter Eisentraut) 回歸測試以前總是運行`SQL_ASCII`編碼。 * 添加src/tools/git_changelog替換 cvs2cl和pgcvslog (Robert Haas, Tom Lane) * 添加git-external-diff腳本到 `src/tools` (Bruce Momjian) 這用于產生來自git的語境差異。 * 提高支持編譯Clang (Peter Eisentraut) #### E.19.3.12.1\. 服務器鉤 * 添加源代碼鉤檢查權限(Robert Haas,Stephen Frost) * 出于使用安全框架添加后對象創建函數鉤(KaiGai Kohei) * 添加客戶端認證鉤(KaiGai Kohei) ### E.19.3.13\. Contrib * 修改`contrib`模塊和程序語言通過新的 [擴展](#calibre_link-840) 機制安裝(Tom Lane, Dimitri Fontaine) * 添加[`contrib/file_fdw`](#calibre_link-380) 外數據包(Shigeru Hanada) 外表使用這個外數據包可以以類似于`COPY`的方式讀取平文件。 * 添加最近鄰搜索支持 [`contrib/pg_trgm`](#calibre_link-396)和 [`contrib/btree_gist`](#calibre_link-372) (Teodor Sigaev) * 添加[`contrib/btree_gist`](#calibre_link-372) 支持不平等搜索(Jeff Davis) * 修復 [`contrib/fuzzystrmatch`](#calibre_link-381)的 `levenshtein()`函數以處理多字節字符(Alexander Korotkov) * 添加`ssl_cipher()` and `ssl_version()` 函數到[`contrib/sslinfo`](#calibre_link-400) (Robert Haas) * 修復 [`contrib/intarray`](#calibre_link-384) 和[`contrib/hstore`](#calibre_link-382) 提供與索引空數組一致結果(Tom Lane) 先前使用索引的空數組查詢可能返回使用順序掃描的不同結果。 * 允許[`contrib/intarray`](#calibre_link-384) 恰當工作在多維數組上(Tom Lane) * 在[`contrib/intarray`](#calibre_link-384)上, 避免在沒有空值實際存在的情況下抱怨空值存在的錯誤(Tom Lane) * 在[`contrib/intarray`](#calibre_link-384)中, 修復關于空數組包含操作符操作(Tom Lane) 空數組現在正確地認為被包含在任何其他數組中。 * 刪除通過`xslt_process()`處理的 `_parameter_`=`_value_`對數上 [`contrib/xml2`](#calibre_link-407)的任意限制(Pavel Stehule) 以前限制是10。 * 在[`contrib/pageinspect`](#calibre_link-388)中, 修復heap_page_item以返回32位值的infomask(Alvaro Herrera) 這避免返回負值,這是混亂的。 該潛在值是16位無符號整數。 #### E.19.3.13.1\. 安全 * 添加[`contrib/sepgsql`](#calibre_link-398) 連接與SELinux的權限檢查(KaiGai Kohei) 這使用新的 [`SECURITY LABEL`](#calibre_link-759) 功能。 * 添加contrib模塊 [`auth_delay`](#calibre_link-369) (KaiGai Kohei) 在返回認證失敗之前導致服務器暫停; 設計它使得蠻力密碼攻擊更加困難。 * 添加[`dummy_seclabel`](#calibre_link-378) contrib模塊(KaiGai Kohei) 這用于允許回歸測試。 #### E.19.3.13.2\. 性能 * 添加支持`LIKE` and `ILIKE`索引搜索到 [`contrib/pg_trgm`](#calibre_link-396) (Alexander Korotkov) * 添加`levenshtein_less_equal()`函數到 [`contrib/fuzzystrmatch`](#calibre_link-381), 這是對小距離的優化(Alexander Korotkov) * 提高 [`contrib/seg`](#calibre_link-397)上索引查找性能 (Alexander Korotkov) * 提高許多關系數據庫 [pg_upgrade](#calibre_link-638) 的性能(Bruce Momjian) * 添加標記到 [`contrib/pgbench`](#calibre_link-629) 以報告每個語句延遲(Florian Pflug) #### E.19.3.13.3\. Fsync測試 * 移動`src/tools/test_fsync`到 [`contrib/pg_test_fsync`](#calibre_link-1619) (Bruce Momjian, Tom Lane) * 添加`O_DIRECT`支持到 [`contrib/pg_test_fsync`](#calibre_link-1619) (Bruce Momjian) 這匹配通過 [`wal_sync_method`](#calibre_link-1432) 的`O_DIRECT`的使用。 * 添加新的測試給 [`contrib/pg_test_fsync`](#calibre_link-1619) (Bruce Momjian) ### E.19.3.14\. 文檔 * 廣泛的[ECPG](#calibre_link-620) 文檔改進(Satoshi Nagayasu) * 廣泛的校對和文檔改進 (Thom Brown, Josh Kupershmidt, Susanne Ebrecht) * 為[`exit_on_error`](#calibre_link-2327) 添加文檔(Robert Haas) 這個參數導致會話有任何錯誤就退出。 * 為[`pg_options_to_table()`](#calibre_link-2243) 添加文檔(Josh Berkus) 這個函數顯示了可讀形式中表存儲選項。 * 文檔可以訪問使用 [`(compositeval).*`](#calibre_link-1888) 語法的所有復合類型字段(Peter Eisentraut) * 文檔[`translate()`](#calibre_link-2069) 刪除沒有相應的`to`字符的`from`中字符(Josh Kupershmidt) * 為`CREATE CONSTRAINT TRIGGER`和 [`CREATE TRIGGER`](#calibre_link-459) 合并文檔(Alvaro Herrera) * 集中[權限](#calibre_link-1319)和 [升級](#calibre_link-633)文檔(Bruce Momjian) * 為Solaris 10添加[內核調整記錄](#calibre_link-1371) (Josh Berkus) 先前只有Solaris 9 內核調整被記錄。 * 一致地處理`HISTORY`文件中的非ASCII字符(Peter Eisentraut) 當`HISTORY`文件是英語, 我們必須處理參與者名字中非ASCII字母。 這些目前是音譯的, 因此它們沒有關于字符集假設相當易讀。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看