3295_3437hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không đượ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
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng kèo bóng đá pháp trang cho​​hiện tạiPhiên bản hoặc kèo bóng đá pháp trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

44.1. Tổng kèo bóng đá pháp

Giao thức có các giai đoạn riêng cho khởi động và bình thường hoạt động. Trong giai đoạn khởi động, Frontend mở kết nối đến máy chủ và tự xác thực sự hài lòng của máy chủ. (Điều này có thể liên kèo bóng đá pháp đến một tin nhắn hoặc nhiều tin nhắn tin nhắn tùy thuộc vào phương pháp xác thực đang được sử dụng.) Nếu Tất cả đều ổn, máy chủ sau đó gửi thông tin trạng thái đến Frontend, và cuối cùng bước vào hoạt động bình thường. Ngoại trừ Thông báo yêu cầu khởi động ban đầu, phần này của giao thức là do máy chủ điều khiển.

Trong quá trình hoạt động bình thường, Frontend gửi các truy vấn và các truy vấn khác Các lệnh cho phần phụ trợ và phụ trợ gửi kết quả truy vấn trở lại và các câu trả lời khác. Có kèo bóng đá pháp vài trường hợp (chẳng hạn nhưThông báo) Trong đó phần phụ trợ sẽ gửi không được yêu cầu kèo bóng đá pháp nhắn, nhưng phần lớn phần này của phiên này là được điều khiển bởi các yêu cầu frontend.

10503_10741

Trong hoạt động bình thường, các lệnh SQL có thể được thực thi thông qua kèo bóng đá pháp trong hai giao thức phụ. Trong"Đơn giản Truy vấn "10893_11022"Truy vấn mở rộng"Giao thức, Xử lý kèo bóng đá pháp truy vấn được tách thành nhiều bước: phân tích cú pháp, liên kết kèo bóng đá pháp giá trị tham số và thực thi. Điều này cung cấp Tính linh hoạt và lợi ích hiệu suất, với chi phí thêm sự phức tạp.

Hoạt động bình thường có kèo bóng đá pháp giao thức phụ bổ sung cho đặc biệt kèo bóng đá pháp hoạt động nhưsao chép.

44.1.1. Tổng kèo bóng đá pháp nhắn tin

Tất cả giao tiếp đều thông qua kèo bóng đá pháp luồng tin nhắn. Đầu tiên byte của kèo bóng đá pháp tin nhắn xác định loại tin nhắn và loại tiếp theo Bốn byte xác định độ dài của phần còn lại của tin nhắn (cái này Số lượng độ dài bao gồm chính nó, nhưng không phải là byte loại tin nhắn). Các nội dung còn lại của tin nhắn được xác định bởi Loại tin nhắn. Vì lý do lịch sử, thông điệp đầu tiên được gửi bởi khách hàng (tin nhắn khởi động) không có Byte loại tin nhắn.

Để tránh mất đồng bộ hóa với luồng thông báo, cả máy chủ và máy khách thường đọc toàn bộ tin nhắn vào kèo bóng đá pháp bộ đệm (sử dụng số byte) trước khi thử xử lý nội dung của nó. Điều này cho phép dễ dàng phục hồi nếu phát hiện lỗi trong khi xử lý nội dung. Trong những tình huống cực đoan (chẳng hạn như không có đủ bộ nhớ để đệm thông báo), máy thu có thể sử dụng số byte để xác định số lượng đầu vào để bỏ qua trước khi nó tiếp tục đọc tin nhắn.

Ngược lại, cả máy chủ và máy khách phải cẩn thận không bao giờ Gửi kèo bóng đá pháp tin nhắn không đầy đủ. Điều này thường được thực hiện bằng cách sắp xếp Toàn bộ tin nhắn trong bộ đệm trước khi bắt đầu gửi nó. Nếu như kèo bóng đá pháp thất bại liên lạc xảy ra giữa việc gửi hoặc nhận được kèo bóng đá pháp tin nhắn, phản hồi hợp lý duy nhất là từ bỏ kết nối, vì có rất ít hy vọng phục hồi Đồng bộ hóa giới hạn tin nhắn.

44.1.2. Truy vấn mở rộng Tổng kèo bóng đá pháp

Trong giao thức Trận đấu mở rộng, thực hiện kèo bóng đá pháp lệnh SQL là chia thành nhiều bước. Trạng thái được giữ lại giữa kèo bóng đá pháp bước được biểu diễn bằng hai loại đối tượng:Câu lệnh được chuẩn bịCổng13410_13655tham số. kèo bóng đá pháp cổng thông tin đại diện cho kèo bóng đá pháp câu lệnh, với bất kỳ giá trị tham số bị thiếu nào được điền vào. (choChọnCâu nói, kèo bóng đá pháp cổng thông tin là tương đương với kèo bóng đá pháp con trỏ mở, nhưng chúng tôi chọn sử dụng kèo bóng đá pháp Thuật ngữ vì con trỏ không xử lý khôngChọncâu lệnh.)

Chu kỳ thực thi tổng thể bao gồm AParseBước, tạo ra kèo bóng đá pháp câu lệnh đã chuẩn bị từ kèo bóng đá pháp chuỗi truy vấn văn bản; kèo bóng đá phápBINDBước, tạo ra kèo bóng đá pháp cổng thông tin được đưa ra kèo bóng đá pháp tuyên bố đã chuẩn bị và Giá trị cho bất kỳ tham số cần thiết nào; và kèo bóng đá phápthực thiBước chạy truy vấn của cổng. Trong trường hợp truy vấn trả về hàng (Chọn, show, v.v.), The Bước thực thi có thể được yêu cầu chỉ lấy kèo bóng đá pháp số lượng hạn chế Hàng, để có thể cần nhiều bước thực thi để hoàn thành Hoạt động.

Phần phụ trợ có thể theo dõi nhiều câu lệnh được chuẩn bị và cổng thông tin (nhưng lưu ý rằng chúng chỉ tồn tại trong kèo bóng đá pháp phiên, và không bao giờ được chia sẻ trong các phiên). Đã chuẩn bị hiện có Các câu lệnh và cổng được tham chiếu bằng các tên được gán khi Họ đã được tạo ra. Ngoài ra, kèo bóng đá pháp"Không tên"Câu lệnh và cổng thông tin đã được chuẩn bị tồn tại. Mặc dù chúng hoạt động phần lớn giống như các đối tượng được đặt tên, Các hoạt động trên chúng được tối ưu hóa cho trường hợp thực hiện Truy vấn chỉ kèo bóng đá pháp lần và sau đó loại bỏ nó, trong khi các hoạt động trên Các đối tượng được đặt tên được tối ưu hóa dựa trên kỳ vọng của nhiều sử dụng.

44.1.3. Định dạng và định dạng Mã

15517_15603Định dạng. Kể từPostgreSQL7.4 duy nhất kèo bóng đá pháp định dạng được hỗ trợ là"Text""nhị phân", nhưng giao thức tạo ra Cung cấp cho các phần mở rộng trong tương lai. Định dạng mong muốn cho bất kỳ Giá trị được chỉ định bởi kèo bóng đá phápMã định dạng. Máy khách có thể chỉ định mã định dạng cho mỗi lần truyền Giá trị tham số và cho mỗi cột của kết quả truy vấn. Văn bản có Mã định dạng Zero, nhị phân có mã định dạng kèo bóng đá pháp và tất cả khác Mã định dạng được dành cho định nghĩa trong tương lai.

Biểu diễn văn bản của các giá trị là bất cứ chuỗi nào Được sản xuất và chấp nhận bởi các chức năng chuyển đổi đầu vào/đầu ra cho loại dữ liệu cụ thể. Trong truyền Đại diện, không có nhân vật null kéo dài; các Frontend phải thêm kèo bóng đá pháp vào các giá trị nhận được nếu muốn xử lý chúng như chuỗi C. (Định dạng văn bản không cho phép nhúng nhân tiện, nulls.)

16623_16990