To close a connection, free the associated connection descriptor.
When the connection descriptor is freed, the
DataBlade®
API also
frees the session-context resources, including the following:
- Save sets
- Prepared statements (explicit statement descriptors)
- For an SQL statement executed with mi_exec() (also
called the current statement):
- The implicit statement descriptor for the current statement.
- The row structure and associated row descriptor for the current
statement.
- Cursors (implicit and explicit)
- Function descriptors
- Callbacks registered for the connection
- Connection user data
To conserve resources, use mi_close() to deallocate
the connection descriptor explicitly once your DataBlade®
API module
no longer needs it. The mi_close() function is
the destructor function for a connection descriptor. It frees the
connection descriptor and any resources that are associated with it.
Server only: In a C UDR, a public
connection descriptor has a memory duration of PER_STMT_EXEC. Therefore,
a connection descriptor remains active until one of the following
events occurs:
- The mi_close() function closes the specified
UDR connection.
- The current SQL statement completes execution.
When a UDR connection is closed, the UDR can no longer
access the associated connection information (see
Session-context information
in a connection descriptor). However,
the session remains open until the client application ends it. Therefore,
a UDR can obtain a new UDR connection with another call to
mi_open().
Tip: After a C UDR closes a connection, the UDR can no longer
access the connection resources in
Session-context information
in a connection descriptor. Any
open smart large objects and operating-system files, however, remain
valid for the duration of the session. You can explicitly close these
descriptors with the
mi_lo_close() and
mi_file_close() functions,
respectively.
A session-duration connection descriptor
has a memory duration of PER_SESSION. Therefore, it and its associated
connection information remain valid until the end of the session.
However, a session-duration connection is a restricted feature of
the DataBlade®
API.
Use it only when a public connection descriptor cannot perform the
task you need.
Client only: In a client LIBMI application,
a connection descriptor has a scope of the session. When the client
connection closes, the session ends. Therefore, a connection descriptor
remains active until one of the following events occurs:
- The mi_close() function closes the specified
connection, ending the session.
- The client LIBMI application completes.
Tip: After a client LIBMI application closes a connection,
it can no longer access the connection information. In addition, any
open smart large objects and files are closed.