This section describes the message flow. Có bốn Các loại luồng khác nhau tùy thuộc vào trạng thái của kết nối: Khởi động, truy vấn, gọi chức năng và chấm dứt. Ngoài ra còn có Các quy định đặc biệt cho các phản hồi và lệnh soi kèo bóng đá truoctran hủy bỏ, có thể xảy ra bất cứ lúc nào sau khi khởi động giai đoạn.
Khởi động được chia thành giai đoạn xác thực và phụ trợ Giai đoạn khởi động.
Ban đầu, Frontend gửi soi kèo bóng đá truoctran startuppacket. Các nhân viên bưu điện Sử dụng thông tin này và nội dung của tệp pg_hba.conf (5) Xác định phương pháp xác thực mà Frontend phải sử dụng. Các Postmaster sau đó trả lời với soi kèo bóng đá truoctran trong các tin nhắn sau:
Bưu điện sau đó đóng ngay kết nối.
Bưu điện sau đó bàn soi kèo bóng đá truoctran cho phụ trợ. Các Postmaster không tham gia thêm vào soi kèo bóng đá truoctran tiếp.
Frontend sau đó phải tham gia Kerberos V4 Hộp thoại Xác thực (không được mô tả ở đây) với Postmaster. Nếu điều này thành công, người bưu điện sẽ trả lời với Xác thực, nếu không nó trả lời với ErrorResponse.
Frontend sau đó phải tham gia Kerberos V5 Hộp thoại Xác thực (không được mô tả ở đây) với Postmaster. Nếu điều này thành công, người bưu điện sẽ trả lời với Xác thực, nếu không nó trả lời với ErrorResponse.
Frontend sau đó phải gửi soi kèo bóng đá truoctran uncryptedpasswordPacket. Nếu như Đây là mật khẩu chính xác, người gửi bưu điện trả lời Xác thực, nếu không nó trả lời với ErrorResponse.
Frontend sau đó phải gửi soi kèo bóng đá truoctran mã hóa được mã hóa. Nếu như Đây là mật khẩu chính xác, người gửi bưu điện trả lời Xác thực, nếu không nó trả lời với ErrorResponse.
Nếu frontend không hỗ trợ phương soi kèo bóng đá truoctran xác thực được yêu cầu bởi người nhận bưu điện, sau đó nó sẽ đóng ngay lập tức sự liên quan.
Sau khi gửi xác thực khởi chạy soi kèo bóng đá truoctran quá trình phụ trợ. Vì điều này có thể thất bại, hoặc phụ trợ có thể gặp phải soi kèo bóng đá truoctran thất bại trong khi khởi động, frontend phải đợi Đối với phần phụ trợ để thừa nhận khởi nghiệp thành công. Mặt trận Nên không gửi tin nhắn tại thời điểm này. Các tin nhắn có thể từ Phần phụ trợ trong giai đoạn này là:
Thông báo này được phát hành sau khi khởi động phụ trợ thành công. Nó cung cấp dữ liệu khóa bí mật mà frontend phải lưu nếu nó muốn có thể phát hành các yêu cầu hủy sau này. Mặt trận không nên trả lời tin nhắn này, nhưng nên tiếp tục lắng nghe soi kèo bóng đá truoctran tin nhắn ReadyForQuery.
Khởi động phụ trợ thành công. Frontend bây giờ có thể phát hành Truy vấn hoặc soi kèo bóng đá truoctran cuộc gọi chức năng.
Khởi động phụ trợ không thành công. Kết nối được đóng sau gửi tin nhắn này.
soi kèo bóng đá truoctran thông điệp cảnh báo đã được ban hành. Mặt trận nên display the message but continue listening for ReadyForQuery or ErrorResponse.
Thông báo ReadyForQuery là cùng soi kèo bóng đá truoctran tin nhắn mà phần phụ trợ sẽ Vấn đề sau mỗi chu kỳ truy vấn. 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 Chu kỳ truy vấn (và sau đó backendKeyData cho biết thành công Kết luận về giai đoạn khởi động) hoặc để xem xét ReadyForQuery là Kết thúc giai đoạn khởi động và mỗi chu kỳ truy vấn tiếp theo.
Chu kỳ truy vấn được bắt đầu bởi frontend gửi soi kèo bóng đá truoctran truy vấn thông báo cho phần phụ trợ. Phần phụ trợ sau đó gửi soi kèo bóng đá truoctran hoặc nhiều phản hồi tin nhắn tùy thuộc vào nội dung của chuỗi lệnh truy vấn và Cuối cùng là soi kèo bóng đá truoctran thông báo phản hồi ReadyForQuery. ReadyForQuery thông báo cho phía trước mà nó có thể gửi soi kèo bóng đá truoctran cách an toàn soi kèo bóng đá truoctran cuộc gọi truy vấn hoặc chức năng mới.
soi kèo bóng đá truoctran phản hồi có thể từ phần phụ trợ là:
lệnh SQL hoàn thành bình thường.
The backend is ready to copy data from the frontend to a mối quan hệ. Frontend sau đó sẽ gửi tin nhắn CopyDatarows. Phần phụ trợ sau đó sẽ trả lời bằng soi kèo bóng đá truoctran thông báo hoàn thành với soi kèo bóng đá truoctran thẻ "sao chép".
Phần phụ trợ đã sẵn sàng sao chép dữ liệu từ mối quan hệ đến phía trước. Sau đó nó gửi soi kèo bóng đá truoctran tin nhắn copyDatarows, và sau đó là soi kèo bóng đá truoctran Đã hoàn thành thông báo phản hồi với thẻ "Sao chép".
Truy vấn là soi kèo bóng đá truoctran phần chèn (l), xóa (l), update (l), Tìm nạp (l) hoặc lệnh CHỌN (L). Nếu giao dịch đã được bị hủy bỏ sau đó phụ trợ gửi soi kèo bóng đá truoctran tin nhắn hoàn thành soi kèo bóng đá truoctran thẻ của "*Bệnh tật Bang*". Nếu không các câu trả lời sau đây là đã gửi.
Đối với lệnh chèn (l), phần phụ trợ sau đó gửi soi kèo bóng đá truoctran Đã hoàn thành thông báo phản hồi với thẻ "Chènoid hàng" Ở đâurowslà số lượng của Hàng được chèn vàoidlà ID đối tượng của hàng được chèn nếuhànglà 1, nếu khôngoidlà 0.
Đối với lệnh xóa (l), phần phụ trợ sau đó gửi soi kèo bóng đá truoctran Đã hoàn thành thông báo phản hồi với thẻ "Xóahàng"Trong đóhànglà số lượng hàng bị xóa.
Để cập nhật (l), phần phụ trợ sau đó gửi soi kèo bóng đá truoctran Đã hoàn thành tin nhắn phản hồi với thẻ "Cập nhậthàng"Trong đóhànglà số lượng hàng bị xóa.
Đối với lệnh tìm nạp (l) hoặc chọn (l), phụ trợ gửi soi kèo bóng đá truoctran Thông báo Rowdescrip. Điều này sau đó được theo sau bởi soi kèo bóng đá truoctran asciirow hoặc Thông điệp Binaryrow (tùy thuộc vào việc con trỏ nhị phân có phải là được chỉ định) cho mỗi hàng được trả lại cho mặt trận. Cuối cùng, phụ trợ gửi soi kèo bóng đá truoctran tin nhắn hoàn thành Tag của "Chọn".
soi kèo bóng đá truoctran chuỗi truy vấn trống đã được công nhận. (Nhu cầu đặc biệt Phân biệt trường hợp này là lịch sử.)
Đã xảy ra lỗi.
Xử lý chuỗi truy vấn đã hoàn tất. soi kèo bóng đá truoctran riêng biệt tin nhắn đượ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. (Đã hoàn thành phản hồi đánh dấu sự kết thúc của việc xử lý soi kèo bóng đá truoctran lệnh SQL, không phải toàn bộ chuỗi.) ReadyForQuery sẽ luôn được gửi đi, cho dù xử lý chấm dứt thành công hoặc với lỗi.
soi kèo bóng đá truoctran thông điệp cảnh báo đã được đưa ra liên quan đến truy vấn. Thông báo ngoài các câu trả lời khác, tức là. phụ trợ will continue processing the command.
soi kèo bóng đá truoctran frontend phải được chuẩn bị để chấp nhận ErrorResponse và Tin nhắn noticeResponse bất cứ khi nào nó đang mong đợi bất kỳ loại tin nhắn.
Trên thực tế, có thể cho NoticeResponse đến ngay cả khi Frontend không mong đợi bất kỳ loại tin nhắn nào, nghĩa là phụ trợ là nhàn rỗi trên danh nghĩa. (Đặc biệt, phụ trợ có thể commanded to terminate by its postmaster. Trong trường hợp đó, nó sẽ gửi soi kèo bóng đá truoctran NoticeResponse trước khi đóng kết nối.) rằng phía trước kiểm tra các thông báo không đồng bộ như vậy ngay trước đó phát hành bất kỳ lệnh mới nào.
Ngoài ra, nếu frontend phát hành bất kỳ lệnh nghe (l) thì nó phải được chuẩn bị để chấp nhận soi kèo bóng đá truoctran tin nhắn bất cứ lúc nào; Xem bên dưới.
Chu kỳ cuộc gọi chức năng được bắt đầu bởi frontend gửi soi kèo bóng đá truoctran Thông báo chức năng vào phần phụ trợ. Phần phụ trợ sau đó gửi soi kèo bóng đá truoctran hoặc Thêm thông báo phản hồi tùy thuộc vào kết quả của chức năng Gọi, và cuối cùng là soi kèo bóng đá truoctran thông báo phản hồi ReadyForQuery. ReadyForQuery thông báo cho frontend rằng nó có thể gửi soi kèo bóng đá truoctran truy vấn mới soi kèo bóng đá truoctran cách an toàn hoặc gọi chức năng.
soi kèo bóng đá truoctran phản hồi có thể từ phần phụ trợ là:
Đã xảy ra lỗi.
Cuộc gọi chức năng được thực thi và trả về kết quả.
Cuộc gọi chức năng được thực thi và trả về không có kết quả.
Xử lý cuộc gọi chức năng đã hoàn tất. ReadyForQuery sẽ luôn được gửi, liệu việc xử lý chấm dứt thành công hoặc với soi kèo bóng đá truoctran lỗi.
soi kèo bóng đá truoctran thông báo cảnh báo đã được đưa ra liên quan đến Gọi chức năng. Thông 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.
Frontend phải được chuẩn bị để chấp nhận ErrorResponse và Tin nhắn noticeResponse bất cứ khi nào nó đang mong đợi bất kỳ loại tin nhắn. Ngoài ra, nếu nó đưa ra bất kỳ lệnh nghe (l) thì nó phải chuẩn bị để chấp nhận soi kèo bóng đá truoctran tin nhắn bất cứ lúc nào; nhìn thấy dưới.
Nếu soi kèo bóng đá truoctran frontend đưa ra lệnh nghe (l), thì phụ trợ sẽ Gửi tin nhắn thông báo phản hồi (không bị nhầm lẫn với NoticeResponse!) Bất cứ khi nào lệnh thông báo (l) được thực thi cho Tên thông báo giống nhau.
Phản hồi thông báo được phép tại bất kỳ điểm nào trong Giao thức (sau khi khởi động), ngoại trừ trong soi kèo bóng đá truoctran tin nhắn phụ trợ khác. Do đó, mặt tiền phải được chuẩn bị để nhận ra soi kèo bóng đá truoctran Thông báo Thông báo Tin nhắn bất cứ khi nào nó đang mong đợi bất kỳ tin nhắn nào. Thật vậy, nó sẽ có thể xử lý các thông báo tin nhắn ngay cả khi nó không tham gia vào soi kèo bóng đá truoctran truy vấn.
soi kèo bóng đá truoctran lệnh thông báo (l) đã được thực thi cho soi kèo bóng đá truoctran tên Lệnh nghe (l) trước đó đã được thực thi. Thông báo có thể được được gửi bất cứ lúc nào.
Có thể đáng chỉ ra rằng các tên được sử dụng trong Lắng nghe và thông báo các lệnh không cần phải làm gì với tên của quan hệ (bảng) trong cơ sở dữ liệu SQL. Tên thông báo là Đơn giản chỉ cần chọn tên điều kiện được chọn soi kèo bóng đá truoctran cách tùy ý.
Trong quá trình xử lý truy vấn, Frontend có thể yêu cầu hủy truy vấn bằng cách gửi soi kèo bóng đá truoctran yêu cầu thích hợp cho Bưu điện. Yêu cầu hủy không được gửi trực tiếp đến phần phụ trợ vì lý do hiệu quả thực hiện: chúng tôi không muốn có phụ trợ liên tục kiểm tra đầu vào mới từ mặt trận trong thời gian xử lý truy vấn. Hủy yêu cầu phải tương đối không 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.
Để đưa ra yêu cầu hủy bỏ, Frontend mở kết nối mới cho người nhận bưu điện và gửi tin nhắn hủyRequest, thay vì thông báo startuppacket thường sẽ được gửi qua soi kèo bóng đá truoctran Kết nối mới. Người bưu điện sẽ xử lý yêu cầu này và sau đó Đóng kết nối. For security reasons, no direct reply is made đến thông báo yêu cầu hủy.
Thông báo hủyRequest sẽ bị bỏ qua trừ khi nó chứa Cùng soi kèo bóng đá truoctran dữ liệu khóa (Key PID và Bí mật) được chuyển đến Frontend trong Kết nối khởi động. Nếu yêu cầu khớp với khóa PID và bí mật for a currently executing backend, the postmaster signals the phụ trợ để hủy bỏ xử lý truy vấn hiện tại.
Tín hiệu hủy có thể có hoặc không có bất kỳ ảnh hưởng nào --- cho Ví dụ, nếu nó đến sau khi phần phụ trợ đã hoàn thành quá trình Các truy vấn, sau đó nó sẽ không có hiệu lực. Nếu hủy bỏ là hiệu quả, nó dẫn đến lệnh hiện tại bị chấm dứt sớm với soi kèo bóng đá truoctran thông báo lỗi.
Upshot của tất cả điều này là vì lý do của cả bảo mật và Hiệu quả, Frontend không có cách trực tiếp nào để biết liệu Hủy có yêu cầu đã thành công. Nó phải tiếp tục chờ đợi phần phụ trợ Trả lời truy vấn. Việc hủy bỏ chỉ đơn giản là cải thiện tỷ lệ cược rằng truy vấn hiện tại sẽ sớm kết thúc và cải thiện tỷ lệ cược nó sẽ thất bại với soi kèo bóng đá truoctran thông báo lỗi thay vì thành công.
Vì yêu cầu Hủy được gửi đến Postmaster chứ không trên liên kết giao tiếp phía trước/phụ trợ thông thường, nó là có thể cho yêu cầu hủy được ban hành bởi bất kỳ quy trình nào, không Chỉ là frontend có truy vấn sẽ bị hủy bỏ. Điều này có thể có soi kèo bóng đá truoctran số Lợi ích của sự linh hoạt trong việc xây dựng các ứng dụng nhiều quá trình. Nó cũng đưa ra soi kèo bóng đá truoctran 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ởi yêu cầu soi kèo bóng đá truoctran khóa bí mật được tạo động để được cung cấp trong Hủy yêu cầu.
Quy trình chấm dứt bình thường, duyên dáng là Frontend Gửi tin nhắn chấm dứt và đóng ngay lập tức kết nối. TRÊN nhận được tin nhắn, phần phụ trợ ngay lập tức đóng kết nối và chấm dứt.
soi kèo bóng đá truoctran sự chấm dứt vô duyên có thể xảy ra do lỗi phần mềm (tức là, kết xuất cốt lõi) ở hai đầu. Nếu frontend hoặc phụ trợ nhìn thấy soi kèo bóng đá truoctran sự đóng cửa bất ngờ của kết nối, nó sẽ dọn dẹp và chấm dứt. Frontend có tùy chọn khởi chạy soi kèo bóng đá truoctran phụ trợ mới bằng cách tái cấu trúc bưu điện, nếu nó không muốn chấm dứt chính nó.