9.19. ϵͳ��Ϣ����

Table 9-39 ��ʾ�˼�����ȡ�Ự��ϵͳ��Ϣ�ĺ�����

Table 9-39. �Ự��Ϣ����

����������������
current_database()name��ǰ���ݿ������
current_schema()name��ǰģʽ������
current_schemas(boolean)name[]������·���е�ģʽ����
current_usernameĿǰִ�л����µ��û���
inet_client_addr()inet���ӵ�Զ��ַ
inet_client_port()int4���ӵ�Զ�˶˿�
inet_server_addr()inet���ӵı��ص�ַ
inet_server_port()int4���ӵı��ض˿�
session_username�Ự�û���
username���� current_user
version()textPostgreSQL �汾��Ϣ

session_user ͨ���dz�ʼ����ǰ���ݿ����ӵ��û��� ���������û������� SET SESSION AUTHORIZATION �޸�������á� current_user ������Ȩ�޼����û���ʶ��ͨ���� �����ǵ��ڻỰ�û��������ڽ��������� "setuid" �������������ǵ��ڻỰ�û��� �������ں���ִ�еĹ������������� SECURITY DEFINER �ĸı���ı䡣 �� Unix ��˵�����ô�Ự�û���"��ʵ�û�"������ǰ�û���"��Ч�û�"��

ע��: current_user��session_user�� �� user �� SQL�������������״̬�� ����ʱ��β��Ҫ����԰���š�

current_schema ����������·��ǰ���ģʽ���� ���������·���ǿ��򷵻� NULL���� ������������������������ʱû������Ŀ��ģʽ����ô������������Щ�����ģʽ�� current_schemas(boolean) ����һ��������·���г��ֵ�����ģʽ�����ֵ����顣 ����ѡ������� pg_catalog �����������İ�����ϵͳģʽ�Ƿ�����ڷ��ص�����·���С�

ע��: ����·������ͨ������ʱ���ø��ġ����õ������ǣ�

SET search_path TO schema [, schema, ...]

inet_client_addr ���ص�ǰ�ͻ��˵� IP ��ַ��inet_client_port �������Ķ˿ںš� inet_server_addr ���ط��������յ�ǰ�����õ� IP ��ַ���� inet_server_port ���ض�Ӧ�Ķ˿ںš� ���������ͨ�� Unix ���׽��ֽ��еģ���ô������Щ���������� NULL��

version() ����һ������ PostgreSQL�������İ汾���ִ���

Table 9-40 �г���Щ �����û��ڳ������ѯ�������Ȩ�޵ĺ����� ���� Section 5.7 ��ȡ�����й�Ȩ�޵���Ϣ��

Table 9-40. ����Ȩ�޲�ѯ����

����������������
has_table_privilege(user, table, privilege) boolean�û��Ƿ��з��ʱ��Ȩ��
has_table_privilege(table, privilege) boolean��ǰ�û��Ƿ��з��ʱ��Ȩ��
has_database_privilege(user, database, privilege) boolean�û��Ƿ��з������ݿ��Ȩ��
has_database_privilege(database, privilege) boolean��ǰ�û��Ƿ��з������ݿ��Ȩ��
has_function_privilege(user, function, privilege) boolean�û��Ƿ��з��ʺ�����Ȩ��
has_function_privilege(function, privilege) boolean��ǰ�û��Ƿ��з��ʺ�����Ȩ��
has_language_privilege(user, language, privilege) boolean�û��Ƿ��з������Ե�Ȩ��
has_language_privilege(language, privilege) boolean��ǰ�û��Ƿ��з������Ե�Ȩ��
has_schema_privilege(user, schema, privilege) boolean�û��Ƿ��з���ģʽ��Ȩ��
has_schema_privilege(schema, privilege) boolean��ǰ�û��Ƿ��з���ģʽ��Ȩ��
has_tablespace_privilege(user, tablespace, privilege) boolean�û��Ƿ��з��ʱ�ռ��Ȩ��
has_tablespace_privilege(tablespace, privilege) boolean��ǰ�û��Ƿ��з��ʱ�ռ��Ȩ��

has_table_privilege �ж�һ���û��Ƿ������ij���ض��ķ�ʽ����һ���� ���û�����ͨ�����ֻ��� ID ��pg_user.usesysid�� �����������ʡ�Ըò�������ʹ�� current_user�� �ñ����ͨ�����ֻ��� OID ����������ˣ�ʵ���������� has_table_privilege �ı��壬���ǿ���ͨ�����ǵIJ�����Ŀ���������������ǡ��� �����������������ô�ڱ�Ҫʱ�����ֿ�����ģʽ���εġ� ��ϣ����Ȩ����������һ���ı��ִ��������ģ����DZ���ó�����ļ�����ֵ֮һ�� SELECT��INSERT��UPDATE�� DELETE��RULE��REFERENCES���� TRIGGER������Ȼ���ִ��Ĵ�Сдûʲô��ϵ���� һ�����ӡ�

SELECT has_table_privilege('myschema.mytable', 'select');

has_database_privilege ���һ���û��Ƿ������ض���ʽ����һ�����ݿ⡣ ���Ŀ��ܲ������� has_table_privilege�� ��Ҫ��Ȩ�����ͱ���ó� CREATE��TEMPORARY�� ���� TEMP ������Ч�� TEMPORARY����

has_function_privilege ���һ���û��Ƿ����� �ض���ʽ����һ������������ܲ������� has_table_privilege�� ��������һ�������õ����ı��ִ��������� OID������������ regprocedure ��������һ�������� Section 8.12������ǰ�ɵõķ���Ȩ�����ͱ���ó� EXECUTE�� һ�����ӣ�

SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');

has_language_privilege ���һ���û��Ƿ������ij���ض��ķ�ʽ����һ���������ԡ� ����ܲ������� has_table_privilege�� ���õķ���Ȩ�����ͱ���ó� USAGE��

has_tablespace_privilege ���һ���û��Ƿ�������ض���ʽ����һ����ռ䡣 ����ܲ������� has_table_privilege���û���Ҫ�ķ���Ȩ�ޱ������ó� CREATE��

has_schema_privilege ���һ���û��Ƿ� ������ij���ض��ķ�ʽ����һ��ģʽ������ܵIJ������� has_table_privilege�� ��ǰ�ɵõķ���Ȩ�����ͱ���ó� CREATE ���� USAGE��

Ҫ����һ���û��Ƿ���Ȩ���ϳ��и�Ȩѡ���Ȩ�޼��ָ��� WITH GRANT OPTION������ 'UPDATE WITH GRANT OPTION'��

Table 9-41 ��ʾ����Щ�ж�һ�������Ƿ��ڵ�ǰģʽ����·�����ɼ��ĺ����� ���һ�������ڵ�ģʽ������·���У�����û��ͬ���ı����������·���ĸ���ĵط�����ô��˵������ӿɼ��ġ� ����Ч�ڱ���Բ�����ȷģʽ���ν������á����磬Ҫ�г����пɼ���ĵ����֣�

SELECT relname from pg_class WHERE pg_table_is_visible(oid);

Table 9-41. ģʽ�����Բ�ѯ����

����������������
pg_table_is_visible(table_oid) boolean�ñ��Ƿ�������·���пɼ�
pg_type_is_visible(type_oid) boolean�������Ƿ�������·���пɼ�
pg_function_is_visible(function_oid) boolean�ú����Ƿ�������·���пɼ�
pg_operator_is_visible(operator_oid) boolean�ò������Ƿ�������·���пɼ�
pg_opclass_is_visible(opclass_oid) boolean�ò��������Ƿ�������·���пɼ�
pg_conversion_is_visible(conversion_oid) booleanת���Ƿ�������·���пɼ�

pg_table_is_visible ִ�б��飨������ͼ�� �������κ��������͵� pg_class ��¼�� pg_type_is_visible�� pg_function_is_visible�� pg_operator_is_visible�� pg_opclass_is_visible���� pg_conversion_is_visible �ֱ�Ϊ���ͣ����򣩣��������������� �����������ת��ִ��ͬ���ļ�顣���ں����Ͳ����������������·����û��ͬ�� ����ͬ���������������Ķ��������·���п�ǰ��λ�ã���ô �ö�����ǿɼ��ġ����ڲ���������ͬʱ�������ֺ���ص��������ʷ�����

������Щ��������Ҫ���� OID ��ʶҪ���Ķ����������ͨ�����ֲ���һ������ ��ôʹ�� OID �������� (regclass��regtype��regprocedure�� ���� regoperator) �ȽϷ��㣬����

SELECT pg_type_is_visible('myschema.widget'::regtype);

��ע�������ַ�������һ��δ�����ε�����ûʲô���� — ���һ�����ֿ��Ա�ʶ�� �������ȵ��ǿɼ��ġ�

Table 9-42. ϵͳ����Ϣ����

����������������
pg_get_viewdef(view_name)text��ȡ��ͼ��CREATE VIEW����(������)
pg_get_viewdef(view_name, pretty_bool)text��ȡ��ͼ�� CREATE VIEW (������)
pg_get_viewdef(view_oid)textΪ��ͼ��ȡCREATE VIEW����
pg_get_viewdef(view_oid, pretty_bool)textΪ��ͼ��ȡCREATE VIEW����
pg_get_ruledef(rule_oid)textΪ�����ȡCREATE RULE����
pg_get_ruledef(rule_oid, pretty_bool)textΪ�����ȡCREATE RULE����
pg_get_indexdef(index_oid)textΪ������ȡCREATE INDEX����
pg_get_indexdef(index_oid, column_no, pretty_bool)textΪ������ȡ CREATE INDEX ��� ��� column_no ��Ϊ�㣬����ֻ��ȡһ�������ֶεĶ���
pg_get_triggerdef(trigger_oid)textΪ��������ȡ CREATE [ CONSTRAINT ] TRIGGER
pg_get_constraintdef(constraint_oid)text��ȡһ��Լ���Ķ���
pg_get_constraintdef(constraint_oid, pretty_bool)text��ȡһ��Լ���Ķ���
pg_get_expr(expr_text, relation_oid)text������һ�����ʽ���ڲ���ʽ���������е��κ� Vars �����õڶ�������ָ���Ĺ�ϵ
pg_get_expr(expr_text, relation_oid, pretty_bool)text������һ�����ʽ���ڲ���ʽ���������е��κ� Vars �����õڶ�������ָ���Ĺ�ϵ
pg_get_userbyid(userid)name��ȡ������ ID ���û���
pg_get_serial_sequence(table_name, column_name)text��ȡһ�� serial ���� bigserial �ֶ�ʹ�õ���������
pg_tablespace_databases(tablespace_oid)setof oid��ȡ��ָ����ռ䣨OID��ʾ����ӵ�ж����һ�����ݿ�� OID �ļ���

pg_get_viewdef()��pg_get_ruledef()�� pg_get_indexdef()��pg_get_triggerdef����pg_get_constraintdef() �ֱ��һ����ͼ����������������������Լ�������¹��촴�����ǵ���� ����ע��������һ������������¹��죬�����Ǹ������ԭ�ġ��� pg_get_expr ������һ���������ʽ���ڲ���ʽ�� ����˵һ���ֶε�ȱʡֵ���ڼ��ϵͳ������ݵ�ʱ������á� ��Щ��������������������֣�����һ������ѡ��Խ����"Ư���Ĵ�ӡ"�� Ư����ӡ�ĸ�ʽ�����׶�������ȱʡ�ĸ�ʽ���п��ܱ������� PostgreSQL �汾��ͬ���ķ������ͣ����������ת������ô�����ܱ���ʹ��Ư����ӡ�� ��Ư����ӡ�������� false ���ɵĽ�����Ǹ�û����������ı������ɵĽ����ȫһ����

pg_get_userbyid ��ȡ������һ���û� ID �Ŷ�Ӧ���û����� pg_get_serial_sequence ץȡ�� serial ���� bigserial �ֶ���������������֡� ������־����˺��ʵĸ�ʽ�������Դ��ݸ����к��������� Section 9.12���� ����ֶ�û�и������У���ô���� NULL��

pg_tablespace_databases �������Ǽ��һ����ռ��ʹ��״���� ��������һ�����ݿ�� OID ���ϣ���Щ���ݿⶼ���ڸñ�ռ��б����ж�������ݿ⡣ �������������������У���ô�����Ƿǿյģ���˲���ɾ����Ҫ��ʾ����˸ñ�ռ���ض����� ����Ҫ�� pg_tablespace_databases ��������ݿ��ʶ�� pg_class �����ӽ��в�ѯ��

�� Table 9-43 ��ʾ�ĺ��� ��ԭ���� COMMENT ����洢����ע��ȡ������ ���û���ҵ�ƥ�������IJ�������ע���򷵻� NULL��

Table 9-43. ע����Ϣ����

����������������
obj_description(object_oid, catalog_name)text��ȡһ�����ݿ�������ע
obj_description(object_oid)text��ȡһ�����ݿ�������ע(����)
col_description(table_oid, column_number)text��ȡһ�����ֶε���ע

����������ʽ�� obj_description ����һ�����ݿ�������ע�� �ö�����ͨ���� OID �������ϵͳ������������ġ� ���磬obj_description(123456,'pg_class') ������ OID Ϊ 12345 �ı����ע��һ�������� obj_description ֻҪ����� OID���������Ѿ������ˣ���Ϊ���Dz��ٱ�֤ OID �ڲ�ͬ��ϵͳ��֮����Ψһ�ģ���˿��ܻ᷵�ش������ע��

col_description ����һ������ֶε���ע�� ����ͨ�����ı���ֶκŵ� OID �������ġ� ���Dz��ܽ� obj_description ���ڱ��ֶΣ� ��Ϊ�ֶ�û���Լ��� OID��