이 문서는 지원되지 않는 버전의 스포츠 토토 베트맨을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 43.8. 후드 아래의 pl/스포츠 토토 베트맨버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

41.7. 후드 아래의 pl/perl

41.7.1. 구성

이 섹션은 영향을 미치는 구성 매개 변수를 나열합니다pl/perl. 이 중 하나를 설정합니다 전 매개 변수pl/perl로드되었으므로 추가해야합니다"plperl"to thecustom_variable_classesList in스포츠 토토 베트맨.conf.

plperl.on_init(String)

Perl 일 때 실행될 Perl 코드를 지정합니다 통역사는 먼저 초기화되기 전에 초기화됩니다 사용하기 위해plperl또는plperlu. SPI 기능은 다음과 같습니다 이 코드가 실행될 때 사용할 수 없습니다. 코드 인 경우 오류로 실패하면 초기화가 중단됩니다. 통역사는 호출 쿼리로 전파합니다. 현재 트랜잭션 또는 하위 전환을 유발합니다 중단.

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

plperl.on_init = '필수 "plperlinit.pl"'
plperl.on_init = '사용 lib "/my/app"; myApp :: pginit을 사용하십시오; '

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

do 'elog (경고, 조인 ",", Sort Keys %Inc)'Language Plperl;

초기화는 우체국에서 발생합니다 PLPERL 라이브러리가 포함되어shared_preload_libraries,이 경우 추가 위험을 고려해야합니다 우체국 장을 불안정화합니다. 주요 이유 이 기능을 사용하는 것은에 의해로드 된 Perl 모듈입니다.plperl.on_init로드해야합니다 Postmaster Start에서만 가능하며 즉시 사용할 수 있습니다 개별 데이터베이스 세션에 오버 헤드를로드하지 않고 그러나 오버 헤드는 피할 수 있습니다. 데이터베이스 세션에서 사용하는 첫 번째 Perl 통역사의 경우 - 첫 번째 SQL 역할을위한 PL/Perlu 또는 PL/Perl PL/PERL 기능을 호출합니다. 모든 추가 펄 데이터베이스 세션에서 생성 된 통역사는해야합니다 실행하다plperl.on_init향해. 또한 창문에는 절약이 없을 것입니다. Perl 통역사가 생성 된 이후 사전 로딩 우체국 장 과정은 어린이에게 전파되지 않습니다 프로세스.

이 매개 변수는 스포츠 토토 베트맨.conf에서만 설정할 수 있습니다 파일 또는 서버 명령 줄에서.

plperl.on_plperl_init(String)
plperl.on_plperlu_init(String)

이 매개 변수는시면 실행될 Perl 코드를 지정합니다 Perl 통역사가 전문화되어 있습니다plperl또는Plperlu각각. 이것은 pl/perl 또는 pl/perlu 일 때 발생합니다 기능은 데이터베이스 세션에서 또는 언제 추가 통역사를 만들어야합니다 다른 언어가 호출되거나 PL/Perl 함수를 호출합니다. 새로운 SQL 역할로. 이는 완료된 모든 초기화를 따릅니다 에 의해plperl.on_init. SPI 이 코드가 실행될 때 기능을 사용할 수 없습니다. Perl 코드의plperl.on_plperl_init이후에 실행됩니다"잠금"통역사이므로 신뢰할 수있는 성능 만 수행 할 수 있습니다 운영.

코드가 오류로 실패하면 초기화 및 호출 쿼리로 전파, 현재 트랜잭션 또는 하위 전환을 유발합니다 중단. Perl 내에서 이미 수행 된 모든 작업은 그렇지 않습니다 푼; 그러나 해당 통역사는 다시 사용되지 않습니다. 만약에 언어는 다시 사용됩니다. 초기화는됩니다 신선한 Perl 통역사 안에서 다시 시도했습니다.

슈퍼 사용자만이 설정을 변경할 수 있습니다. 하지만 이러한 설정은 세션 내에서 변경 될 수 있습니다 변경 사항은 Perl 통역사에게 영향을 미치지 않습니다 이미 함수를 실행하는 데 사용되었습니다.

plperl.use_strict(부울)

pl/perl의 True 후속 편집을 설정할 때 함수는가 있습니다.엄격한Pragma enabled. 이 매개 변수는 함수에 영향을 미치지 않습니다 이미 현재 세션에서 컴파일되었습니다.

41.7.2. 제한 사항과 누락 특징

다음 기능은 현재 PL/Perl에서 누락되었습니다. 그러나 그들은 환영 기여를 할 것입니다.

  • pl/perl 함수는 서로 직접 전화 할 수 없습니다.

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

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

    설정 퇴행 기능이면 유사한 문제가 발생합니다 큰 행 세트를 스포츠 토토 베트맨을 통해로 전달합니다.return. 이 문제를 피할 수 있습니다 대신 대신return_next앞에서 볼 수 있듯이 반환 된 각 행에 대해.

  • 세션이 정상적으로 끝나면 치명적인 오류로 인해 발생하지 않습니다. 어느END블록 정의 된 것은 실행됩니다. 현재 다른 조치는 없습니다 수행. 구체적으로 파일 핸들은 자동으로 없습니다 플러시되고 물체는 자동으로 파괴되지 않습니다.