ALTER COLLATION
ALTER COLLATION â измениÑÑ Ð¾Ð¿Ñеделение пÑавила ÑоÑÑиÑовки
СинÑакÑиÑ
ALTER COLLATIONимÑREFRESH VERSION ALTER COLLATIONимÑRENAME TOновое_имÑALTER COLLATIONимÑOWNER TO {новÑй_владелеÑ| CURRENT_USER | SESSION_USER } ALTER COLLATIONимÑSET SCHEMAноваÑ_ÑÑ ÐµÐ¼Ð°
ÐпиÑание
ALTER COLLATION изменÑÐµÑ Ð¾Ð¿Ñеделение пÑавила ÑоÑÑиÑовки.
ÐÑполниÑÑ ALTER COLLATION Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑооÑвеÑÑÑвÑÑÑего пÑавила ÑоÑÑиÑовки. ЧÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, необÑ
одимо бÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑм или опоÑÑедованнÑм Ñленом новой Ñоли-владелÑÑа, а ÑÑа ÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° имеÑÑ Ð¿Ñаво CREATE в ÑÑ
еме пÑавила ÑоÑÑиÑовки. (С Ñакими огÑаниÑениÑми пÑи Ñмене владелÑÑа не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¸Ñего Ñакого, ÑÑо нелÑÐ·Ñ Ð±Ñло Ð±Ñ ÑделаÑÑ, Ð¸Ð¼ÐµÑ Ð¿Ñаво ÑдалиÑÑ Ð¸ Ð²Ð½Ð¾Ð²Ñ ÑоздаÑÑ Ð¿Ñавило ÑоÑÑиÑовки. Ðднако ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа пÑавила ÑоÑÑиÑовки в лÑбом ÑлÑÑае.)
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑего пÑавила ÑоÑÑиÑовки (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹).
новое_имÑÐовое Ð¸Ð¼Ñ Ð¿Ñавила ÑоÑÑиÑовки.
новÑй_владелеÑÐовÑй Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¿Ñавила ÑоÑÑиÑовки.
новаÑ_ÑÑ ÐµÐ¼Ð°ÐÐ¾Ð²Ð°Ñ ÑÑ ÐµÐ¼Ð° пÑавила ÑоÑÑиÑовки.
REFRESH VERSIONÐбновиÑÑ Ð²ÐµÑÑÐ¸Ñ Ð¿Ñавила ÑоÑÑиÑовки. ÐодÑобнее Ñм. ÐамеÑаниÑ.
ÐамеÑаниÑ
Ðогда пÑименÑÑÑÑÑ Ð¿Ñавила ÑоÑÑиÑовки, пÑедоÑÑавлÑемÑе библиоÑекой ICU, внÑÑÑеннÑÑ Ð²ÐµÑÑÐ¸Ñ ÑоÑÑиÑовÑика ICU запиÑÑваеÑÑÑ Ð² ÑиÑÑемнÑй каÑалог пÑи Ñоздании обÑекÑа Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ пÑавила. Ðогда Ñакое пÑавило иÑполÑзÑеÑÑÑ, ÑекÑÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ ÑвеÑÑеÑÑÑ Ñ Ð·Ð°Ð¿Ð¸Ñанной и в ÑлÑÑае неÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð²ÑдаÑÑÑÑ Ð¿ÑедÑпÑеждение, напÑÐ¸Ð¼ÐµÑ Ñакое:
WARNING: collation "xx-x-icu" has version mismatch DETAIL: The collation in the database was created using version 1.2.3.4, but the operating system provides version 2.3.4.5. HINT: Rebuild all objects affected by this collation and run ALTER COLLATION pg_catalog."xx-x-icu" REFRESH VERSION, or build Postgres Pro with the right library version.
ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² опÑеделениÑÑ
пÑавил ÑоÑÑиÑовки могÑÑ Ð¿ÑиводиÑÑ Ðº ÑазÑÑÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов и дÑÑгим пÑоблемам, Ñак как СУÐÐ ÑаÑÑÑиÑÑÐ²Ð°ÐµÑ Ð½Ð° Ñо, ÑÑо Ñ
ÑанимÑе обÑекÑÑ Ð¾ÑÑоÑÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² опÑеделÑнном поÑÑдке. ÐообÑе ÑÑого ÑледÑÐµÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ, но ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¼ÐµÑÑо в ÑовеÑÑенно легалÑнÑÑ
обÑÑоÑÑелÑÑÑваÑ
, напÑÐ¸Ð¼ÐµÑ Ð¿Ñи обновлении Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ pg_upgrade иÑполнÑемÑÑ
Ñайлов ÑеÑвеÑа, ÑкомпонованнÑÑ
Ñ Ð±Ð¾Ð»ÐµÐµ новой веÑÑией ICU. Ðогда Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ ÑÐ°ÐºÐ°Ñ ÑиÑÑаÑиÑ, вÑе обÑекÑÑ, завиÑÑÑие Ð¾Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ пÑавила ÑоÑÑиÑовки, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÐµÑеÑÑÑоенÑ, напÑимеÑ, командой REINDEX. ÐоÑле ÑÑой опеÑаÑии можно обновиÑÑ Ð²ÐµÑÑÐ¸Ñ Ð¿Ñавила ÑоÑÑиÑовки, вÑполнив ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER COLLATION ... REFRESH VERSION. ÐÑи ÑÑом ÑиÑÑемнÑй каÑалог бÑÐ´ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñн, в него бÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¸Ñана ÑекÑÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ ÑоÑÑиÑовÑика, и пÑедÑпÑеждение ÑйдÑÑ. ÐамеÑÑÑе, ÑÑо ÑÑа команда ÑобÑÑвенно не пÑовеÑÑеÑ, бÑли ли вÑе завиÑимÑе обÑекÑÑ Ð¿ÐµÑеÑÑÑÐ¾ÐµÐ½Ñ ÐºÐ¾ÑÑекÑно.
СледÑÑÑий запÑÐ¾Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð²ÑбÑаÑÑ Ð²Ñе пÑавила ÑоÑÑиÑовки в ÑекÑÑей базе даннÑÑ , коÑоÑÑе ÑÑебÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ, и завиÑÑÑие Ð¾Ñ Ð½Ð¸Ñ Ð¾Ð±ÑекÑÑ:
SELECT pg_describe_object(refclassid, refobjid, refobjsubid) AS "Collation",
pg_describe_object(classid, objid, objsubid) AS "Object"
FROM pg_depend d JOIN pg_collation c
ON refclassid = 'pg_collation'::regclass AND refobjid = c.oid
WHERE c.collversion <> pg_collation_actual_version(c.oid)
ORDER BY 1, 2;
ÐÑимеÑÑ
Ðзменение Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ñавила ÑоÑÑиÑовки Ñ ru_RU на russian:
ALTER COLLATION "ru_RU" RENAME TO russian;
Ðзменение владелÑÑа пÑавила ÑоÑÑиÑовки en_US на joe:
ALTER COLLATION "en_US" OWNER TO joe;
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ ALTER COLLATION оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе SQL.