Perl 언어 스칼라 함수(원격 모드)
코드
원격 모드에서 실행할 코드는 로컬 모드의 코드와 동일합니다. Perl 언어 스칼라 함수를 참조하십시오.
배치
로컬 모드에서와 같이 표준 배포를 사용합니다:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language perl --version 3 \
--template deploy ApplyOp.pm
등록
원격 모드용 Perl 파일을 등록하려면 실행합니다:
$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language perl --version 3 \
--template udf --exe ApplyOp.pm \
--sig "remote_applyoppm(varchar(1), int4, int4)" --return int4 \
--remote --rname applyOpRemotePm
$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language perl --version 3 \
--template udtf --exe ApplyOp.pm --sig "launch_remote_applyoppm(int8)" \
--return "TABLE(aeresult varchar(255))" --remote --launch \
--rname applyOpRemotePmRname, --exe 및 --sig의 이름 부분을 제외한 모든 런처는 이 예시와 비슷합니다. 런처 자체는 모든 런처의 인터페이스이므로 UDF가 아닌 UDTF입니다. --rname 코드의 이름과 일치해야 합니다.
실행 중
원격 모드에서 AE를 실행하려면 실행 파일이 "서버"로 실행됩니다 이 경우 호스트에서 실행되는 쿼리만 처리합니다. 일반적으로 AE는 SPU에서도 시작됩니다. 내부적으로 서버 AE는 NPS 시스템으로부터 요청을 받은 후 포크한 후 nzaeRun()을 호출합니다. 시스템 데이터베이스의 nzsql에서 실행 명령을 사용하여 호스트에서 실행 파일을 시작합니다:
SELECT * FROM TABLE WITH FINAL(launch_remote_applyoppm(0));
AERESULT
------------------------------------------------------------------------
tran: 296722 session: 16262 data slc: 0 hardware: 0 machine: vnairsim process:
19842 thread: 19842
(1 row)
Ps -aef | grep ApplyOp 실행하면 실행 파일이 호스트에서 실행 중임을 알 수 있습니다. 이제 AE를 실행합니다:
SELECT remote_applyoppm('*', 3, 32);
REMOTE_APPLYOPPM
------------------
96
(1 row)
실행 중인 AE는 다음과 같이 중지할 수 있습니다:
SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('stop', 0,
'applyOpRemotePm',false, NULL, NULL));
AERESULT
-------------------------------------------------------------------------
vnairsim 24631 (applyOpRemotePm dataslc:-1 sess:-1 trans:-1) AE stopped
(1 row)