Small. Fast. Reliable.
Choose any three.
*** 58,64 ****
      int (*xOpenCursor)(void *pArg, sqlite3_vtab_cursor**, int idx);
      int (*xInsert)(sqlite3_vtab_cursor*, sqlite3_int64 rowid, int nCol,
                     sqlite3_value **apCol);
!     sqlite3_int64 (*xNewRowid(sqlite3_vtab_cursor*);
      int (*xDelete)(sqlite3_vtab_cursor*);
      int (*xSeek)(sqlite3_vtab_cursor*, int, sqlite3_value**, int*);
      int (*xFirst)(sqlite3_vtab_cursor*);
--- 58,64 ----
      int (*xOpenCursor)(void *pArg, sqlite3_vtab_cursor**, int idx);
      int (*xInsert)(sqlite3_vtab_cursor*, sqlite3_int64 rowid, int nCol,
                     sqlite3_value **apCol);
!     sqlite3_int64 (*xNewRowid)(sqlite3_vtab_cursor*);
      int (*xDelete)(sqlite3_vtab_cursor*);
      int (*xSeek)(sqlite3_vtab_cursor*, int, sqlite3_value**, int*);
      int (*xFirst)(sqlite3_vtab_cursor*);