Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản soi kèo bóng đá truoctran được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
Tài liệu này dành cho phiên bản soi kèo bóng đá truoctran được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng soi kèo bóng đá truoctran trang chohiện tạiPhiên bản hoặc soi kèo bóng đá truoctran trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

49.2. Lưu lượng soi kèo bóng đá truoctran báo

Phần này mô tả luồng thông báo và ngữ nghĩa của mỗi loại soi kèo bóng đá truoctran. (Chi tiết về biểu diễn chính xác của mỗi soi kèo bóng đá truoctran xuất hiện trongPhần 49.510194_10315sao chép, và chấm dứt. Ngoài ra còn có các quy định đặc biệt cho các hoạt động không đồng bộ (bao gồm các phản hồi soi kèo bóng đá truoctran báo và hủy lệnh), có thể xảy ra bất cứ lúc nào sau giai đoạn khởi động.

49.2.1. Khởi nghiệp

Để bắt đầu phiên, Frontend mở kết nối đến máy chủ và gửi soi kèo bóng đá truoctran khởi động. Thông báo này bao gồm tên của người dùng và cơ sở dữ liệu mà người dùng muốn kết nối; Nó cũng xác định phiên bản giao thức cụ thể sẽ được sử dụng. (Tùy chọn, thông báo khởi động có thể bao gồm các cài đặt bổ sung cho các tham số thời gian chạy.) Sau đó, máy chủ sử dụng thông tin này và nội dung của các tệp cấu hình của nó (chẳng hạn nhưpg_hba.conf) Để xác định xem kết nối có được chấp nhận tạm thời hay soi kèo bóng đá truoctran và yêu cầu xác thực bổ sung nào (nếu có).

Máy chủ sau đó gửi một soi kèo bóng đá truoctran báo yêu cầu xác thực phù hợp, mà Frontend phải trả lời với soi kèo bóng đá truoctran báo phản hồi xác thực phù hợp (như mật khẩu). Đối với tất cả các phương thức xác thực ngoại trừ GSSAPI và SSPI, có nhiều nhất là một yêu cầu và một phản hồi. Trong một số phương pháp, không có phản hồi nào là cần thiết từ phía trước, và do đó không có yêu cầu xác thực xảy ra. Đối với GSSAPI và SSPI, có thể cần nhiều trao đổi gói để hoàn thành xác thực.

Chu kỳ xác thực kết thúc bằng máy chủ từ chối cố gắng kết nối (ErrorResponse) hoặc gửi xác thực.

Các soi kèo bóng đá truoctran có thể từ máy chủ trong giai đoạn này là:

errorResponse

Nỗ lực kết nối đã bị từ chối. Máy chủ sau đó đóng ngay kết nối.

xác thực

12132_12188

xác thựckerberosv5

Frontend hiện phải tham gia hộp thoại xác thực Kerberos V5 (không được mô tả ở đây, soi kèo bóng đá truoctran phần của đặc tả Kerberos) với máy chủ. Nếu điều này thành công, máy chủ sẽ phản hồi với xác thực, nếu không nó sẽ phản hồi bằng soi kèo bóng đá truoctran lỗi. Điều này không còn được hỗ trợ nữa.

xác thựcCleartextPassword

Frontend hiện phải gửi Mật khẩu có chứa mật khẩu ở dạng văn bản rõ ràng. Nếu đây là mật khẩu chính xác, máy chủ sẽ phản hồi bằng xác thực, nếu không nó sẽ trả lời với soi kèo bóng đá truoctran errorResponse.

xác thựcMD5Password

12852_1323713255_13329. (Hãy ghi nhớmd5 ()Hàm trả về kết quả của nó dưới dạng chuỗi hex.)

Xác thựcScmCredential

Phản hồi này chỉ có thể đối với các kết nối miền đơn vị cục bộ trên các nền tảng hỗ trợ các soi kèo bóng đá truoctran chứng thực SCM. Frontend phải phát hành một thông báo thông tin đăng nhập SCM và sau đó gửi một byte dữ liệu duy nhất. . .

xác thựcgss

Frontend hiện phải bắt đầu đàm phán GSSAPI. Frontend sẽ gửi một mật khẩu với phần đầu tiên của luồng dữ liệu GSSAPI để đáp ứng với điều này. Nếu cần thêm soi kèo bóng đá truoctran, máy chủ sẽ phản hồi với xác thựcgsscontinue.

xác thựcpi

Frontend hiện phải bắt đầu đàm phán SSPI. Frontend sẽ gửi một mật khẩu với phần đầu tiên của luồng dữ liệu SSPI để đáp ứng với điều này. Nếu cần thêm soi kèo bóng đá truoctran, máy chủ sẽ phản hồi với xác thựcgsscontinue.

xác thựcgsscontinue

14713_15236

Đàm phánColversion

Máy chủ không hỗ trợ phiên bản giao thức nhỏ được khách hàng yêu cầu, nhưng không hỗ trợ phiên bản trước của giao thức; soi kèo bóng đá truoctran báo này cho biết phiên bản nhỏ được hỗ trợ cao nhất. soi kèo bóng đá truoctran báo này cũng sẽ được gửi nếu máy khách yêu cầu các tùy chọn giao thức không được hỗ trợ (nghĩa là bắt đầu bằng_PQ_.) trong gói khởi động. soi kèo bóng đá truoctran báo này sẽ được theo sau bởi ErrorResponse hoặc một soi kèo bóng đá truoctran báo cho biết sự thành công hay thất bại của xác thực.

Nếu Frontend soi kèo bóng đá truoctran hỗ trợ phương thức xác thực được yêu cầu bởi máy chủ, thì nó sẽ ngay lập tức đóng kết nối.

15922_16414

Trong giai đoạn này, phụ trợ sẽ cố gắng áp dụng bất kỳ cài đặt tham số thời gian chạy bổ sung nào được đưa ra trong soi kèo bóng đá truoctran báo khởi động. Nếu thành công, các giá trị này sẽ trở thành mặc định phiên. Lỗi gây ra errorResponse và exit.

Các soi kèo bóng đá truoctran có thể từ phần phụ trợ trong giai đoạn này là:

BackendKeyData

Thông báo này cung cấp dữ liệu khóa bí mật mà Frontend phải lưu nếu muốn có thể đưa ra các yêu cầu hủy sau này. Frontend không nên trả lời soi kèo bóng đá truoctran này, nhưng sẽ tiếp tục nghe một soi kèo bóng đá truoctran ReadyForQuery.

parameterstatus

soi kèo bóng đá truoctran báo này soi kèo bóng đá truoctran báo cho Frontend về cài đặt (ban đầu) hiện tại của các tham số phụ trợ, chẳng hạn nhưclient_encodinghoặcDatestyle. Frontend có thể bỏ qua soi kèo bóng đá truoctran báo này hoặc ghi lại các cài đặt để sử dụng trong tương lai; nhìn thấyPhần 49.2.6Để biết thêm chi tiết. Frontend không nên trả lời soi kèo bóng đá truoctran này, nhưng sẽ tiếp tục nghe một soi kèo bóng đá truoctran ReadyForQuery.

ReadyForQuery

Khởi nghiệp được hoàn thành. Frontend hiện có thể phát hành soi kèo bóng đá truoctran lệnh.

errorResponse

Khởi nghiệp không thành công. Kết nối được đóng sau khi gửi soi kèo bóng đá truoctran này.

noticeResponse

Một soi kèo bóng đá truoctran điệp cảnh báo đã được ban hành. Frontend sẽ hiển thị soi kèo bóng đá truoctran báo nhưng tiếp tục nghe ReadyForQuery hoặc ErrorResponse.

soi kèo bóng đá truoctran báo ReadyForQuery giống nhau mà phần phụ trợ sẽ phát hành sau mỗi chu kỳ lệnh. Tùy thuộc vào nhu cầu mã hóa của Frontend, thật hợp lý khi coi ReadyForQuery là bắt đầu một chu kỳ lệnh hoặc xem xét ReadyForQuery là kết thúc giai đoạn khởi động và mỗi chu kỳ lệnh tiếp theo.

49.2.2. Truy vấn đơn giản

Một chu trình truy vấn đơn giản được bắt đầu bởi frontend gửi một thông báo truy vấn đến phần phụ trợ. Thông báo bao gồm một lệnh SQL (hoặc lệnh) được thể hiện dưới dạng chuỗi văn bản. Phần phụ trợ sau đó gửi một hoặc nhiều soi kèo bóng đá truoctran phản hồi tùy thuộc vào nội dung của chuỗi lệnh truy vấn và cuối cùng là một thông báo phản hồi ReadyForQuery. ReadyForQuery thông báo cho Frontend rằng nó có thể gửi một lệnh mới một cách an toàn. .

soi kèo bóng đá truoctran báo phản hồi có thể từ phần phụ trợ là:

CommandComplete

lệnh SQL hoàn thành bình thường.

CopyInresponse

Phần phụ trợ đã sẵn sàng sao chép dữ liệu từ phía trước sang bảng; nhìn thấyPhần 49.2.5.

CopyouTresponse

Phần phụ trợ đã sẵn sàng sao chép dữ liệu từ bảng sang mặt trước; nhìn thấyPhần 49.2.5.

Rowdescrip

Cho biết rằng soi kèo bóng đá truoctran hàng sắp được trả lại để đáp ứng với AChọn, Fetch, v.v. Nội dung của soi kèo bóng đá truoctran báo này mô tả bố cục cột của các hàng. Điều này sẽ được theo sau bởi một soi kèo bóng đá truoctran báo Datarow cho mỗi hàng được trả về phía trước.

Datarow

soi kèo bóng đá truoctran trong những hàng hàng được trả về bởi AChọn, Fetch, ETC truy vấn.

BlessqueryResponse

soi kèo bóng đá truoctran chuỗi truy vấn trống đã được nhận ra.

ErrorResponse

Đã xảy ra lỗi.

ReadyForQuery

Xử lý chuỗi truy vấn đã hoàn tất. Một soi kèo bóng đá truoctran báo riêng được gửi để cho biết điều này vì chuỗi truy vấn có thể chứa nhiều lệnh SQL. .

noticeResponse

Một soi kèo bóng đá truoctran điệp cảnh báo đã được đưa ra liên quan đến truy vấn. Các soi kèo bóng đá truoctran báo ngoài các câu trả lời khác, tức là, phần phụ trợ sẽ tiếp tục xử lý lệnh.

Phản hồi cho AChọnTruy vấn (hoặc soi kèo bóng đá truoctran truy vấn khác trả về soi kèo bóng đá truoctran bộ hàng, chẳng hạn nhưGiải thíchhoặcshow20977_21075CopyĐến hoặc từ Frontend gọi giao thức đặc biệt như được mô tả trongPhần 49.2.5. Tất cả các loại truy vấn khác thường chỉ tạo ra một soi kèo bóng đá truoctran báo CommandComplete.

Vì soi kèo bóng đá truoctran chuỗi truy vấn có thể chứa soi kèo bóng đá truoctran số truy vấn (được phân tách bằng dấu chấm phẩy), nên có thể có soi kèo bóng đá truoctran số chuỗi phản hồi như vậy trước khi kết thúc phụ trợ xử lý chuỗi truy vấn. ReadyForQuery được phát hành khi toàn bộ chuỗi đã được xử lý và phụ trợ đã sẵn sàng để chấp nhận soi kèo bóng đá truoctran chuỗi truy vấn mới.

Nếu nhận được soi kèo bóng đá truoctran chuỗi truy vấn hoàn toàn trống (không có nội dung nào khác ngoài khoảng trắng)

Trong trường hợp lỗi, ErrorResponse được cấp theo sau là ReadyForQuery. Tất cả việc xử lý tiếp theo của chuỗi truy vấn đều bị hủy bỏ bởi ErrorResponse (ngay cả khi vẫn còn nhiều truy vấn trong đó). Lưu ý rằng điều này có thể xảy ra một phần thông qua chuỗi các soi kèo bóng đá truoctran được tạo bởi một truy vấn riêng lẻ.

Trong chế độ truy vấn đơn giản, định dạng của soi kèo bóng đá truoctran giá trị truy xuất luôn luôn là văn bản, ngoại trừ khi lệnh đã cho làFetchTừ con trỏ được khai báo vớinhị phânTùy chọn. Trong trường hợp đó, các giá trị được truy xuất ở định dạng nhị phân. Các mã định dạng được đưa ra trong soi kèo bóng đá truoctran báo Rowdescrip cho biết định dạng nào đang được sử dụng.

Một frontend phải được chuẩn bị để chấp nhận các soi kèo bóng đá truoctran ErrorResponse và NoticeResponse bất cứ khi nào nó mong đợi bất kỳ loại soi kèo bóng đá truoctran nào khác. Xem thêmPhần 49.2.6Liên quan đến các soi kèo bóng đá truoctran mà phần phụ trợ có thể tạo do các sự kiện bên ngoài.

Thực hành được đề xuất là mã Frontends theo kiểu máy trạng thái sẽ chấp nhận bất kỳ loại soi kèo bóng đá truoctran nào bất cứ lúc nào có thể có ý nghĩa, thay vì nối dây theo các giả định về chuỗi soi kèo bóng đá truoctran chính xác.

49.2.3. Truy vấn mở rộng

Giao thức truy vấn mở rộng chia giao thức truy vấn đơn giản được mô tả ở trên thành nhiều bước. Kết quả của soi kèo bóng đá truoctran bước chuẩn bị có thể được sử dụng lại nhiều lần để cải thiện hiệu quả. Hơn nữa, soi kèo bóng đá truoctran tính năng bổ sung có sẵn, chẳng hạn như khả năng cung cấp soi kèo bóng đá truoctran giá trị dữ liệu dưới dạng soi kèo bóng đá truoctran tham số riêng biệt thay vì phải chèn chúng trực tiếp vào chuỗi truy vấn.

Trong giao thức mở rộng, Frontend trước tiên sẽ gửi một thông báo phân tích cú pháp, chứa một chuỗi truy vấn văn bản, tùy chọn một số thông soi kèo bóng đá truoctran về các kiểu giữ chỗ dữ liệu và tên của một đối tượng định mức chuẩn bị đích (một chuỗi trống chọn câu lệnh được chuẩn bị không đặt tên). Phản hồi là Parsecomplete hoặc ErrorResponse. Các loại dữ liệu tham số có thể được chỉ định bởi OID; Nếu không được đưa ra, trình phân tích cú pháp cố gắng suy ra các loại dữ liệu theo cách tương tự như nó sẽ làm cho các hằng số chuỗi theo nghĩa đen chưa được xác định.

soi kèo bóng đá truoctran ý:24035_24199$n) Được sử dụng trong chuỗi truy vấn. soi kèo bóng đá truoctran trường hợp đặc biệt khác là loại tham số có thể được chỉ định làvoid(nghĩa là oid củavoidPseudotype). Điều này có nghĩa là để cho phép các ký hiệu tham số được sử dụng cho các tham số chức năng thực sự là các tham số. soi kèo bóng đá truoctran thường không có bối cảnh trong đó mộtvoidtham số có thể được sử dụng, nhưng nếu soi kèo bóng đá truoctran biểu tượng tham số như vậy xuất hiện trong danh sách tham số của hàm, nó sẽ bị bỏ qua soi kèo bóng đá truoctran cách hiệu quả. Ví dụ: cuộc gọi chức năng nhưfoo ($ 1, $ 2, $ 3, $ 4)có thể khớp với soi kèo bóng đá truoctran hàm với hai trong và hai đối số ra, nếu$ 3$ 4được chỉ định là có loạivoid.

soi kèo bóng đá truoctran ý:25088_25434

25461_26047Chuẩn bịthực thi.

Sau khi tồn tại một câu lệnh đã chuẩn bị, nó có thể được chuẩn bị để thực thi bằng soi kèo bóng đá truoctran liên kết. Thông báo ràng buộc cho biết tên của câu lệnh được chuẩn bị nguồn (chuỗi trống biểu thị câu lệnh đã chuẩn bị không tên), tên của cổng thông tin đích (chuỗi trống biểu thị cổng thông tin không tên) và các giá trị sẽ sử dụng cho bất kỳ người giữ chỗ tham số nào có trong câu lệnh đã chuẩn bị. Bộ tham số được cung cấp phải phù hợp với các thông số cần thiết bởi câu lệnh đã chuẩn bị. (Nếu bạn đã tuyên bố bất kỳvoidtham số trong soi kèo bóng đá truoctran báo phân tích cú pháp, truyền các giá trị null cho chúng trong soi kèo bóng đá truoctran báo liên kết.) Liên kết cũng chỉ định định dạng để sử dụng cho bất kỳ dữ liệu nào được trả về bởi truy vấn; Định dạng có thể được chỉ định tổng thể, hoặc trên mỗi cột. Phản hồi là BindComplete hoặc ErrorResponse.

soi kèo bóng đá truoctran ý:Sự lựa chọn giữa văn bản và đầu ra nhị phân được xác định bởi soi kèo bóng đá truoctran mã định dạng được đưa ra trong ràng buộc, bất kể lệnh SQL liên quan. Thenhị phânthuộc tính trong soi kèo bóng đá truoctran khai báo con trỏ là không liên quan khi sử dụng giao thức truy vấn mở rộng.

Kế hoạch truy vấn thường xảy ra khi soi kèo bóng đá truoctran báo liên kết được xử lý. Nếu câu lệnh đã chuẩn bị không có tham số hoặc được thực thi nhiều lần, máy chủ có thể lưu gói đã tạo và sử dụng lại nó trong các soi kèo bóng đá truoctran báo ràng buộc tiếp theo cho cùng một câu lệnh đã chuẩn bị. Tuy nhiên, nó sẽ chỉ làm như vậy nếu nó thấy rằng một kế hoạch chung có thể được tạo ra không kém hiệu quả hơn nhiều so với kế hoạch phụ thuộc vào các giá trị tham số cụ thể được cung cấp. Điều này xảy ra trong suốt cho đến khi giao thức có liên quan.

Nếu được tạo thành công, một đối tượng cổng thông soi kèo bóng đá truoctran có tên kéo dài cho đến khi kết thúc giao dịch hiện tại, trừ khi bị phá hủy rõ ràng. Một cổng thông soi kèo bóng đá truoctran không tên bị phá hủy vào cuối giao dịch hoặc ngay khi câu lệnh liên kết tiếp theo chỉ định cổng thông soi kèo bóng đá truoctran không tên là đích được phát hành. . Các cổng được đặt tên cũng có thể được tạo và truy cập ở cấp lệnh SQL, sử dụngTuyên bố con trỏFetch.

Một khi một cổng thông tin tồn tại, nó có thể được thực thi bằng soi kèo bóng đá truoctran thực thi. Thông báo thực thi chỉ định tên cổng thông tin (chuỗi trống biểu thị cổng thông tin không tên) và số lượng hàng kết quả tối đa (không có nghĩa là"Tìm nạp tất cả soi kèo bóng đá truoctran hàng"). Số lượng hàng kết quả chỉ có ý nghĩa đối với các cổng chứa các lệnh trả về các bộ hàng; Trong các trường hợp khác, lệnh luôn được thực thi để hoàn thành và số lượng hàng bị bỏ qua. Các câu trả lời có thể xảy ra đối với thực thi giống như những câu trả lời được mô tả ở trên cho các truy vấn được phát hành soi kèo bóng đá truoctran qua giao thức truy vấn đơn giản, ngoại trừ việc thực thi không khiến ReadyForQuery hoặc Rowdes mô tả.

29020_29671

Khi hoàn thành mỗi loạt các soi kèo bóng đá truoctran trình độ mở rộng, Frontend sẽ phát hành soi kèo bóng đá truoctran đồng bộ hóa. Thông báo không tham số này khiến phần phụ trợ đóng giao dịch hiện tại nếu nó không ở trongBắt đầu/cam kếtKhối giao dịch ("Đóng"29992_30460trong khiXử lý đồng bộ hóa - Điều này đảm bảo rằng có soi kèo bóng đá truoctran và chỉ có soi kèo bóng đá truoctran sẵn sàng được gửi cho mỗi lần đồng bộ hóa.)

soi kèo bóng đá truoctran ý:SYNC soi kèo bóng đá truoctran gây ra khối giao dịch được mở bằngBắt đầu30750_30879

Ngoài các hoạt động cơ bản, cần thiết này, còn có soi kèo bóng đá truoctran số hoạt động tùy chọn có thể được sử dụng với giao thức trình điều khiển mở rộng.

31053_31413

soi kèo bóng đá truoctran báo mô tả (biến thể câu lệnh) Chỉ định tên của một câu lệnh đã chuẩn bị hiện có (hoặc một chuỗi trống cho câu lệnh đã chuẩn bị không tên). Phản hồi là một soi kèo bóng đá truoctran báo tham số mô tả các tham số cần thiết cho câu lệnh, theo sau là soi kèo bóng đá truoctran báo ROWDES mô tả các hàng sẽ được trả về khi câu lệnh cuối cùng được thực thi (hoặc soi kèo bóng đá truoctran báo NODATA nếu câu lệnh sẽ không trả lại hàng). ErrorResponse được ban hành nếu không có tuyên bố đã chuẩn bị như vậy. Lưu ý rằng vì ràng buộc chưa được ban hành, các định dạng sẽ được sử dụng cho các cột được trả về vẫn chưa được biết đến phụ trợ; Các trường mã định dạng trong soi kèo bóng đá truoctran báo Rowdescrip sẽ là 0 trong trường hợp này.

Tip:32181_32359

Thông điệp gần gũi đóng một câu lệnh hoặc cổng thông soi kèo bóng đá truoctran đã chuẩn bị hiện có và phát hành tài nguyên. Nó không phải là một lỗi để phát hành gần với câu lệnh hoặc tên cổng thông soi kèo bóng đá truoctran không tồn tại. Phản hồi thường kết thúc, nhưng có thể là ErrorResponse nếu gặp một số khó khăn trong khi phát hành tài nguyên. Lưu ý rằng việc đóng một câu lệnh đã chuẩn bị hoàn toàn đóng bất kỳ cổng mở nào được xây dựng từ câu lệnh đó.

Thông báo Flush không gây ra bất kỳ đầu ra cụ thể nào được tạo, nhưng buộc phần phụ trợ để cung cấp bất kỳ dữ liệu nào đang chờ xử lý trong bộ đệm đầu ra của nó. Một tuôn ra phải được gửi sau khi bất kỳ lệnh trình độ mở rộng nào ngoại trừ đồng bộ hóa, nếu frontend muốn kiểm tra kết quả của lệnh đó trước khi ban hành nhiều lệnh hơn. Nếu không có Flush, các soi kèo bóng đá truoctran được trả về bởi phần phụ trợ sẽ được kết hợp vào số lượng gói tối thiểu có thể để giảm thiểu chi phí mạng.

soi kèo bóng đá truoctran ý:33316_33793

49.2.4. Chức năng gọi

Chức năng gọi phụ cho phép máy khách yêu cầu gọi trực tiếp của bất kỳ chức năng nào tồn tại trong cơ sở dữ liệuPG_PROCDanh mục hệ thống. Máy khách phải có quyền thực thi cho chức năng.

soi kèo bóng đá truoctran ý:Chức năng gọi phụ là soi kèo bóng đá truoctran tính năng di sản có lẽ được tránh tốt nhất trong mã mới. Kết quả tương tự có thể được thực hiện bằng cách thiết lập soi kèo bóng đá truoctran câu lệnh đã chuẩn bịChọn chức năng ($ 1, ...). Chu trình cuộc gọi chức năng sau đó có thể được thay thế bằng BIND/EXECUTE.

34544_34878

soi kèo bóng đá truoctran báo phản hồi có thể từ phần phụ trợ là:

errorResponse

Đã xảy ra lỗi.

functionCallResponse

Cuộc gọi chức năng đã được hoàn thành và trả về kết quả được đưa ra trong soi kèo bóng đá truoctran. (Lưu ý rằng giao thức cuộc gọi chức năng chỉ có thể xử lý một kết quả vô hướng, không phải là loại hàng hoặc tập hợp kết quả.)

ReadyForQuery

Xử lý cuộc gọi chức năng đã hoàn tất. ReadyForQuery sẽ luôn được gửi, cho dù việc xử lý chấm dứt thành công hay với lỗi.

noticeResponse

Một soi kèo bóng đá truoctran báo cảnh báo đã được ban hành liên quan đến cuộc gọi chức năng. Các soi kèo bóng đá truoctran báo ngoài các câu trả lời khác, tức là, phần phụ trợ sẽ tiếp tục xử lý lệnh.

49.2.5. Sao chép hoạt động

TheCopyLệnh cho phép truyền dữ liệu hàng loạt tốc độ cao đến hoặc từ máy chủ. Các hoạt động sao chép và sao chép mỗi lần chuyển kết nối thành soi kèo bóng đá truoctran giao thức phụ riêng biệt, kéo dài cho đến khi hoạt động hoàn tất.

Chế độ sao chép (truyền dữ liệu vào máy chủ) được bắt đầu khi phụ trợ thực thi ASao chép từ StdinTuyên bố SQL. Phần phụ trợ gửi một thông báo copyInresponse đến frontend. Frontend sau đó sẽ gửi soi kèo bóng đá truoctran CopyData bằng 0 hoặc nhiều hơn, tạo thành một luồng dữ liệu đầu vào. .CopyCâu lệnh SQL soi kèo bóng đá truoctran thành công với lỗi). Phần phụ trợ sau đó trở lại chế độ xử lý lệnh mà nó đã ở trướcCopy36806_36957

Trong trường hợp lỗi được phát hiện theo phụ trợ trong chế độ sao chép (bao gồm nhận thông báo copyfail), phần phụ trợ sẽ phát hành soi kèo bóng đá truoctran ErrorResponse. NếuCopyLệnh đã được cấp thông qua một thông báo trình biết mở rộng, phần phụ trợ bây giờ sẽ loại bỏ các soi kèo bóng đá truoctran phía trước cho đến khi nhận được soi kèo bóng đá truoctran đồng bộ hóa, sau đó nó sẽ phát hành ReadyForQuery và trở lại xử lý thông thường. NếuCopy37386_37620

37626_38015Sao chép từ Stdin.)

Chế độ sao chép (truyền dữ liệu từ máy chủ) được bắt đầu khi phần phụ trợ thực thiSao chép vào stdoutCâu lệnh SQL. Phần phụ trợ gửi một thông báo CopyouTresponse đến phía trước, theo sau là không có hoặc nhiều soi kèo bóng đá truoctran copyData (luôn luôn một mỗi hàng), theo sau là copyDone. Phần phụ trợ sau đó trở lại chế độ xử lý lệnh mà nó đã ở trướcCopyBắt đầu và gửi CommandComplete. Frontend không thể hủy bỏ việc chuyển nhượng (ngoại trừ bằng cách đóng kết nối hoặc đưa ra yêu cầu hủy), nhưng nó có thể loại bỏ các soi kèo bóng đá truoctran copyData và copyDone không mong muốn.

38666_38896

Có thể soi kèo bóng đá truoctran noticeResponse và parameterStatus được xen kẽ giữa các soi kèo bóng đá truoctran copyData; Frontends phải xử lý các trường hợp này và cũng nên được chuẩn bị cho các loại soi kèo bóng đá truoctran không đồng bộ khác (xemPhần 49.2.6). Nếu không, bất kỳ loại soi kèo bóng đá truoctran nào khác ngoài COPYDATA hoặc COPYDONE có thể được coi là Chế độ sao chép kết thúc.

Có soi kèo bóng đá truoctran chế độ liên quan đến bản sao khác được gọi là Copy-Both, cho phép truyền dữ liệu hàng loạt tốc độ cao sangTừ máy chủ. Copy-Both Mode được bắt đầu khi phần phụ trợ trong chế độ Walsender thực thistart_ReplicationTuyên bố. Phần phụ trợ gửi một soi kèo bóng đá truoctran copybothresponse đến frontend. Cả phụ trợ và frontend sau đó có thể gửi soi kèo bóng đá truoctran copyData cho đến khi một trong hai đầu gửi soi kèo bóng đá truoctran copyDone. Sau khi khách hàng gửi soi kèo bóng đá truoctran CopyDone, kết nối chuyển từ chế độ sao chép-chế độ sao chép sang chế độ sao chép và máy khách không được gửi thêm bất kỳ soi kèo bóng đá truoctran copyData nào. Tương tự, khi máy chủ gửi soi kèo bóng đá truoctran CopyDone, kết nối sẽ chuyển sang chế độ sao chép và máy chủ không được gửi thêm bất kỳ soi kèo bóng đá truoctran CopyData nào. Sau khi cả hai bên đã gửi một thông báo copyDone, chế độ sao chép bị chấm dứt và phần phụ trợ trở lại chế độ xử lý lệnh. Trong trường hợp lỗi được phát hiện theo hướng phụ trợ trong chế độ sao chép-cả, phần phụ trợ sẽ phát hành soi kèo bóng đá truoctran ErrorResponse, loại bỏ các soi kèo bóng đá truoctran phía trước cho đến khi nhận được soi kèo bóng đá truoctran đồng bộ hóa, sau đó đưa ra ReadyForQuery và trở lại xử lý thông thường. Frontend nên coi việc nhận của ErrorResponse là chấm dứt bản sao theo cả hai hướng; Không có sao chép nên được gửi trong trường hợp này. Nhìn thấyPhần 49.3Để biết thêm thông soi kèo bóng đá truoctran về Subrotocol được truyền qua chế độ sao chép-cả.

soi kèo bóng đá truoctran CopyInresponse, CopyouTresponse và CopyBothResponse bao gồm các trường thông báo cho số lượng cột mỗi hàng và mã định dạng được sử dụng cho mỗi cột. (Kể từ khi triển khai hiện tại, tất cả các cột trong một đã choCopyHoạt động sẽ sử dụng cùng định dạng, nhưng thiết kế soi kèo bóng đá truoctran không giả định điều này.)

49.2.6. Hoạt động soi kèo bóng đá truoctran đồng bộ

Có một số trường hợp phụ trợ sẽ gửi soi kèo bóng đá truoctran không được nhắc cụ thể bởi luồng lệnh của Frontend. Frontends phải được chuẩn bị để đối phó với các soi kèo bóng đá truoctran này bất cứ lúc nào, ngay cả khi không tham gia vào một truy vấn. Tối thiểu, người ta nên kiểm tra các trường hợp này trước khi bắt đầu đọc phản hồi truy vấn.

Có thể tạo các soi kèo bóng đá truoctran báo của NoticeResponse được tạo do hoạt động bên ngoài; Ví dụ: nếu quản trị viên cơ sở dữ liệu ra lệnh"Fast"Tắt cơ sở dữ liệu, phần phụ trợ sẽ gửi một NoticeResponse cho biết thực tế này trước khi đóng kết nối. Theo đó, Frontends phải luôn luôn được chuẩn bị để chấp nhận và hiển thị các soi kèo bóng đá truoctran báo NoticeResponse, ngay cả khi kết nối không hoạt động.

Thông số thông báo sẽ được tạo bất cứ khi nào giá trị hoạt động thay đổi cho bất kỳ tham số nào mà phần phụ trợ soi kèo bóng đá truoctran rằng Frontend nên biết. Thông thường nhất là điều này xảy ra để đáp ứng vớisetLệnh SQL được thực hiện bởi Frontend và trường hợp này có hiệu quả đồng bộ - nhưng cũng có thể thay đổi trạng thái tham số xảy ra vì quản trị viên đã thay đổi tệp cấu hình và sau đó đã gửiSIGHUPTín hiệu cho máy chủ. Ngoài ra, nếu soi kèo bóng đá truoctransetLệnh được quay lại, một soi kèo bóng đá truoctran báo tham số thích hợp sẽ được tạo để báo cáo giá trị hiệu quả hiện tại.

Hiện tại có soi kèo bóng đá truoctran bộ tham số có dây cứng mà tham số sẽ được tạo ra: chúng làserver_version, server_encoding, client_encoding, application_name, is_superuser, session_Authorization, Datestyle, IntervalStyle, timezone, integer_datetimesStandard_Conforming_Strings. (server_encoding, timezoneinteger_datetimeskhông được báo cáo bởi soi kèo bóng đá truoctran bản phát hành trước 8.0;Standard_Conforming_Strings43419_43463IntervalStyleKhông được báo cáo bởi soi kèo bóng đá truoctran bản phát hành trước 8.4;application_nameKhông được báo cáo bởi soi kèo bóng đá truoctran bản phát hành trước 9.0.) Lưu ý rằngserver_version, server_encodinginteger_datetimeslà các tham số giả không thể thay đổi sau khi khởi động. Bộ này có thể thay đổi trong tương lai, hoặc thậm chí trở thành cấu hình. Theo đó, soi kèo bóng đá truoctran frontend chỉ cần bỏ qua tham số cho các tham số mà nó không hiểu hoặc quan tâm.

Nếu Frontend phát hành ANghe44066_4418944207_44215Lệnh được thực thi cho cùng tên kênh.

soi kèo bóng đá truoctran ý:44330_44680

49.2.7. Hủy yêu cầu đang được tiến hành

Trong quá trình xử lý truy vấn, frontend có thể yêu cầu hủy truy vấn. Yêu cầu Hủy soi kèo bóng đá truoctran được gửi trực tiếp trên kết nối mở đến phần phụ trợ vì lý do hiệu quả thực hiện: Chúng tôi soi kèo bóng đá truoctran muốn có phần phụ trợ liên tục kiểm tra đầu vào mới từ phía trước trong quá trình xử lý truy vấn. Hủy yêu cầu phải tương đối soi kèo bóng đá truoctran thường xuyên, vì vậy chúng tôi làm cho chúng hơi cồng kềnh để tránh hình phạt trong trường hợp bình thường.

45294_45646

soi kèo bóng đá truoctran báo hủyRequest sẽ bị bỏ qua trừ khi nó chứa cùng một dữ liệu khóa (khóa PID và Bí mật) được chuyển đến Frontend trong quá trình khởi động kết nối. Nếu yêu cầu khớp với khóa PID và bí mật cho một phụ trợ hiện đang thực hiện, việc xử lý truy vấn hiện tại sẽ bị hủy bỏ. (Trong quá trình triển khai hiện tại, điều này được thực hiện bằng cách gửi tín hiệu đặc biệt đến quy trình phụ trợ đang xử lý truy vấn.)

Tín hiệu hủy có thể hoặc có thể không có bất kỳ ảnh hưởng nào - ví dụ, nếu nó đến sau khi phần phụ trợ đã hoàn thành xử lý truy vấn, thì nó sẽ không có tác dụng. Nếu hủy bỏ có hiệu lực, nó sẽ dẫn đến lệnh hiện tại bị chấm dứt sớm với soi kèo bóng đá truoctran báo lỗi.

46356_46746

Vì yêu cầu hủy được gửi qua kết nối mới đến máy chủ chứ không phải trên liên kết giao tiếp phía trước/phụ trợ soi kèo bóng đá truoctran thường, nên có thể yêu cầu hủy được cấp bởi bất kỳ quy trình nào, không chỉ là truy vấn của họ sẽ bị hủy. Điều này có thể cung cấp tính linh hoạt bổ sung khi xây dựng các ứng dụng nhiều quá trình. Nó cũng đưa ra một rủi ro bảo mật, trong đó những người trái phép có thể cố gắng hủy các truy vấn. Rủi ro bảo mật được giải quyết bằng cách yêu cầu khóa bí mật được tạo động để được cung cấp trong các yêu cầu hủy bỏ.

49.2.8. Chấm dứt

Quy trình chấm dứt bình thường, duyên dáng là Frontend gửi soi kèo bóng đá truoctran chấm dứt và ngay lập tức đóng kết nối. Khi nhận được soi kèo bóng đá truoctran này, phụ trợ đóng kết nối và chấm dứt.

Trong các trường hợp hiếm hoi (chẳng hạn như tắt máy cơ sở dữ liệu được quản lý), phần phụ trợ có thể ngắt kết nối mà không cần bất kỳ yêu cầu nào để làm như vậy. Trong những trường hợp như vậy, phụ trợ sẽ cố gắng gửi một lỗi hoặc soi kèo bóng đá truoctran báo soi kèo bóng đá truoctran báo đưa ra lý do cho sự ngắt kết nối trước khi nó đóng kết nối.

Các kịch bản chấm dứt khác phát sinh từ các trường hợp thất bại khác nhau, chẳng hạn như kết xuất lõi ở đầu này hay đầu kia, mất liên kết liên lạc, mất đồng bộ hóa liên kết soi kèo bóng đá truoctran, v.v. Frontend có tùy chọn khởi chạy một phụ trợ mới bằng cách giới thiệu lại máy chủ nếu nó không muốn tự chấm dứt. Đóng kết nối cũng được khuyến khích nếu nhận được một loại soi kèo bóng đá truoctran không thể nhận ra, vì điều này có thể cho thấy mất đồng bộ hóa giới hạn soi kèo bóng đá truoctran.

Đối với việc chấm dứt bình thường hoặc bất thường, bất kỳ giao dịch mở nào được quay lại, không cam kết. Tuy nhiên, người ta nên lưu ý rằng nếu soi kèo bóng đá truoctran frontend ngắt kết nối trong khi khôngChọnTruy vấn đang được xử lý, phần phụ trợ có thể sẽ hoàn thành truy vấn trước khi nhận thấy sự ngắt kết nối. Nếu truy vấn nằm ngoài bất kỳ khối giao dịch nào (Bắt đầu...cam kếtTrình tự) Sau đó, kết quả của nó có thể được thực hiện trước khi ngắt kết nối được nhận ra.

49.2.9.SSLMã hóa phiên

nếuPOSTGRESQLđược xây dựng vớiSSL49256_49323SSL. Điều này cung cấp bảo mật truyền thông trong các môi trường nơi những kẻ tấn công có thể nắm bắt lưu lượng phiên. Để biết thêm thông soi kèo bóng đá truoctran về mã hóaPOSTGRESQLPhiên vớiSSL, xemPhần 17.9.

Để bắt đầuSSLKết nối -Crypted, Frontend ban đầu gửi soi kèo bóng đá truoctran SSLRequest thay vì StartupMessage. Máy chủ sau đó trả lời với một byte duy nhất có chứaShoặcn, chỉ ra rằng nó sẵn sàng hoặc soi kèo bóng đá truoctran muốn thực hiệnSSL, tương ứng. Mặt trận có thể đóng kết nối tại thời điểm này nếu nó soi kèo bóng đá truoctran hài lòng với phản hồi. Để tiếp tục sauS, thực hiệnSSLbắt tay khởi động (không được mô tả ở đây, soi kèo bóng đá truoctran phần củaSSLĐặc điểm kỹ thuật) với máy chủ. Nếu điều này thành công, tiếp tục gửi cho StartupMessage soi kèo bóng đá truoctran thường. Trong trường hợp này, startupMessage và tất cả các dữ liệu tiếp theo sẽ làSSL-encrypted. Để tiếp tục saun, Gửi phần khởi động soi kèo bóng đá truoctran thường và tiến hành mà không cần mã hóa.

Frontend cũng nên được chuẩn bị để xử lý phản hồi ErrorMessage với SSLRequest từ máy chủ. Điều này sẽ chỉ xảy ra nếu máy chủ có trước việc bổ sungSSLHỗ trợ choPostgreSQL. .SSL.

SSLRequest ban đầu cũng có thể được sử dụng trong một kết nối đang được mở để gửi soi kèo bóng đá truoctran DECCEQUEST.

Trong khi bản thân giao thức soi kèo bóng đá truoctran cung cấp cách để máy chủ buộcSSLMã hóa, Quản trị viên có thể định cấu hình máy chủ để từ chối soi kèo bóng đá truoctran phiên không được mã hóa dưới dạng sản phẩm phụ của kiểm tra xác thực.