2.3. Các hàm mở rộng trong ngôn ngữ C
2.3.5. Các quy tắc viết chương trình
Khi lập trình và biên dịch hàm trong C chúng ta cần phải tuân theo các quy tắc cơ bản sau:
Ớ Sử dụng pg_config --includedir-server ựể xác ựịnh chắnh xác các file tiêu ựề của PostgreSQL server ựược cài ựặt trong máy tắnh. Tùy chọn này xuất hiện từ PostgreSQL 7.2. đối với PostgreSQL 7.1 chúng ta sử dụng tùy chọn --includedir.
Ớ Khi cấp phát bộ nhớ, sử dụng các hàm PostgreSQL palloc và pfree thay vì hàm trong thư viện C tương ứng malloc và free. Vùng nhớ ựược cấp phát bởi palloc sẽ ựược tự ựộng giải phóng sau khi kết thúc một giao tác ựể tránh tình trạng thiếu bộ nhớ.
Ớ Luôn luôn sử dụng memset ựể khởi tạo số byte là 0 cho các cấu trúc ựể sử dụng ựược các chỉ số băm (hash indexes) và kết nối băm (hash joins) thay vì phải lựa chọn ra các bit quan trọng trong cấu trúc dữ liệu và tắnh toán giá trị băm vì ngay cả khi chúng ta tự khởi tạo tất cả các trường trong cấu trúc cũng vẫn có khả năng xuất hiện các lỗ hổng trong cấu trúc chứa những giá trị không chắnh xác.
Ớ Hầu hết các kiểu của PostgreSQL ựược mô tả trong postgres.h, trong khi giao diện quản lý hàm (chẳng hạn PG_FUNCTION_ARGS) ựược ựặt
trong fmgr.h, do vậy chúng ta phải thêm vào hai file này trong chương trình. để ựảm bảo tắnh khả chuyển, tốt nhất là postgres.h cần ựược ựặt ựầu tiên trong file chương trình.
Ớ Các tên biến, hàm ựược ựịnh nghĩa trong file ựối tượng phải không xung
ựột với tên biến, hàm trong server PostgreSQL. Chúng ta phải thực hiện ựổi tên hàm hoặc biến nếu phát hiện lỗi gây ra bởi xung ựột này.