# E.8\. 版本9.2
> **發布日期:** 2012-09-10
## E.8.1\. 概述
此版本主要集中在性能上的改進,但新的SQL功能不缺乏。工作在備份支持領域繼續進行。主要功能包括:
* 允許查詢從索引中檢索數據,避免堆訪問(_索引掃描_)
* 即使當使用預備語句時,允許規劃器為特定參數值產生自定義規劃
* 提高規劃器使用嵌套循環內部索引掃描的能力
* 允許流復制轉發數據到其他從屬([_級聯復制_](#calibre_link-1438))
* 允許[pg_basebackup](#calibre_link-471)執行來自備用服務器的基礎備份
* 添加[pg_receivexlog](#calibre_link-464)工具以歸檔作為他們寫入的WAL文件
* 添加[SP-GiST](#calibre_link-550) (空間劃分GiST)索引訪問方法
* 添加[range data types](#calibre_link-1153)支持
* 添加[`JSON`](#calibre_link-1753)數據類型
* 為視圖增加[`security_barrier`](#calibre_link-473)選項
* 允許libpq連接字符串有[URI](#calibre_link-458)的格式
* 添加[單行處理模式](#calibre_link-626)到libpq 更好的處理大的結果集
以上項的更多詳情在下面的章節有介紹。
## E.8.2\. 遷移到版本9.2
使用pg_dump轉儲/恢復,或者使用pg_upgrade 從任何以前版本中遷移數據。
版本9.2包含可能影響與先前版本的兼容性的一些變化。 觀察下面的不兼容:
### E.8.2.1\. 系統目錄
* 從[`pg_tablespace`](#calibre_link-523)中刪除`spclocation`字段(Magnus Hagander)
該字段實際上定義表空間位置的符號鏈接的復制,從而當移動表空間時,可能有遺漏錯誤風險。 在服務器關閉時,通過手動調節符號鏈接,這種變化允許刪除表空間目錄。 為了替換該字段,我們添加[`pg_tablespace_location()`](#calibre_link-2243) 允許符號鏈接查詢。
* 移動`tsvector`最常見元素統計到新的[`pg_stats`](#calibre_link-771)列(Alexander Korotkov)
為了在`most_common_vals` 和`most_common_freqs`的`tsvector`列中可用的原先的數據 查詢`most_common_elems`和`most_common_elem_freqs`。
### E.8.2.2\. 函數
* 刪除[hstore](#calibre_link-382)'s `=>`操作符(Robert Haas)
用戶應該使用`hstore(text, text)`。 自PostgreSQL 9.0, 當創建命名`=>`的操作符,則發出一個警告信息。 因為SQL標準保留了另一個使用的標記。
* 確保[`xpath()`](#calibre_link-1976)在字符串值中逃逸特殊字符(Florian Pflug)
倘若沒有這個,那么對于結果可能不是有效的XML。
* 使用[`pg_relation_size()`](#calibre_link-1933) 并且如果該對象不存在則返回空(Phil Sorber)
這可以防止查詢調用這些函數從并發`DROP`后立即返回錯誤。
* 使用[`EXTRACT(EPOCH FROM `_timestamp without time zone_`)`](#calibre_link-1876)從當地午夜測量時間,而不是UTC午夜(Tom Lane)
這一變化恢復在版本7.3中缺乏考慮的變化。 從UTC午夜測量是不一致的, 因為它使結果依賴于[`timezone`](#calibre_link-793)設置, 這不應該有`timestamp without time zone`的計算。以前的操作仍然可以通過映射輸入 值到`timestamp with time zone`可用。
* 正確解析帶有尾隨`yesterday`,`today`和`tomorrow`的時間字符串(Dean Rasheed)
先前`SELECT '04:00:00 yesterday'::timestamp`返回午夜時yesterday的日期。
* 修復[`to_date()`](#calibre_link-800)和 `to_timestamp()`以封裝不完整日期到2020(Bruce Momjian)
先前,提供年以及不一致封裝低于四位的年掩碼。
### E.8.2.3\. 對象修改
* 防止[`ALTER DOMAIN`](#calibre_link-568)工作于非域類型上(Peter Eisentraut)
在非域類型上所有者和模式變化是可能的。
* 在[`CREATE FUNCTION`](#calibre_link-4)中 不再強制小寫過程語言名字(Robert Haas)
當反引號語言標識符仍然是小寫字母時,字符串和帶引號的標識符不再強行向下。 因此,例如`CREATE FUNCTION ... LANGUAGE 'C'`將不再工作; 它必須拼寫`'c'`,或更好地省略引號。
* 改變外鍵執行觸發器系統產生的名稱(Tom Lane)
這一變化確保在涉及自我參照的外鍵約束的情況下以正確的順序觸發觸發器。
### E.8.2.4\. 命令行工具
* 提供一致的反引號,變量擴張, 以及[psql](#calibre_link-23)元命令參數中的引用子字符串操作(Tom Lane)
以前,當不通過相鄰文本空白分隔的時候。奇怪地處理這種引用。 例如`'FOO'BAR`作為`FOO BAR`被輸出 (空間意外插入)并且`FOO'BAR'BAZ`輸出不變(不刪除期望的引用)。
* 不再將[clusterdb](#calibre_link-1612)表名看作雙引號; 不再將[reindexdb](#calibre_link-1029)表和索引名看作雙引號(Bruce Momjian)
如果希望引用,那么用戶現在必須在命令參數中包含雙引號。
* [createuser](#calibre_link-22)缺省不再提示選項設置(Peter Eisentraut)
使用`--interactive`獲得舊的操作。
* 禁用[dropuser](#calibre_link-45)中的用戶名提示, 除非指定`--interactive`(Peter Eisentraut)
### E.8.2.5\. 服務器設置
* 添加服務器參數以指定[服務器端SSL文件位置](#calibre_link-1389)
這允許改變名字和文件位置,該文件先前作為`server.crt`, `server.key`, `root.crt`和數據目錄中 `root.crl`的硬編碼。_缺省時服務器將不再檢查`root.crt`或者 `root.crl`_;加載這些文件,相關參數必須設置為非缺省值。
* 刪除`silent_mode`參數(Heikki Linnakangas)
可以使用`pg_ctl start -l postmaster.log`獲得類似操作。
* 刪除不再需要的`wal_sender_delay`參數(Tom Lane)
* 刪除`custom_variable_classes`參數(Tom Lane)
通過該設置提供的檢查是含糊的。現在可以以任何類名作為任何設置前綴。
### E.8.2.6\. 監控
* 重命名[`pg_stat_activity`](#calibre_link-1440)`.procpid` 到`pid`,匹配其他系統表(Magnus Hagander)
* 創建一個單一的`pg_stat_activity`列以報告進程狀態(Scott Mead, Magnus Hagander)
先前的`query`和`query_start`值現在仍然可用于空閑會話, 允許增強分析。
* 當查詢完成時,重命名`pg_stat_activity`.`current_query`到 `query`,因為它是不清楚的(Magnus Hagander)
* 改變所有SQL級別統計時序值到以毫秒計的`float8`列
這種變化消除設計假設該值精確到微秒,沒有更多的(因為`float8`值可以是分數)。 受影響的列:`pg_stat_user_functions`.`total_time`,`pg_stat_user_functions`.`self_time`,`pg_stat_xact_user_functions`.`total_time`, 和`pg_stat_xact_user_functions`.`self_time`。 潛在這些列的統計函數現在返回`float8`毫秒,而不是`bigint` 微秒。現在以毫秒測量`contrib/pg_stat_statements`的`total_time`列。
## E.8.3\. 變化
下面你將發現在PostgreSQL 9.2和先前主要版本之間變化的詳細情況。
### E.8.3.1\. 服務器
#### E.8.3.1.1\. 性能
* 允許查詢只從索引中檢索數據,避免堆訪問(Robert Haas, Ibrar Ahmed, Heikki Linnakangas, Tom Lane)
此功能通常被稱為_只索引掃描_。 為了只包含對所有會話可見的元組堆頁可以忽略堆訪問, 正如可見視圖報道的;因此該效益主要適用于大多數靜態數據。可見視圖將損壞安全作為 執行該功能的必要組成部分。
* 增加[SP-GiST](#calibre_link-550)(空間劃分GiST)索引訪問方法(Teodor Sigaev, Oleg Bartunov, Tom Lane)
SP-GiST與GIST的靈活性相比較,但支持不平衡分段搜索結構而不是平衡樹。 為了適當的問題,SP-GiST在索引編譯時間和搜索時間上比GiST更快。
* 允許組提交在重負載下有效工作(Peter Geoghegan, Simon Riggs, Heikki Linnakangas)
此前,批量提交無效作為已增加的寫入工作量,由于內部鎖爭用。
* 允許使用一個新的快速路徑鎖定機制管理未競爭鎖(Robert Haas)
* 減少創建虛擬事務ID鎖的開銷(Robert Haas)
* 減少串行化隔離級別鎖的開銷(Dan Ports)
* 提高PowerPC和Itanium spinlock性能(Manabu Ori, Robert Haas, Tom Lane)
* 減少共享的無效緩存消息開銷(Robert Haas)
* 移動`PGPROC`共享內存數組頻繁訪問的成員到一個單獨數組中(Pavan Deolasee, Heikki Linnakangas, Robert Haas)
* 通過成批地添加元組到堆中提高`COPY`性能(Heikki Linnakangas)
* 通過產生內存分配開銷少的樹的幾何數據類型提高GiST索引性能。
* 提高GiST索引編譯時間(Alexander Korotkov, Heikki Linnakangas)
* 允許提示位被迅速設置為臨時的和未標記表(Robert Haas)
* 允許通過內聯進行排序,非SQL可調用比較函數(Peter Geoghegan, Robert Haas, Tom Lane)
* 增大基于[`shared_buffers`](#calibre_link-1370)的CLOG緩沖區規模數量(Robert Haas, Simon Riggs, Tom Lane)
* 當刪除表或者數據庫時,提高發生的緩沖池掃描性能(Jeff Janes, Simon Riggs)
* 當許多表被刪除或截斷時,提高檢查點的fsync請求陣列性能(Tom Lane)
* Windows上傳遞文件描述符安全碼到子進程(Heikki Linnakangas)
這允許Windows會話使用比以前更多的打開文件描述符。
#### E.8.3.1.2\. 進程管理
* 創建一個執行檢查點的專門后臺進程(Simon Riggs)
原先后端寫進程執行臟頁寫入和檢查點。分離成兩個過程允許每個目標可預見地完成。
* 通過快速喚醒walwriter提高異步提交操作(Simon Riggs)
以前,[`wal_writer_delay`](#calibre_link-1433)觸發WAL沖洗磁盤; 現在填充WAL緩沖區也觸發WAL寫入。
* 在不活躍期間讓bgwriter, walwriter,檢查點,數據采集器,日志收集器和歸檔日志后端進程更有效睡眠(Peter Geoghegan, Tom Lane)
當沒什么事可做的時候,這一系列的變化會降低進程喚醒頻率,大幅降低空閑服務器上的功耗。
#### E.8.3.1.3\. 優化器
* 允許規劃器生成特定參數的自定義規劃,即使當使用預處理語句的時候(Tom Lane)
以往,一個預備語句總是有一個單一的"通用"計劃被用于所有的參數值, 通常遠不如用于包含顯式恒定值的非預備語句規劃。現在,規劃器 試圖生成特定參數值的自定義規劃。 一個通用計劃將只能用在自定義規劃多次證明沒有任何好處的情況。 這種變化應該消除原先從預備語句使用中見到過的性能損失(包括PL/pgSQL中的非動態語句)。
* 提高規劃器使用嵌套循環內部索引掃描的能力(Tom Lane)
新的"參數化路徑"機制允許內部索引掃描使用超過掃描中一個連接水平的關系值。 這可以大大提高語義限制(如外連接)允許的連接順序的情況下的性能。
* 提高對外部數據封裝器的規劃API (Etsuro Fujita, Shigeru Hanada, Tom Lane)
封裝器現在可以為表提供多種訪問"路徑",在連接規劃中更加靈活。
* 識別非表關系的自相矛盾限制分句(Tom Lane)
當[`constraint_exclusion`](#calibre_link-1531) `打開`時,執行 這個檢查。
* 允許`indexed_col op ANY(ARRAY[...])`條件用于純索引掃描并且僅僅索引掃描(Tom Lane)
以前這樣的條件只能用于位圖索引掃描。
* 在`boolean`列上支持`MIN`/`MAX`索引優化(Marti Raudsepp)
* 當估計設置行數時,解釋了在`SELECT`目標列中設置返回函數的原因(Tom Lane)
* 修復規劃器更可靠的處理帶有重復列索引(Tom Lane)
* 收集并且使用數組元素次數統計(Alexander Korotkov, Tom Lane)
這種變化提高了數組`<@`, `&&`和 `@>`操作符(數組容量和重疊部分)的選擇性估計。
* 允許收集外表的統計(Etsuro Fujita)
* 提高使用部分索引的成本估計(Tom Lane)
* 提高在子查詢中引用列統計的規劃器能力(Tom Lane)
* 提高子查詢使用`DISTINCT`的統計估計(Tom Lane)
#### E.8.3.1.4\. 認證
* 不要把角色名字和 [`pg_hba.conf`](#calibre_link-656)中 聲明的`samerole`看作自動包含超級用戶的(Andrew Dunstan)
這使得它更容易使用組角色的`reject`行。
* 調節`pg_hba.conf`過程更加一致地處理令牌解析(Brendan Jurd, álvaro Herrera)
* 不允許空`pg_hba.conf`文件(Tom Lane)
這樣做是為了更快速檢測配置錯誤。
* 使用超級用戶權限意味著復制權限(Noah Misch)
這樣避免了需要明確地分配這類權限。
#### E.8.3.1.5\. 監控
* 試圖在后端崩潰期間記錄當前查詢字符串(Marti Raudsepp)
* 使得自動清理I/O活動日志更加冗長(Greg Smith, Noah Misch)
這條記錄是通過[`log_autovacuum_min_duration`](#calibre_link-2304)觸發的。
* 使WAL回放盡快報告錯誤(Fujii Masao)
一旦服務器到主模式只報告錯誤的情況。
* 添加[`pg_xlog_location_diff()`](#calibre_link-1794) 以簡化WAL位置比較(Euler Taveira de Oliveira)
這對于計算復制滯后是有用的。
* 支持Windows上可配置的事件日志應用程序名稱(MauMau, Magnus Hagander)
這允許不同的情況下使用不同的標識符事件日志, 通過設置[`event_source`](#calibre_link-1397)服務器參數, 這類似于[`syslog_ident`](#calibre_link-2305)工作方式。
* 改變"意外的塊結束"消息到`DEBUG1`級別,除非有一個已打開事務(Magnus Hagander)
這種變化減少笨拙地關閉數據庫連接應用導致的日志振動。
#### E.8.3.1.6\. 統計視圖
* 跟蹤臨時文件大小和[`pg_stat_database`](#calibre_link-1453)系統視圖中的文件數(Tomas Vondra)
* 添加一個死鎖計數器到`pg_stat_database`系統視圖(Magnus Hagander)
* 添加服務器參數[`track_io_timing`](#calibre_link-1369)跟蹤I/O時序(Ants Aasma, Robert Haas)
* 報告[`pg_stat_bgwriter`](#calibre_link-1707)中的檢查點定時信息(Greg Smith, Peter Geoghegan)
#### E.8.3.1.7\. 服務器設置
* 默默忽略[`search_path`](#calibre_link-738)指定的不存在的模式(Tom Lane)
這使得更加方便使用通用路徑設置,可能包含一些不存在于數據庫中的模式。
* 允許超級用戶設置[`deadlock_timeout`](#calibre_link-1451)每個會話, 而不是每個集群(Noah Misch)
這允許為了可能涉及到死鎖的事務減少`deadlock_timeout`, 因此更快地檢查故障。另外,增加該值可以用于減少由于死鎖選擇取消會話機會。
* 添加服務器參數[`temp_file_limit`](#calibre_link-2306)限制每個會話臨時文件空間使用率(Mark Kirkwood)
* 在加載相關擴展之前允許超級用戶`SET`擴展的超級用戶自定義變量(Tom Lane)
系統現在記得是否`SET`通過超級用戶被執行, 因此當加載擴展時,可以執行適當的權限檢查。
* 添加[postmaster](#calibre_link-1489) `-C`選項查詢配置參數(Bruce Momjian)
允許pg_ctl更好地處理`PGDATA`或者`-D`指向配置目錄的情況。
* 以`CREATE DATABASE`中隱含值替換空的區域名(Tom Lane)
這可以防止服務器重啟后不同地解釋`pg_database`.`datcollate`或者 `datctype`的情況。
##### E.8.3.1.7.1\. `postgresql.conf`
* 允許報告`postgresql.conf`中的多個錯誤, 而不僅僅是第一個(Alexey Klyukin, Tom Lane)
* 允許通過所有會話處理`postgresql.conf`的加載,即使有一些設置對特定會話是無效的(Alexey Klyukin)
以前,這種無效會話值可能導致所有設置變化被該會話忽略。
* 為配置文件添加一個`include_if_exists`功能(Greg Smith)
這個和`include`一樣運行,除了如果忽略該文件不會拋出錯誤外。
* 在initdb期間識別服務器時區,并且相應設置`postgresql.conf`項 [`timezone`](#calibre_link-793)和 [`log_timezone`](#calibre_link-803)
這避免了服務器啟動時昂貴的時區探測。
* 修復[`pg_settings`](#calibre_link-967)以 報告Windows上`postgresql.conf`行號(Tom Lane)
### E.8.3.2\. 備份和恢復
* 允許流復制轉發數據到其他從屬([_級聯復制_](#calibre_link-1438))(Fujii Masao)
以前只有主服務器可以提供流復制日志文件到備用服務器。
* 添加新的[`synchronous_commit`](#calibre_link-1216) 模式`remote_write` (Fujii Masao, Simon Riggs)
該模式等待備用服務器寫事務數據到它自己的操作系統,但是不等待數據被刷新到備用磁盤。
* 添加[pg_receivexlog](#calibre_link-464)工具 歸檔他們寫入的WAL文件變化,而不是等待完成的WAL文件(Magnus Hagander)
* 允許[pg_basebackup](#calibre_link-471)從 備用服務器上做基礎備份(Jun Ishizuka, Fujii Masao)
該功能允許基礎備份工作從主服務器上被卸載。
* 當pg_basebackup在執行備份時,允許WAL文件流(Magnus Hagander)
允許在主庫上丟棄之前傳遞WAL文件到備庫。
### E.8.3.3\. 查詢
* 如果斷開客戶端連接,取消運行的查詢(Florian Pflug)
如果在查詢中后端監測客戶端連接損壞,那么它現在將取消查詢而不是嘗試完成它。
* 在行表達式運行時保留列名(Andrew Dunstan, Tom Lane)
當行值被轉換為`hstore`或者`json`類型時:結果值字段有期望名,那么該變化允許有更好結果。
* 改善用于子-`SELECT`結果的列標簽(Marti Raudsepp)
以前使用一般標簽`?column?`。
* 提高決定未知值類型的探索法(Tom Lane)
當考慮多態操作符的時候, 長期規則是一個未知常量可能與現在應用它的操作者一端的值有同樣類型, 而不僅僅操作符匹配。
* 關于創建映射或者來自域類型的警告(Robert Haas)
這種投射沒有影響。
* 當行不能進行`CHECK`或者`NOT NULL`約束時, 顯示行內容作為錯誤詳細信息 (Jan Kundrát)
當插入或者更新處理多行時,這將很容易識別哪行是有問題的。
### E.8.3.4\. 對象操作
* 在并行DDL中提供更可靠操作(Robert Haas, Noah Misch)
該變化增加了鎖定,它應該刪除多種情況中"高速緩存查找失敗"錯誤。 另外,不再可能添加關系到正在刪除的模式中,先前導致不一致系統目錄內容的情況。
* 添加`CONCURRENTLY`選項到 [`DROP INDEX`](#calibre_link-602) (Simon Riggs)
允許索引刪除不鎖定其他會話。
* 允許外數據包有每一列選項(Shigeru Hanada)
* 改進視圖定義的輸出(Andrew Dunstan)
#### E.8.3.4.1\. 約束
* 允許[`CHECK`](#calibre_link-1538) 約束被聲明為`NOT VALID` (álvaro Herrera)
添加`NOT VALID`約束不會導致掃描的表可以驗證已存在行滿足該約束。 隨后,檢查新添加或者更新的行。當考慮`constraint_exclusion`時, 規劃器忽略這些約束。因為它不確定所有行可以滿足該約束。
新的`ALTER TABLE VALIDATE`命令允許為已存在 行檢查`NOT VALID`限制,之后被轉換成普通約束。
* 允許`CHECK`限制被聲明為 `NO INHERIT` (Nikhil Sontakke, Alex Hunsaker, álvaro Herrera)
這使得它們只在父表是可執行的,而不是子表。
* 添加該能力到[rename](#calibre_link-88)約束(Peter Eisentraut)
#### E.8.3.4.2\. `ALTER`
* 減少重新編譯表需要以及 索引某個 [`ALTER TABLE`](#calibre_link-88)... `ALTER COLUMN TYPE`操作(Noah Misch)
增加`varchar`或者`varbit`列長度限制,或者完全刪除限制,不再需要表重寫。 類似地,增加`numeric`列允許的精度,或者改變約束的`numeric`列到不受約束的`numeric`, 不再需要表重寫。 在涉及`interval`, `timestamp`和`timestamptz`類型的相似情況中避免表重寫。
* 避免 [`ALTER TABLE`](#calibre_link-88)在 不必要的情況下驗證外鍵約束(Noah Misch)
* 增加`IF EXISTS`選項到一些`ALTER`命令中(Pavel Stehule)
比如 `ALTER FOREIGN TABLE IF EXISTS foo RENAME TO bar`。
* 添加 [`ALTER FOREIGN DATA WRAPPER`](#calibre_link-59) ... `RENAME` 和[`ALTER SERVER`](#calibre_link-66) ... `RENAME` (Peter Eisentraut)
* 添加 [`ALTER DOMAIN`](#calibre_link-568) ... `RENAME` (Peter Eisentraut)
你可能已經使用 `ALTER TYPE`重命名域。
* 在不存在約束上為 `ALTER DOMAIN` ... `DROP CONSTRAINT`拋出一個錯誤(Peter Eisentraut)
一個`IF EXISTS`選項已被添加以提供先前操作。
#### E.8.3.4.3\. [`CREATE TABLE`](#calibre_link-7)
* 允許`CREATE TABLE (LIKE ...)`來自外表,視圖和復合類型(Peter Eisentraut)
比如,模式匹配視圖的允許創建表。
* 當拷貝索引注釋時,修復`CREATE TABLE (LIKE ...)`以避免索引名沖突(Tom Lane)
* 修復`CREATE TABLE` ... `AS EXECUTE` 以處理`WITH NO DATA`和列名稱規格(Tom Lane)
#### E.8.3.4.4\. 對象權限
* 為視圖添加 [`security_barrier`](#calibre_link-473)選項(KaiGai Kohei, Robert Haas)
該選項可以防止優化可能允許視圖受保護數據暴露給用戶, 比如推動涉及不安全函數的子句到視圖的`WHERE`子句。 這種視圖預期比普通視圖執行更差。
* 添加新的 [`LEAKPROOF`](#calibre_link-4)函數屬性以標記函 數可以安全地向下推進到`security_barrier`視圖(KaiGai Kohei)
* 增加數據類型權限支持(Peter Eisentraut)
在類型和域上添加SQL-一致`USAGE`權限支持。 其意圖是可以限制哪個用戶在類型上可以創建依賴,因為這種依賴 限制修改該類型的用戶能力。
* 檢查在 `SELECT INTO` / `CREATE TABLE AS`中的 `INSERT`權限(KaiGai Kohei)
因為通過`SELECT INTO` 或者`CREATE TABLE AS`創建該對象,那么創建者通常有插入權限; 但是有一種不真的困境情況, 比如當`ALTER DEFAULT PRIVILEGES`已經刪除該權限時。
### E.8.3.5\. 實用操作
* 允許[`VACUUM`](#calibre_link-748)更容易忽略不能被鎖定的頁(Simon Riggs, Robert Haas)
這種變化會大大降低`VACUUM`獲得"stuck"等待其他會話的發生率。
* 使得[`EXPLAIN`](#calibre_link-575) `(BUFFERS)`計算臟塊和寫入的(Robert Haas)
* 使得`EXPLAIN ANALYZE`報告通過過濾步驟拒絕的行數(Marko Tiikkaja)
* 當時間值是不想要的,允許`EXPLAIN ANALYZE`避免時間開銷(Tomas Vondra)
通過設置新的`TIMING`選項到`FALSE`來完成。
### E.8.3.6\. 數據類型
* 添加支持[range data types](#calibre_link-1153) (Jeff Davis, Tom Lane, Alexander Korotkov)
一系列數據類型存儲從屬于它的基本數據類型的上限和下限。 它支持類似包含,重疊和交叉的操作。
* 添加[`JSON`](#calibre_link-1753) 數據類型(Robert Haas)
這種類型存儲帶有適當驗證的JSON (JavaScript對象表示法)數據。
* 添加 [`array_to_json()`](#calibre_link-1760) 和`row_to_json()` (Andrew Dunstan)
* 添加[`SMALLSERIAL`](#calibre_link-1175) 數據類型(Mike Pultz)
這就像`SERIAL`,除了它以兩個字節整數列(`int2`)存儲序列之外。
* 允許[domains](#calibre_link-567)被 聲明為`NOT VALID` (álvaro Herrera)
在域創建時間設置該選項,或者通過 `ALTER DOMAIN` ... `ADD CONSTRAINT` ... `NOT VALID`. `ALTER DOMAIN` ... `VALIDATE CONSTRAINT`充分驗證該限制。
* 為了[`money`](#calibre_link-696)數據類型支持更多的區域指定格式選項(Tom Lane)
特別的,為了該值順序,標志,以及貨幣輸出中的貨幣符號紀念POSIX選項。另外, 確保千位分隔符只被插入到小數點左邊,正如POSIX要求的。
* 為`macaddr`數據類型添加按位"and", "or"和"not"操作符(Brendan Jurd)
* 當提供一個標量值時, 允許[`xpath()`](#calibre_link-1976)返回 單一元素XML數組(Florian Pflug)
先前,它返回空數組。這種變化也將導致`xpath_exists()`為這種表達式返回真,而不是假。
* 提高XML錯誤處理以變得更健壯(Florian Pflug)
### E.8.3.7\. 函數
* 允許非超級用戶在其他會話從屬于同一用戶時使用 [`pg_cancel_backend()`](#calibre_link-1566) 和[`pg_terminate_backend()`](#calibre_link-1566) (Magnus Hagander, Josh Kupershmidt, Dan Farina)
以前只有超級用戶被允許使用這些函數。
* 允許事務快照的輸入和輸出(Joachim Wieland, Tom Lane)
這允許多個事務共享數據庫狀態的同一視圖。快照是通過 [`pg_export_snapshot()`](#calibre_link-510)輸出,通過 [`SET TRANSACTION SNAPSHOT`](#calibre_link-507)輸入。只有當前正在運行的事務快照可以被輸入。
* 支持表達式上的[`COLLATION FOR`](#calibre_link-2243)(Peter Eisentraut)
返回表達式排序規則的字符串表示。
* 添加[`pg_opfamily_is_visible()`](#calibre_link-2242) (Josh Kupershmidt)
* 添加`numeric` variant of [`pg_size_pretty()`](#calibre_link-1073) 適用于`pg_xlog_location_diff()` (Fujii Masao)
* 添加[`pg_trigger_depth()`](#calibre_link-2241)函數(Kevin Grittner)
報告當前觸發器調用深度。
* 允許 [`string_agg()`](#calibre_link-1071) 處理`bytea`值(Pavel Stehule)
* 在一個較大的量化子表達式中發生后向引用的地方修復正則表達式(Tom Lane)
比如`^(\w+)( \1)+$`。先前版本并不檢查后向引用實際匹配第一次出現。
### E.8.3.8\. [信息模式](#calibre_link-583)
* 添加信息模式視圖 `role_udt_grants`, `udt_privileges`, 和`user_defined_types` (Peter Eisentraut)
* 添加復合類型屬性到信息模式`element_types`視圖(Peter Eisentraut)
* 信息模式中實現`interval_type`列(Peter Eisentraut)
以前這些列讀取為空。
* 在信息模式`attributes`, `columns`, `domains`和`element_types`視圖中實現排序規則相關列(Peter Eisentraut)
* 在信息模式`table_privileges`視圖中實現`with_hierarchy`列 (Peter Eisentraut)
* 增加序列`USAGE`權限顯示到信息模式中(Peter Eisentraut)
* 使信息模式顯示缺省權限(Peter Eisentraut)
先前,非空缺省權限沒有出現在視圖中。
### E.8.3.9\. 服務器端語言
#### E.8.3.9.1\. [PL/pgSQL](#calibre_link-857)服務器端語言
* 允許PL/pgSQL `OPEN`游標命令提供參數名(Yeb Havinga)
* 添加`GET STACKED DIAGNOSTICS` PL/pgSQL命令檢索異常信息(Pavel Stehule)
* 通過緩存類型信息加快PL/pgSQL數組賦值(Pavel Stehule)
* 提高性能以及為長連續`ELSIF`子句內存損耗(Tom Lane)
* 在PL/pgSQL錯誤消息中輸出函數簽名,而不僅僅是名字(Pavel Stehule)
#### E.8.3.9.2\. [PL/Python](#calibre_link-882)服務器端語言
* 添加PL/Python SPI游標支持 (Jan Urbanski)
這允許PL/Python讀取部分結果集。
* 添加結果元數據函數到PL/Python (Peter Eisentraut)
具體地說,這增加了結果對象函數 `.colnames`, `.coltypes`和 `.coltypmods`。
* 刪除支持Python 2.2 (Peter Eisentraut)
#### E.8.3.9.3\. [SQL](#calibre_link-831)服務器端語言
* 允許SQL語言函數參照參數名(Matthew Draper)
為了使用這個,僅僅命名函數參數,并且然后參考SQL 函數體中的參數名。
### E.8.3.10\. 客戶端應用
* 添加[initdb](#calibre_link-542) 選項`--auth-local`和`--auth-host` (Peter Eisentraut)
這允許 `local`和`host` `pg_hba.conf`認證設置的分散控制, `--auth`仍然控制著兩個。
* 添加`--replication`/`--no-replication`標記到 [createuser](#calibre_link-22)以控制備份權限(Fujii Masao)
* 添加`--if-exists`選項到 [dropdb](#calibre_link-35)和 [dropuser](#calibre_link-45) (Josh Kupershmidt)
* 給出命令行工具以指定要連接數據庫名字, 如果`postgres`數據庫連接失敗, 那么回退到`template1` (Robert Haas)
#### E.8.3.10.1\. [psql](#calibre_link-23)
* 添加基于顯示寬度的顯示模式以自動擴展輸出(Peter Eisentraut)
增加`auto`選項到`\x`命令,當正常 輸出比屏幕寬的時候,會切換到擴展模式。
* 允許腳本文件的包含是相對于它被調用的文件目錄命名的(Gurjeet Singh)
這是執行新的命令`\ir`。
* 在psql變量名中添加支持非ASCII字符(Tom Lane)
* 添加支持主要版本特定`.psqlrc`文件(Bruce Momjian)
psql支持次要版本特定`.psqlrc`文件。
* 提供環境變量覆蓋psql歷史并且啟動文件位置(Andrew Dunstan)
如果設置,那么`PSQL_HISTORY`和`PSQLRC`決定這些文件名。
* 添加`\setenv`命令修改傳遞給子進程的環境變量(Andrew Dunstan)
* 命名`.sql`擴展的psql的臨時編輯文件(Peter Eisentraut)
這允許擴展敏感編輯者選擇正確模式。
* 允許psql使用零字節字段并且記錄分隔符(Peter Eisentraut)
使用零字節(NUL)分隔符的各種shell工具,比如find。
* 使用`\timing`選項報告查詢失敗時間(Magnus Hagander)
以前只為成功查詢報道時間。
* 統一并固定`\copy`和SQL `COPY`的psql處理(Noah Misch)
這修復錯誤操作更加可預測并且設置`\set ON_ERROR_ROLLBACK`。
#### E.8.3.10.2\. 信息命令
* 使得`\d`在序列上顯示擁有它的表/列名(Magnus Hagander)
* 顯示`\d+`中列的統計目標(Magnus Hagander)
* 顯示`\du`中角色密碼截止日期(Fabrízio de Royes Mello)
* 顯示投射,轉換,域和語言說明(Josh Kupershmidt)
這些分別包含在`\dC+`, `\dc+`, `\dD+`和`\dL`輸出中。
* 顯示SQL/MED對象說明(Josh Kupershmidt)
這些分別包括在`\des+`, `\det+`輸出,`\dew+`外服務器,外 表,和外數據包裝器。
* 改變`\dd`僅顯示沒有自身反斜杠命令對象類型的說明(Josh Kupershmidt)
#### E.8.3.10.3\. Tab實現
* 在psql tab實現中, 在大小寫情況下依照新的 [`COMP_KEYWORD_CASE`](#calibre_link-1080)設置 實現SQL關鍵字
* 添加tab實現支持 `EXECUTE` (Andreas Karlsson)
* 在`GRANT`/`REVOKE`中 添加角色引用的tab實現(Peter Eisentraut)
* 當必要的時候,允許文件名的tab實現可以提供引用(Noah Misch)
* 改變tab實現支持`TABLE`也包含視圖(Magnus Hagander)
#### E.8.3.10.4\. [pg_dump](#calibre_link-437)
* 添加`--exclude-table-data`選項到 pg_dump (Andrew Dunstan)
這允許在每個表基礎上備份表的定義而不是它的數據。
* 添加`--section`選項到pg_dump 和pg_restore (Andrew Dunstan)
有效值是`pre-data`, `data`, 和`post-data`。給定的該選項不止一次的選擇兩個或更多部分。
* 使用 [pg_dumpall](#calibre_link-439)首先備份 所有角色,然后角色上的所有配置設置(Phil Sorber)
這允許角色的配置設置提及其他沒有產生錯誤的角色。
* 如果在新的集群中丟失`postgres`數據庫,那么允許 pg_dumpall避免錯誤(Robert Haas)
* 按照用戶名順序備份外服務器用戶映射(Peter Eisentraut)
這有助于產生確定性備份文件。
* 以可預見性順序備份操作符(Peter Eisentraut)
* 當擴展配置表通過pg_dump被備份時,收緊規則(Tom Lane)
* 使得pg_dump發出更多有用的依賴信息(Tom Lane)
包含在歸檔格式轉儲中的依賴關系以前使用非常有限, 因為他們經常引用似乎 不在轉儲中的對象。 現在他們在轉儲對象之間 代表實際的依賴關系(可能是間接的)。
* 當備份多個數據庫對象時,提高pg_dump的性能(Tom Lane)
### E.8.3.11\. [libpq](#calibre_link-496)
* 允許libpq連接 字符串有[URI](#calibre_link-458) 的格式(Alexander Shulgin)
該語法以`postgres://`開頭。 這可以允許應用程序為URI表示數據庫連接避免實現它們自身解析器。
* 添加[連接選項](#calibre_link-2097) 以禁用SSL壓縮 (Laurenz Albe)
這可以用于刪除快速網絡中SSL壓縮的開銷。
* 為了更好處理大的結果集添加 [單行處理模式](#calibre_link-626)
此前,libpq將 其返回給應用程序之前總是收集內存中整個查詢結果。
* 添加`const`限定符 到函數`PQconnectdbParams`, `PQconnectStartParams`, 和`PQpingParams`的聲明(Lionel Elie Mamane)
* 允許`.pgpass`文件在密碼域中包含轉義字符(Robert Haas)
* 當必須終止進程時,嘗試庫函數使用`abort()`代替`exit()`(Peter Eisentraut)
這個選擇并不妨礙使用正常退出代碼程序, 并產生一個可以由調用者捕捉的信號。
### E.8.3.12\. 源碼
* 刪除封閉端口號(Peter Eisentraut)
不再支持下列平臺:dgux, nextstep, sunos4, svr4, ultrix4, univel, bsdi。
* 添加使用 [MS Visual Studio 2010](#calibre_link-1035)支持編譯(Brar Piening)
* 啟動使用MinGW-w64 32-位編譯器進行編譯(Lars Kanis)
* 在安裝期間安裝`plpgsql.h`到`include/server`(Heikki Linnakangas)
* 提高閂鎖裝置以包含postmaster終止的檢測(Peter Geoghegan, Heikki Linnakangas, Tom Lane)
后端進程先前必須意識到調查事件,這消除了主要原因之一。
* 支持的地方使用C靈活數組元素(Peter Eisentraut)
* 提高并行事務回歸測試(isolationtester) (Noah Misch)
* 在當前目錄中修改thread_test創建它的測試文件,而不是`/tmp` (Bruce Momjian)
* 提高flex和bison警告和錯誤報告(Tom Lane)
* 添加內存屏障支持(Robert Haas)
這是目前未使用的。
* 修改pgindent使用typedef文件(Bruce Momjian)
* 由于被發送到服務器添加處理消息鉤子(Martin Pihlak)
* 為`DROP`命令添加對象訪問鉤(KaiGai Kohei)
* 集中`DROP`處理一些對象類型(KaiGai Kohei)
* 添加pg_upgrade測試套件(Peter Eisentraut)
* 伴隨TCL 8.5.11 同步正則表達式代碼 并且改善內部處理(Tom Lane)
* 移動CRC表到libpgport, 在一個單獨的include文件中提供它們(Daniel Farina)
* 為了用于主要發布聲明 創建添加選項到git_changelog (Bruce Momjian)
* 支持Linux的`/proc/self/oom_score_adj` API (Tom Lane)
### E.8.3.13\. 額外模塊
* 通過使用libpq的新單行處理模式提高[dblink](#calibre_link-63)的效率 (Kyotaro Horiguchi, Marko Kreen)
這個改進不適用于`dblink_send_query()`/`dblink_get_result()`。
* 在[file_fdw](#calibre_link-380)中支持`force_not_null`選項(Shigeru Hanada)
* 為[pg_archivecleanup](#calibre_link-1096)實現 演習模式(Gabriele Bartolini)
這只輸出已刪除文件名。
* 添加新的[pgbench](#calibre_link-629)切換`--unlogged-tables`, `--tablespace`和`--index-tablespace` (Robert Haas)
* 改變[pg_test_fsync](#calibre_link-1619)以測試 一定量的時間,而不是固定周期數(Bruce Momjian)
刪除`-o`/周期選項,并且添加`-s`/秒。
* 添加 [pg_test_timing](#calibre_link-1203)功能 以測量時鐘一致性和時間開銷 (Ants Aasma, Greg Smith)
* 添加[tcn](#calibre_link-402)(觸發變更通知) 模塊在表變更上生成`NOTIFY`事件(Kevin Grittner)
#### E.8.3.13.1\. [pg_upgrade](#calibre_link-638)
* 調整pg_upgrade環境變量(Bruce Momjian)
重命名data,bin和以`PG`開頭的port環境變量, 支持`PGPORTOLD`/`PGPORTNEW`, 取代`PGPORT`。
* 檢查pg_upgrade記錄和錯誤報告(Bruce Momjian)
創建四個附加的日志文件,并且成功時刪除它們。 添加`-r`/`--retain`選項無條件的保留這些文件。同時 刪除不必要的pg_upgrade選項`-g`/`-G`/`-l`選項, 固定日志文件的權限。
* 使pg_upgrade創建一個腳本增量 生成更精確的優化統計(Bruce Momjian)
這降低了升級后產生最小的集群統計所需要的時間。
* 允許pg_upgrade更新沒有`postgres`數據庫的舊的集群(Bruce Momjian)
* 允許pg_upgrade處理新的或舊的數據庫丟失情況,只要它們是空的(Bruce Momjian)
* 允許pg_upgrade處理配置目錄安裝(Bruce Momjian)
* 在pg_upgrade中,添加`-o`/`-O`選項傳遞參數到服務器(Bruce Momjian)
對配置目錄安裝有作用。
* 改變pg_upgrade使用缺省port 50432(Bruce Momjian)
這有助于在更新期間避免意外的客戶端連接。
* 減少pg_upgrade集群鎖定(Bruce Momjian)
具體來說,如果使用鏈接模式,那么只鎖定舊的集群。 并且在存儲模式之后執行。
#### E.8.3.13.2\. [pg_stat_statements](#calibre_link-394)
* 允許pg_stat_statements通過SQL文本標準化聚集類似查詢(Peter Geoghegan, Tom Lane)
使用非參數化SQL應用程序的用戶可以沒有詳細的日志分析監控查詢性能。
* 增加臟塊和寫入塊計算以及讀/寫時間到pg_stat_statements (Robert Haas, Ants Aasma)
* 避免pg_stat_statements來自 `PREPARE`和`EXECUTE`命令的重復計算(Tom Lane)
#### E.8.3.13.3\. [sepgsql](#calibre_link-398)
* 在全局對象上支持`SECURITY LABEL` (KaiGai Kohei, Robert Haas)
具體來說,添加數據庫安全標簽,表空間,和角色。
* 允許sepgsql接受數據庫標簽(KaiGai Kohei)
* 在各種對象的創建過程中執行sepgsql權限檢查(KaiGai Kohei)
* 添加`sepgsql_setcon()`和相關函數以控制sepgsql安全域(KaiGai Kohei)
* 添加sepgsql用戶空間訪問緩存以提高性能(KaiGai Kohei)
### E.8.3.14\. 文檔
* 使用網站上的樣式表添加規則用以隨意編譯HTML文檔(Magnus Hagander)
使用`gmake STYLE=website draft`.
* 改善`EXPLAIN`文檔(Tom Lane)
* 記錄用戶/數據庫名通過命令行工具如vacuumdb 使用雙引號保存(Bruce Momjian)
* 記錄通過客戶端MD5認證返回的實際字符串(Cyan Ogilvie)
* 反對在`CREATE TEMP TABLE`中使用`GLOBAL`和`LOCAL` (Noah Misch)
PostgreSQL早已把這些關鍵詞看作沒有操作, 并且繼續這樣做;但在未來他們可能意味著SQL標準的內容, 所以應用程序應避免使用它們。
- 前言
- 何為PostgreSQL?
- PostgreSQL簡史
- 格式約定
- 更多信息
- 臭蟲匯報指導
- I. 教程
- Chapter 1. 從頭開始
- 1.1. 安裝
- 1.2. 體系基本概念
- 1.3. 創建一個數據庫
- 1.4. 訪問數據庫
- Chapter 2. SQL語言
- 2.1. 介紹
- 2.2. 概念
- 2.3. 創建新表
- 2.4. 向表中添加行
- 2.5. 查詢一個表
- 2.6. 在表間連接
- 2.7. 聚集函數
- 2.8. 更新
- 2.9. 刪除
- Chapter 3. 高級特性
- 3.1. 介紹
- 3.2. 視圖
- 3.3. 外鍵
- 3.4. 事務
- 3.5. 窗口函數
- 3.6. 繼承
- 3.7. 結論
- II. SQL 語言
- Chapter 4. SQL語法
- 4.1. 詞法結構
- 4.2. 值表達式
- 4.3. 調用函數
- Chapter 5. 數據定義
- 5.1. 表的基本概念
- 5.2. 缺省值
- 5.3. 約束
- 5.4. 系統字段
- 5.5. 修改表
- 5.6. 權限
- 5.7. 模式
- 5.8. 繼承
- 5.9. 分區
- 5.10. 外部數據
- 5.11. 其它數據庫對象
- 5.12. 依賴性跟蹤
- Chapter 6. 數據操作
- 6.1. 插入數據
- 6.2. 更新數據
- 6.3. 刪除數據
- Chapter 7. 查詢
- 7.1. 概述
- 7.2. 表表達式
- 7.3. 選擇列表
- 7.4. 組合查詢
- 7.5. 行排序
- 7.6. LIMIT和OFFSET
- 7.7. VALUES列表
- 7.8. WITH 查詢 (通用表表達式)
- Chapter 8. 數據類型
- 8.1. 數值類型
- 8.2. 貨幣類型
- 8.3. 字符類型
- 8.4. 二進制數據類型
- 8.5. 日期/時間類型
- 8.6. 布爾類型
- 8.7. 枚舉類型
- 8.8. 幾何類型
- 8.9. 網絡地址類型
- 8.10. 位串類型
- 8.11. 文本搜索類型
- 8.12. UUID 類型
- 8.13. XML 類型
- 8.14. JSON 類型
- 8.15. Arrays
- 8.16. 復合類型
- 8.17. 范圍類型
- 8.18. 對象標識符類型
- 8.19. 偽類型
- Chapter 9. 函數和操作符
- 9.1. 邏輯操作符
- 9.2. 比較操作符
- 9.3. 數學函數和操作符
- 9.4. 字符串函數和操作符
- 9.5. 二進制字符串函數和操作符
- 9.6. 位串函數和操作符
- 9.7. 模式匹配
- 9.8. 數據類型格式化函數
- 9.9. 時間/日期函數和操作符
- 9.10. 支持枚舉函數
- 9.11. 幾何函數和操作符
- 9.12. 網絡地址函數和操作符
- 9.13. 文本檢索函數和操作符
- 9.14. XML 函數
- 9.15. JSON 函數和操作符
- 9.16. 序列操作函數
- 9.17. 條件表達式
- 9.18. 數組函數和操作符
- 9.19. 范圍函數和操作符
- 9.20. 聚集函數
- 9.21. 窗口函數
- 9.22. 子查詢表達式
- 9.23. 行和數組比較
- 9.24. 返回集合的函數
- 9.25. 系統信息函數
- 9.26. 系統管理函數
- 9.27. 觸發器函數
- 9.28. 事件觸發函數
- Chapter 10. 類型轉換
- 10.1. 概述
- 10.2. 操作符
- 10.3. 函數
- 10.4. 值存儲
- 10.5. UNION, CASE 和相關構造
- Chapter 11. 索引
- 11.1. 介紹
- 11.2. 索引類型
- 11.3. 多字段索引
- 11.4. 索引和ORDER BY
- 11.5. 組合多個索引
- 11.6. 唯一索引
- 11.7. 表達式上的索引
- 11.8. 部分索引
- 11.9. 操作符類和操作符族
- 11.10. 索引和排序
- 11.11. 檢查索引的使用
- Chapter 12. 全文檢索
- 12.1. 介紹
- 12.2. 表和索引
- 12.3. 控制文本搜索
- 12.4. 附加功能
- 12.5. 解析器
- 12.6. 詞典
- 12.7. 配置實例
- 12.8. 測試和調試文本搜索
- 12.9. GiST和GIN索引類型
- 12.10. psql支持
- 12.11. 限制
- 12.12. 來自8.3之前文本搜索的遷移
- Chapter 13. 并發控制
- 13.1. 介紹
- 13.2. 事務隔離
- 13.3. 明確鎖定
- 13.4. 應用層數據完整性檢查
- 13.5. 鎖和索引
- Chapter 14. 性能提升技巧
- 14.1. 使用EXPLAIN
- 14.2. 規劃器使用的統計信息
- 14.3. 用明確的JOIN控制規劃器
- 14.4. 向數據庫中添加記錄
- 14.5. 非持久性設置
- III. 服務器管理
- Chapter 15. 源碼安裝
- 15.1. 簡版
- 15.2. 要求
- 15.3. 獲取源碼
- 15.4. 安裝過程
- 15.5. 安裝后設置
- 15.6. 支持平臺
- 15.7. 特定平臺注意事項
- Chapter 16. Windows下用源代碼安裝
- 16.1. 用Visual C++或Microsoft Windows SDK編譯
- 16.2. 用Visual C++或 Borland C++編譯 libpq
- Chapter 17. 服務器設置和操作
- 17.1. PostgreSQL用戶賬戶
- 17.2. 創建數據庫集群
- 17.3. 啟動數據庫服務器
- 17.4. 管理內核資源
- 17.5. 關閉服務器
- 17.6. 升級一個 PostgreSQL 集群
- 17.7. 防止服務器欺騙
- 17.8. 加密選項
- 17.9. 用 SSL 進行安全的 TCP/IP 連接
- 17.10. 用SSH隧道進行安全 TCP/IP 連接
- 17.11. 在Windows上注冊事件日志
- Chapter 18. 服務器配置
- 18.1. 設置參數
- 18.2. 文件位置
- 18.3. 連接和認證
- 18.4. 資源消耗
- 18.5. 預寫式日志
- 18.6. 復制
- 18.7. 查詢規劃
- 18.8. 錯誤報告和日志
- 18.9. 運行時統計
- 18.10. 自動清理
- 18.11. 客戶端連接缺省
- 18.12. 鎖管理
- 18.13. 版本和平臺兼容性
- 18.14. Error Handling
- 18.15. 預置選項
- 18.16. 自定義選項
- 18.17. 開發人員選項
- 18.18. 短選項
- Chapter 19. 用戶認證
- 19.1. pg_hba.conf文件
- 19.2. 用戶名映射
- 19.3. 認證方法
- 19.4. 用戶認證
- Chapter 20. 數據庫角色
- 20.1. 數據庫角色
- 20.2. 角色屬性
- 20.3. 角色成員
- 20.4. 函數和觸發器安全
- Chapter 21. 管理數據庫
- 21.1. 概述
- 21.2. 創建一個數據庫
- 21.3. 模板數據庫
- 21.4. 數據庫配置
- 21.5. 刪除數據庫
- 21.6. 表空間
- Chapter 22. 區域
- 22.1. 區域支持
- 22.2. 排序規則支持
- 22.3. 字符集支持
- Chapter 23. 日常數據庫維護工作
- 23.1. 日常清理
- 23.2. 經常重建索引
- 23.3. 日志文件維護
- Chapter 24. 備份與恢復
- 24.1. SQL轉儲
- 24.2. 文件系統級別備份
- 24.3. 在線備份以及即時恢復(PITR)
- Chapter 25. 高可用性與負載均衡,復制
- 25.1. 不同解決方案的比較
- 25.2. 日志傳送備份服務器
- 25.3. 失效切換
- 25.4. 日志傳送的替代方法
- 25.5. 熱備
- Chapter 26. 恢復配置
- 26.1. 歸檔恢復設置
- 26.2. 恢復目標設置
- 26.3. 備用服務器設置
- Chapter 27. 監控數據庫的活動
- 27.1. 標準Unix工具
- 27.2. 統計收集器
- 27.3. 查看鎖
- 27.4. 動態跟蹤
- Chapter 28. 監控磁盤使用情況
- 28.1. 判斷磁盤的使用量
- 28.2. 磁盤滿導致的失效
- Chapter 29. 可靠性和預寫式日志
- 29.1. 可靠性
- 29.2. 預寫式日志(WAL)
- 29.3. 異步提交
- 29.4. WAL 配置
- 29.5. WAL 內部
- Chapter 30. 回歸測試
- 30.1. 運行測試
- 30.2. 測試評估
- 30.3. 平臺相關的比較文件
- 30.4. 測試覆蓋率檢查
- IV. 客戶端接口
- Chapter 31. libpq - C 庫
- 31.1. 數據庫連接控制函數
- 31.2. 連接狀態函數
- 31.3. 命令執行函數
- 31.4. 異步命令處理
- 31.5. 逐行檢索查詢結果
- 31.6. 取消正在處理的查詢
- 31.7. 捷徑接口
- 31.8. 異步通知
- 31.9. 與COPY命令相關的函數
- 31.10. 控制函數
- 31.11. 各種函數
- 31.12. 注意信息處理
- 31.13. 事件系統
- 31.14. 環境變量
- 31.15. 口令文件
- 31.16. 連接服務的文件
- 31.17. LDAP查找連接參數
- 31.18. SSL 支持
- 31.19. 在多線程程序里的行為
- 31.20. 制作libpq程序
- 31.21. 例子程序
- Chapter 32. 大對象
- 32.1. 介紹
- 32.2. 實現特點
- 32.3. 客戶端接口
- 32.4. 服務器端函數
- 32.5. 例子程序
- Chapter 33. ECPG - 在C中嵌入SQL
- 33.1. 概念
- 33.2. 管理數據庫連接
- 33.3. 運行SQL命令
- 33.4. 使用宿主變量
- 33.5. 動態SQL
- 33.6. pgtypes 庫
- 33.7. 使用描述符范圍
- 33.8. 錯誤處理
- 33.9. 預處理器指令
- 33.10. 處理嵌入的SQL程序
- 33.11. 庫函數
- 33.12. 大對象
- 33.13. C++應用程序
- 33.14. 嵌入的SQL命令
- ALLOCATE DESCRIPTOR
- CONNECT
- DEALLOCATE DESCRIPTOR
- DECLARE
- DESCRIBE
- DISCONNECT
- EXECUTE IMMEDIATE
- GET DESCRIPTOR
- OPEN
- PREPARE
- SET AUTOCOMMIT
- SET CONNECTION
- SET DESCRIPTOR
- TYPE
- VAR
- WHENEVER
- 33.15. Informix兼容模式
- 33.16. 內部
- Chapter 34. 信息模式
- 34.1. 關于這個模式
- 34.2. 數據類型
- 34.3. information_schema_catalog_name
- 34.4. administrable_role_authorizations
- 34.5. applicable_roles
- 34.6. attributes
- 34.7. character_sets
- 34.8. check_constraint_routine_usage
- 34.9. check_constraints
- 34.10. collations
- 34.11. collation_character_set_applicability
- 34.12. column_domain_usage
- 34.13. column_options
- 34.14. column_privileges
- 34.15. column_udt_usage
- 34.16. columns
- 34.17. constraint_column_usage
- 34.18. constraint_table_usage
- 34.19. data_type_privileges
- 34.20. domain_constraints
- 34.21. domain_udt_usage
- 34.22. domains
- 34.23. element_types
- 34.24. enabled_roles
- 34.25. foreign_data_wrapper_options
- 34.26. foreign_data_wrappers
- 34.27. foreign_server_options
- 34.28. foreign_servers
- 34.29. foreign_table_options
- 34.30. foreign_tables
- 34.31. key_column_usage
- 34.32. parameters
- 34.33. referential_constraints
- 34.34. role_column_grants
- 34.35. role_routine_grants
- 34.36. role_table_grants
- 34.37. role_udt_grants
- 34.38. role_usage_grants
- 34.39. routine_privileges
- 34.40. routines
- 34.41. schemata
- 34.42. sequences
- 34.43. sql_features
- 34.44. sql_implementation_info
- 34.45. sql_languages
- 34.46. sql_packages
- 34.47. sql_parts
- 34.48. sql_sizing
- 34.49. sql_sizing_profiles
- 34.50. table_constraints
- 34.51. table_privileges
- 34.52. tables
- 34.53. triggered_update_columns
- 34.54. triggers
- 34.55. udt_privileges
- 34.56. usage_privileges
- 34.57. user_defined_types
- 34.58. user_mapping_options
- 34.59. user_mappings
- 34.60. view_column_usage
- 34.61. view_routine_usage
- 34.62. view_table_usage
- 34.63. views
- V. 服務器端編程
- Chapter 35. 擴展SQL
- 35.1. 擴展性是如何實現的
- 35.2. PostgreSQL類型系統
- 35.3. 用戶定義的函數
- 35.4. 查詢語言(SQL)函數
- 35.5. 函數重載
- 35.6. 函數易失性范疇
- 35.7. 過程語言函數
- 35.8. 內部函數
- 35.9. C-語言函數
- 35.10. 用戶定義聚集
- 35.11. 用戶定義類型
- 35.12. 用戶定義操作符
- 35.13. 操作符優化信息
- 35.14. 擴展索引接口
- 35.15. 包裝相關對象到一個擴展
- 35.16. 擴展基礎設施建設
- Chapter 36. 觸發器
- 36.1. 觸發器行為概述
- 36.2. 數據改變的可視性
- 36.3. 用C寫觸發器
- 36.4. 一個完整的觸發器例子
- Chapter 37. 事件觸發器
- 37.1. 事件觸發器行為的概述
- 37.2. 事件觸發器觸發矩陣
- 37.3. 用C編寫事件觸發器函數
- 37.4. 一個完整的事件觸發器的例子
- Chapter 38. 規則系統
- 38.1. 查詢樹
- 38.2. 視圖和規則系統
- 38.3. 物化視圖
- 38.4. 在 INSERT, UPDATE, 和 DELETE上的規則
- 38.5. 規則和權限
- 38.6. 規則和命令狀態
- 38.7. 規則與觸發器的比較
- Chapter 39. 過程語言
- 39.1. 安裝過程語言
- Chapter 40. PL/pgSQL - SQL過程語言
- 40.1. 概述
- 40.2. PL/pgSQL的結構
- 40.3. 聲明
- 40.4. 表達式
- 40.5. 基本語句
- 40.6. 控制結構
- 40.7. 游標
- 40.8. 錯誤和消息
- 40.9. 觸發器過程
- 40.10. 在后臺下的PL/pgSQL
- 40.11. 開發PL/pgSQL的一些提示
- 40.12. 從Oracle PL/SQL進行移植
- Chapter 41. PL/Tcl - Tcl 過程語言
- 41.1. 概述
- 41.2. PL/Tcl 函數和參數
- 41.3. PL/Tcl里的數據值
- 41.4. PL/Tcl里的全局量
- 41.5. 在PL/Tcl里訪問數據庫
- 41.6. PL/Tcl里的觸發器過程
- 41.7. 模塊和unknown的命令
- 41.8. Tcl 過程名字
- Chapter 42. PL/Perl - Perl 過程語言
- 42.1. PL/Perl 函數和參數
- 42.2. PL/Perl里的數據值
- 42.3. 內置函數
- 42.4. PL/Perl里的全局變量
- 42.5. 可信的和不可信的 PL/Perl
- 42.6. PL/Perl 觸發器
- 42.7. 后臺PL/Perl
- Chapter 43. PL/Python - Python 過程語言
- 43.1. Python 2 vs. Python 3
- 43.2. PL/Python Functions
- 43.3. Data Values
- 43.4. Sharing Data
- 43.5. Anonymous Code Blocks
- 43.6. Trigger Functions
- 43.7. Database Access
- 43.8. Explicit Subtransactions
- 43.9. Utility Functions
- 43.10. Environment Variables
- Chapter 44. 服務器編程接口
- 44.1. 接口函數
- SPI_connect
- SPI_finish
- SPI_push
- SPI_pop
- SPI_execute
- SPI_exec
- SPI_execute_with_args
- SPI_prepare
- SPI_prepare_cursor
- SPI_prepare_params
- SPI_getargcount
- SPI_getargtypeid
- SPI_is_cursor_plan
- SPI_execute_plan
- SPI_execute_plan_with_paramlist
- SPI_execp
- SPI_cursor_open
- SPI_cursor_open_with_args
- SPI_cursor_open_with_paramlist
- SPI_cursor_find
- SPI_cursor_fetch
- SPI_cursor_move
- SPI_scroll_cursor_fetch
- SPI_scroll_cursor_move
- SPI_cursor_close
- SPI_keepplan
- SPI_saveplan
- 44.2. 接口支持函數
- SPI_fname
- SPI_fnumber
- SPI_getvalue
- SPI_getbinval
- SPI_gettype
- SPI_gettypeid
- SPI_getrelname
- SPI_getnspname
- 44.3. 內存管理
- SPI_palloc
- SPI_repalloc
- SPI_pfree
- SPI_copytuple
- SPI_returntuple
- SPI_modifytuple
- SPI_freetuple
- SPI_freetuptable
- SPI_freeplan
- 44.4. 數據改變的可視性
- 44.5. 例子
- Chapter 45. 后臺工作進程
- VI. 參考手冊
- I. SQL 命令
- ABORT
- ALTER AGGREGATE
- ALTER COLLATION
- ALTER CONVERSION
- ALTER DATABASE
- ALTER DEFAULT PRIVILEGES
- ALTER DOMAIN
- ALTER EXTENSION
- ALTER EVENT TRIGGER
- ALTER FOREIGN DATA WRAPPER
- ALTER FOREIGN TABLE
- ALTER FUNCTION
- ALTER GROUP
- ALTER INDEX
- ALTER LANGUAGE
- ALTER LARGE OBJECT
- ALTER MATERIALIZED VIEW
- ALTER OPERATOR
- ALTER OPERATOR CLASS
- ALTER OPERATOR FAMILY
- ALTER ROLE
- ALTER RULE
- ALTER SCHEMA
- ALTER SEQUENCE
- ALTER SERVER
- ALTER TABLE
- ALTER TABLESPACE
- ALTER TEXT SEARCH CONFIGURATION
- ALTER TEXT SEARCH DICTIONARY
- ALTER TEXT SEARCH PARSER
- ALTER TEXT SEARCH TEMPLATE
- ALTER TRIGGER
- ALTER TYPE
- ALTER USER
- ALTER USER MAPPING
- ALTER VIEW
- ANALYZE
- BEGIN
- CHECKPOINT
- CLOSE
- CLUSTER
- COMMENT
- COMMIT
- COMMIT PREPARED
- COPY
- CREATE AGGREGATE
- CREATE CAST
- CREATE COLLATION
- CREATE CONVERSION
- CREATE DATABASE
- CREATE DOMAIN
- CREATE EXTENSION
- CREATE EVENT TRIGGER
- CREATE FOREIGN DATA WRAPPER
- CREATE FOREIGN TABLE
- CREATE FUNCTION
- CREATE GROUP
- CREATE INDEX
- CREATE LANGUAGE
- CREATE MATERIALIZED VIEW
- CREATE OPERATOR
- CREATE OPERATOR CLASS
- CREATE OPERATOR FAMILY
- CREATE ROLE
- CREATE RULE
- CREATE SCHEMA
- CREATE SEQUENCE
- CREATE SERVER
- CREATE TABLE
- CREATE TABLE AS
- CREATE TABLESPACE
- CREATE TEXT SEARCH CONFIGURATION
- CREATE TEXT SEARCH DICTIONARY
- CREATE TEXT SEARCH PARSER
- CREATE TEXT SEARCH TEMPLATE
- CREATE TRIGGER
- CREATE TYPE
- CREATE USER
- CREATE USER MAPPING
- CREATE VIEW
- DEALLOCATE
- DECLARE
- DELETE
- DISCARD
- DO
- DROP AGGREGATE
- DROP CAST
- DROP COLLATION
- DROP CONVERSION
- DROP DATABASE
- DROP DOMAIN
- DROP EXTENSION
- DROP EVENT TRIGGER
- DROP FOREIGN DATA WRAPPER
- DROP FOREIGN TABLE
- DROP FUNCTION
- DROP GROUP
- DROP INDEX
- DROP LANGUAGE
- DROP MATERIALIZED VIEW
- DROP OPERATOR
- DROP OPERATOR CLASS
- DROP OPERATOR FAMILY
- DROP OWNED
- DROP ROLE
- DROP RULE
- DROP SCHEMA
- DROP SEQUENCE
- DROP SERVER
- DROP TABLE
- DROP TABLESPACE
- DROP TEXT SEARCH CONFIGURATION
- DROP TEXT SEARCH DICTIONARY
- DROP TEXT SEARCH PARSER
- DROP TEXT SEARCH TEMPLATE
- DROP TRIGGER
- DROP TYPE
- DROP USER
- DROP USER MAPPING
- DROP VIEW
- END
- EXECUTE
- EXPLAIN
- FETCH
- GRANT
- INSERT
- LISTEN
- LOAD
- LOCK
- MOVE
- NOTIFY
- PREPARE
- PREPARE TRANSACTION
- REASSIGN OWNED
- REFRESH MATERIALIZED VIEW
- REINDEX
- RELEASE SAVEPOINT
- RESET
- REVOKE
- ROLLBACK
- ROLLBACK PREPARED
- ROLLBACK TO SAVEPOINT
- SAVEPOINT
- SECURITY LABEL
- SELECT
- SELECT INTO
- SET
- SET CONSTRAINTS
- SET ROLE
- SET SESSION AUTHORIZATION
- SET TRANSACTION
- SHOW
- START TRANSACTION
- TRUNCATE
- UNLISTEN
- UPDATE
- VACUUM
- VALUES
- II. PostgreSQL 客戶端應用程序
- clusterdb
- createdb
- createlang
- createuser
- dropdb
- droplang
- dropuser
- ecpg
- pg_basebackup
- pg_config
- pg_dump
- pg_dumpall
- pg_isready
- pg_receivexlog
- pg_restore
- psql
- reindexdb
- vacuumdb
- III. PostgreSQL 服務器應用程序
- initdb
- pg_controldata
- pg_ctl
- pg_resetxlog
- postgres
- postmaster
- VII. 內部
- Chapter 46. PostgreSQL內部概述
- 46.1. 查詢經過的路徑
- 46.2. 連接是如何建立起來的
- 46.3. 分析器階段
- 46.4. PostgreSQL規則系統
- 46.5. 規劃器/優化器
- 46.6. 執行器
- Chapter 47. 系統表
- 47.1. 概述
- 47.2. pg_aggregate
- 47.3. pg_am
- 47.4. pg_amop
- 47.5. pg_amproc
- 47.6. pg_attrdef
- 47.7. pg_attribute
- 47.8. pg_authid
- 47.9. pg_auth_members
- 47.10. pg_cast
- 47.11. pg_class
- 47.12. pg_event_trigger
- 47.13. pg_constraint
- 47.14. pg_collation
- 47.15. pg_conversion
- 47.16. pg_database
- 47.17. pg_db_role_setting
- 47.18. pg_default_acl
- 47.19. pg_depend
- 47.20. pg_description
- 47.21. pg_enum
- 47.22. pg_extension
- 47.23. pg_foreign_data_wrapper
- 47.24. pg_foreign_server
- 47.25. pg_foreign_table
- 47.26. pg_index
- 47.27. pg_inherits
- 47.28. pg_language
- 47.29. pg_largeobject
- 47.30. pg_largeobject_metadata
- 47.31. pg_namespace
- 47.32. pg_opclass
- 47.33. pg_operator
- 47.34. pg_opfamily
- 47.35. pg_pltemplate
- 47.36. pg_proc
- 47.37. pg_range
- 47.38. pg_rewrite
- 47.39. pg_seclabel
- 47.40. pg_shdepend
- 47.41. pg_shdescription
- 47.42. pg_shseclabel
- 47.43. pg_statistic
- 47.44. pg_tablespace
- 47.45. pg_trigger
- 47.46. pg_ts_config
- 47.47. pg_ts_config_map
- 47.48. pg_ts_dict
- 47.49. pg_ts_parser
- 47.50. pg_ts_template
- 47.51. pg_type
- 47.52. pg_user_mapping
- 47.53. 系統視圖
- 47.54. pg_available_extensions
- 47.55. pg_available_extension_versions
- 47.56. pg_cursors
- 47.57. pg_group
- 47.58. pg_indexes
- 47.59. pg_locks
- 47.60. pg_matviews
- 47.61. pg_prepared_statements
- 47.62. pg_prepared_xacts
- 47.63. pg_roles
- 47.64. pg_rules
- 47.65. pg_seclabels
- 47.66. pg_settings
- 47.67. pg_shadow
- 47.68. pg_stats
- 47.69. pg_tables
- 47.70. pg_timezone_abbrevs
- 47.71. pg_timezone_names
- 47.72. pg_user
- 47.73. pg_user_mappings
- 47.74. pg_views
- Chapter 48. 前/后端協議
- 48.1. 概要
- 48.2. 消息流
- 48.3. 流復制協議
- 48.4. 消息數據類型
- 48.5. 消息格式
- 48.6. 錯誤和通知消息字段
- 48.7. 自協議 2.0 以來的變化的概述
- Chapter 49. PostgreSQL 編碼約定
- 49.1. 格式
- 49.2. 報告服務器里的錯誤
- 49.3. 錯誤消息風格指導
- Chapter 50. 本地語言支持
- 50.1. 寄語翻譯家
- 50.2. 寄語程序員
- Chapter 51. 書寫一個過程語言處理器
- Chapter 52. 寫一個外數據包
- 52.1. 外數據封裝函數
- 52.2. 外數據封裝回調程序
- 52.3. 外數據封裝輔助函數
- 52.4. 外數據封裝查詢規劃
- Chapter 53. 基因查詢優化器
- 53.1. 作為復雜優化問題的查詢處理
- 53.2. 基因算法
- 53.3. PostgreSQL 里的基因查詢優化(GEQO)
- 53.4. 進一步閱讀
- Chapter 54. 索引訪問方法接口定義
- 54.1. 索引的系統表記錄
- 54.2. 索引訪問方法函數
- 54.3. 索引掃描
- 54.4. 索引鎖的考量
- 54.5. 索引唯一性檢查
- 54.6. 索引開銷估計函數
- Chapter 55. GiST索引
- 55.1. 介紹
- 55.2. 擴展性
- 55.3. 實現
- 55.4. 例
- Chapter 56. SP-GiST索引
- 56.1. 介紹
- 56.2. 擴展性
- 56.3. 實現
- 56.4. 例
- Chapter 57. GIN索引
- 57.1. 介紹
- 57.2. 擴展性
- 57.3. 實現
- 57.4. GIN提示與技巧
- 57.5. 限制
- 57.6. 例子
- Chapter 58. 數據庫物理存儲
- 58.1. 數據庫文件布局
- 58.2. TOAST
- 58.3. 自由空間映射
- 58.4. 可見映射
- 58.5. 初始化分支
- 58.6. 數據庫分頁文件
- Chapter 59. BKI后端接口
- 59.1. BKI 文件格式
- 59.2. BKI 命令
- 59.3. 系統初始化的BKI文件的結構
- 59.4. 例子
- Chapter 60. 規劃器如何使用統計信息
- 60.1. 行預期的例子
- VIII. 附錄
- Appendix A. PostgreSQL 錯誤代碼
- Appendix B. 日期/時間支持
- B.1. 日期/時間輸入解析
- B.2. 日期/時間關鍵字
- B.3. 日期/時間配置文件
- B.4. 單位歷史
- Appendix C. SQL關鍵字
- Appendix D. SQL兼容性
- D.1. 支持的特性
- D.2. 不支持的特性
- Appendix E. 版本說明
- E.1. 版本 9.3.1
- E.2. 版本 9.3
- E.3. 版本9.2.5
- E.4. 版本9.2.4
- E.5. 版本9.2.3
- E.6. 版本9.2.2
- E.7. 版本9.2.1
- E.8. 版本9.2
- E.9. 發布9.1.10
- E.10. 發布9.1.9
- E.11. 發布9.1.8
- E.12. 發布9.1.7
- E.13. 發布9.1.6
- E.14. 發布9.1.5
- E.15. 發布9.1.4
- E.16. 發布9.1.3
- E.17. 發布9.1.2
- E.18. 發布9.1.1
- E.19. 發布9.1
- E.20. 版本 9.0.14
- E.21. 版本 9.0.13
- E.22. 版本 9.0.12
- E.23. 版本 9.0.11
- E.24. 版本 9.0.10
- E.25. 版本 9.0.9
- E.26. 版本 9.0.8
- E.27. 版本 9.0.7
- E.28. 版本 9.0.6
- E.29. 版本 9.0.5
- E.30. 版本 9.0.4
- E.31. 版本 9.0.3
- E.32. 版本 9.0.2
- E.33. 版本 9.0.1
- E.34. 版本 9.0
- E.35. 發布8.4.18
- E.36. 發布8.4.17
- E.37. 發布8.4.16
- E.38. 發布8.4.15
- E.39. 發布8.4.14
- E.40. 發布8.4.13
- E.41. 發布8.4.12
- E.42. 發布8.4.11
- E.43. 發布8.4.10
- E.44. 發布8.4.9
- E.45. 發布8.4.8
- E.46. 發布8.4.7
- E.47. 發布8.4.6
- E.48. 發布8.4.5
- E.49. 發布8.4.4
- E.50. 發布8.4.3
- E.51. 發布8.4.2
- E.52. 發布8.4.1
- E.53. 發布8.4
- E.54. 發布8.3.23
- E.55. 發布8.3.22
- E.56. 發布8.3.21
- E.57. 發布8.3.20
- E.58. 發布8.3.19
- E.59. 發布8.3.18
- E.60. 發布8.3.17
- E.61. 發布8.3.16
- E.62. 發布8.3.15
- E.63. 發布8.3.14
- E.64. 發布8.3.13
- E.65. 發布8.3.12
- E.66. 發布8.3.11
- E.67. 發布8.3.10
- E.68. 發布8.3.9
- E.69. 發布8.3.8
- E.70. 發布8.3.7
- E.71. 發布8.3.6
- E.72. 發布8.3.5
- E.73. 發布8.3.4
- E.74. 發布8.3.3
- E.75. 發布8.3.2
- E.76. 發布8.3.1
- E.77. 發布8.3
- E.78. 版本 8.2.23
- E.79. 版本 8.2.22
- E.80. 版本 8.2.21
- E.81. 版本 8.2.20
- E.82. 版本 8.2.19
- E.83. 版本 8.2.18
- E.84. 版本 8.2.17
- E.85. 版本 8.2.16
- E.86. 版本 8.2.15
- E.87. 版本 8.2.14
- E.88. 版本 8.2.13
- E.89. 版本 8.2.12
- E.90. 版本 8.2.11
- E.91. 版本 8.2.10
- E.92. 版本 8.2.9
- E.93. 版本 8.2.8
- E.94. 版本 8.2.7
- E.95. 版本 8.2.6
- E.96. 版本 8.2.5
- E.97. 版本 8.2.4
- E.98. 版本 8.2.3
- E.99. 版本 8.2.2
- E.100. 版本 8.2.1
- E.101. 版本 8.2
- E.102. 版本 8.1.23
- E.103. 版本 8.1.22
- E.104. 版本 8.1.21
- E.105. 版本 8.1.20
- E.106. 版本 8.1.19
- E.107. 版本 8.1.18
- E.108. 版本 8.1.17
- E.109. 版本 8.1.16
- E.110. 版本 8.1.5
- E.111. 版本 8.1.14
- E.112. 版本 8.1.13
- E.113. 版本 8.1.12
- E.114. 版本 8.1.11
- E.115. 版本 8.1.10
- E.116. 版本 8.1.9
- E.117. 版本 8.1.8
- E.118. 版本 8.1.7
- E.119. 版本 8.1.6
- E.120. 版本 8.1.5
- E.121. 版本 8.1.4
- E.122. 版本 8.1.3
- E.123. 版本 8.1.2
- E.124. 版本 8.1.1
- E.125. 版本 8.1
- E.126. 版本 8.0.26
- E.127. 版本 8.0.25
- E.128. 版本 8.0.24
- E.129. 版本 8.0.23
- E.130. 版本 8.0.22
- E.131. 版本 8.0.21
- E.132. 版本 8.0.20
- E.133. 版本 8.0.19
- E.134. 版本 8.0.18
- E.135. 版本 8.0.17
- E.136. 版本 8.0.16
- E.137. 版本 8.0.15
- E.138. 版本 8.0.14
- E.139. 版本 8.0.13
- E.140. 版本 8.0.12
- E.141. 版本 8.0.11
- E.142. 版本 8.0.10
- E.143. 版本 8.0.9
- E.144. 版本 8.0.8
- E.145. 版本 8.0.7
- E.146. 版本 8.0.6
- E.147. 版本 8.0.5
- E.148. 版本 8.0.4
- E.149. 版本 8.0.3
- E.150. 版本 8.0.2
- E.151. 版本 8.0.1
- E.152. 版本 8.0.0
- E.153. 版本 7.4.30
- E.154. 版本 7.4.29
- E.155. 版本 7.4.28
- E.156. 版本 7.4.27
- E.157. 版本 7.4.26
- E.158. 版本 7.4.25
- E.159. 版本 7.4.24
- E.160. 版本 7.4.23
- E.161. 版本 7.4.22
- E.162. 版本 7.4.21
- E.163. 版本 7.4.20
- E.164. 版本 7.4.19
- E.165. 版本 7.4.18
- E.166. 版本 7.4.17
- E.167. 版本 7.4.16
- E.168. 版本 7.4.15
- E.169. 版本 7.4.14
- E.170. 版本 7.4.13
- E.171. 版本 7.4.12
- E.172. 版本 7.4.11
- E.173. 版本 7.4.10
- E.174. 版本 7.4.9
- E.175. 版本 7.4.8
- E.176. 版本 7.4.7
- E.177. 版本 7.4.6
- E.178. 版本 7.4.3
- E.179. 版本 7.4.4
- E.180. 版本 7.4.3
- E.181. 版本 7.4.2
- E.182. 版本 7.4.1
- E.183. 版本 7.4
- E.184. 版本 7.3.21
- E.185. 版本 7.3.20
- E.186. 版本 7.3.19
- E.187. 版本 7.3.18
- E.188. 版本 7.3.17
- E.189. 版本 7.3.16
- E.190. 版本 7.3.15
- E.191. 版本 7.3.14
- E.192. 版本 7.3.13
- E.193. 版本 7.3.12
- E.194. 版本 7.3.11
- E.195. 版本 7.3.10
- E.196. 版本 7.3.9
- E.197. 版本 7.3.8
- E.198. 版本 7.3.7
- E.199. 版本 7.3.6
- E.200. 版本 7.3.5
- E.201. 版本 7.3.4
- E.202. 版本 7.3.3
- E.203. 版本 7.3.2
- E.204. 版本 7.3.1
- E.205. 版本 7.3
- E.206. 版本 7.2.8
- E.207. 版本 7.2.7
- E.208. 版本 7.2.6
- E.209. 版本 7.2.5
- E.210. 版本 7.2.4
- E.211. 版本 7.2.3
- E.212. 版本 7.2.2
- E.213. 版本 7.2.1
- E.214. 版本 7.2
- E.215. 版本 7.1.3
- E.216. 版本 7.1.2
- E.217. 版本 7.1.1
- E.218. 版本 7.1
- E.219. 版本 7.0.3
- E.220. 版本 7.0.2
- E.221. 版本 7.0.1
- E.222. 版本 7.0
- E.223. 版本 6.5.3
- E.224. 版本 6.5.2
- E.225. 版本 6.5.1
- E.226. 版本 6.5
- E.227. 版本 6.4.2
- E.228. 版本 6.4.1
- E.229. 版本 6.4
- E.230. 版本 6.3.2
- E.231. 版本 6.3.1
- E.232. 版本 6.3
- E.233. 版本 6.2.1
- E.234. 版本 6.2
- E.235. 版本 6.1.1
- E.236. 版本 6.1
- E.237. 版本 6.0
- E.238. 版本 1.09
- E.239. 版本 1.02
- E.240. 版本 1.01
- E.241. 版本 1.0
- E.242. Postgres95 版本 0.03
- E.243. Postgres95 版本 0.02
- E.244. Postgres95 版本 0.01
- Appendix F. 額外提供的模塊
- F.1. adminpack
- F.2. auth_delay
- F.3. auto_explain
- F.4. btree_gin
- F.5. btree_gist
- F.6. chkpass
- F.7. citext
- F.8. cube
- F.9. dblink
- dblink_connect
- dblink_connect_u
- dblink_disconnect
- dblink
- dblink_exec
- dblink_open
- dblink_fetch
- dblink_close
- dblink_get_connections
- dblink_error_message
- dblink_send_query
- dblink_is_busy
- dblink_get_notify
- dblink_get_result
- dblink_cancel_query
- dblink_get_pkey
- dblink_build_sql_insert
- dblink_build_sql_delete
- dblink_build_sql_update
- F.10. dict_int
- F.11. dict_xsyn
- F.12. dummy_seclabel
- F.13. earthdistance
- F.14. file_fdw
- F.15. fuzzystrmatch
- F.16. hstore
- F.17. intagg
- F.18. intarray
- F.19. isn
- F.20. lo
- F.21. ltree
- F.22. pageinspect
- F.23. passwordcheck
- F.24. pg_buffercache
- F.25. pgcrypto
- F.26. pg_freespacemap
- F.27. pgrowlocks
- F.28. pg_stat_statements
- F.29. pgstattuple
- F.30. pg_trgm
- F.31. postgres_fdw
- F.32. seg
- F.33. sepgsql
- F.34. spi
- F.35. sslinfo
- F.36. tablefunc
- F.37. tcn
- F.38. test_parser
- F.39. tsearch2
- F.40. unaccent
- F.41. uuid-ossp
- F.42. xml2
- Appendix G. 額外提供的程序
- G.1. 客戶端應用程序
- oid2name
- pgbench
- vacuumlo
- G.2. 服務器端應用程序
- pg_archivecleanup
- pg_standby
- pg_test_fsync
- pg_test_timing
- pg_upgrade
- pg_xlogdump
- Appendix H. 外部項目
- H.1. 客戶端接口
- H.2. 管理工具
- H.3. 過程語言
- H.4. 擴展
- Appendix I. 源代碼庫
- I.1. 獲得源代碼通過Git
- Appendix J. 文檔
- J.1. DocBook
- J.2. 工具集
- J.3. 制作文檔
- J.4. 文檔寫作
- J.5. 風格指導
- Appendix K. 首字母縮略詞
- 參考書目
- Index