The mi_lo_open() function
The mi_lo_open() function opens an existing smart large object for access.
Syntax
MI_LO_FD mi_lo_open(conn, LO_hdl, open_mode)
MI_CONNECTION *conn;
MI_LO_HANDLE *LO_hdl;
mi_integer open_mode;
- 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 the LO handle that identifies the smart large object to open.
- open_mode
- An integer bit mask that specifies the open mode for the smart
large object that LO_hdl references. The bit mask can contain
the following open-mode constants:
Table 1. open-mode constants Category Open-mode constant Access modes MI_LO_RDONLY = Read-only mode MI_LO_DIRTY_READ = Dirty-read mode
MI_LO_WRONLY = Write-only mode
MI_LO_APPEND = Write/append mode
MI_LO_RDWR = Read/write mode
MI_LO_TRUNC = Truncate
Access methods MI_LO_RANDOM = Random access MI_LO_SEQUENTIAL = Sequential access
Buffering modes MI_LO_BUFFER = Buffered access (Buffered I/O) MI_LO_NOBUFFER = Unbuffered access (Light-weight I/O)
Locking modes MI_LO_LOCKALL = Lock-all locks MI_LO_LOCKRANGE = Byte-range locks
Valid in client LIBMI application? | Valid in user-defined routine? |
---|---|
Yes | Yes |
Usage
- It opens the smart large object that LO_hdl references
in the open mode that the open_mode flag indicates.
- If the open_mode flag is zero, mi_lo_open() uses the default open mode, which you can set in the LO-specification structure with the mi_lo_specset_def_open_flags() function.
- A non-zero open_mode flag specifies the open-mode information with a valid combination of open-mode constants.
- It sets the LO seek position of the smart large object to byte zero.
- It obtains a lock on the smart-large-object data based on the lock mode in the open_mode argument.
- It returns an LO file descriptor that identifies the smart large
object.
When the mi_lo_open() function is successful, it returns a valid LO file descriptor. The mi_lo_open() function is a constructor function for an LO file descriptor. You can then use this file descriptor to identify which smart large object to access in subsequent function calls such as mi_lo_read() and mi_lo_write(). However, this LO file descriptor is only valid within the current session.
Each mi_lo_open() call is implicitly associated with the current session. When this session ends, the database server deallocates any smart large objects that are not referenced by any columns (those with a reference count of zero.
Return values
- An MI_LO_FD value
- The LO file descriptor for the open smart large object that LO_hdl references.
- MI_ERROR
- The function was not successful.