Ejemplo de lenguaje Python
Este ejemplo utiliza el siguiente nombre de archivo: ' libenv.py.
Código
Las clases de entorno y biblioteca compartida proporcionan información sobre el entorno y las bibliotecas asociadas a un AE. Este ejemplo toma un argumento, un entero. Si el entero es igual a 0, el AE emite el entorno que ve. Si el entero es igual a 1, el AE busca el entorno como biblioteca.
import nzae
class LibEnvAe(nzae.Ae):
def _run(self):
for row in self:
if row[0] == 0:
for name, value in self.getEnvironment().iteritems():
self.output([name, value])
else:
for name, value in self.yieldSharedLibraries().iteritems():
self.output([name, value])
LibEnvAe.run()
virtual
Despliegue el script:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language python64 \
--template deploy ./libenv.py --version 3
Registro
Registra el ejemplo:
$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language python64 --version 3 \
--template udtf --exe libenv.py --sig "lib_env(int4)" \
--return "table(name varchar(1000), value varchar(1000))"
En ejecución
Tenga en cuenta que la salida de este ejemplo es específica del entorno. Por lo tanto, su resultado real se parecerá, pero no coincidirá, con el texto siguiente.
SELECT * FROM TABLE WITH FINAL(lib_env(1));
NAME | VALUE
-------------------------------------------------------------------------
LIBNZAEADAPTERS | /nz/DATA/base/1/library/200245/host/libnzaeadapters.so
LIBNZAEPARENT | /nz/DATA/base/1/library/200244/host/libnzaeparent.so
LIBNZAECHILD | /nz/DATA/base/1/library/200247/host/libnzaechild.so
(3 rows)
SELECT * FROM TABLE WITH FINAL (lib_env(0)) LIMIT 5;
NAME | VALUE
-------------------------------------------------------------------------
AE_PYTHON_ROOT | /nz/export/ae/languages/python/2.7/host64
NPS_MODEL | TT4
NZAE_SHLIB_AUTO_LIBNZAEADAPTERS | 1
NZAE_RUNTIME_TRANSACTION_ID | 8558
NZAE_OPERATION_TIMEOUT | 1800
(5 rows)
Nota: Esta salida puede variar, ya que el nombre puede ir precedido de un nombre de base de datos con puntos que lo separan del nombre de la biblioteca. Por ejemplo,
xxx..LIBNZAECHILD
. Además, los números que aparecen en el nombre de la ruta de valores pueden ser diferentes y de la forma /nz/DATA/base/<dbOID>/library/<objectOID>/host/<libraryname>.so.