| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 42. 前/後端協議 | Fast Forward | Next |
本節提供一個快速的變化檢查列資料表,以便於那些視圖將現有的客戶端庫更新到 3.0 協議的開發人員。
初始化的啟動包用了一個靈活的字串列資料表格式取代了固定的格式。 請注意,執行時參數的會話預設值現在可以直接在啟動包中聲明。 (實際上,您可以在使用 options 字串之前幹這件事情, 但是因為 options 的寬度限制以及缺乏引起數值中的空白的方法,這並不是很安全的技巧。)
現在所有的消息在消息類型字元後面都有一個長度計數(除了啟動包之外,它沒有類型字元)。 同時還要注意現在 PasswordMessage 有一個類型字元。
ErrorResponse 和 NoticeResponse('E' 和 'N')消息現在包含多個字串, 從這些字串裡客戶端代碼可以組合出自己所希望的詳細程度的錯誤訊息。 請注意獨立的字串通常不是用換行符終止的,雖然在老協議裡發送的單個字串總是會用換行符終止。
ReadyForQuery ('Z')消息包括一個交易狀態指示符。
BinaryRow 和 DataRow 消息類型之間的區別不再存在了; 單個 DataRow 消息類型用於返回所有格式的資料。 請注意 DataRow 的佈局已經改變成比較容易分析。同樣, 二進制數值的資料表現形式已經改變了:它不再是直接和伺服器的內部資料表現形式綁定。
有了一種新的"擴展查詢"的子協議,它增加了前端消息類型 parse,Bind, Execute,Describe,Close,Flush,和 Sync,以及後端消息類型 ParseComplete, BindComplete,PortalSuspended,ParameterDescription, NoData,和 CloseComplete。 現有的客戶端不用關心這個子協議,但是利用這個子協議將令我們可能改進性能或者功能。
COPY 資料現在封裝到了 CopyData 和 CopyDone 消息裡。 現在有種很好的方法從正在進行的 COPY 動作中的錯誤恢復。 最後一行的特殊的 "\." 不再必須了,並且在 COPY OUT 的過程中不再發送。 (在 COPY IN 的時候它仍然被認為是一個終止符,但是它的使用已經廢棄了並且最終將被刪除。) 現在支援二進制 COPY。CopyInResponse 和 CopyOutResponse 消息包括只是字串數目和每個字串格式的訊息域。
FunctionCall 和 FunctionCallResponse 消息的佈局變化了。 FunctionCall 現在支援給函數傳遞 NULL 參數。 它同樣可以處理以文本或者二進制格式傳遞參數和檢索結果。 我們不用在認為 FunctionCall 有潛在的安全性漏洞,因為它並不提供對內部伺服器資料資料表現形式的直接訪問。
後端在啟動的時候為它認為客戶端庫感興趣的所有參數發送發送 ParameterStatus('S')消息。 隨後,如果這些參數的任何活躍值發生變化,那麼發送一條 ParameterStatus 消息。
RowDescription 為所描述的行的每個字串 ('T')消息運載新資料表的 OID 和字串號資料域。 它同樣還為每個字串顯示了格式代碼。
後端不再生成 CursorResponse ('P')消息。
NotificationResponse ('A')消息有一個額外的字串域,它目前是空的, 但是以後可能可以運自阿來自 NOTIFY 時間發送者運載的額外資料。
EmptyQueryResponse ('I')以前包含一個空字串參數;這個已經刪除了。