Tài cách đọc kèo bóng đá 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 một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

chức năng Được liên kết với lệnh cách đọc kèo bóng đá

lệnh cách đọc kèo bóng đá trongPostgresCó các tùy chọn để đọc hoặc ghi vào cách đọc kèo bóng đá nối mạng được sử dụng bởilibpq. Do đó, các chức năng là cần thiết Để truy cập trực tiếp cách đọc kèo bóng đá nối mạng này để các ứng dụng có thể thực hiện lợi thế của khả năng này.

Các chức cách đọc kèo bóng đá này chỉ được thực thi sau khi có đượcPGRES_COPY_OUThoặcPGRES_COPY_INĐối tượng cách đọc kèo bóng đá quả từPQEXEChoặcPQGetResult.

  • PQGetLineĐọc a dòng ký tự cách đọc kèo bóng đá thúc mới (được truyền đi bởi Máy chủ phụ trợ) vào chuỗi bộ đệm có độ dài kích thước.

    int PQGetLine (PGConn *Conn,
                  Char *String,
                  int length)
    nhưfgets(3), Bản cách đọc kèo bóng đá thường lệ này Lên đến các ký tự dài-1 thành chuỗi. Nó giống nhưNhận(3), tuy nhiên, trong đó nó chuyển đổi cách đọc kèo bóng đá thúc dòng mới thành một ký tự null.PQGetLinereturnEOFTại EOF, 0 Nếu toàn bộ dòng đã được đọc và 1 nếu bộ đệm đầy Nhưng dòng mới cách đọc kèo bóng đá thúc vẫn chưa được đọc.

    Lưu ý rằng ứng dụng phải kiểm tra xem có dòng mới bao gồm hai ký tự "\.", chỉ ra rằng Máy chủ phụ trợ đã hoàn thành việc gửi kết quả của bản cách đọc kèo bóng đá yêu cầu. Nếu ứng dụng có thể nhận được các dòng nhiều hơn dài hơn các ký tự dài-1, cần quan tâm để chắc chắn một nhận ra "\." dòng chính xác (và không, ví dụ, nhầm lẫn sự kết thúc của một dòng dữ liệu dài cho một dòng Terminator). Các Mã trongsrc/bin/psql/copy.cchứa Ví dụ Các thói quen xử lý chính xác giao thức cách đọc kèo bóng đá.

  • PQGetLineAsyncĐọc a dòng ký tự cách đọc kèo bóng đá thúc mới (được truyền đi bởi máy chủ phụ trợ) vào bộ đệm mà không chặn.

    int PQGetLineAnync (PGConn *Conn,
                       Char *bộ đệm,
                       int bufsize)
    thói quen này tương tựPQGetLine, nhưng nó có thể được sử dụng bởi các ứng dụng mà Phải đọc dữ liệu cách đọc kèo bóng đá không đồng bộ, đó là không chặn. Đã phát hành lệnh cách đọc kèo bóng đá và nhận đượcPGRES_COPY_OUTPhản hồi, ứng dụng nên gọiPQConsumeInputPQGetLineAsyncCho đến khi tín hiệu cuối cùng phát hiện. Không giống nhưPQGetLine, Điều này Thường xuyên chịu trách nhiệm phát hiện cách đọc kèo bóng đá thúc dữ liệu. Trên mỗi gọi,PQGetLineAsyncSẽ trả về dữ cách đọc kèo bóng đá Nếu một dòng dữ cách đọc kèo bóng đá hoàn chỉnh theo dòng mới có sẵn trong bộ đệm đầu vào của libpq hoặc nếu dòng dữ cách đọc kèo bóng đá đến quá dài Để phù hợp với bộ đệm được cung cấp bởi người gọi. Nếu không, không có dữ cách đọc kèo bóng đá được trả về cho đến khi phần còn lại của dòng đến.

    Thông thường trả về -1 nếu điểm đánh dấu dữ liệu cuối cách đọc kèo bóng đá được công nhận hoặc 0 nếu không có dữ liệu hoặc tích cực Số cho số byte dữ liệu được trả về. Nếu -1 là đã trả về, người gọi phải gọi tiếp theopqendcopy, và sau đó trở lại bình thường xử lý. Dữ cách đọc kèo bóng đá được trả về sẽ không vượt ra ngoài một dòng mới tính cách. Nếu có thể, toàn bộ dòng sẽ được trả lại tại một thời gian. Nhưng nếu bộ đệm được cung cấp bởi người gọi là quá nhỏ để giữ một dòng được gửi bởi phụ trợ, sau đó một dòng dữ cách đọc kèo bóng đá một phần sẽ được trả lại. Điều này có thể được phát hiện bằng cách kiểm tra xem cách đọc kèo bóng đá cuối cùng có Byte trả về là "\ n"hay không. Chuỗi trả về không được chấm dứt. (Nếu bạn muốn thêm một chấm dứt null, hãy chắc chắn vượt qua một cái bufsize nhỏ hơn Phòng thực sự có sẵn.)

  • pqputlineGửi một cách đọc kèo bóng đá thúc null Chuỗi vào máy chủ phụ trợ. Trả về 0 nếu ok,EOFNếu không thể gửi chuỗi.

    int pqputline (pgconn *Conn,
                  const char *chuỗi);
    Lưu ý Ứng dụng phải gửi rõ ràng hai ký tự "\."Trên một dòng cuối cùng để chỉ ra phụ trợ mà nó đã hoàn thành việc gửi dữ cách đọc kèo bóng đá của nó.
  • pqputnbytesGửi a Chuỗi không cách đọc kèo bóng đá thúc không null vào máy chủ phụ trợ. Trả về 0 nếu Ok, EOF nếu không thể gửi chuỗi.

    int pqputnbytes (pgconn *Conn,
                    const char *bộ đệm,
                    int nbytes);
    Điều này giống hệtpqputline,, ngoại trừ việc bộ đệm dữ liệu không cần phải cách đọc kèo bóng đá thúc vì Số byte để gửi được chỉ định trực tiếp.
  • pqendcopyĐồng bộ hóa với phần phụ trợ. Chức năng này đợi cho đến khi phần phụ trợ kết thúc bản cách đọc kèo bóng đá. Nó nên được phát hành khi chuỗi cuối cùng đã được gửi đến phần phụ trợ sử dụngpqputlinehoặc khi nào Chuỗi cuối cùng đã được nhận từ phần phụ trợ bằngPGGetLine. Nó phải được phát hành hoặc Backend có thể nhận được "ra khỏi đồng bộ" với frontend. Khi trở về Từ chức cách đọc kèo bóng đá này, phụ trợ đã sẵn sàng để nhận tiếp theo truy vấn. Giá trị trả về là 0 khi hoàn thành thành công, không nếu không thì.

    int pqendcopy (pgconn *Conn);

    làm ví dụ:

    PQEXEC (Conn, "Tạo Bảng FOO (A Int4, B Char (16), D Float8)");
    PQEXEC (Conn, "cách đọc kèo bóng đá foo từ stdin");
    Pqputline (Conn, "3 \ Thello World \ t4.5 \ n");
    Pqputline (Conn, "4 \ tgoodbye World \ t7.11 \ n");
    ...
    Pqputline (Conn, "\. \ N");
    Pqendcopy (Conn);

Khi sử dụngPQGetResult, The Ứng dụng sẽ trả lờipgres_copy_outcách đọc kèo bóng đá quả bằng cách thực thiPQGetLineLặp đi lặp lại, theo sau làPQENDCOPYSau khi thấy dòng Terminator được nhìn thấy. Nó sau đó sẽ trở lạiPQGetResultVòng lặp cho đến khiPQGetResultTrả về null. Tương tự APGRES_COPY_INcách đọc kèo bóng đá quả là được xử lý bởi một loạtpqputlinecuộc gọi theo sau làPQENDCOPY, sau đó quay lạiPQGetResultVòng lặp. Sự sắp xếp này sẽ Đảm bảo rằng một bản sao trong hoặc cách đọc kèo bóng đá lệnh được nhúng trong một loạtSQLCác lệnh sẽ được thực thi chính xác.

Các ứng dụng cũ có khả năng gửi một bản sao vào hoặc cách đọc kèo bóng đá ra thông quaPQEXECvà giả sử rằng Giao dịch được thực hiện sauPQENDCOPY. Cái này sẽ chỉ hoạt động chính xác nếu bản cách đọc kèo bóng đá vào/ra là duy nhấtSQLLệnh trong chuỗi truy vấn.