| 롤 토토 : 문서 : 9.5 : 롤 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.5 : pl/토토 사이트 순위의 글로벌 값 | PostgreSQL : 문서 : 9.5 : PL/토토 베이 -토토 베이 Prossural Language | 42장. PL/Perl - Perl 절차 언어 | PostgreSQL : 문서 : 9.5 : PL/사설 토토 트리거 | 
일반적으로 PL/Perl은 다음과 같이 설치됩니다."사설 토토 사이트 수 있는"이름이 지정된 프로그래밍 언어plperl. 이 설정에서는 보안을 유지하기 위해 특정 Perl 작업이 비활성화됩니다. 일반적으로 제한되는 작업은 환경과 상호 작용하는 작업입니다. 여기에는 파일 핸들 작업이 포함됩니다.요구및사용(외부 모듈용). C 함수처럼 데이터베이스 서버 프로세스의 내부에 액세스하거나 서버 프로세스의 권한으로 OS 수준 액세스를 얻을 수 있는 방법이 없습니다. 따라서 권한이 없는 모든 데이터베이스 사용자가 이 언어를 사용하도록 허용될 수 있습니다.
다음은 보안상의 이유로 파일 시스템 작업이 허용되지 않기 때문에 작동하지 않는 기능의 예입니다:
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다중성14006_14089perlembed맨 페이지.) IfPL/펄이 방법으로 구축되지 않은 Perl 복사본과 함께 사용되면 세션당 하나의 Perl 인터프리터만 가질 수 있으므로 한 세션은 둘 중 하나만 실행할 수 있습니다.PL/PerlU함수 또는PL/펄모두 동일한 SQL 역할에 의해 호출되는 함수.