ALTER COLLATION
ALTER COLLATION â измениÑÑ Ð¾Ð¿Ñеделение пÑавила ÑоÑÑиÑовки
СинÑакÑиÑ
ALTER COLLATIONимÑREFRESH VERSION ALTER COLLATIONимÑRENAME TOновое_имÑALTER COLLATIONимÑOWNER TO {новÑй_владелеÑ| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER COLLATIONимÑSET SCHEMAноваÑ_ÑÑ ÐµÐ¼Ð°
ÐпиÑание
ALTER COLLATION изменÑÐµÑ Ð¾Ð¿Ñеделение пÑавила ÑоÑÑиÑовки.
ÐÑполниÑÑ ALTER COLLATION Ð¼Ð¾Ð¶ÐµÑ ÑолÑко Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑооÑвеÑÑÑвÑÑÑего пÑавила ÑоÑÑиÑовки. ЧÑÐ¾Ð±Ñ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, необÑ
одимо имеÑÑ Ð¿Ñаво SET ROLE Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ Ñоли-владелÑÑа, а ÑÑа ÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° имеÑÑ Ð¿Ñаво CREATE в ÑÑ
еме пÑавила ÑоÑÑиÑовки. (С Ñакими огÑаниÑениÑми пÑи Ñмене владелÑÑа не пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð½Ð¸Ñего Ñакого, ÑÑо нелÑÐ·Ñ Ð±Ñло Ð±Ñ ÑделаÑÑ, Ð¸Ð¼ÐµÑ Ð¿Ñаво ÑдалиÑÑ Ð¸ Ð²Ð½Ð¾Ð²Ñ ÑоздаÑÑ Ð¿Ñавило ÑоÑÑиÑовки. Ðднако ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑмениÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа пÑавила ÑоÑÑиÑовки в лÑбом ÑлÑÑае.)
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ ÑÑÑеÑÑвÑÑÑего пÑавила ÑоÑÑиÑовки (возможно, дополненное ÑÑ ÐµÐ¼Ð¾Ð¹).
новое_имÑÐовое Ð¸Ð¼Ñ Ð¿Ñавила ÑоÑÑиÑовки.
новÑй_владелеÑÐовÑй Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ Ð¿Ñавила ÑоÑÑиÑовки.
новаÑ_ÑÑ ÐµÐ¼Ð°ÐÐ¾Ð²Ð°Ñ ÑÑ ÐµÐ¼Ð° пÑавила ÑоÑÑиÑовки.
REFRESH VERSIONÐбновиÑÑ Ð²ÐµÑÑÐ¸Ñ Ð¿Ñавила ÑоÑÑиÑовки. ÐодÑобноÑÑи в Ñазделе ÐамеÑÐ°Ð½Ð¸Ñ Ð½Ð¸Ð¶Ðµ.
ÐамеÑаниÑ
Ðогда ÑоздаÑÑÑÑ Ð¾Ð±ÑÐµÐºÑ Ð¿Ñавила ÑоÑÑиÑовки, в ÑиÑÑемнÑй каÑалог запиÑÑваеÑÑÑ Ð²ÐµÑÑÐ¸Ñ ÑÑого пÑавила, опÑеделÑÐµÐ¼Ð°Ñ ÐµÐ³Ð¾ пÑовайдеÑом. Ðогда Ñакое пÑавило иÑполÑзÑеÑÑÑ, ÑекÑÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ ÑÑавниваеÑÑÑ Ñ Ð·Ð°Ð¿Ð¸Ñанной и в ÑлÑÑае неÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð²ÑдаÑÑÑÑ Ð¿ÑедÑпÑеждение, напÑÐ¸Ð¼ÐµÑ Ñакое:
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 PostgreSQL with the right library version.
ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² опÑеделениÑÑ
пÑавил ÑоÑÑиÑовки могÑÑ Ð¿ÑиводиÑÑ Ðº ÑазÑÑÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑов и дÑÑгим пÑоблемам, Ñак как СУÐÐ ÑаÑÑÑиÑÑÐ²Ð°ÐµÑ Ð½Ð° Ñо, ÑÑо Ñ
ÑанимÑе обÑекÑÑ Ð¾ÑÑоÑÑиÑÐ¾Ð²Ð°Ð½Ñ Ð² опÑеделÑнном поÑÑдке. ÐообÑе ÑÑого ÑледÑÐµÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ, но ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¼ÐµÑÑо в ÑовеÑÑенно легалÑнÑÑ
обÑÑоÑÑелÑÑÑваÑ
, напÑÐ¸Ð¼ÐµÑ Ð¿Ñи пеÑеÑ
оде на более новÑÑ Ð²ÐµÑÑÐ¸Ñ ÐС или пÑи обновлении Ñ Ð¸ÑполÑзованием pg_upgrade иÑполнÑемÑÑ
Ñайлов ÑеÑвеÑа, ÑкомпонованнÑÑ
Ñ Ð±Ð¾Ð»ÐµÐµ новой веÑÑией ICU. Ðогда Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ ÑÐ°ÐºÐ°Ñ ÑиÑÑаÑиÑ, вÑе обÑекÑÑ, завиÑÑÑие Ð¾Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ пÑавила ÑоÑÑиÑовки, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÐµÑеÑÑÑоенÑ, напÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ REINDEX. ÐоÑле ÑÑой опеÑаÑии можно обновиÑÑ Ð²ÐµÑÑÐ¸Ñ Ð¿Ñавила ÑоÑÑиÑовки, вÑполнив ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER COLLATION ... REFRESH VERSION. ÐÑи ÑÑом ÑиÑÑемнÑй каÑалог бÑÐ´ÐµÑ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñн, в него бÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¸Ñана ÑекÑÑÐ°Ñ Ð²ÐµÑÑÐ¸Ñ Ð¿Ñавила, и пÑедÑпÑеждение ÑйдÑÑ. ÐамеÑÑÑе, ÑÑо ÑÑа команда ÑобÑÑвенно не пÑовеÑÑеÑ, бÑли ли вÑе завиÑимÑе обÑекÑÑ Ð¿ÐµÑеÑÑÑÐ¾ÐµÐ½Ñ ÐºÐ¾ÑÑекÑно.
Ðогда пÑименÑÑÑÑÑ Ð¿Ñавила ÑоÑÑиÑовки, пÑедоÑÑавлÑемÑе библиоÑекой libc, инÑоÑмаÑÐ¸Ñ Ð¾ веÑÑии запиÑÑваеÑÑÑ Ð² ÑиÑÑемаÑ
, где иÑполÑзÑеÑÑÑ GNU C (в болÑÑинÑÑве ÐС Linux), а Ñакже во FreeBSD и Windows. Ðогда пÑименÑÑÑÑÑ Ð¿Ñавила ÑоÑÑиÑовки, коÑоÑÑе пÑедоÑÑавлÑÐµÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека ICU, инÑоÑмаÑÐ¸Ñ Ð¾ веÑÑии вÑдаÑÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñекой ICU и доÑÑÑпна на вÑеÑ
плаÑÑоÑмаÑ
.
ÐÑимеÑание
Ðогда пÑавила ÑоÑÑиÑовки пÑедоÑÑавлÑÑÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñекой GNU C, веÑÑии ÑÑÐ¸Ñ Ð¿Ñавил коÑвеннÑм обÑазом опÑеделÑÑÑÑÑ Ð¿Ð¾ веÑÑии библиоÑеки. Ðо Ð¼Ð½Ð¾Ð³Ð¸Ñ Ð´Ð¸ÑÑÑибÑÑÐ¸Ð²Ð°Ñ Linux опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñавил ÑоÑÑиÑовки менÑÑÑÑÑ ÑолÑко пÑи обновлении библиоÑеки C, но Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ Ð¸ÑклÑÑениÑ, Ñак как авÑоÑÑ Ð´Ð¸ÑÑÑибÑÑива могÑÑ Ð¿Ð¾ ÑÐ²Ð¾ÐµÐ¼Ñ Ð¶ÐµÐ»Ð°Ð½Ð¸Ñ Ð¿ÐµÑенеÑÑи обновлÑннÑе опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð² ÑÑаÑÑе веÑÑии библиоÑеки.
Ð Windows инÑоÑмаÑÐ¸Ñ Ð¾ веÑÑии пÑавил ÑоÑÑиÑовки доÑÑÑпна ÑолÑко Ð´Ð»Ñ Ð¿Ñавил, опÑеделÑннÑÑ
Ñ Ð¼ÐµÑкой ÑзÑка в ÑоÑмаÑе BCP 47, напÑÐ¸Ð¼ÐµÑ en-US.
ÐÐ»Ñ Ð¾Ñновного пÑавила ÑоÑÑиÑовки Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑÑÑеÑÑвÑÐµÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑÐ½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° ALTER DATABASE ... REFRESH COLLATION 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;
ÐÑимеÑÑ
ÐеÑеименование пÑавила ÑоÑÑиÑовки de_DE в german:
ALTER COLLATION "de_DE" RENAME TO german;
Ðзменение владелÑÑа пÑавила ÑоÑÑиÑовки en_US на joe:
ALTER COLLATION "en_US" OWNER TO joe;
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ ALTER COLLATION оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе SQL.