<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # E.53\. 發布8.4 > **發布日期:** 2009-07-01 ## E.53.1\. 概要 經過多年研發后,PostgreSQL已經在許多領域特性比較完整。 該發布顯示一個針對性方法來添加特性(比如,認證,監測,空間重利用), 并且添加在以后SQL標準中定義的能力。增強的主要方面是: * 窗口函數 * 通用表表達式和遞歸查詢 * 函數缺省和可變參數 * 并行恢復 * 列權限 * 每個數據庫本地設置 * 改進的哈希索引 * 改進`EXISTS`和`NOT EXISTS`查詢連接性能 * 容易使用熱備份 * 空閑空間映射的自動大小 * 可見映射(大大降低了緩慢變化表的清理開銷) * 版本感知psql(舊服務器之前使用反斜杠命令) * 支持用戶認證的SSL證書 * 每個函數運行時統計 * psql中函數簡單編輯 * 新的contrib模塊:pg_stat_statements, auto_explain, citext, btree_gin 在下面章節中將詳細解釋以上所列項。 ## E.53.2\. 遷移到版本8.4 對于那些希望從任何以前發布中遷移數據是需要使用pg_dump備份/恢復。 觀察下面的不兼容: ### E.53.2.1\. 普遍的 * 缺省使用64位整數日期時間(Neil Conway) 以前通過configure的`--enable-integer-datetimes`選項進行選擇。為保留舊操作, 與`--disable-integer-datetimes`一起編譯。 * 刪除ipcclean實用命令(Bruce) 該功能僅僅工作于幾個平臺上。用戶應該使用他們的操作系統工具。 ### E.53.2.2\. 服務器設置 * 為`log_min_messages`更改缺省設置為`warning`(以前為`notice`) 以減少日志文件數量(Tom) * 為`max_prepared_transactions`改變缺省設置為零(以前為5)(Tom) * 使得`debug_print_parse`, `debug_print_rewritten`, 和`debug_print_plan`在`LOG`消息級別輸出,而不是像從前的`DEBUG1`(Tom) * `debug_pretty_print`缺省為`on` (Tom) * 刪除`explain_pretty_print`參數(不再需要的)(Tom) * 通過超級用戶使得`log_temp_files`可定位,像其它日志選項(Simon Riggs) * 當沒有`%`逃逸出現在`log_filename`中的時候,刪除epoch時間戳的自動追加(Robert Haas) 該變化是因為有些用戶想要一個已修復的日志文件名,用于外部日志輪換工具。 * 從`recovery.conf`刪除中刪除`log_restartpoints`; 代替使用`log_checkpoints` (Simon) * 刪除`krb_realm`和`krb_server_hostname`; 而是在`pg_hba.conf`中設置(Magnus) * 在[`pg_hba.conf`](#calibre_link-52)中有顯著變化,如下所述。 ### E.53.2.3\. 查詢 * 改變`TRUNCATE`和`LOCK`以適用于指定表的子表(Peter) 這些命令現在接受避免處理子表的`ONLY`選項;如果需要舊操作,必須使用該選項。 * `SELECT DISTINCT`和`UNION`/`INTERSECT`/`EXCEPT` 不再總是產生有序輸出(Tom) 之前,這些類型的查詢總是通過排序/唯一的處理方式(即排序然后刪除相鄰重復)去除重復行。 現在,他們可以通過哈希來實現,這不會生成有序輸出。如果應用程序依賴于按照排序順序的輸出, ??????那么推薦解決方法是添加一個`ORDER BY`子句。作為一個短期解決方法, 之前的操作可以通過禁用`enable_hashagg`被恢復,但是這是一個性能昂貴的修復。 `SELECT DISTINCT ON`從不使用散列,然而,因此,其操作不改變。 * 強迫子表繼承父表`CHECK`約束(Alex Hunsaker, Nikhil Sontakke, Tom) 以前可能從子表中刪除該約束,當掃描父表的時候,允許違背該約束的行可見。 這被認為是不一致的,也違背了SQL標準。 * 禁止負的`LIMIT`或者`OFFSET`值,而不是將它們視為零(Simon) * 禁止事務塊外的`LOCK TABLE`(Tom) 這樣的操作是無效的,因為該鎖將被立即釋放。 * 現在序列包含一個額外的`start_value`列(Zoltan Boszormenyi) 支持`ALTER SEQUENCE ... RESTART`。 ### E.53.2.4\. 函數和操作符 * 采用`numeric`零放到分數冪上返回`0`,而不是拋出錯誤, 并且采用`numeric`零放到零冪上返回`1`,而不是錯誤(Bruce) 這匹配長期的`float8`操作。 * 允許浮點值的一元負號產生負零(Tom) 修改后操作更加遵循IEEE-標準。 * 如果轉義字符是`LIKE`模式中的最后一個字符,拋出一個錯誤(即它沒有任何逃逸)(Tom) 此前,這樣的轉義字符被默默忽略掉,從而可能掩蓋應用程序邏輯錯誤。 * 刪除以前用于`LIKE`索引比較的`~=~` and `~&lt;&gt;~`操作符(Tom) 模式索引目前使用規則平等操作符。 * `xpath()`現在將參數傳遞給libxml沒有任何變化(Andrew) 這意味著XML參數必須是一個良好的XML文檔。先前編碼試圖允許XML片段, 但它并沒有很好地工作。 * 讓`xmlelement()`格式屬性值就好像目錄值(Peter) 此前,屬性值是按照正常的SQL輸出操作被格式化,有時不符合XML規則。 * 為libxml-使用函數重寫內存管理(Tom) 這種變化應該避免在PL/Perl中使用libxml和其他附加代碼的一些兼容性問題。 * 為哈希函數采取更快速算法(Kenneth Marshall,依據Bob Jenkins的工作) 許多內置哈希函數現在在小端和大端平臺上提供不同的結果。 #### E.53.2.4.1\. 時間函數和操作符 * `DateStyle`不再控制`interval`輸出格式; 反而有一個新變量`IntervalStyle`(Ron Mayer) * 提高`timestamp`和`interval`輸出中小數秒處理的一致性(Ron Mayer) 這可能導致比以前顯示不同數量的小數位,或者四舍五入而不是截斷。 * 使得`to_char()`的本地的月份/日期名字依賴于`LC_TIME`, 而不是`LC_MESSAGES` (Euler Taveira de Oliveira) * 導致`to_date()`和`to_timestamp()`更加一致報告無效輸入錯誤(Brendan Jurd) 以前的版本中會常常忽略或默默地誤讀不匹配格式字符串的輸入。 這種情況下將導致錯誤。 * 為了子午線(`AM`/`PM`)和紀元 (`BC`/`AD`)格式名稱修復`to_timestamp()`而不需要大寫/小寫匹配(Brendan Jurd) 比如,輸入值`ad`匹配格式字符串`AD`。 ## E.53.3\. 變化 下面你會發現在PostgreSQL 8.4和之前主要發布之間變化的詳細說明。 ### E.53.3.1\. 性能 * 完善優化統計計算(Jan Urbanski, Tom) 尤其是,估計全文搜索操作符被大幅度提高。 * 允許`SELECT DISTINCT`和`UNION`/`INTERSECT`/`EXCEPT`可以使用哈希(Tom) 這意味著這些類型的查詢不再自動生成有序輸出。 * 創建半連接和反連接明確概念(Tom) 這項工作正規化`IN(SELECT ...)`子句之前的點對點處理, 并延伸到`EXISTS`和`NOT EXISTS`子句中。 它可能導致`EXISTS`和`NOT EXISTS`查詢更好地規劃。 一般情況下,邏輯上相同的`IN`和`EXISTS`子句有類似性能, 而此前的`IN`獲勝。 * 提高外部鏈接下子選擇優化(Tom) 以前,一個子選擇或視圖不能被很好的優化, 如果它出現在外連接可空端并且在結果列中包含非嚴格表達式(比如,常量)。 * 通過使用Boyer-Moore-Horspool搜索提高`text_position()`和相關函數的性能(David Rowley) 這對長期搜索模式特別有幫助。 * 當需要的時候,通過寫文件降低寫入統計收集文件I/O負載(Martin Pihlak) * 提高批量插入性能(Robert Haas, Simon) * 從`10`到`100`增加`default_statistics_target`缺省值(Greg Sabino Mullane,Tom) 最大值從`1000`增加到`10000`。 * 在涉及繼承或者`UNION ALL`的查詢中缺省執行`constraint_exclusion`檢查(Tom) 新的`constraint_exclusion`設置,`分區`被添加以指定該操作。 * 允許I/O預讀取位圖索引掃描(Greg Stark) 通過`effective_io_concurrency`控制預讀數量。 只有內核有`posix_fadvise()`支持時該功能可用。 * 內置`FROM`子句中簡單集合返回SQL函數(Richard Rowell) * 通過為連接密鑰值提供一種特殊情況來優化多批次哈希連接性能, 這種情況在外部關系中特別常見(Bryce Cutt, Ramon Lawrence) * 通過抑制"physical tlist"優化減少多批次哈希連接中臨時數據量 (Michael Henderson, Ramon Lawrence) * 避免`CREATE INDEX CONCURRENTLY`中等待空閑事務會話(Simon) * 改進共享緩存無效性能(Tom) ### E.53.3.2\. 服務器 #### E.53.3.2.1\. 設置 * 轉換許多`postgresql.conf`設置以枚舉值,使得`pg_settings` 可以顯示有效值(Magnus) * 添加`cursor_tuple_fraction`參數以控制規劃器假設被抓取的游標行(Robert Hell) * 允許`postgresql.conf`中自定義變量類下的下劃線(Tom) #### E.53.3.2.2\. 身份驗證和安全 * 刪除支持(不安全) `crypt`認證方法(Magnus) 這有效地淘汰了先前PostgreSQL7.2客戶端庫, 因為不再有他們可以使用的任何非明文口令方法。 * 支持`pg_ident.conf`中正則表達式(Magnus) * 允許無需重啟postmaster改變Kerberos/GSSAPI參數(Magnus) * 支持服務器證書文件中SSL證書鏈(Andrew Gierth) 包括完整證書鏈使客戶能夠驗證證書, 而不需要存在于本地存儲中的所有中間CA證書,這是商業CA的常見情況。 * 報告連接`MD5`認證和`db_user_namespace`啟動的相應錯誤信息(Bruce) #### E.53.3.2.3\. `pg_hba.conf` * 改變所有身份驗證選項使用`name=value`語法(Magnus) 這使得不兼容變化到`ldap`,`pam`和`ident`身份驗證方法。 所有使用這些方法的`pg_hba.conf`項需要使用新的格式被重寫。 * 刪除`ident sameuser`選項,如果沒有指定usermap,而不是使得該操作缺省(Magnus) * 允許為所有外部身份驗證方法的usermap參數(Magnus) 之前usermap只支持`ident`認證。 * 添加`clientcert`選項以控制客戶端證書請求(Magnus) 以前這是通過服務器的數據目錄中根證書文件被控制。 * 添加`cert`認證方法以允許_user_認證通過SSL證書(Magnus) 此前SSL證書只能驗證客戶端可以使用一個證書,而不是驗證用戶。 * 允許在`pg_hba.conf`中指定`krb5`, `gssapi`和`sspi` 字段和`krb5`主機設置(Magnus) 這些覆蓋了`postgresql.conf`中設置。 * 為`krb5`,`gssapi`和`sspi`方法添加`include_realm`參數(Magnus) 這允許來自不同領域的相同用戶名被認證為使用用戶映射的不同數據庫用戶。 * 當它被加載的時候,完整解析`pg_hba.conf`,以致于 可以立即報告錯誤(Magnus) 此前,文件中的大多數錯誤直到客戶端試圖連接時才會被檢測到,所以一個錯誤的文件可能導致系統 無法使用。隨著新的操作,如果在重載時檢測到錯誤,那么壞文件被拒絕,并且postmaster繼續使用其舊副本。 * 顯示`pg_hba.conf`中所有解析錯誤 而不是在第一個之后終止(Selena Deckelmann) * 支持Solaris上Unix域套接字上的`ident`認證(Garick Hamlin) #### E.53.3.2.4\. 連續歸檔 * 提供一個選項到`pg_start_backup()`以強制盡快完成的隱含檢查點(Tom) 缺省操作避免過多I/O消耗,但是如果沒有并發查詢活動,這是毫無意義的。 * 讓`pg_stop_backup()`等待修改的WAL文件被歸檔(Simon) 這保證備份在`pg_stop_backup()`完成時是有效的。 * 當啟用歸檔時,在關閉時交替最后WAL段以致于所有事務可以立即被歸檔(Guillaume Smet, Heikki) * 當連續歸檔基礎備份在進展中時,延遲"smart"關機(Laurenz Albe) * 如果請求"fast"關機,那么取消連續歸檔基礎備份(Laurenz Albe) * 允許`recovery.conf`布爾變量采取同一范圍字符串值作為`postgresql.conf`布爾值(Bruce) #### E.53.3.2.5\. 監控 * 當最后加載PostgreSQL配置文件的時候,添加`pg_conf_load_time()`以報告(George Gensure) * 添加`pg_terminate_backend()`以安全終止后臺(`SIGTERM`信號也如此)(Tom, Bruce) 雖然它一直可能`SIGTERM`單一后端, 這個以前被認為是不支持的; 并且測試的情況下發現了一些被修復的錯誤。 * 添加跟蹤用戶定義函數的調用計數以及運行時間能力(Martin Pihlak) 函數統計出現在新的系統視圖,`pg_stat_user_functions`中。 通過新的參數`track_functions`控制跟蹤。 * 在`pg_stat_activity`中通過新的`track_activity_query_size`參數 允許聲明最大查詢字符串大小(Thomas Lee) * 增大最大線長度發送到syslog,希望優化性能(Tom) * 添加只讀配置變量`segment_size`,`wal_block_size`和`wal_segment_size` (Bernd Helmle) * 當報告死鎖時,報告死鎖服務器日志中涉及的所有查詢文本(Itagaki Takahiro) * 添加`pg_stat_get_activity(pid)`函數以返回關于指定進程id的信息(Magnus) * 允許通過`stats_temp_directory`指定服務器的統計文件的位置(Magnus) 這允許統計文件被放置在RAM固有目錄中以減少I/O需求。 在啟動/關閉時,文件被拷貝到它的傳統位置(`$PGDATA/global/`)下, 所以重新啟動時被保留。 ### E.53.3.3\. 查詢 * 添加支持`WINDOW`函數(Hitoshi Harada) * 添加支持`WITH`子句(CTEs),包含`WITH RECURSIVE` (Yoshiyuki Asaba, Tatsuo Ishii, Tom) * 添加`TABLE`命令(Peter) `TABLE tablename`是`SELECT * FROM tablename`的一個SQL標準簡寫。 * 當聲明`SELECT` (或者`RETURNING`)列輸出標簽的時候,允許 `AS`為可選的(Hiroshi Saito) 該操作只要列標簽沒有任何PostgreSQL關鍵字,否則仍然需要`AS`。 * 支持在`SELECT`結果列表中設置返回函數, 即使對于通過tuplestore返回其結果的函數(Tom) 特別是,這意味著用PL/pgSQL和其它PL/pgSQL語言書寫的函數可以這樣被調用。 * 在聚集和分組查詢輸出中支持設置返回函數(Tom) * 允許`SELECT FOR UPDATE`/`SHARE`在繼承樹上進行操作(Tom) * 為SQL/MED添加基礎設施(Martin Pihlak, Peter) 然而沒有遠程或外部SQL/MED功能, 但這種變化提供了一個標準化的,面向未來系統, 用于管理類似模塊`dblink`和`plproxy`連接信息。 * 當引用的模式,函數,操作符或者操作符類被修改的時候,使緩存計劃無效(Martin Pihlak, Tom) 這提高了系統對反應傳輸中DDL變化的能力。 * 允許復合類型比較以及匿名復合類型的數組(Tom) 這允許構造比如`row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])`。 在遞歸查詢中特別有用。 * 添加使用代碼點支持Unicode字符串文本和標識符規范, 比如`U&'d\0061t\+000061'`(Peter) * 拒絕字符串文本中`\000`和`COPY`數據(Tom) 之前,這被接受但是有終止字符串內容的影響。 * 提高解析器報告錯誤位置的能力(Tom) 為許多語義錯誤報道一個錯誤位置, 比如不匹配的數據類型,這在以前不可能被本地化。 #### E.53.3.3.1\. `TRUNCATE` * 支持語句級別`ON TRUNCATE`觸發器(Simon) * 為了`TRUNCATE TABLE`添加`RESTART`/`CONTINUE IDENTITY`選項(Zoltan Boszormenyi) 序列的起始值可以通過`ALTER SEQUENCE START WITH`被改變。 * 允許`TRUNCATE tab1, tab1`成功(Bruce) * 添加單獨`TRUNCATE`許可(Robert Haas) #### E.53.3.3.2\. `EXPLAIN` * 采用`EXPLAIN VERBOSE`顯示每個規劃節點的輸出列(Tom) 此前`EXPLAIN VERBOSE`輸出查詢規劃的內部表示。 (該操作通過`debug_print_plan`是可用的。) * 采用`EXPLAIN`標識子計劃以及單一標簽的初始計劃(Tom) * 為了`debug_print_plan`采用`EXPLAIN`(Tom) * 允許在`CREATE TABLE AS`上進行`EXPLAIN`(Peter) #### E.53.3.3.3\. `LIMIT`/`OFFSET` * 允許`LIMIT`和`OFFSET`中子選擇(Tom) * 為了`LIMIT`/`OFFSET`性能添加SQL標準語法(Peter) 也就是說,`OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS} ONLY`。 ### E.53.3.4\. 對象操作 * 添加列級權限支持(Stephen Frost, KaiGai Kohei) * 重構多目標`DROP`操作以減少`CASCADE`的需要(Alex Hunsaker) 比如,如果表`B`在表`A`上有依賴物,那么 命令`DROP TABLE A, B`不再需要`CASCADE`選項。 * 通過確保在開始刪除對象依賴之前采取鎖定,修復各種并發`DROP`命令問題(Tom) * 改善`DROP`命令中依賴性報告(Tom) * 添加`WITH [NO] DATA`子句給`CREATE TABLE AS`,按照SQL標準(Peter, Tom) * 添加支持用戶自定義I/O轉換模型(Heikki) * 允許`CREATE AGGREGATE`使用`internal`轉換數據類型(Tom) * 添加`LIKE`子句到`CREATE TYPE` (Tom) 這簡化了使用作為已存在類型同一內部表示形式的數據類型的創建。 * 允許類型類別指定以及用戶定義的基礎類型"首選"狀態(Tom) 這允許控制用戶定義類型的強制操作。 * 允許`CREATE OR REPLACE VIEW`添加列到視圖結尾(Robert Haas) #### E.53.3.4.1\. `ALTER` * 添加`ALTER TYPE RENAME` (Petr Jelinek) * 添加`ALTER SEQUENCE ... RESTART`(無參數)以重置序列到其初始值(Zoltan Boszormenyi) * 修改`ALTER TABLE`語法以允許表,索引,序列以及視圖合理組合(Tom) 這種變化允許下面新語法: * `ALTER SEQUENCE OWNER TO` * `ALTER VIEW ALTER COLUMN SET/DROP DEFAULT` * `ALTER VIEW OWNER TO` * `ALTER VIEW SET SCHEMA` 這里沒有實際的新功能, 但之前你不得不表明`ALTER TABLE`可以做這些事情,使其混淆。 * 添加支持語法`ALTER TABLE ... ALTER COLUMN... SET DATA TYPE` (Peter) 這是已經支持的功能性SQL標準語法。 * 采用`ALTER TABLE SET WITHOUT OIDS`重寫表以物理刪除`OID`值(Tom) 同時添加`ALTER TABLE SET WITH OIDS`重寫表添加`OID`。 #### E.53.3.4.2\. 數據庫操作 * 當未提交預備事務的時候,改善`CREATE`/`DROP`/`RENAME DATABASE`錯誤報告(Tom) * 每個數據庫設置采用`LC_COLLATE`和`LC_CTYPE`(Radek Strnad, Heikki) 整理類似編碼,總是配置每個數據庫。 * 完善檢查數據庫編碼,整理(`LC_COLLATE`), 以及字符類(`LC_CTYPE`)匹配(Heikki, Tom) 特別注意,當從`template0`拷貝的時候,一個新的數據庫編碼和語言環境設置被改變。 這避免了可能拷貝的數據不匹配該設置。 * 添加`ALTER DATABASE SET TABLESPACE`移動數據庫到一個新的表空間(Guillaume Lelarge, Bernd Helmle) ### E.53.3.5\. 實用操作 * 添加`VERBOSE`選項到`CLUSTER`命令和clusterdb中(Jim Cox) * 為記錄待定的觸發器事件減少內存需求(Tom) #### E.53.3.5.1\. 索引 * 大幅提高建立并且訪問哈希索引速度(Tom Raney, Shreya Bhargava) 這使得散列索引有時比btree索引的速度更快。 然而,哈希索引仍然沒有碰撞安全。 * 使得哈希索引只存儲哈希碼,而不是索引列的完整值(Xiao Meng) 這大大減少了為長索引值的散列索引的大小,從而提高了性能。 * 實現GIN索引的快速更新選項(Teodor, Oleg) 此選項大大提高了在搜索速度中小的不利后果上的更新速度。 * `xxx_pattern_ops`索引可以用于簡單平等比較,而不僅僅為`LIKE` (Tom) #### E.53.3.5.2\. 全文索引 * 當在全文索引中執行GIN加權查找時,刪除該需求而使用`@@@`(Tom, Teodor) 可以使用正常的`@@`文本搜索操作符。 * 為`@@`文本搜索操作添加優化選擇函數(Jan Urbanski) * 允許全文搜索中前綴匹配(Teodor Sigaev,Oleg Bartunov) * 支持多列GIN索引(Teodor Sigaev) * 改善支持Nepali語言和Devanagari字母(Teodor) #### E.53.3.5.3\. `VACUUM` * 在單獨每個關系"fork"文件中跟蹤自由空間(Heikki) 通過`VACUUM`發現的自由空間在`*_fsm`文件中被記錄, 而不是在一個固定大小的共享存儲器區域中。 `max_fsm_pages`和`max_fsm_relations`設置已被移除, 從而大大簡化了自由空間管理。 * 添加可見視圖以跟蹤不需要清理頁面(Heikki) 這允許`VACUUM`以避免掃描所有表, 只有表中的一部分需要清理的時候。可見視圖被存儲在每個關系"fork"文件。 * 添加`vacuum_freeze_table_age`參數以控制 當`VACUUM`忽略可見視圖并且執行全表掃描以凍結元組。 * 更仔細追蹤事務快照(Alvaro) 這提高了`VACUUM`在長時間運行的事務中回收空間能力。 * 添加指定每個關系autovacuum以及`CREATE TABLE`中TOAST參數的能力(Alvaro, Euler Taveira de Oliveira) 自動清理選項存儲在系統表中。 * 添加`--freeze`選項到vacuumdb(Bruce) ### E.53.3.6\. 數據類型 * 為文本搜索同義詞詞典添加`CaseSensitive`選項(Simon) * 完善`NUMERIC`劃分精度(Tom) * 為`int2`與`int8`添加基礎算術操作符(Tom) 這消除了在某些情況中顯式投射需求。 * 允許`UUID`輸入在每四位后面接受可選的連字符(Robert Haas) * 允許`on`/`off`作為布爾數據類型的輸入(Itagaki Takahiro) * 為類型`numeric`在輸入字符串中`NaN`周圍允許空格(Sam Mason) #### E.53.3.6.1\. 時間數據類型 * 拒絕年`0 BC`以及`000`和`0000`(Tom) 以前這些被解釋為`1 BC`。(注意:年`0`和`00`仍然假定為2000。) * 在已知時區縮寫缺省列表中包含`SGT` (Singapore時間) * 支持`infinity`和`-infinity`作為類型`date`的值(Tom) * 使得`interval`文本解析更加遵循標準(Tom, Ron Mayer) 比如,`INTERVAL '1' YEAR`目前執行應該做的內容。 * 在`second`關鍵字之后,按照SQL標準允許指定`interval`分數秒精度(Tom) 之前在關鍵字`interval`之后指定精度。(為了向后兼容,這種語法仍 支持,但不建議使用。)數據類型定義現在使用標準格式被輸出。 * 支持 IS0 8601 `interval`語法(Ron Mayer, Kevin Grittner) 比如,現在支持`INTERVAL 'P1Y2M3DT4H5M6.7S'`。 * 添加`IntervalStyle`參數以控制`interval`值如何輸出(Ron Mayer) 有效值是:`postgres`, `postgres_verbose`, `sql_standard`, `iso_8601`。 只有當一些字段有正/負名稱的時候,該設置也控制負`interval`輸入的處理。 * 在`timestamp`和`interval`輸入中優化小數秒處理的一致性(Ron Mayer) #### E.53.3.6.2\. 數組 * 優化適用于`ARRAY[]`結構映射處理, 比如`ARRAY[...]::integer[]`(Brendan Jurd) 之前PostgreSQL試圖為`ARRAY[]`結構而不引用隨后計算確定一個數據類型。 這在許多情況下可能失敗,特別是當`ARRAY[]`構造是空的或僅包含不明確項如`NULL`的時候。 現在協商該計算以確定該數組元素類型。 * 使得SQL語法`ARRAY`尺寸可選以匹配SQL標準(Peter) * 添加`array_ndims()`以返回數組維數(Robert Haas) * 添加`array_length()`以返回指定維數數組長度(Jim Nasby, Robert Haas, Peter Eisentraut) * 添加聚集函數`array_agg()`作為一個數組返回所有聚集值(Robert Haas,Jeff Davis, Peter) * 添加`unnest()`將一個數組轉換為各行值(Tom) 這是`array_agg()`的反面。 * 添加`array_fill()`以創建初始化值數組(Pavel Stehule) * 添加`generate_subscripts()`以簡化生成數組下標范圍(Pavel Stehule) #### E.53.3.6.3\. 寬值存儲(TOAST) * 認為TOAST壓縮值和32字節一樣短(之前256字節)(Greg Stark) * 使用TOAST壓縮之前要求最低25%的空間節省,(之前20%為小值并且任何存儲為大值)(Greg) * 優化具有較大和較小toastable字段混合行的TOAST啟發式, 使我們更愿意使得較大值超出范圍并且不壓縮較小值(Greg, Tom) ### E.53.3.7\. 函數 * `setseed()`文件允許從`-1`到`1`的值(不只是`0`到`1`), 并且執行有效范圍(Kris Jurka) * 添加服務器端函數`lo_import(filename, oid)`(Tatsuo) * 添加`quote_nullable()`其操作類似于 `quote_literal()`但為空參數返回字符串`NULL`(Brendan Jurd) * 優化全文本搜索`headline()`函數以允許提取文本若干片段(Sushant Sinha) * 添加`suppress_redundant_updates_trigger()`觸發器函數以避免 無數據變化更新開銷(Andrew) * 添加`div(numeric, numeric)`執行`numeric`除法而沒有四舍五入(Tom) * 添加`generate_series()`的`timestamp`和`timestamptz`版本(Hitoshi Harada) #### E.53.3.7.1\. 對象信息函數 * 通過需要知道當前正在運行的查詢的函數實現`current_query()`的使用(Tomas Doran) * 添加`pg_get_keywords()`返回解析關鍵字列表(Dave Page) * 添加`pg_get_functiondef()`查看函數的定義(Abhijit Menon-Sen) * 當解析不包含變量的表達式時,允許`pg_get_expr()`第二個參數為零(Tom) * 修改`pg_relation_size()`以使用`regclass`(Heikki) `pg_relation_size(data_type_name)`不再起作用。 * 添加`boot_val`和`reset_val`列到`pg_settings`輸出(Greg Smith) * 為配置文件中變量設置添加源文件名和行號列到`pg_settings`輸出(Magnus, Alvaro) 出于安全原因,這些列只對超級用戶可見。 * 添加支持`CURRENT_CATALOG`,`CURRENT_SCHEMA`, `SET CATALOG`, `SET SCHEMA`(Peter) 為存在特性提供SQL標準語法。 * 添加`pg_typeof()`返回任何值的數據類型(Brendan Jurd) * 采取`version()`返回有關服務器是否是32或者64位二進制信息(Bruce) * 修復信息模式列`is_insertable_into`和`is_updatable`操作是一致的(Peter) * 改善信息模式`datetime_precision`列的操作(Peter) 這些列為`date`列顯示為零并且`time`,`timestamp`以及 沒有聲明精度的`interval`顯示為6(默認精度),而不如以前一樣顯示為空。 * 轉換剩余內置集合返回函數使用`OUT`參數(Jaime Casanova) 這使得它可以調用沒有指定列表的函數:`pg_show_all_settings()`, `pg_lock_status()`, `pg_prepared_xact()`, `pg_prepared_statement()`, `pg_cursor()` * 采用`pg_*_is_visible()`和`has_*_privilege()`為無效OID返回`NULL`,而不是拋出錯誤(Tom) * 擴展`has_*_privilege()`函數以允許查詢一個調用中多特權的OR(Stephen Frost, Tom) * 添加`has_column_privilege()`和`has_any_column_privilege()`函數(Stephen Frost, Tom) #### E.53.3.7.2\. 函數創建 * 支持可變參數的函數(帶有參數可變數量的函數)(Pavel Stehule) 只有尾隨參數是可選的,它們都必須是相同的數據類型。 * 支持函數參數的缺省值(Pavel Stehule) * 添加`CREATE FUNCTION ... RETURNS TABLE`子句(Pavel Stehule) * 允許SQL語言函數返回`INSERT`/`UPDATE`/`DELETE` `RETURNING`子句的輸出(Tom) #### E.53.3.7.3\. PL/pgSQL服務器端語言 * 為了更容易地將數據值插入到動態查詢字符串中支持`EXECUTE USING`(Pavel Stehule) * 允許循環使用`FOR`循環游標結果(Pavel Stehule) * 支持`RETURN QUERY EXECUTE` (Pavel Stehule) * 優化`RAISE`命令(Pavel Stehule) * 支持`DETAIL`和`HINT`字段 * 支持`SQLSTATE`錯誤代碼規范 * 支持異常名字參數 * 允許異常塊中無參數`RAISE`重新拋出當前錯誤 * 允許`EXCEPTION`列表中`SQLSTATE`代碼規范(Pavel Stehule) 這對于處理自定義`SQLSTATE`代碼非常有用。 * 支持`CASE`語句(Pavel Stehule) * 使用`RETURN QUERY`設置特殊的`FOUND`和 `GET DIAGNOSTICS` `ROW_COUNT`變量(Pavel Stehule) * 使用`FETCH`和`MOVE`設置 `GET DIAGNOSTICS` `ROW_COUNT`變量(Andrew Gierth) * 使用沒有標簽的`EXIT`總是退出最內層循環(Tom) 之前,如果有一個`BEGIN`塊比任何環路更加緊密的嵌套, 將退出該塊。新的操作匹配Oracle(TM)并且也正如通過自身文檔所講述的。 * 使得字符串文本處理和嵌套塊注釋匹配主SQL解析器的處理(Tom) 特別是,在`RAISE`中格式字符串執行與任何其他字符串文本一樣的操作, 包含從屬于`standard_conforming_strings`。當`standard_conforming_strings`為on的時候, 這種變化也修復了有效命令失敗的情況。 * 當在不同異常塊嵌套深度中調用同一函數的時候,避免內存泄露(Tom) ### E.53.3.8\. 客戶端應用 * 修復`pg_ctl restart`保存命令行參數(Bruce) * 添加`-w`/`--no-password`選項防止在具有`-W`/`--password` 選項實用程序中的密碼提示(Peter) * 刪除createdb, createuser, dropdb, dropuser中的`-q` (默默的)選項(Peter) 這些選項不起作用因為PostgreSQL 8.3。 #### E.53.3.8.1\. psql * 刪除詳細的啟動標志,目前建議`help`(Joshua Drake) * 使用`help`顯示常見的反斜杠命令(Greg Sabino Mullane) * 添加`\pset格式包`模式來包裝輸出到屏幕寬度, 或者文件/管道輸出,如果設置`\pset列`(Bryce Nesbitt) * 允許`\pset`中布爾值的所有支持的拼寫,而不僅僅`on`和`off` (Bruce) 之前,除了"off"外的任何字符串默默地認為`true`。 psql抱怨無法識別的拼寫(但是仍然認為`true`)。 * 使用寬輸出分頁程序(Bruce) * 在一個字母反斜杠命令和它的第一個參數之間需要一個空格(Bernd Helmle) 這消除了有歧義的歷史淵源。 * 改善標簽完整支持模式修飾以及帶引號標識符(Greg Sabino Mullane) * 為`\timing`添加可選的`on`/`off`參數(David Fetter) * 顯示多行上的訪問控制權(Brendan Jurd, Andreas Scherbaum) * 使用`\l`顯示數據庫訪問權限(Andrew Gilligan) * 使用`\l+`顯示數據庫大小,如果權限允許(Andrew Gilligan) * 添加`\ef`命令編輯函數定義(Abhijit Menon-Sen) #### E.53.3.8.2\. psql \d* 命令 * 使得沒有模式參數的`\d*`命令顯示系統對象, 只有當指定`S`修飾語的時候(Greg Sabino Mullane, Bruce) 前者操作與`\d`不同形式不一致,并且在大多數情況下它沒有提供簡單方法查看 用戶對象。 * 完善與舊的PostgreSQL服務器版本一起執行(追溯到7.4)的`\d*`命令, 而不僅僅是當前服務器版本(Guillaume Lelarge) * 使用`\d`顯示引用已選擇表的外鍵約束(Kenneth D'Souza) * 在序列上使用`\d`顯示列值(Euler Taveira de Oliveira) * 添加列存儲類型和其他關系選項到`\d+`顯示中(Gregory Stark, Euler Taveira de Oliveira) * 顯示`\dt+`輸出中關系大小(Dickson S. Guedes) * 顯示`\dT+`中`enum`類型可能值(David Fetter) * 允許`\dC`接受通配符模式,這可以匹配涉及到投射的數據類型(Tom) * 添加函數類型列到`\df`的輸出,并且添加選項只列出函數所選類型(David Fetter) * `\df`不隱藏使用或者返回類型`cstring`的函數(Tom) 此前,這種函數被隱藏,因為他們大多是數據類型I/O函數,這被認為是沒有意義的。 默認情況下有關隱藏系統函數的新策略使得該缺點不必要的。 #### E.53.3.8.3\. pg_dump * 添加`--no-tablespaces`選項到pg_dump/pg_dumpall/pg_restore 這樣轉儲可以恢復到具有非匹配表空間層次的集群中(Gavin Roy) * 從pg_dump和pg_dumpall中刪除`-d`和`-D`選項(Tom) 這些選項不應該過于頻繁地與在其它PostgreSQL客戶端應用程序中選擇數據庫名稱的選項混淆。 該功能仍然可用, 但你現在必須拼寫出長選項名稱`--inserts`或者`--column-inserts`。 * 從pg_dump和pg_dumpall中刪除`-i`/`--ignore-version`選項(Tom) 使用此選項不會拋出一個錯誤,但它沒有效果。 該選項被移除,因為版本檢查對安全性是必要的。 * 在轉儲和恢復中禁用`statement_timeout`(Joshua Drake) * 添加pg_dump/pg_dumpall選項`--lock-wait-timeout` (David Gould) 如果在指定時間內無法獲取共享鎖,那么轉儲失敗。 * 重新排序pg_dump `--data-only`輸出 用來轉儲在引用表之前通過外鍵參考的表(Tom) 當外鍵存在的時候,允許數據加載。如果循環引用采用一個不可能的安全排序, 發出`NOTICE`。 * 允許pg_dump, pg_dumpall和pg_restore使用指定用戶(Benedek László) * 允許pg_restore使用多個并發連接執行恢復(Andrew) 通過選項`--jobs`來控制連接數。這僅僅支持自定義格式歸檔。 ### E.53.3.9\. 編程工具 #### E.53.3.9.1\. libpq * 當通過新函數`lo_import_with_oid()`導入大對象的時候,允許指定`OID`(Tatsuo) * 添加"events"支持(Andrew Chernow, Merlin Moncure) 這添加了注冊回調能力來管理聯系`PGconn`和`PGresult`對象的私有數據。 * 優化錯誤處理以允許多個錯誤信息的返回作為多行錯誤報告(Magnus) * 采用`PQexecParams()`和相關函數為空查詢返回`PGRES_EMPTY_QUERY`(Tom) 之前返回`PGRES_COMMAND_OK`。 * 記錄Windows上如何避免`WSACleanup()`的開銷(Andrew Chernow) * 不依賴于Kerberos來決定缺省數據庫用戶名(Magnus) 之前,libpq的Kerberos編譯將使用從任何可用的Kerberos標簽作為缺省數據庫用戶名的主體名稱, 即使連接沒有使用Kerberos認證。 這被認為是不一致而且混亂的。 有或沒有Kerberos同樣的方式決定缺省用戶名。 然而,當使用Kerberos身份驗證的時候,需要注意的是數據庫用戶名必須匹配該標簽。 #### E.53.3.9.2\. libpq SSL (安全套接層)支持 * 修復SSL連接的證書驗證(Magnus) libpq現在支持驗證兩種證書 和SSL連接時服務器的名稱。 如果根證書不可用于驗證,那么SSL連接失敗。 `sslmode`參數用于啟用證書驗證,并設置檢查水平。 默認值還沒有做任何驗證,允許連接到不需要客戶端根證書的SSL啟用服務器中。 ???????? * 支持通配符服務器證書(Magnus) 如果證書CN以`*`開頭,它將被視為一個通配符,當匹配hostname的時候, 允許多個服務器同一證書的使用。 * 允許文件位置指定客戶端證書(Mark Woodward, Alvaro, Magnus) * 增加`PQinitOpenSSL`函數允許更大控制OpenSSL/libcrypto初始化(Andrew Chernow) * 當沒有數據庫連接保持打開的時候, 使用libpq注銷它的OpenSSL回調(Bruce, Magnus, Russell Smith) 卸載libpq庫的應用程序是必須的,否則無效的OpenSSL回調將保持不變。 #### E.53.3.9.3\. ecpg * 添加信息本地化支持(Euler Taveira de Oliveira) * 從服務器解析器自動生成ecpg解析器(Michael) 之前ecpg解析器手動維護。 #### E.53.3.9.4\. 服務器編程接口(SPI) * 添加超出行參數的單一使用規劃(Tom) * 添加新的`SPI_OK_REWRITTEN`返回`SPI_execute()`代碼(Heikki) 當命令被重寫為命令的另一種類型的時候使用它。 * 從`executor/spi.h`中刪除不必要內含物(Tom) 如果它們依賴`spi.h`包含它們需要的東西, SPI使用模塊可能需要添加一些`#include`行。 ### E.53.3.10\. 編譯選項 * 使用Autoconf 2.61更新編譯系統(Peter) * 源碼編譯需要GNU bison(Peter) 這個有效的使用了許多年,但是現在沒有基礎設施聲明支持其它解析工具。 * 添加pg_config `--htmldir`選項(Peter) * 通過內部服務器傳遞`float4`值(Zoltan Boszormenyi) 添加configure選項`--disable-float4-byval`以使用舊操作。 使用舊式(版本0)的外部C函數調用約定 并通過這個改變打破傳遞或者返回`float4`值, 如果你具有這樣的函數,并且不想更新它們, 所以你可能需要configure選項。 * 通過64位平臺上內部服務器傳遞`float8`, `int8`和相關數據類型值(Zoltan Boszormenyi) 添加configure選項`--disable-float8-byval`用來使用舊的操作。如上所述, 該變化可能打破舊形式外部C函數。 * 添加配置選項`--with-segsize`, `--with-blocksize`, `--with-wal-blocksize`, `--with-wal-segsize` (Zdenek Kotala, Tom) 這簡化了編譯時控制之前只能通過編輯`pg_config_manual.h`來改變的幾個常數。 * 允許在Solaris 2.5上線程編譯(Bruce) * 在Solaris上使用系統的`getopt_long()`(Zdenek Kotala, Tom) 這使得選項處理與Solaris用戶期望的更加一致。 * 添加Linux上Sun Studio編譯器支持(Julius Stroffek) * 追加主版本號到后端gettext域,而`soname`主版本號 到庫的gettext域(Peter) 這簡化了多個版本并行安裝。 * 允許支持gcov代碼覆蓋測試(Michelle Caisse) * 允許在Mingw和Cygwin上樹外編譯(Richard Evans) * 修復作為交叉編譯源平臺Mingw的使用(Peter) ### E.53.3.11\. 源代碼 * 支持64位時區數據文件(Heikki) 這添加支持超出2038年夏令時(DST)計算。 * 不贊成平臺的`time_t`數據類型的使用(Tom) 有些平臺已經遷移到64位`time_t`, 有些不能,Windows無法下定決心它在做什么。 定義`pg_time_t`和`time_t`具有相同的含義, 但始終是64位(除非該平臺不具有64位整數類型), 并且使用所有模塊API中的類型和磁盤上的數據格式。 * 當交叉編譯的時候,修復時區數據庫處理中錯誤(Richard Evans) * 在一個步驟中連接后端對象文件,而不是一個階段中(Peter) * 完善gettext支持以便復數的更好轉化(Peter) * 添加PL語言的信息翻譯支持(Alvaro, Peter) * 添加更多DTrace探測(Robert Lor) * 啟用Mac OS X Leopard以及其它非Solaris平臺上的DTrace支持(Robert Lor) * 簡化并且標準化C字符串和`text`數據之間轉換,出于此目的提供普通函數(Brendan Jurd, Tom) * 清理`include/catalog/`頭文件以致于前端程序包含它們而不包含`postgres.h`(Zdenek Kotala) * 采取`name`字符對齊,并且抑制索引中`name`項的零填充(Tom) * 如果動態加載代碼執行`exit()`更好恢復(Tom) * 添加連接讓插件監控執行者(Itagaki Takahiro) * 添加連接允許規劃器的統計查找操作被覆蓋(Simon Riggs) * 為自定義共享內存需求添加`shmem_startup_hook()`(Tom) * 使用`amgetbitmap`替換索引訪問方法`amgetmulti`切入點, 并且為`amgettuple`擴展API可以支持操作符丟失的運行時計算(Heikki, Tom, Teodor) 為GIN和GiST opclass `consistent`函數的API已經被擴展。 * 添加支持GIN索引中局部匹配搜索(Teodor Sigaev, Oleg Bartunov) * 使用布爾`relhastriggers`替換`pg_class`列`reltriggers`(Simon) 同時刪除未使用的`pg_class`列 `relukeys`, `relfkeys`和 `relrefs`。 * 添加`relistemp`列到`pg_class`解除臨時表識別(Tom) * 將平臺FAQ放到主文檔中(Peter) * 防止解析器輸入文件編譯沖突(Peter) * 添加`KOI8U` (Ukrainian)編碼(Peter) * 添加Japanese信息轉化(Japan PostgreSQL用戶組) 這用于作為單一項目被維護。 * 當在MSVC編譯系統上設置`LC_MESSAGES`的時候, 修復該問題(Hiroshi Inoue, Hiroshi Saito, Magnus) ### E.53.3.12\. Contrib * 添加`contrib/auto_explain`在查詢超過指定時間上自動運行`EXPLAIN`(Itagaki Takahiro, Tom) * 添加`contrib/btree_gin`允許GIN索引處理更多數據類型(Oleg, Teodor) * 添加`contrib/citext`提供不區分大小寫,多字節文本數據類型(David Wheeler) * 為語句執行統計的服務器范圍追蹤添加`contrib/pg_stat_statements`(Itagaki Takahiro) * 添加時間和查詢模式選項到`contrib/pgbench`(Itagaki Takahiro) * `contrib/pgbench`使用表名`pgbench_accounts`, `pgbench_branches`, `pgbench_history`和`pgbench_tellers`, 而不僅僅`accounts`, `branches`, `history`和`tellers` (Tom) 通過運行pgbench以降低意外破壞真實數據的風險。 * 修復`contrib/pgstattuple`處理表和超過20億頁面的索引(Tatsuhito Kasahara) * 在`contrib/fuzzystrmatch`中,添加Levenshtein字符串距離函數版本允許 用戶聲明插入,刪除和替換成本(Volkan Yazici) * 采用`contrib/ltree`支持多字節編碼(laser) * 啟用`contrib/dblink`使用存儲在SQL/MED目錄中的連接信息(Joe Conway) * 完善來自遠程服務器錯誤的`contrib/dblink`的報告(Joe Conway) * 使用`contrib/dblink`設置`client_encoding`以 匹配本地數據庫的編碼(Joe Conway) 當與使用不同編碼的遠程數據庫通信時,這可以避免編碼問題。 * 確保`contrib/dblink`使用用戶提供的密碼, 并且不是意外地采取服務器的`.pgpass`文件(Joe Conway) 有一個小的安全增強功能。 * 添加`fsm_page_contents()`到`contrib/pageinspect` (Heikki) * 修改`get_raw_page()`支持自由空間映射(`*_fsm`)文件。 同時更新`contrib/pg_freespacemap`。 * 添加支持多字節編碼到`contrib/pg_trgm`(Teodor) * 改寫`contrib/intagg`使用新的函數`array_agg()`和`unnest()`(Tom) * 故障轉移之前使用`contrib/pg_standby`回收所有可用WAL(Fujii Masao, Simon, Heikki) 為了使這項工作安全,您現在需要設置`recovery.conf`中新的 `recovery_end_command`選項用來清理故障轉移后的觸發器文件。 pg_standby將不再刪除觸發器文件本身。 * `contrib/pg_standby`的`-l`選項現在是一個空操作, 因為它使用符號鏈接不安全(Simon)
                  <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>

                              哎呀哎呀视频在线观看