Ejecución de las UDF de stringpad

Después de crear los programas C++ que contienen sus llamadas SPUPad, los compila utilizando ' nzudxcompile y los registra en el sistema Netezza Performance Server. For an example of the CREATE [OR REPLACE] FUNCTION commands to register these sample UDFs, see El programa de ejemplo " string_pad_create.cpp and El programa de ejemplo " string_pad_get.cpp . Estas funciones se pueden guardar fácilmente en un programa C++; después de compilar el programa, utilice el mandato CREATE [OR REPLACE] FUNCTION para registrar cada una de las funciones como UDF separadas.

Después de compilar y registrar las UDF, puede ejecutarlas. Por ejemplo, la siguiente secuencia de comandos que se introduce en la solicitud nzsql muestra cómo estas funciones procesan datos. Los mandatos se procesan dentro de un bloque de transacción por lo que la SPUPad aún existe para la función string_pad_get.

Nota: La tabla one_dslice tiene una fila y, por tanto, se guarda en un solo dataslice. Su contenido es irrelevante para el proceso de serie en este ejemplo, pero su presencia y contenido hacen que la UDF cree la SPUPad en el S-Blade que gestiona la fragmentación de datos donde está la única fila de la tabla. Para obtener más información sobre cómo la tabla puede afectar al funcionamiento del SPUPad, consulte Tablas y funcionamiento del SPUPad.
MYDB.SCHEMA(MYUSER)=> BEGIN TRANSACTION;
BEGIN
MYDB.SCHEMA(MYUSER)=> SELECT string_pad_create(10, 'netezza') FROM 
one_dslice;
 STRING_PAD_CREATE
-------------------
 t
(1 row)

MYDB.SCHEMA(MYUSER)=> SELECT string_pad_get(0) FROM one_dslice;
 STRING_PAD_GET
----------------
 n
(1 row)

MYDB.SCHEMA(MYUSER)=> SELECT string_pad_get(1) FROM one_dslice;
 STRING_PAD_GET
----------------
 e
(1 row)

MYDB.SCHEMA(MYUSER)=> SELECT string_pad_get(2) FROM one_dslice;
 STRING_PAD_GET
----------------
 t
(1 row)

MYDB.SCHEMA(MYUSER)=> COMMIT; 
COMMIT
Si ejecuta estas funciones como sentencias select únicas, la función (string_pad_create) se ejecutará, creará la SPUPad y la matriz de caracteres y, después, saldrá. Cuando la función regresa, el sistema Netezza Performance Server limpia automáticamente el SPUPad y libera la memoria. Si después ejecuta string_pad_get en una sentencia select única, verá el siguiente error porque la SPUPad ya no existe:
MYDB.SCHEMA(MYUSER)=> select string_pad_get(0) from one_dslice;
ERROR: Pad does not exist