지원되는 버전:현재 (18) / 17 / 16 / 15 / 14 / 13
개발 버전:개발
지원되지 않는 버전: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/Perl은 다음과 같이 설치됩니다."신뢰할 수 있는"이름이 지정된 프로그래밍 언어pl토토 캔. 이 설정에서 특정 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을 반환합니다.
$$ 언어 pl토토 캔;

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

때로는 토토 캔 함수를 작성하는 것이 바람직할 때도 있습니다. 제한됨. 예를 들어, 토토 캔 함수를 원할 수도 있습니다. 메일을 보냅니다. 이러한 경우를 처리하기 위해 PL/토토 캔을 설치할 수도 있습니다. 으로"신뢰할 수 없음"언어(보통 전화함PL/토토 캔U). 이 경우 전체 Perl 언어를 사용할 수 있습니다. 만약createlang언어, 언어 이름을 설치하는 데 사용되는 프로그램pl토토 캔u신뢰할 수 없는 것을 선택합니다 PL/토토 캔 변형.

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

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

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

참고:Perl은 다중 인터프리터를 지원할 수 없습니다 적절한 방법으로 구축되지 않은 한 하나의 프로세스 내에서 플래그, 즉 둘 중 하나입니다.use다중성또는useithreads. (use다중성당신이 아닌 이상 선호됩니다 실제로 스레드를 사용해야합니다. 자세한 내용은 다음을 참조하세요.토토 캔embed남자 페이지.) 만약PL/펄사용됨 이런 방식으로 구축되지 않은 Perl 사본을 사용하면 세션당 하나의 Perl 인터프리터만 사용할 수 있습니다. 따라서 하나의 세션은 둘 중 하나만 실행할 수 있습니다.PL/토토 캔U함수 또는PL/펄모두 호출되는 함수 동일한 SQL 역할입니다.