in qresult.c [909:945]
SQLLEN QR_move_cursor_to_last(QResultClass *self, StatementClass *stmt)
{
char movecmd[64];
QResultClass *res;
SQLLEN moved;
ConnectionClass *conn = SC_get_conn(stmt);
if (!QR_get_cursor(self))
return 0;
if (QR_once_reached_eof(self) &&
self->cursTuple >= self->num_total_read)
return 0;
SPRINTF_FIXED(movecmd,
"move all in \"%s\"", QR_get_cursor(self));
res = CC_send_query(conn, movecmd, NULL, READ_ONLY_QUERY, stmt);
if (!QR_command_maybe_successful(res))
{
QR_Destructor(res);
SC_set_error(stmt, STMT_EXEC_ERROR, "move error occurred", __FUNCTION__);
return (-1);
}
moved = (-1);
int status = 0;
if (secure_sscanf(res->command, &status, "MOVE " FORMAT_ULEN, ARG_FORMAT_ULEN(&moved)) > 0)
{
moved++;
self->cursTuple += moved;
if (!QR_once_reached_eof(self))
{
self->num_total_read = self->cursTuple;
QR_set_reached_eof(self);
}
}
QR_Destructor(res);
return moved;
}