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 kèo bóng đá c1 đượ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 kèo bóng đá c1 được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng kèo bóng đá c1 trang chohiện tạiPhiên bản hoặc kèo bóng đá c1 trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

43.2. Lưu lượng kèo bóng đá c1 báo

Phần này mô tả luồng thông báo và ngữ nghĩa của mỗi loại kèo bóng đá c1. (Chi tiết về đại diện chính xác của mỗi thông báo xuất hiện trongsoi kèo bóng.) Có kèo bóng đá c1 số giao thức phụ 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,Copy, và chấm dứt. Ngoài ra còn có các điều khoản đặc biệt cho các hoạt động không đồng bộ (bao gồm cả phản hồi kèo bóng đá c1 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.

43.2.1. Khởi nghiệp

Để bắt đầu một phiên, một frontend mở kết nối với máy chủ và gửi một thông báo 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; nó cũng xác định phiên bản giao thức cụ thể là đã sử dụng. (Tùy chọn, thông báo khởi động có thể bao gồm bổ sung Cài đặt cho tham số thời gian chạy.) Sau đó, máy chủ sử dụng cái này thông kèo bóng đá c1 và nội dung của các tệp cấu hình của nó (như BẰNGpg_hba.conf) để xác định xem liệu kết nối được chấp nhận tạm thời và những gì bổ sung yêu cầu xác thực (nếu có).

Máy chủ sau đó gửi yêu cầu xác thực thích hợp kèo bóng đá c1, mà frontend phải trả lời một cách thích hợp Thông báo phản hồi xác thực (như mật khẩu). TRONG Nguyên tắc, chu kỳ yêu cầu/phản hồi xác thực có thể yêu cầu nhiều lần lặp, nhưng không có gì hiện tại Phương pháp xác thực Sử dụng nhiều hơn một yêu cầu và phản hồi. Trong một số phương pháp, không cần phản hồi từ Frontend, và do đó không có yêu cầu xác thực xảy ra.

Chu kỳ xác thực kết thúc với máy chủ từ chối nỗ lực kết nối (errorresponse) hoặc gửi Xác thực.

Các kèo bóng đá c1 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 đó ngay lập tức đóng kết nối.

12375_12393

Trao đổi xác thực là thành công hoàn thành.

xác thựckerberosv5

12577_12877

xác thựcCleartextPassword

Frontend bây giờ phải gửi mật khẩu 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ủ trả lời với Xác thực, nếu kèo bóng đá c1 nó trả lời với ErrorResponse.

xác thựcCryptPassword

Frontend bây giờ phải gửi mật khẩu chứa mật khẩu được mã hóa qua mật mã (3), sử dụng Muối 2 ký tự được chỉ định trong kèo bóng đá c1 báo xác thựcCryptPassword. Nếu đây là mật khẩu chính xác, máy chủ trả lời với Xác thực, nếu không nó trả lời với ErrorResponse.

xác thựcMD5Password

Frontend bây giờ phải gửi mật khẩu chứa mật khẩu được mã hóa qua MD5, sử dụng Muối 4 ký tự được chỉ định trong Thông báo xác thựcMD5Password. Nếu đây là đúng Mật khẩu, máy chủ trả lời với xác thực, nếu không thì nó phản hồi với kèo bóng đá c1 errorresponse.

Xác thựcScmCredential

Phản hồi này chỉ có thể đối với miền đơn vị địa phương Kết nối trên các nền tảng hỗ trợ chứng chỉ SCM kèo bóng đá c1. Frontend phải cấp chứng chỉ SCM thông báo và sau đó gửi một byte dữ liệu duy nhất. (Nội dung của byte dữ liệu là không thú vị; Nó chỉ được sử dụng để đảm bảo rằng máy chủ chờ đủ lâu để nhận Thông báo thông tin đăng nhập.) Nếu thông tin xác thực được chấp nhận, máy chủ phản hồi với xác thực, nếu không thì nó trả lời với một errorResponse.

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

Sau khi nhận được xác thực, frontend phải Chờ kèo bóng đá c1 thêm từ máy chủ. Trong giai đoạn này A quá trình phụ trợ đang được bắt đầu và mặt tiền chỉ là một người ngoài cuộc quan tâm. Vẫn có thể cho startup cố gắng thất bại (errorResponse), nhưng trong trường hợp bình thường Backend sẽ gửi một số kèo bóng đá c1 tham số, BackendKeyData, và cuối cùng đã sẵn sàng.

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 đã được đưa ra trong kèo bóng đá c1 báo khởi động. Nếu thành công, các giá trị này sẽ trở thành phiên mặc định. Lỗi gây ra errorResponse và exit.

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

BackendKeyData

15791_16061

parameterstatus

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

ReadyForQuery

16840_16911

errorResponse

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

noticeResponse

Một thông điệp cảnh báo đã được ban hành. Mặt trận nên Hiển thị kèo bóng đá c1 nhưng tiếp tục nghe ReadyForQuery hoặc ErrorResponse.

17348_17677

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

17809_18501

kèo bóng đá c1 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 Frontend sang kèo bóng đá c1 cái bàn; nhìn thấyPhần 43.2.5.

CopyouTresponse

19026_19106Phần 43.2.5.

Rowdescrip

cho thấy rằng các hàng sắp được trả lại Phản hồi cho AChọn, Fetch, truy vấn vv. Nội dung của cái này Thông báo 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 kèo bóng đá c1 Datarow cho mỗi hàng đã trở về phía trước.

Datarow

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

BlessqueryResponse

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

errorResponse

Đã xảy ra lỗi.

ReadyForQuery

Xử lý chuỗi truy vấn đã hoàn tất. kèo bóng đá c1 riêng biệt thông báo đượ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. (Nhãn hiệu CommandComplete kết thúc xử lý kèo bóng đá c1 lệnh SQL, không phải toàn bộ Chuỗi.) ReadyForQuery sẽ luôn được gửi, cho dù Xử lý chấm dứt thành công hoặc với lỗi.

noticeResponse

kèo bóng đá c1 thông báo 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ần phụ trợ sẽ tiếp tục xử lý lệnh.

Phản hồi cho AChọnTruy vấn (hoặc Các truy vấn khác trả về các bộ hàng, chẳng hạn nhưGiải thíchhoặcshow) Thông thường bao gồm Rowdescrip, 0 hoặc nhiều Datarow kèo bóng đá c1 và sau đó chỉ huyPlete.CopyĐến hoặc từ Frontend gọi Đặc biệt giao thức như được mô tả trongPhần 43.2.521252_21334

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

Nếu hoàn toàn trống (kèo bóng đá c1 có nội dung nào khác ngoài khoảng trắng) Chuỗi truy vấn được nhận, phản hồi là trốngqueryResponse theo sau là ReadyForQuery.

Trong trường hợp lỗi, ErrorResponse được cấp theo sau Bằng cách sẵn sàng. Tất cả việc xử lý thêm chuỗi truy vấn là 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 kèo bóng đá c1 đượ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 các giá trị được truy xuất là luôn luôn văn bản, ngoại trừ khi lệnh đã cho làFetchTừ con trỏ được khai kèo bóng đá c1 vớinhị phânTùy chọn. Trong trường hợp đó, việc lấy lại Giá trị ở định dạng nhị phân. Các mã định dạng được đưa ra trong kèo bóng đá c1 báo Rowdescrip cho biết định dạng nào đang được sử dụng.

Frontend phải được chuẩn bị để chấp nhận ErrorResponse và kèo bóng đá c1 noticeResponse bất cứ khi nào nó đang mong đợi bất kỳ loại nào khác kèo bóng đá c1. Xem thêmPhần 43.2.6Liên quan đến các kèo bóng đá c1 mà phụ trợ có thể tạo ra do Các sự kiện bên ngoài.

22855_23079

43.2.3. Truy vấn mở rộng

Giao thức truy vấn mở rộng bị phá vỡ Giao thức truy vấn đơn giản thành nhiều bước. Kết quả của Các 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, các tính năng bổ sung có sẵn, chẳng hạn như khả năng cung cấp các giá trị dữ liệu là riêng biệt tham số 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 gửi một phân tích cú pháp thông báo, chứa chuỗi truy vấn văn bản, tùy chọn một số thông kèo bóng đá c1 về các loại dữ liệu của các trình giữ chỗ tham số và Tên của một đối tượng đã chuẩn bị đích (một trống Chuỗi chọn câu lệnh đã chuẩn bị không 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 luận các loại dữ liệu theo cùng một cách như nó sẽ làm cho không cần thiết Hằng số chuỗi theo nghĩa đen.

kèo bóng đá c1 ý:kèo bóng đá c1 kiểu dữ liệu tham số có thể được để lại không xác định bằng cách đặt nó thành 0 hoặc bằng cách tạo mảng loại tham số OIDS ngắn hơn số tham số Biểu tượng ($n) Được sử dụng trong chuỗi truy vấn. Khác Trường hợp đặc biệt 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 thông số. Thông thường không có bối cảnh trong đó kèo bóng đá c1void24927_25114foo ($ 1, $ 2, $ 3, $ 4)có thể khớp với kèo bóng đá c1 hàm với hai trong và hai đối số ra, nếu$ 3$ 4là được chỉ định là có loạivoid.

kèo bóng đá c1 ý:Chuỗi truy vấn có trong phân tích cú pháp Thông báo không thể bao gồm nhiều hơn kèo bóng đá c1 câu lệnh SQL; khác a Lỗi cú pháp được báo cáo. Hạn chế này không tồn tại trong giao thức đơn giản, nhưng nó tồn tại trong giao thức mở rộng, bởi vì cho phép các tuyên bố đã chuẩn bị hoặc các cổng để chứa nhiều lệnh sẽ làm phức tạp giao thức quá mức.

25916_26532Chuẩn bịthực thi.

Một khi một câu lệnh đã chuẩn bị tồn tại, nó có thể được chuẩn bị cho Thực thi bằng một thông báo ràng buộc. Thông điệp ràng buộc cho tên của câu lệnh được chuẩn bị nguồn (chuỗi trống biểu thị Tuyên bố đã chuẩn bị không tên), tên của cổng thông kèo bóng đá c1 đích (Chuỗi trống biểu thị cổng thông kèo bóng đá c1 không tên) và các giá trị để Sử dụng cho bất kỳ người giữ chỗ tham số nào có trong quá trình chuẩn bị tuyên bố. Bộ tham số được cung cấp phải phù hợp với các tập hợp cần thiết bởi tuyên bố đã chuẩn bị. (Nếu bạn đã tuyên bố bất kỳvoidtham số trong kèo bóng đá c1 báo phân tích cú pháp, vượt qua NULL các giá trị cho chúng trong kèo bóng đá c1 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.

kèo bóng đá c1 ý:27510_27664nhị phânthuộc tính trong các khai báo con trỏ là kèo bóng đá c1 liên quan khi sử dụng giao thức truy vấn mở rộng.

Lập kế hoạch truy vấn cho các đối tượng đã chuẩn bị được đặt tên Khi nhận được kèo bóng đá c1 phân tích. Nếu một truy vấn sẽ liên tục được thực hiện với các tham số khác nhau, nó có thể là có lợi khi gửi một kèo bóng đá c1 phân tích đơn lẻ có chứa Truy vấn được tham số hóa, theo sau là nhiều ràng buộc và thực thi kèo bóng đá c1. Điều này sẽ tránh thay thế truy vấn trên mỗi thực thi.

28224_28595

kèo bóng đá c1 ý:Các kế hoạch truy vấn được tạo từ kèo bóng đá c1 tham số hóa Truy vấn có thể kém hiệu quả hơn so với các kế hoạch truy vấn được tạo ra từ kèo bóng đá c1 truy vấn tương đương với các giá trị tham số thực tế thay thế. Người lập kế hoạch truy vấn không thể đưa ra quyết định dựa trên Trên các giá trị tham số thực tế (ví dụ: tính chọn lọc chỉ mục) Khi lập kế hoạch kèo bóng đá c1 truy vấn được tham số hóa được gán cho kèo bóng đá c1 đối tượng chuẩn bị. Hình phạt có thể được tránh Khi sử dụng tuyên bố không tên, vì nó không được lên kế hoạch Cho đến khi các giá trị tham số thực tế có sẵn.

29248_29740

Nếu được tạo thành công, một đối tượng cổng thông tin có tên kéo dài cho đến khi kết thúc giao dịch hiện tại, trừ khi rõ ràng bị phá hủy. Một cổng thông tin giấu tên bị phá hủy ở 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 tin không tên là điểm đến được phát hành. (Lưu ý rằng a Thông điệp truy vấn đơn giản cũng phá hủy cổng thông tin không tên.) Được đặt tên Cổng phải được đóng một cách rõ ràng trước khi chúng có thể được xác định lại bằng một kèo bóng đá c1 ràng buộc, nhưng điều này không bắt buộc đối với Cổng thông tin. Các cổng được đặt tên cũng có thể được tạo và truy cập tại Cấp lệnh SQL, sử dụngKhai kèo bóng đá c1 Con trỏFetch.

30474_30688"Tìm nạp tất cả 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 khác Các trường hợp lệnh luôn được thực thi để hoàn thành và hàng Đếm bị bỏ qua. Các câu trả lời có thể để thực thi là Giống như những mô tả ở trên cho các truy vấn được phát hành kèo bóng đá c1 qua đơn giản Giao thức truy vấn, ngoại trừ việc thực thi không gây ra sự sẵn sàng hoặc rowdes mô tả sẽ được ban hành.

31155_31846

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

kèo bóng đá c1 ý:SYNC kèo bóng đá c1 gây ra khối giao dịch đã mở bằngbắt đầusẽ được đóng. Nó có thể phát hiện tình huống này kể từ ReadyForQuery thông báo bao gồm trạng thái giao dịch thông kèo bóng đá c1.

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

Thông báo mô tả (biến thể cổng thông kèo bóng đá c1) Chỉ định tên của một cổng thông kèo bóng đá c1 hiện có (hoặc một chuỗi trống cho cổng thông kèo bóng đá c1 không tên). Phản hồi là thông báo Rowdescrip mô tả các hàng Điều đó sẽ được trả lại bằng cách thực hiện cổng thông kèo bóng đá c1; hoặc một cái gật đầu thông báo nếu cổng thông kèo bóng đá c1 không chứa một truy vấn sẽ quay lại hàng; hoặc errorResponse nếu không có cổng thông kèo bóng đá c1 như vậy.

33765_34511

Tip:Trong hầu hết các tình huống, Frontend sẽ phát hành kèo bóng đá c1 hoặc biến thể khác của mô tả trước khi phát hành Thực thi, để đảm bảo rằng nó biết cách giải thích kết quả nó sẽ trở lại.

34834_35276

Thông báo Flush không gây ra bất kỳ đầu ra cụ thể nào được tạo ra, nhưng buộc phần phụ trợ để cung cấp bất kỳ dữ liệu đang chờ xử lý Trong bộ đệm đầu ra của nó. Một tuôn ra phải được gửi sau bất kỳ Lệnh mở rộng-Trận đấu 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 phát hành thêm lệnh. Không có sự tuôn ra, các kèo bóng đá c1 đượ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.

kèo bóng đá c1 ý:Thông báo truy vấn đơn giản xấp xỉ tương đương với loạt phân tích, ràng buộc, mô tả cổng thông tin, Thực thi, đóng, đồng bộ, sử dụng câu lệnh đã chuẩn bị không tên và đối tượng cổng thông tin và không có tham số. Một điểm khác biệt là rằng nó sẽ chấp nhận nhiều câu lệnh SQL trong truy vấn Chuỗi, tự động thực hiện liên kết/mô tả/thực thi Trình tự cho mỗi người liên tiếp. Một sự khác biệt khác là rằng nó sẽ không trả lại Parsecomplete, BindComplete, CloseComplete hoặc kèo bóng đá c1 NODATA.

43.2.4. Chức năng gọi

Chức năng gọi phụ cho phép khách hàng yêu cầu kèo bóng đá c1 cuộc 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. Khách hàng Phải có quyền thực thi cho chức năng.

kèo bóng đá c1 ý:Chức năng gọi phụ là kèo bóng đá c1 di sản Tính năng có lẽ tốt nhất là tránh trong mã mới. Tương tự Kết quả có thể được thực hiện bằng cách thiết lập kèo bóng đá c1 tuyên bố khôngChọn chức năng ($ 1, ...). Chu kỳ cuộc gọi chức năng sau đó có thể được thay thế với BIND/EXECUTE.

37244_37598

kèo bóng đá c1 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 kèo bóng đá c1. (Lưu ý rằng cuộc gọi chức năng giao thức chỉ có thể xử lý một kết quả vô hướng duy nhất, không phải loại hàng hoặc bộ 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 đi, cho dù xử lý chấm dứt thành công hoặc với lỗi.

noticeResponse

kèo bóng đá c1 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, tức là, phần phụ trợ sẽ tiếp tục xử lý yêu cầu.

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

TheCopyLệnh cho phép tốc độ cao Chuyển dữ liệu số lượng lớn vào hoặc từ máy chủ. Sao chép và sao chép hoạt động mỗi chuyển đổi kết nối thành kèo bóng đá c1 giao thức phụ, kéo dài cho đến khi hoạt động hoàn thành.

Chế độ sao chép (truyền dữ liệu vào máy chủ) được bắt đầu khi phụ trợ thực thi kèo bóng đá c1Sao chép từ Stdin39182_3967539698_39704Câu lệnh SQL bị lỗi). Các phụ trợ sau đó trở lại chế độ xử lý lệnh mà nó đã ở TrướcCopybắt đầu, sẽ hoặc giao thức truy vấn đơn giản hoặc mở rộng. Nó sẽ gửi tiếp theo CommandComplete (nếu thành công) hoặc errorResponse (nếu kèo bóng đá c1).

Trong trường hợp lỗi được phát hiện theo phụ trợ trong chế độ sao chép (bao gồm cả việc nhận kèo bóng đá c1 copyfail), phần phụ trợ sẽ phát hành một kèo bóng đá c1 ErrorResponse. NếuCopyLệnh đã được cấp thông qua trình tự mở rộng kèo bóng đá c1, phần phụ trợ bây giờ sẽ loại bỏ các kèo bóng đá c1 phía trước cho đến khi Thông báo đồng bộ được nhận, sau đó nó sẽ phát hành ReadyForQuery và trở lại xử lý bình thường. NếuCopyLệnh đã được cấp trong một truy vấn đơn giản kèo bóng đá c1, phần còn lại của kèo bóng đá c1 đó bị loại bỏ và ReadyForQuery được ban hành. Trong cả hai trường hợp, bất kỳ tiếp theo nào CopyData, copyDone hoặc kèo bóng đá c1 copyfail do frontend phát hành sẽ chỉ đơn giản là bị loại bỏ.

40748_41161Sao 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 bản sao Thông báo đến Frontend, theo sau là không hoặc nhiều COPYDATA kèo bóng đá c1 (luôn luôn một mỗi hàng), theo sau là CopyDone. Các 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 kèo bóng đá c1 copyData và copyDone không mong muốn.

Trong trường hợp lỗi được phát hiện theo hướng phụ chế độ, phần phụ trợ sẽ phát hành kèo bóng đá c1 ErrorResponse và hoàn nguyên về xử lý bình thường. Frontend nên xử lý biên lai của ErrorResponse khi chấm dứt chế độ sao chép.

Có thể kèo bóng đá c1 của NoticeResponse xen kẽ giữa các kèo bóng đá c1 copyData; Mặt trận phải xử lý trường hợp này, và nên được chuẩn bị cho sự không đồng bộ khác Các loại kèo bóng đá c1 là tốt (xemPhần 43.2.6). Nếu không, bất kỳ loại kèo bóng đá c1 nào khác ngoài copyData hoặc copyDone có thể được coi là chế độ sao chép kết thúc.

kèo bóng đá c1 CopyInresponse và CopyouTresponse bao gồm Các trường thông báo cho số lượng cột trên mỗi Hàng và mã định dạng đang được sử dụng cho mỗi cột. (Như của Trình bày triển khai, tất cả các cột trong một đã choCopyHoạt động sẽ sử dụng cùng một định dạng, nhưng Thiết kế kèo bóng đá c1 không giả định điều này.)

43.2.6. Hoạt động kèo bóng đá c1 đồng bộ

Có một số trường hợp phụ trợ sẽ gửi các kèo bóng đá c1 không được nhắc nhở cụ thể bởi Frontend's Luồng lệnh. Frontends phải được chuẩn bị để đối phó với những điều này kèo bóng đá c1 bất cứ lúc nào, ngay cả khi không tham gia vào một truy vấn. Tại 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 kèo bóng đá c1 báo NoticeResponse được tạo do hoạt động bên ngoài; Ví dụ: nếu cơ sở dữ liệu Quản trị viên lệnh A"Fast"Tắt cơ sở dữ liệu, phần phụ trợ sẽ gửi một NoticeResponse chỉ ra thực tế này trước khi đóng kết nối. Theo đó, các frontends phải luôn luôn được chuẩn bị để chấp nhận và hiển thị các kèo bóng đá c1 noticeResponse, ngay cả khi kết nối là Đang nhàn rỗi.

kèo bóng đá c1 Parameterstatus sẽ được tạo bất cứ khi nào thay đổi giá trị hoạt động cho bất kỳ tham số nào mà phụ trợ Tin rằng Frontend nên biết về. Phổ biến nhất là điều này xảy ra để đáp ứng vớisetSQL lệnh đượ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ể cho trạng thái tham số thay đổi 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 Postmaster. Ngoài ra, nếu kèo bóng đá c1setLệnh được cuộn trở lại, kèo bóng đá c1 Thông 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ó kèo bóng đá c1 bộ tham số có dây cứng mà Parameterstatus sẽ được tạo: chúng làserver_version, server_encoding, client_encoding, is_superuser, session_Authorization, Datestyle, timezone, integer_datetimesStandard_Conforming_Strings. (server_encoding, timezoneinteger_datetimeskèo bóng đá c1 được báo cáo bởi các bản phát hành trước 8.0;Standard_Conforming_Stringskèo bóng đá c1 được báo cáo bởi phát hành trước 8.1.) Lưu ý rằngserver_version, server_encodinginteger_datetimeslà giả tưởng giả đó không thể thay đổi sau khi khởi động. Tập hợp này có thể thay đổi trong Tương lai, hoặc thậm chí trở thành cấu hình. Theo đó, kèo bóng đá c1 mặt trận chỉ nên bỏ qua tham số không hiểu hoặc quan tâm đến.

Nếu kèo bóng đá c1 frontend phát hành ANghelệnh, sau đó phần phụ trợ sẽ gửi một thông báo kèo bóng đá c1 (không bị nhầm lẫn với NoticeResponse!) Bất cứ khi nàokèo bóng đá c1 báolệnh được thực thi cho Tên kèo bóng đá c1 báo giống nhau.

kèo bóng đá c1 ý:Hiện tại, thông báo chỉ có thể được gửi bên ngoài kèo bóng đá c1 giao dịch, và do đó nó sẽ không xảy ra ở giữa kèo bóng đá c1 loạt phản hồi lệnh, mặc dù nó có thể xảy ra ngay trước khi ReadyForQuery. Thiết kế không khôn ngoan Frontend Logic giả định rằng, tuy nhiên. Thực hành tốt là để có thể chấp nhận thông báo định nghĩa tại bất kỳ điểm nào trong giao thức.

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

46760_47239

Để đưa ra yêu cầu hủy bỏ, Frontend mở ra một bản mới kết nối với máy chủ và gửi kèo bóng đá c1 hủyRequest, thay vì thông điệp startupmessage mà thông thường sẽ Đã gửi qua một kết nối mới. Máy chủ sẽ xử lý cái này yêu cầu và sau đó đóng kết nối. Vì lý do bảo mật, không Trả lời trực tiếp được thực hiện cho 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 Dữ liệu chính tương tự (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 PID và Khóa bí mật cho kèo bóng đá c1 phụ trợ hiện đang thực hiện, việc xử lý Các truy vấn hiện tại bị hủy bỏ. (Trong triển khai hiện có, Điều này được thực hiện bằng cách gửi kèo bóng đá c1 tín hiệu đặc biệt đến quá trình phụ trợ đó là xử lý truy vấn.)

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

48383_48797

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 frontend/phụ trợ thông thường liên kết giao tiếp, có thể yêu cầu hủy bỏ được ban hành bởi bất kỳ quy trình nào, không chỉ là frontend mà truy vấn của họ là bị hủy bỏ. Điều này có thể có kèo bóng đá c1 số lợi ích của sự linh hoạt trong Xây dựng các ứng dụng nhiều quá trình. Nó cũng giới thiệu kèo bóng đá c1 Rủi ro bảo mật, trong đó những người trái phép có thể cố gắng hủy bỏ 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 tự động được cung cấp trong Hủy yêu cầu.

43.2.8. Chấm dứt

49525_49745

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

Các kịch bản chấm dứt khác phát sinh từ các thất bại khác nhau Các trường hợp, chẳng hạn như bãi rác lõi ở đầu này hay đầu kia, mất Liên kết truyền thông, mất đồng bộ hóa giới hạn kèo bóng đá c1, v.v ... Nếu phía trước hoặc phụ trợ sẽ thấy một sự đóng cửa bất ngờ của kết nối, nó nên làm sạch và chấm dứt. Các Frontend có tùy chọn khởi chạy một phụ trợ mới của Tái cấu trúc 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 không thể nhận ra Loại kèo bóng đá c1 được nhận, vì điều này có thể cho thấy mất Đồng bộ hóa giới hạn kèo bóng đá c1.

Để chấm dứt bình thường hoặc bất thường, bất kỳ mở nào Giao dịch được chuyển trở lại, không cam kết. kèo bóng đá c1 người nên lưu ý Tuy nhiên, nếu kèo bóng đá c1 frontend ngắt kết nối trong khi không phảiChọ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 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ể là cam kết trước khi ngắt kết nối được nhận ra.

43.2.9.SSLPhiên Mã hóa

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

Để bắt đầuSSLkết nối được kết nối, phía trước Ban đầu gửi kèo bóng đá c1 SSLRequest thay vì StartupMessage. Máy chủ sau đó trả lời với một byte duy nhất chứaShoặcn, chỉ ra rằng nó sẵn sàng hoặc kèo bóng đá c1 muốn trình diễnSSL, tương ứng. Frontend có thể đóng kết nối tại thời điểm này nếu nó là kèo bóng đá c1 hài lòng với phản ứng. Để tiếp tục sauS, thực hiệnSSLBắt tay khởi động (không được mô tả ở đây, kèo bóng đá c1 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, hãy tiếp tục với việc gửi các công ty khởi nghiệp kèo bóng đá c1 thường. Trong trường hợp này StartupMessage và tất cả dữ liệu tiếp theo sẽ làSSL-encrypted. Để tiếp tục saun, Gửi phần khởi động kèo bóng đá c1 thường và tiến hành mà không mã hóa.

Frontend cũng nên được chuẩn bị để xử lý kèo bóng đá c1 ErrorMessage đáp ứng 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. Trong trường hợp này, kết nối phải được đóng lại, nhưng frontend có thể chọn mở kèo bóng đá c1 cái mới kết nối và tiến hành mà không yêu cầuSSL.

SSLRequest ban đầu cũng có thể được sử dụng trong kết nối mà đang được mở để gửi kèo bóng đá c1 hủyRequest.

Trong khi giao thức kèo bóng đá c1 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ủ thành Từ chối các phiên kèo bóng đá c1 được mã hóa như là sản phẩm phụ của xác thực kiểm tra.