8.21. ÐÑевдоÑÐ¸Ð¿Ñ #
Ð ÑиÑÑÐµÐ¼Ñ Ñипов Postgres Pro вклÑÑÐµÐ½Ñ Ð½ÐµÑколÑко ÑпеÑиалÑнÑÑ ÑлеменÑов, коÑоÑÑе в ÑовокÑпноÑÑи назÑваÑÑÑÑ Ð¿ÑевдоÑипами. ÐÑевдоÑип нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð² каÑеÑÑве Ñипа даннÑÑ ÑÑолбÑа, но можно обÑÑвиÑÑ ÑÑнкÑÐ¸Ñ Ñ Ð°ÑгÑменÑом или ÑезÑлÑÑаÑом Ñакого Ñипа. ÐаждÑй из ÑÑÑеÑÑвÑÑÑÐ¸Ñ Ð¿ÑевдоÑипов полезен в ÑиÑÑаÑиÑÑ , когда Ñ Ð°ÑакÑÐµÑ ÑÑнкÑии не позволÑÐµÑ Ð¿ÑоÑÑо полÑÑиÑÑ Ð¸Ð»Ð¸ веÑнÑÑÑ Ð¾Ð¿ÑеделÑннÑй Ñип даннÑÑ SQL. ÐÑе ÑÑÑеÑÑвÑÑÑие пÑевдоÑÐ¸Ð¿Ñ Ð¿ÐµÑеÑиÑÐ»ÐµÐ½Ñ Ð² ТаблиÑе 8.27.
ТаблиÑа 8.27. ÐÑевдоÑипÑ
| ÐÐ¼Ñ | ÐпиÑание |
|---|---|
any | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой вводимÑй Ñип даннÑÑ . |
anyelement | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой Ñип даннÑÑ (Ñм. ÐодÑаздел 36.2.5). |
anyarray | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой Ñип маÑÑива (Ñм. ÐодÑаздел 36.2.5). |
anynonarray | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой Ñип даннÑÑ , кÑоме маÑÑивов (Ñм. ÐодÑаздел 36.2.5). |
anyenum | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбое пеÑеÑиÑление (Ñм. ÐодÑаздел 36.2.5 и Раздел 8.7). |
anyrange | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой диапазоннÑй Ñип даннÑÑ (Ñм. ÐодÑаздел 36.2.5 и Раздел 8.17). |
anymultirange | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой мÑлÑÑидиапазоннÑй Ñип даннÑÑ (Ñм. ÐодÑаздел 36.2.5 и Раздел 8.17). |
anycompatible | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой Ñип даннÑÑ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð°Ð²ÑомаÑиÑеÑки пÑиводиÑÑ ÑазлиÑнÑе аÑгÑменÑÑ Ðº обÑÐµÐ¼Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ (Ñм. ÐодÑаздел 36.2.5). |
anycompatiblearray | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой Ñип маÑÑива и Ð¼Ð¾Ð¶ÐµÑ Ð°Ð²ÑомаÑиÑеÑки пÑиводиÑÑ ÑазлиÑнÑе аÑгÑменÑÑ Ðº обÑÐµÐ¼Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ (Ñм. ÐодÑаздел 36.2.5). |
anycompatiblenonarray | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой Ñип, оÑлиÑнÑй Ð¾Ñ Ð¼Ð°ÑÑива, и Ð¼Ð¾Ð¶ÐµÑ Ð°Ð²ÑомаÑиÑеÑки пÑиводиÑÑ ÑазлиÑнÑе аÑгÑменÑÑ Ðº обÑÐµÐ¼Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ (Ñм. ÐодÑаздел 36.2.5). |
anycompatiblerange | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой Ñип диапазоннÑй даннÑÑ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð°Ð²ÑомаÑиÑеÑки пÑиводиÑÑ ÑазлиÑнÑе аÑгÑменÑÑ Ðº обÑÐµÐ¼Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ (Ñм. ÐодÑаздел 36.2.5 и Раздел 8.17). |
anycompatiblemultirange | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð»Ñбой мÑлÑÑидиапазоннÑй Ñип даннÑÑ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð°Ð²ÑомаÑиÑеÑки пÑиводиÑÑ ÑазлиÑнÑе аÑгÑменÑÑ Ðº обÑÐµÐ¼Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ (Ñм. ÐодÑаздел 36.2.5 и Раздел 8.17). |
cstring | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð² ÑÑиле C. |
internal | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ Ð²Ð½ÑÑÑенний ÑеÑвеÑнÑй Ñип даннÑÑ . |
language_handler | ÐбÑабоÑÑик пÑоÑедÑÑного ÑзÑка обÑÑвлÑеÑÑÑ ÐºÐ°Ðº возвÑаÑаÑÑий Ñип language_handler. |
fdw_handler | ÐбÑабоÑÑик обÑÑÑки ÑÑоÑонниÑ
даннÑÑ
обÑÑвлÑеÑÑÑ ÐºÐ°Ðº возвÑаÑаÑÑий Ñип fdw_handler. |
table_am_handler | ÐбÑабоÑÑик ÑаблиÑного меÑода доÑÑÑпа обÑÑвлÑеÑÑÑ ÐºÐ°Ðº возвÑаÑаÑÑий Ñип table_am_handler. |
index_am_handler | ÐбÑабоÑÑик меÑода доÑÑÑпа индекÑа обÑÑвлÑеÑÑÑ ÐºÐ°Ðº возвÑаÑаÑÑий Ñип index_am_handler. |
tsm_handler | ÐбÑабоÑÑик меÑода вÑбоÑки из ÑаблиÑÑ Ð¾Ð±ÑÑвлÑеÑÑÑ ÐºÐ°Ðº возвÑаÑаÑÑий Ñип tsm_handler. |
record | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ Ð½ÐµÐ¾Ð¿ÑеделÑннÑй Ñип ÑÑÑоки. |
trigger | ТÑиггеÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð¾Ð±ÑÑвлÑеÑÑÑ ÐºÐ°Ðº возвÑаÑаÑÑÐ°Ñ Ñип trigger. |
event_trigger | ФÑнкÑÐ¸Ñ ÑобÑÑийного ÑÑиггеÑа обÑÑвлÑеÑÑÑ ÐºÐ°Ðº возвÑаÑаÑÑÐ°Ñ Ñип event_trigger. |
pg_ddl_command | ÐбознаÑÐ°ÐµÑ Ð¿ÑедÑÑавление команд DDL, доÑÑÑпное ÑобÑÑийнÑм ÑÑиггеÑам. |
void | УказÑваеÑ, ÑÑо ÑÑнкÑÐ¸Ñ Ð½Ðµ возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение. |
unknown | ÐбознаÑÐ°ÐµÑ ÐµÑÑ Ð½Ðµ ÑаÑпознаннÑй Ñип, напÑÐ¸Ð¼ÐµÑ Ð¿ÑоÑÑÑÑ ÑÑÑоковÑÑ ÐºÐ¾Ð½ÑÑанÑÑ. |
ФÑнкÑии, напиÑаннÑе на ÑзÑке C (вÑÑÑоеннÑе или динамиÑеÑки загÑÑжаемÑе), могÑÑ Ð±ÑÑÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ñ Ñ Ð¿Ð°ÑамеÑÑами или ÑезÑлÑÑаÑами лÑбого из ÑÑÐ¸Ñ Ð¿ÑевдоÑипов. ÐÑвеÑÑÑвенноÑÑÑ Ð·Ð° безопаÑное поведение ÑÑнкÑии Ñ Ð°ÑгÑменÑами ÑÐ°ÐºÐ¸Ñ Ñипов ложиÑÑÑ Ð½Ð° ÑазÑабоÑÑика ÑÑнкÑии.
ФÑнкÑии, напиÑаннÑе на пÑоÑедÑÑнÑÑ
ÑзÑкаÑ
, могÑÑ Ð¸ÑполÑзоваÑÑ Ð¿ÑевдоÑипÑ, ÑолÑко еÑли ÑÑо позволÑÐµÑ ÑооÑвеÑÑÑвÑÑÑий ÑзÑк. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð±Ð¾Ð»ÑÑинÑÑво пÑоÑедÑÑнÑÑ
ÑзÑков запÑеÑаÑÑ Ð¸ÑполÑзоваÑÑ Ð¿ÑевдоÑÐ¸Ð¿Ñ Ð² каÑеÑÑве Ñипа аÑгÑменÑа и позволÑÑÑ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ ÑезÑлÑÑаÑов ÑолÑко ÑÐ¸Ð¿Ñ void и record (и trigger или event_trigger, когда ÑÑнкÑÐ¸Ñ ÑеализÑÐµÑ ÑÑÐ¸Ð³Ð³ÐµÑ Ð¸Ð»Ð¸ ÑобÑÑийнÑй ÑÑиггеÑ). ÐекоÑоÑÑе ÑзÑки Ñакже поддеÑживаÑÑ Ð¿Ð¾Ð»Ð¸Ð¼Ð¾ÑÑнÑе ÑÑнкÑии Ñ Ð¿Ð¾Ð»Ð¸Ð¼Ð¾ÑÑнÑми пÑевдоÑипами, подÑобно ÑаÑÑмоÑÑеннÑми в ÐодÑазделе 36.2.5.
ÐÑевдоÑип internal иÑполÑзÑеÑÑÑ Ð² обÑÑвлениÑÑ
ÑÑнкÑий, пÑедназнаÑеннÑÑ
ÑолÑко Ð´Ð»Ñ Ð²Ð½ÑÑÑеннего иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² СУÐÐ, но не Ð´Ð»Ñ Ð¿ÑÑмого вÑзова в запÑоÑаÑ
SQL. ÐÑли Ñ ÑÑнкÑии еÑÑÑ ÐºÐ°Ðº Ñ
оÑÑ Ð±Ñ Ð¾Ð´Ð¸Ð½ аÑгÑÐ¼ÐµÐ½Ñ Ñипа internal, ÐµÑ Ð½ÐµÐ»ÑÐ·Ñ Ð±ÑÐ´ÐµÑ Ð²ÑзÑваÑÑ Ð¸Ð· SQL. ЧÑÐ¾Ð±Ñ ÑоÑ
ÑаниÑÑ ÑипобезопаÑноÑÑÑ Ð¿Ñи Ñаком огÑаниÑении, ÑледÑйÑе Ð²Ð°Ð¶Ð½Ð¾Ð¼Ñ Ð¿ÑавилÑ: не ÑоздавайÑе ÑÑнкÑиÑ, возвÑаÑаÑÑÑÑ ÑезÑлÑÑÐ°Ñ Ñипа internal, еÑли Ñ Ð½ÐµÑ Ð½ÐµÑ Ð½Ð¸ одного аÑгÑменÑа internal.