지원 버전 :현재(17) /16 / 15 / 14 / 13
개발 버전 :18 / Devel
지원되지 않은 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

40.5. 신뢰하고 신뢰할 수 없습니다 pl/토토 캔

일반적으로 pl/토토 캔이 a로 설치됩니다."신뢰할 수있는"프로그래밍 언어 이름pl토토 캔. 이 설정에서는 특정 토토 캔 작업이 있습니다 보안을 보존하기 위해 비활성화되었습니다. 일반적으로 운영 환경과 상호 작용하는 것입니다. 이것 파일 핸들 작업 포함요구use(for 외부 모듈). 내부의 접근 방법은 없습니다 데이터베이스 서버 프로세스 또는 C 함수가 수행 할 수있는 서버 프로세스의 권한. 따라서, 비공식적 인 데이터베이스 사용자는이를 사용하도록 허용 할 수 있습니다. 언어.

다음은 작동하지 않는 함수의 예입니다. 파일 시스템 운영은 보안상의 이유로 허용되지 않습니다.

함수 만들기 badfunc ()는 정수를 $$로 반환합니다
    내 $ tmpfile = "/tmp/badfile";
    내 $ fh, '', $ tmpfile을 엽니 다
        또는 elog (error, qq 파일 "$ tmpfile"파일을 열 수 없음 : $!);
    인쇄 $ fh "파일에 대한 테스트 \ n";
    닫기 $ fh 또는 elog (error, qq 파일 "$ tmpfile": $!)를 닫을 수 없습니다);
    반환 1;
$$ 언어 pl토토 캔;

이 기능의 생성은 금지 된 작업은 유효성 검사기에 의해 잡힐 것입니다.

때로는 그렇지 않은 토토 캔 기능을 작성하는 것이 바람직합니다. 제한된. 예를 들어, 토토 캔 기능을 원할 수도 있습니다 메일을 보냅니다. 이러한 경우를 처리하기 위해 PL/토토 캔도 설치할 수도 있습니다 로"신뢰할 수없는"언어 (보통 라고 불리는pl/토토 캔u). 이 경우 전체 토토 캔 언어를 사용할 수 있습니다. 인 경우Createlang프로그램은 언어, 언어 이름을 설치하는 데 사용됩니다Pl토토 캔u신뢰할 수없는 사람을 선택합니다 pl/토토 캔 변형.

a의 작가pl/토토 캔u함수는 기능을 사용할 수 없도록 관리해야합니다. 원치 않는 것은 무엇이든 할 수 있기 때문입니다. 데이터베이스 관리자로 로그인 한 사용자가 수행 할 수 있습니다. 데이터베이스 시스템을 사용하면 데이터베이스 슈퍼 사용자 만 신뢰할 수없는 언어로 기능을 만듭니다.

위의 기능이 언어Pl토토 캔u, 실행 성공.

참고 :whilepl/토토 캔함수는 별도의 토토 캔에서 실행됩니다 각 SQL 역할에 대한 통역사, Allpl/토토 캔u주어진에서 실행 된 기능 세션은 단일 토토 캔 통역사에서 실행됩니다 (어떤 것도 아닙니다. 에 사용 된 것들pl/토토 캔함수). 이것은 허용pl/토토 캔u데이터를 자유롭게 공유하는 기능, 그러나 사이에 의사 소통이 발생할 수 없습니다pl/토토 캔andpl/토토 캔u기능.

참고 :Perl은 여러 통역사를 지원할 수 없습니다 적절한 것으로 구축되지 않는 한 하나의 프로세스 내에서 깃발, 즉 어느 쪽이든usemultiplicity또는useitHreads. (usemultiplicity가 아니라면 선호됩니다 실제로 스레드를 사용해야합니다. 자세한 내용은를 참조하십시오.토토 캔embed남자 페이지.) ifpl/토토 캔사용됩니다 이런 식으로 만들어지지 않은 토토 캔 사본으로 세션 당 하나의 토토 캔 통역사 만 있으면 가능하며 그래서 한 세션은 어느 쪽이든 실행할 수 있습니다pl/토토 캔u함수 또는pl/토토 캔모두 호출되는 기능 동일한 SQL 역할.