Phiên bản không được hỗ trợ:7.3 / 7.2 / 7.1
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 đá 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ế.

4.2. kèo bóng đá c1

Phần này mô tả luồng kèo bóng đá c1. Có bốn Các loại dòng chảy 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 điều khoản đặc biệt cho các phản hồi kèo bóng đá c1 và Hủy lệnh, có thể xảy ra bất cứ lúc nào sau khi Giai đoạn khởi động.

4.2.1. Khởi nghiệp

Ban đầu, Frontend gửi kèo bóng đá c1 startuppacket. Máy chủ sử dụng thông tin này và nội dung củapg_hba.confTệp để xác định những gì Phương pháp xác thực Frontend phải sử dụng. Máy chủ sau đó trả lời bằng kèo bóng đá c1 trong các tin nhắn sau:

errorResponse

Máy chủ sau đó đóng ngay kết nối.

xác thực

Trao đổi xác thực được hoàn thành.

xác thựckerberosv4

Frontend sau đó phải tham gia Kerberos V4 Hộp thoại xác thực (không được mô tả ở đây, kèo bóng đá c1 phần của Đặc tả Kerberos) với máy chủ. Nếu đây là Thành công, máy chủ phản hồ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ựckerberosv5

Frontend sau đó phải tham gia Kerberos V5 Hộp thoại xác thực (không được mô tả ở đây, kèo bóng đá c1 phần của Đặc tả Kerberos) với máy chủ. Nếu đây là Thành công, máy chủ phản hồ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ựcCleartextPassword

7665_7919

xác thựcCryptPassword

Frontend sau đó phải gửi Mật khẩuPacket 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 Gói 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 sau đó phải gửi Mật khẩuPacket chứa mật khẩu được mã hóa qua MD5, sử dụng Muối 4 ký tự được chỉ định trong Gói 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ương pháp 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 Tin nhắn. Frontend phải cấp chứng chỉ SCM thông báo và sau đó gửi kèo bóng đá c1 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 kèo bóng đá c1 errorResponse.

Nếu Frontend không hỗ trợ phương kèo bóng đá c1 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 Chờ tin nhắn thêm từ máy chủ. Có thể Tin nhắn từ phần phụ trợ trong giai đoạn này là:

BackendKeyData

9910_10180

ReadyForQuery

Khởi động được hoàn thành. Frontend bây giờ có thể phát hành Truy vấn hoặc kèo bóng đá c1 cuộc gọi chức năng.

ErrorResponse

Khởi nghiệp không thành công. Kết nối được đóng sau gửi tin nhắn này.

noticeResponse

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

Thông báo ReadyForQuery giống như phần phụ trợ mà phần phụ trợ sẽ phát hành sau mỗi chu kỳ truy vấn. Tùy thuộc vào mã hóa nhu cầu của mặt tiền, thật hợp lý khi xem xét ReadyForQuery khi bắt đầu kèo bóng đá c1 chu kỳ truy vấn (và sau đó BackendKeyData cho thấy kết luận thành công của khởi nghiệp giai đoạn), hoặc để coi ReadyForQuery là kết thúc khởi nghiệp Pha và mỗi chu kỳ truy vấn tiếp theo.

4.2.2. kèo bóng đá c1

Chu kỳ truy vấn được bắt đầu bởi Frontend gửi truy vấn thông báo cho phần phụ trợ. Phần phụ trợ sau đó gửi kèo bóng đá c1 hoặc nhiều Tin nhắn phản hồi tùy thuộc vào nội dung của truy vấn Chuỗi lệnh, và cuối cùng là kèo bóng đá c1 thông báo phản hồi ReadyForQuery. ReadyForQuery thông báo cho Frontend rằng nó có thể gửi kèo bóng đá c1 cách an toàn Truy vấn mới hoặc cuộc gọi chức năng.

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

Đã hoàn thànhResponse

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. Frontend sau đó sẽ gửi kèo bóng đá c1 bản sao tin nhắn. Phần phụ trợ sau đó sẽ trả lời với kèo bóng đá c1 Đã hoàn thành thông báo phản hồi với thẻCopy.

CopyouTresponse

12297_12472Copy.

CursorResponse

Bắt đầu phản hồi cho AChọn, Fetch, Chèn, Cập nhậthoặcXóakèo bóng đá c1. TrongFetchtrường hợp Tên của con trỏ được lấy từ được bao gồm trong tin nhắn. Nếu không thì kèo bóng đá c1 điệp luôn đề cập đến13041_13050con trỏ.

ROWDescrip

cho biết các hàng sắp được trả lại Phản hồi cho AChọnhoặcFetchTruy vấn. Thông điệp Nội dung mô tả bố cục của các hàng. Đây sẽ là tiếp theo là kèo bóng đá c1 tin nhắn asciirow hoặc binyrow (tùy thuộc vào về việc kèo bóng đá c1 con trỏ nhị phân có được chỉ định hay không) cho mỗi hàng được đưa trở lại frontend.

BlessqueryResponse

kèo bóng đá c1 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. 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. (Hoàn thành phản hồi đánh dấu sự kết thúc của việ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 đ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ần phụ trợ sẽ tiếp tục xử lý lệnh.

Phản hồi cho AChọnhoặcFetchkèo bóng đá c1 thường bao gồm CursorResponse, Rowdescrip, số không hoặc nhiều asciirow hoặc Tin nhắn Binaryrow và cuối cùng đã hoàn thànhResponse.Chèn, Cập nhậtXóakèo bóng đá c1 sản xuất CursorResponse theo sau là hoàn thànhCopyđến hoặc từ Frontend gọi giao thức đặc biệt như đã đề cập bên trên. Tất cả các loại truy vấn khác thường chỉ tạo ra kèo bóng đá c1 Đã hoàn thành tin nhắn.

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.

15471_15691

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 kèo bóng đá c1 phần thông qua chuỗi tin nhắn được tạo bởi kèo bóng đá c1 truy vấn riêng lẻ.

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 nào khác của tin nhắn.

16169_16614

Ngoài ra, nếu frontend phát hành bất kỳngheCác lệnh sau đó nó phải được chuẩn bị để chấp nhận kèo bóng đá c1 tin nhắn bất cứ lúc nào; nhìn thấy dưới.

16813_17037

4.2.3. Chức năng gọi

Chu kỳ cuộc gọi chức năng được bắt đầu bởi frontend gửi kèo bóng đá c1 Thông báo chức năng vào phần phụ trợ. Phần phụ trợ sau đó gửi kèo bóng đá c1 hoặc nhiều tin nhắn phản hồi hơn tùy thuộc vào kết quả của Gọi chức năng, và cuối cùng là kèo bóng đá c1 thông báo phản hồi ReadyForQuery. ReadyForQuery thông báo cho Frontend rằng nó có thể gửi kèo bóng đá c1 cách an toàn Truy vấn mới hoặc cuộc gọi chức năng.

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

17646_17661

Đã xảy ra lỗi.

functionResulTresponse

Cuộc gọi chức năng đã được thực thi và trả lại a kết quả.

functionVoidResponse

Cuộc gọi chức năng được thực thi và trả về không 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 điệp cảnh báo đã được ban hành 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.

kèo bóng đá c1 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 nào khác tin nhắn. Ngoài ra, nếu nó phát hành bất kỳNgheCác lệnh sau đó nó phải được chuẩn bị để chấp nhận kèo bóng đá c1 tin nhắn bất cứ lúc nào; nhìn thấy dưới.

4.2.4. Phản hồi kèo bóng đá c1

Nếu kèo bóng đá c1 frontend phát hành AngheLệnh, sau đó phần phụ trợ sẽ gửi kèo bóng đá c1 thông báo Tin nhắn (không bị nhầm lẫn với NoticeResponse!) Bất cứ khi nàokèo bóng đá c1lệnh được thực thi cho Tên kèo bóng đá c1 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 kèo bóng đá c1 phụ trợ khác tin nhắn. Do đó, mặt tiền phải được chuẩn bị để nhận ra kèo bóng đá c1 Thông báo thông báo tin nhắn bất cứ khi nào nó đang mong đợi tin nhắn. Thật vậy, nó có thể xử lý Thông báo thông báo tin nhắn ngay cả khi nó không tham gia vào Truy vấn.

kèo bóng đá c1 báoResponse

Akèo bóng đá c1Lệnh đã được được thực hiện cho kèo bóng đá c1 tên mà trước đóngheLệnh đã được thực thi. kèo bóng đá c1 có thể đượ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 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 kèo bóng đá c1 cách tùy ý.

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

20451_20930

Để đưa ra yêu cầu hủy bỏ, Frontend mở ra kèo bóng đá c1 bản mới kết nối với máy chủ và gửi tin nhắn hủyRequest, thay vì thông báo startuppacket thường Đã gửi qua kèo bóng đá c1 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 --- 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.

22075_22489

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.

4.2.6. Chấm dứt

23216_23447

kèo bóng đá c1 sự chấm dứt không thể tin được 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ợ thấy kèo bóng đá c1 sự đóng cửa bất ngờ của kết nối, nó sẽ làm sạch lên và chấm dứt. Frontend có tùy chọn khởi chạy 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.

Để 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 kèo bóng đá c1 truy vấn đang được xử lý, phụ trợ có thể sẽ hoàn thành truy vấn trước 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 (bắt đầu...cam kếtchuỗi) sau đó kết quả của nó có thể được cam kết trước khi ngắt kết nối được nhận ra.

4.2.7. SSL Mã hóa phiên

Bản phát hành gần đây củaPostgreSQL24512_24705

24716_24906yhoặcn, chỉ ra rằng nó sẵn sàng hoặc không muốn thực hiện SSL, 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ó không hài lòng với phản ứng. Để tiếp tục sauy, thực hiện kèo bóng đá c1 cái bắt tay khởi động SSL (không được mô tả ở đây, kèo bóng đá c1 phần của SSL đặ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 startuppacket thông thường. Trong trường hợp này StartupPacket và tất cả các dữ liệu tiếp theo sẽ được mã hóa SSL. ĐẾN Tiếp tục saun, Gửi kèo bóng đá c1 thường Startuppacket và tiến hành mà không cần 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ổ sung hỗ trợ SSL ĐẾNPostgreSQL. Trong trường hợp này kết nối phải được đóng, nhưng mặt tiền có thể chọn Mở kết nối mới và tiến hành mà không yêu cầu SSL.

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

Trong khi chính kèo bóng đá c1 không cung cấp cách máy chủ buộc mã hóa SSL, quản trị viên có thể định cấu hình máy chủ từ chối các 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.