SPI_execute_plan_extended
SPI_execute_plan_extended â вÑполниÑÑ Ð¾Ð¿ÐµÑаÑоÑ, подгоÑовленнÑй ÑÑнкÑией SPI_prepare
СинÑакÑиÑ
int SPI_execute_plan_extended(SPIPlanPtrplan, const SPIExecuteOptions *options)
ÐпиÑание
SPI_execute_plan_extended вÑполнÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑ, подгоÑовленнÑй ÑÑнкÑией SPI_prepare или ÑодÑÑвеннÑми ей. ÐÐ°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ ÑавнознаÑна SPI_execute_plan, не ÑÑиÑÐ°Ñ Ñого, ÑÑо по-дÑÑÐ³Ð¾Ð¼Ñ Ð¿ÑедÑÑавлÑеÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ знаÑениÑÑ
паÑамеÑÑов, пеÑедаваемÑÑ
запÑоÑÑ. Также ей могÑÑ Ð¿ÐµÑедаваÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе паÑамеÑÑÑ Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñполнением запÑоÑа.
ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов запÑоÑа пеÑедаÑÑÑÑ Ð² ÑÑÑÑкÑÑÑе ParamListInfo; ÑÑо Ñдобно, когда имеÑÑиеÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ñже пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² ÑÑом ÑоÑмаÑе. ЧеÑез ÑÑнкÑии-обÑабоÑÑики, ÑÑÑанавливаемÑе в ParamListInfo, можно Ñакже пеÑедаваÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑкие набоÑÑ Ð¿Ð°ÑамеÑÑов.
ÐÑоме Ñого, коÑÑежи ÑезÑлÑÑаÑа могÑÑ Ð½Ðµ ÑолÑко накапливаÑÑÑÑ Ð² ÑÑÑÑкÑÑÑе SPI_tuptable, но и пеÑедаваÑÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð²ÑзÑваÑÑим кодом обÑекÑÑ DestReceiver по меÑе ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑеÑедного коÑÑежа иÑполниÑелем. ÐÑобенно полезно иÑполÑзоваÑÑ ÑÑÐ¾Ñ Ð¾Ð±ÑÐµÐºÑ Ð² запÑоÑаÑ
, коÑоÑÑе могÑÑ Ð²ÑдаÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво коÑÑежей, поÑколÑÐºÑ Ð´Ð°Ð½Ð½Ñе бÑдÑÑ Ð¾Ð±ÑабаÑÑваÑÑÑÑ Â«Ð½Ð° леÑÑ», а не накапливаÑÑÑÑ Ð² памÑÑи.
ÐÑгÑменÑÑ
SPIPlanPtrplanподгоÑовленнÑй опеÑаÑÐ¾Ñ (возвÑаÑаемÑй ÑÑнкÑией
SPI_prepare)const SPIExecuteOptions *optionsÑÑÑÑкÑÑÑа, ÑодеÑжаÑÐ°Ñ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑе аÑгÑменÑÑ
СÑÑÑкÑÑÑÑ options вÑегда ÑледÑÐµÑ ÑнаÑала полноÑÑÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÑÑÑ Ð½ÑлÑми, а заÑем Ñже задаваÑÑ Ð½ÐµÐ¾Ð±Ñ
одимÑе знаÑениÑ. ÐÑо гаÑанÑиÑÑÐµÑ ÑовмеÑÑимоÑÑÑ Ñ Ð±ÑдÑÑими изменениÑми в коде: пÑи добавлении в ÑÑÑ ÑÑÑÑкÑÑÑÑ Ð»ÑбÑÑ
новÑÑ
полей нÑлевое знаÑение бÑÐ´ÐµÑ Ð¾Ð¿ÑеделÑÑÑ ÑÑаÑое поведение. СейÑÐ°Ñ Ð² options еÑÑÑ Ñакие полÑ:
ParamListInfoparamsÑÑÑÑкÑÑÑа даннÑÑ , ÑодеÑжаÑÐ°Ñ ÑÐ¸Ð¿Ñ Ð¸ знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов запÑоÑа; NULL, еÑли Ð¸Ñ Ð½ÐµÑ
boolread_onlytrueÐ´Ð»Ñ Ñежима вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Â«ÑолÑко ÑÑение»boolallow_nonatomictrueÐ´Ð»Ñ Ð½ÐµÐ°ÑомаÑного вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑов CALL и DO (но ÑÑо поле игноÑиÑÑеÑÑÑ, еÑли ÑÑнкÑииSPI_connect_extне бÑл пеÑедан ÑлагSPI_OPT_NONATOMIC)boolmust_return_tuplesеÑли
true, вÑзÑÐ²Ð°ÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð´Ð»Ñ Ñипов запÑоÑов, не возвÑаÑаÑÑÐ¸Ñ ÐºÐ¾ÑÑежи (за иÑклÑÑением ÑлÑÑаÑ, когда возвÑаÑаÑÑÑÑ Ð½ÑлевÑе коÑÑежи)uint64tcountмакÑималÑное ÑиÑло ÑÑÑок, коÑоÑое должно бÑÑÑ Ð²Ð¾Ð·Ð²ÑаÑено; Ñ
0огÑаниÑÐµÐ½Ð¸Ñ Ð½ÐµÑDestReceiver *destобÑекÑ
DestReceiver, полÑÑаÑÑий вÑе коÑÑежи, коÑоÑÑе вÑдаÑÑ Ð·Ð°Ð¿ÑоÑ; еÑли NULL, ÑезÑлÑÑиÑÑÑÑие коÑÑежи накапливаÑÑÑÑ Ð²SPI_tuptable, как пÑи вÑполненииSPI_execute_planResourceOwnerownerÐÐ»Ð°Ð´ÐµÐ»ÐµÑ ÑеÑÑÑÑа, коÑоÑÑй бÑÐ´ÐµÑ ÑодеÑжаÑÑ ÑÑÑÑÑик ÑÑÑлок на план во вÑÐµÐ¼Ñ ÐµÐ³Ð¾ вÑполнениÑ. ÐÑли NULL, иÑполÑзÑеÑÑÑ ÑекÑÑий Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑеÑÑÑÑа. ÐаÑамеÑÑ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ Ð´Ð»Ñ Ð½ÐµÑÐ¾Ñ ÑанÑннÑÑ Ð¿Ð»Ð°Ð½Ð¾Ð², поÑколÑÐºÑ SPI не полÑÑÐ°ÐµÑ ÑÑÑÑÑики ÑÑÑлок на Ð½Ð¸Ñ .
ÐозвÑаÑаемое знаÑение
ÐозвÑаÑаемÑе знаÑÐµÐ½Ð¸Ñ Ñе же, ÑÑо и Ñ SPI_execute_plan.
ÐÑли options->dest Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение NULL, SPI_processed и SPI_tuptable ÑÑÑанавливаÑÑÑÑ ÐºÐ°Ðº пÑи вÑполнении SPI_execute_plan. ÐÑли options->dest â не NULL, Ñо SPI_processed пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ñлевое знаÑение, а SPI_tuptable â NULL. ÐÑли необÑ
одимо подÑÑиÑаÑÑ ÑиÑло коÑÑежей, ÑÑо нÑжно ÑделаÑÑ Ð² коде обÑекÑа DestReceiver.