CREATE EXTENSION
CREATE EXTENSION â ÑÑÑановиÑÑ ÑаÑÑиÑение
СинÑакÑиÑ
CREATE EXTENSION [ IF NOT EXISTS ]имÑ_ÑаÑÑиÑениÑ[ WITH ] [ SCHEMAимÑ_ÑÑ ÐµÐ¼Ñ] [ VERSIONвеÑÑиÑ] [ CASCADE ]
ÐпиÑание
CREATE EXTENSION загÑÑÐ¶Ð°ÐµÑ Ð² ÑекÑÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
новое ÑаÑÑиÑение. РаÑÑиÑение Ñ Ñаким именем не должно бÑÑÑ Ñже загÑÑжено.
ÐагÑÑзка ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑÑÑи ÑводиÑÑÑ Ðº запÑÑÐºÑ ÑкÑипÑа ÑаÑÑиÑениÑ. ÐÑÐ¾Ñ ÑкÑÐ¸Ð¿Ñ Ð¾Ð±ÑÑно ÑоздаÑÑ Ð½Ð¾Ð²Ñе SQL-обÑекÑÑ, Ñакие как ÑÑнкÑии, ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
, опеÑаÑоÑÑ Ð¸ меÑÐ¾Ð´Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки индекÑов. CREATE EXTENSION дополниÑелÑно запиÑÑÐ²Ð°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ Ð²ÑеÑ
добавлÑемÑÑ
обÑекÑов, Ñак ÑÑо впоÑледÑÑвии иÑ
можно ÑдалиÑÑ, вÑполнив ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ DROP EXTENSION.
ÐолÑзоваÑелÑ, вÑполнÑÑÑий CREATE EXTENSION, ÑÑановиÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем Ñамого ÑаÑÑиÑениÑ, ÑÑо опÑеделÑÐµÑ ÐµÐ³Ð¾ пÑава в далÑнейÑем, а Ñакже обÑÑно он ÑÑановиÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем вÑеÑ
обÑекÑов, ÑозданнÑÑ
ÑкÑипÑом ÑаÑÑиÑениÑ.
ÐÐ»Ñ Ð·Ð°Ð³ÑÑзки ÑаÑÑиÑÐµÐ½Ð¸Ñ ÐºÐ°Ðº пÑавило ÑÑебÑÑÑÑÑ Ñе же пÑава, ÑÑо необÑ
Ð¾Ð´Ð¸Ð¼Ñ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑоÑÑавлÑÑÑиÑ
его обÑекÑов. ÐÐ»Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ
ÑаÑÑиÑений ÑÑо ознаÑаеÑ, ÑÑо необÑ
Ð¾Ð´Ð¸Ð¼Ñ Ð¿Ñава ÑÑпеÑполÑзоваÑелÑ. Ðднако еÑли ÑаÑÑиÑение помеÑено как trusted (довеÑенное) в ÑвоÑм ÑпÑавлÑÑÑем Ñайле, его Ð¼Ð¾Ð¶ÐµÑ ÑÑÑановиÑÑ Ð»Ñбой полÑзоваÑелÑ, имеÑÑий в базе даннÑÑ
пÑаво CREATE. Ð ÑÑом ÑлÑÑае Ñам обÑÐµÐºÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð¿ÑинадлежаÑÑ Ð²ÑзÑваÑÑÐµÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, но владелÑÑем ÑодеÑжаÑиÑ
ÑÑ Ð² нÑм обÑекÑов бÑÐ´ÐµÑ Ð½Ð°ÑалÑнÑй ÑÑпеÑполÑзоваÑÐµÐ»Ñ (еÑли ÑолÑко вÑзÑваÑÑий полÑзоваÑÐµÐ»Ñ Ð½Ðµ назнаÑаеÑÑÑ Ð¸Ñ
владелÑÑем в ÑкÑипÑе ÑаÑÑиÑениÑ). Ð¢Ð°ÐºÐ°Ñ ÑÑ
ема даÑÑ Ð²ÑзÑваÑÑÐµÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑдалиÑÑ ÑаÑÑиÑение, но не модиÑиÑиÑоваÑÑ Ð¾ÑделÑнÑе обÑекÑÑ Ð²Ð½ÑÑÑи него.
ÐаÑамеÑÑÑ
IF NOT EXISTSÐе ÑÑиÑаÑÑ Ð¾Ñибкой, еÑли ÑаÑÑиÑение Ñ Ñаким именем Ñже ÑÑÑеÑÑвÑеÑ. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð²Ñдано замеÑание. ÐамеÑÑÑе, ÑÑо Ð½ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ гаÑанÑии, ÑÑо ÑÑÑеÑÑвÑÑÑее ÑаÑÑиÑение как-Ñо ÑооÑноÑиÑÑÑ Ñ Ñем, коÑоÑое могло Ð±Ñ Ð±ÑÑÑ Ñоздано из Ñказанного ÑкÑипÑа.
имÑ_ÑаÑÑиÑениÑÐÐ¼Ñ ÑÑÑанавливаемого ÑаÑÑиÑениÑ. Postgres Pro ÑоздаÑÑ ÑаÑÑиÑение, иÑполÑзÑÑ Ð¸Ð½ÑÑÑÑкÑии из Ñайла
SHAREDIR/extension/имÑ_ÑаÑÑиÑениÑ.control.имÑ_ÑÑ ÐµÐ¼ÑÐÐ¼Ñ ÑÑ ÐµÐ¼Ñ, в коÑоÑÑÑ Ð±ÑдÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð¾Ð±ÑекÑÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ (подÑазÑмеваеÑÑÑ, ÑÑо ÑаÑÑиÑение позволÑÐµÑ ÑпÑавлÑÑÑ ÑазмеÑением ÑÐ²Ð¾Ð¸Ñ Ð¾Ð±ÑекÑов). Ð£ÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ ÑÑ ÐµÐ¼Ð° должна Ñже ÑÑÑеÑÑвоваÑÑ. ÐÑли Ð¸Ð¼Ñ Ð½Ðµ Ñказано и в ÑпÑавлÑÑÑем Ñайле ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð¾Ð½Ð¾ Ñак же не задано, Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑекÑов иÑполÑзÑеÑÑÑ ÑекÑÑÐ°Ñ ÑÑ ÐµÐ¼Ð°.
ÐÑли в ÑпÑавлÑÑÑем Ñайле ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ Ð¿Ð°ÑамеÑÑ
schema, заданнÑÑ ÑÑ ÐµÐ¼Ñ Ð½ÐµÐ»ÑÐ·Ñ Ð¿ÐµÑеопÑеделиÑÑ Ð¿ÑедложениемSCHEMA. ÐбÑÑно пÑи Ñказании пÑедложениÑSCHEMAÐ²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка, еÑли ÑÑа ÑÑ ÐµÐ¼Ð° конÑликÑÑÐµÑ Ñ Ð¿Ð°ÑамеÑÑомschemaданного ÑаÑÑиÑениÑ. Ðднако еÑли Ñакже задаÑÑÑÑ Ð¿ÑедложениеCASCADE, в ÑлÑÑае конÑликÑаимÑ_ÑÑ ÐµÐ¼ÑигноÑиÑÑеÑÑÑ. ÐаданноеимÑ_ÑÑ ÐµÐ¼ÑбÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ ÑÑÑановки вÑÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ ÑаÑÑиÑений, в ÑпÑавлÑÑÑÐ¸Ñ ÑÐ°Ð¹Ð»Ð°Ñ ÐºÐ¾ÑоÑÑÑ Ð½Ðµ задаÑÑÑÑschema.ÐомниÑе, ÑÑо Ñамо ÑаÑÑиÑение не ÑÑиÑаеÑÑÑ Ð¿ÑинадлежаÑим какой-либо ÑÑ ÐµÐ¼Ðµ; имена ÑаÑÑиÑений не дополнÑÑÑÑÑ ÑÑ ÐµÐ¼Ð¾Ð¹ и поÑÐ¾Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑникалÑнÑми во вÑей базе даннÑÑ . Ðднако обÑекÑÑ, пÑинадлежаÑие ÑаÑÑиÑениÑм, могÑÑ Ð¾ÑноÑиÑÑÑÑ Ðº ÑÑ ÐµÐ¼Ð°Ð¼.
веÑÑиÑÐеÑÑÐ¸Ñ ÑÑÑанавливаемого ÑаÑÑиÑениÑ. ÐÑ Ð¼Ð¾Ð¶Ð½Ð¾ запиÑаÑÑ Ð² виде иденÑиÑикаÑоÑа или ÑÑÑокового знаÑениÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÐµÑÑÐ¸Ñ ÑÑиÑÑваеÑÑÑ Ð¸Ð· ÑпÑавлÑÑÑего Ñайла ÑаÑÑиÑениÑ.
CASCADEÐвÑомаÑиÑеÑки ÑÑÑанавливаÑÑ Ð²Ñе ÑаÑÑиÑениÑ, Ð¾Ñ ÐºÐ¾ÑоÑого завиÑÐ¸Ñ Ð´Ð°Ð½Ð½Ð¾Ðµ, еÑли они еÑÑ Ð½Ðµ ÑÑÑановленÑ. ÐÑ Ð·Ð°Ð²Ð¸ÑимоÑÑи подобнÑм обÑазом ÑекÑÑÑивно ÑÑÑанавливаÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. ÐÑедложение
SCHEMA, еÑли задано, пÑименÑеÑÑÑ ÐºÐ¾ вÑем ÑаÑÑиÑениÑм, ÑÑÑанавливаемÑм Ñаким ÑпоÑобом. ÐÑÑгие паÑамеÑÑÑ Ð¾Ð¿ÐµÑаÑоÑа к авÑомаÑиÑеÑки ÑÑÑанавливаемÑм ÑаÑÑиÑениÑм не пÑименÑÑÑÑÑ; в ÑаÑÑноÑÑи, вÑегда вÑбиÑаÑÑÑÑ Ð¸Ñ Ð²ÐµÑÑии по ÑмолÑаниÑ.
ÐÑимеÑаниÑ
ÐÑежде Ñем Ð²Ñ ÑможеÑе вÑполниÑÑ CREATE EXTENSION и загÑÑзиÑÑ ÑаÑÑиÑение в Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, необÑ
одимо пÑавилÑно ÑÑÑановиÑÑ ÑопÑÑÑÑвÑÑÑие ÑÐ°Ð¹Ð»Ñ ÑаÑÑиÑениÑ. ÐнÑоÑмаÑÐ¸Ñ Ð¾Ð± ÑÑÑановке ÑаÑÑиÑений, поÑÑавлÑемÑÑ
в ÑоÑÑаве Postgres Pro, можно найÑи по ÑÑÑлке ÐополниÑелÑнÑе поÑÑавлÑемÑе модÑли.
РаÑÑиÑениÑ, доÑÑÑпнÑе Ð´Ð»Ñ ÑÑÑановки в даннÑй моменÑ, можно найÑи в ÑиÑÑемном пÑедÑÑавлении pg_available_extensions или pg_available_extension_versions.
Ðнимание
УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ ÑаÑÑиÑение Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ ÑÑпеÑполÑзоваÑелÑ, важно имеÑÑ ÑвеÑенноÑÑÑ Ð² Ñом, ÑÑо авÑÐ¾Ñ ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð½Ð°Ð¿Ð¸Ñал ÑÑÑановоÑнÑй ÑкÑÐ¸Ð¿Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑм обÑазом. ÐÐ»Ñ Ð·Ð»Ð¾Ð½Ð°Ð¼ÐµÑенного полÑзоваÑÐµÐ»Ñ Ð½Ðµ ÑоÑÑÐ°Ð²Ð¸Ñ Ð±Ð¾Ð»ÑÑого ÑÑÑда ÑоздаÑÑ Ð¾Ð±ÑÐµÐºÑ Ñипа ÑÑоÑнÑкого конÑ, коÑоÑÑй впоÑледÑÑвии ÑкомпÑомеÑиÑÑÐµÑ Ð²Ñполнение неаккÑÑаÑно напиÑанного ÑкÑипÑа ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð¸ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ ÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑÑаÑÑ ÑÑпеÑполÑзоваÑелем. Ðднако Ñакие обÑекÑÑ Ð¾Ð¿Ð°ÑнÑ, ÑолÑко еÑли они наÑ
одÑÑÑÑ Ð² пÑÑи search_path во вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑкÑипÑа, Ñо еÑÑÑ, еÑли они наÑ
одÑÑÑÑ Ð² ÑÑ
еме, в коÑоÑÑÑ ÑÑÑанавливаеÑÑÑ ÑаÑÑиÑение, или в ÑÑ
еме, где ÑаÑполагаеÑÑÑ Ð´ÑÑгое ÑаÑÑиÑение, Ð¾Ñ ÐºÐ¾ÑоÑого завиÑÐ¸Ñ Ð¿ÐµÑвое. Таким обÑазом, Ð¸Ð¼ÐµÑ Ð´ÐµÐ»Ð¾ Ñ ÑаÑÑиÑениÑми, ÑкÑипÑÑ ÐºÐ¾ÑоÑÑÑ
не бÑли ÑÑаÑелÑно пÑовеÑенÑ, ÑекомендÑеÑÑÑ ÑÑÑанавливаÑÑ Ð¸Ñ
ÑолÑко в Ñе ÑÑ
емÑ, в коÑоÑÑÑ
недовеÑеннÑе полÑзоваÑели не имеÑÑ Ð¸ не бÑдÑÑ Ð¸Ð¼ÐµÑÑ Ð¿Ñава CREATE. То же Ñамое каÑаеÑÑÑ Ð¸Ñ
завиÑимоÑÑей, дÑÑгиÑ
ÑаÑÑиÑений.
РаÑÑиÑениÑ, поÑÑавлÑемÑе в ÑоÑÑаве Postgres Pro, можно ÑÑиÑаÑÑ Ð·Ð°ÑиÑÑннÑми Ð¾Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾Ð³Ð¾ Ñода аÑак вÑемени вÑполнениÑ, за иÑклÑÑением некоÑоÑÑÑ , завиÑÑÑÐ¸Ñ Ð¾Ñ Ð´ÑÑÐ³Ð¸Ñ ÑаÑÑиÑений. Ðак оÑмеÑаеÑÑÑ Ð² докÑменÑаÑии ÑÐ°ÐºÐ¸Ñ ÑаÑÑиÑений, Ð¸Ñ ÑледÑÐµÑ ÑÑÑанавливаÑÑ Ð² безопаÑнÑе ÑÑ ÐµÐ¼Ñ Ð¸/или в Ñе же ÑÑ ÐµÐ¼Ñ, в коÑоÑÑе ÑÑÑанавливаÑÑÑÑ ÑÑебÑÑÑиеÑÑ Ð¸Ð¼ ÑаÑÑиÑениÑ.
Ðа инÑоÑмаÑией Ð´Ð»Ñ ÑазÑабоÑÑиков ÑаÑÑиÑений обÑаÑиÑеÑÑ Ðº РазделÑ 36.17.
ÐÑимеÑÑ
УÑÑановка ÑаÑÑиÑÐµÐ½Ð¸Ñ hstore в ÑекÑÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
(пÑи ÑÑом обÑекÑÑ ÑаÑÑиÑÐµÐ½Ð¸Ñ ÑазмеÑаÑÑÑÑ Ð² ÑÑ
еме addons):
CREATE EXTENSION hstore SCHEMA addons;
ÐÑÑгой ÑпоÑоб ÑделаÑÑ Ñо же Ñамое:
SET search_path = addons; CREATE EXTENSION hstore;
СовмеÑÑимоÑÑÑ
CREATE EXTENSION ÑвлÑеÑÑÑ ÑаÑÑиÑением Postgres Pro.