The mi_lo_alter() function
The mi_lo_alter() function alters the storage characteristics of an existing smart large object.
Syntax
mi_integer mi_lo_alter(conn, LO_hdl, LO_spec)
MI_CONNECTION *conn;
MI_LO_HANDLE *LO_hdl;
MI_LO_SPEC *LO_spec;
- conn
- This value is one of the following connection values:
A pointer to a connection descriptor established by a previous call to mi_open(), mi_server_connect(), or mi_server_reconnect().
A NULL-valued pointer (database server only)
- LO_hdl
- A pointer to an LO handle.
- LO_spec
- A pointer to an LO-specification structure.
Valid in client LIBMI application? | Valid in user-defined routine? |
---|---|
Yes | Yes |
Usage
- Logging characteristics
You can specify the MI_LO_ATTR_LOG or MI_LO_ATTR_NO_LOG constant for the attributes flag with the mi_lo_specget_flags() function.
- Last-access time characteristics
You can specify the MI_LO_ATTR_KEEP_LASTACCESS_TIME or MI_LO_ATTR_NOKEEP_LASTACCESS_TIME constant for the attributes flag with the mi_lo_specget_flags() function.
- Extent size
You can store a new integer value for the allocation extent size with the mi_lo_specset_extsz() function. The new extent size applies only to extents written after the mi_lo_alter() function completes.
- Buffering mode
You can use mi_lo_alter() to alter the buffering mode of a smart large object that was created with light-weight I/O (MI_LO_NOBUFFER) to buffered I/O (MI_LO_BUFFER) as long as no open instances exist for that smart large object.
However, mi_lo_alter() generates an error if you attempt to change an open smart large object with buffered I/O to one with light-weight I/O.
The function obtains an exclusive lock for the entire smart large object before it proceeds with the update. It holds this lock until the update completes.
Return values
- MI_OK
- The function was successful.
- MI_ERROR
- The function was not successful.