42.1. ÐбзоÑ
PL/Tcl пÑедоÑÑавлÑÐµÑ Ð±Ð¾Ð»ÑÑинÑÑво возможноÑÑей, коÑоÑÑе Ð¸Ð¼ÐµÐµÑ ÑазÑабоÑÑик ÑÑнкÑий на C, Ñ Ð½ÐµÐ±Ð¾Ð»ÑÑими огÑаниÑениÑми, и позволÑÐµÑ Ð¿ÑименÑÑÑ Ð¼Ð¾ÑнÑе библиоÑеки обÑабоÑки ÑÑÑок, ÑÑÑеÑÑвÑÑÑие Ð´Ð»Ñ Tcl.
Ðдним ÑбедиÑелÑнÑм Ñ
оÑоÑим огÑаниÑением ÑвлÑеÑÑÑ Ñо, ÑÑо веÑÑ ÐºÐ¾Ð´ вÑполнÑеÑÑÑ Ð² конÑекÑÑе безопаÑноÑÑи инÑеÑпÑеÑаÑоÑа Tcl. Ðомимо огÑаниÑенного набоÑа команд безопаÑного Tcl, ÑазÑеÑÐµÐ½Ñ ÑолÑко неÑколÑко команд Ð´Ð»Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº базе даннÑÑ
ÑеÑез SPI и вÑÐ·Ð¾Ð²Ñ elog() Ð´Ð»Ñ Ð²ÑдаÑи ÑообÑений. PL/Tcl не даÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи взаимодейÑÑвоваÑÑ Ñ Ð²Ð½ÑÑÑенним меÑ
анизмом ÑеÑвеÑа баз даннÑÑ
или обÑаÑаÑÑÑÑ Ðº ÐС Ñ Ð¿Ñавами ÑеÑвеÑного пÑоÑеÑÑа Postgres Pro, ÑÑо возможно в ÑÑнкÑиÑÑ
на C. Таким обÑазом, иÑполÑзование ÑÑого ÑзÑка можно довеÑиÑÑ Ð½ÐµÐ¿ÑивилегиÑованнÑм полÑзоваÑелÑм; ÑÑо не даÑÑ Ð¸Ð¼ неогÑаниÑеннÑе полномоÑиÑ.
ÐÑÑ Ð¾Ð´Ð½Ð¾ ÑÑÑеÑÑвенное огÑаниÑение заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо ÑÑнкÑии на Tcl нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑнкÑий ввода/вÑвода Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ Ñипов даннÑÑ .
Ðногда Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¶ÐµÐ»Ð°Ð½Ð¸Ðµ напиÑаÑÑ ÑÑнкÑÐ¸Ñ Ð½Ð° Tcl, коÑоÑÐ°Ñ Ð½Ðµ бÑдÑÑ Ð¾Ð³ÑаниÑена безопаÑнÑм Tcl. ÐапÑимеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ ÑÑнкÑиÑ, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¿Ð¾ÑÑлаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¿Ð¾ поÑÑе. ÐÐ»Ñ ÑÑиÑ
ÑлÑÑаев еÑÑÑ Ð²Ð°ÑиаÑÐ¸Ñ PL/Tcl, Ð½Ð°Ð·Ð²Ð°Ð½Ð½Ð°Ñ PL/TclU (название подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ Â«untrusted Tcl», недовеÑеннÑй Tcl). ÐÑо ÑÐ¾Ñ Ð¶Ðµ ÑзÑк, за иÑклÑÑением Ñого, ÑÑо Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ иÑполÑзÑеÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑеннÑй инÑеÑпÑеÑаÑÐ¾Ñ Tcl. ÐÑли пÑименÑеÑÑÑ PL/TclU, он должен бÑÑÑ ÑÑÑановлен как недовеÑеннÑй пÑоÑедÑÑнÑй ÑзÑк, ÑÑÐ¾Ð±Ñ ÑолÑко ÑÑпеÑполÑзоваÑели могли ÑоздаваÑÑ ÑÑнкÑии на нÑм. ÐвÑÐ¾Ñ ÑÑнкÑии на PL/TclU должен позабоÑиÑÑÑÑ Ð¾ Ñом, ÑÑÐ¾Ð±Ñ ÑÑÑ ÑÑнкÑÐ¸Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð±Ñло иÑполÑзоваÑÑ Ð½Ðµ по назнаÑениÑ, Ñак как она Ð¼Ð¾Ð¶ÐµÑ Ð´ÐµÐ»Ð°ÑÑ Ð²ÑÑ, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавами админиÑÑÑаÑоÑа баз даннÑÑ
.
РазделÑемÑй обÑекÑнÑй код Ð´Ð»Ñ Ð¾Ð±ÑабоÑÑиков вÑзова PL/Tcl и PL/TclU ÑобиÑаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки и ÑÑÑанавливаеÑÑÑ Ð² каÑалог библиоÑек Postgres Pro, еÑли поддеÑжка Tcl вклÑÑена на ÑÑапе конÑигÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑоÑедÑÑÑ ÑÑÑановки. ЧÑÐ¾Ð±Ñ ÑÑÑановиÑÑ PL/Tcl и/или PL/TclU в конкÑеÑнÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, воÑполÑзÑйÑеÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ CREATE EXTENSION, напÑимеÑ, Ñак: CREATE EXTENSION pltcl или CREATE EXTENSION pltclu.