Small. Fast. Reliable.
Choose any three.
*** 11,17 ****
  
  A complete list of available extended result codes and details about the meaning of the various extended result codes can be found by consulting the C code, especially the sqlite3.h header file and its antecedent sqlite.h.in.
  
! As of 3.3.8, this is the list.  Note how SQLITE_IOERR is the standard result code (in the low byte) with the upper bytes containing more detail.
  
    #define SQLITE_IOERR_READ          (SQLITE_IOERR | (1<<8))
    #define SQLITE_IOERR_SHORT_READ    (SQLITE_IOERR | (2<<8))
--- 11,17 ----
  
  A complete list of available extended result codes and details about the meaning of the various extended result codes can be found by consulting the C code, especially the sqlite3.h header file and its antecedent sqlite.h.in.
  
! As of 3.4.0, this is the list.  Note how SQLITE_IOERR is the standard result code (in the low byte) with the upper bytes containing more detail.
  
    #define SQLITE_IOERR_READ          (SQLITE_IOERR | (1<<8))
    #define SQLITE_IOERR_SHORT_READ    (SQLITE_IOERR | (2<<8))
***************
*** 22,27 ****
--- 22,29 ----
    #define SQLITE_IOERR_FSTAT         (SQLITE_IOERR | (7<<8))
    #define SQLITE_IOERR_UNLOCK        (SQLITE_IOERR | (8<<8))
    #define SQLITE_IOERR_RDLOCK        (SQLITE_IOERR | (9<<8))
+   #define SQLITE_IOERR_DELETE        (SQLITE_IOERR | (10<<8))
+   #define SQLITE_IOERR_BLOCKED       (SQLITE_IOERR | (11<<8))
  
  ----