9.26. СиÑÑемнÑе инÑоÑмаÑионнÑе ÑÑнкÑии и опеÑаÑоÑÑ
РТаблиÑе 9.63 пеÑеÑиÑлен ÑÑд ÑÑнкÑий, пÑедназнаÑеннÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о ÑекÑÑем ÑеанÑе и ÑиÑÑеме.
Рдополнение к пеÑеÑиÑленнÑм здеÑÑ ÑÑнкÑиÑм ÑÑÑеÑÑвÑÑÑ Ñакже ÑÑнкÑии, ÑвÑзаннÑе Ñ Ð¿Ð¾Ð´ÑиÑÑемой ÑÑаÑиÑÑики, коÑоÑÑе Ñоже пÑедоÑÑавлÑÑÑ ÑиÑÑемнÑÑ Ð¸Ð½ÑоÑмаÑиÑ. ÐодÑобнее они ÑаÑÑмаÑÑиваÑÑÑÑ Ð² ÐодÑазделе 26.2.2.
ТаблиÑа 9.63. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о ÑеанÑе
ФÑнкÑÐ¸Ñ ÐпиÑание |
|---|
ÐÑдаÑÑ Ð¸Ð¼Ñ ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. (Ð ÑÑандаÑÑе SQL Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
назÑваÑÑÑÑ Â«ÐºÐ°Ñалогами», поÑÑÐ¾Ð¼Ñ ÑÑандаÑÑÑ ÑооÑвеÑÑÑвÑÐµÑ Ð½Ð°Ð¿Ð¸Ñание |
ÐÑдаÑÑ ÑекÑÑ Ð·Ð°Ð¿ÑоÑа, вÑполнÑемого в даннÑй моменÑ, в Ñом виде, в каком его пеÑедал ÐºÐ»Ð¸ÐµÐ½Ñ (Ð¼Ð¾Ð¶ÐµÑ ÑоÑÑоÑÑÑ Ð¸Ð· неÑколÑÐºÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑов). |
Ðналог |
ÐÑдаÑÑ Ð¸Ð¼Ñ Ð¿ÐµÑвой ÑÑ ÐµÐ¼Ñ Ð² пÑÑи поиÑка (или знаÑение NULL, еÑли пÑÑÑ Ð¿Ð¾Ð¸Ñка пÑÑÑой). Ð ÑÑÑ ÑÑ ÐµÐ¼Ñ Ð±ÑдÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ ÑаблиÑÑ Ð¸ дÑÑгие обÑекÑÑ, пÑи Ñоздании коÑоÑÑÑ ÑÑ ÐµÐ¼Ð° не ÑказÑваеÑÑÑ Ñвно. |
ÐÑдаÑÑ Ð¼Ð°ÑÑив имÑн вÑеÑ
ÑÑ
ем, в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¿ÑедÑÑавленнÑÑ
в дейÑÑвÑÑÑем пÑÑи поиÑка, по поÑÑÐ´ÐºÑ Ð¸Ñ
пÑиоÑиÑеÑа. (ÐлеменÑÑ ÑекÑÑего знаÑÐµÐ½Ð¸Ñ search_path, коÑоÑÑм не ÑооÑвеÑÑÑвÑÑÑ ÑÑÑеÑÑвÑÑÑие ÑÑ
емÑ, опÑÑкаÑÑÑÑ). ÐÑли логиÑеÑкий аÑгÑÐ¼ÐµÐ½Ñ Ñавен |
ÐÑдаÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð² ÑекÑÑем конÑекÑÑе вÑполнениÑ. |
ÐÑдаÑÑ IP-адÑÐµÑ ÑекÑÑего клиенÑа либо |
ÐÑдаÑÑ Ð½Ð¾Ð¼ÐµÑ TCP-поÑÑа ÑекÑÑего клиенÑа либо |
ÐÑдаÑÑ IP-адÑеÑ, ÑеÑез коÑоÑÑй ÑеÑÐ²ÐµÑ Ð¿ÑинÑл ÑекÑÑее подклÑÑение, либо NULL, еÑли ÑекÑÑее подклÑÑение ÑÑÑановлено ÑеÑез Unix-ÑокеÑ. |
ÐÑдаÑÑ Ð½Ð¾Ð¼ÐµÑ TCP-поÑÑа, ÑеÑез коÑоÑÑй ÑеÑÐ²ÐµÑ Ð¿ÑинÑл ÑекÑÑее подклÑÑение, либо |
ÐÑдаÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ ÑеÑвеÑного пÑоÑеÑÑа, обÑлÑживаÑÑего ÑекÑÑий ÑеанÑ. |
ÐÑдаÑÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑами пÑоÑеÑÑов ÑеанÑов, коÑоÑÑе блокиÑÑÑÑ ÑеÑвеÑнÑй пÑоÑеÑÑ Ñ ÑказаннÑм иденÑиÑикаÑоÑом, либо пÑÑÑой маÑÑив, еÑли ÑказаннÑй ÑеÑвеÑнÑй пÑоÑеÑÑ Ð½Ðµ найден или не заблокиÑован. Ðдин ÑеÑвеÑнÑй пÑоÑеÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÑÐµÑ Ð´ÑÑгой, еÑли он либо ÑдеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ, конÑликÑÑÑÑÑÑ Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовкой, запÑаÑиваемой вÑоÑÑм (жÑÑÑÐºÐ°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовка), либо Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ, коÑоÑÐ°Ñ Ð²Ñзвала Ð±Ñ ÐºÐ¾Ð½ÑÐ»Ð¸ÐºÑ Ñ Ð·Ð°Ð¿ÑоÑом блокиÑовки заблокиÑованного пÑоÑеÑÑа и наÑ
одиÑÑÑ Ð¿ÐµÑед ней в оÑеÑеди Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ (мÑÐ³ÐºÐ°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовка). ÐÑи ÑаÑпаÑаллеливании запÑоÑов ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ñегда вÑдаÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñе клиенÑом иденÑиÑикаÑоÑÑ Ð¿ÑоÑеÑÑов (Ñо еÑÑÑ, ÑезÑлÑÑаÑÑ Ð§Ð°ÑÑÑе вÑÐ·Ð¾Ð²Ñ ÑÑой ÑÑнкÑии могÑÑ Ð¾ÑÑазиÑÑÑÑ Ð½Ð° пÑоизводиÑелÑноÑÑи Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , Ñак как ей нÑжен монополÑнÑй доÑÑÑп к обÑÐµÐ¼Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑа блокиÑовок, пÑÑÑÑ Ð¸ на коÑоÑкое вÑемÑ. |
ÐÑдаÑÑ Ð²ÑемÑ, когда в поÑледний Ñаз ÑеÑÐ²ÐµÑ Ð·Ð°Ð³ÑÑжал ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии. (ÐÑли ÑекÑÑий ÑÐµÐ°Ð½Ñ Ð½Ð°ÑалÑÑ ÑанÑÑе, она возвÑаÑÐ°ÐµÑ Ð²ÑемÑ, когда ÑÑи ÑÐ°Ð¹Ð»Ñ Ð±Ñли пеÑезагÑÑÐ¶ÐµÐ½Ñ Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑеанÑа, Ñак ÑÑо в ÑазнÑÑ ÑеанÑÐ°Ñ ÑÑо знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ ÑазлиÑаÑÑÑÑ. РпÑоÑивном ÑлÑÑае ÑÑо бÑÐ´ÐµÑ Ð²ÑемÑ, когда ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии ÑÑиÑал главнÑй пÑоÑеÑÑ.) |
ÐÑдаÑÑ Ð¿ÑÑÑ Ðº ÑÐ°Ð¹Ð»Ñ Ð¶ÑÑнала, в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¸ÑполÑзÑÐµÐ¼Ð¾Ð¼Ñ ÑбоÑÑиком ÑообÑений. ÐÑÐ¾Ñ Ð¿ÑÑÑ ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· пÑÑи каÑалога log_directory и имени конкÑеÑного Ñайла. ÐÑли ÑбоÑÑик ÑообÑений оÑклÑÑÑн, вÑдаÑÑÑÑ Ð·Ð½Ð°Ñение |
ÐÑдаÑÑ OID вÑеменной ÑÑ ÐµÐ¼Ñ ÑекÑÑего ÑеанÑа или 0, еÑли Ñакой ÑÑ ÐµÐ¼Ñ Ð½ÐµÑ (в ÑÐ°Ð¼ÐºÐ°Ñ ÑеанÑа не ÑоздавалиÑÑ Ð²ÑеменнÑе ÑаблиÑÑ). |
ÐÑдаÑÑ true, еÑли заданнÑй OID оÑноÑиÑÑÑ Ðº вÑеменной ÑÑ ÐµÐ¼Ðµ дÑÑгого ÑеанÑа. (ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, напÑÐ¸Ð¼ÐµÑ Ð´Ð»Ñ Ð¸ÑклÑÑÐµÐ½Ð¸Ñ Ð²ÑеменнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð´ÑÑÐ³Ð¸Ñ ÑеанÑов из обÑего ÑпиÑка пÑи пÑоÑмоÑÑе ÑÐ°Ð±Ð»Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .) |
ÐÑдаÑÑ true, еÑли в данном ÑеанÑе доÑÑÑпна JIT-компилÑÑÐ¸Ñ (Ñм. ÐлавÑ 30) и паÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии jit вклÑÑÑн. |
ÐÑдаÑÑ ÑпиÑок имÑн каналов аÑÐ¸Ð½Ñ ÑоннÑÑ Ñведомлений, по коÑоÑÑм ÑекÑÑий ÑÐµÐ°Ð½Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑигналÑ. |
ÐÑдаÑÑ Ð´Ð¾Ð»Ñ (0â1) макÑималÑного ÑазмеÑа оÑеÑеди аÑÐ¸Ð½Ñ ÑоннÑÑ Ñведомлений, в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð·Ð°Ð½ÑÑÑÑ ÑведомлениÑми, ожидаÑÑими обÑабоÑки. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº LISTEN и NOTIFY. |
ÐÑдаÑÑ Ð²ÑемÑ, когда бÑл запÑÑен ÑеÑвеÑ. |
ÐÑдаÑÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑами пÑоÑеÑÑов ÑеанÑов, коÑоÑÑе блокиÑÑÑÑ ÑеÑвеÑнÑй пÑоÑеÑÑ Ñ ÑказаннÑм иденÑиÑикаÑоÑом, не Ð´Ð°Ð²Ð°Ñ ÐµÐ¼Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑй Ñнимок, либо вÑдаÑÑ Ð¿ÑÑÑой маÑÑив, еÑли Ñакой ÑеÑвеÑнÑй пÑоÑеÑÑ Ð½Ðµ найден или он не заблокиÑован. СеанÑ, вÑполнÑÑÑий ÑÑанзакÑÐ¸Ñ ÑÑÐ¾Ð²Ð½Ñ Ð§Ð°ÑÑÑе вÑÐ·Ð¾Ð²Ñ ÑÑой ÑÑнкÑии могÑÑ Ð¾ÑÑазиÑÑÑÑ Ð½Ð° пÑоизводиÑелÑноÑÑи ÑеÑвеÑа, Ñак как ей нÑжен доÑÑÑп к обÑÐµÐ¼Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑа пÑедикаÑнÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовок, пÑÑÑÑ Ð¸ на коÑоÑкое вÑемÑ. |
ÐÑдаÑÑ ÑекÑÑий ÑÑÐ¾Ð²ÐµÐ½Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾ÑÑи в ÑÑиггеÑÐ°Ñ Postgres Pro (0, еÑли ÑÑа ÑÑнкÑÐ¸Ñ Ð²ÑзÑваеÑÑÑ Ð½Ðµ из Ñела ÑÑиггеÑа, непоÑÑедÑÑвенно или коÑвенно). |
ÐÑдаÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑеанÑа. |
Ðналог |
ÐÑдаÑÑ ÑекÑÑовÑÑ ÑÑÑокÑ, опиÑÑваÑÑÑÑ Ð²ÐµÑÑÐ¸Ñ ÑеÑвеÑа PostgreSQL. ÐÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ñакже можно полÑÑиÑÑ Ð¸Ð· пеÑеменной server_version или, в более маÑинно-оÑиенÑиÑованном ÑоÑмаÑе, из пеÑеменной server_version_num. ÐÑи ÑазÑабоÑке пÑогÑамм ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ ÑÑнкÑÐ¸Ñ |
ÐÑдаÑÑ ÑекÑÑовÑÑ ÑÑÑокÑ, опиÑÑваÑÑÑÑ Ð²ÐµÑÑÐ¸Ñ ÑеÑвеÑа Postgres Pro. |
ÐÑдаÑÑ ÑекÑÑовÑÑ ÑÑÑокÑ, опиÑÑваÑÑÑÑ ÑедакÑÐ¸Ñ Postgres Pro, напÑÐ¸Ð¼ÐµÑ |
ÐÑдаÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода, из коÑоÑого ÑкомпилиÑован 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 они не ÑазлиÑаÑÑÑÑ, Ñак как полÑзоваÑели и Ñоли обÑÐµÐ´Ð¸Ð½ÐµÐ½Ñ Ð² единÑÑ ÑÑÑноÑÑÑ.)
РТаблиÑе 9.64 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ ÑÑнкÑии, позволÑÑÑие пÑогÑаммно пÑовеÑиÑÑ Ð¿Ñава доÑÑÑпа к обÑекÑам. (ÐодÑобнее о пÑаваÑ
ÑаÑÑказÑваеÑÑÑ Ð² Разделе 5.7.) ÐÑим ÑÑнкÑиÑм в каÑеÑÑве иденÑиÑикаÑоÑа полÑзоваÑелÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑого запÑаÑиваÑÑÑÑ Ð¿Ñава, можно пеÑедаÑÑ ÐµÐ³Ð¾ Ð¸Ð¼Ñ Ð¸Ð»Ð¸ OID (pg_authid.oid), а Ñакже можно пеÑедаÑÑ public (ÑÑо бÑÐ´ÐµÑ ÑказÑваÑÑ Ð½Ð° пÑевдоÑÐ¾Ð»Ñ PUBLIC). ÐÑоме Ñого, аÑгÑÐ¼ÐµÐ½Ñ user можно полноÑÑÑÑ Ð¾Ð¿ÑÑÑиÑÑ, Ñогда бÑÐ´ÐµÑ Ð¿Ð¾Ð´ÑазÑмеваÑÑÑÑ current_user. ÐбÑекÑ, пÑава Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к коÑоÑÐ¾Ð¼Ñ Ð·Ð°Ð¿ÑаÑиваÑÑÑÑ, Ñакже можно задаÑÑ Ð¿Ð¾ имени или по OID. Ðогда ÑказÑваеÑÑÑ Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа, его можно дополниÑÑ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑÑ
емÑ, еÑли ÑÑо ÑмеÑÑно. ÐапÑаÑиваемое пÑаво запиÑÑваеÑÑÑ ÑекÑÑовой ÑÑÑокой, коÑоÑÐ°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° задаваÑÑ Ð¾Ð´Ð½Ð¾ из пÑав доÑÑÑпа, ÑооÑвеÑÑÑвÑÑÑиÑ
ÑÐ¸Ð¿Ñ Ð¾Ð±ÑекÑа (напÑимеÑ, SELECT). ÐополниÑелÑно к Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ñава можно добавиÑÑ WITH GRANT OPTION и пÑовеÑиÑÑ, ÑазÑеÑено ли полÑзоваÑÐµÐ»Ñ Ð¿ÐµÑедаваÑÑ ÑÑо пÑаво дÑÑгим. ÐÑоме Ñого, в одном паÑамеÑÑе можно пеÑеÑиÑлиÑÑ Ð½ÐµÑколÑко пÑав ÑеÑез запÑÑÑÑ, и Ñогда ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ¸Ñ true, еÑли полÑзоваÑÐµÐ»Ñ Ð¸Ð¼ÐµÐµÑ ÐºÐ°ÐºÐ¸Ðµ-либо из ниÑ
. (РегиÑÑÑ Ð² названии пÑав не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑениÑ, а Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸ (но не внÑÑÑи) ÑазÑеÑÐµÐ½Ñ Ð¿ÑобелÑнÑе ÑимволÑ.) ÐаÑа пÑимеÑов:
SELECT has_table_privilege('myschema.mytable', 'select');
SELECT has_table_privilege('joe', 'mytable', 'INSERT, SELECT WITH GRANT OPTION');ТаблиÑа 9.64. ФÑнкÑии Ð´Ð»Ñ Ð¿ÑовеÑки пÑав доÑÑÑпа
ФÑнкÑÐ¸Ñ ÐпиÑание |
|---|
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-либо ÑÑолбÑа ÑаблиÑÑ? ÐÑÐ²ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑй, когда он Ð¸Ð¼ÐµÐµÑ ÑÑо пÑаво Ð´Ð»Ñ Ð²Ñей ÑаблиÑÑ Ð¸Ð»Ð¸ ÐµÐ¼Ñ Ð´Ð°Ð½Ð¾ ÑооÑвеÑÑÑвÑÑÑее пÑаво на ÑÑовне ÑÑолбÑов Ñ
оÑÑ Ð±Ñ Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑÑолбÑа. ÐозможнÑе пÑава: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑÑолбÑа ÑаблиÑÑ? ÐÑÐ²ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑй, когда он Ð¸Ð¼ÐµÐµÑ ÑÑо пÑаво Ð´Ð»Ñ Ð²Ñей ÑаблиÑÑ Ð¸Ð»Ð¸ ÐµÐ¼Ñ Ð´Ð°Ð½Ð¾ ÑооÑвеÑÑÑвÑÑÑее пÑаво на ÑÑовне ÑÑолбÑа. СÑÐ¾Ð»Ð±ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð¿Ð¾ имени или номеÑÑ Ð°ÑÑибÑÑа ( |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñказанное пÑаво в базе даннÑÑ
? ÐозможнÑе пÑава: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ Ð¾Ð±ÑÑÑки ÑÑоÑонниÑ
даннÑÑ
? Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко одно пÑаво: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ ÑÑнкÑии? Ðозможно единÑÑвенное пÑаво: ÐÑи Ñказании ÑÑнкÑии по имени, а не по OID, допÑÑкаÑÑÑÑ Ñе же вÑ
однÑе знаÑениÑ, ÑÑо и Ð´Ð»Ñ Ñипа SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute'); |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ ÑзÑка? Ðозможно единÑÑвенное пÑаво: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ ÑÑ
емÑ? ÐозможнÑе пÑава: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи? ÐозможнÑе пÑава: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ ÑÑоÑоннего ÑеÑвеÑа? Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко одно пÑаво: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ ÑаблиÑÑ? ÐозможнÑе пÑава: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ ÑаблиÑного пÑоÑÑÑанÑÑва? Ðозможно единÑÑвенное пÑаво: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ Ñипа даннÑÑ
? Ðозможно единÑÑвенное пÑаво: |
ÐÐ¼ÐµÐµÑ Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ð¿Ñаво Ð´Ð»Ñ Ñоли? ÐозможнÑе пÑава: |
ÐейÑÑвÑÐµÑ Ð»Ð¸ заÑиÑа на ÑÑовне ÑÑÑок Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑаблиÑÑ Ð² конÑекÑÑе ÑекÑÑего полÑзоваÑÐµÐ»Ñ Ð² ÑекÑÑем окÑÑжении? |
РТаблиÑе 9.65 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð¾Ð¿ÐµÑаÑоÑÑ, пÑедназнаÑеннÑе Ð´Ð»Ñ ÑабоÑÑ Ñ Ñипом aclitem, коÑоÑÑй пÑедÑÑавлÑÐµÑ Ð² ÑиÑÑемном каÑалоге пÑава доÑÑÑпа. Ð ÑодеÑжании знаÑений ÑÑого Ñипа ÑаÑÑказÑваеÑÑÑ Ð² Разделе 5.7.
ТаблиÑа 9.65. ÐпеÑаÑоÑÑ Ð´Ð»Ñ Ñипа aclitem
РТаблиÑе 9.66 пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑÑнкÑии, пÑедназнаÑеннÑе Ð´Ð»Ñ ÑабоÑÑ Ñ Ñипом aclitem.
ТаблиÑа 9.66. ФÑнкÑии Ð´Ð»Ñ Ñипа aclitem
ФÑнкÑÐ¸Ñ ÐпиÑание |
|---|
ÐÑдаÑÑ Ð¼Ð°ÑÑив Ñ ÑлеменÑами |
ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив |
ÐонÑÑÑÑиÑÑÐµÑ Ð·Ð½Ð°Ñение |
РТаблиÑе 9.67 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ ÑÑнкÑии, опÑеделÑÑÑие видимоÑÑÑ Ð¾Ð±ÑекÑа Ñ ÑекÑÑим пÑÑÑм поиÑка ÑÑ ÐµÐ¼. РпÑимеÑÑ, ÑаблиÑа ÑÑиÑаеÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹, еÑли ÑодеÑжаÑÐ°Ñ ÐµÑ ÑÑ ÐµÐ¼Ð° вклÑÑена в пÑÑÑ Ð¿Ð¾Ð¸Ñка и Ð½ÐµÑ Ð´ÑÑгой ÑаблиÑÑ Ñ Ñем же именем, коÑоÑÐ°Ñ Ð±Ñла Ð±Ñ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° в ÑÑом пÑÑи ÑанÑÑе. ÐÑÑгими Ñловами, к ÑÑой ÑаблиÑе можно бÑÐ´ÐµÑ Ð¾Ð±ÑаÑиÑÑÑÑ Ð¿ÑоÑÑо по ÐµÑ Ð¸Ð¼ÐµÐ½Ð¸, без Ñвного ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑÑ ÐµÐ¼Ñ. ÐÑоÑмоÑÑеÑÑ ÑпиÑок вÑÐµÑ Ð²Ð¸Ð´Ð¸Ð¼ÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ Ñак:
SELECT relname FROM pg_class WHERE pg_table_is_visible(oid);
ÐбÑекÑ, пÑедÑÑавлÑÑÑий ÑÑнкÑÐ¸Ñ Ð¸ опеÑаÑоÑ, ÑÑиÑаÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñм в пÑÑи поиÑка, еÑли пÑи пÑоÑмоÑÑе пÑÑи не Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿ÑедÑеÑÑвÑÑÑий ÐµÐ¼Ñ Ð´ÑÑгой обÑÐµÐºÑ Ñ Ñем же именем и Ñипами аÑгÑменÑов. ÐÐ»Ñ ÑемейÑÑв и клаÑÑов опеÑаÑоÑов помимо имени обÑекÑа во внимание пÑинимаеÑÑÑ Ñакже ÑвÑзаннÑй меÑод доÑÑÑпа к индекÑÑ.
ТаблиÑа 9.67. ФÑнкÑии Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи
ÐÑем ÑÑим ÑÑнкÑиÑм должен пеÑедаваÑÑÑÑ OID пÑовеÑÑемого обÑекÑа. ÐÑли Ð²Ñ Ñ
оÑиÑе пÑовеÑиÑÑ Ð¾Ð±ÑÐµÐºÑ Ð¿Ð¾ имени, Ñдобнее иÑполÑзоваÑÑ ÑипÑ-пÑÐµÐ²Ð´Ð¾Ð½Ð¸Ð¼Ñ OID (regclass, regtype, regprocedure, regoperator, regconfig или regdictionary), напÑимеÑ:
SELECT pg_type_is_visible('myschema.widget'::regtype);ÐамеÑÑÑе, ÑÑо пÑовеÑÑÑÑ Ñаким ÑпоÑобом имена без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑÑ ÐµÐ¼Ñ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð±Ð¾Ð»ÑÑого ÑмÑÑла â еÑли Ð¸Ð¼Ñ ÑдаÑÑÑÑ ÑаÑпознаÑÑ, знаÑÐ¸Ñ Ð¸ обÑÐµÐºÑ Ð±ÑÐ´ÐµÑ Ð²Ð¸Ð´Ð¸Ð¼Ñм.
РТаблиÑе 9.68 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, извлекаÑÑие инÑоÑмаÑÐ¸Ñ Ð¸Ð· ÑиÑÑемнÑÑ ÐºÐ°Ñалогов.
ТаблиÑа 9.68. ФÑнкÑии Ð´Ð»Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº ÑиÑÑемнÑм каÑалогам
ФÑнкÑÐ¸Ñ ÐпиÑание |
|---|
ÐÑдаÑÑ Ð² ÑоÑмаÑе SQL Ð¸Ð¼Ñ Ñипа даннÑÑ , опÑеделÑемого по OID и, возможно, модиÑикаÑоÑÑ Ñипа. ÐÑли модиÑикаÑÐ¾Ñ Ð½ÐµÐ¸Ð·Ð²ÐµÑÑен, вмеÑÑо него можно пеÑедаÑÑ NULL. |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, ÑоздаÑÑÑÑ Ð¾Ð³ÑаниÑение. (ТекÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ ÑвлÑеÑÑÑ Ð¸Ð·Ð½Ð°ÑалÑнÑм, он воÑÑÑанавливаеÑÑÑ Ð¿ÑÑÑм декомпилÑÑии.) |
ÐекомпилиÑÑÐµÑ Ð²Ð½ÑÑÑеннÑÑ ÑоÑÐ¼Ñ Ð²ÑÑажений, Ð½Ð°Ñ Ð¾Ð´ÑÑÐ¸Ñ ÑÑ Ð² ÑиÑÑемнÑÑ ÐºÐ°ÑÐ°Ð»Ð¾Ð³Ð°Ñ , напÑимеÑ, вÑÑажений, задаÑÑÐ¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли вÑÑажение Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Vars (пеÑеменнÑе), пеÑедайÑе во вÑоÑом паÑамеÑÑе OID оÑноÑениÑ, к коÑоÑÐ¾Ð¼Ñ Ð¾Ð±ÑаÑаеÑÑÑ Ð´Ð°Ð½Ð½Ð¾Ðµ вÑÑажение; в пÑоÑивном ÑлÑÑае доÑÑаÑоÑно пеÑедаÑÑ 0. |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, ÑоздаÑÑÑÑ ÑÑнкÑÐ¸Ñ Ð¸Ð»Ð¸ пÑоÑедÑÑÑ. (ТекÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ ÑвлÑеÑÑÑ Ð¸Ð·Ð½Ð°ÑалÑнÑм, он воÑÑÑанавливаеÑÑÑ Ð¿ÑÑÑм декомпилÑÑии.) Ð ÑезÑлÑÑаÑе вÑдаÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑеннÑй опеÑаÑÐ¾Ñ |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑпиÑок аÑгÑменÑов Ð´Ð»Ñ ÑÑнкÑии или пÑоÑедÑÑÑ Ð² Ñом виде, в каком он должен задаваÑÑÑÑ Ð² команде |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑпиÑок аÑгÑменÑов, необÑ
одимÑй Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñной иденÑиÑикаÑии ÑÑнкÑии или пÑоÑедÑÑÑ, в Ñом виде, в каком он должен задаваÑÑÑÑ, напÑÐ¸Ð¼ÐµÑ Ð² |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð´Ð»Ñ ÑÑнкÑии пÑедложение |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, ÑоздаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑ. (ТекÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ ÑвлÑеÑÑÑ Ð¸Ð·Ð½Ð°ÑалÑнÑм, он воÑÑÑанавливаеÑÑÑ Ð¿ÑÑÑм декомпилÑÑии.) ÐÑли пеÑедаÑÑÑÑ Ð·Ð½Ð°Ñение |
ÐÑдаÑÑ Ð½Ð°Ð±Ð¾Ñ Ð·Ð°Ð¿Ð¸Ñей, опиÑÑваÑÑиÑ
клÑÑевÑе Ñлова, коÑоÑÑе воÑпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑеÑвеÑ. СÑÐ¾Ð»Ð±ÐµÑ |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, ÑоздаÑÑÑÑ Ð¿Ñавило. (ТекÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ ÑвлÑеÑÑÑ Ð¸Ð·Ð½Ð°ÑалÑнÑм, он воÑÑÑанавливаеÑÑÑ Ð¿ÑÑÑм декомпилÑÑии.) |
ÐÑдаÑÑ Ð¸Ð¼Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи, ÑвÑзанной Ñо ÑÑолбÑом, либо NULL, еÑли Ñакой поÑледоваÑелÑноÑÑи неÑ. ÐÐ»Ñ ÑÑолбÑа иденÑиÑикаÑии ÑÑо бÑÐ´ÐµÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ, ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ неÑвно внÑÑÑи. ÐÐ»Ñ ÑÑолбÑов, имеÑÑиÑ
один из поÑледоваÑелÑнÑÑ
Ñипов ( ÐбÑÑно ÑÑа ÑÑнкÑÐ¸Ñ Ð¿ÑименÑеÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÑекÑÑего знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи Ð´Ð»Ñ ÑÑолбÑа иденÑиÑикаÑии или поÑледоваÑелÑного ÑÑолбÑа, напÑÐ¸Ð¼ÐµÑ Ñак: SELECT currval(pg_get_serial_sequence('sometable', 'id')); |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, ÑоздаÑÑÑÑ Ð¾Ð±ÑÐµÐºÑ ÑаÑÑиÑенной ÑÑаÑиÑÑики. (ТекÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ ÑвлÑеÑÑÑ Ð¸Ð·Ð½Ð°ÑалÑнÑм, он воÑÑÑанавливаеÑÑÑ Ð¿ÑÑÑм декомпилÑÑии.) |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, ÑоздаÑÑÑÑ ÑÑиггеÑ. (ТекÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ ÑвлÑеÑÑÑ Ð¸Ð·Ð½Ð°ÑалÑнÑм, он воÑÑÑанавливаеÑÑÑ Ð¿ÑÑÑм декомпилÑÑии.) |
ÐÑдаÑÑ Ð¸Ð¼Ñ Ñоли по Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ OID. |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ |
ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ |
ÐÑовеÑÑеÑ, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ ÑÑÐ¾Ð»Ð±ÐµÑ Ð¸Ð½Ð´ÐµÐºÑа заданное ÑвойÑÑво. ТипиÑнÑе ÑвойÑÑва ÑÑолбÑов опиÑÐ°Ð½Ñ Ð² ТаблиÑе 9.69. (ÐамеÑÑÑе, ÑÑо ÑаÑÑиÑеннÑе меÑÐ¾Ð´Ñ Ð´Ð¾ÑÑÑпа могÑÑ Ð¾Ð¿ÑеделÑÑÑ Ð´Ð»Ñ ÑвоиÑ
индекÑов дополниÑелÑнÑе ÑвойÑÑва.) ÐÑли заданное Ð¸Ð¼Ñ ÑвойÑÑва не извеÑÑно или не пÑименимо к конкÑеÑÐ½Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ, либо еÑли OID или Ð½Ð¾Ð¼ÐµÑ ÑÑолбÑа не ÑказÑваÑÑ Ð½Ð° ÑÑÑеÑÑвÑÑÑий обÑекÑ, ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ |
ÐÑовеÑÑеÑ, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ ÑвойÑÑво. ТипиÑнÑе ÑвойÑÑва индекÑов опиÑÐ°Ð½Ñ Ð² ТаблиÑе 9.69. (ÐамеÑÑÑе, ÑÑо ÑаÑÑиÑеннÑе меÑÐ¾Ð´Ñ Ð´Ð¾ÑÑÑпа могÑÑ Ð¾Ð¿ÑеделÑÑÑ Ð´Ð»Ñ ÑвоиÑ
индекÑов дополниÑелÑнÑе ÑвойÑÑва.) ÐÑли заданное Ð¸Ð¼Ñ ÑвойÑÑва не извеÑÑно или не пÑименимо к конкÑеÑÐ½Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ, либо еÑли OID не ÑказÑÐ²Ð°ÐµÑ Ð½Ð° ÑÑÑеÑÑвÑÑÑий обÑекÑ, ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ |
ÐÑовеÑÑеÑ, Ð¸Ð¼ÐµÐµÑ Ð»Ð¸ меÑод доÑÑÑпа индекÑа заданное ÑвойÑÑво. СвойÑÑва меÑодов доÑÑÑпа опиÑÐ°Ð½Ñ Ð² ТаблиÑе 9.71. ÐÑли заданное Ð¸Ð¼Ñ ÑвойÑÑва неизвеÑÑно или не пÑименимо к конкÑеÑÐ½Ð¾Ð¼Ñ Ð¾Ð±ÑекÑÑ, либо еÑли OID не ÑказÑÐ²Ð°ÐµÑ Ð½Ð° ÑÑÑеÑÑвÑÑÑий обÑекÑ, ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ |
ÐÑдаÑÑ Ð½Ð°Ð±Ð¾Ñ Ð¿Ð°ÑамеÑÑов Ñ
ÑанилиÑа, пÑедÑÑавленнÑÑ
знаÑением из |
ÐÑдаÑÑ Ð½Ð°Ð±Ð¾Ñ OID баз даннÑÑ
, обÑекÑÑ ÐºÐ¾ÑоÑÑÑ
ÑазмеÑÐµÐ½Ñ Ð² заданном ÑаблиÑном пÑоÑÑÑанÑÑве. ÐÑли ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÑÑÑоки, ÑÑо ознаÑаеÑ, ÑÑо ÑаблиÑное пÑоÑÑÑанÑÑво не пÑÑÑое и ÑдалиÑÑ ÐµÐ³Ð¾ нелÑзÑ. Ðакие именно обÑекÑÑ Ð½Ð°Ñ
одÑÑÑÑ Ð² ÑаблиÑном пÑоÑÑÑанÑÑве, можно опÑеделиÑÑ, подклÑÑаÑÑÑ Ðº базам даннÑÑ
, OID коÑоÑÑÑ
ÑообÑила |
ÐÑдаÑÑ Ð¿ÑÑÑ Ð² Ñайловой ÑиÑÑеме к меÑÑÐ¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑаблиÑного пÑоÑÑÑанÑÑва. |
ÐÑдаÑÑ OID Ñипа даннÑÑ
Ð´Ð»Ñ Ð¿ÐµÑеданного знаÑениÑ. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ ÑазÑеÑÐµÐ½Ð¸Ñ Ð¿Ñоблем или динамиÑеÑкого ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ SQL-запÑоÑов. ÐÑа ÑÑнкÑÐ¸Ñ Ð¾Ð±ÑÑвлена как возвÑаÑаÑÑÐ°Ñ Ñип ÐÑимеÑ: SELECT pg_typeof(33);
pg_typeof
-----------
integer
SELECT typlen FROM pg_type WHERE oid = pg_typeof(33);
typlen
--------
4 |
ÐÑдаÑÑ Ð¸Ð¼Ñ Ð¿Ñавила ÑоÑÑиÑовки Ð´Ð»Ñ Ð¿ÐµÑеданного знаÑениÑ. ÐÑо знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°ÐºÐ»ÑÑено в кавÑÑки и дополнено ÑÑ
емой. ÐÑли Ñ Ð²ÑÑажением аÑгÑменÑа не ÑвÑзано пÑавило ÑоÑÑиÑовки, возвÑаÑаеÑÑÑ ÐÑимеÑ: SELECT collation for (description) FROM pg_description LIMIT 1;
pg_collation_for
------------------
"default"
SELECT collation for ('foo' COLLATE "de_DE");
pg_collation_for
------------------
"de_DE" |
ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð² OID ÑекÑÑовое Ð¸Ð¼Ñ Ð¾ÑноÑениÑ. ÐодобнÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑÐ¸Ð²ÐµÐ´Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ к ÑÐ¸Ð¿Ñ |
ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð² OID ÑекÑÑовое Ð¸Ð¼Ñ Ð¿Ñавила ÑоÑÑиÑовки. ÐодобнÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑÐ¸Ð²ÐµÐ´Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ к ÑÐ¸Ð¿Ñ |
ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð² OID ÑекÑÑовое Ð¸Ð¼Ñ ÑÑ
емÑ. ÐодобнÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑÐ¸Ð²ÐµÐ´Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ к ÑÐ¸Ð¿Ñ |
ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð² OID ÑекÑÑовое Ð¸Ð¼Ñ Ð¾Ð¿ÐµÑаÑоÑа. ÐодобнÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑÐ¸Ð²ÐµÐ´Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ к ÑÐ¸Ð¿Ñ |
ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð² OID ÑекÑÑовое Ð¸Ð¼Ñ Ð¾Ð¿ÐµÑаÑоÑа Ñ Ñказанием Ñипов паÑамеÑÑов. ÐодобнÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑÐ¸Ð²ÐµÐ´Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ к ÑÐ¸Ð¿Ñ |
ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð² OID ÑекÑÑовое Ð¸Ð¼Ñ ÑÑнкÑии или пÑоÑедÑÑÑ. ÐодобнÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑÐ¸Ð²ÐµÐ´Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ к ÑÐ¸Ð¿Ñ |
ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð² OID ÑекÑÑовое Ð¸Ð¼Ñ ÑÑнкÑии или пÑоÑедÑÑÑ Ñ Ñказанием Ñипов аÑгÑменÑов. ÐодобнÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑÐ¸Ð²ÐµÐ´Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ к ÑÐ¸Ð¿Ñ |
ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð² OID ÑекÑÑовое Ð¸Ð¼Ñ Ñоли. ÐодобнÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑÐ¸Ð²ÐµÐ´Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ к ÑÐ¸Ð¿Ñ |
ÐеÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð² OID ÑекÑÑовое Ð¸Ð¼Ñ Ñипа. ÐодобнÑй ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶Ð½Ð¾ полÑÑиÑÑ, пÑÐ¸Ð²ÐµÐ´Ñ ÑÑÑÐ¾ÐºÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ к ÑÐ¸Ð¿Ñ |
Ðногие из ÑÑнкÑий, воÑÑÑанавливаÑÑиÑ
(декомпилиÑÑÑÑиÑ
) обÑекÑÑ ÐÐ, пÑинимаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй Ñлаг pretty, в коÑоÑом можно пеÑедаÑÑ true Ð´Ð»Ñ Ð²Ð¸Ð·ÑалÑного ÑлÑÑÑÐµÐ½Ð¸Ñ Ð²Ñвода. ÐÑи ÑÑом бÑдÑÑ ÑбÑÐ°Ð½Ñ Ð»Ð¸Ñние Ñкобки и Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð¿ÑобелÑнÑе ÑимволÑ, ÑÑÐ¾Ð±Ñ ÑекÑÑ Ð±Ñл более ÑазбоÑÑивÑм. ÐÑеобÑазованнÑй вÑвод легÑе ÑиÑаеÑÑÑ, но ÑоÑÐ¼Ð°Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ñ Ð±Ð¾Ð»ÑÑей веÑоÑÑноÑÑÑÑ Ð±ÑÐ´ÐµÑ ÑÑпеÑно воÑпÑинимаÑÑÑÑ Ð±ÑдÑÑими веÑÑиÑми Postgres Pro, поÑÑÐ¾Ð¼Ñ Ð´Ð»Ñ Ð²ÑгÑÑзки ÑодеÑжимого ÐÐ ÑекомендÑеÑÑÑ Ð¸Ð·Ð±ÐµÐ³Ð°ÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸Ð·ÑалÑно ÑлÑÑÑенного ÑоÑмаÑа. ÐÑли паÑамеÑÑ pretty Ñавен false, ÑÑо ÑавнознаÑно его оÑÑÑÑÑÑвиÑ.
ТаблиÑа 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? |
РТаблиÑе 9.72 пеÑеÑиÑÐ»ÐµÐ½Ñ ÑÑнкÑии, ÑвÑзаннÑе Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑией и адÑеÑаÑией обÑекÑов баз даннÑÑ .
ТаблиÑа 9.72. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии и адÑеÑаÑии обÑекÑов
ФÑнкÑии, пеÑеÑиÑленнÑе в ТаблиÑе 9.73, извлекаÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии, заданнÑе Ð´Ð»Ñ Ð¾Ð±ÑекÑов Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ COMMENT. ÐÑли найÑи комменÑаÑий Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½ÑÑ Ð¿Ð°ÑамеÑÑов не ÑдаÑÑÑÑ, они возвÑаÑаÑÑ NULL.
ТаблиÑа 9.73. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев
ФÑнкÑии, показаннÑе в ТаблиÑе 9.74, вÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑÑанзакÑиÑÑ ÑеÑвеÑа в виде, Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑем Ð´Ð»Ñ ÑкÑпоÑÑа. РоÑновном ÑÑи ÑÑнкÑии иÑполÑзÑÑÑÑÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ, какие ÑÑанзакÑии бÑли заÑикÑиÑÐ¾Ð²Ð°Ð½Ñ Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ Ñнимками ÑоÑÑоÑниÑ.
ТаблиÑа 9.74. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии об иденÑиÑикаÑоÑÐ°Ñ ÑÑанзакÑий и ÑÐ½Ð¸Ð¼ÐºÐ°Ñ ÑоÑÑоÑниÑ
ФÑнкÑÐ¸Ñ ÐпиÑание |
|---|
ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑÑанзакÑий Ð¼ÐµÐ¶Ð´Ñ ÑказаннÑм иденÑиÑикаÑоÑом ÑÑанзакÑии и ÑекÑÑим знаÑением ÑÑÑÑÑика ÑÑанзакÑий. |
ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво иденÑиÑикаÑоÑов мÑлÑÑиÑÑанзакÑий Ð¼ÐµÐ¶Ð´Ñ ÑказаннÑм иденÑиÑикаÑоÑом мÑлÑÑиÑÑанзакÑий и ÑекÑÑим знаÑением ÑÑÑÑÑика мÑлÑÑиÑÑанзакÑий. |
ÐÑдаÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ ÑекÑÑей ÑÑанзакÑии. ÐÑли Ñ ÑекÑÑей ÑÑанзакÑии еÑÑ Ð½ÐµÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑа (она не ÑÑпела вÑполниÑÑ ÐºÐ°ÐºÐ¸Ðµ-либо Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² базе), он бÑÐ´ÐµÑ ÐµÐ¹ назнаÑен. |
ÐÑдаÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ ÑекÑÑей ÑÑанзакÑии или |
ÐÑдаÑÑ ÑоÑÑоÑние ÑикÑаÑии ÑÑанзакÑии. РезÑлÑÑаÑом бÑÐ´ÐµÑ Ð¾Ð´Ð½Ð¾ из знаÑений: |
ÐозвÑаÑÐ°ÐµÑ ÑекÑÑий Ñнимок ÑоÑÑоÑÐ½Ð¸Ñ â ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ , показÑваÑÑÑÑ, какие ÑÑанзакÑии вÑполнÑÑÑÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñнимка. |
ÐÑдаÑÑ Ð½Ð°Ð±Ð¾Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑов вÑполнÑÑÑÐ¸Ñ ÑÑ ÑÑанзакÑий, ÑодеÑжаÑÐ¸Ñ ÑÑ Ð² Ñнимке. |
ÐÑдаÑÑ Ð·Ð½Ð°Ñение |
ÐÑдаÑÑ |
Ðидна ли ÑÑанзакÑÐ¸Ñ Ñ ÑказаннÑм иденÑиÑикаÑоÑом в данном Ñнимке (Ñо еÑÑÑ, бÑла ли она завеÑÑена до моменÑа полÑÑÐµÐ½Ð¸Ñ Ñнимка)? ÐамеÑÑÑе, ÑÑо ÑÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ вÑдаÑÑ Ð¿ÑавилÑнÑй оÑвеÑ, еÑли ей пеÑедаÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ð´ÑÑанзакÑии. |
ÐÑдаÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑÐ¾Ñ ÑÑанзакÑии и Ñежима блокиÑовки Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñлена Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм иденÑиÑикаÑоÑом мÑлÑÑиÑÑанзакÑии. Ð ÐµÐ¶Ð¸Ð¼Ñ Ð±Ð»Ð¾ÐºÐ¸Ñовок |
ÐнÑÑÑенний Ñип иденÑиÑикаÑоÑов ÑÑанзакÑий, xid, Ð¸Ð¼ÐµÐµÑ ÑÐ°Ð·Ð¼ÐµÑ 32 биÑа и знаÑÐµÐ½Ð¸Ñ Ð² нÑм повÑоÑÑÑÑÑÑ ÑеÑез каждÑе 4 миллиаÑда ÑÑанзакÑий. Ðднако ÑÑнкÑии, показаннÑе в ТаблиÑе 9.74, за иÑклÑÑением age, mxid_age и pg_get_multixact_members, иÑполÑзÑÑÑ 64-биÑнÑй Ñип xid8, знаÑÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑого не повÑоÑÑÑÑÑÑ Ð½Ð° пÑоÑÑжении вÑей жизни ÑеÑвеÑа и могÑÑ Ð±ÑÑÑ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ðº ÑÐ¸Ð¿Ñ xid, еÑли ÑÑебÑеÑÑÑ. Тип даннÑÑ
pg_snapshot ÑодеÑÐ¶Ð¸Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ видимоÑÑи ÑÑанзакÑий в опÑеделÑннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени. Ðго компоненÑÑ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð² ТаблиÑе 9.75. Ð ÑекÑÑовом виде pg_snapshot пÑедÑÑавлÑеÑÑÑ ÐºÐ°Ðº . ÐапÑимеÑ, запиÑÑ xmin:xmax:ÑпиÑок_xip10:20:10,14,15 обознаÑÐ°ÐµÑ xmin=10, xmax=20, xip_list=10, 14, 15.
ТаблиÑа 9.75. СоÑÑав инÑоÑмаÑии о Ñнимке
| ÐÐ¼Ñ | ÐпиÑание |
|---|---|
xmin | ÐинималÑнÑй иденÑиÑикаÑÐ¾Ñ ÑÑанзакÑии ÑÑеди вÑеÑ
акÑивнÑÑ
. ÐÑе ÑÑанзакÑии, иденÑиÑикаÑоÑÑ ÐºÐ¾ÑоÑÑÑ
менÑÑе xmin, Ñже либо заÑикÑиÑÐ¾Ð²Ð°Ð½Ñ Ð¸ видимÑ, либо оÑÐ¼ÐµÐ½ÐµÐ½Ñ Ð¸ «меÑÑвÑ». |
xmax | ÐденÑиÑикаÑÐ¾Ñ Ð½Ð° один болÑÑе иденÑиÑикаÑоÑа поÑледней завеÑÑÑнной ÑÑанзакÑии. ÐÑе ÑÑанзакÑии, иденÑиÑикаÑоÑÑ ÐºÐ¾ÑоÑÑÑ
болÑÑе или ÑÐ°Ð²Ð½Ñ xmax, на Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ñнимка еÑÑ Ð½Ðµ завеÑÑÐµÐ½Ñ Ð¸ не ÑвлÑÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñми. |
xip_list | ТÑанзакÑии, вÑполнÑÑÑиеÑÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ñнимка. ТÑанзакÑии Ñ Ñакими иденÑиÑикаÑоÑами, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
xmin <= , не попавÑие в ÑÑÐ¾Ñ ÑпиÑок, бÑли Ñже завеÑÑÐµÐ½Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ñнимка, и поÑÑÐ¾Ð¼Ñ Ð»Ð¸Ð±Ð¾ видимÑ, либо «меÑÑвÑ», в завиÑимоÑÑи Ð¾Ñ Ð²Ð°ÑианÑа завеÑÑениÑ. ÐденÑиÑикаÑоÑÑ Ð¿Ð¾Ð´ÑÑанзакÑий в ÑÑÐ¾Ñ ÑпиÑок не вклÑÑаÑÑÑÑ. |
Ðо веÑÑии 13 в Postgres Pro оÑÑÑÑÑÑвовал Ñип xid8, поÑÑÐ¾Ð¼Ñ Ð¿ÑедлагалиÑÑ Ð²Ð°ÑиаÑии ÑÑиÑ
ÑÑнкÑий, в коÑоÑÑÑ
64-биÑнÑе XID пÑедÑÑавлÑлиÑÑ Ð² Ñипе bigint, а Ð´Ð»Ñ Ð¸Ð½ÑоÑмаÑии о Ñнимке иÑполÑзовалÑÑ Ð¾ÑделÑнÑй Ñип txid_snapshot. РназваниÑÑ
ÑÑиÑ
ÑÑаÑÑÑ
ÑÑнкÑий ÑигÑÑиÑÑÐµÑ txid. Ðни по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ Ð´Ð»Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи, но могÑÑ Ð±ÑÑÑ ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð² бÑдÑÑем. См. ТаблиÑÑ 9.76.
ТаблиÑа 9.76. УÑÑаÑевÑие ÑÑнкÑии полÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии об иденÑиÑикаÑоÑÐ°Ñ ÑÑанзакÑий и ÑÐ½Ð¸Ð¼ÐºÐ°Ñ ÑоÑÑоÑниÑ
ФÑнкÑии, показаннÑе в ТаблиÑе 9.77, вÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ вÑемени ÑикÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñже завеÑÑÑннÑÑ ÑÑанзакÑий. ÐолезнÑм ÑезÑлÑÑÐ°Ñ ÑÑÐ¸Ñ ÑÑнкÑий бÑдеÑ, ÑолÑко когда вклÑÑÑн паÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии track_commit_timestamp и ÑолÑко Ð´Ð»Ñ ÑÑанзакÑий, заÑикÑиÑованнÑÑ Ð¿Ð¾Ñле его вклÑÑениÑ.
ТаблиÑа 9.77. ФÑнкÑии полÑÑÐµÐ½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии о ÑикÑаÑии ÑÑанзакÑий
ФÑнкÑии, показаннÑе в ТаблиÑе 9.78, вÑдаÑÑ Ð¸Ð½ÑоÑмаÑиÑ, запиÑÑваемÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ initdb, напÑимеÑ, веÑÑÐ¸Ñ ÐºÐ°Ñалога. Ðни Ñакже вÑводÑÑ ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ жÑÑнале пÑедзапиÑи и конÑÑолÑнÑÑ
ÑоÑкаÑ
. ÐÑа инÑоÑмаÑÐ¸Ñ Ð¾ÑноÑиÑÑÑ ÐºÐ¾ вÑÐµÐ¼Ñ ÐºÐ»Ð°ÑÑеÑÑ, а не к оÑделÑной базе. ÐаннÑе ÑÑнкÑии вÑдаÑÑ Ð¿ÑакÑиÑеÑки ÑÑ Ð¶Ðµ инÑоÑмаÑиÑ, и из Ñого же иÑÑоÑника, ÑÑо и pg_controldata.
ТаблиÑа 9.78. ФÑнкÑии ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñми
ФÑнкÑÐ¸Ñ ÐпиÑание |
|---|
ÐÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑекÑÑем ÑоÑÑоÑнии конÑÑолÑнÑÑ ÑоÑек, показаннÑÑ Ð² ТаблиÑе 9.79. |
ÐÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑекÑÑем ÑоÑÑоÑнии ÑпÑавлÑÑÑего Ñайла, показаннÑÑ Ð² ТаблиÑе 9.80. |
ÐÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑоÑÑоÑнии иниÑиализаÑии клаÑÑеÑа, показаннÑÑ Ð² ТаблиÑе 9.81. |
ÐÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑоÑÑоÑнии воÑÑÑановлениÑ, как показано в ТаблиÑе 9.82. |
ТаблиÑа 9.79. СÑолбÑÑ ÑезÑлÑÑаÑа 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 |
ТаблиÑа 9.80. СÑолбÑÑ ÑезÑлÑÑаÑа 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 |
ТаблиÑа 9.81. СÑолбÑÑ ÑезÑлÑÑаÑа 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 |
float8_pass_by_value | boolean |
data_page_checksum_version | integer |
icu_version | text |
ÐÑимеÑание
icu_version возвÑаÑÐ°ÐµÑ NULL, еÑли Postgres Pro ÑобÑан без поддеÑжки ICU.
ТаблиÑа 9.82. СÑолбÑÑ ÑезÑлÑÑаÑа 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 |