| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 44. 前/後端協議 | 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 OUT 的過程中不再發送。 (在 COPY IN 的時候它仍然被認為是一個終止符,但是它的使用已經廢棄了並且最終將被刪除。) 現在支持二進制 COPY。CopyInResponse 和 CopyOutResponse 消息包括只是字段數目和每個字段格式的信息域。
FunctionCall 和 FunctionCallResponse 消息的布局變化了。 FunctionCall 現在支持給函數傳遞 NULL 參數。 它同樣可以處理以文本或者二進制格式傳遞參數和檢索結果。 我們不用在認為 FunctionCall 有潛在的安全性漏洞,因為它並不提供對內部服務器數據表現形式的直接訪問。
後端在啟動的時候為它認為客戶端庫感興趣的所有參數發送發送 ParameterStatus('S')消息。 隨後,如果這些參數的任何活躍值發生變化,那麼發送一條 ParameterStatus 消息。
RowDescription 為所描述的行的每個字段 ('T')消息運載新表的 OID 和字段號數據域。 它同樣還為每個字段顯示了格式代碼。
後端不再生成 CursorResponse ('P')消息。
NotificationResponse ('A')消息有一個額外的字串域,它目前是空的, 但是以後可能可以運自阿來自 NOTIFY 時間發送者運載的額外數據。
EmptyQueryResponse ('I')以前包含一個空字串參數;這個已經刪除了。