지원 버전 :현재(17) /16 / 15 / 14 / 13
개발 버전 :18 / Devel
지원되지 않은 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0

43.8. 후드 아래의 pl/와이즈 토토#

43.8.1. 구성#

이 섹션은 영향을 미치는 구성 매개 변수를 나열합니다pl/와이즈 토토.

pl와이즈 토토.on_init(String) #

와이즈 토토 통역사가 처음 초기화 될 때 실행될 와이즈 토토 코드를 지정합니다.pl와이즈 토토또는pl와이즈 토토u. 이 코드가 실행될 때 SPI 기능을 사용할 수 없습니다. 코드가 오류가 발생하지 않으면 통역사의 초기화를 중단하고 호출 쿼리로 전파하여 현재 트랜잭션 또는 서브 트랜잭션이 중단됩니다..

와이즈 토토 코드는 단일 문자열로 제한됩니다. 더 긴 코드는 모듈에 배치하고에 의해로드 될 수 있습니다.on_init문자열. 예 :

pl와이즈 토토.on_init = '필수 "pl와이즈 토토init.pl"'
pl와이즈 토토.on_init = '사용 lib "/my/app"; myApp :: pginit을 사용하십시오; '

pl와이즈 토토.on_init는 직접 또는 간접적으로 사용할 수 있습니다.pl와이즈 토토. 보안 위험이 발생할 수 있습니다. 로드 된 모듈을 확인하려면 다음을 사용할 수 있습니다.

do 'elog (경고, 조인 ",", sort keys %inc)'언어 pl와이즈 토토;

초기화는 우체국에서 발생합니다.pl와이즈 토토라이브러리가 포함되어shared_preload_libraries이 기능을 사용하는 주된 이유는에 의해로드 된 와이즈 토토 모듈이 때문입니다.pl와이즈 토토.on_initPostmaster 시작 시만로드해야하며 개별 데이터베이스 세션에서 오버 헤드를로드하지 않고 즉시 사용할 수 있습니다. 그러나 오버 헤드는 데이터베이스 세션 (PL/Perlu 또는 PL/PERL 기능을 호출하는 첫 번째 SQL 역할에 대해 PL/PERL)에 사용하는 첫 번째 PERL 통역사에 대해서만 피합니다. 데이터베이스 세션에서 생성 된 추가 PERL 통역사는 실행해야합니다pl와이즈 토토.on_initafresh. 또한 Windows에서는 Postmaster 프로세스에서 생성 된 와이즈 토토 통역사가 아동 프로세스로 전파되지 않기 때문에 예압으로 인해 절약 할 수 없습니다..

이 매개 변수는에서만 설정할 수 있습니다postgresql.conf파일 또는 서버 명령 줄에.

pl와이즈 토토.on_pl와이즈 토토_init(String)
pl와이즈 토토.on_pl와이즈 토토u_init(String) #

이 매개 변수는 와이즈 토토 통역사가 전문화 될 때 실행될 와이즈 토토 코드를 지정합니다pl와이즈 토토또는Pl와이즈 토토u각각. 이는 데이터베이스 세션에서 PL/PERL 또는 PL/PERLU 함수가 먼저 실행되거나 다른 언어가 호출되거나 새로운 SQL 역할에 의해 PL/Perl 함수가 호출되기 때문에 추가 통역사를 생성 해야하는 경우에 발생합니다. 이것은에 의해 수행 된 초기화를 따릅니다.pl와이즈 토토.on_init. 이 코드가 실행될 때 SPI 기능을 사용할 수 없습니다. 와이즈 토토 코드의pl와이즈 토토.on_pl와이즈 토토_init이후에 실행잠금통역사이므로 신뢰할 수있는 작업 만 수행 할 수 있습니다.

코드가 오류로 실패하면 초기화가 중단되고 호출 쿼리로 전파되어 현재 트랜잭션 또는 차트 트랜잭션이 중단됩니다. Perl 내에서 이미 수행 된 모든 작업은 취소되지 않습니다. 그러나 해당 통역사는 다시 사용되지 않습니다. 언어가 다시 사용되면 신선한 Perl 통역사 내에서 초기화가 다시 시도됩니다.

슈퍼 사용자만이 설정을 변경할 수 있습니다. 이러한 설정은 세션 내에서 변경 될 수 있지만 이러한 변경 사항은 이미 기능을 실행하는 데 사용 된 와이즈 토토 통역사에게 영향을 미치지 않습니다.

pl와이즈 토토.use_strict(부울) #

PL/와이즈 토토 함수의 진정한 후속 편집을 설정하면엄격한Pragma enabled. 이 매개 변수는 현재 세션에서 이미 컴파일 된 함수에 영향을 미치지 않습니다.

43.8.2. 제한 및 누락 된 기능#

다음 기능은 현재 PL/Perl에서 누락되었지만 환영 기부를 할 것입니다.

  • pl/와이즈 토토 함수는 서로 직접 전화 할 수 없습니다.

  • SPI는 아직 완전히 구현되지 않았습니다.

  • 사용하여 매우 큰 데이터 세트를 가져 오는 경우SPI_EXEC_QUERY, 당신은 이것들이 모두 기억에 빠질 것임을 알고 있어야합니다. 사용하여 이것을 피할 수 있습니다.SPI_QUERY/spi_fetchrow앞에서 설명한대로.

    SET RETURNING 함수가 큰 행을 PostgreSQL을 통해에 전달하는 경우 유사한 문제가 발생합니다.return. 대신를 사용 하여이 문제를 피할 수 있습니다.return_next앞에서 볼 수 있듯이 반환 된 각 행에 대해.

  • 세션이 정상적으로 종료되면 치명적인 오류로 인해END정의 된 블록이 실행됩니다. 현재 다른 작업은 수행되지 않습니다. 구체적으로 파일 핸들은 자동으로 플러시되지 않고 객체가 자동으로 파괴되지 않습니다.

정정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면