SPI_execute_extended
SPI_execute_extended â вÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ñ Ð²ÑделеннÑми паÑамеÑÑами
СинÑакÑиÑ
int SPI_execute_extended(const char *command, const SPIExecuteOptions *options)
ÐпиÑание
SPI_execute_extended вÑполнÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ ÑÑÑлки на паÑамеÑÑÑ, пеÑедаваемÑе извне. Ð ÑекÑÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ð°ÑамеÑÑÑ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑаÑÑÑÑ Ñимволами $; Ñип и знаÑение каждого Ñакого паÑамеÑÑа пÑедоÑÑавлÑÑÑÑÑ Ð² обÑекÑе noptions->params (еÑли он пеÑедаÑÑÑÑ). Ð options Ñакже могÑÑ Ð¿ÐµÑедаваÑÑÑÑ ÑазлиÑнÑе паÑамеÑÑÑ Ð²ÑполнениÑ.
Ðак пÑавило, в обÑекÑе options->params вÑе паÑамеÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¿Ð¾Ð¼ÐµÑÐºÑ PARAM_FLAG_CONST, поÑколÑÐºÑ Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑа вÑегда иÑполÑзÑеÑÑÑ Ð¾Ð´Ð½Ð¾ÑазовÑй план.
ÐÑли знаÑение options->dest не NULL, Ñо ÑезÑлÑÑиÑÑÑÑие коÑÑежи пеÑедаÑÑÑÑ Ð² ÑÑÐ¾Ñ Ð¾Ð±ÑÐµÐºÑ Ð¿Ð¾ меÑе иÑ
ÑоÑмиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ÑполниÑелем, а не накапливаÑÑÑÑ Ð² SPI_tuptable. ÐодгоÑовиÑÑ Ð¸ иÑполÑзоваÑÑ Ð¾Ð±ÑÐµÐºÑ DestReceiver оÑобенно полезно Ð´Ð»Ñ Ð·Ð°Ð¿ÑоÑов, пÑи вÑполнении коÑоÑÑÑ
можно полÑÑиÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво коÑÑежей, Ñак как ÑÑÐ¾Ñ Ð¾Ð±ÑÐµÐºÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¾Ð±ÑабаÑÑваÑÑ Ð´Ð°Ð½Ð½Ñе «на леÑÑ», не дожидаÑÑÑ Ð¸Ñ
Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð¸Ñ Ð² памÑÑи.
ÐÑгÑменÑÑ
const char *commandÑÑÑока командÑ
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_executeResourceOwnerownerÐÑо поле пÑиÑÑÑÑÑвÑÐµÑ Ð´Ð»Ñ ÑоглаÑованноÑÑи Ñ
SPI_execute_plan_extended, но игноÑиÑÑеÑÑÑ, поÑколÑÐºÑ Ð¸ÑполÑзÑемÑйSPI_execute_extendedплан никогда не ÑÐ¾Ñ ÑанÑеÑÑÑ.
ÐозвÑаÑаемое знаÑение
ÐозвÑаÑаемÑе знаÑÐµÐ½Ð¸Ñ Ñе же, ÑÑо и Ñ SPI_execute.
ÐÑли options->dest Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение NULL, Ñо SPI_processed и SPI_tuptable ÑÑÑанавливаÑÑÑÑ ÐºÐ°Ðº пÑи вÑполнении SPI_execute. ÐÑли options->dest â не NULL, Ñо SPI_processed пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð½Ñлевое знаÑение, а SPI_tuptable â NULL. ÐÑли необÑ
одимо подÑÑиÑаÑÑ ÑиÑло коÑÑежей, ÑÑо нÑжно ÑделаÑÑ Ð² коде обÑекÑа DestReceiver.