9.25. СиÑÑемнÑе инÑоÑмаÑионнÑе ÑÑнкÑии и опеÑаÑоÑÑ
РТаблиÑе 9.63 пеÑеÑиÑлен ÑÑд ÑÑнкÑий, пÑедназнаÑеннÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о ÑекÑÑем ÑеанÑе и ÑиÑÑеме.
Рдополнение к пеÑеÑиÑленнÑм здеÑÑ ÑÑнкÑиÑм ÑÑÑеÑÑвÑÑÑ Ñакже ÑÑнкÑии, ÑвÑзаннÑе Ñ Ð¿Ð¾Ð´ÑиÑÑемой ÑÑаÑиÑÑики, коÑоÑÑе Ñоже пÑедоÑÑавлÑÑÑ ÑиÑÑемнÑÑ Ð¸Ð½ÑоÑмаÑиÑ. ÐодÑобнее они ÑаÑÑмаÑÑиваÑÑÑÑ Ð² ÐодÑазделе 26.2.2.
ТаблиÑа 9.63. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о ÑеанÑе
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| name | Ð¸Ð¼Ñ ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ (в ÑÑандаÑÑе SQL она назÑваеÑÑÑ Â«ÐºÐ°Ñалогом») |
| name | Ð¸Ð¼Ñ ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ |
| text | ÑекÑÑ Ð·Ð°Ð¿ÑоÑа, вÑполнÑемого в даннÑй моменÑ, в Ñом виде, в каком его пеÑедал ÐºÐ»Ð¸ÐµÐ½Ñ (Ð¼Ð¾Ð¶ÐµÑ ÑоÑÑоÑÑÑ Ð¸Ð· неÑколÑÐºÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑов) |
| name | Ñиноним current_user |
| name | Ð¸Ð¼Ñ ÑекÑÑей ÑÑ ÐµÐ¼Ñ |
| name[] | имена ÑÑ ÐµÐ¼ в пÑÑи поиÑка, возможно вклÑÑÐ°Ñ ÑÑ ÐµÐ¼Ñ, добавлÑемÑе в него неÑвно |
| name | Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð² ÑекÑÑем конÑекÑÑе вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ |
| inet | адÑÐµÑ ÑдалÑнной ÑÑоÑÐ¾Ð½Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ |
| int | поÑÑ ÑдалÑнной ÑÑоÑÐ¾Ð½Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ |
| inet | адÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñной ÑÑоÑÐ¾Ð½Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ |
| int | поÑÑ Ð»Ð¾ÐºÐ°Ð»Ñной ÑÑоÑÐ¾Ð½Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ |
| int | код ÑеÑвеÑного пÑоÑеÑÑа, обÑлÑживаÑÑего ÑекÑÑий ÑÐµÐ°Ð½Ñ |
| int[] | иденÑиÑикаÑоÑÑ Ð¿ÑоÑеÑÑов, не даÑÑÐ¸Ñ ÑеÑвеÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ñ Ð¾Ð¿ÑеделÑннÑм ID полÑÑиÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ |
| timestamp with time zone | вÑÐµÐ¼Ñ Ð·Ð°Ð³ÑÑзки конÑигÑÑаÑии |
| text | Ð¸Ð¼Ñ Ñайла главного жÑÑнала или жÑÑнала в заданном ÑоÑмаÑе, коÑоÑÑй в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¸ÑполÑзÑеÑÑÑ ÑбоÑÑиком ÑообÑений |
| oid | OID вÑеменной ÑÑ ÐµÐ¼Ñ ÑÑого ÑеанÑа или 0, еÑли ÐµÑ Ð½ÐµÑ |
| boolean | ÑвлÑеÑÑÑ Ð»Ð¸ Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ ÑÑ ÐµÐ¼Ð° вÑеменной в дÑÑгом ÑеанÑе? |
| boolean | true, еÑли в данном ÑеанÑе доÑÑÑпна JIT-компилÑÑÐ¸Ñ (Ñм. ÐлавÑ 30) и паÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии jit вклÑÑÑн. |
| setof text | имена каналов, по коÑоÑÑм ÑекÑÑий ÑÐµÐ°Ð½Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÐ¸Ð³Ð½Ð°Ð»Ñ |
| double | занÑÑÐ°Ñ Ð´Ð¾Ð»Ñ Ð¾ÑеÑеди аÑÐ¸Ð½Ñ ÑоннÑÑ Ñведомлений (0-1) |
| timestamp with time zone | вÑÐµÐ¼Ñ Ð·Ð°Ð¿ÑÑка ÑеÑвеÑа |
| int[] | ÐденÑиÑикаÑоÑÑ Ð¿ÑоÑеÑÑов, не даÑÑÐ¸Ñ ÑеÑвеÑÐ½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ñ Ð¾Ð¿ÑеделÑннÑм ID полÑÑиÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑй Ñнимок |
| int | ÑекÑÑий ÑÑÐ¾Ð²ÐµÐ½Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾ÑÑи в ÑÑиггеÑÐ°Ñ Postgres Pro (0, еÑли ÑÑа ÑÑнкÑÐ¸Ñ Ð²ÑзÑваеÑÑÑ (пÑÑмо или коÑвенно) не из Ñела ÑÑиггеÑа) |
| name | Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑеанÑа |
| name | Ñиноним current_user |
| text | инÑоÑмаÑÐ¸Ñ Ð¾ веÑÑии PostgreSQL. Также можно пÑоÑиÑаÑÑ Ð²ÐµÑÑÐ¸Ñ Ð² маÑинно-оÑиенÑиÑованном виде, обÑаÑивÑиÑÑ Ðº пеÑеменной server_version_num. |
| text | инÑоÑмаÑÐ¸Ñ Ð¾ веÑÑии Postgres Pro |
| text | название ÑедакÑии Postgres Pro |
| text | иденÑиÑикаÑÐ¾Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода, из коÑоÑого ÑкомпилиÑован Postgres Pro |
ÐÑимеÑание
ФÑнкÑии current_catalog, current_role, current_schema, current_user, session_user и user имеÑÑ Ð¾ÑобÑй ÑинÑакÑиÑеÑкий ÑÑаÑÑÑ Ð² SQL: они Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑзÑваÑÑÑÑ Ð±ÐµÐ· Ñкобок поÑле имени. (Postgres Pro позволÑÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ñкобки в вÑзове current_schema, но не дÑÑгиÑ
ÑÑнкÑий.)
ФÑнкÑÐ¸Ñ session_user обÑÑно возвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, ÑÑÑановивÑего ÑекÑÑее Ñоединение Ñ Ð±Ð°Ð·Ð¾Ð¹ даннÑÑ
, но ÑÑпеÑполÑзоваÑели могÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑÑо имÑ, вÑполнив ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SET SESSION AUTHORIZATION. ФÑнкÑÐ¸Ñ current_user возвÑаÑÐ°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, по коÑоÑÐ¾Ð¼Ñ Ð±ÑдÑÑ Ð¿ÑовеÑÑÑÑÑÑ ÐµÐ³Ð¾ пÑава. ÐбÑÑно ÑÑо ÑÐ¾Ñ Ð¶Ðµ полÑзоваÑелÑ, ÑÑо и полÑзоваÑÐµÐ»Ñ ÑеанÑа, но его можно ÑмениÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ SET ROLE. ÐÑÐ¾Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ñакже менÑеÑÑÑ Ð¿Ñи вÑполнении ÑÑнкÑий Ñ Ð°ÑÑибÑÑом SECURITY DEFINER. Ðа ÑзÑке Unix полÑзоваÑÐµÐ»Ñ ÑеанÑа назÑваеÑÑÑ Â«ÑеалÑнÑм», а ÑекÑÑий â «ÑÑÑекÑивнÑм». Ðмена current_role и user ÑвлÑÑÑÑÑ Ñинонимами current_user. (Ð ÑÑандаÑÑе SQL current_role и current_user имеÑÑ Ñазное знаÑение, но в Postgres Pro они не ÑазлиÑаÑÑÑÑ, Ñак как полÑзоваÑели и Ñоли обÑÐµÐ´Ð¸Ð½ÐµÐ½Ñ Ð² единÑÑ ÑÑÑноÑÑÑ.)
ФÑнкÑÐ¸Ñ current_schema возвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ ÑÑ
емÑ, коÑоÑÐ°Ñ ÑÑÐ¾Ð¸Ñ Ð¿ÐµÑвой в пÑÑи поиÑка (или NULL, еÑли пÑÑÑ Ð¿Ð¾Ð¸Ñка пÑÑÑ). ÐÑа ÑÑ
ема бÑÐ´ÐµÑ Ð·Ð°Ð´ÐµÐ¹ÑÑвована пÑи Ñоздании ÑÐ°Ð±Ð»Ð¸Ñ Ð¸Ð»Ð¸ дÑÑгиÑ
именованнÑÑ
обÑекÑов, еÑли ÑÐµÐ»ÐµÐ²Ð°Ñ ÑÑ
ема не Ñказана Ñвно. ФÑнкÑÐ¸Ñ current_schemas(boolean) возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив имÑн вÑеÑ
ÑÑ
ем, наÑ
одÑÑиÑ
ÑÑ Ð² пÑÑи поиÑка. ÐÑ Ð»Ð¾Ð³Ð¸ÑеÑкий паÑамеÑÑ Ð¾Ð¿ÑеделÑеÑ, бÑдÑÑ Ð»Ð¸ вклÑÑаÑÑÑÑ Ð² ÑезÑлÑÑÐ°Ñ Ð½ÐµÑвно добавлÑемÑе в пÑÑÑ Ð¿Ð¾Ð¸Ñка ÑиÑÑемнÑе ÑÑ
емÑ, Ñакие как pg_catalog.
ÐÑимеÑание
ÐÑÑÑ Ð¿Ð¾Ð¸Ñка можно измениÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑледÑÑÑей командой:
SET search_path TOÑÑ ÐµÐ¼Ð°[,ÑÑ ÐµÐ¼Ð°, ...]
ФÑнкÑÐ¸Ñ inet_client_addr возвÑаÑÐ°ÐµÑ IP-адÑÐµÑ ÑекÑÑего клиенÑа, inet_client_port â Ð½Ð¾Ð¼ÐµÑ ÐµÐ³Ð¾ поÑÑа, inet_server_addr â IP-адÑÐµÑ ÑеÑвеÑа, по коÑоÑÐ¾Ð¼Ñ Ð¾Ð½ пÑинÑл подклÑÑение клиенÑа, а inet_server_port â ÑооÑвеÑÑÑвÑÑÑий Ð½Ð¾Ð¼ÐµÑ Ð¿Ð¾ÑÑа. ÐÑе ÑÑи ÑÑнкÑии возвÑаÑаÑÑ NULL, еÑли ÑекÑÑее Ñоединение ÑÑÑанавливаеÑÑÑ ÑеÑез Unix-ÑокеÑ.
ФÑнкÑÐ¸Ñ pg_blocking_pids возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив иденÑиÑикаÑоÑов пÑоÑеÑÑов ÑеанÑов, коÑоÑÑе блокиÑÑÐµÑ ÑеÑвеÑнÑй пÑоÑеÑÑ Ñ ÑказаннÑм иденÑиÑикаÑоÑом, либо пÑÑÑой маÑÑив, еÑли Ñакой ÑеÑвеÑнÑй пÑоÑеÑÑ Ð½Ðµ найден или не заблокиÑован. Ðдин ÑеÑвеÑнÑй пÑоÑеÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÑÐµÑ Ð´ÑÑгой, еÑли он либо ÑдеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ, конÑликÑÑÑÑÑÑ Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовкой, запÑаÑиваемой ÑеÑвеÑнÑм пÑоÑеÑÑом (жÑÑÑÐºÐ°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовка), либо ждÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки, коÑоÑÐ°Ñ Ð²Ñзвала Ð±Ñ ÐºÐ¾Ð½ÑÐ»Ð¸ÐºÑ Ñ Ð·Ð°Ð¿ÑоÑом блокиÑовки заблокиÑованного пÑоÑеÑÑа и наÑ
одиÑÑÑ Ð¿ÐµÑед ней в оÑеÑеди Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ (мÑÐ³ÐºÐ°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовка). ÐÑи ÑаÑпаÑаллеливании запÑоÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ñегда вÑдаÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñе клиенÑом иденÑиÑикаÑоÑÑ Ð¿ÑоÑеÑÑов (Ñо еÑÑÑ, ÑезÑлÑÑаÑÑ pg_backend_pid), даже еÑли ÑакÑиÑеÑÐºÐ°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовка ÑдеÑживаеÑÑÑ Ð¸Ð»Ð¸ ожидаеÑÑÑ Ð´Ð¾ÑеÑним ÑабоÑим пÑоÑеÑÑом. ÐÑледÑÑвие ÑÑого, в ÑезÑлÑÑаÑаÑ
могÑÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð´ÑблиÑÑÑÑиеÑÑ PID. Также замеÑÑÑе, ÑÑо когда конÑликÑÑÑÑÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ ÑдеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ð¾Ð´Ð³Ð¾ÑÐ¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ ÑÑанзакÑиÑ, в вÑводе ÑÑой ÑÑнкÑии она бÑÐ´ÐµÑ Ð¿ÑедÑÑавлена нÑлевÑм ID пÑоÑеÑÑа. ЧаÑÑÑе вÑÐ·Ð¾Ð²Ñ ÑÑой ÑÑнкÑии могÑÑ Ð¾ÑÑазиÑÑÑÑ Ð½Ð° пÑоизводиÑелÑноÑÑи Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, Ñак как ей нÑжен монополÑнÑй доÑÑÑп к обÑÐµÐ¼Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑа блокиÑовок, Ñ
оÑÑ Ð¸ на коÑоÑкое вÑемÑ.
ФÑнкÑÐ¸Ñ pg_conf_load_time возвÑаÑÐ°ÐµÑ Ð²ÑÐµÐ¼Ñ (timestamp with time zone), когда в поÑледний Ñаз ÑеÑÐ²ÐµÑ Ð·Ð°Ð³ÑÑжал ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии. (ÐÑли ÑекÑÑий ÑÐµÐ°Ð½Ñ Ð½Ð°ÑалÑÑ ÑанÑÑе, она возвÑаÑÐ°ÐµÑ Ð²ÑемÑ, когда ÑÑи ÑÐ°Ð¹Ð»Ñ Ð±Ñли пеÑезагÑÑÐ¶ÐµÐ½Ñ Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑеанÑа, Ñак ÑÑо в ÑазнÑÑ
ÑеанÑаÑ
ÑÑо знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ ÑазлиÑаÑÑÑÑ. РпÑоÑивном ÑлÑÑае ÑÑо бÑÐ´ÐµÑ Ð²ÑемÑ, когда ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии ÑÑиÑал главнÑй пÑоÑеÑÑ.)
ФÑнкÑÐ¸Ñ pg_current_logfile возвÑаÑÐ°ÐµÑ Ð² знаÑении text пÑÑÑ Ðº Ñайлам жÑÑналов, в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¸ÑполÑзÑемÑм ÑбоÑÑиком ÑообÑений. ÐÑÐ¾Ñ Ð¿ÑÑÑ ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· каÑалога log_directory и имени Ñайла жÑÑнала. ÐÑли ÑбоÑÑик ÑообÑений оÑклÑÑÑн, возвÑаÑаеÑÑÑ Ð·Ð½Ð°Ñение NULL. ÐÑли ведÑÑÑÑ Ð½ÐµÑколÑко жÑÑналов в ÑазнÑÑ
ÑоÑмаÑаÑ
, пÑи вÑзове ÑÑнкÑии pg_current_logfile без аÑгÑменÑов возвÑаÑаеÑÑÑ Ð¿ÑÑÑ Ñайла, имеÑÑего пеÑвÑй ÑоÑÐ¼Ð°Ñ Ð¿Ð¾ поÑÑÐ´ÐºÑ Ð¸Ð· ÑледÑÑÑего ÑпиÑка: stderr, csvlog. ÐÑли Ñайл жÑÑнала Ð¸Ð¼ÐµÐµÑ ÐºÐ°ÐºÐ¾Ð¹-Ñо иной ÑоÑмаÑ, возвÑаÑаеÑÑÑ NULL. ЧÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑоÑиÑÑ Ñайл в опÑеделÑнном ÑоÑмаÑе, пеÑедайÑе либо csvlog, либо stderr в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±ÑзаÑелÑного паÑамеÑÑа Ñипа text. ÐÑли запÑоÑеннÑй ÑоÑÐ¼Ð°Ñ Ð½Ðµ вклÑÑÑн в log_destination, бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑено знаÑение NULL. ФÑнкÑÐ¸Ñ pg_current_logfile оÑÑÐ°Ð¶Ð°ÐµÑ ÑодеÑжимое Ñайла current_logfiles.
pg_my_temp_schema возвÑаÑÐ°ÐµÑ OID вÑеменной ÑÑ
ÐµÐ¼Ñ ÑекÑÑего ÑеанÑа или 0, еÑли Ñакой Ð½ÐµÑ (в ÑамкаÑ
ÑеанÑа не ÑоздавалиÑÑ Ð²ÑеменнÑе ÑаблиÑÑ). pg_is_other_temp_schema возвÑаÑÐ°ÐµÑ true, еÑли заданнÑй OID оÑноÑиÑÑÑ Ðº вÑеменной ÑÑ
еме дÑÑгого ÑеанÑа. (ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, напÑÐ¸Ð¼ÐµÑ Ð´Ð»Ñ Ð¸ÑклÑÑÐµÐ½Ð¸Ñ Ð²ÑеменнÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð´ÑÑгиÑ
ÑеанÑов из обÑего ÑпиÑка пÑи пÑоÑмоÑÑе ÑÐ°Ð±Ð»Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
.)
ФÑнкÑÐ¸Ñ pg_listening_channels возвÑаÑÐ°ÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð¸Ð¼Ñн каналов аÑинÑ
ÑоннÑÑ
Ñведомлений, на коÑоÑÑе подпиÑан ÑекÑÑий ÑеанÑ. ФÑнкÑÐ¸Ñ pg_notification_queue_usage возвÑаÑÐ°ÐµÑ Ð´Ð¾Ð»Ñ Ð¾Ñ Ð²Ñего Ñвободного пÑоÑÑÑанÑÑва Ð´Ð»Ñ Ñведомлений, в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð·Ð°Ð½ÑÑÑÑ ÑведомлениÑми, ожидаÑÑими обÑабоÑки, в виде знаÑÐµÐ½Ð¸Ñ double в диапазоне 0..1. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº LISTEN и NOTIFY.
pg_postmaster_start_time возвÑаÑÐ°ÐµÑ Ð²ÑÐµÐ¼Ñ (timestamp with time zone), когда бÑл запÑÑен ÑеÑвеÑ.
ФÑнкÑÐ¸Ñ pg_safe_snapshot_blocking_pids возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив иденÑиÑикаÑоÑов пÑоÑеÑÑов ÑеанÑов, коÑоÑÑе блокиÑÑÑÑ ÑеÑвеÑнÑй пÑоÑеÑÑ Ñ ÑказаннÑм иденÑиÑикаÑоÑом (не даÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ ÐµÐ¼Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑй Ñнимок), либо пÑÑÑой маÑÑив, еÑли Ñакой ÑеÑвеÑнÑй пÑоÑеÑÑ Ð½Ðµ найден или не заблокиÑован. СеанÑ, вÑполнÑÑÑий ÑÑанзакÑÐ¸Ñ ÑÑÐ¾Ð²Ð½Ñ SERIALIZABLE, блокиÑÑÐµÑ ÑÑанзакÑÐ¸Ñ SERIALIZABLE READ ONLY DEFERRABLE, не Ð´Ð°Ð²Ð°Ñ ÐµÐ¹ полÑÑиÑÑ Ñнимок, пока она не опÑеделиÑ, ÑÑо можно безопаÑно избежаÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑедикаÑнÑÑ
блокиÑовок. Ðа дополниÑелÑнÑми ÑведениÑми о ÑеÑиализÑемÑÑ
и оÑкладÑваемÑÑ
ÑÑанзакÑиÑÑ
обÑаÑиÑеÑÑ Ðº ÐодÑазделÑ 13.2.3. ЧаÑÑÑе вÑÐ·Ð¾Ð²Ñ ÑÑой ÑÑнкÑии могÑÑ Ð¾ÑÑазиÑÑÑÑ Ð½Ð° пÑоизводиÑелÑноÑÑи Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, Ñак как ей нÑжен доÑÑÑп к обÑÐµÐ¼Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑа пÑедикаÑнÑÑ
блокиÑовок, Ñ
оÑÑ Ð¸ на коÑоÑкое вÑемÑ.
ФÑнкÑÐ¸Ñ version возвÑаÑÐ°ÐµÑ ÑÑÑокÑ, опиÑÑваÑÑÑÑ Ð²ÐµÑÑÐ¸Ñ ÑеÑвеÑа PostgreSQL. ÐÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ñакже можно полÑÑиÑÑ Ð¸Ð· пеÑеменной server_version или, в более маÑинно-оÑиенÑиÑованном ÑоÑмаÑе, из пеÑеменной server_version_num. ÐÑи ÑазÑабоÑке пÑогÑамм ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ server_version_num (она поÑвилаÑÑ Ð² веÑÑии 8.2) либо PQserverVersion , а не ÑазбиÑаÑÑ ÑекÑÑовÑÑ Ð²ÐµÑÑиÑ.
возвÑаÑÐ°ÐµÑ ÑекÑÑовÑÑ ÑÑÑокÑ, опиÑÑваÑÑÑÑ ÑедакÑÐ¸Ñ Postgres Pro, напÑÐ¸Ð¼ÐµÑ pgpro_editionstandard или enterprise.
возвÑаÑÐ°ÐµÑ ÑекÑÑовÑÑ ÑÑÑокÑ, опиÑÑваÑÑÑÑ Ð²ÐµÑÑÐ¸Ñ ÑеÑвеÑа Postgres Pro.pgpro_version
РТаблиÑе 9.64 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, позволÑÑÑÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¿ÑогÑаммно пÑовеÑиÑÑ Ñвои пÑава доÑÑÑпа к обÑекÑам. ÐодÑобнее о пÑÐ°Ð²Ð°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑзнаÑÑ Ð² Разделе 5.7.
ТаблиÑа 9.64. ФÑнкÑии Ð´Ð»Ñ Ð¿ÑовеÑки пÑав доÑÑÑпа
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-либо ÑÑолбÑа ÑаблиÑÑ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-либо ÑÑолбÑа ÑаблиÑÑ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑÑолбÑа |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑÑолбÑа |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ð¾Ð±ÑÑÑки ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ð¾Ð±ÑÑÑки ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑÑнкÑии |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑÑнкÑии |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑзÑка |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑзÑка |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑÑ ÐµÐ¼Ñ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑÑ ÐµÐ¼Ñ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑÑоÑоннего ÑеÑвеÑа |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑÑоÑоннего ÑеÑвеÑа |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑаблиÑÑ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑаблиÑÑ |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑаблиÑного пÑоÑÑÑанÑÑва |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÑаблиÑного пÑоÑÑÑанÑÑва |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ñипа |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ñипа |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ñоли |
| boolean | Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑекÑÑий полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ñоли |
| boolean | вклÑÑена ли Ð´Ð»Ñ ÑекÑÑего полÑзоваÑÐµÐ»Ñ Ð·Ð°ÑиÑа на ÑÑовне ÑÑÑок Ð´Ð»Ñ ÑаблиÑÑ |
has_table_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð²ÑполнÑÑÑ Ñ ÑаблиÑей заданнÑе дейÑÑвиÑ. РкаÑеÑÑве иденÑиÑикаÑоÑа полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ ÐµÐ³Ð¾ имÑ, OID (pg_authid.oid) или public (ÑÑо бÑÐ´ÐµÑ ÑказÑваÑÑ Ð½Ð° пÑевдоÑÐ¾Ð»Ñ PUBLIC). ÐÑли ÑÑÐ¾Ñ Ð°ÑгÑÐ¼ÐµÐ½Ñ Ð¾Ð¿ÑÑен, подÑазÑмеваеÑÑÑ ÑекÑÑий полÑзоваÑÐµÐ»Ñ (current_user). ТаблиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑказаÑÑ Ð¿Ð¾ имени или по OID. (Таким обÑазом, ÑакÑиÑеÑки еÑÑÑ ÑеÑÑÑ Ð²Ð°ÑианÑов ÑÑнкÑии has_table_privilege, ÑазлиÑаÑÑиÑ
ÑÑ Ð¿Ð¾ ÑиÑÐ»Ñ Ð¸ ÑÐ¸Ð¿Ñ Ð°ÑгÑменÑов.) Ðогда ÑказÑваеÑÑÑ Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа, его можно дополниÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑÑ
емÑ, еÑли ÑÑо необÑ
одимо. ÐнÑеÑеÑÑÑÑее пÑаво доÑÑÑпа запиÑÑваеÑÑÑ Ð² виде ÑекÑÑа и Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из ÑледÑÑÑиÑ
: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES и TRIGGER. ÐополниÑелÑно к Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ñава можно добавиÑÑ WITH GRANT OPTION и пÑовеÑиÑÑ, ÑазÑеÑено ли полÑзоваÑÐµÐ»Ñ Ð¿ÐµÑедаваÑÑ ÑÑо пÑаво дÑÑгим. ÐÑоме Ñого, в одном паÑамеÑÑе можно пеÑеÑиÑлиÑÑ Ð½ÐµÑколÑко названий пÑав ÑеÑез запÑÑÑÑ, и Ñогда ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ¸Ñ true, еÑли полÑзоваÑÐµÐ»Ñ Ð¸Ð¼ÐµÐµÑ Ð¾Ð´Ð½Ð¾ из ÑÑиÑ
пÑав. (РегиÑÑÑ Ð² названии пÑав не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑениÑ, а Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸ (но не внÑÑÑи) ÑазÑеÑÐµÐ½Ñ Ð¿ÑобелÑнÑе ÑимволÑ.) ÐаÑа пÑимеÑов:
SELECT has_table_privilege('myschema.mytable', 'select');
SELECT has_table_privilege('joe', 'mytable', 'INSERT, SELECT WITH GRANT OPTION');has_sequence_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð²ÑполнÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñе дейÑÑÐ²Ð¸Ñ Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑÑ. РопÑеделении аÑгÑменÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñна has_table_privilege. ÐопÑÑÑимÑе Ð´Ð»Ñ Ð½ÐµÑ Ð¿Ñава ÑкладÑваÑÑÑÑ Ð¸Ð· USAGE, SELECT и UPDATE.
has_any_column_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð²ÑполнÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñе дейÑÑÐ²Ð¸Ñ Ñ ÐºÐ°ÐºÐ¸Ð¼-либо ÑÑолбÑом ÑаблиÑÑ. РопÑеделении аÑгÑменÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñна has_table_privilege, а допÑÑÑимÑе пÑава ÑкладÑваÑÑÑÑ Ð¸Ð· SELECT, INSERT, UPDATE и REFERENCES. ÐамеÑÑÑе, ÑÑо лÑбое из ÑÑиÑ
пÑав, назнаÑенное на ÑÑовне ÑаблиÑÑ, авÑомаÑиÑеÑки ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° вÑе ÐµÑ ÑÑолбÑÑ, Ñак ÑÑо has_any_column_privilege вÑегда возвÑаÑÐ°ÐµÑ true, еÑли has_table_privilege даÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑй оÑÐ²ÐµÑ Ð´Ð»Ñ ÑеÑ
же аÑгÑменÑов. Ðо has_any_column_privilege возвÑаÑÐ°ÐµÑ true еÑÑ Ð¸ Ñогда, когда пÑаво назнаÑено ÑолÑко Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
ÑÑолбÑов.
has_column_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð²ÑполнÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñе дейÑÑÐ²Ð¸Ñ Ñо ÑÑолбÑом ÑаблиÑÑ. РопÑеделении аÑгÑменÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñна has_table_privilege, Ñ Ð½ÐµÐ±Ð¾Ð»ÑÑим дополнением: ÑÑÐ¾Ð»Ð±ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð¿Ð¾ имени или номеÑÑ Ð°ÑÑибÑÑа. ÐÐ»Ñ Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимÑе пÑава ÑкладÑваÑÑÑÑ Ð¸Ð· SELECT, INSERT, UPDATE и REFERENCES. ÐамеÑÑÑе, ÑÑо лÑбое из ÑÑиÑ
пÑав, назнаÑенное на ÑÑовне ÑаблиÑÑ, авÑомаÑиÑеÑки ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° вÑе ÑÑолбÑÑ ÑаблиÑÑ.
has_database_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð²ÑполнÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñе дейÑÑÐ²Ð¸Ñ Ñ Ð±Ð°Ð·Ð¾Ð¹ даннÑÑ
. РопÑеделении аÑгÑменÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñна has_table_privilege. ÐÐ»Ñ Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимÑе пÑава ÑкладÑваÑÑÑÑ Ð¸Ð· CREATE, CONNECT и TEMPORARY (или TEMP, ÑÑо ÑавноÑилÑно TEMPORARY).
has_function_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¾Ð±ÑаÑиÑÑÑÑ Ðº заданной ÑÑнкÑии. РопÑеделении аÑгÑменÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñна has_table_privilege. Ðогда ÑÑнкÑÐ¸Ñ Ð¾Ð¿ÑеделÑеÑÑÑ Ð½Ðµ Ñвоим OID, а ÑекÑÑовой ÑÑÑокой, ÑÑа ÑÑÑока должна бÑÑÑ Ð´Ð¾Ð¿ÑÑÑимой Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð¸Ð¼Ð¾Ð³Ð¾ знаÑÐµÐ½Ð¸Ñ Ñипа regprocedure (Ñм. Раздел 8.19). ÐÐ»Ñ ÑÑой ÑÑнкÑии допÑÑÑимо ÑолÑко пÑаво EXECUTE. ÐапÑимеÑ:
SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');has_foreign_data_wrapper_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº обÑÑÑке ÑÑоÑонниÑ
даннÑÑ
. РопÑеделении аÑгÑменÑов она аналогиÑна has_table_privilege. ÐÐ»Ñ Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимо ÑолÑко пÑаво USAGE.
has_language_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº пÑоÑедÑÑÐ½Ð¾Ð¼Ñ ÑзÑкÑ. РопÑеделении аÑгÑменÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñна has_table_privilege. ÐÐ»Ñ Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимо ÑолÑко пÑаво USAGE.
has_schema_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð²ÑполнÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñе дейÑÑÐ²Ð¸Ñ Ñо ÑÑ
емой. РопÑеделении аÑгÑменÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñна has_table_privilege. ÐÐ»Ñ Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимÑе пÑава ÑкладÑваÑÑÑÑ Ð¸Ð· CREATE и USAGE.
has_server_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº ÑÑоÑÐ¾Ð½Ð½ÐµÐ¼Ñ ÑеÑвеÑÑ. РопÑеделении аÑгÑменÑов она аналогиÑна has_table_privilege. ÐÐ»Ñ Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимо ÑолÑко пÑаво USAGE.
has_tablespace_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð²ÑполнÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ дейÑÑвие в ÑаблиÑном пÑоÑÑÑанÑÑве. РопÑеделении аÑгÑменÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñна has_table_privilege. ÐÐ»Ñ Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимо ÑолÑко пÑаво CREATE.
has_type_privilege пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¾Ð±ÑаÑиÑÑÑÑ Ðº ÑÐ¸Ð¿Ñ Ð¾Ð¿ÑеделÑннÑм обÑазом. ÐозможнÑе аÑгÑменÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑÐ½Ñ has_table_privilege. ÐÑи Ñказании Ñипа ÑекÑÑовой ÑÑÑокой, а не по OID, допÑÑкаÑÑÑÑ Ñе же вÑ
однÑе знаÑениÑ, ÑÑо и Ð´Ð»Ñ Ñипа даннÑÑ
regtype (Ñм. Раздел 8.19). ÐÐ»Ñ Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимо ÑолÑко пÑаво USAGE.
pg_has_role пÑовеÑÑеÑ, Ð¼Ð¾Ð¶ÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð²ÑполнÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñе дейÑÑÐ²Ð¸Ñ Ñ ÑолÑÑ. РопÑеделении аÑгÑменÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñна has_table_privilege, за иÑклÑÑением Ñого, ÑÑо именем полÑзоваÑÐµÐ»Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ public. ÐÐ»Ñ Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимÑе пÑава ÑкладÑваÑÑÑÑ Ð¸Ð· MEMBER и USAGE. MEMBER обознаÑÐ°ÐµÑ Ð¿ÑÑмое или коÑвенное ÑленÑÑво в данной Ñоли (Ñо еÑÑÑ Ð½Ð°Ð»Ð¸Ñие пÑава вÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SET ROLE), Ñогда как USAGE показÑваеÑ, ÑÑо полÑзоваÑÐµÐ»Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ð²Ñе пÑава Ñоли ÑÑазÑ, без SET ROLE. РлÑÐ±Ð¾Ð¼Ñ Ð¸Ð· ÑÑиÑ
Ñипов пÑав можно добавиÑÑ WITH ADMIN OPTION или WITH GRANT OPTION, ÑÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ Ð½Ð°Ð»Ð¸Ñие пÑава ADMIN (вÑе ÑеÑÑÑе ваÑианÑа напиÑÐ°Ð½Ð¸Ñ Ð¿ÑовеÑÑÑÑ Ð¾Ð´Ð½Ð¾ и Ñо же).
row_security_active пÑовеÑÑеÑ, вклÑÑена ли заÑиÑа на ÑÑовне ÑÑÑок Ð´Ð»Ñ Ñказанной ÑаблиÑÑ Ð² конÑекÑÑе и окÑÑжении ÑекÑÑего полÑзоваÑÐµÐ»Ñ (current_user). ТаблиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð¿Ð¾ имени или OID.
РТаблиÑе 9.65 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð¾Ð¿ÐµÑаÑоÑÑ, пÑедназнаÑеннÑе Ð´Ð»Ñ ÑабоÑÑ Ñ Ñипом aclitem, коÑоÑÑй пÑедÑÑавлÑÐµÑ Ð² ÑиÑÑемном каÑалоге пÑава доÑÑÑпа. Ð ÑодеÑжании знаÑений ÑÑого Ñипа ÑаÑÑказÑваеÑÑÑ Ð² Разделе 5.7.
ТаблиÑа 9.65. ÐпеÑаÑоÑÑ Ð´Ð»Ñ Ñипа aclitem
| ÐпеÑаÑÐ¾Ñ | ÐпиÑание | ÐÑÐ¸Ð¼ÐµÑ | РезÑлÑÑÐ°Ñ |
|---|---|---|---|
= | Ñавно | 'calvin=r*w/hobbes'::aclitem = 'calvin=r*w*/hobbes'::aclitem | f |
@> | ÑодеÑÐ¶Ð¸Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ | '{calvin=r*w/hobbes,hobbes=r*w*/postgres}'::aclitem[] @> 'calvin=r*w/hobbes'::aclitem | t |
~ | ÑодеÑÐ¶Ð¸Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ | '{calvin=r*w/hobbes,hobbes=r*w*/postgres}'::aclitem[] ~ 'calvin=r*w/hobbes'::aclitem | t |
РТаблиÑе 9.66 пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑÑнкÑии, пÑедназнаÑеннÑе Ð´Ð»Ñ ÑабоÑÑ Ñ Ñипом aclitem.
ТаблиÑа 9.66. ФÑнкÑии Ð´Ð»Ñ Ñипа aclitem
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| aclitem[] | вÑдаÑÑ Ð¿Ñава доÑÑÑпа по ÑмолÑаниÑ, назнаÑеннÑе обÑекÑам, коÑоÑÑе пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ Ñоли ownerId |
| setof record | вÑдаÑÑ Ð¼Ð°ÑÑив aclitem в виде коÑÑежей |
| aclitem | конÑÑÑÑиÑÑÐµÑ Ð·Ð½Ð°Ñение aclitem из оÑделÑнÑÑ
аÑгÑменÑов |
ФÑнкÑÐ¸Ñ acldefault возвÑаÑÐ°ÐµÑ Ð²ÑÑÑоеннÑй и дейÑÑвÑÑÑий по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ Ð¿Ñав доÑÑÑпа Ð´Ð»Ñ Ð¾Ð±ÑекÑов Ñипа type, пÑинадлежаÑиÑ
Ñоли ownerId. ÐÑ ÑезÑлÑÑÐ°Ñ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑ, какие пÑава доÑÑÑпа подÑазÑмеваÑÑÑÑ, когда ÑпиÑок ACL опÑеделÑнного обÑекÑа пÑÑÑ. (ÐÑава доÑÑÑпа, дейÑÑвÑÑÑие по ÑмолÑаниÑ, опиÑÑваÑÑÑÑ Ð² Разделе 5.7.) ÐаÑамеÑÑ type Ð¸Ð¼ÐµÐµÑ Ñип char и Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð¾Ð´Ð½Ð¾ из ÑледÑÑÑиÑ
знаÑений: 'c' â ÑÑÐ¾Ð»Ð±ÐµÑ (COLUMN), 'r' â ÑаблиÑа или подобнÑй ÑаблиÑе обÑÐµÐºÑ (TABLE), 's' â поÑледоваÑелÑноÑÑÑ (SEQUENCE), 'd' â база даннÑÑ
(DATABASE), 'f' â ÑÑнкÑÐ¸Ñ (FUNCTION) или пÑоÑедÑÑа (PROCEDURE), 'l' â ÑзÑк (LANGUAGE), 'L' â болÑÑой обÑÐµÐºÑ (LARGE OBJECT), 'n' â ÑÑ
ема (SCHEMA), 't' â ÑаблиÑное пÑоÑÑÑанÑÑво (TABLESPACE), 'F' â обÑÑÑка ÑÑоÑонниÑ
даннÑÑ
(FOREIGN DATA WRAPPER), 'S' â ÑÑоÑонний ÑеÑÐ²ÐµÑ (FOREIGN SERVER) и 'T' â Ñип (TYPE) или домен (DOMAIN).
ФÑнкÑÐ¸Ñ aclexplode возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив aclitem в виде набоÑа ÑÑÑок. Ð ÑÑолбÑаÑ
ÑÑиÑ
ÑÑÑок ÑодеÑжиÑÑÑ oid пÑаводаÑелÑ, oid пÑавообладаÑÐµÐ»Ñ (0 ознаÑÐ°ÐµÑ PUBLIC), данное пÑаво в виде знаÑÐµÐ½Ð¸Ñ text (SELECT, ...) и пÑизнак ÑазÑеÑÐµÐ½Ð¸Ñ Ð¿ÐµÑедаÑи ÑÑого пÑава в виде знаÑÐµÐ½Ð¸Ñ boolean. ФÑнкÑÐ¸Ñ makeaclitem вÑполнÑÐµÑ Ð¾Ð±ÑаÑное пÑеобÑазование.
РТаблиÑе 9.67 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, опÑеделÑÑÑие видимоÑÑÑ Ð¾Ð±ÑекÑа Ñ ÑекÑÑим пÑÑÑм поиÑка ÑÑ ÐµÐ¼. РпÑимеÑÑ, ÑаблиÑа ÑÑиÑаеÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹, еÑли ÑодеÑжаÑÐ°Ñ ÐµÑ ÑÑ ÐµÐ¼Ð° вклÑÑена в пÑÑÑ Ð¿Ð¾Ð¸Ñка и Ð½ÐµÑ Ð´ÑÑгой ÑаблиÑÑ Ñ Ñем же именем, коÑоÑÐ°Ñ Ð±Ñла Ð±Ñ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° по пÑÑи поиÑка ÑанÑÑе. ÐÑÑгими Ñловами, к ÑÑой ÑаблиÑе можно бÑÐ´ÐµÑ Ð¾Ð±ÑаÑиÑÑÑÑ Ð¿ÑоÑÑо по ÐµÑ Ð¸Ð¼ÐµÐ½Ð¸, без Ñвного ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑÑ ÐµÐ¼Ñ. ÐÑоÑмоÑÑеÑÑ ÑпиÑок вÑÐµÑ Ð²Ð¸Ð´Ð¸Ð¼ÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ Ñак:
SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);
ТаблиÑа 9.67. ФÑнкÑии Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| boolean | видимо ли пÑавило ÑоÑÑиÑовки |
| boolean | видимо ли пÑеобÑазование |
| boolean | видима ли ÑÑнкÑÐ¸Ñ |
| boolean | видим ли клаÑÑ Ð¾Ð¿ÐµÑаÑоÑов |
| boolean | видим ли опеÑаÑÐ¾Ñ |
| boolean | видимо ли ÑемейÑÑво опеÑаÑоÑов |
| boolean | видим ли обÑÐµÐºÑ ÑÑаÑиÑÑики в пÑÑи поиÑка |
| boolean | видима ли ÑаблиÑа |
| boolean | видима ли конÑигÑÑаÑÐ¸Ñ ÑекÑÑового поиÑка |
| boolean | видим ли ÑловаÑÑ ÑекÑÑового поиÑка |
| boolean | видим ли анализаÑÐ¾Ñ ÑекÑÑового поиÑка |
| boolean | видим ли Ñаблон ÑекÑÑового поиÑка |
| boolean | видим ли Ñип (или домен) |
ÐÐ°Ð¶Ð´Ð°Ñ Ð¸Ð· ÑÑиÑ
ÑÑнкÑий пÑовеÑÑÐµÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑÑ Ð¾Ð±ÑекÑов опÑеделÑнного Ñипа. ÐамеÑÑÑе, ÑÑо pg_table_is_visible можно Ñакже иÑполÑзоваÑÑ Ð´Ð»Ñ Ð¿ÑедÑÑавлений, маÑеÑиализованнÑÑ
пÑедÑÑавлений, индекÑов, поÑледоваÑелÑноÑÑей и ÑÑоÑонниÑ
ÑаблиÑ; pg_function_is_visible â Ð´Ð»Ñ Ð¿ÑоÑедÑÑ Ð¸ агÑегаÑнÑÑ
ÑÑнкÑий; pg_type_is_visible â Ð´Ð»Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð². ÐÐ»Ñ ÑÑнкÑий и опеÑаÑоÑов обÑÐµÐºÑ ÑÑиÑаеÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñм в пÑÑи поиÑка, еÑли пÑи пÑоÑмоÑÑе пÑÑи не наÑ
одиÑÑÑ Ð¿ÑедÑеÑÑвÑÑÑий ÐµÐ¼Ñ Ð´ÑÑгой обÑÐµÐºÑ Ñ Ñем же именем и Ñипами аÑгÑменÑов. ÐÐ»Ñ ÐºÐ»Ð°ÑÑов опеÑаÑоÑов во внимание пÑинимаеÑÑÑ Ð¸ Ð¸Ð¼Ñ Ð¾Ð¿ÐµÑаÑоÑа, и ÑвÑзаннÑй Ñ Ð½Ð¸Ð¼ меÑод доÑÑÑпа к индекÑÑ.
ÐÑем ÑÑим ÑÑнкÑиÑм должен пеÑедаваÑÑÑÑ OID пÑовеÑÑемого обÑекÑа. ÐÑли Ð²Ñ Ñ
оÑиÑе пÑовеÑиÑÑ Ð¾Ð±ÑÐµÐºÑ Ð¿Ð¾ имени, Ñдобнее иÑполÑзоваÑÑ ÑипÑ-пÑÐµÐ²Ð´Ð¾Ð½Ð¸Ð¼Ñ OID (regclass, regtype, regprocedure, regoperator, regconfig или regdictionary), напÑимеÑ:
SELECT pg_type_is_visible('myschema.widget'::regtype);ÐамеÑÑÑе, ÑÑо пÑовеÑÑÑÑ Ñаким ÑпоÑобом имена без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑÑ ÐµÐ¼Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð±Ð¾Ð»ÑÑого ÑмÑÑла â еÑли Ð¸Ð¼Ñ ÑдаÑÑÑÑ ÑаÑпознаÑÑ, знаÑÐ¸Ñ Ð¸ обÑÐµÐºÑ Ð±ÑÐ´ÐµÑ Ð²Ð¸Ð´Ð¸Ð¼Ñм.
РТаблиÑе 9.68 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, извлекаÑÑие инÑоÑмаÑÐ¸Ñ Ð¸Ð· ÑиÑÑемнÑÑ ÐºÐ°Ñалогов.
ТаблиÑа 9.68. ФÑнкÑии Ð´Ð»Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº ÑиÑÑемнÑм каÑалогам
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| text | полÑÑÐ°ÐµÑ Ð¸Ð¼Ñ Ñипа даннÑÑ Ð² ÑоÑмаÑе SQL |
| text | полÑÑÐ°ÐµÑ Ð¾Ð¿Ñеделение огÑаниÑÐµÐ½Ð¸Ñ |
| text | полÑÑÐ°ÐµÑ Ð¾Ð¿Ñеделение огÑаниÑÐµÐ½Ð¸Ñ |
| text | декомпилиÑÑÐµÑ Ð²Ð½ÑÑÑеннÑÑ ÑоÑÐ¼Ñ Ð²ÑÑажениÑ, в пÑедположении, ÑÑо вÑе пеÑеменнÑе в нÑм ÑÑÑлаÑÑÑÑ Ð½Ð° ÑаблиÑÑ Ð¸Ð»Ð¸ оÑноÑение, Ñказанное вÑоÑÑм паÑамеÑÑом |
| text | декомпилиÑÑÐµÑ Ð²Ð½ÑÑÑеннÑÑ ÑоÑÐ¼Ñ Ð²ÑÑажениÑ, в пÑедположении, ÑÑо вÑе пеÑеменнÑе в нÑм ÑÑÑлаÑÑÑÑ Ð½Ð° ÑаблиÑÑ Ð¸Ð»Ð¸ оÑноÑение, Ñказанное вÑоÑÑм паÑамеÑÑом |
| text | полÑÑÐ°ÐµÑ Ð¾Ð¿Ñеделение ÑÑнкÑии или пÑоÑедÑÑÑ |
| text | полÑÑÐ°ÐµÑ ÑпиÑок аÑгÑменÑов из опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑнкÑии или пÑоÑедÑÑÑ (Ñо знаÑениÑми по ÑмолÑаниÑ) |
| text | полÑÑÐ°ÐµÑ ÑпиÑок аÑгÑменÑов, иденÑиÑиÑиÑÑÑÑий ÑÑнкÑÐ¸Ñ Ð¸Ð»Ð¸ пÑоÑедÑÑÑ (без знаÑений по ÑмолÑаниÑ) |
| text | полÑÑÐ°ÐµÑ Ð¿Ñедложение RETURNS Ð´Ð»Ñ ÑÑнкÑии (Ð´Ð»Ñ Ð¿ÑоÑедÑÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NULL) |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE INDEX Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE INDEX Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑа или опÑеделение одного индекÑиÑованного ÑÑолбÑа, когда column_no не Ñавен 0 |
| setof record | полÑÑÐ°ÐµÑ ÑпиÑок клÑÑевÑÑ Ñлов SQL по каÑегоÑиÑм |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE RULE Ð´Ð»Ñ Ð¿Ñавила |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE RULE Ð´Ð»Ñ Ð¿Ñавила |
| text | полÑÑÐ°ÐµÑ Ð¸Ð¼Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи, иÑполÑзÑемой ÑÑолбÑом иденÑиÑикаÑии или ÑÑолбÑом serial |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE STATISTICS Ð´Ð»Ñ Ð¾Ð±ÑекÑа ÑаÑÑиÑенной ÑÑаÑиÑÑики |
pg_get_triggerdef(trigger_oid) | text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE [ CONSTRAINT ] TRIGGER Ð´Ð»Ñ ÑÑиггеÑа |
pg_get_triggerdef(trigger_oid, pretty_bool) | text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE [ CONSTRAINT ] TRIGGER Ð´Ð»Ñ ÑÑиггеÑа |
| name | полÑÑÐ°ÐµÑ Ð¸Ð¼Ñ Ñоли по Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ OID |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SELECT, опÑеделÑÑÑÑÑ Ð¿ÑедÑÑавление или маÑеÑиализованное пÑедÑÑавление (ÑÑÑаÑевÑÐ°Ñ ÑÑнкÑиÑ) |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SELECT, опÑеделÑÑÑÑÑ Ð¿ÑедÑÑавление или маÑеÑиализованное пÑедÑÑавление (ÑÑÑаÑевÑÐ°Ñ ÑÑнкÑиÑ) |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SELECT, опÑеделÑÑÑÑÑ Ð¿ÑедÑÑавление или маÑеÑиализованное пÑедÑÑавление |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SELECT, опÑеделÑÑÑÑÑ Ð¿ÑедÑÑавление или маÑеÑиализованное пÑедÑÑавление |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SELECT, опÑеделÑÑÑÑÑ Ð¿ÑедÑÑавление или маÑеÑиализованное пÑедÑÑавление; пÑи необÑ
одимоÑÑи ÑÐ°Ð·Ð±Ð¸Ð²Ð°ÐµÑ ÑÑÑоки Ñ Ð¿Ð¾Ð»Ñми, вÑÑ
одÑÑие за wrap_int Ñимволов, подÑазÑÐ¼ÐµÐ²Ð°Ñ ÑоÑмаÑиÑованнÑй вÑвод |
| boolean | пÑовеÑÑеÑ, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð½Ð´ÐµÐºÑа заданное ÑвойÑÑво |
| boolean | пÑовеÑÑеÑ, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ ÑвойÑÑво |
| boolean | пÑовеÑÑеÑ, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ меÑод доÑÑÑпа индекÑа заданное ÑвойÑÑво |
| setof record | полÑÑÐ°ÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð¿Ð°ÑамеÑÑов Ñ ÑанилиÑа в виде имÑ/знаÑение |
| setof oid | полÑÑÐ°ÐµÑ Ð¸Ð»Ð¸ ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ OID баз даннÑÑ , обÑекÑÑ ÐºÐ¾ÑоÑÑÑ ÑодеÑжаÑÑÑ Ð² заданном ÑаблиÑном пÑоÑÑÑанÑÑве |
| text | полÑÑÐ°ÐµÑ Ð¿ÑÑÑ Ð² Ñайловой ÑиÑÑеме к меÑÑÐ¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑаблиÑного пÑоÑÑÑанÑÑва |
| regtype | полÑÑÐ°ÐµÑ Ñип даннÑÑ Ð»Ñбого знаÑÐµÐ½Ð¸Ñ |
| text | полÑÑÐ°ÐµÑ Ð¿Ñавило ÑоÑÑиÑовки Ð´Ð»Ñ Ð°ÑгÑменÑа |
| regclass | полÑÑÐ°ÐµÑ OID Ñказанного оÑноÑÐµÐ½Ð¸Ñ |
| regproc | полÑÑÐ°ÐµÑ OID Ñказанной ÑÑнкÑии |
| regprocedure | полÑÑÐ°ÐµÑ OID Ñказанной ÑÑнкÑии |
| regoper | полÑÑÐ°ÐµÑ OID Ñказанного опеÑаÑоÑа |
| regoperator | полÑÑÐ°ÐµÑ OID Ñказанного опеÑаÑоÑа |
| regtype | полÑÑÐ°ÐµÑ OID Ñказанного Ñипа |
| regnamespace | полÑÑÐ°ÐµÑ OID Ñказанной ÑÑ ÐµÐ¼Ñ |
| regrole | полÑÑÐ°ÐµÑ OID Ñказанной Ñоли |
format_type возвÑаÑÐ°ÐµÑ Ð² ÑоÑмаÑе SQL Ð¸Ð¼Ñ Ñипа даннÑÑ
, опÑеделÑемого по OID и, возможно, модиÑикаÑоÑÑ Ñипа. ÐÑли модиÑикаÑÐ¾Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑÑен, вмеÑÑо него можно пеÑедаÑÑ NULL.
pg_get_keywords возвÑаÑÐ°ÐµÑ ÑаблиÑÑ Ñ ÐºÐ»ÑÑевÑми Ñловами SQL, коÑоÑÑе воÑпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑеÑвеÑ. СÑÐ¾Ð»Ð±ÐµÑ word ÑодеÑÐ¶Ð¸Ñ ÐºÐ»ÑÑевое Ñлово, а catcode â код каÑегоÑии: U â не заÑезеÑвиÑовано, C â Ð¸Ð¼Ñ ÑÑолбÑа, T â Ð¸Ð¼Ñ Ñипа или ÑÑнкÑии, R â заÑезеÑвиÑовано. СÑÐ¾Ð»Ð±ÐµÑ catdesc ÑодеÑÐ¶Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ локализованное опиÑание каÑегоÑии.
pg_get_constraintdef, pg_get_indexdef, pg_get_ruledef, pg_get_statisticsobjdef и pg_get_triggerdef воÑÑÑанавливаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, ÑоздававÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ огÑаниÑение, индекÑ, пÑавило, обÑÐµÐºÑ ÑÑаÑиÑÑики или ÑÑиггеÑ, ÑооÑвеÑÑÑвенно. (УÑÑиÑе, ÑÑо они возвÑаÑаÑÑ Ð½Ðµ изнаÑалÑнÑй ÑекÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, а ÑезÑлÑÑÐ°Ñ Ð´ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии.) pg_get_expr декомпилиÑÑÐµÑ Ð²Ð½ÑÑÑеннÑÑ ÑоÑÐ¼Ñ Ð¾ÑделÑного вÑÑажениÑ, напÑÐ¸Ð¼ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑолбÑа. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð¸Ð·ÑÑÐµÐ½Ð¸Ñ ÑодеÑжимого ÑиÑÑемнÑÑ
каÑалогов. ÐÑли вÑÑажение Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¿ÐµÑеменнÑе, ÑкажиÑе во вÑоÑом паÑамеÑÑе OID оÑноÑениÑ, на коÑоÑÑй они ÑÑÑлаÑÑÑÑ; еÑли ÑакиÑ
пеÑеменнÑÑ
неÑ, вмеÑÑо OID можно пеÑедаÑÑ 0. pg_get_viewdef воÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð·Ð°Ð¿ÑÐ¾Ñ SELECT, опÑеделÑÑÑий пÑедÑÑавление. Ðногие из ÑÑиÑ
ÑÑнкÑий имеÑÑ Ð´Ð²Ðµ веÑÑии, одна из коÑоÑÑÑ
позволÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ ÑоÑмаÑиÑованнÑй вÑвод (Ñ Ð¿Ð°ÑамеÑÑом pretty_bool). ФоÑмаÑиÑованнÑй ÑекÑÑ Ð»ÐµÐ³Ñе ÑиÑаеÑÑÑ, но Ð½ÐµÑ Ð³Ð°ÑанÑии, ÑÑо он бÑÐ´ÐµÑ Ð²Ñегда воÑпÑинимаÑÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾ бÑдÑÑими веÑÑиÑми Postgres Pro; поÑÑÐ¾Ð¼Ñ Ð½Ðµ ÑледÑÐµÑ Ð¿ÑименÑÑÑ ÑоÑмаÑиÑование пÑи вÑгÑÑзке меÑаданнÑÑ
. ÐÑли в паÑамеÑÑе pretty_bool пеÑедаÑÑÑÑ false, ÑÑа веÑÑÐ¸Ñ ÑÑнкÑии вÑдаÑÑ ÑÐ¾Ñ Ð¶Ðµ ÑезÑлÑÑаÑ, ÑÑо и веÑÑÐ¸Ñ Ð±ÐµÐ· паÑамеÑÑов.
pg_get_functiondef возвÑаÑÐ°ÐµÑ Ð¿Ð¾Ð»Ð½Ñй опеÑаÑÐ¾Ñ CREATE OR REPLACE FUNCTION Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÑнкÑии. pg_get_function_arguments возвÑаÑÐ°ÐµÑ ÑпиÑок аÑгÑменÑов ÑÑнкÑии, в виде доÑÑаÑоÑном Ð´Ð»Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE FUNCTION. pg_get_function_result в дополнение возвÑаÑÐ°ÐµÑ Ð³Ð¾Ñовое пÑедложение RETURNS Ð´Ð»Ñ ÑÑнкÑии. pg_get_function_identity_arguments возвÑаÑÐ°ÐµÑ ÑпиÑок аÑгÑменÑов, доÑÑаÑоÑнÑй Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñной иденÑиÑикаÑии ÑÑнкÑии, в ÑоÑме, допÑÑÑимой, напÑÐ¸Ð¼ÐµÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER FUNCTION. ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð² ÑÑой ÑоÑме опÑÑкаÑÑÑÑ.
pg_get_serial_sequence возвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи, ÑвÑзанной Ñо ÑÑолбÑом, либо NULL, еÑли Ñакой поÑледоваÑелÑноÑÑи неÑ. ÐÐ»Ñ ÑÑолбÑа иденÑиÑикаÑии ÑÑо бÑÐ´ÐµÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ, ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ Ð½Ð¸Ð¼ внÑÑÑенним обÑазом. ÐÐ»Ñ ÑÑолбÑов, имеÑÑиÑ
один из поÑледоваÑелÑнÑÑ
Ñипов (serial, smallserial, bigserial), ÑÑо поÑледоваÑелÑноÑÑÑ, ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ Ð¾Ð±ÑÑвлением данного ÑÑолбÑа. РпоÑледнем ÑлÑÑае ÑÑÑ ÑвÑÐ·Ñ Ð¼Ð¾Ð¶Ð½Ð¾ измениÑÑ Ð¸Ð»Ð¸ ÑазоÑваÑÑ, воÑполÑзовавÑиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ ALTER SEQUENCE OWNED BY. (Ðозможно, ÑÑÑ ÑÑнкÑÐ¸Ñ ÑÑоило назваÑÑ pg_get_owned_sequence; ÐµÑ ÑÑÑеÑÑвÑÑÑее Ð¸Ð¼Ñ Ð¾ÑÑÐ°Ð¶Ð°ÐµÑ ÑÐ¾Ñ ÑакÑ, ÑÑо она обÑÑно иÑполÑзÑеÑÑÑ Ñо ÑÑолбÑами serial или bigserial.) РпеÑвом паÑамеÑÑе ÑÑнкÑии ÑказÑваеÑÑÑ Ð¸Ð¼Ñ ÑаблиÑÑ (возможно, дополненное ÑÑ
емой), а во вÑоÑом Ð¸Ð¼Ñ ÑÑолбÑа. Так как пеÑвÑй паÑамеÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¸Ð¼Ñ ÑÑ
ÐµÐ¼Ñ Ð¸ ÑаблиÑÑ, он воÑпÑинимаеÑÑÑ Ð½Ðµ как иденÑиÑикаÑÐ¾Ñ Ð² кавÑÑкаÑ
и поÑÑÐ¾Ð¼Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑиводиÑÑÑ Ðº Ð½Ð¸Ð¶Ð½ÐµÐ¼Ñ ÑегиÑÑÑÑ, Ñогда как Ð¸Ð¼Ñ ÑÑолбÑа во вÑоÑом паÑамеÑÑе воÑпÑинимаеÑÑÑ ÐºÐ°Ðº заклÑÑÑнное в кавÑÑки и в нÑм ÑегиÑÑÑ Ñимволов ÑоÑ
ÑанÑеÑÑÑ. ÐÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ Ð² виде, пÑигодном Ð´Ð»Ñ Ð¿ÐµÑедаÑи ÑÑнкÑиÑм, ÑабоÑаÑÑим Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑÑми (Ñм. Раздел 9.16). ÐбÑÑно она пÑименÑеÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑекÑÑего знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи Ð´Ð»Ñ ÑÑолбÑа иденÑиÑикаÑии или поÑледоваÑелÑного ÑÑолбÑа, напÑимеÑ:
SELECT currval(pg_get_serial_sequence('sometable', 'id'));pg_get_userbyid полÑÑÐ°ÐµÑ Ð¸Ð¼Ñ Ñоли по ÐµÑ OID.
ФÑнкÑии pg_index_column_has_property, pg_index_has_property и pg_indexam_has_property показÑваÑÑ, Ð¾Ð±Ð»Ð°Ð´Ð°ÐµÑ Ð»Ð¸ ÑказаннÑй ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð½Ð´ÐµÐºÑа, Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð»Ð¸ меÑод доÑÑÑпа индекÑа заданнÑм ÑвойÑÑвом. Ðни возвÑаÑаÑÑ NULL, еÑли Ð¸Ð¼Ñ ÑвойÑÑва неизвеÑÑно или непÑименимо к конкÑеÑÐ½Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ, либо еÑли OID или Ð½Ð¾Ð¼ÐµÑ ÑÑолбÑа не ÑказÑваÑÑ Ð½Ð° дейÑÑвиÑелÑнÑй обÑекÑ. ÐпиÑание ÑвойÑÑв ÑÑолбÑов Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе найÑи в ТаблиÑе 9.69, ÑвойÑÑва индекÑов опиÑÐ°Ð½Ñ Ð² ТаблиÑе 9.70, а ÑвойÑÑва меÑодов доÑÑÑпа â в ТаблиÑа 9.71. (ÐамеÑÑÑе, ÑÑо меÑÐ¾Ð´Ñ Ð´Ð¾ÑÑÑпа, ÑеализÑемÑе ÑаÑÑиÑениÑми, могÑÑ Ð¾Ð¿ÑеделÑÑÑ Ð´Ð»Ñ ÑвоиÑ
индекÑов дополниÑелÑнÑе имена ÑвойÑÑв.)
ТаблиÑа 9.69. СвойÑÑва ÑÑолбÑа индекÑа
| ÐÐ¼Ñ | ÐпиÑание |
|---|---|
asc | СоÑÑиÑÑеÑÑÑ Ð»Ð¸ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿Ð¾ возÑаÑÑÐ°Ð½Ð¸Ñ Ð¿Ñи ÑканиÑовании впеÑÑд? |
desc | СоÑÑиÑÑеÑÑÑ Ð»Ð¸ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿Ð¾ ÑбÑÐ²Ð°Ð½Ð¸Ñ Ð¿Ñи ÑканиÑовании впеÑÑд? |
nulls_first | ÐÑдаÑÑÑÑ Ð»Ð¸ NULL в наÑале пÑи ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¿ÐµÑÑд? |
nulls_last | ÐÑдаÑÑÑÑ Ð»Ð¸ NULL в конÑе пÑи ÑканиÑовании впеÑÑд? |
orderable | СвÑзан ли Ñо ÑÑолбÑом некоÑоÑÑй поÑÑдок ÑоÑÑиÑовки? |
distance_orderable | ÐÐ¾Ð¶ÐµÑ Ð»Ð¸ ÑÑÐ¾Ð»Ð±ÐµÑ ÑканиÑоваÑÑÑÑ Ð¿Ð¾ поÑÑÐ´ÐºÑ Ð¾Ð¿ÐµÑаÑоÑом «ÑаÑÑÑоÑниÑ», напÑимеÑ, ORDER BY ÑÑÐ¾Ð»Ð±ÐµÑ <-> конÑÑанÑа ? |
returnable | ÐÐ¾Ð¶ÐµÑ Ð»Ð¸ знаÑение ÑÑолбÑа бÑÑÑ Ð¿Ð¾Ð»ÑÑено пÑи ÑканиÑовании ÑолÑко индекÑа? |
search_array | ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ ÑÑÐ¾Ð»Ð±ÐµÑ Ð²Ð½ÑÑÑенними ÑÑедÑÑвами поиÑк ÑÑÐ¾Ð»Ð±ÐµÑ = ANY(маÑÑив)? |
search_nulls | ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¿Ð¾Ð¸Ñк IS NULL и IS NOT NULL? |
ТаблиÑа 9.70. СвойÑÑва индекÑа
| ÐÐ¼Ñ | ÐпиÑание |
|---|---|
clusterable | ÐÐ¾Ð¶ÐµÑ Ð»Ð¸ Ð¸Ð½Ð´ÐµÐºÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² команде CLUSTER? |
index_scan | ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ Ð¸Ð½Ð´ÐµÐºÑ Ð¿ÑоÑÑое ÑканиÑование (не по биÑовой каÑÑе)? |
bitmap_scan | ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ Ð¸Ð½Ð´ÐµÐºÑ ÑканиÑование по биÑовой каÑÑе? |
backward_scan | ÐÐ¾Ð¶ÐµÑ Ð»Ð¸ в пÑоÑеÑÑе ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÐ½ÑÑÑÑÑ Ð½Ð°Ð¿Ñавление (Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки пеÑемеÑÐµÐ½Ð¸Ñ ÐºÑÑÑоÑа FETCH BACKWARD без необÑ
одимоÑÑи маÑеÑиализаÑии)? |
ТаблиÑа 9.71. СвойÑÑва меÑода доÑÑÑпа индекÑа
| ÐÐ¼Ñ | ÐпиÑание |
|---|---|
can_order | ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ меÑод доÑÑÑпа ASC, DESC и ÑвÑзаннÑе клÑÑевÑе Ñлова в CREATE INDEX? |
can_unique | ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ меÑод доÑÑÑпа ÑникалÑнÑе индекÑÑ? |
can_multi_col | ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ меÑод доÑÑÑпа индекÑÑ Ð¿Ð¾ неÑколÑким ÑÑолбÑам? |
can_exclude | ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ меÑод доÑÑÑпа огÑаниÑениÑ-иÑклÑÑениÑ? |
can_include | ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð»Ð¸ меÑод доÑÑÑпа пÑедложение INCLUDE ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE INDEX? |
pg_options_to_table возвÑаÑÐ°ÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð¿Ð°ÑамеÑÑов Ñ
ÑанилиÑа в виде Ð¿Ð°Ñ (имÑ_паÑамеÑÑа/знаÑение_паÑамеÑÑа), когда ей пеÑедаÑÑÑÑ pg_class.reloptions или pg_attribute.attoptions.
pg_tablespace_databases позволÑÐµÑ Ð¸Ð·ÑÑиÑÑ ÑодеÑжимое ÑаблиÑного пÑоÑÑÑанÑÑва. Ðна возвÑаÑÐ°ÐµÑ Ð½Ð°Ð±Ð¾Ñ OID баз даннÑÑ
, обÑекÑÑ ÐºÐ¾ÑоÑÑÑ
ÑазмеÑÐµÐ½Ñ Ð² ÑÑом ÑаблиÑном пÑоÑÑÑанÑÑве. ÐÑли ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÑÑÑоки, ÑÑо ознаÑаеÑ, ÑÑо ÑаблиÑное пÑоÑÑÑанÑÑво не пÑÑÑое и ÑдалиÑÑ ÐµÐ³Ð¾ нелÑзÑ. Ðакие именно обÑекÑÑ Ð½Ð°Ñ
одÑÑÑÑ Ð² ÑаблиÑном пÑоÑÑÑанÑÑве, можно ÑзнаÑÑ, подклÑÑаÑÑÑ Ðº базам даннÑÑ
, OID коÑоÑÑÑ
ÑообÑила pg_tablespace_databases, и анализиÑÑÑ Ð¸Ñ
каÑалоги pg_class.
pg_typeof возвÑаÑÐ°ÐµÑ OID Ñипа даннÑÑ
Ð´Ð»Ñ Ð¿ÐµÑеданного знаÑениÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ ÑазÑеÑÐµÐ½Ð¸Ñ Ð¿Ñоблем или динамиÑеÑкого ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ SQL-запÑоÑов. ÐÑа ÑÑнкÑÐ¸Ñ Ð¾Ð±ÑÑвлена как возвÑаÑаÑÑÐ°Ñ Ñип regtype, коÑоÑÑй ÑвлÑеÑÑÑ Ð¿Ñевдонимом Ñипа OID (Ñм. Раздел 8.19); ÑÑо ознаÑаеÑ, ÑÑо знаÑение ÑÑого Ñипа можно ÑÑавниваÑÑ ÐºÐ°Ðº OID, но вÑводиÑÑÑ Ð¾Ð½Ð¾ как название Ñипа. ÐапÑимеÑ:
SELECT pg_typeof(33);
pg_typeof
-----------
integer
(1 row)
SELECT typlen FROM pg_type WHERE oid = pg_typeof(33);
typlen
--------
4
(1 row)ÐÑÑажение collation for возвÑаÑÐ°ÐµÑ Ð¿Ñавило ÑоÑÑиÑовки Ð´Ð»Ñ Ð¿ÐµÑеданного знаÑениÑ. ÐапÑимеÑ:
SELECT collation for (description) FROM pg_description LIMIT 1;
pg_collation_for
------------------
"default"
(1 row)
SELECT collation for ('foo' COLLATE "de_DE");
pg_collation_for
------------------
"de_DE"
(1 row)ÐÑо знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°ÐºÐ»ÑÑено в кавÑÑки и дополнено ÑÑ ÐµÐ¼Ð¾Ð¹. ÐÑли Ð´Ð»Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð°ÑгÑменÑа Ð½ÐµÑ Ð¿Ñавила ÑоÑÑиÑовки, возвÑаÑаеÑÑÑ Ð·Ð½Ð°Ñение NULL. ÐÑли же пÑавила ÑоÑÑиÑовки не пÑÐ¸Ð¼ÐµÐ½Ð¸Ð¼Ñ Ð´Ð»Ñ Ñипа аÑгÑменÑа, пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð¾Ñибка.
ФÑнкÑии to_regclass, to_regproc, to_regprocedure, to_regoper, to_regoperator, to_regtype, to_regnamespace и to_regrole пÑеобÑазÑÑÑ Ð¸Ð¼ÐµÐ½Ð° оÑноÑений, ÑÑнкÑий, опеÑаÑоÑов, Ñипов, ÑÑ
ем и Ñолей (заданнÑÑ
знаÑением text) в обÑекÑÑ Ñипа regclass, regproc, regprocedure, regoper, regoperator, regtype, regnamespace и regrole, ÑооÑвеÑÑÑвенно. ÐеÑеÑиÑленнÑе ÑÑнкÑии оÑлиÑаÑÑÑÑ Ð¾Ñ ÑвнÑÑ
пÑиведений к ÑÑим Ñипам Ñем, ÑÑо они не пÑинимаÑÑ ÑиÑловÑе OID и возвÑаÑаÑÑ NULL вмеÑÑо оÑибки, еÑли Ð¸Ð¼Ñ Ð½Ðµ найдено (или, в ÑлÑÑае Ñ to_regproc и to_regoper, еÑли Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¸Ð¼ÐµÐ½Ð¸ ÑооÑвеÑÑÑвÑÑÑ Ð½ÐµÑколÑко обÑекÑов).
РТаблиÑе 9.72 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, ÑвÑзаннÑе Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑией и адÑеÑаÑией обÑекÑов баз даннÑÑ .
ТаблиÑа 9.72. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии и адÑеÑаÑии обÑекÑов
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| text | полÑÑÐ°ÐµÑ Ð¾Ð¿Ð¸Ñание обÑекÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ |
| type text, schema text, name text, identity text | полÑÑÐ°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ |
| type text, object_names text[], object_args text[] | полÑÑÐ°ÐµÑ Ð²Ð½ÐµÑнее пÑедÑÑавление адÑеÑа обÑекÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ |
| classid oid, objid oid, objsubid integer | полÑÑÐ°ÐµÑ Ð°Ð´ÑÐµÑ Ð¾Ð±ÑекÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð· его внеÑнего пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ |
pg_describe_object возвÑаÑÐ°ÐµÑ ÑекÑÑовое опиÑание обÑекÑа ÐÐ, иденÑиÑиÑиÑÑемого по OID каÑалога, OID обÑекÑа и ID подобÑекÑа (напÑимеÑ, Ð½Ð¾Ð¼ÐµÑ ÑÑолбÑа в ÑаблиÑе; ID подобÑекÑа Ñавен нÑÐ»Ñ Ð´Ð»Ñ Ð¾Ð±ÑекÑа в Ñелом). ÐÑо опиÑание пÑедназнаÑено Ð´Ð»Ñ Ñеловека и Ð¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑеводиÑÑÑÑ, в завиÑимоÑÑи Ð¾Ñ ÐºÐ¾Ð½ÑигÑÑаÑии ÑеÑвеÑа. С помоÑÑÑ ÑÑой ÑÑнкÑии, напÑимеÑ, можно ÑзнаÑÑ, ÑÑо за обÑÐµÐºÑ Ñ
ÑаниÑÑÑ Ð² каÑалоге pg_depend.
pg_identify_object возвÑаÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, ÑодеÑжаÑÑÑ Ð´Ð¾ÑÑаÑоÑно инÑоÑмаÑии Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñной иденÑиÑикаÑии обÑекÑа ÐРпо OID каÑалога, OID обÑекÑа и ID подобÑекÑа. ÐÑа инÑоÑмаÑÐ¸Ñ Ð¿ÑедназнаÑена Ð´Ð»Ñ Ð¼Ð°ÑÐ¸Ð½Ñ Ð¸ поÑÑÐ¾Ð¼Ñ Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° не пеÑеводиÑÑÑ. СÑÐ¾Ð»Ð±ÐµÑ type ÑодеÑÐ¶Ð¸Ñ Ñип обÑекÑа ÐÐ; schema â Ð¸Ð¼Ñ ÑÑ
емÑ, к коÑоÑой оÑноÑиÑÑÑ Ð¾Ð±ÑÐµÐºÑ (либо NULL Ð´Ð»Ñ Ð¾Ð±ÑекÑов, не оÑноÑÑÑиÑ
ÑÑ Ðº ÑÑ
емам); name â Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа, пÑи необÑ
одимоÑÑи в кавÑÑкаÑ
, коÑоÑое пÑиÑÑÑÑÑвÑеÑ, ÑолÑко еÑли оно (возможно, вмеÑÑе Ñо ÑÑ
емой) однознаÑно иденÑиÑиÑиÑÑÐµÑ Ð¾Ð±ÑÐµÐºÑ (в пÑоÑивном ÑлÑÑае NULL); identity â полнÑй иденÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа, ÑоÑнÑй ÑоÑÐ¼Ð°Ñ ÐºÐ¾ÑоÑого завиÑÐ¸Ñ Ð¾Ñ Ñипа обÑекÑа, а ÐºÐ°Ð¶Ð´Ð°Ñ ÐµÐ³Ð¾ ÑаÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÑеÑÑÑ ÑÑ
емой и заклÑÑаеÑÑÑ Ð² кавÑÑки, еÑли ÑÑебÑеÑÑÑ.
pg_identify_object_as_address возвÑаÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, ÑодеÑжаÑÑÑ Ð´Ð¾ÑÑаÑоÑно инÑоÑмаÑии Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñной иденÑиÑикаÑии обÑекÑа ÐРпо OID каÑалога, OID обÑекÑа и ID подобÑекÑа. ÐÑÐ´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð½Ðµ завиÑÐ¸Ñ Ð¾Ñ ÑекÑÑего ÑеÑвеÑа, Ñо еÑÑÑ Ð¿Ð¾ ней можно иденÑиÑиÑиÑоваÑÑ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÑннÑй обÑÐµÐºÑ Ð½Ð° дÑÑгом ÑеÑвеÑе. Ðоле type ÑодеÑÐ¶Ð¸Ñ Ñип обÑекÑа ÐÐ, а object_names и object_args â ÑекÑÑовÑе маÑÑивÑ, в ÑовокÑпноÑÑи ÑоÑмиÑÑÑÑие ÑÑÑÐ»ÐºÑ Ð½Ð° обÑекÑ. ÐÑи ÑÑи знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑедаÑÑ ÑÑнкÑии pg_get_object_address, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð²Ð½ÑÑÑенний адÑÐµÑ Ð¾Ð±ÑекÑа. ÐÐ°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ ÑвлÑеÑÑÑ Ð¾Ð±ÑаÑной к pg_get_object_address.
pg_get_object_address возвÑаÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, ÑодеÑжаÑÑÑ Ð´Ð¾ÑÑаÑоÑно инÑоÑмаÑии Ð´Ð»Ñ ÑникалÑной иденÑиÑикаÑии обÑекÑа ÐРпо его ÑÐ¸Ð¿Ñ Ð¸ маÑÑивам имÑн и аÑгÑменÑов. Рней возвÑаÑаÑÑÑÑ Ð·Ð½Ð°ÑениÑ, коÑоÑÑе иÑполÑзÑÑÑÑÑ Ð² ÑиÑÑемнÑÑ
каÑалогаÑ
, напÑÐ¸Ð¼ÐµÑ pg_depend, и могÑÑ Ð¿ÐµÑедаваÑÑÑÑ Ð² дÑÑгие ÑиÑÑемнÑе ÑÑнкÑии, напÑÐ¸Ð¼ÐµÑ pg_identify_object или pg_describe_object. Ðоле classid ÑодеÑÐ¶Ð¸Ñ OID ÑиÑÑемного каÑалога, к коÑоÑÐ¾Ð¼Ñ Ð¾ÑноÑиÑÑÑ Ð¾Ð±ÑекÑ; objid â OID Ñамого обÑекÑа, а objsubid â иденÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ð´Ð¾Ð±ÑекÑа или 0 в ÑлÑÑае его оÑÑÑÑÑÑвиÑ. ÐÑа ÑÑнкÑÐ¸Ñ ÑвлÑеÑÑÑ Ð¾Ð±ÑаÑной к pg_identify_object_as_address.
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.73, извлекаÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии, заданнÑе Ð´Ð»Ñ Ð¾Ð±ÑекÑов Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ COMMENT. ÐÑли найÑи комменÑаÑий Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½ÑÑ Ð¿Ð°ÑамеÑÑов не ÑдаÑÑÑÑ, они возвÑаÑаÑÑ NULL.
ТаблиÑа 9.73. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий Ð´Ð»Ñ ÑÑолбÑа ÑаблиÑÑ |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий Ð´Ð»Ñ Ð¾Ð±ÑекÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий Ð´Ð»Ñ Ð¾Ð±ÑекÑа Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ (ÑÑÑаÑевÑÐ°Ñ ÑоÑма) |
| text | полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий Ð´Ð»Ñ ÑазделÑемого обÑекÑа баз даннÑÑ |
col_description возвÑаÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий Ð´Ð»Ñ ÑÑолбÑа Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм номеÑом в ÑаблиÑе Ñ ÑказаннÑм OID. (obj_description нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ ÑÑолбÑов ÑаблиÑÑ, Ñак ÑÑолбÑÑ Ð½Ðµ имеÑÑ ÑобÑÑвеннÑÑ
OID.)
ФÑнкÑÐ¸Ñ obj_description Ñ Ð´Ð²ÑÐ¼Ñ Ð¿Ð°ÑамеÑÑами возвÑаÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий Ð´Ð»Ñ Ð¾Ð±ÑекÑа, имеÑÑего заданнÑй OID и наÑ
одÑÑегоÑÑ Ð² Ñказанном ÑиÑÑемном каÑалоге. ÐапÑимеÑ, obj_description(123456,'pg_class') веÑнÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий Ð´Ð»Ñ ÑаблиÑÑ Ñ OID 123456. ФоÑма obj_description Ñ Ð¾Ð´Ð½Ð¸Ð¼ паÑамеÑÑом пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑолÑко OID. Ðна ÑвлÑеÑÑÑ ÑÑÑаÑевÑей, Ñак как знаÑÐµÐ½Ð¸Ñ OID могÑÑ Ð¿Ð¾Ð²ÑоÑÑÑÑÑÑ Ð² ÑазнÑÑ
ÑиÑÑемнÑÑ
каÑалогаÑ
, и поÑÑÐ¾Ð¼Ñ Ð¾Ð½Ð° Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий Ð´Ð»Ñ Ð´ÑÑгого обÑекÑа.
shobj_description ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ obj_description, но она полÑÑÐ°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии Ð´Ð»Ñ ÑазделÑемÑÑ
обÑекÑов. ÐекоÑоÑÑе ÑиÑÑемнÑе каÑалоги ÑвлÑÑÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑми Ð´Ð»Ñ Ð²ÑеÑ
баз даннÑÑ
в клаÑÑеÑе и опиÑÐ°Ð½Ð¸Ñ Ð¾Ð±ÑекÑов в ниÑ
Ñакже Ñ
ÑанÑÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»Ñно.
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.74, вÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑÑанзакÑиÑÑ ÑеÑвеÑа в ÑоÑме во внеÑнем пÑедÑÑавлении. РоÑновном ÑÑи ÑÑнкÑии иÑполÑзÑÑÑÑÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ, какие ÑÑанзакÑии бÑли заÑикÑиÑÐ¾Ð²Ð°Ð½Ñ Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ Ñнимками ÑоÑÑоÑниÑ.
ТаблиÑа 9.74. ÐденÑиÑикаÑоÑÑ ÑÑанзакÑий и Ñнимков ÑоÑÑоÑниÑ
| ÐÐ¼Ñ | Тип ÑезÑлÑÑаÑа | ÐпиÑание |
|---|---|---|
| bigint | полÑÑÐ°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ ÑекÑÑей ÑÑанзакÑии и пÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð½Ð¾Ð²Ñй, еÑли ÑекÑÑÐ°Ñ ÑÑанзакÑÐ¸Ñ ÐµÐ³Ð¾ не Ð¸Ð¼ÐµÐµÑ |
| bigint | ÑабоÑÐ°ÐµÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñно txid_current(), но возвÑаÑÐ°ÐµÑ NULL, не пÑиÑÐ²Ð°Ð¸Ð²Ð°Ñ Ð½Ð¾Ð²Ñй иденÑиÑикаÑÐ¾Ñ ÑÑанзакÑии, еÑли он еÑÑ Ð½Ðµ пÑиÑвоен |
| txid_snapshot | полÑÑÐ°ÐµÑ ÐºÐ¾Ð´ ÑекÑÑего Ñнимка |
| setof bigint | возвÑаÑÐ°ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ Ð²ÑполнÑÑÑÐ¸Ñ ÑÑ ÑÑанзакÑий в Ñнимке |
| bigint | возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение xmax Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñнимка |
| bigint | возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение xmin Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñнимка |
| boolean | видима ли ÑÑанзакÑÐ¸Ñ Ñ ÑказаннÑм иденÑиÑикаÑоÑом в данном Ñнимке? (ÐºÐ¾Ð´Ñ Ð¿Ð¾Ð´ÑÑанзакÑий не поддеÑживаÑÑÑÑ) |
| text | возвÑаÑÐ°ÐµÑ ÑоÑÑоÑние заданной ÑÑанзакÑии â committed (заÑикÑиÑована), aborted (пÑеÑвана), in progress (вÑполнÑеÑÑÑ) или NULL, еÑли иденÑиÑикаÑÐ¾Ñ ÑÑанзакÑии ÑлиÑком ÑÑаÑÑй |
ÐнÑÑÑенний Ñип иденÑиÑикаÑоÑов ÑÑанзакÑий (xid) Ð¸Ð¼ÐµÐµÑ ÑÐ°Ð·Ð¼ÐµÑ 32 биÑа, поÑÑÐ¾Ð¼Ñ Ð¾Ð½Ð¸ повÑоÑÑÑÑÑÑ ÑеÑез 4 миллиаÑда ÑÑанзакÑий. Ðднако ÑÑи ÑÑнкÑии вÑдаÑÑ 64-биÑнÑе знаÑениÑ, дополненнÑе ÑÑÑÑÑиком «ÑпоÑ
и», Ñак ÑÑо ÑÑи знаÑÐµÐ½Ð¸Ñ Ð¾ÑÑанÑÑÑÑ ÑникалÑнÑми на пÑоÑÑжении вÑей жизни ÑеÑвеÑа. ÐÑполÑзÑемÑй ÑÑими ÑÑнкÑиÑми Ñип даннÑÑ
txid_snapshot ÑоÑ
ÑанÑÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ видимоÑÑи ÑÑанзакÑий в опÑеделÑннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени. Ðго ÑоÑÑав опиÑан в ТаблиÑе 9.75.
ТаблиÑа 9.75. СоÑÑав инÑоÑмаÑии о Ñнимке
| ÐÐ¼Ñ | ÐпиÑание |
|---|---|
xmin | ÐденÑиÑикаÑÐ¾Ñ Ñамой Ñанней ÑÑанзакÑии (txid) из акÑивнÑÑ . ÐÑе пÑедÑдÑÑие ÑÑанзакÑии либо заÑикÑиÑÐ¾Ð²Ð°Ð½Ñ Ð¸ видимÑ, либо оÑÐ¼ÐµÐ½ÐµÐ½Ñ Ð¸ меÑÑвÑ. |
xmax | ÐеÑвÑй txid из еÑÑ Ð½Ðµ назнаÑеннÑÑ . Ðа Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñнимка не бÑло запÑÑеннÑÑ (а знаÑÐ¸Ñ Ð¸ видимÑÑ ) ÑÑанзакÑий Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑом, болÑÑим или ÑавнÑм данномÑ. |
xip_list | СпиÑок иденÑиÑикаÑоÑов ÑÑанзакÑий, акÑивнÑÑ
в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñнимка. Ðн вклÑÑÐ°ÐµÑ ÑолÑко иденÑиÑикаÑоÑÑ Ñ Ð½Ð¾Ð¼ÐµÑами Ð¾Ñ xmin до xmax; Ñ
оÑÑ Ñже могÑÑ Ð±ÑÑÑ ÑÑанзакÑии Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑами болÑÑе xmax. ÐÑли в ÑÑом ÑпиÑке не оказÑваеÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑа ÑÑанзакÑии xmin <= txid < xmax, ÑÑо ознаÑаеÑ, ÑÑо она Ñже не вÑполнÑлаÑÑ Ðº моменÑÑ Ñнимка и, Ñаким обÑазом, видима или меÑÑва, в завиÑимоÑÑи Ð¾Ñ Ñипа завеÑÑениÑ. ÐденÑиÑикаÑоÑÑ Ð¿Ð¾Ð´ÑÑанзакÑий в ÑÑÐ¾Ñ ÑпиÑок не вклÑÑаÑÑÑÑ. |
Ð ÑекÑÑовом виде txid_snapshot пÑедÑÑавлÑеÑÑÑ ÐºÐ°Ðº . ÐапÑимеÑ, xmin:xmax:xip_list10:20:10,14,15 ознаÑÐ°ÐµÑ xmin=10, xmax=20, xip_list=10, 14, 15.
ФÑнкÑÐ¸Ñ txid_status(bigint) вÑдаÑÑ ÑоÑÑоÑние ÑикÑаÑии поÑледней ÑÑанзакÑии. ÐÑовеÑÑÑ ÐµÐ³Ð¾, пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¾Ð¿ÑеделиÑÑ, бÑла ли ÑÑанзакÑÐ¸Ñ Ð·Ð°ÑикÑиÑована или пÑеÑвана, когда пÑиложение оÑклÑÑаеÑÑÑ Ð¾Ñ ÑеÑвеÑа баз даннÑÑ
в пÑоÑеÑÑе вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ COMMIT. СоÑÑоÑние ÑÑанзакÑии Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑледÑÑÑим: in progress (вÑполнÑеÑÑÑ), committed (заÑикÑиÑована) и aborted (пÑеÑвана), еÑли ÑолÑко ÑÑанзакÑÐ¸Ñ Ð½Ðµ наÑÑолÑко ÑÑаÑа, ÑÑÐ¾Ð±Ñ ÑиÑÑема Ñдалила инÑоÑмаÑÐ¸Ñ Ð¾ ÐµÑ ÑоÑÑоÑнии ÑикÑиÑованиÑ. ÐÑли же она Ñак ÑÑаÑа, ÑÑо Ñпоминаний о ней в ÑиÑÑеме не оÑÑалоÑÑ Ð¸ инÑоÑмаÑÐ¸Ñ Ð¾ ÑикÑаÑии поÑеÑÑна, ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NULL. ÐамеÑÑÑе, ÑÑо Ð´Ð»Ñ Ð¿Ð¾Ð´Ð³Ð¾ÑовленнÑÑ
ÑÑанзакÑий возвÑаÑаеÑÑÑ ÑоÑÑоÑние in progress; пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑовеÑÑÑÑ pg_prepared_xacts, еÑли им нÑжно опÑеделиÑÑ, ÑвлÑеÑÑÑ Ð»Ð¸ ÑÑанзакÑÐ¸Ñ Â«txid» подгоÑовленной.
ФÑнкÑии, показаннÑе в ТаблиÑе 9.76, вÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± Ñже заÑикÑиÑованнÑÑ ÑÑанзакÑиÑÑ . Ðни возвÑаÑаÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñе даннÑе, ÑолÑко когда вклÑÑÑн паÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии track_commit_timestamp и ÑолÑко Ð´Ð»Ñ ÑÑанзакÑий, заÑикÑиÑованнÑÑ Ð¿Ð¾Ñле его вклÑÑениÑ.
ТаблиÑа 9.76. ÐнÑоÑмаÑÐ¸Ñ Ð¾ ÑикÑаÑии ÑÑанзакÑий
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.77, вÑводÑÑ ÑвойÑÑва, ÑÑÑановленнÑе командой initdb, напÑимеÑ, веÑÑÐ¸Ñ ÐºÐ°Ñалога. Ðни Ñакже вÑводÑÑ ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ ÑабоÑе жÑÑнала пÑедзапиÑи и конÑÑолÑнÑÑ
ÑоÑкаÑ
. ÐÑа инÑоÑмаÑÐ¸Ñ Ð¾ÑноÑиÑÑÑ ÐºÐ¾ вÑÐµÐ¼Ñ ÐºÐ»Ð°ÑÑеÑÑ, а не к оÑделÑной базе даннÑÑ
. ÐаннÑе ÑÑнкÑии вÑдаÑÑ Ð¿ÑакÑиÑеÑки вÑÑ ÑÑ Ð¶Ðµ инÑоÑмаÑиÑ, и из Ñого же иÑÑоÑника, ÑÑо и pg_controldata, но в ÑоÑме, более подÑ
одÑÑей Ð´Ð»Ñ ÑÑнкÑий SQL.
ТаблиÑа 9.77. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñми
ФÑнкÑÐ¸Ñ pg_control_checkpoint возвÑаÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, показаннÑÑ Ð² ТаблиÑе 9.78.
ТаблиÑа 9.78. СÑолбÑÑ ÑезÑлÑÑаÑа pg_control_checkpoint
| ÐÐ¼Ñ ÑÑолбÑа | Тип даннÑÑ |
|---|---|
checkpoint_lsn | pg_lsn |
redo_lsn | pg_lsn |
redo_wal_file | text |
timeline_id | integer |
prev_timeline_id | integer |
full_page_writes | boolean |
next_xid | text |
next_oid | oid |
next_multixact_id | xid |
next_multi_offset | xid |
oldest_xid | xid |
oldest_xid_dbid | oid |
oldest_active_xid | xid |
oldest_multi_xid | xid |
oldest_multi_dbid | oid |
oldest_commit_ts_xid | xid |
newest_commit_ts_xid | xid |
checkpoint_time | timestamp with time zone |
ФÑнкÑÐ¸Ñ pg_control_system возвÑаÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, показаннÑÑ Ð² ТаблиÑе 9.79.
ТаблиÑа 9.79. СÑолбÑÑ ÑезÑлÑÑаÑа pg_control_system
| ÐÐ¼Ñ ÑÑолбÑа | Тип даннÑÑ |
|---|---|
pg_control_version | integer |
catalog_version_no | integer |
system_identifier | bigint |
pg_control_last_modified | timestamp with time zone |
pg_control_edition | text |
ФÑнкÑÐ¸Ñ pg_control_init возвÑаÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, показаннÑÑ Ð² ТаблиÑе 9.80.
ТаблиÑа 9.80. СÑолбÑÑ ÑезÑлÑÑаÑа pg_control_init
| ÐÐ¼Ñ ÑÑолбÑа | Тип даннÑÑ |
|---|---|
max_data_alignment | integer |
database_block_size | integer |
blocks_per_segment | integer |
wal_block_size | integer |
bytes_per_wal_segment | integer |
max_identifier_length | integer |
max_index_columns | integer |
max_toast_chunk_size | integer |
large_object_chunk_size | integer |
float4_pass_by_value | boolean |
float8_pass_by_value | boolean |
data_page_checksum_version | integer |
icu_version | text |
ÐÑимеÑание
icu_version возвÑаÑÐ°ÐµÑ NULL, еÑли Postgres Pro ÑобÑан без поддеÑжки ICU.
ФÑнкÑÐ¸Ñ pg_control_recovery возвÑаÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ, показаннÑÑ Ð² ТаблиÑе 9.81
ТаблиÑа 9.81. СÑолбÑÑ ÑезÑлÑÑаÑа pg_control_recovery
| ÐÐ¼Ñ ÑÑолбÑа | Тип даннÑÑ |
|---|---|
min_recovery_end_lsn | pg_lsn |
min_recovery_end_timeline | integer |
backup_start_lsn | pg_lsn |
backup_end_lsn | pg_lsn |
end_of_backup_record_required | boolean |