Phiên bản không được hỗ trợ:6.5
Tài liệu này dành cho phiên bản không được hỗ trợ kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Lập trình Chức năng kèo bóng đá hôm nay và ngày mai ngữ

Lập trình Chức năng ngôn ngữ trên kèo bóng đá hôm nay và ngày mai loại cơ sở

Nội bộ,PostgresTrân trọng a Loại cơ sở là "Blob of Memory." kèo bóng đá hôm nay và ngày mai chức năng do người dùng xác định bạn xác định qua một loại lần lượt xác định cáchPostgrescó thể hoạt động trên nó. Đó là,Postgressẽ chỉ lưu trữ và Lấy dữ liệu từ đĩa và sử dụng kèo bóng đá hôm nay và ngày mai chức năng do người dùng định nghĩa Đầu vào, quy trình và đầu ra dữ liệu. kèo bóng đá hôm nay và ngày mai loại cơ sở có thể có một trong những Ba định dạng nội bộ:

  • Pass by giá trị, độ dài cố định

  • Vượt qua tham chiếu, độ dài cố định

  • Vượt qua tham chiếu, độ dài biến

6141_6260PostgresBản thân chỉ truyền kèo bóng đá hôm nay và ngày mai loại số nguyên bằng cách giá trị. Bạn nên cẩn thận để xác định kèo bóng đá hôm nay và ngày mai loại của bạn để chúng sẽ có cùng kích thước (tính bằng byte) trên tất cả kèo bóng đá hôm nay và ngày mai kiến ​​trúc. Ví dụ, TheLongLoại nguy hiểm vì nó là 4 byte trên một số máy và 8 byte trên kèo bóng đá hôm nay và ngày mai máy khác, trong khiintLoại là 4 byte trên hầu hếtUNIXmáy (mặc dù không có trên hầu hết Máy tính cá nhân). Một triển khai hợp lý kèo bóng đá hôm nay và ngày maiINT4gõ trênUNIXMáy có thể là:

/ * 4 byte số nguyên, được truyền theo giá trị */
    typedef int int4;

Mặt khác, kèo bóng đá hôm nay và ngày mai loại có độ dài cố định có thể được truyền tham chiếu phụ. Ví dụ: đây là việc triển khai mẫu củaPostgresloại:

/ * Cấu trúc 16 byte, được truyền qua tham chiếu */
    Cấu trúc typedef

        Double x, y;
     Điểm;

Chỉ có thể sử dụng kèo bóng đá hôm nay và ngày mai loại cho kèo bóng đá hôm nay và ngày mai loại như vậy khi chuyển chúng vào và hếtPostgreschức năng. Cuối cùng, tất cả kèo bóng đá hôm nay và ngày mai loại có độ dài thay đổi cũng phải được truyền qua thẩm quyền giải quyết. Tất cả kèo bóng đá hôm nay và ngày mai loại có độ dài thay đổi phải bắt đầu với trường chiều dài chính xác 4 byte và tất cả dữ liệu sẽ được lưu trữ trong loại đó phải được đặt trong bộ nhớ ngay sau trường chiều dài đó. Trường chiều dài là tổng chiều dài của cấu trúc (tức là, nó Bao gồm kích thước của trường chiều dài chính). Chúng ta có thể xác định Loại văn bản như sau:

Typedef Struct 
             chiều dài int4;
             Dữ liệu char [1];
          chữ;

Rõ ràng, trường dữ liệu không đủ dài để chứa tất cả kèo bóng đá hôm nay và ngày mai chuỗi có thể - không thể khai báo một cấu trúc như vậy trongC. Khi thao tác chiều dài biến kèo bóng đá hôm nay và ngày mai loại, chúng ta phải cẩn thận để phân bổ số lượng bộ nhớ chính xác và khởi tạo trường chiều dài. Ví dụ: nếu chúng tôi muốn lưu trữ 40 byte Trong cấu trúc văn bản, chúng ta có thể sử dụng một đoạn mã như cái này:

8413_8696

Bây giờ chúng tôi đã vượt qua tất cả kèo bóng đá hôm nay và ngày mai cấu trúc có thể kèo bóng đá hôm nay và ngày mai loại, chúng ta có thể hiển thị một số ví dụ về kèo bóng đá hôm nay và ngày mai chức năng thực sự. Giả địnhfuncs.cTrông giống như:

8907_10692

trênOSF/1Chúng tôi sẽ loại:

Tạo chức năng add_one (int4) Trả về int4
              Như 'pgroot/hướng dẫn/funcs.so' kèo bóng đá hôm nay và ngày mai ngữ 'c';

         Tạo chức năng makepoint (điểm, điểm) trả về điểm
              Như 'pgroot/hướng dẫn/funcs.so' kèo bóng đá hôm nay và ngày mai ngữ 'c';

         Tạo chức năng Concat_Text (văn bản, văn bản) Trả về văn bản
              Như 'pgroot/hướng dẫn/funcs.so' kèo bóng đá hôm nay và ngày mai ngữ 'c';

         Tạo chức năng copytext (văn bản) trả về văn bản
              Như 'pgroot/hướng dẫn/funcs.so' kèo bóng đá hôm nay và ngày mai ngữ 'c';

Trên kèo bóng đá hôm nay và ngày mai hệ thống khác, chúng ta có thể phải kết thúc tên tệp trong .SL (để chỉ ra rằng đó là một thư viện được chia sẻ).

Lập trình Chức năng ngôn ngữ trên kèo bóng đá hôm nay và ngày mai loại tổng hợp

kèo bóng đá hôm nay và ngày mai loại tổng hợp không có bố cục cố định như cấu trúc C. kèo bóng đá hôm nay và ngày mai thể hiện của một loại tổng hợp có thể chứa kèo bóng đá hôm nay và ngày mai trường null. Ngoài ra, kèo bóng đá hôm nay và ngày mai loại tổng hợp là một phần của hệ thống phân cấp thừa kế có thể có kèo bóng đá hôm nay và ngày mai lĩnh vực khác nhau so với kèo bóng đá hôm nay và ngày mai thành viên khác trong cùng một kế thừa phân cấp. Vì thế,Postgres11846_11932Postgresxử lý một tập hợp kèo bóng đá hôm nay và ngày mai phiên bản, mỗi trường hợp sẽ được chuyển vào chức năng của bạn như một cấu trúc mờ đục của loạiTuple. Giả sử chúng ta muốn viết một chức năng để Trả lời truy vấn

* Chọn Tên, C_OverPaid (EMP, 1500)
           Từ EMP
           WHERE name = 'Bill' hoặc name = 'sam';
Trong truy vấn ở trên, chúng ta có thể xác định C_OverPaid là:
#include "Postgres.h"
         #include "Executor/executor.h"/ * cho getAttributebyName () *//

         bool
         c_overpaid (tupletableslot *t, / *ví dụ hiện tại kèo bóng đá hôm nay và ngày mai emp * /
                    giới hạn int4)

             bool isnull = false;
             Mức lương Int4;
             tiền lương = (int4) getAttributionByName (t, "tiền lương", & isnull);
             Nếu (isnull)
                 trả lại (sai);
             trả lại (tiền lương giới hạn);

GetAttributionByNamePostgresHàm hệ thống đó Trả về kèo bóng đá hôm nay và ngày mai thuộc tính ra khỏi trường hợp hiện tại. Nó có ba Đối số: Đối số của loại tuple được chuyển vào hàm, Tên của thuộc tính mong muốn và tham số trả về mô tả xem thuộc tính có phải là null hay không.GetAttributionByNamesẽ căn chỉnh dữ liệu đúng cách để bạn có thể đúc giá trị trả về kèo bóng đá hôm nay và ngày mai nó cho loại mong muốn. Ví dụ, nếu bạn có tên thuộc tính thuộc loại tên,GetAttributionByName13512_13536

Char *str;
         ...
         str = (char *) getAttributebyName (t, "name", & isnull)

Truy vấn sau cho phépPostgresBiết về c_overpaid chức năng:

13815_13942

Trong khi có nhiều cách để xây dựng kèo bóng đá hôm nay và ngày mai trường hợp mới hoặc sửa đổi kèo bóng đá hôm nay và ngày mai trường hợp hiện có từ trong hàm C, chúng cũng là xa phức tạp để thảo luận trong hướng dẫn này.

Caveats

Bây giờ chúng tôi chuyển sang nhiệm vụ khó khăn hơn khi viết lập trình chức năng kèo bóng đá hôm nay và ngày mai ngữ. Được cảnh báo: phần này của hướng dẫn sẽ không làm cho bạn một lập trình viên. Bạn phải hiểu rõ vềC(bao gồm cả việc sử dụng con trỏ và Trình quản lý bộ nhớ malloc) trước khi cố gắng viếtCkèo bóng đá hôm nay và ngày mai chức năng để sử dụng vớiPostgres. Mặc dù có thể tải kèo bóng đá hôm nay và ngày mai chức năng được viết bằng kèo bóng đá hôm nay và ngày mai ngôn ngữ khácCthànhPostgres,, Điều này thường khó khăn (khi có thể kèo bóng đá hôm nay và ngày mai ngữ, chẳng hạn nhưFortranPascalThường không theo cùng một "Gọi quy ước" làC. Đó là, kèo bóng đá hôm nay và ngày mai ngôn ngữ khác không vượt qua đối số và trả về kèo bóng đá hôm nay và ngày mai giá trị giữa chức năng theo cùng một cách. Vì lý do này, chúng tôi sẽ cho rằng kèo bóng đá hôm nay và ngày mai chức năng ngôn ngữ lập trình của bạn được viết bằngC. kèo bóng đá hôm nay và ngày mai quy tắc cơ bản để xây dựngCkèo bóng đá hôm nay và ngày mai chức năng như sau:

  • Hầu hết kèo bóng đá hôm nay và ngày mai tệp tiêu đề (bao gồm) choPostgresNên cài đặt trongpgroot/bao gồm(xem Hình 2). Bạn phải luôn luôn bao gồm

    -I $ pgroot/bao gồm
    Trên kèo bóng đá hôm nay và ngày mai dòng lệnh CC của bạn. Đôi khi, bạn có thể thấy rằng bạn yêu cầu kèo bóng đá hôm nay và ngày mai tệp tiêu đề nằm trong chính nguồn máy chủ (tức là, Bạn cần một tệp chúng tôi đã bỏ qua để cài đặt trong bao gồm). Trong những trường hợp đó bạn có thể cần thêm một hoặc nhiều
    -I $ pgroot/src/phụ trợ
                    -I $ pgroot/src/phụ trợ/bao gồm
                    -I $ pgroot/src/backend/port/<portname
                    -I $ pgroot/src/backend/obj
    (trong đó <PortName là tên kèo bóng đá hôm nay và ngày mai cổng, ví dụ: Alpha hoặc sparc).
  • Khi phân bổ bộ nhớ, hãy sử dụngPostgresThói quen palloc và pfree thay thế kèo bóng đá hôm nay và ngày mai tương ứngCThư viện thói quen malloc và miễn phí. Bộ nhớ được phân bổ bởi palloc sẽ được tự động giải phóng kèo bóng đá hôm nay và ngày maio cuối mỗi giao dịch, Ngăn chặn rò rỉ bộ nhớ.

  • Luôn bằng không kèo bóng đá hôm nay và ngày mai byte của kèo bóng đá hôm nay và ngày mai cấu trúc của bạn bằng cách sử dụng memset hoặc Bzero. Một số thói quen (chẳng hạn như phương pháp truy cập băm, băm Tham gia và thuật toán sắp xếp) Tính kèo bóng đá hôm nay và ngày mai hàm của kèo bóng đá hôm nay và ngày mai bit thô chứa trong cấu trúc của bạn. Ngay cả khi bạn khởi tạo tất cả kèo bóng đá hôm nay và ngày mai trường Cấu trúc của bạn, có thể có một số byte liên kết đệm (lỗ trong cấu trúc) có thể chứa rác giá trị.

  • Hầu hết kèo bóng đá hôm nay và ngày mai bên trongPostgreskèo bóng đá hôm nay và ngày mai loại được khai báo trong Postgres.h, Vì vậy, bạn cũng nên luôn bao gồm tệp đó. Bao gồm postgres.h cũng sẽ bao gồm elog.h và palloc.h cho Bạn.

  • biên dịch và tải mã đối tượng kèo bóng đá hôm nay và ngày mai bạn để có thể được tải động vào17316_17326Luôn yêu cầu cờ đặc biệt. Xem Phụ lục A để biết giải thích chi tiết về cách thực hiện Hệ điều hành cụ thể kèo bóng đá hôm nay và ngày mai bạn.