Process complex qualifications
In the following figure, the am_getnext purpose
function attempts to disqualify source records. It creates rows for
fully qualified source records and for those that it cannot disqualify.
Figure 1. Sample am_getnext purpose
function
mi_integer sample_getnext(sd,retrow,retrowid)
MI_AM_SCAN_DESC *sd;
MI_ROW **retrow
MI_AM_ROWID_DESC *retrowid; /* Store rowid. */
{
my_data_t *my_data;
MI_ROW_DESC *rd;
MI_AM_TABLE_DESC *td;
MI_AM_QUAL_DESC *qd;
td = mi_scan_table(sd); /* Get table descriptor. */
rd = mi_tab_rowdesc(td); /* Get key column data types. */
my_data = (my_data_t *)mi_tab_userdata(td); /* Get pointer to user
data.*/
/* Evaluate keys until one qualifies for return to caller.. */
for (;;)
{
if ( ! my_data ) return MI_NO_MORE_RESULTS;
if ( eval_qual(sd, qd, my_data)== MI_TRUE)
{
mi_id_setrowid(retrowid, current->rowid);
mi_id_setfragid(retrowid, current->fragid);
return MI_ROWS;
}
my_data->rowpr++;
} /*End loop.*/
}/* End getnext.*/