本節提供變更的快速檢查清單,以協助開發人員更新現有的用戶端程式庫以支援協定 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
事件傳送器傳遞的 「payload」字串。
EmptyQueryResponse('I
')訊息過去包含一個空字串參數;此參數已被移除。
如果您在文件中發現任何不正確、與您使用特定功能的經驗不符,或需要進一步澄清的地方,請使用此表單來回報文件問題。