Esempio di linguaggio Python
Questo esempio utilizza il seguente nome di file: 'libenv.py.
Codice
Le classi ambiente e libreria condivisa forniscono informazioni sull'ambiente e sulle librerie associate a un AE. Questo esempio richiede un solo argomento, un numero intero. Se l'intero è uguale a 0, l'AE emette l'ambiente che vede. Se l'intero è uguale a 1, l'AE cerca l'ambiente come libreria.
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()Distribuzione
Distribuire lo script:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language python64 \
--template deploy ./libenv.py --version 3Registrazione
Registrare l'esempio:
$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))"In esecuzione
Si noti che l'output di questo esempio è specifico dell'ambiente. Pertanto, il risultato effettivo sarà simile, ma non uguale, al testo seguente.
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: Questo risultato potrebbe variare, poiché il nome potrebbe essere preceduto da un nome di database con periodi che lo separano dal nome della libreria. Ad esempio,
xxx..LIBNZAECHILD. Inoltre, i numeri visualizzati nel nome del percorso del valore potrebbero essere diversi e della forma: /nz/DATA/base/<dbOID>/library/<objectOID>/host/<libraryname>.so.