本節為開發者提供了一個快速的變更列表,以方便更新現有的客戶端庫到協議 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
的終止符,但在 CSV 模式下則不是。文字模式的行為已棄用,並可能最終被移除。)支援二進位制 COPY
。CopyInResponse 和 CopyOutResponse 訊息包含指示列數和每列格式的欄位。
FunctionCall 和 FunctionCallResponse 訊息的佈局已更改。FunctionCall 現在支援向函式傳遞 NULL 引數。它還可以處理以文字或二進位制格式傳遞引數和檢索結果。由於它不再提供對內部伺服器資料表示的直接訪問,因此不再有理由將 FunctionCall 視為潛在的安全漏洞。
後端在連線啟動期間傳送 ParameterStatus(‘S
’)訊息,用於所有它認為客戶端庫感興趣的引數。隨後,每當這些引數中的任何一個的活動值發生變化時,都會發送一個 ParameterStatus 訊息。
RowDescription(‘T
’)訊息為所描述行的每一列攜帶新的表 OID 和列號欄位。它還顯示每一列的格式程式碼。
CursorResponse(‘P
’)訊息不再由後端生成。
NotificationResponse(‘A
’)訊息有一個額外的字串欄位,可以攜帶從 NOTIFY
事件傳送者傳遞的“payload”字串。
EmptyQueryResponse(‘I
’)訊息曾經包含一個空字串引數;該引數已被移除。
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。