Pointer data types (Server)

The SQL POINTER data type is the SQL equivalent of a generic pointer. This data type is used in the routine registration of a UDR to indicate that some data type has no equivalent SQL data type. The DataBlade® API represents the POINTER data type with the mi_pointer data type.

Use the mi_pointer data type only for communications between UDRs. The POINTER data type is a predefined opaque type (an opaque data type that HCL Informix® defines). However, no opaque-type support functions for this data type are included.
Important: Because the POINTER data type does not include opaque-type support functions, you cannot pass this type between the database server and a client application. Also, do not define columns to be of type POINTER.

The mi_pointer data type is guaranteed to be the size of the C type void * on all computer architectures. The C type void * is usually equivalent to a long type, which is usually four bytes in length.

On 64-bit platforms, void * is eight bytes in length, so mi_pointer is also eight bytes.

An mi_pointer value can fit into an MI_DATUM structure and can be passed by value to and from C UDRs. Keep in mind that because mi_pointer actually contains an address to a value, passing an mi_pointer by value is actually the same as passing the value to which mi_pointer points by reference.
Important: When you use mi_pointer, make sure that the value that the mi_pointer references is allocated with a memory duration appropriate to the use of the value.