52.10. pg_cast #
РкаÑалоге pg_cast Ñ
ÑанÑÑÑÑ Ð¿ÑÑи пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñипов (как вÑÑÑоеннÑÑ
, Ñак и полÑзоваÑелÑÑкиÑ
).
СледÑÐµÑ Ð·Ð°Ð¼ÐµÑиÑÑ, ÑÑо pg_cast пÑедÑÑавлÑÐµÑ Ð½Ðµ каждое пÑиведение, коÑоÑое Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑ ÑиÑÑема, а ÑолÑко Ñе, коÑоÑÑе нелÑÐ·Ñ Ð²ÑвеÑÑи по некоÑоÑÑм обÑим пÑавилам. ÐапÑимеÑ, пÑиведение Ñипа домена к его Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¼Ñ ÑÐ¸Ð¿Ñ Ð½Ðµ пÑедÑÑавлÑеÑÑÑ Ñвно в pg_cast. ÐÑÑ Ð¾Ð´Ð½Ð¾ важное иÑклÑÑение ÑоÑÑавлÑÑÑ Â«Ð°Ð²ÑомаÑиÑеÑкие пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода», коÑоÑÑе вÑполнÑÑÑÑÑ Ñ Ð¿Ñименением ÑобÑÑвеннÑÑ
ÑÑнкÑий ввода-вÑвода Ñипа даннÑÑ
, пÑеобÑазÑÑÑиÑ
Ñип в text или дÑÑгие ÑÑÑоковÑе ÑÐ¸Ð¿Ñ â они Ñакже не пÑедÑÑавлÑÑÑÑÑ Ñвно в pg_cast.
ТаблиÑа 52.10. СÑолбÑÑ pg_cast
Тип ÑÑолбÑа ÐпиÑание |
|---|
ÐденÑиÑикаÑÐ¾Ñ ÑÑÑоки |
OID иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñипа даннÑÑ |
OID Ñелевого Ñипа даннÑÑ |
OID ÑÑнкÑии, вÑполнÑÑÑей пÑиведение, или нолÑ, еÑли Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ меÑода пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ ÑÑебÑеÑÑÑ ÑÑнкÑиÑ. |
ÐпÑеделÑеÑ, в какиÑ
конÑекÑÑаÑ
Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð¿Ñиведение. Символ |
ÐоказÑваеÑ, как вÑполнÑеÑÑÑ Ð¿Ñиведение. Символ |
ФÑнкÑии пÑиведениÑ, пеÑеÑиÑленнÑе в pg_cast, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²Ñегда пÑинимаÑÑ Ð¸ÑÑ
однÑй Ñип пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð² каÑеÑÑве Ñипа пеÑвого аÑгÑменÑа и возвÑаÑаÑÑ ÑезÑлÑÑаÑ, имеÑÑий Ñелевой Ñип. ФÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð´Ð¾ ÑÑÑÑ
аÑгÑменÑов. ÐÑоÑой аÑгÑменÑ, еÑли он пÑиÑÑÑÑÑвÑеÑ, должен имеÑÑ Ñип integer; в нÑм пеÑедаÑÑÑÑ Ð¼Ð¾Ð´Ð¸ÑикаÑÐ¾Ñ Ñипа, ÑвÑзаннÑй Ñ ÑелевÑм Ñипом, либо -1, еÑли Ñакого модиÑикаÑоÑа неÑ. ТÑеÑий аÑгÑменÑ, еÑли он пÑиÑÑÑÑÑвÑеÑ, должен имеÑÑ Ñип boolean; в нÑм пеÑедаÑÑÑÑ true, еÑли пÑиведение вÑполнÑеÑÑÑ Ñвно, и false в пÑоÑивном ÑлÑÑае.
Ðполне возможно ÑоздаÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð² pg_cast, в коÑоÑой иÑÑ
однÑй Ñип бÑÐ´ÐµÑ ÑовпадаÑÑ Ñ ÑелевÑм, еÑли ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð±Ð¾Ð»ÑÑе одного аÑгÑменÑа. Такие запиÑи пÑедÑÑавлÑÑÑ Â«ÑÑнкÑии пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ð¸Ð½Ñ», коÑоÑÑе пÑиводÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑого Ñипа в ÑооÑвеÑÑÑвие Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм знаÑением модиÑикаÑоÑа.
Ðогда в запиÑи pg_cast иÑÑ
однÑй и Ñелевой ÑÐ¸Ð¿Ñ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑазлиÑаÑÑÑÑ Ð¸ ÑÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð±Ð¾Ð»ÐµÐµ одного аÑгÑменÑа, ÑÑа запиÑÑ Ð¿ÑедÑÑавлÑÐµÑ Ð¿ÑеобÑазование Ñипа из одного в дÑÑгой и Ñведение к нÑжной длине за один Ñаг. ÐÑли же Ñакой запиÑи не наÑ
одиÑÑÑ, пÑиведение к ÑÐ¸Ð¿Ñ Ñ Ð¾Ð¿ÑеделÑннÑм модиÑикаÑоÑом вÑполнÑеÑÑÑ Ð² два ÑÑапа, ÑнаÑала вÑполнÑеÑÑÑ Ð¿ÑеобÑазование Ñипа, а заÑем пÑименÑеÑÑÑ Ð¼Ð¾Ð´Ð¸ÑикаÑÐ¾Ñ Ñипа.