A partir de 11.2.0.0, Netezza Performance Server tiene una arquitectura de 64 bits. Después de actualizar a 11.2.0.0, deberá recompilar todas las UDX.
Los archivos de objetos creados con nz_ddl_function no funcionan en el código de 64 bits. El código fuente de UDX debe volver a compilarse en un sistema de 64 bits. Debe crear nuevos archivos de objetos utilizando nzudxcompile. INZA y SQL Extention Toolkit deben reinstalarse con los paquetes 11.2.0.0 correspondientes.
Antes de empezar
- Asegúrese de tener el código fuente de la UDX, la utilidad nzudxcompile y el comando para recompilar la UDX, y el comando de registro.
- Ejecute los mandatos siguientes:
nzudxcompile --getSpuArch
nzudxcompile --getHostArch
Ambos comandos deben devolver 64.Ejemplo:
$ nzudxcompile --getSpuArch
64
$ nzudxcompile --getHostArch
64
La utilidad nzudxcompile que va a utilizar es del paquete Netezza Performance Server de 64 bits (versión 11.2.0.0 o superior).
Procedimiento
- 1. Ejecute la utilidad nzudxcompile para compilar el código fuente de UDX:
nzudxcompile UDX_One.cpp -o UDX_One.o
Ejemplo:
$ nzudxcompile UDX_One.cpp -o UDX_One.o
Done
El comando compila el código fuente y crea un archivo objeto HOST que se llama UDX_One.o_x86, y un archivo objeto SPU que se llama UDX_One.o_spu10.
- Registrar UDX.
Para completar el paso, se necesita un tipo de retorno, argumento o argumentos que se pasaron y su tipo, idioma, estilo de parámetros, etc. de la UDX.
DB_TEST.ADMIN(ADMIN)=> create or replace function one ()
DB_TEST.ADMIN(ADMIN)-> returns int4
DB_TEST.ADMIN(ADMIN)-> language cpp
DB_TEST.ADMIN(ADMIN)-> parameter style npsgeneric
DB_TEST.ADMIN(ADMIN)-> called on null input
DB_TEST.ADMIN(ADMIN)-> not deterministic
DB_TEST.ADMIN(ADMIN)-> EXTERNAL CLASS NAME 'One'
DB_TEST.ADMIN(ADMIN)-> EXTERNAL HOST OBJECT '/tmp/UDX_One.o_x86'
DB_TEST.ADMIN(ADMIN)-> EXTERNAL SPU OBJECT '/tmp/UDX_One.o_spu10';
CREATE FUNCTION
- Prueba la UDX:
DB_TEST.ADMIN(ADMIN)=> select One();
ONE
----
1
(1 row)
DB1.ADMIN(ADMIN)=> select one() from tab_test;
ONE
----
1
(1 row)