LO handle

A LO handle, MI_LO_HANDLE, serves as a reference to a smart large object. It is analogous to the file name of an operating-system file in that it is a unique identifier of a smart large object. The LO handle contains encoded information about the smart large object, such as its physical disk location and other security-related information. After a smart large object is created, an associated LO handle is a valid reference for the life of that smart large object.

The following table summarizes the memory operations for an LO handle.
Memory duration Memory operation Function name
Current® memory duration Constructor mi_get_lo_handle(), mi_lo_copy(), mi_lo_create(), mi_lo_expand(), mi_lo_from_buffer(), mi_lo_from_string(), mi_streamread_lo()
Current memory duration Destructor mi_lo_delete_immediate(), mi_lo_release()
To access an LO handle in a user-defined routine (UDR), declare it in one of the following ways:
  • As a pointer to the MI_LO_HANDLE data type:
    MI_LO_HANDLE *my_LOhndl; /* an LO-handle pointer */

    When you declare an LO handle in this way, you must allocate memory for it before you use it.

  • As a flat MI_LO_HANDLE structure:
    MI_LO_HANDLE my_flat_LOhnld; /* a flat LO handle */

    When you declare a flat MI_LO_HANDLE structure, you do not need to allocate memory for it. This flat structure is useful when you need to embed an LO handle within an opaque data type.

The milo.h header file defines the MI_LO_HANDLE data type. Therefore, you must include the milo.h (or mi.h) file in DataBlade® API modules that access this handle.