Función escalar en lenguaje Perl (modo remoto)
Código
El código a ejecutar en modo remoto es el mismo que el del modo local. Véase Función escalar en lenguaje Perl.
virtual
Utilice el despliegue estándar, como en el modo local:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language perl --version 3 \
--template deploy ApplyOp.pm
Registro
Para registrar el archivo Perl para el modo remoto, ejecute:
$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 applyOpRemotePmCon la excepción de --rname, --exe y la parte del nombre de --sig, todos los lanzadores se parecen a este ejemplo. El lanzador en sí es una UDTF y no una UDF, ya que esa es la interfaz para todos los lanzadores. El --rname debe coincidir con el nombre en el código.
En ejecución
Para ejecutar el AE en modo remoto, el ejecutable se ejecuta como "servidor" En este caso, sólo gestiona las consultas ejecutadas en el host. Normalmente, los EA se inician también en las SPU. Internamente, después de que el servidor AE recibe una petición del sistema NPS, se bifurca antes de llamar a nzaeRun(). Inicia el ejecutable que se ejecuta en el host utilizando el comando launch de nzsql en la base de datos del sistema:
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)
La ejecución de ps -aef | grep ApplyOp muestra que el ejecutable se está ejecutando en el host. Ahora ejecute el AE:
SELECT remote_applyoppm('*', 3, 32);
REMOTE_APPLYOPPM
------------------
96
(1 row)
El AE en marcha puede detenerse del siguiente modo:
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)