31.6. ÐÑмена запÑоÑов в пÑоÑеÑÑе вÑполнениÑ
ÐлиенÑÑкое пÑиложение Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑоÑиÑÑ Ð¾ÑÐ¼ÐµÐ½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, коÑоÑÐ°Ñ ÐµÑÑ Ð¾Ð±ÑабаÑÑваеÑÑÑ ÑеÑвеÑом, иÑполÑзÑÑ ÑÑнкÑии, опиÑаннÑе в ÑÑом Ñазделе.
-
PQgetCancel СоздаÑÑ ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ , ÑодеÑжаÑÑÑ Ð¸Ð½ÑоÑмаÑиÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð»Ñ Ð¾ÑÐ¼ÐµÐ½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, запÑÑенной ÑеÑез конкÑеÑное подклÑÑение к базе даннÑÑ .
PGcancel *PQgetCancel(PGconn *conn);
ФÑнкÑиÑ
PQgetCancelÑоздаÑÑ Ð¾Ð±ÑекÑPGcancel, полÑÑив обÑекÑPGconn, опиÑÑваÑÑий подклÑÑение. Ðна возвÑаÑиÑNULL, еÑли даннÑй паÑамеÑÑconnÑавенNULLили пÑедÑÑавлÑÐµÑ Ñобой недейÑÑвиÑелÑное подклÑÑениÑ. ÐбÑекÑPGcancelÑвлÑеÑÑÑ Ð½ÐµÐ¿ÑозÑаÑной ÑÑÑÑкÑÑÑой, коÑоÑÐ°Ñ Ð½Ðµ пÑедназнаÑена Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿Ñиложение обÑаÑалоÑÑ Ðº ней напÑÑмÑÑ; ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко пеÑедаваÑÑ ÑÑнкÑииPQcancelилиPQfreeCancel.-
PQfreeCancel ÐÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð¿Ð°Ð¼ÑÑÑ, занимаемÑÑ ÑÑÑÑкÑÑÑой даннÑÑ , Ñозданной ÑÑнкÑией
PQgetCancel.void PQfreeCancel(PGcancel *cancel);
PQfreeCancelоÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð¿Ð°Ð¼ÑÑÑ, занимаемÑÑ Ð¾Ð±ÑекÑом, пÑедваÑиÑелÑно ÑозданнÑм ÑÑнкÑиейPQgetCancel.-
PQcancel ТÑебÑеÑ, ÑÑÐ¾Ð±Ñ ÑеÑÐ²ÐµÑ Ð¿ÑекÑаÑил обÑабоÑÐºÑ ÑекÑÑей командÑ.
int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize);
ÐозвÑаÑаемое знаÑение Ñавно 1, еÑли запÑÐ¾Ñ Ð½Ð° оÑÐ¼ÐµÐ½Ñ Ð±Ñл ÑÑпеÑно оÑпÑавлен, и 0 в пÑоÑивном ÑлÑÑае. Ð ÑлÑÑае неÑдаÑной оÑпÑавки
errbufзаполнÑеÑÑÑ Ð¿Ð¾ÑÑниÑелÑнÑм ÑообÑением об оÑибке.errbufдолжен бÑÑÑ Ð¼Ð°ÑÑивом Ñимволов, имеÑÑим ÑазмеÑerrbufsize(ÑекомендÑемÑй ÑÐ°Ð·Ð¼ÐµÑ ÑоÑÑавлÑÐµÑ 256 байÑ).УÑпеÑÐ½Ð°Ñ Ð¾ÑпÑавка еÑÑ Ð½Ðµ ÑвлÑеÑÑÑ Ð³Ð°ÑанÑией Ñого, ÑÑо запÑÐ¾Ñ Ð±ÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ ÐºÐ°ÐºÐ¾Ð¹-Ñо ÑÑÑекÑ. ÐÑли оÑмена ÑÑабоÑала, ÑекÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° завеÑÑиÑÑÑ Ð´Ð¾ÑÑоÑно и возвÑаÑÐ¸Ñ Ð² каÑеÑÑве ÑезÑлÑÑаÑа оÑибкÑ. ÐÑли же оÑмена не полÑÑиÑÑÑ (напÑимеÑ, поÑомÑ, ÑÑо ÑеÑÐ²ÐµÑ Ñже завеÑÑил обÑабоÑÐºÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ), Ñогда вообÑе не бÑÐ´ÐµÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ð³Ð¾ ÑезÑлÑÑаÑа.
PQcancelможно безопаÑно вÑзÑваÑÑ Ð¸Ð· обÑабоÑÑика Ñигнала, еÑлиerrbufÑвлÑеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ñной пеÑеменной в обÑабоÑÑике Ñигнала. ÐбÑекÑPGcancelдоÑÑÑпен ÑолÑко в Ñежиме ÑÑениÑ, пока ÑеÑÑ Ð¸Ð´ÑÑ Ð¾ ÑÑнкÑииPQcancel, поÑÑÐ¾Ð¼Ñ ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ Ñакже вÑзÑваÑÑ Ð¸Ð· поÑока, оÑделÑного Ð¾Ñ Ñого, коÑоÑÑй ÑпÑавлÑÐµÑ Ð¾Ð±ÑекÑомPGconn.
-
PQrequestCancel PQrequestCancelÑвлÑеÑÑÑ Ð½ÐµÑекомендÑемÑм ваÑианÑом ÑÑнкÑииPQcancel.int PQrequestCancel(PGconn *conn);
ÐÑдаÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð½Ð° Ñо, ÑÑÐ¾Ð±Ñ ÑеÑÐ²ÐµÑ Ð¿ÑекÑаÑил обÑабоÑÐºÑ ÑекÑÑей командÑ. ФÑнкÑÐ¸Ñ ÑабоÑÐ°ÐµÑ Ð½Ð°Ð¿ÑÑмÑÑ Ñ Ð¾Ð±ÑекÑом
PGconnи в ÑлÑÑае ÑÐ±Ð¾Ñ ÑÐ¾Ñ ÑанÑÐµÑ ÑообÑение об оÑибке в обÑекÑеPGconn(оÑкÑда его можно извлеÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑPQerrorMessage). ХоÑÑ ÑÑнкÑионалÑноÑÑÑ Ñа же ÑамаÑ, ÑÑÐ¾Ñ Ð¿Ð¾Ð´Ñ Ð¾Ð´ ÑоздаÑÑ ÑиÑки Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð¿Ð¾ÑоÑнÑÑ Ð¿ÑогÑамм и обÑабоÑÑиков Ñигналов, поÑколÑÐºÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, ÑÑо пеÑезапиÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке, Ñ ÑанÑÑегоÑÑ Ð² обÑекÑеPGconn, внеÑÑÑ Ð¿ÑÑаниÑÑ Ð² ÑекÑÑÑÑ Ð¾Ð¿ÐµÑаÑиÑ, вÑполнÑемÑÑ Ð½Ð° данном подклÑÑении.