F.13. dump_stat
ÐодÑÐ»Ñ dump_stat пÑедоÑÑавлÑÐµÑ ÑÑнкÑии, позволÑÑÑие вÑгÑÑзиÑÑ Ð¸ воÑÑÑановиÑÑ ÑодеÑжимое ÑаблиÑÑ pg_statistic. ÐÑи вÑполнении вÑгÑÑзки/воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе воÑполÑзоваÑÑÑÑ dump_stat Ð´Ð»Ñ Ð¿ÐµÑеноÑа ÑÑÑеÑÑвÑÑÑей ÑÑаÑиÑÑики на новÑй ÑеÑвеÑ, обойдÑÑÑ Ð±ÐµÐ· вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ANALYZE Ð´Ð»Ñ Ð²Ñего клаÑÑеÑа, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð·Ð½Ð°ÑиÑелÑно ÑокÑаÑиÑÑ Ð²ÑÐµÐ¼Ñ Ð¿ÑоÑÑÐ¾Ñ Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑиÑ
баз даннÑÑ
. ФÑнкÑÐ¸Ñ dump_statistic вÑдаÑÑ Ð¾Ð¿ÐµÑаÑоÑÑ INSERT, коÑоÑÑе заÑем можно пÑимениÑÑ Ðº ÑовмеÑÑимой базе даннÑÑ
. ЧÑÐ¾Ð±Ñ ÑÑпеÑно воÑÑÑановиÑÑ ÑÑаÑиÑÑиÑеÑкие даннÑе, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑÑÑановиÑÑ ÑÑо ÑаÑÑиÑение и на иÑÑ
одном, и на Ñелевом ÑеÑвеÑе, Ñак как ÑÑи опеÑаÑоÑÑ Ð±ÑдÑÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑ ÑÑнкÑии, ÑеализованнÑе в dump_stat.
ÐамеÑÑÑе, ÑÑо опÑеделение ÑаблиÑÑ pg_statistic Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð¼ÐµÐ½ÑÑÑÑÑ, в ÑезÑлÑÑаÑе Ñего ÑгенеÑиÑованнÑй ÑкÑÐ¸Ð¿Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÑовмеÑÑимÑм Ñ Ð±ÑдÑÑими вÑпÑÑками Postgres Pro.
F.13.1. УÑÑановка
РаÑÑиÑение dump_stat вклÑÑено в ÑоÑÑав Postgres Pro. УÑÑановив Postgres Pro, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE EXTENSION, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð´Ð³Ð¾ÑовиÑÑ dump_stat к ÑабоÑе, ÑледÑÑÑим обÑазом:
CREATE EXTENSION dump_stat;
F.13.2. ФÑнкÑии
-
anyarray_to_text(array anyarray) returns text ÐозвÑаÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñй маÑÑив в виде знаÑениÑ
text.-
dump_statistic() returns setof text ФÑнкÑиÑ
dump_statisticвÑгÑÑÐ¶Ð°ÐµÑ ÑодеÑжимое ÑиÑÑемного каÑалогаpg_statistic. Ðна вÑдаÑÑINSERTÐ´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ коÑÑежа вpg_statistic, кÑоме ÑÐµÑ , ÑÑо ÑодеÑÐ¶Ð°Ñ ÑÑаÑиÑÑиÑеÑкие даннÑе о ÑаблиÑÐ°Ñ Ð² ÑÑ ÐµÐ¼Ð°Ñinformation_schemaиpg_catalog.ÐпеÑаÑоÑ
INSERTпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑледÑÑÑÑÑ ÑоÑмÑ:WITH upsert as ( UPDATE pg_catalog.pg_statistic SET
имÑ_ÑÑолбÑа=вÑÑажение[, ...] WHERE starelid =t_relname::regclass AND to_attname(t_relname, staattnum) =t_attnameAND to_atttype(t_relname, staattnum) =t_atttypeAND stainherit =t_stainheritRETURNING *) ins as ( SELECTвÑÑажение[, ...] WHERE NOT EXISTS (SELECT * FROM upsert) AND to_attnum(t_relname,t_attname) IS NOT NULL AND to_atttype(t_relname,t_attname) =t_atttype) INSERT INTO pg_catalog.pg_statistic SELECT * FROM ins; гдевÑÑÐ°Ð¶ÐµÐ½Ð¸ÐµÐ¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑледÑÑÑим: array_in(ÑекÑÑ_маÑÑива,имÑ_Ñипа::regtype::oid, -1)знаÑение::имÑ_ÑипаЧÑÐ¾Ð±Ñ ÑÐ¾Ñ ÑаниÑÑ Ð²ÑданнÑе опеÑаÑоÑÑ, напÑавÑÑе вÑвод psql в Ñайл, иÑполÑзÑÑ ÑÑандаÑÑнÑе возможноÑÑи psql. ÐÑгÑменÑÑ psql подÑобно ÑаÑÑмаÑÑиваÑÑÑÑ Ð² psql. ÐеÑакомандÑ, наÑинаÑÑиеÑÑ Ñ Ð¾Ð±ÑаÑной коÑой ÑеÑÑÑ, не поддеÑживаÑÑÑÑ.
ÐапÑимеÑ, ÑÑÐ¾Ð±Ñ ÑÐ¾Ñ ÑаниÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
имÑ_базÑв Ñайлеdump_stat.sql, вÑполниÑе:$ psql -XAtq -c "SELECT dump_statistic()"
имÑ_базÑ> dump_stat.sql-
dump_statistic(schema_name text) returns setof text dump_statisticвÑгÑÑÐ¶Ð°ÐµÑ ÑодеÑжимое ÑиÑÑемного каÑалогаpg_statistic. Ðна вÑдаÑÑ Ð¾Ð¿ÐµÑаÑоÑINSERTÐ´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ коÑÑежа вpg_statistic, оÑноÑÑÑегоÑÑ Ðº какой-либо ÑаблиÑе в ÑÑ ÐµÐ¼Ðµschema_name.-
dump_statistic(schema_name text, table_name text) returns setof text dump_statisticвÑгÑÑÐ¶Ð°ÐµÑ ÑодеÑжимое ÑиÑÑемного каÑалогаpg_statistic. Ðна ÑоÑмиÑÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑINSERTÐ´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ коÑÑежа вpg_statistic, оÑноÑÑÑегоÑÑ Ðº Ñказанной ÑаблиÑеschema_name.table_name.-
dump_statistic(relation regclass) returns setof text dump_statisticвÑгÑÑÐ¶Ð°ÐµÑ ÑодеÑжимое ÑиÑÑемного каÑалогаpg_statistic. Ðна ÑоÑмиÑÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑINSERTÐ´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ коÑÑежа вpg_statistic, ÑодеÑжаÑего ÑÑаÑиÑÑиÑеÑкие даннÑе оÑноÑениÑrelation.-
to_schema_qualified_operator(opid oid) returns text ÐÑдаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ð¾Ðµ ÑÑ ÐµÐ¼Ð¾Ð¹ Ð¸Ð¼Ñ Ð¾Ð¿ÐµÑаÑоÑа по его иденÑиÑикаÑоÑÑ
opid. ÐапÑимеÑ:test=# SELECT to_schema_qualified_operator('+(int,int)'::regoperator); to_schema_qualified_operator ------------------------------------------------ pg_catalog.+(pg_catalog.int4, pg_catalog.int4) (1 row)-
to_schema_qualified_type(typid oid) returns text ÐÑдаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ð¾Ðµ ÑÑ ÐµÐ¼Ð¾Ð¹ Ð¸Ð¼Ñ Ñипа по его иденÑиÑикаÑоÑÑ
typid.-
to_schema_qualified_relation(relid oid) returns text ÐÑдаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ð¾Ðµ ÑÑ ÐµÐ¼Ð¾Ð¹ Ð¸Ð¼Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ð¿Ð¾ его иденÑиÑикаÑоÑÑ
relid.-
anyarray_elemtype(arr anyarray) returns oid ÐозвÑаÑÐ°ÐµÑ Ñип ÑлеменÑа маÑÑива, заданного по
oid. ÐапÑимеÑ:test=# SELECT anyarray_elemtype(array_in('{1,2,3}', 'int'::regtype, -1)); anyarray_elemtype ------------------- 23 (1 row)-
to_attname(relation regclass, colnum int2) returns text ÐÐ»Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именем
relationи номеÑом ÑÑолбÑаcolnumвозвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ ÑÑолбÑа в виде знаÑениÑtext.-
to_attnum(relation regclass, col text) returns int2 ÐÐ»Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именем
relationи ÑÑолбÑа Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼colвозвÑаÑÐ°ÐµÑ Ð½Ð¾Ð¼ÐµÑ ÑÑолбÑа в виде знаÑениÑint2.-
to_atttype(relation regclass, col text) returns text ÐÐ»Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именем
relationи ÑÑолбÑа Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼colвозвÑаÑÐ°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ð¾Ðµ ÑÑ ÐµÐ¼Ð¾Ð¹ Ð¸Ð¼Ñ Ñипа ÑÑолбÑа в виде знаÑениÑtext.-
to_atttype(relation regclass, colnum int2) returns text ÐÐ»Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именем
relationи ÑÑолбÑа Ñ Ð½Ð¾Ð¼ÐµÑомcolnumвозвÑаÑÐ°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ð¾Ðµ ÑÑ ÐµÐ¼Ð¾Ð¹ Ð¸Ð¼Ñ Ñипа ÑÑолбÑа в виде знаÑениÑtext.-
to_namespace(nsp text) returns oid to_namespaceповÑоÑÑÐµÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ðº ÑипÑregnamespace, коÑоÑое оÑÑÑÑÑÑвÑÐµÑ Ð² PostgreSQL веÑÑии 9.4 (и пÑедÑдÑÑÐ¸Ñ ). ÐÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑаеÑoidданной ÑÑ ÐµÐ¼Ñ.-
get_namespace(relation oid) returns oid get_namespaceвозвÑаÑÐ°ÐµÑ ÑÑ ÐµÐ¼Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ð² видеoid.