Exemplo de linguagem Python

Este exemplo usa o seguinte nome de arquivo: ' libenv.py.

Código

As classes de ambiente e biblioteca compartilhada fornecem informações sobre o ambiente e as bibliotecas associadas a um AE. Esse exemplo recebe um argumento, um número inteiro. Se o número inteiro for igual a 0, o AE emitirá o ambiente que estiver vendo. Se o número inteiro for igual a 1, o AE procurará o ambiente como uma 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()

Implementação

Implemente o script:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language python64 \
--template deploy ./libenv.py --version 3

Registro

Registre o exemplo:
$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))"

Executando

Observe que a saída desse exemplo é específica para o ambiente. Portanto, seu resultado real será semelhante, mas não igual, ao texto a seguir.
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)
Observação: essa saída pode variar, pois o nome pode ser precedido por um nome de banco de dados com pontos separando-o do nome da biblioteca. Por exemplo, xxx..LIBNZAECHILD. Além disso, os números exibidos no nome do caminho do valor podem ser diferentes e ter o formato: /nz/DATA/base/<dbOID>/library/<objectOID>/host/<libraryname>.so.