Small. Fast. Reliable.
Choose any three.
*** 13,35 ****
  are not right.  The function is simplified for clarity of presentation.
  Do not get hung up by this.)
  
! Please see the sqlite3_step() function above, and notice that it
! seems to be a function to advance a cursor forwards through the
! result set.  And then they want to know why they cannot have a
  corresponding sqlite3_step_backwards() function to move backwards
  through the result set.  It seems like sqlite3_step_backwards() should
  be easy to implement, after all.  Just step backwards through the
  result set instead of forwards...
  
! But it is not easy at all.  In fact, we have been unable to think
  of an algorithm that will do the job in the general case.  Stepping
  backwards through the result set is easy for some special cases,
! such as the simple example query above.  But imagine the complexity
  if the query were really a 4-way LEFT OUTER JOIN with subqueries
! both in the result columns and in the WHERE clause.  Suddenly things
! are not as simple.
  
! In fact, the sqlite3_step() function does not step through a
  precomputed result set at all.  A better and more realistic way to
  think about matters is to suppose that each prepared statement
  is really a computer program.  You are running this program in a
--- 13,37 ----
  are not right.  The function is simplified for clarity of presentation.
  Do not get hung up by this.)
  
! The sqlite3_step() function above
! seems to advance a cursor forwards through the
! result set.  It is natural to then ask why there is not a
  corresponding sqlite3_step_backwards() function to move backwards
  through the result set.  It seems like sqlite3_step_backwards() should
  be easy to implement, after all.  Just step backwards through the
  result set instead of forwards...
  
! But it is not easy at all.  In fact, the designers of
! SQLite have been unable to think
  of an algorithm that will do the job in the general case.  Stepping
  backwards through the result set is easy for some special cases,
! such as the simple example query above.  But things get more
! complicated, for example,
  if the query were really a 4-way LEFT OUTER JOIN with subqueries
! both in the result columns and in the WHERE clause.
  
! The problem is that
! the sqlite3_step() function does not step through a
  precomputed result set at all.  A better and more realistic way to
  think about matters is to suppose that each prepared statement
  is really a computer program.  You are running this program in a
***************
*** 51,57 ****
  backwards or to "undo" its
  execution back to the previous breakpoint.  Nobody reasonably
  expects debuggers to be able to do this, so you shouldn't expect
! SQLite to be able sqlite3_step_backward() either.
  
  **Work Arounds**
  
--- 53,59 ----
  backwards or to "undo" its
  execution back to the previous breakpoint.  Nobody reasonably
  expects debuggers to be able to do this, so you shouldn't expect
! SQLite to be able to sqlite3_step_backward() either.
  
  **Work Arounds**