Recompilación de UDX para host de 64 bits

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

  1. 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.
  2. 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. 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.

  2. 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
  3. 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)