표 9-40세션과 시스템을 추출하는 여러 함수를 보여줍니다. 사설 토토.
표 9-40. 세션 사설 토토 기능
| 이름 | 반환 유형 | 설명 |
|---|---|---|
현재_데이터베이스() |
이름 | 현재 데이터베이스 이름 |
current_schema() |
이름 | 현재 스키마 이름 |
current_schemas(부울) |
이름[] | 선택적으로 다음을 포함하는 검색 경로의 스키마 이름 암시적 스키마 |
현재_사용자 |
이름 | 현재 실행 컨텍스트의 사용자 이름 |
inet_client_addr() |
inet | 원격 연결 주소 |
inet_client_port() |
int | 원격 연결 포트 |
inet_server_addr() |
inet | 로컬 연결 주소 |
inet_server_port() |
int | 로컬 연결 포트 |
pg_my_temp_schema() |
oid | 세션 임시 스키마의 OID, 또는 없으면 0 |
pg_is_other_temp_schema(oid) |
부울 | 스키마는 다른 세션의 임시 스키마입니까? |
pg_postmaster_start_time() |
시간대가 포함된 타임스탬프 | 서버 시작 시간 |
session_user |
이름 | 세션 사용자 이름 |
사용자 |
이름 | 동등함현재_사용자 |
버전() |
텍스트 | PostgreSQL버전 사설 토토 |
그session_user일반적으로
현재 데이터베이스 연결을 시작한 사용자입니다. 하지만
슈퍼유저는 다음을 사용하여 이 설정을 변경할 수 있습니다.세션 설정
승인.현재_사용자권한에 적용할 수 있는 사용자 식별자입니다.
확인 중입니다. 일반적으로 세션 사용자와 동일하지만
로 변경되다PostgreSQL : 문서 : 8.2 : 역할 토토 꽁 머니. 또한 다음과 같은 기능을 실행하는 동안에도 변경됩니다.
속성보안 정의자. 유닉스에서는
즉, 세션 사용자는"진짜
사용자"현재 사용자는"유효 사용자".
참고:
현재_사용자,session_user및사용자특수 구문 상태를 가짐SQL: 호출해야 합니다. 후행 괄호 없이.
current_schema이름을 반환합니다.
검색 경로 앞에 있는 스키마(또는 null
검색 경로가 비어 있는 경우 값). 이는 스키마입니다.
생성된 모든 테이블이나 기타 명명된 개체에 사용됩니다.
대상 스키마를 지정하지 않고.current_schemas(boolean)배열을 반환합니다.
현재 검색 경로에 있는 모든 스키마의 이름입니다. 는
부울 옵션은 암시적으로 포함되는지 여부를 결정합니다.
다음과 같은 시스템 스키마pg_catalog있습니다
반환된 검색 경로에 포함됩니다.
참고:검색 경로는 런타임에 변경될 수 있습니다. 명령은 다음과 같습니다:
검색_경로를 다음으로 설정스키마 [, 스키마, ...]
inet_client_addrIP를 반환합니다.
현재 클라이언트의 주소 및inet_client_port포트 번호를 반환합니다.inet_server_addrIP를 반환합니다.
서버가 현재 연결을 수락한 주소 및inet_server_port포트를 반환합니다.
번호. 현재 연결이 끊어진 경우 이 모든 함수는 NULL을 반환합니다.
Unix 도메인 소켓을 통해 이루어집니다.
pg_my_temp_schema반환
현재 세션의 임시 스키마의 OID이거나, 있는 경우 0입니다.
없음(임시 테이블을 생성하지 않았기 때문).pg_is_other_temp_schema반환
주어진 OID가 다른 세션의 임시 OID인 경우 true
스키마. (예를 들어, 이는 다른 항목을 제외하는 데 유용할 수 있습니다.
카탈로그 표시의 세션 임시 테이블입니다.)
pg_postmaster_start_time반환시간대가 포함된 타임스탬프때
서버가 시작되었습니다.
버전문자열을 반환합니다.
설명하는PostgreSQL서버 버전.
표 9-41사용자가 객체 액세스를 쿼리할 수 있는 함수를 나열합니다. 프로그래밍 방식으로 권한을 부여합니다. 참조토토 결과 : 문서 : 8.2 : 권한권한에 대한 자세한 내용을 확인하세요.
표 9-41. 접근 권한 문의 기능
| 이름 | 반환 유형 | 설명 |
|---|---|---|
has_database_privilege(사용자, 데이터베이스, 권한) |
부울 | 사용자에게 데이터베이스에 대한 권한이 있습니까 |
has_database_privilege(데이터베이스, 특권) |
부울 | 현재 사용자에게 데이터베이스에 대한 권한이 있습니까 |
has_function_privilege(사용자, 함수, 특권) |
부울 | 사용자에게 기능에 대한 권한이 있습니까 |
has_function_privilege(함수, 권한) |
부울 | 현재 사용자에게 기능에 대한 권한이 있습니까 |
has_lang_privilege(사용자, 언어, 권한) |
부울 | 사용자에게 언어에 대한 권한이 있습니까 |
has_lang_privilege(언어, 특권) |
부울 | 현재 사용자는 언어에 대한 권한을 가지고 있습니까 |
has_schema_privilege(사용자, 스키마,
권한) |
부울 | 사용자에게 스키마에 대한 권한이 있습니까 |
has_schema_privilege(스키마, 특권) |
부울 | 현재 사용자에게 스키마에 대한 권한이 있습니까 |
has_table_privilege(사용자, 테이블,
권한) |
부울 | 사용자에게 테이블에 대한 권한이 있습니까 |
has_table_privilege(테이블, 권한) |
부울 | 현재 사용자가 테이블에 대한 권한을 가지고 있습니까 |
has_tablespace_privilege(사용자, 테이블스페이스, 권한) |
부울 | 사용자에게 테이블스페이스에 대한 권한이 있습니까 |
has_tablespace_privilege(테이블스페이스, 권한) |
부울 | 현재 사용자에게 테이블스페이스에 대한 권한이 있습니까 |
pg_has_role(사용자, 역할,
특권) |
부울 | 사용자에게 역할에 대한 권한이 있습니까 |
pg_has_role(역할, 권한) |
부울 | 현재 사용자에게 역할에 대한 권한이 있습니까 |
has_database_privilege체크
사용자가 특정 방식으로 데이터베이스에 액세스할 수 있는지 여부. 는
그 주장에 대한 가능성은 다음과 유사합니다.has_table_privilege. 원하는 액세스
권한 유형은 다음과 같이 평가되어야 합니다.생성,
연결, 임시또는온도(이것은
다음과 같습니다.임시).
has_function_privilege체크
사용자가 특정 방식으로 기능에 액세스할 수 있는지 여부. 는
그 주장에 대한 가능성은 다음과 유사합니다.has_table_privilege. 기능을 지정할 때
OID가 아닌 텍스트 문자열을 사용하는 경우 허용되는 입력은 다음과 같습니다.
와 동일regprocedure데이터 유형(참조PostgreSQL : 문서 : 8.2 : 객체 식별자 토토 사이트 순위). 원하는 액세스
권한 유형은 다음과 같이 평가되어야 합니다.실행.
예는 다음과 같습니다:
SELECT has_function_privilege('joeuser', 'myfunc(int, text)', 'execute');
has_lang_privilege체크
사용자가 특정 프로세스의 절차적 언어에 액세스할 수 있는지 여부
방법. 그 주장에 대한 가능성은 다음과 유사합니다.has_table_privilege. 원하는
액세스 권한 유형은 다음과 같이 평가되어야 합니다.사용.
has_schema_privilege체크
사용자가 특정 방식으로 스키마에 액세스할 수 있는지 여부. 는
그 주장에 대한 가능성은 다음과 유사합니다.has_table_privilege. 원하는 액세스
권한 유형은 다음과 같이 평가되어야 합니다.생성또는사용.
has_table_privilege체크
사용자가 특정 방식으로 테이블에 액세스할 수 있는지 여부. 사용자
이름이나 OID로 지정할 수 있습니다(pg_authid.oid), 또는 인수가 생략된 경우현재_사용자가정됩니다. 테이블
이름이나 OID로 지정할 수 있습니다. (따라서 실제로는 6개가 있습니다.
의 변형has_table_privilege,
개수와 종류로 구분할 수 있습니다.
인수.) 이름으로 지정할 때 이름은 다음과 같습니다.
필요한 경우 스키마 한정. 원하는 접근 권한 유형
다음 중 하나로 평가되어야 하는 텍스트 문자열로 지정됩니다.
값선택, 삽입, 업데이트,
삭제, 참조, 또는트리거.
(그러나 문자열의 대소문자는 중요하지 않습니다.) 예
다음과 같습니다:
SELECT has_table_privilege('myschema.mytable', 'select');
has_tablespace_privilege체크
사용자가 특정 방식으로 테이블스페이스에 액세스할 수 있는지 여부. 는
그 주장에 대한 가능성은 다음과 유사합니다.has_table_privilege. 원하는 액세스
권한 유형은 다음과 같이 평가되어야 합니다.생성.
pg_has_role다음 여부를 확인합니다.
사용자는 특정 방식으로 역할에 액세스할 수 있습니다. 가능성
그 주장은 다음과 유사합니다.has_table_privilege. 원하는 액세스
권한 유형은 다음과 같이 평가되어야 합니다.회원또는사용. 회원직접 또는 간접 회원임을 나타냅니다.
역할(즉, 할 수 있는 권리)SET
역할), 반면사용다음 여부를 나타냅니다.
역할의 권한은 별도의 조치 없이 즉시 사용 가능합니다.
하는 중역할 설정.
사용자가 권한에 대한 부여 옵션을 보유하고 있는지 테스트하려면, 추가부여 옵션 포함에 특권 키워드; 예를 들어'다음으로 업데이트 부여 옵션'.
표 9-42특정 객체가 다음과 같은지 여부를 결정하는 함수를 보여줍니다.표시현재 스키마 검색에서 경로. 포함된 스키마가 다음과 같은 경우 테이블이 표시된다고 합니다. 검색 경로에 동일한 이름의 테이블이 이전에 나타나지 않습니다. 검색 경로에서. 이는 다음과 같은 진술과 동일하다. 명시적인 스키마 없이 이름으로 테이블을 참조할 수 있음 자격. 예를 들어, 보이는 모든 항목의 이름을 나열하려면 테이블:
pg_class WHERE pg_table_is_visible(oid)에서 relname 선택;
표 9-42. 스키마 가시성 조회 기능
| 이름 | 반환 유형 | 설명 |
|---|---|---|
pg_conversion_is_visible(conversion_oid) |
부울 | 검색 경로에 전환이 표시됩니다. |
pg_function_is_visible(function_oid) |
부울 | 검색 경로에 기능이 표시됩니다. |
pg_operator_is_visible(operator_oid) |
부울 | 검색 경로에 연산자가 표시됩니다. |
pg_opclass_is_visible(opclass_oid) |
부울 | 검색 경로에 연산자 클래스가 표시됩니다. |
pg_table_is_visible(table_oid) |
부울 | 검색 경로에 테이블이 표시됩니다. |
pg_type_is_visible(type_oid) |
부울 | 검색 경로에 유형(또는 도메인)이 표시됩니다. |
pg_conversion_is_visible,
pg_function_is_visible,
pg_operator_is_visible,
pg_opclass_is_visible, pg_table_is_visible및pg_type_is_visible가시성 검사 수행
변환, 함수, 연산자, 연산자 클래스, 테이블,
그리고 유형. 참고하세요pg_table_is_visible다음과 함께 사용할 수도 있습니다.
뷰, 인덱스 및 시퀀스;pg_type_is_visible다음과 함께 사용할 수도 있습니다.
도메인. 함수 및 연산자의 경우 검색 대상
동일한 이름의 객체가 없으면 경로가 표시됩니다.및 인수 데이터
유형경로의 앞부분. 연산자 클래스의 경우 둘 다
이름 및 관련 인덱스 액세스 방법이 고려됩니다.
이 모든 기능에는 개체를 식별하기 위해 개체 OID가 필요합니다. 확인해야합니다. 이름으로 개체를 테스트하려면 다음을 수행하십시오. OID 별칭 유형을 사용하는 것이 편리합니다(regclass, regtype, regprocedure또는regoperator), 예를 들어
SELECT pg_type_is_visible('myschema.widget'::regtype);
적격하지 않은 테스트를 하는 것은 별 의미가 없다는 점에 유의하십시오. 이런 방식으로 이름을 지정합니다. 이름을 전혀 인식할 수 없으면 눈에 띄도록 하세요.
표 9-43시스템에서 사설 토토를 추출하는 함수를 나열합니다. 카탈로그.
표 9-43. 시스템 카탈로그 사설 토토 기능
| 이름 | 반환 유형 | 설명 |
|---|---|---|
형식_유형(type_oid, typemod) |
텍스트 | 데이터 유형의 SQL 이름 가져오기 |
pg_get_constraintdef(constraint_oid) |
텍스트 | 제약조건 정의 가져오기 |
pg_get_constraintdef(constraint_oid, pretty_bool) |
텍스트 | 제약조건 정의 가져오기 |
pg_get_expr(expr_text, relation_oid) |
텍스트 | 다음을 가정하여 표현식의 내부 형식을 디컴파일합니다. 그 안에 있는 모든 Var는 다음과 같이 표시된 관계를 참조합니다. 두 번째 매개변수 |
pg_get_expr(expr_text, relation_oid, pretty_bool) |
텍스트 | 다음을 가정하여 표현식의 내부 형식을 디컴파일합니다. 그 안에 있는 모든 Var는 다음과 같이 표시된 관계를 참조합니다. 두 번째 매개변수 |
pg_get_indexdef(index_oid) |
텍스트 | 얻기색인 생성명령어 색인 |
pg_get_indexdef(index_oid, column_no, pretty_bool) |
텍스트 | 얻기색인 생성명령 인덱스 또는 단 하나의 인덱스 열 정의column_no0이 아닙니다 |
pg_get_ruledef(rule_oid) |
텍스트 | 얻기규칙 생성명령 규칙 |
pg_get_ruledef(rule_oid, pretty_bool) |
텍스트 | 얻기규칙 생성명령 규칙 |
pg_get_serial_sequence(테이블_이름, 열_이름) |
텍스트 | a 시퀀스의 이름을 얻습니다.연재또는큰 직렬열 사용 |
pg_get_triggerdef(trigger_oid) |
텍스트 | 얻기[제약] 생성 트리거트리거 명령 |
pg_get_userbyid(롤로이드) |
이름 | 주어진 ID를 가진 역할 이름 가져오기 |
pg_get_viewdef(view_name) |
텍스트 | 기본 가져오기선택보기 명령(지원 중단됨) |
pg_get_viewdef(view_name, pretty_bool) |
텍스트 | 기본 가져오기선택보기 명령(지원 중단됨) |
pg_get_viewdef(view_oid) |
텍스트 | 기본 가져오기선택보기 명령 |
pg_get_viewdef(view_oid, pretty_bool) |
텍스트 | 기본 가져오기선택보기 명령 |
pg_tablespace_databases(tablespace_oid) |
oid 집합 | 객체가 있는 데이터베이스 OID 세트를 가져옵니다. 테이블스페이스 |
형식_유형SQL 이름을 반환합니다.
OID 유형으로 식별되는 데이터 유형
유형 수정자. 특정 항목이 없으면 유형 수정자에 대해 NULL을 전달합니다.
수식어가 알려져 있습니다.
pg_get_constraintdef,
pg_get_indexdef, pg_get_ruledef및pg_get_triggerdef, 각각 재구성
제약 조건, 인덱스, 규칙 또는 트리거에 대한 명령을 생성합니다. (참고
이것은 원본 텍스트가 아닌 디컴파일된 재구성입니다.
명령의.)pg_get_expr다음과 같은 개별 표현식의 내부 형식을 디컴파일합니다.
열의 기본값입니다. 검진할 때 유용할 것 같아요
시스템 카탈로그의 내용.pg_get_viewdef재구성선택뷰를 정의하는 쿼리입니다. 이들 중 대부분은
함수에는 두 가지 변형이 있으며 그 중 하나는 선택적으로 가능합니다."예쁜 인쇄"결과입니다. 는
예쁘게 인쇄된 형식이 더 읽기 쉽지만 기본 형식은 다음과 같습니다.
향후 버전에서도 같은 방식으로 해석될 가능성이 더 높습니다.포스트그레SQL; 사용을 피하세요
덤프 목적으로 예쁘게 인쇄된 출력물입니다. 합격거짓pretty-print 매개변수의 경우
매개변수가 없는 변형과 동일한 결과
모두.
pg_get_serial_sequence반환
열과 연관된 시퀀스의 이름, 또는 없으면 NULL
시퀀스는 열과 연관되어 있습니다. 첫 번째 입력 매개변수
선택적 스키마가 있는 테이블 이름이고 두 번째 매개변수는 다음과 같습니다.
열 이름. 첫 번째 매개변수는 잠재적으로
스키마 및 테이블은 큰따옴표로 처리되지 않습니다.
식별자는 기본적으로 소문자임을 의미하고 두 번째는
매개변수는 단지 열 이름이므로 큰따옴표로 처리됩니다.
케이스가 보존되어 있습니다. 이 함수는 적절하게 값을 반환합니다.
시퀀스 함수에 전달하기 위해 형식이 지정되었습니다(참조섹션 9.12). 이 협회는 수
다음을 사용하여 수정하거나 제거할 수 있습니다.순서 변경
소유자. (함수는 아마도 호출되었을 것입니다.pg_get_owned_sequence; 그 이름
일반적으로 다음과 함께 사용된다는 사실을 반영합니다.연재또는큰 직렬열.)
pg_get_userbyid추출
OID가 부여된 역할 이름입니다.
pg_tablespace_databases허용합니다
검사할 테이블스페이스입니다. 다음의 OID 세트를 반환합니다.
테이블스페이스에 객체가 저장된 데이터베이스. 만약 이
함수는 모든 행을 반환하지만 테이블스페이스는 비어 있지 않으며 사용할 수 없습니다.
떨어집니다. 해당 개체를 채우는 특정 개체를 표시하려면
테이블스페이스를 사용하려면 식별된 데이터베이스에 연결해야 합니다.
으로pg_tablespace_databases그리고
쿼리해 보세요pg_class카탈로그.
다음에 표시된 기능표 9-44이전에 저장된 주석을 추출합니다.댓글명령. null 값이 반환됩니다. 지정된 내용과 일치하는 댓글을 찾을 수 없는 경우 매개변수.
표 9-44. 댓글 사설 토토 기능
| 이름 | 반환 유형 | 설명 |
|---|---|---|
col_description(table_oid, 열_번호) |
텍스트 | 테이블 열에 대한 설명 가져오기 |
obj_description(object_oid, 카탈로그_이름) |
텍스트 | 데이터베이스 개체에 대한 설명 가져오기 |
obj_description(object_oid) |
텍스트 | 데이터베이스 개체에 대한 설명 가져오기(지원 중단됨) |
shobj_description(object_oid, catalog_name) |
텍스트 | 공유 데이터베이스 개체에 대한 의견 가져오기 |
col_description반환
OID로 지정된 테이블 열에 대한 설명
테이블과 해당 열 번호입니다.obj_description테이블에는 사용할 수 없습니다.
열에는 자체 OID가 없기 때문입니다.
2개의 매개변수 형식obj_description다음에 대한 댓글을 반환합니다.
OID와 이름으로 지정된 데이터베이스 객체
시스템 카탈로그가 포함되어 있습니다. 예를 들어,obj_description(123456,'pg_class')검색하겠습니다
OID가 123456인 테이블에 대한 설명입니다. 단일 매개변수 형식
의obj_description만 필요합니다.
객체 OID. 이제 보장이 없으므로 더 이상 사용되지 않습니다.
OID는 다양한 시스템 카탈로그에서 고유합니다. 그러므로,
잘못된 댓글이 반환될 수 있습니다.
shobj_description그냥 사용됩니다
좋아요obj_description그것만이
공유 개체에 대한 설명을 검색하는 데 사용됩니다. 일부 시스템
카탈로그는 각 클러스터 내의 모든 데이터베이스에 전역적이며
해당 설명은 전역적으로도 저장됩니다.