Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:Devel
Phiên bản không được hỗ trợ:12 / 11
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 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ế.

70.1.Quy tắc khai báo soi kèo bóng đá truoctran

Phần chính của tệp tiêu đề danh soi kèo bóng đá truoctran là định nghĩa cấu trúc C mô tả bố cục của mỗi hàng của danh soi kèo bóng đá truoctran. Điều này bắt đầu bằng mộtDanh soi kèo bóng đá truoctranMacro, cho đến khi trình biên dịch C có liên quan chỉ là tốc ký choTypedef struct formData_catalogname. Mỗi trường trong cấu trúc tạo ra một cột danh soi kèo bóng đá truoctran.Genbki.hVí dụ, để xác định giá trị mặc định cho trường hoặc đánh dấu nó là vô hiệu hoặc không thể. TheDanh soi kèo bóng đá truoctrandòng cũng có thể được chú thích, với một số macro thuộc tính BKI khác được mô tả trongGenbki.h, để xác định các thuộc tính khác của danh soi kèo bóng đá truoctran nói chung, chẳng hạn như liệu nó có OID (theo mặc định, nó không).

Mã bộ nhớ cache soi kèo bóng đá truoctran (và hầu hết các mã MUNGING CATALOG nói chung) giả định rằng các phần có độ dài cố định của tất cả các bộ dữ liệu soi kèo bóng đá truoctran trên thực tế có mặt, bởi vì nó ánh xạ khai báo cấu trúc C này lên chúng. Do đó, tất cả các trường có độ dài thay đổi và các trường vô hiệu hóa phải được đặt ở cuối và chúng không thể được truy cập dưới dạng các trường cấu trúc.pg_type.TyPrelidĐể được null, nó sẽ thất bại khi một số mã cố gắng tham chiếuTYPETUP- TYPRELID(hoặc tệ hơn,Typetup- Typelem, vì điều đó sauTyPrelid). Điều này sẽ dẫn đến các lỗi ngẫu nhiên hoặc thậm chí vi phạm phân đoạn.

Là người bảo vệ một phần so với loại lỗi này, không nên hiển thị trực tiếp các trường có thể hiển thị trực tiếp cho trình biên dịch C. Điều này được thực hiện bằng cách gói chúng trong#ifdef catalog_varlen...#endif(trong đócatalog_varlenlà một biểu tượng không bao giờ được xác định). Điều này ngăn mã C khỏi cố gắng bất cẩn để truy cập các trường có thể không ở đó hoặc có thể ở một số bù khác.PG_Attribution. Mã bootstrap sẽ tự động đánh dấu các cột Catalog làkhông nullNếu chúng có chiều rộng cố định và không được đi trước bởi bất kỳ cột vô hiệu nào. Trường hợp quy tắc này không đủ, bạn có thể buộc đánh dấu chính xác bằng cách sử dụngBKI_FORCE_NOT_NULLBKI_FORCE_NULLChú thích khi cần.

Mã frontend không nên bao gồm bất kỳ nàopg_xxx.hTệp tiêu đề danh soi kèo bóng đá truoctran, vì các tệp này có thể chứa mã C sẽ không biên dịch bên ngoài phần phụ trợ. (Thông thường, điều đó xảy ra vì các tệp này cũng chứa các khai báo cho các chức năng trongSRC/phụ trợ/Catalog/Tệp.) Thay vào đó, mã Frontend có thể bao gồm các phần tương ứngPG_XXX_D.Htiêu đề, sẽ chứa oid#defineS và bất kỳ dữ liệu nào khác có thể được sử dụng ở phía máy khách. Nếu bạn muốn macro hoặc mã khác trong tiêu đề danh soi kèo bóng đá truoctran được hiển thị với mã frontend, hãy viết#ifdef exchose_to_client_code...#endifxung quanh phần đó để hướng dẫnGenbki.plĐể sao chép phần đó vàopg_xxx_d.htiêu đề.

Một vài trong số các danh soi kèo bóng đá truoctran rất cơ bản đến nỗi chúng thậm chí không thể được tạo bởiBKI TạoLệnh được sử dụng cho hầu hết các danh soi kèo bóng đá truoctran, bởi vì lệnh đó cần viết thông tin vào các danh soi kèo bóng đá truoctran này để mô tả danh soi kèo bóng đá truoctran mới. Chúng được gọi làBootstrapDanh soi kèo bóng đá truoctran và xác định một công việc cần thêm nhiều công việc: Bạn phải chuẩn bị thủ công các soi kèo bóng đá truoctran thích hợp cho chúng trong các nội dung được tải sẵn củapg_ classpg_typevà các soi kèo bóng đá truoctran đó sẽ cần được cập nhật cho các thay đổi tiếp theo đối với cấu trúc của danh soi kèo bóng đá truoctran. (Danh soi kèo bóng đá truoctran Bootstrap cũng cần các soi kèo bóng đá truoctran được tải sẵn trongPG_Attribution, nhưng may mắn làGenbki.pl12518_12618