Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
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 kèo bóng đá pháp phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

43.8. kèo bóng đá pháp#

43.8.1. Cấu hình#

Phần này liệt kê kèo bóng đá pháp tham số cấu hình ảnh hưởngPL/kèo bóng đá pháp.

plperl.on_init(chuỗi) #

Chỉ định mã kèo bóng đá pháp sẽ được thực thi khi trình thông dịch kèo bóng đá pháp được khởi tạo lần đầu tiên, trước khi nó được sử dụng bởiPlperlhoặcplperlu. kèo bóng đá pháp chức năng SPI không có sẵn khi mã này được thực thi.

Mã kèo bóng đá pháp bị giới hạn trong một chuỗi. Mã dài hơn có thể được đặt vào một mô -đun và được tải bởion_initChuỗi. Ví dụ:

perperl.on_init = 'yêu cầu "plperlinit.pl"'

Bất kỳ mô -đun nào được tải bởiplperl.on_init, trực tiếp hoặc gián tiếp, sẽ có sẵn để sử dụng bởiplperl. Điều này có thể tạo ra một rủi ro bảo mật.

do 'ELOG (cảnh báo, tham gia ","

Khởi tạo sẽ xảy ra trong Postmaster nếuplperlThư viện được bao gồm trongshared_preload_l Libries, trong trường hợp đó nên xem xét thêm cho nguy cơ gây bất ổn cho người bán bưu điện. Lý do chính để sử dụng tính năng này là các mô -đun kèo bóng đá pháp được tải bởiplperl.on_initChỉ cần được tải khi bắt đầu Postmaster và sẽ có sẵn ngay lập tức mà không cần tải chi phí trong các phiên cơ sở dữ liệu riêng lẻ. Tuy nhiên, hãy nhớ rằng chi phí chỉ được tránh đối với trình thông dịch kèo bóng đá pháp đầu tiên được sử dụng bởi phiên cơ sở dữ liệu - PL/Perlu hoặc PL/kèo bóng đá pháp cho vai trò SQL đầu tiên gọi hàm PL/kèo bóng đá pháp.plperl.on_initAfresh. Ngoài ra, trên Windows sẽ không có tiết kiệm nào từ việc tải trước, vì trình thông dịch kèo bóng đá pháp được tạo trong quy trình PostMaster không tuyên truyền sang các quy trình con.

Tham số này chỉ có thể được đặt trongPostgreSql.confTệp hoặc trên dòng lệnh máy chủ.

plperl.on_plperl_init(chuỗi)
plperl.on_plperlu_init(chuỗi) #

Các tham số này chỉ định mã kèo bóng đá pháp sẽ được thực thi khi trình thông dịch kèo bóng đá pháp được chuyên dụng choPlperlhoặcPlperlutương ứng. Điều này sẽ xảy ra khi hàm PL/kèo bóng đá pháp hoặc PL/Perlu được thực thi lần đầu tiên trong phiên cơ sở dữ liệu hoặc khi một trình thông dịch bổ sung phải được tạo vì ngôn ngữ khác được gọi hoặc hàm PL/kèo bóng đá pháp được gọi bởi vai trò SQL mới.plperl.on_init. kèo bóng đá pháp chức năng SPI không có sẵn khi mã này được thực thi.plperl.on_plperl_initđược thực thi sauKhóa xuốngHồiTrình thông dịch và do đó nó chỉ có thể thực hiện kèo bóng đá pháp hoạt động đáng tin cậy.

Nếu mã không có lỗi, nó sẽ hủy bỏ việc khởi tạo và truyền ra truy vấn gọi, khiến giao dịch hiện tại hoặc trừ đi bị hủy bỏ. Bất kỳ hành động nào đã được thực hiện trong kèo bóng đá pháp sẽ không hoàn tác;

Chỉ các siêu người dùng mới có thể thay đổi các cài đặt này. Mặc dù các cài đặt này có thể được thay đổi trong một phiên, những thay đổi đó sẽ không ảnh hưởng đến các phiên dịch viên kèo bóng đá pháp đã được sử dụng để thực thi các chức năng.

plperl.use_strict(Boolean) #

Khi đặt các phần tổng hợp tiếp theo của các hàm PL/kèo bóng đá pháp sẽ cónghiêm ngặtPragma được bật. Tham số này không ảnh hưởng đến kèo bóng đá pháp chức năng đã được biên dịch trong phiên hiện tại.

43.8.2. Hạn chế và kèo bóng đá pháp tính năng bị thiếu#

Các tính năng sau đây hiện bị thiếu từ PL/kèo bóng đá pháp, nhưng họ sẽ đóng góp đáng hoan nghênh.

  • Hàm PL/kèo bóng đá pháp không thể gọi trực tiếp với nhau.

  • SPI chưa được thực hiện đầy đủ.

  • Nếu bạn đang tìm nạp kèo bóng đá pháp bộ dữ liệu rất lớn bằng cách sử dụngSPI_EXEC_Query, bạn nên lưu ý rằng tất cả những điều này sẽ đi vào bộ nhớ. Bạn có thể tránh điều này bằng cách sử dụngspi_query/spi_fetchrowNhư đã minh họa trước đó.

    Một vấn đề tương tự xảy ra nếu hàm quay lại đã chuyển một bộ lớn kèo bóng đá pháp hàng trở lại PostgreSQL quareturn. Bạn cũng có thể tránh được vấn đề này bằng cách sử dụngreturn_nextĐối với mỗi hàng được trả về, như được hiển thị trước đó.

  • Khi phiên kết thúc bình thường, không phải do lỗi gây tử vong, bất kỳkết thúckèo bóng đá pháp khối đã được xác định được thực thi. Hiện tại không có hành động nào khác được thực hiện.