Оглавление:
Карта сайта:
Оглавление:
Карта сайта:
Для каждой базы данных создается каталог с номером oid базы данных в $ PGDATA / base вместе с набором файлов OID, OID_fsm, OID_vm, PG_VERSION для каждого объекта (Tables / Indexes / View / и т. Д.).
Все файлы OID, OID_fsm, OID_vm будут обновляться в соответствии с изменениями, внесенными на уровне базы данных. Однако файл PG_VERSION никогда не будет обновляться при любых изменениях, внесенных в базу данных.
parser_wb=# SELECT * from pg_database where datname = 'parser_wb'; oid | datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | datminmxid | dattablespace | datacl -------+-----------+--------+----------+------------+------------+---------------+--------------+--------------+---------------+--------------+------------+---------------+-------- 16384 | parser_wb | 10 | 6 | en_US.utf8 | en_US.utf8 | f | t | -1 | 13394 | 479 | 1 | 1663 | (1 row)
так, мы собираемся использовать временную метку файла PG_VERSION в качестве времени создания базы данных. Я считаю, что будет возможность изменить временную метку PG_VERSION, но я не уверен, в каком случае эти изменения
CREATE OR REPLACE FUNCTION public.get_pg_version_loc(dbname VARCHAR) RETURNS text AS $body$ DECLARE dbname ALIAS FOR $1; data_dir text; db_oid text; os_execute text; BEGIN SELECT INTO db_oid oid FROM pg_database WHERE datname = dbname; SHOW data_directory INTO data_dir; os_execute := 'stat -c "%y" '||data_dir||'/base/'||db_oid||'/PG_VERSION'; RETURN os_execute; END; $body$ LANGUAGE 'plpgsql';