| Документация к Postgres Pro 9.5.10.1 | |||
|---|---|---|---|
| Пред. | Уровень выше | Приложение F. Дополнительно поставляемые модули | След. |
Модуль dump_stat предоставляет функции, позволяющие скопировать и восстановить содержимое таблицы pg_statistic. Функция dump_statistic генерирует операторы INSERT, которые затем можно применить к совместимой базе данных. Это расширение должно устанавливаться на целевом сервере, чтобы статистические данные были восстановлены успешно, так как генерируемые операторы сильно зависят от функций этого модуля.
Заметьте, что определение таблицы pg_statistic может поменяться, в результате чего сгенерированный скрипт может оказаться несовместимым с будущими выпусками PostgreSQL.
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 to_schema_qualified_relation(starelid) = t_relname
AND to_attname(t_relname, staattnum) = t_attname
AND to_atttype(t_relname, staattnum) = t_atttype
AND stainherit = t_stainherit
RETURNING *)
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)
значение::имя_типаПолученные операторы можно сохранить в файле, например так:
[dollar] psql test -A test=# \t test=# \o dump_stat.sql test=# select dump_statistic();
dump_statistic(schema_name text) returns setof textdump_statistic выгружает содержимое системного каталога pg_statistic. Она формирует оператор INSERT для каждого кортежа в pg_statistic, относящегося к какой-либо таблице в схеме schema_name.
dump_statistic(schema_name text, table_name text) returns setof textdump_statistic выгружает содержимое системного каталога pg_statistic. Она формирует оператор INSERT для каждого кортежа в pg_statistic, относящегося к указанной таблице schema_name.table_name.
dump_statistic(relid oid) returns setof textdump_statistic выгружает содержимое системного каталога pg_statistic. Она формирует оператор INSERT для каждого кортежа в pg_statistic, содержащего статистические данные об отношении, заданном идентификатором relid.
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 text, colnum int2) returns textДля отношения с заданным именем relation и номера столбца colnum возвращает имя столбца в виде значения text.
to_attnum(relation text, col text) returns int2Для отношения с заданным именем relation и столбца с именем col возвращает номер столбца в виде значения int2.
to_atttype(relation text, col text) returns textДля отношения с заданным именем relation и столбца с именем col возвращает дополненное схемой имя типа столбца в виде значения text.
to_atttype(relation text, colnum int2) returns textДля отношения с заданным именем relation и столбца с номером colnum возвращает дополненное схемой имя типа столбца в виде значения text.
to_namespace(nsp text) returns oidto_namespace повторяет поведение приведения к типу regnamespace, которое отсутствует в PostgreSQL версии 9.4 (и предыдущих). Эта функция возвращает oid данной схемы.
get_namespace(relation oid) returns oidget_namespace возвращает схему заданного отношения в виде oid.
| Пред. | Начало | След. |
| dict_xsyn | Уровень выше | earthdistance |