이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 43.5. 신뢰할 수 있고 신뢰할 수없는 pl/토토 사이트 순위버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

42.5. 무지개 토토 수 있는 것과 무지개 토토 수 없는 PL/Perl

일반적으로 PL/Perl은 다음과 같이 설치됩니다."무지개 토토 수 있는"이름이 지정된 프로그래밍 언어plperl. 이 설정에서 특정 Perl 작업은 다음과 같습니다. 보안을 유지하기 위해 비활성화되었습니다. 일반적으로 다음과 같은 작업은 제한된 것은 환경과 상호작용하는 것들입니다. 이 파일 핸들 작업을 포함합니다.요구, 그리고사용(외부 모듈용). 있다 데이터베이스 서버 프로세스의 내부에 접근하거나 다음과 같이 서버 프로세스의 권한으로 OS 수준 액세스 권한을 얻습니다. C 함수로 할 수 있습니다. 따라서 권한이 없는 모든 데이터베이스 사용자는 이 언어를 사용하는 것이 허용됩니다.

여기에 파일이 있기 때문에 작동하지 않는 기능의 예가 있습니다. 보안상의 이유로 시스템 작업이 허용되지 않습니다.

CREATE FUNCTION badfunc() 정수를 $$로 반환합니다.
    내 $tmpfile = "/tmp/badfile";
    내 $fh, '', $tmpfile을 엽니다.
        또는 elog(ERROR, qq"$tmpfile" 파일을 열 수 없습니다: $!);
    print $fh "파일 쓰기 테스트\n";
    close $fh 또는 elog(ERROR, qq"$tmpfile" 파일을 닫을 수 없습니다: $!);
    1을 반환합니다.
$$ 언어 plperl;

이 함수의 생성은 다음을 사용하므로 실패합니다. 금지된 작업은 유효성 검사기에 의해 포착됩니다.

때로는 Perl 함수를 작성하는 것이 바람직할 때도 있습니다. 제한됨. 예를 들어, 다음을 보내는 Perl 함수를 원할 수 있습니다. 메일. 이러한 경우를 처리하기 위해 PL/Perl을 다음과 같이 설치할 수도 있습니다."무지개 토토 수 없음"언어(일반적으로 호출됨PL/PerlU). 이 경우 전체 Perl 언어를 사용할 수 있습니다. 언어를 설치할 때, 언어 이름plperlu다음을 선택합니다. 신뢰할 수 없는 PL/Perl 변형입니다.

a의 작가PL/PerlU함수는 다음 작업을 수행하는 데 사용할 수 없도록 주의해야 합니다. 원치 않는 모든 일을 할 수 있기 때문에 데이터베이스 관리자로 로그인한 사용자가 수행할 수 있습니다. 참고 데이터베이스 시스템에서는 데이터베이스 수퍼유저만 생성할 수 있도록 허용합니다. 신뢰할 수 없는 언어로 작동합니다.

위 함수가 슈퍼유저에 의해 다음을 사용하여 생성된 경우 언어plperlu, 실행은 성공했습니다.

같은 방식으로 Perl로 작성된 익명 코드 블록은 다음을 사용할 수 있습니다. 언어가 다음과 같이 지정된 경우 작업이 제한됩니다.plperlu대신plperl, 하지만 호출자는 슈퍼유저여야 합니다.

참고:그동안PL/펄함수는 각 SQL 역할에 대해 별도의 Perl 해석기에서 실행됩니다. 모두PL/PerlU함수는 다음에서 실행됩니다. 주어진 세션은 단일 Perl 인터프리터에서 실행됩니다(다음 중 하나가 아님). 에 사용되는 것PL/펄함수). 이것은 허용합니다PL/PerlU데이터를 자유롭게 공유하는 기능이 있지만 통신은 불가능합니다. 사이PL/펄그리고PL/PerlU함수.

참고:Perl은 여러 통역사를 지원할 수 없습니다. 적절한 플래그를 사용하여 빌드되지 않은 한 하나의 프로세스, 즉 둘 중 하나use다중성또는useithreads. (use다중성실제로 하지 않는 한 선호됩니다. 스레드를 사용해야 합니다. 자세한 내용은 다음을 참조하세요.perlembed맨 페이지.) IfPL/펄다음의 사본과 함께 사용됩니다. 이런 방식으로 구축되지 않은 Perl은 다음과 같은 경우에만 가능합니다. 세션당 하나의 Perl 인터프리터가 있으므로 각 세션은 둘 중 하나를 실행합니다PL/PerlU함수, 또는PL/펄모든 기능 동일한 SQL 역할에 의해 호출됩니다.