Now, when using dbi_result_seek_row() to seek to arbitrary rows
(given in parentheses), dbi_result_get_string() can return incorrect
values. In particular, I have observed:
B-W(1) S-H(14) B-W(1) THU(2)
* row 1 is not already present, dbd_goto_row(1) is executed,
the row data retrieved, and result->currowidx set to 1
* row 14 is not already present, a goto_row(14) is executed,
the row data retrieved, and result->currowidx set to 14
* row 1 is already present, result->currowidx set to 1
* row 2 is not already present, dbd_goto_row(2) is NOT executed,
because of rowidx == currowidx + 1 [2 == 2].
So the next mysql row fetched is row 15, rather than 2.
result->currowidx is a high-level pointer that always gets updated.
But we do need to track the pointer that the DBD has, as well.
After applying this patch, the seeked results correctly yield: