Save sets
Save sets provide a mechanism for a module to access several rows simultaneously.
When a module retrieves rows from a cursor in an mi_next_row() loop, only one row is current at a time. Each iteration of mi_next_row() overwrites the row from the previous iteration. If your module needs to perform comparisons or other types of processing on more than one row, you can save the rows in a save set. The maintains a save set as a first-in, first-out (FIFO) queue.
The provides
the save-set structure, MI_SAVE_SET, to hold the rows of a save set.
The following table summarizes the memory operations for a save-set
structure.
| Memory duration | Memory operation | Function name |
|---|---|---|
| PER_STMT_EXEC | Constructor | mi_save_set_create() |
| PER_STMT_EXEC | Destructor | mi_save_set_destroy() |
The following table lists the functions that the provides
for use with a save set.
| Save-set operation | function |
|---|---|
| Determine the number of rows in a save set | mi_save_set_count() |
| Create a new save set | mi_save_set_create() |
| Delete a row from a save set | mi_save_set_delete() |
| Free resources associated with a save set | mi_save_set_destroy() |
| Get first row from a save set | mi_save_set_get_first() |
| Get last row from a save set | mi_save_set_get_last() |
| Get next row from a save set | mi_save_set_get_next() |
| Get previous row from a save set | mi_save_set_get_previous() |
| Insert a new row into the save set | mi_save_set_insert() |
| Determine if a specified row is a member of a save set | mi_save_set_member() |