spi_prepare - Chuẩn bị soi kèo bóng đá truoctran tuyên bố, mà không cần thực hiện nó
spiplanptr spi_prepare (const char *soi kèo bóng đá truoctran
, intNARGS
, oid *argtypes
)
spi_prepare
Tạo và trả về một câu soi kèo bóng đá truoctran đã chuẩn bị cho soi kèo bóng đá truoctran được chỉ định, nhưng không thực thi soi kèo bóng đá truoctran. Câu soi kèo bóng đá truoctran đã chuẩn bị sau đó có thể được thực thi nhiều lần bằng cách sử dụngSPI_EXECUTE_PLAN
.
Khi cùng một soi kèo bóng đá truoctran hoặc một soi kèo bóng đá truoctran tương tự sẽ được thực thi nhiều lần, nói chung, việc thực hiện phân tích phân tích chỉ một lần là có lợi cho việc sử dụng lại kế hoạch thực thi cho soi kèo bóng đá truoctran.spi_prepare
Chuyển đổi một chuỗi soi kèo bóng đá truoctran thành một câu soi kèo bóng đá truoctran đã chuẩn bị gói gọn kết quả phân tích phân tích. Tuyên bố đã chuẩn bị cũng cung cấp một nơi để lưu trữ kế hoạch thực thi nếu thấy rằng việc tạo ra một kế hoạch tùy chỉnh cho mỗi lần thực thi là không hữu ích.
Một soi kèo bóng đá truoctran đã chuẩn bị có thể được khái quát bằng cách ghi các tham số ($ 1
, $ 2
, v.v.) thay cho những gì sẽ là hằng số trong một soi kèo bóng đá truoctran bình thường. Các giá trị thực của các tham số sau đó được chỉ định khiSPI_EXECUTE_PLAN
được gọi. Điều này cho phép soi kèo bóng đá truoctran đã chuẩn bị được sử dụng trong phạm vi các tình huống rộng hơn có thể mà không có tham số.
Câu soi kèo bóng đá truoctran được trả về bởispi_prepare
Chỉ có thể được sử dụng trong soi kèo bóng đá truoctran gọi hiện tại của hàm C, vìspi_finish
Bộ nhớ giải phóng được phân bổ cho một tuyên bố như vậy. Nhưng câu soi kèo bóng đá truoctran có thể được lưu lâu hơn bằng cách sử dụng các chức năngspi_keepplan
hoặcspi_saveplan
.
const char *soi kèo bóng đá truoctran
chuỗi soi kèo bóng đá truoctran
intNARGS
Số lượng tham số đầu vào ($ 1
, $ 2
, v.v.)
oid *argtypes
Con trỏ tới soi kèo bóng đá truoctran mảng chứaoidS của các loại dữ liệu của các tham số
spi_prepare
Trả về soi kèo bóng đá truoctran con trỏ không null cho soi kèo bóng đá truoctranSpiplan
, là một cấu trúc mờ biểu thị một câu soi kèo bóng đá truoctran đã chuẩn bị. Trên lỗi,null
sẽ được trả về vàspi_result
sẽ được đặt thành soi kèo bóng đá truoctran trong các mã lỗi tương tự được sử dụng bởiSPI_EXECUTE
, ngoại trừ nó được đặt thànhspi_error_argument
nếusoi kèo bóng đá truoctran
lànull
hoặc nếuNARGS
nhỏ hơn 0 hoặc nếuNARGS
lớn hơn 0 vàargtypes
lànull
.
Nếu không có tham số nào được xác định, soi kèo bóng đá truoctran kế hoạch chung sẽ được tạo ở lần đầu tiên sử dụngSPI_EXECUTE_PLAN
, và cũng được sử dụng cho tất cả các lần thực hiện tiếp theo. Nếu có các tham số, soi kèo bóng đá truoctran vài lần sử dụng đầu tiên củaSPI_EXECUTE_PLAN
sẽ tạo các gói tùy chỉnh dành riêng cho các giá trị tham số được cung cấp. Sau khi sử dụng đủ của cùng một câu soi kèo bóng đá truoctran đã chuẩn bị,SPI_EXECUTE_PLAN
sẽ xây dựng soi kèo bóng đá truoctran kế hoạch chung và nếu điều đó không quá đắt so với các kế hoạch tùy chỉnh, nó sẽ bắt đầu sử dụng kế hoạch chung thay vì lập kế hoạch lại mỗi lần. Nếu hành vi mặc định này không phù hợp, bạn có thể thay đổi nó bằng cách vượt quacursor_opt_generic_plan
hoặccon trỏ_opt_custom_plan
cờ đếnspi_prepare_cursor
, để buộc sử dụng các kế hoạch chung hoặc tùy chỉnh tương ứng.
Mặc dù điểm chính của câu soi kèo bóng đá truoctran đã chuẩn bị là để tránh phân tích phân tích và lập kế hoạch phân tích lặp đi lặp lại của câu soi kèo bóng đá truoctran,POSTGRESQLsẽ buộc phân tích lại và lập kế hoạch lại câu soi kèo bóng đá truoctran trước khi sử dụng nó bất cứ khi nào các đối tượng cơ sở dữ liệu được sử dụng trong câu soi kèo bóng đá truoctran đã trải qua các thay đổi xác định (DDL) kể từ khi sử dụng câu soi kèo bóng đá truoctran đã chuẩn bị trước đó. Ngoài ra, nếu giá trị củasearch_pathThay đổi từ sử dụng này sang cách tiếp theo, câu soi kèo bóng đá truoctran sẽ được phân loại lại bằng cách sử dụng mớisearch_path
. (Hành vi sau này là mới nhưPostgreSQL9.3.) XemChuẩn bịĐể biết thêm thông tin về hành vi của các câu soi kèo bóng đá truoctran được chuẩn bị.
Hàm này chỉ nên được gọi từ hàm C được kết nối.
spiplanptr
được khai báo là soi kèo bóng đá truoctran con trỏ tới soi kèo bóng đá truoctran loại cấu trúc mờ trongspi.h
. Không khôn ngoan khi cố gắng truy cập trực tiếp vào nội dung của nó, vì điều đó làm cho mã của bạn có nhiều khả năng phá vỡ các bản sửa đổi trong tương lai củaPostgreSQL.
Tênspiplanptr
có phần lịch sử, vì cấu trúc dữ liệu không nhất thiết phải chứa soi kèo bóng đá truoctran kế hoạch thực thi.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợpMẫu nàyĐể báo cáo vấn đề tài liệu.