Documentation Source Text

Hex Artifact Content
Login

Artifact 1732caa686c6643cbc2b2f264dd20812275a2017006bc6826fbfe4d6411e9e95:


0000: 3c 74 69 74 6c 65 3e 52 65 73 75 6c 74 20 61 6e  <title>Result an
0010: 64 20 45 72 72 6f 72 20 43 6f 64 65 73 3c 2f 74  d Error Codes</t
0020: 69 74 6c 65 3e 0a 3c 74 63 6c 3e 68 64 5f 6b 65  itle>.<tcl>hd_ke
0030: 79 77 6f 72 64 73 20 7b 72 65 73 75 6c 74 20 63  ywords {result c
0040: 6f 64 65 7d 20 7b 72 65 73 75 6c 74 20 63 6f 64  ode} {result cod
0050: 65 73 7d 20 7b 65 72 72 6f 72 20 63 6f 64 65 7d  es} {error code}
0060: 20 7b 65 72 72 6f 72 20 63 6f 64 65 73 7d 3c 2f   {error codes}</
0070: 74 63 6c 3e 0a 0a 3c 74 61 62 6c 65 5f 6f 66 5f  tcl>..<table_of_
0080: 63 6f 6e 74 65 6e 74 73 3e 0a 0a 3c 68 32 20 73  contents>..<h2 s
0090: 74 79 6c 65 3d 22 6d 61 72 67 69 6e 2d 6c 65 66  tyle="margin-lef
00a0: 74 3a 31 2e 30 65 6d 22 20 6e 6f 74 6f 63 20 69  t:1.0em" notoc i
00b0: 64 3d 6f 76 65 72 76 69 65 77 3e 20 4f 76 65 72  d=overview> Over
00c0: 76 69 65 77 3c 2f 68 32 3e 20 0a 0a 3c 70 3e 0a  view</h2> ..<p>.
00d0: 4d 61 6e 79 20 6f 66 20 74 68 65 20 72 6f 75 74  Many of the rout
00e0: 69 6e 65 73 20 69 6e 20 74 68 65 20 53 51 4c 69  ines in the SQLi
00f0: 74 65 20 5b 43 2d 6c 61 6e 67 75 61 67 65 20 49  te [C-language I
0100: 6e 74 65 72 66 61 63 65 5d 20 72 65 74 75 72 6e  nterface] return
0110: 0a 6e 75 6d 65 72 69 63 20 72 65 73 75 6c 74 20  .numeric result 
0120: 63 6f 64 65 73 20 69 6e 64 69 63 61 74 69 6e 67  codes indicating
0130: 20 65 69 74 68 65 72 20 73 75 63 63 65 73 73 20   either success 
0140: 6f 72 20 66 61 69 6c 75 72 65 2c 20 61 6e 64 20  or failure, and 
0150: 0a 69 6e 20 74 68 65 20 65 76 65 6e 74 20 6f 66  .in the event of
0160: 20 61 20 66 61 69 6c 75 72 65 2c 20 70 72 6f 76   a failure, prov
0170: 69 64 69 6e 67 20 73 6f 6d 65 20 69 64 65 61 20  iding some idea 
0180: 6f 66 20 74 68 65 20 63 61 75 73 65 20 6f 66 0a  of the cause of.
0190: 74 68 65 20 66 61 69 6c 75 72 65 2e 20 20 54 68  the failure.  Th
01a0: 69 73 20 64 6f 63 75 6d 65 6e 74 20 73 74 72 69  is document stri
01b0: 76 65 73 20 74 6f 20 65 78 70 6c 61 69 6e 20 77  ves to explain w
01c0: 68 61 74 20 65 61 63 68 0a 6f 66 20 74 68 6f 73  hat each.of thos
01d0: 65 20 6e 75 6d 65 72 69 63 20 72 65 73 75 6c 74  e numeric result
01e0: 20 63 6f 64 65 73 20 6d 65 61 6e 73 2e 0a 0a 3c   codes means...<
01f0: 68 31 3e 52 65 73 75 6c 74 20 43 6f 64 65 73 20  h1>Result Codes 
0200: 76 65 72 73 75 73 20 45 72 72 6f 72 20 43 6f 64  versus Error Cod
0210: 65 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 22 45 72  es</h1>..<p>."Er
0220: 72 6f 72 20 63 6f 64 65 73 22 20 61 72 65 20 61  ror codes" are a
0230: 20 73 75 62 73 65 74 20 6f 66 20 22 72 65 73 75   subset of "resu
0240: 6c 74 20 63 6f 64 65 73 22 20 74 68 61 74 20 69  lt codes" that i
0250: 6e 64 69 63 61 74 65 20 74 68 61 74 0a 73 6f 6d  ndicate that.som
0260: 65 74 68 69 6e 67 20 68 61 73 20 67 6f 6e 65 20  ething has gone 
0270: 77 72 6f 6e 67 2e 20 20 54 68 65 72 65 20 61 72  wrong.  There ar
0280: 65 20 6f 6e 6c 79 20 61 20 66 65 77 20 6e 6f 6e  e only a few non
0290: 2d 65 72 72 6f 72 20 72 65 73 75 6c 74 0a 63 6f  -error result.co
02a0: 64 65 73 3a 20 20 5b 53 51 4c 49 54 45 5f 4f 4b  des:  [SQLITE_OK
02b0: 5d 2c 20 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 2c  ], [SQLITE_ROW],
02c0: 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 44 4f 4e   and [SQLITE_DON
02d0: 45 5d 2e 20 20 54 68 65 20 74 65 72 6d 0a 22 65  E].  The term."e
02e0: 72 72 6f 72 20 63 6f 64 65 22 20 6d 65 61 6e 73  rror code" means
02f0: 20 61 6e 79 20 72 65 73 75 6c 74 20 63 6f 64 65   any result code
0300: 20 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65 73   other than thes
0310: 65 20 74 68 72 65 65 2e 0a 0a 3c 74 63 6c 3e 68  e three...<tcl>h
0320: 64 5f 66 72 61 67 6d 65 6e 74 20 70 76 65 20 7b  d_fragment pve {
0330: 70 72 69 6d 61 72 79 20 76 65 72 73 75 73 20 65  primary versus e
0340: 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
0350: 6f 64 65 73 7d 20 5c 0a 20 20 20 20 20 20 20 20  odes} \.        
0360: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 2a 65               {*e
0370: 78 74 2d 76 2d 70 72 69 6d 7d 20 3c 2f 74 63 6c  xt-v-prim} </tcl
0380: 3e 0a 3c 68 31 3e 50 72 69 6d 61 72 79 20 52 65  >.<h1>Primary Re
0390: 73 75 6c 74 20 43 6f 64 65 73 20 76 65 72 73 75  sult Codes versu
03a0: 73 20 45 78 74 65 6e 64 65 64 20 52 65 73 75 6c  s Extended Resul
03b0: 74 20 43 6f 64 65 73 3c 2f 68 31 3e 0a 0a 3c 70  t Codes</h1>..<p
03c0: 3e 0a 52 65 73 75 6c 74 20 63 6f 64 65 73 20 61  >.Result codes a
03d0: 72 65 20 73 69 67 6e 65 64 20 33 32 2d 62 69 74  re signed 32-bit
03e0: 20 69 6e 74 65 67 65 72 73 2e 0a 54 68 65 20 6c   integers..The l
03f0: 65 61 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74  east significant
0400: 20 38 20 62 69 74 73 20 6f 66 20 74 68 65 20 72   8 bits of the r
0410: 65 73 75 6c 74 20 63 6f 64 65 20 64 65 66 69 6e  esult code defin
0420: 65 20 61 20 62 72 6f 61 64 20 63 61 74 65 67 6f  e a broad catego
0430: 72 79 0a 61 6e 64 20 61 72 65 20 63 61 6c 6c 65  ry.and are calle
0440: 64 20 74 68 65 20 22 70 72 69 6d 61 72 79 20 72  d the "primary r
0450: 65 73 75 6c 74 20 63 6f 64 65 22 2e 20 20 4d 6f  esult code".  Mo
0460: 72 65 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62  re significant b
0470: 69 74 73 20 70 72 6f 76 69 64 65 0a 6d 6f 72 65  its provide.more
0480: 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f 72 6d   detailed inform
0490: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20  ation about the 
04a0: 65 72 72 6f 72 20 61 6e 64 20 61 72 65 20 63 61  error and are ca
04b0: 6c 6c 65 64 20 74 68 65 0a 22 65 78 74 65 6e 64  lled the."extend
04c0: 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 22 0a  ed result code".
04d0: 0a 3c 70 3e 0a 4e 6f 74 65 20 74 68 61 74 20 74  .<p>.Note that t
04e0: 68 65 20 70 72 69 6d 61 72 79 20 72 65 73 75 6c  he primary resul
04f0: 74 20 63 6f 64 65 20 69 73 20 61 6c 77 61 79 73  t code is always
0500: 20 61 20 70 61 72 74 20 6f 66 20 74 68 65 20 65   a part of the e
0510: 78 74 65 6e 64 65 64 0a 72 65 73 75 6c 74 20 63  xtended.result c
0520: 6f 64 65 2e 20 20 47 69 76 65 6e 20 61 20 66 75  ode.  Given a fu
0530: 6c 6c 20 33 32 2d 62 69 74 20 65 78 74 65 6e 64  ll 32-bit extend
0540: 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 2c 20  ed result code, 
0550: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a  the application.
0560: 63 61 6e 20 61 6c 77 61 79 73 20 66 69 6e 64 20  can always find 
0570: 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  the correspondin
0580: 67 20 70 72 69 6d 61 72 79 20 72 65 73 75 6c 74  g primary result
0590: 20 63 6f 64 65 20 6d 65 72 65 6c 79 20 62 79 20   code merely by 
05a0: 65 78 74 72 61 63 74 69 6e 67 0a 74 68 65 20 6c  extracting.the l
05b0: 65 61 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74  east significant
05c0: 20 38 20 62 69 74 73 20 6f 66 20 74 68 65 20 65   8 bits of the e
05d0: 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
05e0: 6f 64 65 2e 0a 0a 3c 70 3e 0a 41 6c 6c 20 65 78  ode...<p>.All ex
05f0: 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
0600: 64 65 73 20 61 72 65 20 61 6c 73 6f 20 65 72 72  des are also err
0610: 6f 72 20 63 6f 64 65 73 2e 20 20 48 65 6e 63 65  or codes.  Hence
0620: 20 74 68 65 20 74 65 72 6d 73 0a 22 65 78 74 65   the terms."exte
0630: 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65  nded result code
0640: 22 20 61 6e 64 20 22 65 78 74 65 6e 64 65 64 20  " and "extended 
0650: 65 72 72 6f 72 20 63 6f 64 65 22 20 61 72 65 20  error code" are 
0660: 69 6e 74 65 72 63 68 61 6e 67 65 61 62 6c 65 2e  interchangeable.
0670: 0a 0a 3c 70 3e 0a 46 6f 72 20 68 69 73 74 6f 72  ..<p>.For histor
0680: 69 63 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  ic compatibility
0690: 2c 20 74 68 65 20 43 2d 6c 61 6e 67 75 61 67 65  , the C-language
06a0: 20 69 6e 74 65 72 66 61 63 65 73 20 72 65 74 75   interfaces retu
06b0: 72 6e 0a 70 72 69 6d 61 72 79 20 72 65 73 75 6c  rn.primary resul
06c0: 74 20 63 6f 64 65 73 20 62 79 20 64 65 66 61 75  t codes by defau
06d0: 6c 74 2e 20 20 0a 54 68 65 20 65 78 74 65 6e 64  lt.  .The extend
06e0: 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 20 66  ed result code f
06f0: 6f 72 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  or the most rece
0700: 6e 74 20 65 72 72 6f 72 20 63 61 6e 20 62 65 0a  nt error can be.
0710: 72 65 74 72 69 65 76 65 64 20 75 73 69 6e 67 20  retrieved using 
0720: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 78 74  the [sqlite3_ext
0730: 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 29 5d  ended_errcode()]
0740: 20 69 6e 74 65 72 66 61 63 65 2e 0a 54 68 65 20   interface..The 
0750: 5b 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65  [sqlite3_extende
0760: 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 29  d_result_codes()
0770: 5d 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20  ] interface can 
0780: 62 65 20 75 73 65 64 20 74 6f 20 70 75 74 0a 61  be used to put.a
0790: 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
07a0: 63 74 69 6f 6e 5d 20 69 6e 74 6f 20 61 20 6d 6f  ction] into a mo
07b0: 64 65 20 77 68 65 72 65 20 69 74 20 72 65 74 75  de where it retu
07c0: 72 6e 73 20 74 68 65 0a 65 78 74 65 6e 64 65 64  rns the.extended
07d0: 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 69 6e   result codes in
07e0: 73 74 65 61 64 20 6f 66 20 74 68 65 20 70 72 69  stead of the pri
07f0: 6d 61 72 79 20 72 65 73 75 6c 74 20 63 6f 64 65  mary result code
0800: 73 2e 0a 0a 3c 68 31 3e 44 65 66 69 6e 69 74 69  s...<h1>Definiti
0810: 6f 6e 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 41 6c  ons</h1>..<p>.Al
0820: 6c 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61  l result codes a
0830: 72 65 20 69 6e 74 65 67 65 72 73 2e 0a 53 79 6d  re integers..Sym
0840: 62 6f 6c 69 63 20 6e 61 6d 65 73 20 66 6f 72 20  bolic names for 
0850: 61 6c 6c 20 72 65 73 75 6c 74 20 63 6f 64 65 73  all result codes
0860: 20 61 72 65 20 63 72 65 61 74 65 64 20 75 73 69   are created usi
0870: 6e 67 0a 22 23 64 65 66 69 6e 65 22 20 6d 61 63  ng."#define" mac
0880: 72 6f 73 20 69 6e 20 74 68 65 20 73 71 6c 69 74  ros in the sqlit
0890: 65 33 2e 68 20 68 65 61 64 65 72 20 66 69 6c 65  e3.h header file
08a0: 2e 0a 54 68 65 72 65 20 61 72 65 20 73 65 70 61  ..There are sepa
08b0: 72 61 74 65 20 73 65 63 74 69 6f 6e 73 20 69 6e  rate sections in
08c0: 20 74 68 65 20 73 71 6c 69 74 65 33 2e 68 20 68   the sqlite3.h h
08d0: 65 61 64 65 72 20 66 69 6c 65 20 66 6f 72 0a 74  eader file for.t
08e0: 68 65 20 5b 72 65 73 75 6c 74 20 63 6f 64 65 20  he [result code 
08f0: 64 65 66 69 6e 69 74 69 6f 6e 73 5d 20 61 6e 64  definitions] and
0900: 20 74 68 65 20 5b 65 78 74 65 6e 64 65 64 20 72   the [extended r
0910: 65 73 75 6c 74 20 63 6f 64 65 20 64 65 66 69 6e  esult code defin
0920: 69 74 69 6f 6e 73 5d 2e 0a 0a 3c 70 3e 0a 50 72  itions]...<p>.Pr
0930: 69 6d 61 72 79 20 72 65 73 75 6c 74 20 63 6f 64  imary result cod
0940: 65 20 73 79 6d 62 6f 6c 69 63 20 6e 61 6d 65 73  e symbolic names
0950: 20 61 72 65 20 6f 66 20 74 68 65 20 66 6f 72 6d   are of the form
0960: 20 22 53 51 4c 49 54 45 5f 58 58 58 58 58 58 22   "SQLITE_XXXXXX"
0970: 20 77 68 65 72 65 0a 58 58 58 58 58 58 20 69 73   where.XXXXXX is
0980: 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 20 75   a sequence of u
0990: 70 70 65 72 63 61 73 65 20 61 6c 70 68 61 62 65  ppercase alphabe
09a0: 74 69 63 20 63 68 61 72 61 63 74 65 72 73 2e 20  tic characters. 
09b0: 20 45 78 74 65 6e 64 65 64 0a 72 65 73 75 6c 74   Extended.result
09c0: 20 63 6f 64 65 20 6e 61 6d 65 73 20 61 72 65 20   code names are 
09d0: 6f 66 20 74 68 65 20 66 6f 72 6d 20 22 53 51 4c  of the form "SQL
09e0: 49 54 45 5f 58 58 58 58 58 58 5f 59 59 59 59 59  ITE_XXXXXX_YYYYY
09f0: 59 59 22 20 77 68 65 72 65 0a 74 68 65 20 58 58  YY" where.the XX
0a00: 58 58 58 58 20 70 61 72 74 20 69 73 20 74 68 65  XXXX part is the
0a10: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 70   corresponding p
0a20: 72 69 6d 61 72 79 20 72 65 73 75 6c 74 20 63 6f  rimary result co
0a30: 64 65 20 61 6e 64 20 74 68 65 0a 59 59 59 59 59  de and the.YYYYY
0a40: 59 59 20 69 73 20 61 6e 20 65 78 74 65 6e 73 69  YY is an extensi
0a50: 6f 6e 20 74 68 61 74 20 66 75 72 74 68 65 72 20  on that further 
0a60: 63 6c 61 73 73 69 66 69 65 73 20 74 68 65 20 72  classifies the r
0a70: 65 73 75 6c 74 20 63 6f 64 65 2e 0a 0a 3c 70 3e  esult code...<p>
0a80: 0a 54 68 65 20 6e 61 6d 65 73 20 61 6e 64 20 6e  .The names and n
0a90: 75 6d 65 72 69 63 20 76 61 6c 75 65 73 20 66 6f  umeric values fo
0aa0: 72 20 65 78 69 73 74 69 6e 67 20 72 65 73 75 6c  r existing resul
0ab0: 74 20 63 6f 64 65 73 20 61 72 65 20 66 69 78 65  t codes are fixe
0ac0: 64 0a 61 6e 64 20 75 6e 63 68 61 6e 67 69 6e 67  d.and unchanging
0ad0: 2e 20 20 48 6f 77 65 76 65 72 2c 20 6e 65 77 20  .  However, new 
0ae0: 72 65 73 75 6c 74 20 63 6f 64 65 73 2c 20 61 6e  result codes, an
0af0: 64 20 65 73 70 65 63 69 61 6c 6c 79 20 6e 65 77  d especially new
0b00: 20 65 78 74 65 6e 64 65 64 0a 72 65 73 75 6c 74   extended.result
0b10: 20 63 6f 64 65 73 2c 20 6d 69 67 68 74 20 61 70   codes, might ap
0b20: 70 65 61 72 20 69 6e 20 66 75 74 75 72 65 20 72  pear in future r
0b30: 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74  eleases of SQLit
0b40: 65 2e 0a 0a 3c 74 63 6c 3e 0a 75 6e 73 65 74 20  e...<tcl>.unset 
0b50: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 64  -nocomplain resd
0b60: 65 73 63 0a 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d  esc.unset -nocom
0b70: 70 6c 61 69 6e 20 72 65 73 76 61 6c 75 65 0a 70  plain resvalue.p
0b80: 72 6f 63 20 52 45 53 43 4f 44 45 20 7b 6e 61 6d  roc RESCODE {nam
0b90: 65 20 76 61 6c 75 65 20 64 65 73 63 7d 20 7b 0a  e value desc} {.
0ba0: 20 20 73 65 74 20 3a 3a 72 65 73 64 65 73 63 28    set ::resdesc(
0bb0: 24 6e 61 6d 65 29 20 24 64 65 73 63 0a 20 20 73  $name) $desc.  s
0bc0: 65 74 20 3a 3a 72 65 73 76 61 6c 75 65 28 24 6e  et ::resvalue($n
0bd0: 61 6d 65 29 20 24 76 61 6c 75 65 0a 7d 0a 0a 52  ame) $value.}..R
0be0: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 4f 4b  ESCODE SQLITE_OK
0bf0: 20 30 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54   0 {.  The SQLIT
0c00: 45 5f 4f 4b 20 72 65 73 75 6c 74 20 63 6f 64 65  E_OK result code
0c10: 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20   means that the 
0c20: 6f 70 65 72 61 74 69 6f 6e 20 77 61 73 20 73 75  operation was su
0c30: 63 63 65 73 73 66 75 6c 20 61 6e 64 0a 20 20 74  ccessful and.  t
0c40: 68 61 74 20 74 68 65 72 65 20 77 65 72 65 20 6e  hat there were n
0c50: 6f 20 65 72 72 6f 72 73 2e 20 20 4d 6f 73 74 20  o errors.  Most 
0c60: 6f 74 68 65 72 20 72 65 73 75 6c 74 20 63 6f 64  other result cod
0c70: 65 73 20 69 6e 64 69 63 61 74 65 20 61 6e 20 65  es indicate an e
0c80: 72 72 6f 72 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  rror..}.RESCODE 
0c90: 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 31 20 7b  SQLITE_ERROR 1 {
0ca0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 45 52  .  The SQLITE_ER
0cb0: 52 4f 52 20 72 65 73 75 6c 74 20 63 6f 64 65 20  ROR result code 
0cc0: 69 73 20 61 20 67 65 6e 65 72 69 63 20 65 72 72  is a generic err
0cd0: 6f 72 20 63 6f 64 65 20 74 68 61 74 20 69 73 20  or code that is 
0ce0: 75 73 65 64 20 77 68 65 6e 0a 20 20 6e 6f 20 6f  used when.  no o
0cf0: 74 68 65 72 20 6d 6f 72 65 20 73 70 65 63 69 66  ther more specif
0d00: 69 63 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  ic error code is
0d10: 20 61 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a 52 45   available..}.RE
0d20: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4e 54  SCODE SQLITE_INT
0d30: 45 52 4e 41 4c 20 20 20 20 20 32 20 20 7b 0a 20  ERNAL     2  {. 
0d40: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4e 54 45   The SQLITE_INTE
0d50: 52 4e 41 4c 20 72 65 73 75 6c 74 20 63 6f 64 65  RNAL result code
0d60: 20 69 6e 64 69 63 61 74 65 73 20 61 6e 20 69 6e   indicates an in
0d70: 74 65 72 6e 61 6c 20 6d 61 6c 66 75 6e 63 74 69  ternal malfuncti
0d80: 6f 6e 2e 0a 20 20 49 6e 20 61 20 77 6f 72 6b 69  on..  In a worki
0d90: 6e 67 20 76 65 72 73 69 6f 6e 20 6f 66 20 53 51  ng version of SQ
0da0: 4c 69 74 65 2c 20 61 6e 20 61 70 70 6c 69 63 61  Lite, an applica
0db0: 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e 65 76 65  tion should neve
0dc0: 72 20 73 65 65 20 74 68 69 73 0a 20 20 72 65 73  r see this.  res
0dd0: 75 6c 74 20 63 6f 64 65 2e 20 20 49 66 20 61 70  ult code.  If ap
0de0: 70 6c 69 63 61 74 69 6f 6e 20 64 6f 65 73 20 65  plication does e
0df0: 6e 63 6f 75 6e 74 65 72 20 74 68 69 73 20 72 65  ncounter this re
0e00: 73 75 6c 74 20 63 6f 64 65 2c 20 69 74 20 73 68  sult code, it sh
0e10: 6f 77 73 0a 20 20 74 68 61 74 20 74 68 65 72 65  ows.  that there
0e20: 20 69 73 20 61 20 62 75 67 20 69 6e 20 74 68 65   is a bug in the
0e30: 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65   database engine
0e40: 2e 0a 20 20 3c 70 3e 0a 20 20 53 51 4c 69 74 65  ..  <p>.  SQLite
0e50: 20 64 6f 65 73 20 6e 6f 74 20 63 75 72 72 65 6e   does not curren
0e60: 74 6c 79 20 67 65 6e 65 72 61 74 65 20 74 68 69  tly generate thi
0e70: 73 20 72 65 73 75 6c 74 20 63 6f 64 65 2e 0a 20  s result code.. 
0e80: 20 48 6f 77 65 76 65 72 2c 20 5b 61 70 70 6c 69   However, [appli
0e90: 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53  cation-defined S
0ea0: 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 6f 72  QL functions] or
0eb0: 0a 20 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c  .  [virtual tabl
0ec0: 65 73 5d 2c 20 6f 72 20 5b 56 46 53 65 73 5d 2c  es], or [VFSes],
0ed0: 20 6f 72 20 6f 74 68 65 72 20 65 78 74 65 6e 73   or other extens
0ee0: 69 6f 6e 73 20 6d 69 67 68 74 20 63 61 75 73 65  ions might cause
0ef0: 20 74 68 69 73 20 0a 20 20 72 65 73 75 6c 74 20   this .  result 
0f00: 63 6f 64 65 20 74 6f 20 62 65 20 72 65 74 75 72  code to be retur
0f10: 6e 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ned..}.RESCODE S
0f20: 51 4c 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20  QLITE_PERM      
0f30: 20 20 20 33 20 20 7b 0a 20 20 54 68 65 20 53 51     3  {.  The SQ
0f40: 4c 49 54 45 5f 50 45 52 4d 20 72 65 73 75 6c 74  LITE_PERM result
0f50: 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20   code indicates 
0f60: 74 68 61 74 20 74 68 65 20 72 65 71 75 65 73 74  that the request
0f70: 65 64 20 61 63 63 65 73 73 20 6d 6f 64 65 0a 20  ed access mode. 
0f80: 20 66 6f 72 20 61 20 6e 65 77 6c 79 20 63 72 65   for a newly cre
0f90: 61 74 65 64 20 64 61 74 61 62 61 73 65 20 63 6f  ated database co
0fa0: 75 6c 64 20 6e 6f 74 20 62 65 20 70 72 6f 76 69  uld not be provi
0fb0: 64 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ded..}.RESCODE S
0fc0: 51 4c 49 54 45 5f 41 42 4f 52 54 20 20 20 20 20  QLITE_ABORT     
0fd0: 20 20 20 34 20 20 7b 0a 20 20 54 68 65 20 53 51     4  {.  The SQ
0fe0: 4c 49 54 45 5f 41 42 4f 52 54 20 72 65 73 75 6c  LITE_ABORT resul
0ff0: 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73  t code indicates
1000: 20 74 68 61 74 20 61 6e 20 6f 70 65 72 61 74 69   that an operati
1010: 6f 6e 20 77 61 73 20 61 62 6f 72 74 65 64 0a 20  on was aborted. 
1020: 20 70 72 69 6f 72 20 74 6f 20 63 6f 6d 70 6c 65   prior to comple
1030: 74 69 6f 6e 2c 20 75 73 75 61 6c 6c 79 20 62 65  tion, usually be
1040: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72 65 71   application req
1050: 75 65 73 74 2e 0a 20 20 53 65 65 20 61 6c 73 6f  uest..  See also
1060: 3a 20 5b 53 51 4c 49 54 45 5f 49 4e 54 45 52 52  : [SQLITE_INTERR
1070: 55 50 54 5d 2e 0a 20 20 3c 70 3e 0a 20 20 5e 49  UPT]..  <p>.  ^I
1080: 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66  f the callback f
1090: 75 6e 63 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69  unction to [sqli
10a0: 74 65 33 5f 65 78 65 63 28 29 5d 20 72 65 74 75  te3_exec()] retu
10b0: 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68  rns non-zero, th
10c0: 65 6e 0a 20 20 73 71 6c 69 74 65 33 5f 65 78 65  en.  sqlite3_exe
10d0: 63 28 29 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  c() will return 
10e0: 53 51 4c 49 54 45 5f 41 42 4f 52 54 2e 0a 20 20  SQLITE_ABORT..  
10f0: 3c 70 3e 0a 20 20 5e 49 66 20 61 20 5b 52 4f 4c  <p>.  ^If a [ROL
1100: 4c 42 41 43 4b 5d 20 6f 70 65 72 61 74 69 6f 6e  LBACK] operation
1110: 20 6f 63 63 75 72 73 20 6f 6e 20 74 68 65 20 73   occurs on the s
1120: 61 6d 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f  ame [database co
1130: 6e 6e 65 63 74 69 6f 6e 5d 20 61 73 0a 20 20 61  nnection] as.  a
1140: 20 70 65 6e 64 69 6e 67 20 72 65 61 64 20 6f 72   pending read or
1150: 20 77 72 69 74 65 2c 20 74 68 65 6e 20 74 68 65   write, then the
1160: 20 70 65 6e 64 69 6e 67 20 72 65 61 64 20 6f 72   pending read or
1170: 20 77 72 69 74 65 20 6d 61 79 20 66 61 69 6c 20   write may fail 
1180: 77 69 74 68 0a 20 20 61 6e 20 53 51 4c 49 54 45  with.  an SQLITE
1190: 5f 41 42 4f 52 54 20 6f 72 20 5b 53 51 4c 49 54  _ABORT or [SQLIT
11a0: 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42 41 43 4b  E_ABORT_ROLLBACK
11b0: 5d 20 65 72 72 6f 72 2e 0a 20 20 3c 70 3e 0a 20  ] error..  <p>. 
11c0: 20 5e 49 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f   ^In addition to
11d0: 20 62 65 69 6e 67 20 61 20 72 65 73 75 6c 74 20   being a result 
11e0: 63 6f 64 65 2c 0a 20 20 74 68 65 20 53 51 4c 49  code,.  the SQLI
11f0: 54 45 5f 41 42 4f 52 54 20 76 61 6c 75 65 20 69  TE_ABORT value i
1200: 73 20 61 6c 73 6f 20 75 73 65 64 20 61 73 20 61  s also used as a
1210: 20 5b 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c   [conflict resol
1220: 75 74 69 6f 6e 20 6d 6f 64 65 5d 0a 20 20 72 65  ution mode].  re
1230: 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  turned from the 
1240: 5b 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 6f 6e  [sqlite3_vtab_on
1250: 5f 63 6f 6e 66 6c 69 63 74 28 29 5d 20 69 6e 74  _conflict()] int
1260: 65 72 66 61 63 65 2e 0a 7d 0a 52 45 53 43 4f 44  erface..}.RESCOD
1270: 45 20 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20  E SQLITE_BUSY   
1280: 20 20 20 20 20 20 35 20 20 7b 0a 20 20 54 68 65        5  {.  The
1290: 20 53 51 4c 49 54 45 5f 42 55 53 59 20 72 65 73   SQLITE_BUSY res
12a0: 75 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74  ult code indicat
12b0: 65 73 20 74 68 61 74 20 74 68 65 20 64 61 74 61  es that the data
12c0: 62 61 73 65 20 66 69 6c 65 20 63 6f 75 6c 64 20  base file could 
12d0: 6e 6f 74 0a 20 20 62 65 20 77 72 69 74 74 65 6e  not.  be written
12e0: 20 28 6f 72 20 69 6e 20 73 6f 6d 65 20 63 61 73   (or in some cas
12f0: 65 73 20 72 65 61 64 29 20 62 65 63 61 75 73 65  es read) because
1300: 20 6f 66 20 63 6f 6e 63 75 72 72 65 6e 74 20 61   of concurrent a
1310: 63 74 69 76 69 74 79 20 62 79 20 0a 20 20 73 6f  ctivity by .  so
1320: 6d 65 20 6f 74 68 65 72 20 5b 64 61 74 61 62 61  me other [databa
1330: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2c 20  se connection], 
1340: 75 73 75 61 6c 6c 79 20 61 20 64 61 74 61 62 61  usually a databa
1350: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e  se connection in
1360: 20 61 0a 20 20 73 65 70 61 72 61 74 65 20 70 72   a.  separate pr
1370: 6f 63 65 73 73 2e 0a 20 20 3c 70 3e 0a 20 20 46  ocess..  <p>.  F
1380: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 70  or example, if p
1390: 72 6f 63 65 73 73 20 41 20 69 73 20 69 6e 20 74  rocess A is in t
13a0: 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 6c  he middle of a l
13b0: 61 72 67 65 20 77 72 69 74 65 20 74 72 61 6e 73  arge write trans
13c0: 61 63 74 69 6f 6e 0a 20 20 61 6e 64 20 61 74 20  action.  and at 
13d0: 74 68 65 20 73 61 6d 65 20 74 69 6d 65 20 70 72  the same time pr
13e0: 6f 63 65 73 73 20 42 20 61 74 74 65 6d 70 74 73  ocess B attempts
13f0: 20 74 6f 20 73 74 61 72 74 20 61 20 6e 65 77 20   to start a new 
1400: 77 72 69 74 65 20 74 72 61 6e 73 61 63 74 69 6f  write transactio
1410: 6e 2c 0a 20 20 70 72 6f 63 65 73 73 20 42 20 77  n,.  process B w
1420: 69 6c 6c 20 67 65 74 20 62 61 63 6b 20 61 6e 20  ill get back an 
1430: 53 51 4c 49 54 45 5f 42 55 53 59 20 72 65 73 75  SQLITE_BUSY resu
1440: 6c 74 20 62 65 63 61 75 73 65 20 53 51 4c 69 74  lt because SQLit
1450: 65 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 73 0a  e only supports.
1460: 20 20 6f 6e 65 20 77 72 69 74 65 72 20 61 74 20    one writer at 
1470: 61 20 74 69 6d 65 2e 20 20 50 72 6f 63 65 73 73  a time.  Process
1480: 20 42 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20   B will need to 
1490: 77 61 69 74 20 66 6f 72 20 70 72 6f 63 65 73 73  wait for process
14a0: 20 41 20 74 6f 20 66 69 6e 69 73 68 0a 20 20 69   A to finish.  i
14b0: 74 73 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 62  ts transaction b
14c0: 65 66 6f 72 65 20 73 74 61 72 74 69 6e 67 20 61  efore starting a
14d0: 20 6e 65 77 20 74 72 61 6e 73 61 63 74 69 6f 6e   new transaction
14e0: 2e 20 20 54 68 65 0a 20 20 5b 73 71 6c 69 74 65  .  The.  [sqlite
14f0: 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29  3_busy_timeout()
1500: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 62  ] and [sqlite3_b
1510: 75 73 79 5f 68 61 6e 64 6c 65 72 28 29 5d 20 69  usy_handler()] i
1520: 6e 74 65 72 66 61 63 65 73 20 61 6e 64 0a 20 20  nterfaces and.  
1530: 74 68 65 20 5b 62 75 73 79 5f 74 69 6d 65 6f 75  the [busy_timeou
1540: 74 20 70 72 61 67 6d 61 5d 20 61 72 65 20 61 76  t pragma] are av
1550: 61 69 6c 61 62 6c 65 20 74 6f 20 70 72 6f 63 65  ailable to proce
1560: 73 73 20 42 20 74 6f 20 68 65 6c 70 20 69 74 20  ss B to help it 
1570: 64 65 61 6c 0a 20 20 77 69 74 68 20 53 51 4c 49  deal.  with SQLI
1580: 54 45 5f 42 55 53 59 20 65 72 72 6f 72 73 2e 0a  TE_BUSY errors..
1590: 20 20 3c 70 3e 0a 20 20 41 6e 20 53 51 4c 49 54    <p>.  An SQLIT
15a0: 45 5f 42 55 53 59 20 65 72 72 6f 72 20 63 61 6e  E_BUSY error can
15b0: 20 6f 63 63 75 72 20 61 74 20 61 6e 79 20 70 6f   occur at any po
15c0: 69 6e 74 20 69 6e 20 61 20 74 72 61 6e 73 61 63  int in a transac
15d0: 74 69 6f 6e 3a 20 77 68 65 6e 20 74 68 65 0a 20  tion: when the. 
15e0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20   transaction is 
15f0: 66 69 72 73 74 20 73 74 61 72 74 65 64 2c 20 64  first started, d
1600: 75 72 69 6e 67 20 61 6e 79 20 77 72 69 74 65 20  uring any write 
1610: 6f 72 20 75 70 64 61 74 65 20 6f 70 65 72 61 74  or update operat
1620: 69 6f 6e 73 2c 20 6f 72 0a 20 20 77 68 65 6e 20  ions, or.  when 
1630: 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  the transaction 
1640: 63 6f 6d 6d 69 74 73 2e 0a 20 20 54 6f 20 61 76  commits..  To av
1650: 6f 69 64 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67  oid encountering
1660: 20 53 51 4c 49 54 45 5f 42 55 53 59 20 65 72 72   SQLITE_BUSY err
1670: 6f 72 73 20 69 6e 20 74 68 65 20 6d 69 64 64 6c  ors in the middl
1680: 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69  e of a transacti
1690: 6f 6e 2c 0a 20 20 74 68 65 20 61 70 70 6c 69 63  on,.  the applic
16a0: 61 74 69 6f 6e 20 63 61 6e 20 75 73 65 20 5b 42  ation can use [B
16b0: 45 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 5d 20  EGIN IMMEDIATE] 
16c0: 69 6e 73 74 65 61 64 20 6f 66 20 6a 75 73 74 20  instead of just 
16d0: 5b 42 45 47 49 4e 5d 20 74 6f 0a 20 20 73 74 61  [BEGIN] to.  sta
16e0: 72 74 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  rt a transaction
16f0: 2e 20 20 54 68 65 20 5b 42 45 47 49 4e 20 49 4d  .  The [BEGIN IM
1700: 4d 45 44 49 41 54 45 5d 20 63 6f 6d 6d 61 6e 64  MEDIATE] command
1710: 20 6d 69 67 68 74 20 69 74 73 65 6c 66 20 72 65   might itself re
1720: 74 75 72 6e 0a 20 20 53 51 4c 49 54 45 5f 42 55  turn.  SQLITE_BU
1730: 53 59 2c 20 62 75 74 20 69 66 20 69 74 20 73 75  SY, but if it su
1740: 63 63 65 65 64 73 2c 20 74 68 65 6e 20 53 51 4c  cceeds, then SQL
1750: 69 74 65 20 67 75 61 72 61 6e 74 65 65 73 20 74  ite guarantees t
1760: 68 61 74 20 6e 6f 20 0a 20 20 73 75 62 73 65 71  hat no .  subseq
1770: 75 65 6e 74 20 6f 70 65 72 61 74 69 6f 6e 73 20  uent operations 
1780: 6f 6e 20 74 68 65 20 73 61 6d 65 20 64 61 74 61  on the same data
1790: 62 61 73 65 20 74 68 72 6f 75 67 68 20 74 68 65  base through the
17a0: 20 6e 65 78 74 20 5b 43 4f 4d 4d 49 54 5d 20 0a   next [COMMIT] .
17b0: 20 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 53 51    will return SQ
17c0: 4c 49 54 45 5f 42 55 53 59 2e 0a 20 20 3c 70 3e  LITE_BUSY..  <p>
17d0: 0a 20 20 53 65 65 20 61 6c 73 6f 3a 20 20 5b 53  .  See also:  [S
17e0: 51 4c 49 54 45 5f 42 55 53 59 5f 52 45 43 4f 56  QLITE_BUSY_RECOV
17f0: 45 52 59 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45  ERY] and [SQLITE
1800: 5f 42 55 53 59 5f 53 4e 41 50 53 48 4f 54 5d 2e  _BUSY_SNAPSHOT].
1810: 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20 53 51 4c  .  <p>.  The SQL
1820: 49 54 45 5f 42 55 53 59 20 72 65 73 75 6c 74 20  ITE_BUSY result 
1830: 63 6f 64 65 20 64 69 66 66 65 72 73 20 66 72 6f  code differs fro
1840: 6d 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44  m [SQLITE_LOCKED
1850: 5d 20 69 6e 20 74 68 61 74 0a 20 20 53 51 4c 49  ] in that.  SQLI
1860: 54 45 5f 42 55 53 59 20 69 6e 64 69 63 61 74 65  TE_BUSY indicate
1870: 73 20 61 20 63 6f 6e 66 6c 69 63 74 20 77 69 74  s a conflict wit
1880: 68 20 61 0a 20 20 73 65 70 61 72 61 74 65 20 5b  h a.  separate [
1890: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
18a0: 69 6f 6e 5d 2c 20 70 72 6f 62 61 62 6c 79 20 69  ion], probably i
18b0: 6e 20 61 20 73 65 70 61 72 61 74 65 20 70 72 6f  n a separate pro
18c0: 63 65 73 73 2c 0a 20 20 77 68 65 72 65 61 73 20  cess,.  whereas 
18d0: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20  [SQLITE_LOCKED] 
18e0: 0a 20 20 69 6e 64 69 63 61 74 65 73 20 61 20 63  .  indicates a c
18f0: 6f 6e 66 6c 69 63 74 20 77 69 74 68 69 6e 20 74  onflict within t
1900: 68 65 20 73 61 6d 65 20 5b 64 61 74 61 62 61 73  he same [databas
1910: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28 6f  e connection] (o
1920: 72 20 73 6f 6d 65 74 69 6d 65 73 0a 20 20 61 20  r sometimes.  a 
1930: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1940: 69 6f 6e 20 77 69 74 68 20 61 20 5b 73 68 61 72  ion with a [shar
1950: 65 64 20 63 61 63 68 65 5d 29 2e 0a 7d 0a 52 45  ed cache])..}.RE
1960: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 4c 4f 43  SCODE SQLITE_LOC
1970: 4b 45 44 20 20 20 20 20 20 20 36 20 20 7b 0a 20  KED       6  {. 
1980: 20 54 68 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b   The SQLITE_LOCK
1990: 45 44 20 72 65 73 75 6c 74 20 63 6f 64 65 20 69  ED result code i
19a0: 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61 20  ndicates that a 
19b0: 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 20  write operation 
19c0: 63 6f 75 6c 64 20 6e 6f 74 0a 20 20 63 6f 6e 74  could not.  cont
19d0: 69 6e 75 65 20 62 65 63 61 75 73 65 20 6f 66 20  inue because of 
19e0: 61 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 69  a conflict withi
19f0: 6e 20 74 68 65 20 73 61 6d 65 20 5b 64 61 74 61  n the same [data
1a00: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
1a10: 20 6f 72 0a 20 20 61 20 63 6f 6e 66 6c 69 63 74   or.  a conflict
1a20: 20 77 69 74 68 20 61 20 64 69 66 66 65 72 65 6e   with a differen
1a30: 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  t database conne
1a40: 63 74 69 6f 6e 20 74 68 61 74 20 75 73 65 73 20  ction that uses 
1a50: 61 20 5b 73 68 61 72 65 64 20 63 61 63 68 65 5d  a [shared cache]
1a60: 2e 0a 20 20 3c 70 3e 0a 20 20 46 6f 72 20 65 78  ..  <p>.  For ex
1a70: 61 6d 70 6c 65 2c 20 61 20 5b 44 52 4f 50 20 54  ample, a [DROP T
1a80: 41 42 4c 45 5d 20 73 74 61 74 65 6d 65 6e 74 20  ABLE] statement 
1a90: 63 61 6e 6e 6f 74 20 62 65 20 72 75 6e 20 77 68  cannot be run wh
1aa0: 69 6c 65 20 61 6e 6f 74 68 65 72 20 74 68 72 65  ile another thre
1ab0: 61 64 0a 20 20 69 73 20 72 65 61 64 69 6e 67 20  ad.  is reading 
1ac0: 66 72 6f 6d 20 74 68 61 74 20 74 61 62 6c 65 20  from that table 
1ad0: 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b 64 61 74  on the same [dat
1ae0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1af0: 5d 20 62 65 63 61 75 73 65 20 0a 20 20 64 72 6f  ] because .  dro
1b00: 70 70 69 6e 67 20 74 68 65 20 74 61 62 6c 65 20  pping the table 
1b10: 77 6f 75 6c 64 20 64 65 6c 65 74 65 20 74 68 65  would delete the
1b20: 20 74 61 62 6c 65 20 6f 75 74 20 66 72 6f 6d 20   table out from 
1b30: 75 6e 64 65 72 20 74 68 65 20 63 6f 6e 63 75 72  under the concur
1b40: 72 65 6e 74 0a 20 20 72 65 61 64 65 72 2e 0a 20  rent.  reader.. 
1b50: 20 3c 70 3e 0a 20 20 54 68 65 20 53 51 4c 49 54   <p>.  The SQLIT
1b60: 45 5f 4c 4f 43 4b 45 44 20 72 65 73 75 6c 74 20  E_LOCKED result 
1b70: 63 6f 64 65 20 64 69 66 66 65 72 73 20 66 72 6f  code differs fro
1b80: 6d 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20  m [SQLITE_BUSY] 
1b90: 69 6e 20 74 68 61 74 0a 20 20 53 51 4c 49 54 45  in that.  SQLITE
1ba0: 5f 4c 4f 43 4b 45 44 20 69 6e 64 69 63 61 74 65  _LOCKED indicate
1bb0: 73 20 61 20 63 6f 6e 66 6c 69 63 74 20 6f 6e 20  s a conflict on 
1bc0: 74 68 65 20 73 61 6d 65 20 5b 64 61 74 61 62 61  the same [databa
1bd0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 0a 20  se connection]. 
1be0: 20 28 6f 72 20 6f 6e 20 61 20 63 6f 6e 6e 65 63   (or on a connec
1bf0: 74 69 6f 6e 20 77 69 74 68 20 61 20 5b 73 68 61  tion with a [sha
1c00: 72 65 64 20 63 61 63 68 65 5d 29 20 77 68 65 72  red cache]) wher
1c10: 65 61 73 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  eas [SQLITE_BUSY
1c20: 5d 20 69 6e 64 69 63 61 74 65 73 0a 20 20 61 20  ] indicates.  a 
1c30: 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 20 61 20  conflict with a 
1c40: 64 69 66 66 65 72 65 6e 74 20 64 61 74 61 62 61  different databa
1c50: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70  se connection, p
1c60: 72 6f 62 61 62 6c 79 20 69 6e 20 61 20 64 69 66  robably in a dif
1c70: 66 65 72 65 6e 74 0a 20 20 70 72 6f 63 65 73 73  ferent.  process
1c80: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
1c90: 54 45 5f 4e 4f 4d 45 4d 20 20 20 20 20 20 20 20  TE_NOMEM        
1ca0: 37 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  7   {.  The SQLI
1cb0: 54 45 5f 4e 4f 4d 45 4d 20 72 65 73 75 6c 74 20  TE_NOMEM result 
1cc0: 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20 74  code indicates t
1cd0: 68 61 74 20 53 51 4c 69 74 65 20 77 61 73 20 75  hat SQLite was u
1ce0: 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74  nable to allocat
1cf0: 65 0a 20 20 61 6c 6c 20 74 68 65 20 6d 65 6d 6f  e.  all the memo
1d00: 72 79 20 69 74 20 6e 65 65 64 65 64 20 74 6f 20  ry it needed to 
1d10: 63 6f 6d 70 6c 65 74 65 20 74 68 65 20 6f 70 65  complete the ope
1d20: 72 61 74 69 6f 6e 2e 20 20 49 6e 20 6f 74 68 65  ration.  In othe
1d30: 72 20 77 6f 72 64 73 2c 20 61 6e 0a 20 20 69 6e  r words, an.  in
1d40: 74 65 72 6e 61 6c 20 63 61 6c 6c 20 74 6f 20 5b  ternal call to [
1d50: 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
1d60: 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 72 65  ] or [sqlite3_re
1d70: 61 6c 6c 6f 63 28 29 5d 20 68 61 73 20 66 61 69  alloc()] has fai
1d80: 6c 65 64 20 69 6e 0a 20 20 61 20 63 61 73 65 20  led in.  a case 
1d90: 77 68 65 72 65 20 74 68 65 20 6d 65 6d 6f 72 79  where the memory
1da0: 20 62 65 69 6e 67 20 61 6c 6c 6f 63 61 74 65 64   being allocated
1db0: 20 77 61 73 20 72 65 71 75 69 72 65 64 20 69 6e   was required in
1dc0: 20 6f 72 64 65 72 20 74 6f 20 63 6f 6e 74 69 6e   order to contin
1dd0: 75 65 0a 20 20 74 68 65 20 6f 70 65 72 61 74 69  ue.  the operati
1de0: 6f 6e 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  on..}.RESCODE SQ
1df0: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20  LITE_READONLY   
1e00: 20 20 38 20 20 20 7b 0a 20 20 54 68 65 20 53 51    8   {.  The SQ
1e10: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 72 65  LITE_READONLY re
1e20: 73 75 6c 74 20 63 6f 64 65 20 69 73 20 72 65 74  sult code is ret
1e30: 75 72 6e 65 64 20 77 68 65 6e 20 61 6e 20 61 74  urned when an at
1e40: 74 65 6d 70 74 20 69 73 20 6d 61 64 65 20 74 6f  tempt is made to
1e50: 20 0a 20 20 61 6c 74 65 72 20 73 6f 6d 65 20 64   .  alter some d
1e60: 61 74 61 20 66 6f 72 20 77 68 69 63 68 20 74 68  ata for which th
1e70: 65 20 63 75 72 72 65 6e 74 20 64 61 74 61 62 61  e current databa
1e80: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 64 6f  se connection do
1e90: 65 73 20 6e 6f 74 20 68 61 76 65 0a 20 20 77 72  es not have.  wr
1ea0: 69 74 65 20 70 65 72 6d 69 73 73 69 6f 6e 2e 0a  ite permission..
1eb0: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
1ec0: 5f 49 4e 54 45 52 52 55 50 54 20 20 20 20 39 20  _INTERRUPT    9 
1ed0: 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45    {.  The SQLITE
1ee0: 5f 49 4e 54 45 52 52 55 50 54 20 72 65 73 75 6c  _INTERRUPT resul
1ef0: 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73  t code indicates
1f00: 20 74 68 61 74 20 61 6e 20 6f 70 65 72 61 74 69   that an operati
1f10: 6f 6e 20 77 61 73 0a 20 20 69 6e 74 65 72 72 75  on was.  interru
1f20: 70 74 65 64 20 62 79 20 74 68 65 20 5b 73 71 6c  pted by the [sql
1f30: 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29  ite3_interrupt()
1f40: 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 20 20 53  ] interface..  S
1f50: 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45  ee also: [SQLITE
1f60: 5f 41 42 4f 52 54 5d 0a 7d 0a 52 45 53 43 4f 44  _ABORT].}.RESCOD
1f70: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 20  E SQLITE_IOERR  
1f80: 20 20 20 20 20 31 30 20 20 20 7b 0a 20 20 54 68       10   {.  Th
1f90: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 72  e SQLITE_IOERR r
1fa0: 65 73 75 6c 74 20 63 6f 64 65 20 73 61 79 73 20  esult code says 
1fb0: 74 68 61 74 20 74 68 65 20 6f 70 65 72 61 74 69  that the operati
1fc0: 6f 6e 20 63 6f 75 6c 64 20 6e 6f 74 20 66 69 6e  on could not fin
1fd0: 69 73 68 0a 20 20 62 65 63 61 75 73 65 20 74 68  ish.  because th
1fe0: 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  e operating syst
1ff0: 65 6d 20 72 65 70 6f 72 74 65 64 20 61 6e 20 49  em reported an I
2000: 2f 4f 20 65 72 72 6f 72 2e 0a 20 20 3c 70 3e 0a  /O error..  <p>.
2010: 20 20 41 20 66 75 6c 6c 20 64 69 73 6b 20 64 72    A full disk dr
2020: 69 76 65 20 77 69 6c 6c 20 6e 6f 72 6d 61 6c 6c  ive will normall
2030: 79 20 67 69 76 65 20 61 6e 20 5b 53 51 4c 49 54  y give an [SQLIT
2040: 45 5f 46 55 4c 4c 5d 20 65 72 72 6f 72 20 72 61  E_FULL] error ra
2050: 74 68 65 72 20 74 68 61 6e 0a 20 20 61 6e 20 53  ther than.  an S
2060: 51 4c 49 54 45 5f 49 4f 45 52 52 20 65 72 72 6f  QLITE_IOERR erro
2070: 72 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65 72 65  r..  <p>.  There
2080: 20 61 72 65 20 6d 61 6e 79 20 64 69 66 66 65 72   are many differ
2090: 65 6e 74 20 65 78 74 65 6e 64 65 64 20 72 65 73  ent extended res
20a0: 75 6c 74 20 63 6f 64 65 73 20 66 6f 72 20 49 2f  ult codes for I/
20b0: 4f 20 65 72 72 6f 72 73 20 74 68 61 74 0a 20 20  O errors that.  
20c0: 69 64 65 6e 74 69 66 79 20 74 68 65 20 73 70 65  identify the spe
20d0: 63 69 66 69 63 20 49 2f 4f 20 6f 70 65 72 61 74  cific I/O operat
20e0: 69 6f 6e 20 74 68 61 74 20 66 61 69 6c 65 64 2e  ion that failed.
20f0: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
2100: 45 5f 43 4f 52 52 55 50 54 20 20 20 20 20 31 31  E_CORRUPT     11
2110: 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54     {.  The SQLIT
2120: 45 5f 43 4f 52 52 55 50 54 20 72 65 73 75 6c 74  E_CORRUPT result
2130: 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20   code indicates 
2140: 74 68 61 74 20 74 68 65 20 64 61 74 61 62 61 73  that the databas
2150: 65 20 66 69 6c 65 20 68 61 73 0a 20 20 62 65 65  e file has.  bee
2160: 6e 20 63 6f 72 72 75 70 74 65 64 2e 20 20 53 65  n corrupted.  Se
2170: 65 20 74 68 65 20 5b 48 6f 77 20 54 6f 20 43 6f  e the [How To Co
2180: 72 72 75 70 74 20 59 6f 75 72 20 44 61 74 61 62  rrupt Your Datab
2190: 61 73 65 20 46 69 6c 65 73 5d 20 66 6f 72 0a 20  ase Files] for. 
21a0: 20 66 75 72 74 68 65 72 20 64 69 73 63 75 73 73   further discuss
21b0: 69 6f 6e 20 6f 6e 20 68 6f 77 20 63 6f 72 72 75  ion on how corru
21c0: 70 74 69 6f 6e 20 63 61 6e 20 6f 63 63 75 72 2e  ption can occur.
21d0: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
21e0: 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20 20 31 32  E_NOTFOUND    12
21f0: 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54     {.  The SQLIT
2200: 45 5f 4e 4f 54 46 4f 55 4e 44 20 72 65 73 75 6c  E_NOTFOUND resul
2210: 74 20 63 6f 64 65 20 69 73 20 75 73 65 64 20 69  t code is used i
2220: 6e 20 74 77 6f 20 63 6f 6e 74 65 78 74 73 2e 0a  n two contexts..
2230: 20 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e    SQLITE_NOTFOUN
2240: 44 20 63 61 6e 20 62 65 20 72 65 74 75 72 6e 65  D can be returne
2250: 64 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74 65  d by the [sqlite
2260: 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29  3_file_control()
2270: 5d 20 69 6e 74 65 72 66 61 63 65 0a 20 20 74 6f  ] interface.  to
2280: 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 20 74   indicate that t
2290: 68 65 20 5b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  he [file control
22a0: 20 6f 70 63 6f 64 65 5d 20 70 61 73 73 65 64 20   opcode] passed 
22b0: 61 73 20 74 68 65 20 74 68 69 72 64 20 61 72 67  as the third arg
22c0: 75 6d 65 6e 74 0a 20 20 77 61 73 20 6e 6f 74 20  ument.  was not 
22d0: 72 65 63 6f 67 6e 69 7a 65 64 20 62 79 20 74 68  recognized by th
22e0: 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 5b 56 46  e underlying [VF
22f0: 53 5d 2e 0a 20 20 53 51 4c 49 54 45 5f 4e 4f 54  S]..  SQLITE_NOT
2300: 46 4f 55 4e 44 20 63 61 6e 20 61 6c 73 6f 20 62  FOUND can also b
2310: 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  e returned by th
2320: 65 20 78 53 65 74 53 79 73 74 65 6d 43 61 6c 6c  e xSetSystemCall
2330: 28 29 20 6d 65 74 68 6f 64 20 6f 66 0a 20 20 61  () method of.  a
2340: 6e 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20  n [sqlite3_vfs] 
2350: 6f 62 6a 65 63 74 2e 0a 20 20 3c 70 3e 0a 20 20  object..  <p>.  
2360: 54 68 65 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f  The SQLITE_NOTFO
2370: 55 4e 44 20 72 65 73 75 6c 74 20 63 6f 64 65 20  UND result code 
2380: 69 73 20 61 6c 73 6f 20 75 73 65 64 0a 20 20 69  is also used.  i
2390: 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 74 68 65  nternally by the
23a0: 20 53 51 4c 69 74 65 20 69 6d 70 6c 65 6d 65 6e   SQLite implemen
23b0: 74 61 74 69 6f 6e 2c 20 62 75 74 20 74 68 6f 73  tation, but thos
23c0: 65 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 73 20  e internal uses 
23d0: 61 72 65 0a 20 20 6e 6f 74 20 65 78 70 6f 73 65  are.  not expose
23e0: 64 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61  d to the applica
23f0: 74 69 6f 6e 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  tion..}.RESCODE 
2400: 53 51 4c 49 54 45 5f 46 55 4c 4c 20 20 20 20 20  SQLITE_FULL     
2410: 20 20 20 31 33 20 20 20 7b 0a 20 20 54 68 65 20     13   {.  The 
2420: 53 51 4c 49 54 45 5f 46 55 4c 4c 20 72 65 73 75  SQLITE_FULL resu
2430: 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65  lt code indicate
2440: 73 20 74 68 61 74 20 61 20 77 72 69 74 65 20 63  s that a write c
2450: 6f 75 6c 64 20 6e 6f 74 20 63 6f 6d 70 6c 65 74  ould not complet
2460: 65 0a 20 20 62 65 63 61 75 73 65 20 74 68 65 20  e.  because the 
2470: 64 69 73 6b 20 69 73 20 66 75 6c 6c 2e 20 20 4e  disk is full.  N
2480: 6f 74 65 20 74 68 61 74 20 74 68 69 73 20 65 72  ote that this er
2490: 72 6f 72 20 63 61 6e 20 6f 63 63 75 72 20 77 68  ror can occur wh
24a0: 65 6e 20 74 72 79 69 6e 67 0a 20 20 74 6f 20 77  en trying.  to w
24b0: 72 69 74 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  rite information
24c0: 20 69 6e 74 6f 20 74 68 65 20 6d 61 69 6e 20 64   into the main d
24d0: 61 74 61 62 61 73 65 20 66 69 6c 65 2c 20 6f 72  atabase file, or
24e0: 20 69 74 20 63 61 6e 20 61 6c 73 6f 0a 20 20 6f   it can also.  o
24f0: 63 63 75 72 20 77 68 65 6e 20 77 72 69 74 69 6e  ccur when writin
2500: 67 20 69 6e 74 6f 20 5b 74 65 6d 70 6f 72 61 72  g into [temporar
2510: 79 20 64 69 73 6b 20 66 69 6c 65 73 5d 2e 0a 20  y disk files].. 
2520: 20 3c 70 3e 0a 20 20 53 6f 6d 65 74 69 6d 65 73   <p>.  Sometimes
2530: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 65 6e   applications en
2540: 63 6f 75 6e 74 65 72 20 74 68 69 73 20 65 72 72  counter this err
2550: 6f 72 20 65 76 65 6e 20 74 68 6f 75 67 68 20 74  or even though t
2560: 68 65 72 65 20 69 73 20 61 6e 0a 20 20 61 62 75  here is an.  abu
2570: 6e 64 61 6e 63 65 20 6f 66 20 70 72 69 6d 61 72  ndance of primar
2580: 79 20 64 69 73 6b 20 73 70 61 63 65 20 62 65 63  y disk space bec
2590: 61 75 73 65 20 74 68 65 20 65 72 72 6f 72 20 6f  ause the error o
25a0: 63 63 75 72 73 20 77 68 65 6e 20 77 72 69 74 69  ccurs when writi
25b0: 6e 67 0a 20 20 69 6e 74 6f 20 5b 74 65 6d 70 6f  ng.  into [tempo
25c0: 72 61 72 79 20 64 69 73 6b 20 66 69 6c 65 73 5d  rary disk files]
25d0: 20 6f 6e 20 61 20 73 79 73 74 65 6d 20 77 68 65   on a system whe
25e0: 72 65 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  re temporary fil
25f0: 65 73 20 61 72 65 20 73 74 6f 72 65 64 0a 20 20  es are stored.  
2600: 6f 6e 20 61 20 73 65 70 61 72 61 74 65 20 70 61  on a separate pa
2610: 72 74 69 74 69 6f 6e 20 77 69 74 68 20 6d 75 63  rtition with muc
2620: 68 20 6c 65 73 73 20 73 70 61 63 65 20 74 68 61  h less space tha
2630: 74 20 74 68 65 20 70 72 69 6d 61 72 79 20 64 69  t the primary di
2640: 73 6b 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  sk..}.RESCODE SQ
2650: 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 20 20  LITE_CANTOPEN   
2660: 20 31 34 20 20 20 7b 0a 20 20 54 68 65 20 53 51   14   {.  The SQ
2670: 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 72 65  LITE_CANTOPEN re
2680: 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61  sult code indica
2690: 74 65 73 20 74 68 61 74 20 53 51 4c 69 74 65 20  tes that SQLite 
26a0: 77 61 73 20 75 6e 61 62 6c 65 20 74 6f 0a 20 20  was unable to.  
26b0: 6f 70 65 6e 20 61 20 66 69 6c 65 2e 20 20 54 68  open a file.  Th
26c0: 65 20 66 69 6c 65 20 69 6e 20 71 75 65 73 74 69  e file in questi
26d0: 6f 6e 20 6d 69 67 68 74 20 62 65 20 61 20 70 72  on might be a pr
26e0: 69 6d 61 72 79 20 64 61 74 61 62 61 73 65 20 66  imary database f
26f0: 69 6c 65 0a 20 20 6f 72 20 6f 6e 65 20 6f 66 20  ile.  or one of 
2700: 73 65 76 65 72 61 6c 20 5b 74 65 6d 70 6f 72 61  several [tempora
2710: 72 79 20 64 69 73 6b 20 66 69 6c 65 73 5d 2e 0a  ry disk files]..
2720: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
2730: 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20 31 35 20  _PROTOCOL    15 
2740: 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45    {.  The SQLITE
2750: 5f 50 52 4f 54 4f 43 4f 4c 20 72 65 73 75 6c 74  _PROTOCOL result
2760: 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20   code indicates 
2770: 61 20 70 72 6f 62 6c 65 6d 20 77 69 74 68 20 74  a problem with t
2780: 68 65 20 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 0a  he file locking.
2790: 20 20 70 72 6f 74 6f 63 6f 6c 20 75 73 65 64 20    protocol used 
27a0: 62 79 20 53 51 4c 69 74 65 2e 20 20 54 68 65 20  by SQLite.  The 
27b0: 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f 4c 20  SQLITE_PROTOCOL 
27c0: 65 72 72 6f 72 20 69 73 20 63 75 72 72 65 6e 74  error is current
27d0: 6c 79 20 6f 6e 6c 79 0a 20 20 72 65 74 75 72 6e  ly only.  return
27e0: 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20 5b 57  ed when using [W
27f0: 41 4c 20 6d 6f 64 65 5d 20 61 6e 64 20 61 74 74  AL mode] and att
2800: 65 6d 70 74 69 6e 67 20 74 6f 20 73 74 61 72 74  empting to start
2810: 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74 69   a new transacti
2820: 6f 6e 2e 0a 20 20 54 68 65 72 65 20 69 73 20 61  on..  There is a
2830: 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20   race condition 
2840: 74 68 61 74 20 63 61 6e 20 6f 63 63 75 72 20 77  that can occur w
2850: 68 65 6e 20 74 77 6f 20 73 65 70 61 72 61 74 65  hen two separate
2860: 20 0a 20 20 5b 64 61 74 61 62 61 73 65 20 63 6f   .  [database co
2870: 6e 6e 65 63 74 69 6f 6e 73 5d 20 62 6f 74 68 20  nnections] both 
2880: 74 72 79 20 74 6f 20 73 74 61 72 74 20 61 20 74  try to start a t
2890: 72 61 6e 73 61 63 74 69 6f 6e 20 61 74 20 74 68  ransaction at th
28a0: 65 20 73 61 6d 65 20 74 69 6d 65 0a 20 20 69 6e  e same time.  in
28b0: 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 20 20 54 68   [WAL mode].  Th
28c0: 65 20 6c 6f 73 65 72 20 6f 66 20 74 68 65 20 72  e loser of the r
28d0: 61 63 65 20 62 61 63 6b 73 20 6f 66 66 20 61 6e  ace backs off an
28e0: 64 20 74 72 69 65 73 20 61 67 61 69 6e 2c 20 61  d tries again, a
28f0: 66 74 65 72 0a 20 20 61 20 62 72 69 65 66 20 64  fter.  a brief d
2900: 65 6c 61 79 2e 20 20 49 66 20 74 68 65 20 73 61  elay.  If the sa
2910: 6d 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6c 6f  me connection lo
2920: 73 65 73 20 74 68 65 20 6c 6f 63 6b 69 6e 67 20  ses the locking 
2930: 72 61 63 65 20 64 6f 7a 65 6e 73 0a 20 20 6f 66  race dozens.  of
2940: 20 74 69 6d 65 73 20 6f 76 65 72 20 61 20 73 70   times over a sp
2950: 61 6e 20 6f 66 20 6d 75 6c 74 69 70 6c 65 20 73  an of multiple s
2960: 65 63 6f 6e 64 73 2c 20 69 74 20 77 69 6c 6c 20  econds, it will 
2970: 65 76 65 6e 74 75 61 6c 6c 79 20 67 69 76 65 20  eventually give 
2980: 75 70 20 61 6e 64 0a 20 20 72 65 74 75 72 6e 20  up and.  return 
2990: 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f 4c 2e  SQLITE_PROTOCOL.
29a0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 50 52 4f    The SQLITE_PRO
29b0: 54 4f 43 4f 4c 20 65 72 72 6f 72 20 73 68 6f 75  TOCOL error shou
29c0: 6c 64 20 61 70 70 65 61 72 20 69 6e 20 70 72 61  ld appear in pra
29d0: 63 74 69 63 65 0a 20 20 76 65 72 79 2c 20 76 65  ctice.  very, ve
29e0: 72 79 20 72 61 72 65 6c 79 2c 20 61 6e 64 20 6f  ry rarely, and o
29f0: 6e 6c 79 20 77 68 65 6e 20 74 68 65 72 65 20 61  nly when there a
2a00: 72 65 20 6d 61 6e 79 20 73 65 70 61 72 61 74 65  re many separate
2a10: 20 70 72 6f 63 65 73 73 65 73 20 61 6c 6c 0a 20   processes all. 
2a20: 20 63 6f 6d 70 65 74 69 6e 67 20 69 6e 74 65 6e   competing inten
2a30: 73 65 6c 79 20 74 6f 20 77 72 69 74 65 20 74 6f  sely to write to
2a40: 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61   the same databa
2a50: 73 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  se..}.RESCODE SQ
2a60: 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 20 20 20  LITE_EMPTY      
2a70: 20 31 36 20 20 20 7b 0a 20 20 54 68 65 20 53 51   16   {.  The SQ
2a80: 4c 49 54 45 5f 45 4d 50 54 59 20 72 65 73 75 6c  LITE_EMPTY resul
2a90: 74 20 63 6f 64 65 20 69 73 20 6e 6f 74 20 63 75  t code is not cu
2aa0: 72 72 65 6e 74 6c 79 20 75 73 65 64 2e 0a 7d 0a  rrently used..}.
2ab0: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 53  RESCODE SQLITE_S
2ac0: 43 48 45 4d 41 20 20 20 20 20 20 31 37 20 20 20  CHEMA      17   
2ad0: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 53  {.  The SQLITE_S
2ae0: 43 48 45 4d 41 20 72 65 73 75 6c 74 20 63 6f 64  CHEMA result cod
2af0: 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74  e indicates that
2b00: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
2b10: 68 65 6d 61 0a 20 20 68 61 73 20 63 68 61 6e 67  hema.  has chang
2b20: 65 64 2e 20 20 54 68 69 73 20 72 65 73 75 6c 74  ed.  This result
2b30: 20 63 6f 64 65 20 63 61 6e 20 62 65 20 72 65 74   code can be ret
2b40: 75 72 6e 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69  urned from [sqli
2b50: 74 65 33 5f 73 74 65 70 28 29 5d 20 66 6f 72 0a  te3_step()] for.
2b60: 20 20 61 20 5b 70 72 65 70 61 72 65 64 20 73 74    a [prepared st
2b70: 61 74 65 6d 65 6e 74 5d 20 74 68 61 74 20 77 61  atement] that wa
2b80: 73 20 67 65 6e 65 72 61 74 65 64 20 75 73 69 6e  s generated usin
2b90: 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  g [sqlite3_prepa
2ba0: 72 65 28 29 5d 20 6f 72 0a 20 20 5b 73 71 6c 69  re()] or.  [sqli
2bb0: 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d  te3_prepare16()]
2bc0: 2e 20 20 49 66 20 74 68 65 20 64 61 74 61 62 61  .  If the databa
2bd0: 73 65 20 73 63 68 65 6d 61 20 77 61 73 20 63 68  se schema was ch
2be0: 61 6e 67 65 64 20 62 79 20 73 6f 6d 65 20 6f 74  anged by some ot
2bf0: 68 65 72 0a 20 20 70 72 6f 63 65 73 73 20 69 6e  her.  process in
2c00: 20 62 65 74 77 65 65 6e 20 74 68 65 20 74 69 6d   between the tim
2c10: 65 20 74 68 61 74 20 74 68 65 20 73 74 61 74 65  e that the state
2c20: 6d 65 6e 74 20 77 61 73 20 70 72 65 70 61 72 65  ment was prepare
2c30: 64 20 61 6e 64 20 74 68 65 20 74 69 6d 65 0a 20  d and the time. 
2c40: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 77   the statement w
2c50: 61 73 20 72 75 6e 2c 20 74 68 69 73 20 65 72 72  as run, this err
2c60: 6f 72 20 63 61 6e 20 72 65 73 75 6c 74 2e 0a 20  or can result.. 
2c70: 20 3c 70 3e 0a 20 20 49 66 20 61 20 5b 70 72 65   <p>.  If a [pre
2c80: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
2c90: 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 66 72   is generated fr
2ca0: 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  om [sqlite3_prep
2cb0: 61 72 65 5f 76 32 28 29 5d 20 74 68 65 6e 0a 20  are_v2()] then. 
2cc0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 69   the statement i
2cd0: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
2ce0: 72 65 2d 70 72 65 70 61 72 65 64 20 69 66 20 74  re-prepared if t
2cf0: 68 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65  he schema change
2d00: 73 2c 20 75 70 20 74 6f 0a 20 20 5b 53 51 4c 49  s, up to.  [SQLI
2d10: 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45  TE_MAX_SCHEMA_RE
2d20: 54 52 59 5d 20 74 69 6d 65 73 20 28 64 65 66 61  TRY] times (defa
2d30: 75 6c 74 3a 20 35 30 29 2e 20 20 54 68 65 20 5b  ult: 50).  The [
2d40: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 0a  sqlite3_step()].
2d50: 20 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c    interface will
2d60: 20 6f 6e 6c 79 20 72 65 74 75 72 6e 20 53 51 4c   only return SQL
2d70: 49 54 45 5f 53 43 48 45 4d 41 20 62 61 63 6b 20  ITE_SCHEMA back 
2d80: 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  to the applicati
2d90: 6f 6e 20 69 66 20 0a 20 20 74 68 65 20 66 61 69  on if .  the fai
2da0: 6c 75 72 65 20 70 65 72 73 69 73 74 73 20 61 66  lure persists af
2db0: 74 65 72 20 74 68 65 73 65 20 6d 61 6e 79 20 72  ter these many r
2dc0: 65 74 72 69 65 73 2e 0a 7d 0a 52 45 53 43 4f 44  etries..}.RESCOD
2dd0: 45 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47 20  E SQLITE_TOOBIG 
2de0: 20 20 20 20 20 31 38 20 20 20 7b 0a 20 20 54 68       18   {.  Th
2df0: 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47 20  e SQLITE_TOOBIG 
2e00: 65 72 72 6f 72 20 63 6f 64 65 20 69 6e 64 69 63  error code indic
2e10: 61 74 65 73 20 74 68 61 74 20 61 20 73 74 72 69  ates that a stri
2e20: 6e 67 20 6f 72 20 42 4c 4f 42 20 77 61 73 0a 20  ng or BLOB was. 
2e30: 20 74 6f 6f 20 6c 61 72 67 65 2e 20 20 54 68 65   too large.  The
2e40: 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d   default maximum
2e50: 20 6c 65 6e 67 74 68 20 6f 66 20 61 20 73 74 72   length of a str
2e60: 69 6e 67 20 6f 72 20 42 4c 4f 42 20 69 6e 20 53  ing or BLOB in S
2e70: 51 4c 69 74 65 20 69 73 0a 20 20 31 2c 30 30 30  QLite is.  1,000
2e80: 2c 30 30 30 2c 30 30 30 20 62 79 74 65 73 2e 20  ,000,000 bytes. 
2e90: 20 54 68 69 73 20 6d 61 78 69 6d 75 6d 20 6c 65   This maximum le
2ea0: 6e 67 74 68 20 63 61 6e 20 62 65 20 63 68 61 6e  ngth can be chan
2eb0: 67 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ged at compile-t
2ec0: 69 6d 65 0a 20 20 75 73 69 6e 67 20 74 68 65 20  ime.  using the 
2ed0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47  [SQLITE_MAX_LENG
2ee0: 54 48 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  TH] compile-time
2ef0: 20 6f 70 74 69 6f 6e 2c 20 6f 72 20 61 74 20 72   option, or at r
2f00: 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20 20  un-time using.  
2f10: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d  the [sqlite3_lim
2f20: 69 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 4c  it](db,[SQLITE_L
2f30: 49 4d 49 54 5f 4c 45 4e 47 54 48 5d 2c 2e 2e 2e  IMIT_LENGTH],...
2f40: 29 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68  ) interface.  Th
2f50: 65 0a 20 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49  e.  SQLITE_TOOBI
2f60: 47 20 65 72 72 6f 72 20 72 65 73 75 6c 74 73 20  G error results 
2f70: 77 68 65 6e 20 53 51 4c 69 74 65 20 65 6e 63 6f  when SQLite enco
2f80: 75 6e 74 65 72 73 20 61 20 73 74 72 69 6e 67 20  unters a string 
2f90: 6f 72 20 42 4c 4f 42 0a 20 20 74 68 61 74 20 65  or BLOB.  that e
2fa0: 78 63 65 65 64 73 20 74 68 65 20 63 6f 6d 70 69  xceeds the compi
2fb0: 6c 65 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74  le-time or run-t
2fc0: 69 6d 65 20 6c 69 6d 69 74 2e 0a 20 20 3c 70 3e  ime limit..  <p>
2fd0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 54 4f  .  The SQLITE_TO
2fe0: 4f 42 49 47 20 65 72 72 6f 72 20 63 6f 64 65 20  OBIG error code 
2ff0: 63 61 6e 20 61 6c 73 6f 20 72 65 73 75 6c 74 20  can also result 
3000: 77 68 65 6e 20 61 6e 20 6f 76 65 72 73 69 7a 65  when an oversize
3010: 64 20 53 51 4c 0a 20 20 73 74 61 74 65 6d 65 6e  d SQL.  statemen
3020: 74 20 69 73 20 70 61 73 73 65 64 20 69 6e 74 6f  t is passed into
3030: 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 73 71 6c   one of the [sql
3040: 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
3050: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 20  )] interfaces.. 
3060: 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e   The maximum len
3070: 67 74 68 20 6f 66 20 61 6e 20 53 51 4c 20 73 74  gth of an SQL st
3080: 61 74 65 6d 65 6e 74 20 64 65 66 61 75 6c 74 73  atement defaults
3090: 20 74 6f 20 61 20 6d 75 63 68 20 73 6d 61 6c 6c   to a much small
30a0: 65 72 0a 20 20 76 61 6c 75 65 20 6f 66 20 31 2c  er.  value of 1,
30b0: 30 30 30 2c 30 30 30 20 62 79 74 65 73 2e 20 20  000,000 bytes.  
30c0: 54 68 65 20 6d 61 78 69 6d 75 6d 20 53 51 4c 20  The maximum SQL 
30d0: 73 74 61 74 65 6d 65 6e 74 20 6c 65 6e 67 74 68  statement length
30e0: 20 63 61 6e 20 62 65 0a 20 20 73 65 74 20 61 74   can be.  set at
30f0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73   compile-time us
3100: 69 6e 67 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  ing [SQLITE_MAX_
3110: 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 6f 72 20 61  SQL_LENGTH] or a
3120: 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69  t run-time.  usi
3130: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69  ng [sqlite3_limi
3140: 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 4c 49  t](db,[SQLITE_LI
3150: 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 2c  MIT_SQL_LENGTH],
3160: 2e 2e 2e 29 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  ...)..}.RESCODE 
3170: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
3180: 54 20 20 31 39 20 20 20 7b 0a 20 20 54 68 65 20  T  19   {.  The 
3190: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
31a0: 54 20 65 72 72 6f 72 20 63 6f 64 65 20 6d 65 61  T error code mea
31b0: 6e 73 20 74 68 61 74 20 61 6e 20 53 51 4c 20 63  ns that an SQL c
31c0: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
31d0: 69 6f 6e 0a 20 20 6f 63 63 75 72 72 65 64 20 77  ion.  occurred w
31e0: 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f 20 70  hile trying to p
31f0: 72 6f 63 65 73 73 20 61 6e 20 53 51 4c 20 73 74  rocess an SQL st
3200: 61 74 65 6d 65 6e 74 2e 20 20 41 64 64 69 74 69  atement.  Additi
3210: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
3220: 0a 20 20 61 62 6f 75 74 20 74 68 65 20 66 61 69  .  about the fai
3230: 6c 65 64 20 63 6f 6e 73 74 72 61 69 6e 74 20 63  led constraint c
3240: 61 6e 20 62 65 20 66 6f 75 6e 64 20 62 79 20 63  an be found by c
3250: 6f 6e 73 75 6c 74 69 6e 67 20 74 68 65 0a 20 20  onsulting the.  
3260: 61 63 63 6f 6d 70 61 6e 79 69 6e 67 20 65 72 72  accompanying err
3270: 6f 72 20 6d 65 73 73 61 67 65 20 28 72 65 74 75  or message (retu
3280: 72 6e 65 64 20 76 69 61 20 5b 73 71 6c 69 74 65  rned via [sqlite
3290: 33 5f 65 72 72 6d 73 67 28 29 5d 20 6f 72 0a 20  3_errmsg()] or. 
32a0: 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67   [sqlite3_errmsg
32b0: 31 36 28 29 5d 29 20 6f 72 20 62 79 20 6c 6f 6f  16()]) or by loo
32c0: 6b 69 6e 67 20 61 74 20 74 68 65 20 5b 65 78 74  king at the [ext
32d0: 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65  ended error code
32e0: 5d 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20 53  ]..  <p>.  The S
32f0: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
3300: 20 63 6f 64 65 20 63 61 6e 20 61 6c 73 6f 20 62   code can also b
3310: 65 20 75 73 65 64 20 61 73 20 74 68 65 20 72 65  e used as the re
3320: 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 0a  turn value from.
3330: 20 20 74 68 65 20 5b 78 42 65 73 74 49 6e 64 65    the [xBestInde
3340: 78 28 29 5d 20 6d 65 74 68 6f 64 20 6f 66 20 61  x()] method of a
3350: 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c 65 5d   [virtual table]
3360: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
3370: 20 20 57 68 65 6e 0a 20 20 78 42 65 73 74 49 6e    When.  xBestIn
3380: 64 65 78 28 29 20 72 65 74 75 72 6e 73 20 53 51  dex() returns SQ
3390: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2c  LITE_CONSTRAINT,
33a0: 20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20   that indicates 
33b0: 74 68 61 74 20 74 68 65 20 70 61 72 74 69 63 75  that the particu
33c0: 6c 61 72 0a 20 20 63 6f 6d 62 69 6e 61 74 69 6f  lar.  combinatio
33d0: 6e 20 6f 66 20 69 6e 70 75 74 73 20 73 75 62 6d  n of inputs subm
33e0: 69 74 74 65 64 20 74 6f 20 78 42 65 73 74 49 6e  itted to xBestIn
33f0: 64 65 78 28 29 20 63 61 6e 6e 6f 74 20 72 65 73  dex() cannot res
3400: 75 6c 74 20 69 6e 20 61 0a 20 20 75 73 61 62 6c  ult in a.  usabl
3410: 65 20 71 75 65 72 79 20 70 6c 61 6e 20 61 6e 64  e query plan and
3420: 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 67   should not be g
3430: 69 76 65 6e 20 66 75 72 74 68 65 72 20 63 6f 6e  iven further con
3440: 73 69 64 65 72 61 74 69 6f 6e 2e 0a 7d 0a 52 45  sideration..}.RE
3450: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 4d 49 53  SCODE SQLITE_MIS
3460: 4d 41 54 43 48 20 20 20 20 32 30 20 20 20 7b 0a  MATCH    20   {.
3470: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4d 49 53    The SQLITE_MIS
3480: 4d 41 54 43 48 20 65 72 72 6f 72 20 63 6f 64 65  MATCH error code
3490: 20 69 6e 64 69 63 61 74 65 73 20 61 20 64 61 74   indicates a dat
34a0: 61 74 79 70 65 20 6d 69 73 6d 61 74 63 68 2e 0a  atype mismatch..
34b0: 20 20 3c 70 3e 0a 20 20 53 51 4c 69 74 65 20 69    <p>.  SQLite i
34c0: 73 20 6e 6f 72 6d 61 6c 6c 79 20 76 65 72 79 20  s normally very 
34d0: 66 6f 72 67 69 76 69 6e 67 20 61 62 6f 75 74 20  forgiving about 
34e0: 6d 69 73 6d 61 74 63 68 65 73 20 62 65 74 77 65  mismatches betwe
34f0: 65 6e 20 74 68 65 20 74 79 70 65 20 6f 66 0a 20  en the type of. 
3500: 20 61 20 76 61 6c 75 65 20 61 6e 64 20 74 68 65   a value and the
3510: 20 64 65 63 6c 61 72 65 64 20 74 79 70 65 20 6f   declared type o
3520: 66 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 20  f the container 
3530: 69 6e 20 77 68 69 63 68 20 74 68 61 74 20 76 61  in which that va
3540: 6c 75 65 20 69 73 0a 20 20 74 6f 20 62 65 20 73  lue is.  to be s
3550: 74 6f 72 65 64 2e 20 20 46 6f 72 20 65 78 61 6d  tored.  For exam
3560: 70 6c 65 2c 20 53 51 4c 69 74 65 20 61 6c 6c 6f  ple, SQLite allo
3570: 77 73 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  ws the applicati
3580: 6f 6e 20 74 6f 20 73 74 6f 72 65 0a 20 20 61 20  on to store.  a 
3590: 6c 61 72 67 65 20 42 4c 4f 42 20 69 6e 20 61 20  large BLOB in a 
35a0: 63 6f 6c 75 6d 6e 20 77 69 74 68 20 61 20 64 65  column with a de
35b0: 63 6c 61 72 65 64 20 74 79 70 65 20 6f 66 20 42  clared type of B
35c0: 4f 4f 4c 45 41 4e 2e 20 20 42 75 74 20 69 6e 20  OOLEAN.  But in 
35d0: 61 20 66 65 77 0a 20 20 63 61 73 65 73 2c 20 53  a few.  cases, S
35e0: 51 4c 69 74 65 20 69 73 20 73 74 72 69 63 74 20  QLite is strict 
35f0: 61 62 6f 75 74 20 74 79 70 65 73 2e 20 20 54 68  about types.  Th
3600: 65 20 53 51 4c 49 54 45 5f 4d 49 53 4d 41 54 43  e SQLITE_MISMATC
3610: 48 20 65 72 72 6f 72 20 69 73 0a 20 20 72 65 74  H error is.  ret
3620: 75 72 6e 65 64 20 69 6e 20 74 68 6f 73 65 20 66  urned in those f
3630: 65 77 20 63 61 73 65 73 20 77 68 65 6e 20 74 68  ew cases when th
3640: 65 20 74 79 70 65 73 20 64 6f 20 6e 6f 74 20 6d  e types do not m
3650: 61 74 63 68 2e 0a 20 20 3c 70 3e 0a 20 20 54 68  atch..  <p>.  Th
3660: 65 20 5b 72 6f 77 69 64 5d 20 6f 66 20 61 20 74  e [rowid] of a t
3670: 61 62 6c 65 20 6d 75 73 74 20 62 65 20 61 6e 20  able must be an 
3680: 69 6e 74 65 67 65 72 2e 20 20 41 74 74 65 6d 70  integer.  Attemp
3690: 74 20 74 6f 20 73 65 74 20 74 68 65 20 5b 72 6f  t to set the [ro
36a0: 77 69 64 5d 0a 20 20 74 6f 20 61 6e 79 74 68 69  wid].  to anythi
36b0: 6e 67 20 6f 74 68 65 72 20 74 68 61 6e 20 61 6e  ng other than an
36c0: 20 69 6e 74 65 67 65 72 20 28 6f 72 20 61 20 4e   integer (or a N
36d0: 55 4c 4c 20 77 68 69 63 68 20 77 69 6c 6c 20 62  ULL which will b
36e0: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a  e automatically.
36f0: 20 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f    converted into
3700: 20 74 68 65 20 6e 65 78 74 20 61 76 61 69 6c 61   the next availa
3710: 62 6c 65 20 69 6e 74 65 67 65 72 20 72 6f 77 69  ble integer rowi
3720: 64 29 20 72 65 73 75 6c 74 73 20 69 6e 20 61 6e  d) results in an
3730: 0a 20 20 53 51 4c 49 54 45 5f 4d 49 53 4d 41 54  .  SQLITE_MISMAT
3740: 43 48 20 65 72 72 6f 72 2e 0a 7d 0a 52 45 53 43  CH error..}.RESC
3750: 4f 44 45 20 53 51 4c 49 54 45 5f 4d 49 53 55 53  ODE SQLITE_MISUS
3760: 45 20 20 20 20 20 20 32 31 20 20 20 7b 0a 20 20  E      21   {.  
3770: 54 68 65 20 53 51 4c 49 54 45 5f 4d 49 53 55 53  The SQLITE_MISUS
3780: 45 20 72 65 74 75 72 6e 20 63 6f 64 65 20 6d 69  E return code mi
3790: 67 68 74 20 62 65 20 72 65 74 75 72 6e 65 64 20  ght be returned 
37a0: 69 66 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  if the applicati
37b0: 6f 6e 20 75 73 65 73 0a 20 20 61 6e 79 20 53 51  on uses.  any SQ
37c0: 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 20 69  Lite interface i
37d0: 6e 20 61 20 77 61 79 20 74 68 61 74 20 69 73 20  n a way that is 
37e0: 75 6e 64 65 66 69 6e 65 64 20 6f 72 20 75 6e 73  undefined or uns
37f0: 75 70 70 6f 72 74 65 64 2e 20 20 46 6f 72 0a 20  upported.  For. 
3800: 20 65 78 61 6d 70 6c 65 2c 20 75 73 69 6e 67 20   example, using 
3810: 61 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  a [prepared stat
3820: 65 6d 65 6e 74 5d 20 61 66 74 65 72 20 74 68 61  ement] after tha
3830: 74 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  t prepared state
3840: 6d 65 6e 74 20 68 61 73 0a 20 20 62 65 65 6e 20  ment has.  been 
3850: 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  [sqlite3_finaliz
3860: 65 7c 66 69 6e 61 6c 69 7a 65 64 5d 20 6d 69 67  e|finalized] mig
3870: 68 74 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20  ht result in an 
3880: 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 65 72  SQLITE_MISUSE er
3890: 72 6f 72 2e 0a 20 20 3c 70 3e 0a 20 20 53 51 4c  ror..  <p>.  SQL
38a0: 69 74 65 20 74 72 69 65 73 20 74 6f 20 64 65 74  ite tries to det
38b0: 65 63 74 20 6d 69 73 75 73 65 20 61 6e 64 20 72  ect misuse and r
38c0: 65 70 6f 72 74 20 74 68 65 20 6d 69 73 75 73 65  eport the misuse
38d0: 20 75 73 69 6e 67 20 74 68 69 73 20 72 65 73 75   using this resu
38e0: 6c 74 20 63 6f 64 65 2e 0a 20 20 48 6f 77 65 76  lt code..  Howev
38f0: 65 72 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20  er, there is no 
3900: 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 20 74  guarantee that t
3910: 68 65 20 64 65 74 65 63 74 69 6f 6e 20 6f 66 20  he detection of 
3920: 6d 69 73 75 73 65 20 77 69 6c 6c 20 62 65 0a 20  misuse will be. 
3930: 20 73 75 63 63 65 73 73 66 75 6c 2e 20 20 4d 69   successful.  Mi
3940: 73 75 73 65 20 64 65 74 65 63 74 69 6f 6e 20 69  suse detection i
3950: 73 20 70 72 6f 62 61 62 69 6c 69 73 74 69 63 2e  s probabilistic.
3960: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 73    Applications s
3970: 68 6f 75 6c 64 0a 20 20 6e 65 76 65 72 20 64 65  hould.  never de
3980: 70 65 6e 64 20 6f 6e 20 61 6e 20 53 51 4c 49 54  pend on an SQLIT
3990: 45 5f 4d 49 53 55 53 45 20 72 65 74 75 72 6e 20  E_MISUSE return 
39a0: 76 61 6c 75 65 2e 0a 20 20 3c 70 3e 0a 20 20 49  value..  <p>.  I
39b0: 66 20 53 51 4c 69 74 65 20 65 76 65 72 20 72 65  f SQLite ever re
39c0: 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 4d 49 53  turns SQLITE_MIS
39d0: 55 53 45 20 66 72 6f 6d 20 61 6e 79 20 69 6e 74  USE from any int
39e0: 65 72 66 61 63 65 2c 20 74 68 61 74 20 6d 65 61  erface, that mea
39f0: 6e 73 20 74 68 61 74 0a 20 20 74 68 65 20 61 70  ns that.  the ap
3a00: 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 69 6e 63  plication is inc
3a10: 6f 72 72 65 63 74 6c 79 20 63 6f 64 65 64 20 61  orrectly coded a
3a20: 6e 64 20 6e 65 65 64 73 20 74 6f 20 62 65 20 66  nd needs to be f
3a30: 69 78 65 64 2e 20 20 44 6f 20 6e 6f 74 20 73 68  ixed.  Do not sh
3a40: 69 70 0a 20 20 61 6e 20 61 70 70 6c 69 63 61 74  ip.  an applicat
3a50: 69 6f 6e 20 74 68 61 74 20 73 6f 6d 65 74 69 6d  ion that sometim
3a60: 65 73 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54  es returns SQLIT
3a70: 45 5f 4d 49 53 55 53 45 20 66 72 6f 6d 20 61 20  E_MISUSE from a 
3a80: 73 74 61 6e 64 61 72 64 0a 20 20 53 51 4c 69 74  standard.  SQLit
3a90: 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 63 61  e interface beca
3aa0: 75 73 65 20 74 68 61 74 20 61 70 70 6c 69 63 61  use that applica
3ab0: 74 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 20 70 6f  tion contains po
3ac0: 74 65 6e 74 69 61 6c 6c 79 20 73 65 72 69 6f 75  tentially seriou
3ad0: 73 20 62 75 67 73 2e 0a 7d 0a 52 45 53 43 4f 44  s bugs..}.RESCOD
3ae0: 45 20 53 51 4c 49 54 45 5f 4e 4f 4c 46 53 20 20  E SQLITE_NOLFS  
3af0: 20 20 20 20 20 32 32 20 20 20 7b 0a 20 20 54 68       22   {.  Th
3b00: 65 20 53 51 4c 49 54 45 5f 4e 4f 4c 46 53 20 65  e SQLITE_NOLFS e
3b10: 72 72 6f 72 20 63 61 6e 20 62 65 20 72 65 74 75  rror can be retu
3b20: 72 6e 65 64 20 6f 6e 20 73 79 73 74 65 6d 73 20  rned on systems 
3b30: 74 68 61 74 20 64 6f 20 6e 6f 74 20 73 75 70 70  that do not supp
3b40: 6f 72 74 0a 20 20 6c 61 72 67 65 20 66 69 6c 65  ort.  large file
3b50: 73 20 77 68 65 6e 20 74 68 65 20 64 61 74 61 62  s when the datab
3b60: 61 73 65 20 67 72 6f 77 73 20 74 6f 20 62 65 20  ase grows to be 
3b70: 6c 61 72 67 65 72 20 74 68 61 6e 20 77 68 61 74  larger than what
3b80: 20 74 68 65 20 66 69 6c 65 73 79 73 74 65 6d 0a   the filesystem.
3b90: 20 20 63 61 6e 20 68 61 6e 64 6c 65 2e 20 20 22    can handle.  "
3ba0: 4e 4f 4c 46 53 22 20 73 74 61 6e 64 73 20 66 6f  NOLFS" stands fo
3bb0: 72 20 22 4e 4f 20 4c 61 72 67 65 20 46 69 6c 65  r "NO Large File
3bc0: 20 53 75 70 70 6f 72 74 22 2e 0a 7d 0a 52 45 53   Support"..}.RES
3bd0: 43 4f 44 45 20 53 51 4c 49 54 45 5f 41 55 54 48  CODE SQLITE_AUTH
3be0: 20 20 20 20 20 20 20 20 32 33 20 20 20 7b 0a 20          23   {. 
3bf0: 20 54 68 65 20 53 51 4c 49 54 45 5f 41 55 54 48   The SQLITE_AUTH
3c00: 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e   error is return
3c10: 65 64 20 77 68 65 6e 20 74 68 65 0a 20 20 5b 73  ed when the.  [s
3c20: 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f  qlite3_set_autho
3c30: 72 69 7a 65 72 20 7c 20 61 75 74 68 6f 72 69 7a  rizer | authoriz
3c40: 65 72 20 63 61 6c 6c 62 61 63 6b 5d 20 69 6e 64  er callback] ind
3c50: 69 63 61 74 65 73 20 74 68 61 74 20 61 6e 0a 20  icates that an. 
3c60: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 62   SQL statement b
3c70: 65 69 6e 67 20 70 72 65 70 61 72 65 64 20 69 73  eing prepared is
3c80: 20 6e 6f 74 20 61 75 74 68 6f 72 69 7a 65 64 2e   not authorized.
3c90: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
3ca0: 45 5f 46 4f 52 4d 41 54 20 20 20 20 20 20 32 34  E_FORMAT      24
3cb0: 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54     {.  The SQLIT
3cc0: 45 5f 46 4f 52 4d 41 54 20 65 72 72 6f 72 20 63  E_FORMAT error c
3cd0: 6f 64 65 20 69 73 20 6e 6f 74 20 63 75 72 72 65  ode is not curre
3ce0: 6e 74 6c 79 20 75 73 65 64 20 62 79 20 53 51 4c  ntly used by SQL
3cf0: 69 74 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ite..}.RESCODE S
3d00: 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 20 20 20  QLITE_RANGE     
3d10: 20 20 32 35 20 20 20 7b 0a 20 20 54 68 65 20 53    25   {.  The S
3d20: 51 4c 49 54 45 5f 52 41 4e 47 45 20 65 72 72 6f  QLITE_RANGE erro
3d30: 72 20 69 6e 64 69 63 65 73 20 74 68 61 74 20 74  r indices that t
3d40: 68 65 20 70 61 72 61 6d 65 74 65 72 20 6e 75 6d  he parameter num
3d50: 62 65 72 20 61 72 67 75 6d 65 6e 74 0a 20 20 74  ber argument.  t
3d60: 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 73 71  o one of the [sq
3d70: 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 7c  lite3_bind_blob|
3d80: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5d 20 72 6f  sqlite3_bind] ro
3d90: 75 74 69 6e 65 73 20 6f 72 20 74 68 65 0a 20 20  utines or the.  
3da0: 63 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 20 69 6e  column number in
3db0: 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 73 71 6c   one of the [sql
3dc0: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 7c  ite3_column_int|
3dd0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5d 0a  sqlite3_column].
3de0: 20 20 72 6f 75 74 69 6e 65 73 20 69 73 20 6f 75    routines is ou
3df0: 74 20 6f 66 20 72 61 6e 67 65 2e 0a 7d 0a 52 45  t of range..}.RE
3e00: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 4e 4f 54  SCODE SQLITE_NOT
3e10: 41 44 42 20 20 20 20 20 20 32 36 20 20 20 7b 0a  ADB      26   {.
3e20: 20 20 57 68 65 6e 20 61 74 74 65 6d 70 74 69 6e    When attemptin
3e30: 67 20 74 6f 20 6f 70 65 6e 20 61 20 66 69 6c 65  g to open a file
3e40: 2c 20 74 68 65 20 53 51 4c 49 54 45 5f 4e 4f 54  , the SQLITE_NOT
3e50: 41 44 42 20 65 72 72 6f 72 20 69 6e 64 69 63 61  ADB error indica
3e60: 74 65 73 20 74 68 61 74 0a 20 20 74 68 65 20 66  tes that.  the f
3e70: 69 6c 65 20 62 65 69 6e 67 20 6f 70 65 6e 65 64  ile being opened
3e80: 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 65 61 72   does not appear
3e90: 20 74 6f 20 62 65 20 61 6e 20 53 51 4c 69 74 65   to be an SQLite
3ea0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 0a   database file..
3eb0: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
3ec0: 5f 4e 4f 54 49 43 45 20 20 20 20 20 20 32 37 20  _NOTICE      27 
3ed0: 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45    {.  The SQLITE
3ee0: 5f 4e 4f 54 49 43 45 20 72 65 73 75 6c 74 20 63  _NOTICE result c
3ef0: 6f 64 65 20 69 73 20 6e 6f 74 20 72 65 74 75 72  ode is not retur
3f00: 6e 65 64 20 62 79 20 61 6e 79 20 43 2f 43 2b 2b  ned by any C/C++
3f10: 20 69 6e 74 65 72 66 61 63 65 2e 0a 20 20 48 6f   interface..  Ho
3f20: 77 65 76 65 72 2c 20 53 51 4c 49 54 45 5f 4e 4f  wever, SQLITE_NO
3f30: 54 49 43 45 20 28 6f 72 20 72 61 74 68 65 72 20  TICE (or rather 
3f40: 6f 6e 65 20 6f 66 20 69 74 73 20 5b 65 78 74 65  one of its [exte
3f50: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 73  nded error codes
3f60: 5d 29 0a 20 20 69 73 20 73 6f 6d 65 74 69 6d 65  ]).  is sometime
3f70: 73 20 75 73 65 64 20 61 73 20 74 68 65 20 66 69  s used as the fi
3f80: 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 6e 20  rst argument in 
3f90: 61 6e 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28  an [sqlite3_log(
3fa0: 29 5d 20 63 61 6c 6c 62 61 63 6b 0a 20 20 74 6f  )] callback.  to
3fb0: 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 20 61   indicate that a
3fc0: 6e 20 75 6e 75 73 75 61 6c 20 6f 70 65 72 61 74  n unusual operat
3fd0: 69 6f 6e 20 69 73 20 74 61 6b 69 6e 67 20 70 6c  ion is taking pl
3fe0: 61 63 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ace..}.RESCODE S
3ff0: 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 20 20 20  QLITE_WARNING   
4000: 20 20 32 38 20 20 20 7b 0a 20 20 54 68 65 20 53    28   {.  The S
4010: 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 20 72 65  QLITE_WARNING re
4020: 73 75 6c 74 20 63 6f 64 65 20 69 73 20 6e 6f 74  sult code is not
4030: 20 72 65 74 75 72 6e 65 64 20 62 79 20 61 6e 79   returned by any
4040: 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65   C/C++ interface
4050: 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 53 51 4c  ..  However, SQL
4060: 49 54 45 5f 57 41 52 4e 49 4e 47 20 28 6f 72 20  ITE_WARNING (or 
4070: 72 61 74 68 65 72 20 6f 6e 65 20 6f 66 20 69 74  rather one of it
4080: 73 20 5b 65 78 74 65 6e 64 65 64 20 65 72 72 6f  s [extended erro
4090: 72 20 63 6f 64 65 73 5d 29 0a 20 20 69 73 20 73  r codes]).  is s
40a0: 6f 6d 65 74 69 6d 65 73 20 75 73 65 64 20 61 73  ometimes used as
40b0: 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
40c0: 65 6e 74 20 69 6e 20 61 6e 20 5b 73 71 6c 69 74  ent in an [sqlit
40d0: 65 33 5f 6c 6f 67 28 29 5d 20 63 61 6c 6c 62 61  e3_log()] callba
40e0: 63 6b 0a 20 20 74 6f 20 69 6e 64 69 63 61 74 65  ck.  to indicate
40f0: 20 74 68 61 74 20 61 6e 20 75 6e 75 73 75 61 6c   that an unusual
4100: 20 61 6e 64 20 70 6f 73 73 69 62 6c 79 20 69 6c   and possibly il
4110: 6c 2d 61 64 76 69 73 65 64 20 6f 70 65 72 61 74  l-advised operat
4120: 69 6f 6e 20 69 73 0a 20 20 74 61 6b 69 6e 67 20  ion is.  taking 
4130: 70 6c 61 63 65 2e 0a 7d 0a 52 45 53 43 4f 44 45  place..}.RESCODE
4140: 20 53 51 4c 49 54 45 5f 52 4f 57 20 20 20 20 20   SQLITE_ROW     
4150: 20 20 20 20 31 30 30 20 20 7b 0a 20 20 54 68 65      100  {.  The
4160: 20 53 51 4c 49 54 45 5f 52 4f 57 20 72 65 73 75   SQLITE_ROW resu
4170: 6c 74 20 63 6f 64 65 20 72 65 74 75 72 6e 65 64  lt code returned
4180: 20 62 79 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73   by.  [sqlite3_s
4190: 74 65 70 28 29 5d 20 69 6e 64 69 63 61 74 65 73  tep()] indicates
41a0: 20 74 68 61 74 20 61 6e 6f 74 68 65 72 20 72 6f   that another ro
41b0: 77 20 6f 66 20 6f 75 74 70 75 74 20 69 73 20 61  w of output is a
41c0: 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a 52 45 53 43  vailable..}.RESC
41d0: 4f 44 45 20 53 51 4c 49 54 45 5f 44 4f 4e 45 20  ODE SQLITE_DONE 
41e0: 20 20 20 20 20 20 20 31 30 31 20 20 7b 0a 20 20         101  {.  
41f0: 54 68 65 20 53 51 4c 49 54 45 5f 44 4f 4e 45 20  The SQLITE_DONE 
4200: 72 65 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69  result code indi
4210: 63 61 74 65 73 20 74 68 61 74 20 61 6e 20 6f 70  cates that an op
4220: 65 72 61 74 69 6f 6e 20 68 61 73 20 63 6f 6d 70  eration has comp
4230: 6c 65 74 65 64 2e 0a 20 20 54 68 65 20 53 51 4c  leted..  The SQL
4240: 49 54 45 5f 44 4f 4e 45 20 72 65 73 75 6c 74 20  ITE_DONE result 
4250: 63 6f 64 65 20 69 73 20 6d 6f 73 74 20 63 6f 6d  code is most com
4260: 6d 6f 6e 6c 79 20 73 65 65 6e 20 61 73 20 61 20  monly seen as a 
4270: 72 65 74 75 72 6e 20 76 61 6c 75 65 0a 20 20 66  return value.  f
4280: 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  rom [sqlite3_ste
4290: 70 28 29 5d 20 69 6e 64 69 63 61 74 69 6e 67 20  p()] indicating 
42a0: 74 68 61 74 20 74 68 65 20 53 51 4c 20 73 74 61  that the SQL sta
42b0: 74 65 6d 65 6e 74 20 68 61 73 20 72 75 6e 20 74  tement has run t
42c0: 6f 0a 20 20 63 6f 6d 70 6c 65 74 69 6f 6e 2e 20  o.  completion. 
42d0: 20 42 75 74 20 53 51 4c 49 54 45 5f 44 4f 4e 45   But SQLITE_DONE
42e0: 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 72 65 74   can also be ret
42f0: 75 72 6e 65 64 20 62 79 20 6f 74 68 65 72 20 6d  urned by other m
4300: 75 6c 74 69 2d 73 74 65 70 0a 20 20 69 6e 74 65  ulti-step.  inte
4310: 72 66 61 63 65 73 20 73 75 63 68 20 61 73 20 5b  rfaces such as [
4320: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 73  sqlite3_backup_s
4330: 74 65 70 28 29 5d 2e 0a 7d 0a 52 45 53 43 4f 44  tep()]..}.RESCOD
4340: 45 20 53 51 4c 49 54 45 5f 4f 4b 5f 4c 4f 41 44  E SQLITE_OK_LOAD
4350: 5f 50 45 52 4d 41 4e 45 4e 54 4c 59 20 20 20 20  _PERMANENTLY    
4360: 20 7b 53 51 4c 49 54 45 5f 4f 4b 20 7c 20 28 31   {SQLITE_OK | (1
4370: 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 5b 73  <<8)} {.  The [s
4380: 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
4390: 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61  nsion()] interfa
43a0: 63 65 20 6c 6f 61 64 73 20 61 6e 20 0a 20 20 5b  ce loads an .  [
43b0: 6c 6f 61 64 61 62 6c 65 20 65 78 74 65 6e 73 69  loadable extensi
43c0: 6f 6e 7c 65 78 74 65 6e 73 69 6f 6e 5d 20 69 6e  on|extension] in
43d0: 74 6f 20 61 20 73 69 6e 67 6c 65 0a 20 20 64 61  to a single.  da
43e0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
43f0: 6e 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  n.  The default 
4400: 62 65 68 61 76 69 6f 72 20 69 73 20 66 6f 72 20  behavior is for 
4410: 74 68 61 74 20 65 78 74 65 6e 73 69 6f 6e 20 74  that extension t
4420: 6f 20 62 65 0a 20 20 61 75 74 6f 6d 61 74 69 63  o be.  automatic
4430: 61 6c 6c 79 20 75 6e 6c 6f 61 64 65 64 20 77 68  ally unloaded wh
4440: 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
4450: 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 6f 73 65  connection close
4460: 73 2e 20 20 48 6f 77 65 76 65 72 2c 0a 20 20 69  s.  However,.  i
4470: 66 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20  f the extension 
4480: 65 6e 74 72 79 20 70 6f 69 6e 74 20 72 65 74 75  entry point retu
4490: 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 5f 4c 4f  rns SQLITE_OK_LO
44a0: 41 44 5f 50 45 52 4d 41 4e 45 4e 54 4c 59 20 69  AD_PERMANENTLY i
44b0: 6e 73 74 65 61 64 0a 20 20 6f 66 20 53 51 4c 49  nstead.  of SQLI
44c0: 54 45 5f 4f 4b 2c 20 74 68 65 6e 20 74 68 65 20  TE_OK, then the 
44d0: 65 78 74 65 6e 73 69 6f 6e 20 72 65 6d 61 69 6e  extension remain
44e0: 73 20 6c 6f 61 64 65 64 20 69 6e 74 6f 20 74 68  s loaded into th
44f0: 65 20 70 72 6f 63 65 73 73 20 61 64 64 72 65 73  e process addres
4500: 73 0a 20 20 73 70 61 63 65 20 61 66 74 65 72 20  s.  space after 
4510: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
4520: 6e 65 63 74 69 6f 6e 20 63 6c 6f 73 65 73 2e 20  nection closes. 
4530: 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c   In other words,
4540: 20 74 68 65 0a 20 20 78 44 6c 43 6c 6f 73 65 20   the.  xDlClose 
4550: 6d 65 74 68 6f 64 73 20 6f 66 20 74 68 65 20 5b  methods of the [
4560: 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a  sqlite3_vfs] obj
4570: 65 63 74 20 69 73 20 6e 6f 74 20 63 61 6c 6c 65  ect is not calle
4580: 64 20 66 6f 72 20 74 68 65 0a 20 20 65 78 74 65  d for the.  exte
4590: 6e 73 69 6f 6e 20 77 68 65 6e 20 74 68 65 20 64  nsion when the d
45a0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
45b0: 6f 6e 20 63 6c 6f 73 65 73 2e 0a 20 20 3c 70 3e  on closes..  <p>
45c0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 4b  .  The SQLITE_OK
45d0: 5f 4c 4f 41 44 5f 50 45 52 4d 41 4e 45 4e 54 4c  _LOAD_PERMANENTL
45e0: 59 20 72 65 74 75 72 6e 20 63 6f 64 65 20 69 73  Y return code is
45f0: 20 75 73 65 66 75 6c 20 74 6f 20 0a 20 20 5b 6c   useful to .  [l
4600: 6f 61 64 61 62 6c 65 20 65 78 74 65 6e 73 69 6f  oadable extensio
4610: 6e 73 5d 20 74 68 61 74 20 72 65 67 69 73 74 65  ns] that registe
4620: 72 20 6e 65 77 20 5b 56 46 53 65 73 5d 2c 20 66  r new [VFSes], f
4630: 6f 72 20 65 78 61 6d 70 6c 65 2e 0a 7d 0a 52 45  or example..}.RE
4640: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45  SCODE SQLITE_IOE
4650: 52 52 5f 52 45 41 44 20 20 20 20 20 20 20 20 20  RR_READ         
4660: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45       {SQLITE_IOE
4670: 52 52 20 7c 20 28 31 3c 3c 38 29 7d 20 7b 0a 20  RR | (1<<8)} {. 
4680: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
4690: 52 5f 52 45 41 44 20 65 72 72 6f 72 20 63 6f 64  R_READ error cod
46a0: 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70  e is an [ext-v-p
46b0: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
46c0: 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b  or code].  for [
46d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e  SQLITE_IOERR] in
46e0: 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20  dicating an I/O 
46f0: 65 72 72 6f 72 20 69 6e 20 74 68 65 20 5b 56 46  error in the [VF
4700: 53 5d 20 6c 61 79 65 72 0a 20 20 77 68 69 6c 65  S] layer.  while
4710: 20 74 72 79 69 6e 67 20 74 6f 20 72 65 61 64 20   trying to read 
4720: 66 72 6f 6d 20 61 20 66 69 6c 65 20 6f 6e 20 64  from a file on d
4730: 69 73 6b 2e 20 20 54 68 69 73 20 65 72 72 6f 72  isk.  This error
4740: 20 6d 69 67 68 74 20 72 65 73 75 6c 74 0a 20 20   might result.  
4750: 66 72 6f 6d 20 61 20 68 61 72 64 77 61 72 65 20  from a hardware 
4760: 6d 61 6c 66 75 6e 63 74 69 6f 6e 20 6f 72 20 62  malfunction or b
4770: 65 63 61 75 73 65 20 61 20 66 69 6c 65 73 79 73  ecause a filesys
4780: 74 65 6d 20 63 61 6d 65 20 75 6e 6d 6f 75 6e 74  tem came unmount
4790: 65 64 0a 20 20 77 68 69 6c 65 20 74 68 65 20 66  ed.  while the f
47a0: 69 6c 65 20 77 61 73 20 6f 70 65 6e 2e 0a 7d 0a  ile was open..}.
47b0: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49  RESCODE SQLITE_I
47c0: 4f 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20  OERR_SHORT_READ 
47d0: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49         {SQLITE_I
47e0: 4f 45 52 52 20 7c 20 28 32 3c 3c 38 29 7d 20 7b  OERR | (2<<8)} {
47f0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  .  The SQLITE_IO
4800: 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20 65  ERR_SHORT_READ e
4810: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20  rror code is an 
4820: 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65  [ext-v-prim|exte
4830: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d  nded error code]
4840: 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49  .  for [SQLITE_I
4850: 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67  OERR] indicating
4860: 20 74 68 61 74 20 61 20 72 65 61 64 20 61 74 74   that a read att
4870: 65 6d 70 74 20 69 6e 20 74 68 65 20 5b 56 46 53  empt in the [VFS
4880: 5d 20 6c 61 79 65 72 0a 20 20 77 61 73 20 75 6e  ] layer.  was un
4890: 61 62 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 61  able to obtain a
48a0: 73 20 6d 61 6e 79 20 62 79 74 65 73 20 61 73 20  s many bytes as 
48b0: 77 61 73 20 72 65 71 75 65 73 74 65 64 2e 20 20  was requested.  
48c0: 54 68 69 73 20 6d 69 67 68 74 20 62 65 0a 20 20  This might be.  
48d0: 64 75 65 20 74 6f 20 61 20 74 72 75 6e 63 61 74  due to a truncat
48e0: 65 64 20 66 69 6c 65 2e 0a 7d 0a 52 45 53 43 4f  ed file..}.RESCO
48f0: 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  DE SQLITE_IOERR_
4900: 57 52 49 54 45 20 20 20 20 20 20 20 20 20 20 20  WRITE           
4910: 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    {SQLITE_IOERR 
4920: 7c 20 28 33 3c 3c 38 29 7d 20 7b 0a 20 20 54 68  | (3<<8)} {.  Th
4930: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 57  e SQLITE_IOERR_W
4940: 52 49 54 45 20 65 72 72 6f 72 20 63 6f 64 65 20  RITE error code 
4950: 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69  is an [ext-v-pri
4960: 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72  m|extended error
4970: 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51   code].  for [SQ
4980: 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69  LITE_IOERR] indi
4990: 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72  cating an I/O er
49a0: 72 6f 72 20 69 6e 20 74 68 65 20 5b 56 46 53 5d  ror in the [VFS]
49b0: 20 6c 61 79 65 72 0a 20 20 77 68 69 6c 65 20 74   layer.  while t
49c0: 72 79 69 6e 67 20 74 6f 20 77 72 69 74 65 20 69  rying to write i
49d0: 6e 74 6f 20 61 20 66 69 6c 65 20 6f 6e 20 64 69  nto a file on di
49e0: 73 6b 2e 20 20 54 68 69 73 20 65 72 72 6f 72 20  sk.  This error 
49f0: 6d 69 67 68 74 20 72 65 73 75 6c 74 0a 20 20 66  might result.  f
4a00: 72 6f 6d 20 61 20 68 61 72 64 77 61 72 65 20 6d  rom a hardware m
4a10: 61 6c 66 75 6e 63 74 69 6f 6e 20 6f 72 20 62 65  alfunction or be
4a20: 63 61 75 73 65 20 61 20 66 69 6c 65 73 79 73 74  cause a filesyst
4a30: 65 6d 20 63 61 6d 65 20 75 6e 6d 6f 75 6e 74 65  em came unmounte
4a40: 64 0a 20 20 77 68 69 6c 65 20 74 68 65 20 66 69  d.  while the fi
4a50: 6c 65 20 77 61 73 20 6f 70 65 6e 2e 20 20 54 68  le was open.  Th
4a60: 69 73 20 65 72 72 6f 72 20 73 68 6f 75 6c 64 20  is error should 
4a70: 6e 6f 74 20 6f 63 63 75 72 20 69 66 20 74 68 65  not occur if the
4a80: 20 66 69 6c 65 73 79 73 74 65 6d 0a 20 20 69 73   filesystem.  is
4a90: 20 66 75 6c 6c 20 61 73 20 74 68 65 72 65 20 69   full as there i
4aa0: 73 20 61 20 73 65 70 61 72 61 74 65 20 65 72 72  s a separate err
4ab0: 6f 72 20 63 6f 64 65 20 28 53 51 4c 49 54 45 5f  or code (SQLITE_
4ac0: 46 55 4c 4c 29 20 66 6f 72 20 74 68 61 74 20 70  FULL) for that p
4ad0: 75 72 70 6f 73 65 2e 0a 7d 0a 52 45 53 43 4f 44  urpose..}.RESCOD
4ae0: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46  E SQLITE_IOERR_F
4af0: 53 59 4e 43 20 20 20 20 20 20 20 20 20 20 20 20  SYNC            
4b00: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
4b10: 20 28 34 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (4<<8)} {.  The
4b20: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53   SQLITE_IOERR_FS
4b30: 59 4e 43 20 65 72 72 6f 72 20 63 6f 64 65 20 69  YNC error code i
4b40: 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d  s an [ext-v-prim
4b50: 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  |extended error 
4b60: 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c  code].  for [SQL
4b70: 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63  ITE_IOERR] indic
4b80: 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72  ating an I/O err
4b90: 6f 72 20 69 6e 20 74 68 65 20 5b 56 46 53 5d 20  or in the [VFS] 
4ba0: 6c 61 79 65 72 0a 20 20 77 68 69 6c 65 20 74 72  layer.  while tr
4bb0: 79 69 6e 67 20 74 6f 20 66 6c 75 73 68 20 70 72  ying to flush pr
4bc0: 65 76 69 6f 75 73 6c 79 20 77 72 69 74 74 65 6e  eviously written
4bd0: 20 63 6f 6e 74 65 6e 74 20 6f 75 74 20 6f 66 20   content out of 
4be0: 4f 53 20 61 6e 64 2f 6f 72 0a 20 20 64 69 73 6b  OS and/or.  disk
4bf0: 2d 63 6f 6e 74 72 6f 6c 20 62 75 66 66 65 72 73  -control buffers
4c00: 20 61 6e 64 20 69 6e 74 6f 20 70 65 72 73 69 73   and into persis
4c10: 74 65 6e 74 20 73 74 6f 72 61 67 65 2e 20 20 49  tent storage.  I
4c20: 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 0a 20  n other words,. 
4c30: 20 74 68 69 73 20 63 6f 64 65 20 69 6e 64 69 63   this code indic
4c40: 61 74 65 73 20 61 20 70 72 6f 62 6c 65 6d 20 77  ates a problem w
4c50: 69 74 68 20 74 68 65 20 66 73 79 6e 63 28 29 20  ith the fsync() 
4c60: 73 79 73 74 65 6d 20 63 61 6c 6c 20 69 6e 20 75  system call in u
4c70: 6e 69 78 0a 20 20 6f 72 20 74 68 65 20 46 6c 75  nix.  or the Flu
4c80: 73 68 46 69 6c 65 42 75 66 66 65 72 73 28 29 20  shFileBuffers() 
4c90: 73 79 73 74 65 6d 20 63 61 6c 6c 20 69 6e 20 77  system call in w
4ca0: 69 6e 64 6f 77 73 2e 0a 7d 0a 52 45 53 43 4f 44  indows..}.RESCOD
4cb0: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44  E SQLITE_IOERR_D
4cc0: 49 52 5f 46 53 59 4e 43 20 20 20 20 20 20 20 20  IR_FSYNC        
4cd0: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
4ce0: 20 28 35 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (5<<8)} {.  The
4cf0: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49   SQLITE_IOERR_DI
4d00: 52 5f 46 53 59 4e 43 20 65 72 72 6f 72 20 63 6f  R_FSYNC error co
4d10: 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  de is an [ext-v-
4d20: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
4d30: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
4d40: 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69  [SQLITE_IOERR] i
4d50: 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f  ndicating an I/O
4d60: 20 65 72 72 6f 72 20 69 6e 20 74 68 65 20 5b 56   error in the [V
4d70: 46 53 5d 20 6c 61 79 65 72 0a 20 20 77 68 69 6c  FS] layer.  whil
4d80: 65 20 74 72 79 69 6e 67 20 74 6f 20 69 6e 76 6f  e trying to invo
4d90: 6b 65 20 66 73 79 6e 63 28 29 20 6f 6e 20 61 20  ke fsync() on a 
4da0: 64 69 72 65 63 74 6f 72 79 2e 20 20 54 68 65 20  directory.  The 
4db0: 75 6e 69 78 20 5b 56 46 53 5d 20 61 74 74 65 6d  unix [VFS] attem
4dc0: 70 74 73 0a 20 20 74 6f 20 66 73 79 6e 63 28 29  pts.  to fsync()
4dd0: 20 64 69 72 65 63 74 6f 72 69 65 73 20 61 66 74   directories aft
4de0: 65 72 20 63 72 65 61 74 69 6e 67 20 6f 72 20 64  er creating or d
4df0: 65 6c 65 74 69 6e 67 20 63 65 72 74 61 69 6e 20  eleting certain 
4e00: 66 69 6c 65 73 20 74 6f 0a 20 20 65 6e 73 75 72  files to.  ensur
4e10: 65 20 74 68 61 74 20 74 68 6f 73 65 20 66 69 6c  e that those fil
4e20: 65 73 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61 70  es will still ap
4e30: 70 65 61 72 20 69 6e 20 74 68 65 20 66 69 6c 65  pear in the file
4e40: 73 79 73 74 65 6d 20 66 6f 6c 6c 6f 77 69 6e 67  system following
4e50: 0a 20 20 61 20 70 6f 77 65 72 20 6c 6f 73 73 20  .  a power loss 
4e60: 6f 72 20 73 79 73 74 65 6d 20 63 72 61 73 68 2e  or system crash.
4e70: 20 20 54 68 69 73 20 65 72 72 6f 72 20 63 6f 64    This error cod
4e80: 65 20 69 6e 64 69 63 61 74 65 73 20 61 20 70 72  e indicates a pr
4e90: 6f 62 6c 65 6d 0a 20 20 61 74 74 65 6d 70 74 69  oblem.  attempti
4ea0: 6e 67 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68  ng to perform th
4eb0: 61 74 20 66 73 79 6e 63 28 29 2e 0a 7d 0a 52 45  at fsync()..}.RE
4ec0: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45  SCODE SQLITE_IOE
4ed0: 52 52 5f 54 52 55 4e 43 41 54 45 20 20 20 20 20  RR_TRUNCATE     
4ee0: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45       {SQLITE_IOE
4ef0: 52 52 20 7c 20 28 36 3c 3c 38 29 7d 20 7b 0a 20  RR | (6<<8)} {. 
4f00: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
4f10: 52 5f 54 52 55 4e 43 41 54 45 20 65 72 72 6f 72  R_TRUNCATE error
4f20: 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74   code is an [ext
4f30: 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64  -v-prim|extended
4f40: 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66   error code].  f
4f50: 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52  or [SQLITE_IOERR
4f60: 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20  ] indicating an 
4f70: 49 2f 4f 20 65 72 72 6f 72 20 69 6e 20 74 68 65  I/O error in the
4f80: 20 5b 56 46 53 5d 20 6c 61 79 65 72 0a 20 20 77   [VFS] layer.  w
4f90: 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f 20 74  hile trying to t
4fa0: 72 75 6e 63 61 74 65 20 61 20 66 69 6c 65 20 74  runcate a file t
4fb0: 6f 20 61 20 73 6d 61 6c 6c 65 72 20 73 69 7a 65  o a smaller size
4fc0: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
4fd0: 54 45 5f 49 4f 45 52 52 5f 46 53 54 41 54 20 20  TE_IOERR_FSTAT  
4fe0: 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49             {SQLI
4ff0: 54 45 5f 49 4f 45 52 52 20 7c 20 28 37 3c 3c 38  TE_IOERR | (7<<8
5000: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
5010: 45 5f 49 4f 45 52 52 5f 46 53 54 41 54 20 65 72  E_IOERR_FSTAT er
5020: 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b  ror code is an [
5030: 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e  ext-v-prim|exten
5040: 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a  ded error code].
5050: 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f    for [SQLITE_IO
5060: 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20  ERR] indicating 
5070: 61 6e 20 49 2f 4f 20 65 72 72 6f 72 20 69 6e 20  an I/O error in 
5080: 74 68 65 20 5b 56 46 53 5d 20 6c 61 79 65 72 0a  the [VFS] layer.
5090: 20 20 77 68 69 6c 65 20 74 72 79 69 6e 67 20 74    while trying t
50a0: 6f 20 69 6e 76 6f 6b 65 20 66 73 74 61 74 28 29  o invoke fstat()
50b0: 20 28 6f 72 20 74 68 65 20 65 71 75 69 76 61 6c   (or the equival
50c0: 65 6e 74 29 20 6f 6e 20 61 20 66 69 6c 65 20 69  ent) on a file i
50d0: 6e 20 6f 72 64 65 72 0a 20 20 74 6f 20 64 65 74  n order.  to det
50e0: 65 72 6d 69 6e 65 20 69 6e 66 6f 72 6d 61 74 69  ermine informati
50f0: 6f 6e 20 73 75 63 68 20 61 73 20 74 68 65 20 66  on such as the f
5100: 69 6c 65 20 73 69 7a 65 20 6f 72 20 61 63 63 65  ile size or acce
5110: 73 73 20 70 65 72 6d 69 73 73 69 6f 6e 73 2e 0a  ss permissions..
5120: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
5130: 5f 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b 20 20 20  _IOERR_UNLOCK   
5140: 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45           {SQLITE
5150: 5f 49 4f 45 52 52 20 7c 20 28 38 3c 3c 38 29 7d  _IOERR | (8<<8)}
5160: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
5170: 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b 20 65 72 72  IOERR_UNLOCK err
5180: 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65  or code is an [e
5190: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
51a0: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20  ed error code]. 
51b0: 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45   for [SQLITE_IOE
51c0: 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 61  RR] indicating a
51d0: 6e 20 49 2f 4f 20 65 72 72 6f 72 0a 20 20 77 69  n I/O error.  wi
51e0: 74 68 69 6e 20 78 55 6e 6c 6f 63 6b 20 6d 65 74  thin xUnlock met
51f0: 68 6f 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69  hod on the [sqli
5200: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
5210: 6f 62 6a 65 63 74 2e 0a 7d 0a 52 45 53 43 4f 44  object..}.RESCOD
5220: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52  E SQLITE_IOERR_R
5230: 44 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20  DLOCK           
5240: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
5250: 20 28 39 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (9<<8)} {.  The
5260: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 55 4e   SQLITE_IOERR_UN
5270: 4c 4f 43 4b 20 65 72 72 6f 72 20 63 6f 64 65 20  LOCK error code 
5280: 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69  is an [ext-v-pri
5290: 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72  m|extended error
52a0: 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51   code].  for [SQ
52b0: 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69  LITE_IOERR] indi
52c0: 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72  cating an I/O er
52d0: 72 6f 72 0a 20 20 77 69 74 68 69 6e 20 78 4c 6f  ror.  within xLo
52e0: 63 6b 20 6d 65 74 68 6f 64 20 6f 6e 20 74 68 65  ck method on the
52f0: 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74   [sqlite3_io_met
5300: 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 77 68 69  hods] object whi
5310: 6c 65 20 74 72 79 69 6e 67 0a 20 20 74 6f 20 6f  le trying.  to o
5320: 62 74 61 69 6e 20 61 20 72 65 61 64 20 6c 6f 63  btain a read loc
5330: 6b 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  k..}.RESCODE SQL
5340: 49 54 45 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45  ITE_IOERR_DELETE
5350: 20 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c              {SQL
5360: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31 30 3c  ITE_IOERR | (10<
5370: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
5380: 49 54 45 5f 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b  ITE_IOERR_UNLOCK
5390: 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61   error code is a
53a0: 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78  n [ext-v-prim|ex
53b0: 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64  tended error cod
53c0: 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45  e].  for [SQLITE
53d0: 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69  _IOERR] indicati
53e0: 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72 0a  ng an I/O error.
53f0: 20 20 77 69 74 68 69 6e 20 78 44 65 6c 65 74 65    within xDelete
5400: 20 6d 65 74 68 6f 64 20 6f 6e 20 74 68 65 20 5b   method on the [
5410: 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a  sqlite3_vfs] obj
5420: 65 63 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ect..}.RESCODE S
5430: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 4c 4f 43  QLITE_IOERR_BLOC
5440: 4b 45 44 20 20 20 20 20 20 20 20 20 20 20 7b 53  KED           {S
5450: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
5460: 31 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53  1<<8)} {.  The S
5470: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 4c 4f 43  QLITE_IOERR_BLOC
5480: 4b 45 44 20 65 72 72 6f 72 20 63 6f 64 65 20 69  KED error code i
5490: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64  s no longer used
54a0: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
54b0: 54 45 5f 49 4f 45 52 52 5f 4e 4f 4d 45 4d 20 20  TE_IOERR_NOMEM  
54c0: 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49             {SQLI
54d0: 54 45 5f 49 4f 45 52 52 20 7c 20 28 31 32 3c 3c  TE_IOERR | (12<<
54e0: 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  8)} {.  The SQLI
54f0: 54 45 5f 49 4f 45 52 52 5f 4e 4f 4d 45 4d 20 65  TE_IOERR_NOMEM e
5500: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 73 6f 6d  rror code is som
5510: 65 74 69 6d 65 73 20 72 65 74 75 72 6e 65 64 20  etimes returned 
5520: 62 79 20 74 68 65 20 5b 56 46 53 5d 0a 20 20 6c  by the [VFS].  l
5530: 61 79 65 72 20 74 6f 20 69 6e 64 69 63 61 74 65  ayer to indicate
5540: 20 74 68 61 74 20 61 6e 20 6f 70 65 72 61 74 69   that an operati
5550: 6f 6e 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20  on could not be 
5560: 63 6f 6d 70 6c 65 74 65 64 20 64 75 65 20 74 6f  completed due to
5570: 20 74 68 65 0a 20 20 69 6e 61 62 69 6c 69 74 79   the.  inability
5580: 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 73 75 66   to allocate suf
5590: 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 2e 20  ficient memory. 
55a0: 20 54 68 69 73 20 65 72 72 6f 72 20 63 6f 64 65   This error code
55b0: 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 0a 20 20 63   is normally.  c
55c0: 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 5b 53  onverted into [S
55d0: 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 20 62 79 20  QLITE_NOMEM] by 
55e0: 74 68 65 20 68 69 67 68 65 72 20 6c 61 79 65 72  the higher layer
55f0: 73 20 6f 66 20 53 51 4c 69 74 65 20 62 65 66 6f  s of SQLite befo
5600: 72 65 0a 20 20 62 65 69 6e 67 20 72 65 74 75 72  re.  being retur
5610: 6e 65 64 20 74 6f 20 74 68 65 20 61 70 70 6c 69  ned to the appli
5620: 63 61 74 69 6f 6e 2e 0a 7d 0a 52 45 53 43 4f 44  cation..}.RESCOD
5630: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41  E SQLITE_IOERR_A
5640: 43 43 45 53 53 20 20 20 20 20 20 20 20 20 20 20  CCESS           
5650: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
5660: 20 28 31 33 3c 3c 38 29 7d 20 7b 0a 20 20 54 68   (13<<8)} {.  Th
5670: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41  e SQLITE_IOERR_A
5680: 43 43 45 53 53 20 65 72 72 6f 72 20 63 6f 64 65  CCESS error code
5690: 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72   is an [ext-v-pr
56a0: 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f  im|extended erro
56b0: 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53  r code].  for [S
56c0: 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64  QLITE_IOERR] ind
56d0: 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65  icating an I/O e
56e0: 72 72 6f 72 0a 20 20 77 69 74 68 69 6e 20 74 68  rror.  within th
56f0: 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64  e xAccess method
5700: 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33   on the [sqlite3
5710: 5f 76 66 73 5d 20 6f 62 6a 65 63 74 2e 0a 7d 0a  _vfs] object..}.
5720: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49  RESCODE SQLITE_I
5730: 4f 45 52 52 5f 43 48 45 43 4b 52 45 53 45 52 56  OERR_CHECKRESERV
5740: 45 44 4c 4f 43 4b 20 7b 53 51 4c 49 54 45 5f 49  EDLOCK {SQLITE_I
5750: 4f 45 52 52 20 7c 20 28 31 34 3c 3c 38 29 7d 20  OERR | (14<<8)} 
5760: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49  {.  The SQLITE_I
5770: 4f 45 52 52 5f 43 48 45 43 4b 52 45 53 45 52 56  OERR_CHECKRESERV
5780: 45 44 4c 4f 43 4b 20 65 72 72 6f 72 20 63 6f 64  EDLOCK error cod
5790: 65 20 69 73 0a 20 20 61 6e 20 5b 65 78 74 2d 76  e is.  an [ext-v
57a0: 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65  -prim|extended e
57b0: 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72  rror code].  for
57c0: 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20   [SQLITE_IOERR] 
57d0: 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f  indicating an I/
57e0: 4f 20 65 72 72 6f 72 0a 20 20 77 69 74 68 69 6e  O error.  within
57f0: 20 74 68 65 20 78 43 68 65 63 6b 52 65 73 65 72   the xCheckReser
5800: 76 65 64 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f  vedLock method o
5810: 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  n the [sqlite3_i
5820: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
5830: 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  t..}.RESCODE SQL
5840: 49 54 45 5f 49 4f 45 52 52 5f 4c 4f 43 4b 20 20  ITE_IOERR_LOCK  
5850: 20 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c              {SQL
5860: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31 35 3c  ITE_IOERR | (15<
5870: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
5880: 49 54 45 5f 49 4f 45 52 52 5f 4c 4f 43 4b 20 65  ITE_IOERR_LOCK e
5890: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20  rror code is an 
58a0: 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65  [ext-v-prim|exte
58b0: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d  nded error code]
58c0: 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49  .  for [SQLITE_I
58d0: 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67  OERR] indicating
58e0: 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72 20 69 6e   an I/O error in
58f0: 20 74 68 65 20 0a 20 20 61 64 76 69 73 6f 72 79   the .  advisory
5900: 20 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 6c 6f   file locking lo
5910: 67 69 63 2e 0a 20 20 55 73 75 61 6c 6c 79 20 61  gic..  Usually a
5920: 6e 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4c  n SQLITE_IOERR_L
5930: 4f 43 4b 20 65 72 72 6f 72 20 69 6e 64 69 63 61  OCK error indica
5940: 74 65 73 20 61 20 70 72 6f 62 6c 65 6d 20 6f 62  tes a problem ob
5950: 74 61 69 6e 69 6e 67 0a 20 20 61 20 5b 50 45 4e  taining.  a [PEN
5960: 44 49 4e 47 20 6c 6f 63 6b 5d 2e 20 20 48 6f 77  DING lock].  How
5970: 65 76 65 72 20 69 74 20 63 61 6e 20 61 6c 73 6f  ever it can also
5980: 20 69 6e 64 69 63 61 74 65 20 6d 69 73 63 65 6c   indicate miscel
5990: 6c 61 6e 65 6f 75 73 0a 20 20 6c 6f 63 6b 69 6e  laneous.  lockin
59a0: 67 20 65 72 72 6f 72 73 20 6f 6e 20 73 6f 6d 65  g errors on some
59b0: 20 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 69   of the speciali
59c0: 7a 65 64 20 5b 56 46 53 65 73 5d 20 75 73 65 64  zed [VFSes] used
59d0: 20 6f 6e 20 4d 61 63 73 2e 0a 7d 0a 52 45 53 43   on Macs..}.RESC
59e0: 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ODE SQLITE_IOERR
59f0: 5f 43 4c 4f 53 45 20 20 20 20 20 20 20 20 20 20  _CLOSE          
5a00: 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52     {SQLITE_IOERR
5a10: 20 7c 20 28 31 36 3c 3c 38 29 7d 20 7b 0a 20 20   | (16<<8)} {.  
5a20: 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  The SQLITE_IOERR
5a30: 5f 41 43 43 45 53 53 20 65 72 72 6f 72 20 63 6f  _ACCESS error co
5a40: 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  de is an [ext-v-
5a50: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
5a60: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
5a70: 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69  [SQLITE_IOERR] i
5a80: 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f  ndicating an I/O
5a90: 20 65 72 72 6f 72 0a 20 20 77 69 74 68 69 6e 20   error.  within 
5aa0: 74 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f  the xClose metho
5ab0: 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74 65  d on the [sqlite
5ac0: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62  3_io_methods] ob
5ad0: 6a 65 63 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  ject..}.RESCODE 
5ae0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52  SQLITE_IOERR_DIR
5af0: 5f 43 4c 4f 53 45 20 20 20 20 20 20 20 20 20 7b  _CLOSE         {
5b00: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
5b10: 31 37 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  17<<8)} {.  The 
5b20: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52  SQLITE_IOERR_DIR
5b30: 5f 43 4c 4f 53 45 20 65 72 72 6f 72 20 63 6f 64  _CLOSE error cod
5b40: 65 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75  e is no longer u
5b50: 73 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  sed..}.RESCODE S
5b60: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 4f  QLITE_IOERR_SHMO
5b70: 50 45 4e 20 20 20 20 20 20 20 20 20 20 20 7b 53  PEN           {S
5b80: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
5b90: 38 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53  8<<8)} {.  The S
5ba0: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 4f  QLITE_IOERR_SHMO
5bb0: 50 45 4e 20 65 72 72 6f 72 20 63 6f 64 65 20 69  PEN error code i
5bc0: 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d  s an [ext-v-prim
5bd0: 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  |extended error 
5be0: 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c  code].  for [SQL
5bf0: 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63  ITE_IOERR] indic
5c00: 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72  ating an I/O err
5c10: 6f 72 0a 20 20 77 69 74 68 69 6e 20 74 68 65 20  or.  within the 
5c20: 78 53 68 6d 4d 61 70 20 6d 65 74 68 6f 64 20 6f  xShmMap method o
5c30: 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  n the [sqlite3_i
5c40: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
5c50: 74 0a 20 20 77 68 69 6c 65 20 74 72 79 69 6e 67  t.  while trying
5c60: 20 74 6f 20 6f 70 65 6e 20 61 20 6e 65 77 20 73   to open a new s
5c70: 68 61 72 65 64 20 6d 65 6d 6f 72 79 20 73 65 67  hared memory seg
5c80: 6d 65 6e 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  ment..}.RESCODE 
5c90: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
5ca0: 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 7b  SIZE           {
5cb0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
5cc0: 31 39 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  19<<8)} {.  The 
5cd0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
5ce0: 53 49 5a 45 20 65 72 72 6f 72 20 63 6f 64 65 20  SIZE error code 
5cf0: 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69  is an [ext-v-pri
5d00: 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72  m|extended error
5d10: 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51   code].  for [SQ
5d20: 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69  LITE_IOERR] indi
5d30: 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72  cating an I/O er
5d40: 72 6f 72 0a 20 20 77 69 74 68 69 6e 20 74 68 65  ror.  within the
5d50: 20 78 53 68 6d 4d 61 70 20 6d 65 74 68 6f 64 20   xShmMap method 
5d60: 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  on the [sqlite3_
5d70: 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65  io_methods] obje
5d80: 63 74 0a 20 20 77 68 69 6c 65 20 74 72 79 69 6e  ct.  while tryin
5d90: 67 20 74 6f 20 65 6e 6c 61 72 67 65 20 61 20 5b  g to enlarge a [
5da0: 22 73 68 6d 22 20 66 69 6c 65 5d 20 61 73 20 70  "shm" file] as p
5db0: 61 72 74 20 6f 66 0a 20 20 5b 57 41 4c 20 6d 6f  art of.  [WAL mo
5dc0: 64 65 5d 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  de] transaction 
5dd0: 70 72 6f 63 65 73 73 69 6e 67 2e 20 20 54 68 69  processing.  Thi
5de0: 73 20 65 72 72 6f 72 20 6d 61 79 20 69 6e 64 69  s error may indi
5df0: 63 61 74 65 20 74 68 61 74 0a 20 20 74 68 65 20  cate that.  the 
5e00: 75 6e 64 65 72 6c 79 69 6e 67 20 66 69 6c 65 73  underlying files
5e10: 79 73 74 65 6d 20 76 6f 6c 75 6d 65 20 69 73 20  ystem volume is 
5e20: 6f 75 74 20 6f 66 20 73 70 61 63 65 2e 0a 7d 0a  out of space..}.
5e30: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49  RESCODE SQLITE_I
5e40: 4f 45 52 52 5f 53 48 4d 4c 4f 43 4b 20 20 20 20  OERR_SHMLOCK    
5e50: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49         {SQLITE_I
5e60: 4f 45 52 52 20 7c 20 28 32 30 3c 3c 38 29 7d 20  OERR | (20<<8)} 
5e70: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49  {.  The SQLITE_I
5e80: 4f 45 52 52 5f 53 48 4d 4c 4f 43 4b 20 65 72 72  OERR_SHMLOCK err
5e90: 6f 72 20 63 6f 64 65 20 69 73 20 6e 6f 20 6c 6f  or code is no lo
5ea0: 6e 67 65 72 20 75 73 65 64 2e 0a 7d 0a 52 45 53  nger used..}.RES
5eb0: 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52  CODE SQLITE_IOER
5ec0: 52 5f 53 48 4d 4d 41 50 20 20 20 20 20 20 20 20  R_SHMMAP        
5ed0: 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52      {SQLITE_IOER
5ee0: 52 20 7c 20 28 32 31 3c 3c 38 29 7d 20 7b 0a 20  R | (21<<8)} {. 
5ef0: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
5f00: 52 5f 53 48 4d 4d 41 50 20 65 72 72 6f 72 20 63  R_SHMMAP error c
5f10: 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76  ode is an [ext-v
5f20: 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65  -prim|extended e
5f30: 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72  rror code].  for
5f40: 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20   [SQLITE_IOERR] 
5f50: 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f  indicating an I/
5f60: 4f 20 65 72 72 6f 72 0a 20 20 77 69 74 68 69 6e  O error.  within
5f70: 20 74 68 65 20 78 53 68 6d 4d 61 70 20 6d 65 74   the xShmMap met
5f80: 68 6f 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69  hod on the [sqli
5f90: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
5fa0: 6f 62 6a 65 63 74 0a 20 20 77 68 69 6c 65 20 74  object.  while t
5fb0: 72 79 69 6e 67 20 74 6f 20 6d 61 70 20 61 20 73  rying to map a s
5fc0: 68 61 72 65 64 20 6d 65 6d 6f 72 79 20 73 65 67  hared memory seg
5fd0: 6d 65 6e 74 20 69 6e 74 6f 20 74 68 65 20 70 72  ment into the pr
5fe0: 6f 63 65 73 73 20 61 64 64 72 65 73 73 20 73 70  ocess address sp
5ff0: 61 63 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ace..}.RESCODE S
6000: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 45 45 4b  QLITE_IOERR_SEEK
6010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 53                {S
6020: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
6030: 32 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53  2<<8)} {.  The S
6040: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 45 45 4b  QLITE_IOERR_SEEK
6050: 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61   error code is a
6060: 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78  n [ext-v-prim|ex
6070: 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64  tended error cod
6080: 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45  e].  for [SQLITE
6090: 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69  _IOERR] indicati
60a0: 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72 0a  ng an I/O error.
60b0: 20 20 77 69 74 68 69 6e 20 74 68 65 20 78 52 65    within the xRe
60c0: 61 64 20 6f 72 20 78 57 72 69 74 65 20 6d 65 74  ad or xWrite met
60d0: 68 6f 64 73 20 6f 6e 20 74 68 65 20 5b 73 71 6c  hods on the [sql
60e0: 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d  ite3_io_methods]
60f0: 20 6f 62 6a 65 63 74 0a 20 20 77 68 69 6c 65 20   object.  while 
6100: 74 72 79 69 6e 67 20 74 6f 20 73 65 65 6b 20 61  trying to seek a
6110: 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72   file descriptor
6120: 20 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e   to the beginnin
6130: 67 20 70 6f 69 6e 74 20 6f 66 20 74 68 65 0a 20  g point of the. 
6140: 20 66 69 6c 65 20 77 68 65 72 65 20 74 68 65 20   file where the 
6150: 72 65 61 64 20 6f 72 20 77 72 69 74 65 20 69 73  read or write is
6160: 20 74 6f 20 6f 63 63 75 72 2e 0a 7d 0a 52 45 53   to occur..}.RES
6170: 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52  CODE SQLITE_IOER
6180: 52 5f 44 45 4c 45 54 45 5f 4e 4f 45 4e 54 20 20  R_DELETE_NOENT  
6190: 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52      {SQLITE_IOER
61a0: 52 20 7c 20 28 32 33 3c 3c 38 29 7d 20 7b 0a 20  R | (23<<8)} {. 
61b0: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
61c0: 52 5f 44 45 4c 45 54 45 5f 4e 4f 45 4e 54 20 65  R_DELETE_NOENT e
61d0: 72 72 6f 72 20 63 6f 64 65 0a 20 20 69 73 20 61  rror code.  is a
61e0: 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78  n [ext-v-prim|ex
61f0: 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64  tended error cod
6200: 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45  e].  for [SQLITE
6210: 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69  _IOERR] indicati
6220: 6e 67 20 74 68 61 74 20 74 68 65 0a 20 20 78 44  ng that the.  xD
6230: 65 6c 65 74 65 20 6d 65 74 68 6f 64 20 6f 6e 20  elete method on 
6240: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  the [sqlite3_vfs
6250: 5d 20 6f 62 6a 65 63 74 20 66 61 69 6c 65 64 20  ] object failed 
6260: 62 65 63 61 75 73 65 20 74 68 65 0a 20 20 66 69  because the.  fi
6270: 6c 65 20 62 65 69 6e 67 20 64 65 6c 65 74 65 64  le being deleted
6280: 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e   does not exist.
6290: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
62a0: 45 5f 49 4f 45 52 52 5f 4d 4d 41 50 20 20 20 20  E_IOERR_MMAP    
62b0: 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54            {SQLIT
62c0: 45 5f 49 4f 45 52 52 20 7c 20 28 32 34 3c 3c 38  E_IOERR | (24<<8
62d0: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
62e0: 45 5f 49 4f 45 52 52 5f 4d 4d 41 50 20 65 72 72  E_IOERR_MMAP err
62f0: 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65  or code is an [e
6300: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
6310: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20  ed error code]. 
6320: 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45   for [SQLITE_IOE
6330: 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 61  RR] indicating a
6340: 6e 20 49 2f 4f 20 65 72 72 6f 72 0a 20 20 77 69  n I/O error.  wi
6350: 74 68 69 6e 20 74 68 65 20 78 46 65 74 63 68 20  thin the xFetch 
6360: 6f 72 20 78 55 6e 66 65 74 63 68 20 6d 65 74 68  or xUnfetch meth
6370: 6f 64 73 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69  ods on the [sqli
6380: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
6390: 6f 62 6a 65 63 74 0a 20 20 77 68 69 6c 65 20 74  object.  while t
63a0: 72 79 69 6e 67 20 74 6f 20 6d 61 70 20 6f 72 20  rying to map or 
63b0: 75 6e 6d 61 70 20 70 61 72 74 20 6f 66 20 74 68  unmap part of th
63c0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
63d0: 69 6e 74 6f 20 74 68 65 0a 20 20 70 72 6f 63 65  into the.  proce
63e0: 73 73 20 61 64 64 72 65 73 73 20 73 70 61 63 65  ss address space
63f0: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
6400: 54 45 5f 49 4f 45 52 52 5f 47 45 54 54 45 4d 50  TE_IOERR_GETTEMP
6410: 50 41 54 48 20 20 20 20 20 20 20 7b 53 51 4c 49  PATH       {SQLI
6420: 54 45 5f 49 4f 45 52 52 20 7c 20 28 32 35 3c 3c  TE_IOERR | (25<<
6430: 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  8)} {.  The SQLI
6440: 54 45 5f 49 4f 45 52 52 5f 47 45 54 54 45 4d 50  TE_IOERR_GETTEMP
6450: 50 41 54 48 20 65 72 72 6f 72 20 63 6f 64 65 20  PATH error code 
6460: 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69  is an [ext-v-pri
6470: 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72  m|extended error
6480: 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51   code].  for [SQ
6490: 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69  LITE_IOERR] indi
64a0: 63 61 74 69 6e 67 20 74 68 61 74 20 74 68 65 20  cating that the 
64b0: 5b 56 46 53 5d 20 69 73 20 75 6e 61 62 6c 65 20  [VFS] is unable 
64c0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 0a 20 20 61  to determine.  a
64d0: 20 73 75 69 74 61 62 6c 65 20 64 69 72 65 63 74   suitable direct
64e0: 6f 72 79 20 69 6e 20 77 68 69 63 68 20 74 6f 20  ory in which to 
64f0: 70 6c 61 63 65 20 74 65 6d 70 6f 72 61 72 79 20  place temporary 
6500: 66 69 6c 65 73 2e 0a 7d 0a 52 45 53 43 4f 44 45  files..}.RESCODE
6510: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f   SQLITE_IOERR_CO
6520: 4e 56 50 41 54 48 20 20 20 20 20 20 20 20 20 20  NVPATH          
6530: 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  {SQLITE_IOERR | 
6540: 28 32 36 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65  (26<<8)} {.  The
6550: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f   SQLITE_IOERR_CO
6560: 4e 56 50 41 54 48 20 65 72 72 6f 72 20 63 6f 64  NVPATH error cod
6570: 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70  e is an [ext-v-p
6580: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
6590: 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b  or code].  for [
65a0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 75 73  SQLITE_IOERR] us
65b0: 65 64 20 6f 6e 6c 79 20 62 79 20 43 79 67 77 69  ed only by Cygwi
65c0: 6e 20 5b 56 46 53 5d 20 61 6e 64 20 69 6e 64 69  n [VFS] and indi
65d0: 63 61 74 69 6e 67 20 74 68 61 74 0a 20 20 74 68  cating that.  th
65e0: 65 20 63 79 67 77 69 6e 5f 63 6f 6e 76 5f 70 61  e cygwin_conv_pa
65f0: 74 68 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c  th() system call
6600: 20 66 61 69 6c 65 64 2e 0a 20 20 53 65 65 20 61   failed..  See a
6610: 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 43 41 4e  lso: [SQLITE_CAN
6620: 54 4f 50 45 4e 5f 43 4f 4e 56 50 41 54 48 5d 0a  TOPEN_CONVPATH].
6630: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
6640: 5f 4c 4f 43 4b 45 44 5f 53 48 41 52 45 44 43 41  _LOCKED_SHAREDCA
6650: 43 48 45 20 20 20 20 20 20 7b 53 51 4c 49 54 45  CHE      {SQLITE
6660: 5f 4c 4f 43 4b 45 44 20 7c 20 20 28 31 3c 3c 38  _LOCKED |  (1<<8
6670: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
6680: 45 5f 4c 4f 43 4b 45 44 5f 53 48 41 52 45 44 43  E_LOCKED_SHAREDC
6690: 41 43 48 45 20 65 72 72 6f 72 20 63 6f 64 65 20  ACHE error code 
66a0: 69 73 0a 20 20 61 6e 20 5b 65 78 74 2d 76 2d 70  is.  an [ext-v-p
66b0: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
66c0: 6f 72 20 63 6f 64 65 5d 20 66 6f 72 20 5b 53 51  or code] for [SQ
66d0: 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 0a 20 20 69  LITE_LOCKED].  i
66e0: 6e 64 69 63 61 74 69 6e 67 20 74 68 61 74 20 74  ndicating that t
66f0: 68 65 20 6c 6f 63 6b 69 6e 67 20 63 6f 6e 66 6c  he locking confl
6700: 69 63 74 20 68 61 73 20 6f 63 63 75 72 72 65 64  ict has occurred
6710: 20 64 75 65 20 74 6f 20 63 6f 6e 74 65 6e 74 69   due to contenti
6720: 6f 6e 0a 20 20 77 69 74 68 20 61 20 64 69 66 66  on.  with a diff
6730: 65 72 65 6e 74 20 5b 64 61 74 61 62 61 73 65 20  erent [database 
6740: 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 74 68 61 74  connection] that
6750: 20 68 61 70 70 65 6e 73 20 74 6f 20 68 6f 6c 64   happens to hold
6760: 20 61 20 0a 20 20 5b 73 68 61 72 65 64 20 63 61   a .  [shared ca
6770: 63 68 65 5d 20 77 69 74 68 20 74 68 65 20 64 61  che] with the da
6780: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
6790: 6e 20 74 6f 20 77 68 69 63 68 20 74 68 65 20 65  n to which the e
67a0: 72 72 6f 72 20 77 61 73 0a 20 20 72 65 74 75 72  rror was.  retur
67b0: 6e 65 64 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  ned.  For exampl
67c0: 65 2c 20 69 66 20 74 68 65 20 6f 74 68 65 72 20  e, if the other 
67d0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
67e0: 69 6f 6e 20 69 73 20 68 6f 6c 64 69 6e 67 0a 20  ion is holding. 
67f0: 20 61 6e 20 5b 65 78 63 6c 75 73 69 76 65 20 6c   an [exclusive l
6800: 6f 63 6b 5d 20 6f 6e 20 74 68 65 20 64 61 74 61  ock] on the data
6810: 62 61 73 65 2c 20 74 68 65 6e 20 74 68 65 20 64  base, then the d
6820: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
6830: 6f 6e 0a 20 20 74 68 61 74 20 72 65 63 65 69 76  on.  that receiv
6840: 65 73 20 74 68 69 73 20 65 72 72 6f 72 20 77 69  es this error wi
6850: 6c 6c 20 62 65 20 75 6e 61 62 6c 65 20 74 6f 20  ll be unable to 
6860: 72 65 61 64 20 6f 72 20 77 72 69 74 65 20 61 6e  read or write an
6870: 79 20 70 61 72 74 0a 20 20 6f 66 20 74 68 65 20  y part.  of the 
6880: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 75 6e  database file un
6890: 6c 65 73 73 20 69 74 20 68 61 73 20 74 68 65 20  less it has the 
68a0: 5b 72 65 61 64 5f 75 6e 63 6f 6d 6d 69 74 74 65  [read_uncommitte
68b0: 64 20 70 72 61 67 6d 61 5d 0a 20 20 65 6e 61 62  d pragma].  enab
68c0: 6c 65 64 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65  led..  <p>.  The
68d0: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 53   SQLITE_LOCKED_S
68e0: 48 41 52 45 43 41 43 48 45 20 65 72 72 6f 72 20  HARECACHE error 
68f0: 63 6f 64 65 20 77 6f 72 6b 73 20 76 65 72 79 20  code works very 
6900: 6d 75 63 68 20 6c 69 6b 65 20 74 68 65 0a 20 20  much like the.  
6910: 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 65 72  [SQLITE_BUSY] er
6920: 72 6f 72 20 63 6f 64 65 20 65 78 63 65 70 74 20  ror code except 
6930: 74 68 61 74 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  that SQLITE_LOCK
6940: 45 44 5f 53 48 41 52 45 43 41 43 48 45 20 69 73  ED_SHARECACHE is
6950: 0a 20 20 66 6f 72 20 73 65 70 61 72 61 74 65 20  .  for separate 
6960: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
6970: 69 6f 6e 73 20 74 68 61 74 20 73 68 61 72 65 20  ions that share 
6980: 61 20 63 61 63 68 65 20 77 68 65 72 65 61 73 20  a cache whereas 
6990: 0a 20 20 53 51 4c 49 54 45 5f 42 55 53 59 20 69  .  SQLITE_BUSY i
69a0: 73 20 66 6f 72 20 74 68 65 20 6d 75 63 68 20 6d  s for the much m
69b0: 6f 72 65 20 63 6f 6d 6d 6f 6e 20 63 61 73 65 20  ore common case 
69c0: 6f 66 20 73 65 70 61 72 61 74 65 20 64 61 74 61  of separate data
69d0: 62 61 73 65 0a 20 20 63 6f 6e 6e 65 63 74 69 6f  base.  connectio
69e0: 6e 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 73  ns that do not s
69f0: 68 61 72 65 20 74 68 65 20 73 61 6d 65 20 63 61  hare the same ca
6a00: 63 68 65 2e 20 20 41 6c 73 6f 2c 20 74 68 65 0a  che.  Also, the.
6a10: 20 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79 5f    [sqlite3_busy_
6a20: 68 61 6e 64 6c 65 72 28 29 5d 20 61 6e 64 20 5b  handler()] and [
6a30: 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d  sqlite3_busy_tim
6a40: 65 6f 75 74 28 29 5d 20 69 6e 74 65 72 66 61 63  eout()] interfac
6a50: 65 73 0a 20 20 64 6f 20 6e 6f 74 20 68 65 6c 70  es.  do not help
6a60: 20 69 6e 20 72 65 73 6f 6c 76 69 6e 67 20 53 51   in resolving SQ
6a70: 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 53 48 41 52  LITE_LOCKED_SHAR
6a80: 45 44 43 41 43 48 45 20 63 6f 6e 66 6c 69 63 74  EDCACHE conflict
6a90: 73 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  s..}.RESCODE SQL
6aa0: 49 54 45 5f 42 55 53 59 5f 52 45 43 4f 56 45 52  ITE_BUSY_RECOVER
6ab0: 59 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c  Y           {SQL
6ac0: 49 54 45 5f 42 55 53 59 20 20 20 7c 20 20 28 31  ITE_BUSY   |  (1
6ad0: 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51  <<8)} {.  The SQ
6ae0: 4c 49 54 45 5f 42 55 53 59 5f 52 45 43 4f 56 45  LITE_BUSY_RECOVE
6af0: 52 59 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  RY error code is
6b00: 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c   an [ext-v-prim|
6b10: 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63  extended error c
6b20: 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49  ode].  for [SQLI
6b30: 54 45 5f 42 55 53 59 5d 20 74 68 61 74 20 69 6e  TE_BUSY] that in
6b40: 64 69 63 61 74 65 73 20 74 68 61 74 20 61 6e 20  dicates that an 
6b50: 6f 70 65 72 61 74 69 6f 6e 20 63 6f 75 6c 64 20  operation could 
6b60: 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 0a 20 20 62  not continue.  b
6b70: 65 63 61 75 73 65 20 61 6e 6f 74 68 65 72 20 70  ecause another p
6b80: 72 6f 63 65 73 73 20 69 73 20 62 75 73 79 20 72  rocess is busy r
6b90: 65 63 6f 76 65 72 69 6e 67 20 61 20 5b 57 41 4c  ecovering a [WAL
6ba0: 20 6d 6f 64 65 5d 20 64 61 74 61 62 61 73 65 20   mode] database 
6bb0: 66 69 6c 65 0a 20 20 66 6f 6c 6c 6f 77 69 6e 67  file.  following
6bc0: 20 61 20 63 72 61 73 68 2e 20 20 54 68 65 20 53   a crash.  The S
6bd0: 51 4c 49 54 45 5f 42 55 53 59 5f 52 45 43 4f 56  QLITE_BUSY_RECOV
6be0: 45 52 59 20 65 72 72 6f 72 20 63 6f 64 65 20 6f  ERY error code o
6bf0: 6e 6c 79 20 6f 63 63 75 72 73 0a 20 20 6f 6e 20  nly occurs.  on 
6c00: 5b 57 41 4c 20 6d 6f 64 65 5d 20 64 61 74 61 62  [WAL mode] datab
6c10: 61 73 65 73 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  ases..}.RESCODE 
6c20: 53 51 4c 49 54 45 5f 42 55 53 59 5f 53 4e 41 50  SQLITE_BUSY_SNAP
6c30: 53 48 4f 54 20 20 20 20 20 20 20 20 20 20 20 7b  SHOT           {
6c40: 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20 7c 20  SQLITE_BUSY   | 
6c50: 20 28 32 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (2<<8)} {.  The
6c60: 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 53 4e 41   SQLITE_BUSY_SNA
6c70: 50 53 48 4f 54 20 65 72 72 6f 72 20 63 6f 64 65  PSHOT error code
6c80: 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72   is an [ext-v-pr
6c90: 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f  im|extended erro
6ca0: 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53  r code].  for [S
6cb0: 51 4c 49 54 45 5f 42 55 53 59 5d 20 74 68 61 74  QLITE_BUSY] that
6cc0: 20 6f 63 63 75 72 73 20 6f 6e 20 5b 57 41 4c 20   occurs on [WAL 
6cd0: 6d 6f 64 65 5d 20 64 61 74 61 62 61 73 65 73 20  mode] databases 
6ce0: 77 68 65 6e 20 61 20 64 61 74 61 62 61 73 65 0a  when a database.
6cf0: 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 72 69    connection tri
6d00: 65 73 20 74 6f 20 70 72 6f 6d 6f 74 65 20 61 20  es to promote a 
6d10: 72 65 61 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  read transaction
6d20: 20 69 6e 74 6f 20 61 20 77 72 69 74 65 20 74 72   into a write tr
6d30: 61 6e 73 61 63 74 69 6f 6e 0a 20 20 62 75 74 20  ansaction.  but 
6d40: 66 69 6e 64 73 20 74 68 61 74 20 61 6e 6f 74 68  finds that anoth
6d50: 65 72 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  er [database con
6d60: 6e 65 63 74 69 6f 6e 5d 20 68 61 73 20 61 6c 72  nection] has alr
6d70: 65 61 64 79 20 77 72 69 74 74 65 6e 20 74 6f 20  eady written to 
6d80: 74 68 65 0a 20 20 64 61 74 61 62 61 73 65 20 61  the.  database a
6d90: 6e 64 20 74 68 75 73 20 69 6e 76 61 6c 69 64 61  nd thus invalida
6da0: 74 65 64 20 70 72 69 6f 72 20 72 65 61 64 73 2e  ted prior reads.
6db0: 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20 66 6f 6c  .  <p>.  The fol
6dc0: 6c 6f 77 69 6e 67 20 73 63 65 6e 61 72 69 6f 20  lowing scenario 
6dd0: 69 6c 6c 75 73 74 72 61 74 65 73 20 68 6f 77 20  illustrates how 
6de0: 61 6e 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 53  an SQLITE_BUSY_S
6df0: 4e 41 50 53 48 4f 54 20 65 72 72 6f 72 0a 20 20  NAPSHOT error.  
6e00: 6d 69 67 68 74 20 61 72 69 73 65 3a 0a 20 20 3c  might arise:.  <
6e10: 6f 6c 3e 0a 20 20 3c 6c 69 3e 20 50 72 6f 63 65  ol>.  <li> Proce
6e20: 73 73 20 41 20 73 74 61 72 74 73 20 61 20 72 65  ss A starts a re
6e30: 61 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6f  ad transaction o
6e40: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  n the database a
6e50: 6e 64 20 64 6f 65 73 20 6f 6e 65 0a 20 20 20 20  nd does one.    
6e60: 20 20 20 6f 72 20 6d 6f 72 65 20 53 45 4c 45 43     or more SELEC
6e70: 54 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 50 72  T statement.  Pr
6e80: 6f 63 65 73 73 20 41 20 6b 65 65 70 73 20 74 68  ocess A keeps th
6e90: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6f 70  e transaction op
6ea0: 65 6e 2e 0a 20 20 3c 6c 69 3e 20 50 72 6f 63 65  en..  <li> Proce
6eb0: 73 73 20 42 20 75 70 64 61 74 65 73 20 74 68 65  ss B updates the
6ec0: 20 64 61 74 61 62 61 73 65 2c 20 63 68 61 6e 67   database, chang
6ed0: 69 6e 67 20 76 61 6c 75 65 73 20 70 72 65 76 69  ing values previ
6ee0: 6f 75 73 20 72 65 61 64 20 62 79 0a 20 20 20 20  ous read by.    
6ef0: 20 20 20 70 72 6f 63 65 73 73 20 41 2e 0a 20 20     process A..  
6f00: 3c 6c 69 3e 20 50 72 6f 63 65 73 73 20 41 20 6e  <li> Process A n
6f10: 6f 77 20 74 72 69 65 73 20 74 6f 20 77 72 69 74  ow tries to writ
6f20: 65 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73  e to the databas
6f30: 65 2e 20 20 42 75 74 20 70 72 6f 63 65 73 73 20  e.  But process 
6f40: 41 27 73 20 76 69 65 77 0a 20 20 20 20 20 20 20  A's view.       
6f50: 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
6f60: 63 6f 6e 74 65 6e 74 20 69 73 20 6e 6f 77 20 6f  content is now o
6f70: 62 73 6f 6c 65 74 65 20 62 65 63 61 75 73 65 20  bsolete because 
6f80: 70 72 6f 63 65 73 73 20 42 20 68 61 73 0a 20 20  process B has.  
6f90: 20 20 20 20 20 6d 6f 64 69 66 69 65 64 20 74 68       modified th
6fa0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
6fb0: 61 66 74 65 72 20 70 72 6f 63 65 73 73 20 41 20  after process A 
6fc0: 72 65 61 64 20 66 72 6f 6d 20 69 74 2e 20 20 48  read from it.  H
6fd0: 65 6e 63 65 0a 20 20 20 20 20 20 20 70 72 6f 63  ence.       proc
6fe0: 65 73 73 20 41 20 67 65 74 73 20 61 6e 20 53 51  ess A gets an SQ
6ff0: 4c 49 54 45 5f 42 55 53 59 5f 53 4e 41 50 53 48  LITE_BUSY_SNAPSH
7000: 4f 54 20 65 72 72 6f 72 2e 0a 20 20 3c 2f 6f 6c  OT error..  </ol
7010: 3e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  >.}.RESCODE SQLI
7020: 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 4e 4f 54 45  TE_CANTOPEN_NOTE
7030: 4d 50 44 49 52 20 20 20 20 20 20 7b 53 51 4c 49  MPDIR      {SQLI
7040: 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 31  TE_CANTOPEN | (1
7050: 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51  <<8)} {.  The SQ
7060: 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 4e 4f  LITE_CANTOPEN_NO
7070: 54 45 4d 50 44 49 52 20 65 72 72 6f 72 20 63 6f  TEMPDIR error co
7080: 64 65 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20  de is no longer 
7090: 75 73 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  used..}.RESCODE 
70a0: 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f  SQLITE_CANTOPEN_
70b0: 49 53 44 49 52 20 20 20 20 20 20 20 20 20 20 7b  ISDIR          {
70c0: 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20  SQLITE_CANTOPEN 
70d0: 7c 20 28 32 3c 3c 38 29 7d 20 7b 0a 20 20 54 68  | (2<<8)} {.  Th
70e0: 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45  e SQLITE_CANTOPE
70f0: 4e 5f 49 53 44 49 52 20 65 72 72 6f 72 20 63 6f  N_ISDIR error co
7100: 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  de is an [ext-v-
7110: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
7120: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
7130: 5b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e  [SQLITE_CANTOPEN
7140: 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61  ] indicating tha
7150: 74 20 61 20 66 69 6c 65 20 6f 70 65 6e 20 6f 70  t a file open op
7160: 65 72 61 74 69 6f 6e 20 66 61 69 6c 65 64 20 62  eration failed b
7170: 65 63 61 75 73 65 0a 20 20 74 68 65 20 66 69 6c  ecause.  the fil
7180: 65 20 69 73 20 72 65 61 6c 6c 79 20 61 20 64 69  e is really a di
7190: 72 65 63 74 6f 72 79 2e 0a 7d 0a 52 45 53 43 4f  rectory..}.RESCO
71a0: 44 45 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  DE SQLITE_CANTOP
71b0: 45 4e 5f 46 55 4c 4c 50 41 54 48 20 20 20 20 20  EN_FULLPATH     
71c0: 20 20 7b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50    {SQLITE_CANTOP
71d0: 45 4e 20 7c 20 28 33 3c 3c 38 29 7d 20 7b 0a 20  EN | (3<<8)} {. 
71e0: 20 54 68 65 20 53 51 4c 49 54 45 5f 43 41 4e 54   The SQLITE_CANT
71f0: 4f 50 45 4e 5f 46 55 4c 4c 50 41 54 48 20 65 72  OPEN_FULLPATH er
7200: 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b  ror code is an [
7210: 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e  ext-v-prim|exten
7220: 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a  ded error code].
7230: 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 41    for [SQLITE_CA
7240: 4e 54 4f 50 45 4e 5d 20 69 6e 64 69 63 61 74 69  NTOPEN] indicati
7250: 6e 67 20 74 68 61 74 20 61 20 66 69 6c 65 20 6f  ng that a file o
7260: 70 65 6e 20 6f 70 65 72 61 74 69 6f 6e 20 66 61  pen operation fa
7270: 69 6c 65 64 20 62 65 63 61 75 73 65 0a 20 20 74  iled because.  t
7280: 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
7290: 74 65 6d 20 77 61 73 20 75 6e 61 62 6c 65 20 74  tem was unable t
72a0: 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 66 69  o convert the fi
72b0: 6c 65 6e 61 6d 65 20 69 6e 74 6f 20 61 20 66 75  lename into a fu
72c0: 6c 6c 20 70 61 74 68 6e 61 6d 65 2e 0a 7d 0a 52  ll pathname..}.R
72d0: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 41  ESCODE SQLITE_CA
72e0: 4e 54 4f 50 45 4e 5f 43 4f 4e 56 50 41 54 48 20  NTOPEN_CONVPATH 
72f0: 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43 41        {SQLITE_CA
7300: 4e 54 4f 50 45 4e 20 7c 20 28 34 3c 3c 38 29 7d  NTOPEN | (4<<8)}
7310: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
7320: 43 41 4e 54 4f 50 45 4e 5f 43 4f 4e 56 50 41 54  CANTOPEN_CONVPAT
7330: 48 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  H error code is 
7340: 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65  an [ext-v-prim|e
7350: 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f  xtended error co
7360: 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54  de].  for [SQLIT
7370: 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 75 73 65 64  E_CANTOPEN] used
7380: 20 6f 6e 6c 79 20 62 79 20 43 79 67 77 69 6e 20   only by Cygwin 
7390: 5b 56 46 53 5d 20 61 6e 64 20 69 6e 64 69 63 61  [VFS] and indica
73a0: 74 69 6e 67 20 74 68 61 74 0a 20 20 74 68 65 20  ting that.  the 
73b0: 63 79 67 77 69 6e 5f 63 6f 6e 76 5f 70 61 74 68  cygwin_conv_path
73c0: 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 20 66  () system call f
73d0: 61 69 6c 65 64 20 77 68 69 6c 65 20 74 72 79 69  ailed while tryi
73e0: 6e 67 20 74 6f 20 6f 70 65 6e 20 61 20 66 69 6c  ng to open a fil
73f0: 65 2e 0a 20 20 53 65 65 20 61 6c 73 6f 3a 20 5b  e..  See also: [
7400: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f 4e  SQLITE_IOERR_CON
7410: 56 50 41 54 48 5d 0a 7d 0a 52 45 53 43 4f 44 45  VPATH].}.RESCODE
7420: 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5f   SQLITE_CORRUPT_
7430: 56 54 41 42 20 20 20 20 20 20 20 20 20 20 20 20  VTAB            
7440: 7b 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20  {SQLITE_CORRUPT 
7450: 7c 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20 54 68  | (1<<8)} {.  Th
7460: 65 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54  e SQLITE_CORRUPT
7470: 5f 56 54 41 42 20 65 72 72 6f 72 20 63 6f 64 65  _VTAB error code
7480: 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72   is an [ext-v-pr
7490: 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f  im|extended erro
74a0: 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53  r code].  for [S
74b0: 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5d 20 75  QLITE_CORRUPT] u
74c0: 73 65 64 20 62 79 20 5b 76 69 72 74 75 61 6c 20  sed by [virtual 
74d0: 74 61 62 6c 65 73 5d 2e 20 20 41 20 5b 76 69 72  tables].  A [vir
74e0: 74 75 61 6c 20 74 61 62 6c 65 5d 20 6d 69 67 68  tual table] migh
74f0: 74 0a 20 20 72 65 74 75 72 6e 20 53 51 4c 49 54  t.  return SQLIT
7500: 45 5f 43 4f 52 52 55 50 54 5f 56 54 41 42 20 74  E_CORRUPT_VTAB t
7510: 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 20  o indicate that 
7520: 63 6f 6e 74 65 6e 74 20 69 6e 20 74 68 65 20 76  content in the v
7530: 69 72 74 75 61 6c 20 74 61 62 6c 65 0a 20 20 69  irtual table.  i
7540: 73 20 63 6f 72 72 75 70 74 2e 0a 7d 0a 52 45 53  s corrupt..}.RES
7550: 43 4f 44 45 20 53 51 4c 49 54 45 5f 52 45 41 44  CODE SQLITE_READ
7560: 4f 4e 4c 59 5f 52 45 43 4f 56 45 52 59 20 20 20  ONLY_RECOVERY   
7570: 20 20 20 20 7b 53 51 4c 49 54 45 5f 52 45 41 44      {SQLITE_READ
7580: 4f 4e 4c 59 20 7c 20 28 31 3c 3c 38 29 7d 20 7b  ONLY | (1<<8)} {
7590: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 52 45  .  The SQLITE_RE
75a0: 41 44 4f 4e 4c 59 5f 52 45 43 4f 56 45 52 59 20  ADONLY_RECOVERY 
75b0: 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e  error code is an
75c0: 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74   [ext-v-prim|ext
75d0: 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65  ended error code
75e0: 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f  ].  for [SQLITE_
75f0: 52 45 41 44 4f 4e 4c 59 5d 2e 20 20 54 68 65 20  READONLY].  The 
7600: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f  SQLITE_READONLY_
7610: 52 45 43 4f 56 45 52 59 20 65 72 72 6f 72 20 63  RECOVERY error c
7620: 6f 64 65 20 69 6e 64 69 63 61 74 65 73 0a 20 20  ode indicates.  
7630: 74 68 61 74 20 61 20 5b 57 41 4c 20 6d 6f 64 65  that a [WAL mode
7640: 5d 20 64 61 74 61 62 61 73 65 20 63 61 6e 6e 6f  ] database canno
7650: 74 20 62 65 20 6f 70 65 6e 65 64 20 62 65 63 61  t be opened beca
7660: 75 73 65 20 74 68 65 20 64 61 74 61 62 61 73 65  use the database
7670: 20 66 69 6c 65 0a 20 20 6e 65 65 64 73 20 74 6f   file.  needs to
7680: 20 62 65 20 72 65 63 6f 76 65 72 65 64 20 61 6e   be recovered an
7690: 64 20 72 65 63 6f 76 65 72 79 20 72 65 71 75 69  d recovery requi
76a0: 72 65 73 20 77 72 69 74 65 20 61 63 63 65 73 73  res write access
76b0: 20 62 75 74 20 6f 6e 6c 79 0a 20 20 72 65 61 64   but only.  read
76c0: 20 61 63 63 65 73 73 20 69 73 20 61 76 61 69 6c   access is avail
76d0: 61 62 6c 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  able..}.RESCODE 
76e0: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f  SQLITE_READONLY_
76f0: 43 41 4e 54 4c 4f 43 4b 20 20 20 20 20 20 20 7b  CANTLOCK       {
7700: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20  SQLITE_READONLY 
7710: 7c 20 28 32 3c 3c 38 29 7d 20 7b 0a 20 20 54 68  | (2<<8)} {.  Th
7720: 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c  e SQLITE_READONL
7730: 59 5f 43 41 4e 54 4c 4f 43 4b 20 65 72 72 6f 72  Y_CANTLOCK error
7740: 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74   code is an [ext
7750: 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64  -v-prim|extended
7760: 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66   error code].  f
7770: 6f 72 20 5b 53 51 4c 49 54 45 5f 52 45 41 44 4f  or [SQLITE_READO
7780: 4e 4c 59 5d 2e 20 20 54 68 65 20 53 51 4c 49 54  NLY].  The SQLIT
7790: 45 5f 52 45 41 44 4f 4e 4c 59 5f 43 41 4e 54 4c  E_READONLY_CANTL
77a0: 4f 43 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69  OCK error code i
77b0: 6e 64 69 63 61 74 65 73 0a 20 20 74 68 61 74 20  ndicates.  that 
77c0: 53 51 4c 69 74 65 20 69 73 20 75 6e 61 62 6c 65  SQLite is unable
77d0: 20 74 6f 20 6f 62 74 61 69 6e 20 61 20 72 65 61   to obtain a rea
77e0: 64 20 6c 6f 63 6b 20 6f 6e 20 61 20 5b 57 41 4c  d lock on a [WAL
77f0: 20 6d 6f 64 65 5d 20 64 61 74 61 62 61 73 65 0a   mode] database.
7800: 20 20 62 65 63 61 75 73 65 20 74 68 65 20 73 68    because the sh
7810: 61 72 65 64 2d 6d 65 6d 6f 72 79 20 66 69 6c 65  ared-memory file
7820: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
7830: 20 74 68 61 74 20 64 61 74 61 62 61 73 65 20 69   that database i
7840: 73 20 72 65 61 64 2d 6f 6e 6c 79 2e 0a 7d 0a 52  s read-only..}.R
7850: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 52 45  ESCODE SQLITE_RE
7860: 41 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41 43 4b 20  ADONLY_ROLLBACK 
7870: 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 52 45        {SQLITE_RE
7880: 41 44 4f 4e 4c 59 20 7c 20 28 33 3c 3c 38 29 7d  ADONLY | (3<<8)}
7890: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
78a0: 52 45 41 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41 43  READONLY_ROLLBAC
78b0: 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  K error code is 
78c0: 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65  an [ext-v-prim|e
78d0: 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f  xtended error co
78e0: 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54  de].  for [SQLIT
78f0: 45 5f 52 45 41 44 4f 4e 4c 59 5d 2e 20 20 54 68  E_READONLY].  Th
7900: 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c  e SQLITE_READONL
7910: 59 5f 52 4f 4c 4c 42 41 43 4b 20 65 72 72 6f 72  Y_ROLLBACK error
7920: 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 0a   code indicates.
7930: 20 20 74 68 61 74 20 61 20 64 61 74 61 62 61 73    that a databas
7940: 65 20 63 61 6e 6e 6f 74 20 62 65 20 6f 70 65 6e  e cannot be open
7950: 65 64 20 62 65 63 61 75 73 65 20 69 74 20 68 61  ed because it ha
7960: 73 20 61 20 5b 68 6f 74 20 6a 6f 75 72 6e 61 6c  s a [hot journal
7970: 5d 20 74 68 61 74 0a 20 20 6e 65 65 64 73 20 74  ] that.  needs t
7980: 6f 20 62 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b  o be rolled back
7990: 20 62 75 74 20 63 61 6e 6e 6f 74 20 62 65 63 61   but cannot beca
79a0: 75 73 65 20 74 68 65 20 64 61 74 61 62 61 73 65  use the database
79b0: 20 69 73 20 72 65 61 64 6f 6e 6c 79 2e 0a 7d 0a   is readonly..}.
79c0: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 52  RESCODE SQLITE_R
79d0: 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f 56 45 44 20  EADONLY_DBMOVED 
79e0: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 52         {SQLITE_R
79f0: 45 41 44 4f 4e 4c 59 20 7c 20 28 34 3c 3c 38 29  EADONLY | (4<<8)
7a00: 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45  } {.  The SQLITE
7a10: 5f 52 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f 56 45  _READONLY_DBMOVE
7a20: 44 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  D error code is 
7a30: 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65  an [ext-v-prim|e
7a40: 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f  xtended error co
7a50: 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54  de].  for [SQLIT
7a60: 45 5f 52 45 41 44 4f 4e 4c 59 5d 2e 20 20 54 68  E_READONLY].  Th
7a70: 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c  e SQLITE_READONL
7a80: 59 5f 44 42 4d 4f 56 45 44 20 65 72 72 6f 72 20  Y_DBMOVED error 
7a90: 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 0a 20  code indicates. 
7aa0: 20 74 68 61 74 20 61 20 64 61 74 61 62 61 73 65   that a database
7ab0: 20 63 61 6e 6e 6f 74 20 62 65 20 6d 6f 64 69 66   cannot be modif
7ac0: 69 65 64 20 62 65 63 61 75 73 65 20 74 68 65 20  ied because the 
7ad0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 68 61  database file ha
7ae0: 73 20 62 65 65 6e 0a 20 20 6d 6f 76 65 64 20 73  s been.  moved s
7af0: 69 6e 63 65 20 69 74 20 77 61 73 20 6f 70 65 6e  ince it was open
7b00: 65 64 2c 20 61 6e 64 20 73 6f 20 61 6e 79 20 61  ed, and so any a
7b10: 74 74 65 6d 70 74 20 74 6f 20 6d 6f 64 69 66 79  ttempt to modify
7b20: 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 20 20   the database.  
7b30: 6d 69 67 68 74 20 72 65 73 75 6c 74 20 69 6e 20  might result in 
7b40: 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74  database corrupt
7b50: 69 6f 6e 20 69 66 20 74 68 65 20 70 72 6f 63 65  ion if the proce
7b60: 73 73 65 73 20 63 72 61 73 68 65 73 20 62 65 63  sses crashes bec
7b70: 61 75 73 65 20 74 68 65 0a 20 20 5b 72 6f 6c 6c  ause the.  [roll
7b80: 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 77 6f  back journal] wo
7b90: 75 6c 64 20 6e 6f 74 20 62 65 20 63 6f 72 72 65  uld not be corre
7ba0: 63 74 6c 79 20 6e 61 6d 65 64 2e 0a 7d 0a 52 45  ctly named..}.RE
7bb0: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 41 42 4f  SCODE SQLITE_ABO
7bc0: 52 54 5f 52 4f 4c 4c 42 41 43 4b 20 20 20 20 20  RT_ROLLBACK     
7bd0: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 41 42 4f       {SQLITE_ABO
7be0: 52 54 20 7c 20 28 32 3c 3c 38 29 7d 20 7b 0a 20  RT | (2<<8)} {. 
7bf0: 20 54 68 65 20 53 51 4c 49 54 45 5f 41 42 4f 52   The SQLITE_ABOR
7c00: 54 5f 52 4f 4c 4c 42 41 43 4b 20 65 72 72 6f 72  T_ROLLBACK error
7c10: 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74   code is an [ext
7c20: 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64  -v-prim|extended
7c30: 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66   error code].  f
7c40: 6f 72 20 5b 53 51 4c 49 54 45 5f 41 42 4f 52 54  or [SQLITE_ABORT
7c50: 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61  ] indicating tha
7c60: 74 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  t an SQL stateme
7c70: 6e 74 20 61 62 6f 72 74 65 64 20 62 65 63 61 75  nt aborted becau
7c80: 73 65 0a 20 20 74 68 65 20 74 72 61 6e 73 61 63  se.  the transac
7c90: 74 69 6f 6e 20 74 68 61 74 20 77 61 73 20 61 63  tion that was ac
7ca0: 74 69 76 65 20 77 68 65 6e 20 74 68 65 20 53 51  tive when the SQ
7cb0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 66 69 72 73  L statement firs
7cc0: 74 20 73 74 61 72 74 65 64 0a 20 20 77 61 73 20  t started.  was 
7cd0: 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 20 20 5e 50  rolled back.  ^P
7ce0: 65 6e 64 69 6e 67 20 77 72 69 74 65 20 6f 70 65  ending write ope
7cf0: 72 61 74 69 6f 6e 73 20 61 6c 77 61 79 73 20 66  rations always f
7d00: 61 69 6c 20 77 69 74 68 20 74 68 69 73 20 65 72  ail with this er
7d10: 72 6f 72 0a 20 20 77 68 65 6e 20 61 20 72 6f 6c  ror.  when a rol
7d20: 6c 62 61 63 6b 20 6f 63 63 75 72 73 2e 20 20 5e  lback occurs.  ^
7d30: 41 20 5b 52 4f 4c 4c 42 41 43 4b 5d 20 77 69 6c  A [ROLLBACK] wil
7d40: 6c 20 63 61 75 73 65 20 61 20 70 65 6e 64 69 6e  l cause a pendin
7d50: 67 20 72 65 61 64 20 6f 70 65 72 61 74 69 6f 6e  g read operation
7d60: 0a 20 20 74 6f 20 66 61 69 6c 20 6f 6e 6c 79 20  .  to fail only 
7d70: 69 66 20 74 68 65 20 73 63 68 65 6d 61 20 77 61  if the schema wa
7d80: 73 20 63 68 61 6e 67 65 64 20 77 69 74 68 69 6e  s changed within
7d90: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
7da0: 20 62 65 69 6e 67 20 72 6f 6c 6c 65 64 0a 20 20   being rolled.  
7db0: 62 61 63 6b 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  back..}.RESCODE 
7dc0: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
7dd0: 54 5f 43 48 45 43 4b 20 20 20 20 20 20 20 20 7b  T_CHECK        {
7de0: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
7df0: 54 20 7c 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20  T | (1<<8)} {.  
7e00: 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  The SQLITE_CONST
7e10: 52 41 49 4e 54 5f 43 48 45 43 4b 20 65 72 72 6f  RAINT_CHECK erro
7e20: 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78  r code is an [ex
7e30: 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65  t-v-prim|extende
7e40: 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20  d error code].  
7e50: 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53  for [SQLITE_CONS
7e60: 54 52 41 49 4e 54 5d 20 69 6e 64 69 63 61 74 69  TRAINT] indicati
7e70: 6e 67 20 74 68 61 74 20 61 20 5b 43 48 45 43 4b  ng that a [CHECK
7e80: 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20 66 61 69   constraint] fai
7e90: 6c 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  led..}.RESCODE S
7ea0: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
7eb0: 5f 43 4f 4d 4d 49 54 48 4f 4f 4b 20 20 20 7b 53  _COMMITHOOK   {S
7ec0: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
7ed0: 20 7c 20 28 32 3c 3c 38 29 7d 20 7b 0a 20 20 54   | (2<<8)} {.  T
7ee0: 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  he SQLITE_CONSTR
7ef0: 41 49 4e 54 5f 43 4f 4d 4d 49 54 48 4f 4f 4b 20  AINT_COMMITHOOK 
7f00: 65 72 72 6f 72 20 63 6f 64 65 0a 20 20 69 73 20  error code.  is 
7f10: 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65  an [ext-v-prim|e
7f20: 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f  xtended error co
7f30: 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54  de].  for [SQLIT
7f40: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d 20 69 6e  E_CONSTRAINT] in
7f50: 64 69 63 61 74 69 6e 67 20 74 68 61 74 20 61 0a  dicating that a.
7f60: 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 6d 69    [sqlite3_commi
7f70: 74 5f 68 6f 6f 6b 7c 63 6f 6d 6d 69 74 20 68 6f  t_hook|commit ho
7f80: 6f 6b 20 63 61 6c 6c 62 61 63 6b 5d 20 72 65 74  ok callback] ret
7f90: 75 72 6e 65 64 20 6e 6f 6e 2d 7a 65 72 6f 20 74  urned non-zero t
7fa0: 68 61 74 20 74 68 75 73 0a 20 20 63 61 75 73 65  hat thus.  cause
7fb0: 64 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  d the SQL statem
7fc0: 65 6e 74 20 74 6f 20 62 65 20 72 6f 6c 6c 65 64  ent to be rolled
7fd0: 20 62 61 63 6b 2e 0a 7d 0a 52 45 53 43 4f 44 45   back..}.RESCODE
7fe0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
7ff0: 4e 54 5f 46 4f 52 45 49 47 4e 4b 45 59 20 20 20  NT_FOREIGNKEY   
8000: 7b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  {SQLITE_CONSTRAI
8010: 4e 54 20 7c 20 28 33 3c 3c 38 29 7d 20 7b 0a 20  NT | (3<<8)} {. 
8020: 20 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53   The SQLITE_CONS
8030: 54 52 41 49 4e 54 5f 46 4f 52 45 49 47 4e 4b 45  TRAINT_FOREIGNKE
8040: 59 20 65 72 72 6f 72 20 63 6f 64 65 0a 20 20 69  Y error code.  i
8050: 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d  s an [ext-v-prim
8060: 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  |extended error 
8070: 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c  code].  for [SQL
8080: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d 20  ITE_CONSTRAINT] 
8090: 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61 74 20  indicating that 
80a0: 61 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63  a [foreign key c
80b0: 6f 6e 73 74 72 61 69 6e 74 5d 20 66 61 69 6c 65  onstraint] faile
80c0: 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  d..}.RESCODE SQL
80d0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 46  ITE_CONSTRAINT_F
80e0: 55 4e 43 54 49 4f 4e 20 20 20 20 20 7b 53 51 4c  UNCTION     {SQL
80f0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
8100: 20 28 34 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (4<<8)} {.  The
8110: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
8120: 4e 54 5f 46 55 4e 43 54 49 4f 4e 20 65 72 72 6f  NT_FUNCTION erro
8130: 72 20 63 6f 64 65 20 69 73 20 6e 6f 74 20 63 75  r code is not cu
8140: 72 72 65 6e 74 6c 79 20 75 73 65 64 0a 20 20 62  rrently used.  b
8150: 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72  y the SQLite cor
8160: 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 74 68 69  e.  However, thi
8170: 73 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  s error code is 
8180: 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 75 73  available for us
8190: 65 0a 20 20 62 79 20 65 78 74 65 6e 73 69 6f 6e  e.  by extension
81a0: 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 7d 0a 52 45   functions..}.RE
81b0: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 4f 4e  SCODE SQLITE_CON
81c0: 53 54 52 41 49 4e 54 5f 4e 4f 54 4e 55 4c 4c 20  STRAINT_NOTNULL 
81d0: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43 4f 4e       {SQLITE_CON
81e0: 53 54 52 41 49 4e 54 20 7c 20 28 35 3c 3c 38 29  STRAINT | (5<<8)
81f0: 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45  } {.  The SQLITE
8200: 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4e 4f 54 4e  _CONSTRAINT_NOTN
8210: 55 4c 4c 20 65 72 72 6f 72 20 63 6f 64 65 0a 20  ULL error code. 
8220: 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72   is an [ext-v-pr
8230: 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f  im|extended erro
8240: 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53  r code].  for [S
8250: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
8260: 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61  ] indicating tha
8270: 74 20 61 20 5b 4e 4f 54 20 4e 55 4c 4c 20 63 6f  t a [NOT NULL co
8280: 6e 73 74 72 61 69 6e 74 5d 20 66 61 69 6c 65 64  nstraint] failed
8290: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
82a0: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 50 52  TE_CONSTRAINT_PR
82b0: 49 4d 41 52 59 4b 45 59 20 20 20 7b 53 51 4c 49  IMARYKEY   {SQLI
82c0: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20  TE_CONSTRAINT | 
82d0: 28 36 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  (6<<8)} {.  The 
82e0: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
82f0: 54 5f 50 52 49 4d 41 52 59 4b 45 59 20 65 72 72  T_PRIMARYKEY err
8300: 6f 72 20 63 6f 64 65 0a 20 20 69 73 20 61 6e 20  or code.  is an 
8310: 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65  [ext-v-prim|exte
8320: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d  nded error code]
8330: 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43  .  for [SQLITE_C
8340: 4f 4e 53 54 52 41 49 4e 54 5d 20 69 6e 64 69 63  ONSTRAINT] indic
8350: 61 74 69 6e 67 20 74 68 61 74 20 61 20 5b 50 52  ating that a [PR
8360: 49 4d 41 52 59 20 4b 45 59 20 63 6f 6e 73 74 72  IMARY KEY constr
8370: 61 69 6e 74 5d 20 66 61 69 6c 65 64 2e 0a 7d 0a  aint] failed..}.
8380: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43  RESCODE SQLITE_C
8390: 4f 4e 53 54 52 41 49 4e 54 5f 54 52 49 47 47 45  ONSTRAINT_TRIGGE
83a0: 52 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43  R      {SQLITE_C
83b0: 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 37 3c 3c  ONSTRAINT | (7<<
83c0: 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  8)} {.  The SQLI
83d0: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 54 52  TE_CONSTRAINT_TR
83e0: 49 47 47 45 52 20 65 72 72 6f 72 20 63 6f 64 65  IGGER error code
83f0: 0a 20 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  .  is an [ext-v-
8400: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
8410: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
8420: 5b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  [SQLITE_CONSTRAI
8430: 4e 54 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74  NT] indicating t
8440: 68 61 74 20 61 20 5b 52 41 49 53 45 20 66 75 6e  hat a [RAISE fun
8450: 63 74 69 6f 6e 5d 20 77 69 74 68 69 6e 0a 20 20  ction] within.  
8460: 61 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45  a [CREATE TRIGGE
8470: 52 7c 74 72 69 67 67 65 72 5d 20 66 69 72 65 64  R|trigger] fired
8480: 2c 20 63 61 75 73 69 6e 67 20 74 68 65 20 53 51  , causing the SQ
8490: 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 61  L statement to a
84a0: 62 6f 72 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  bort..}.RESCODE 
84b0: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
84c0: 54 5f 55 4e 49 51 55 45 20 20 20 20 20 20 20 7b  T_UNIQUE       {
84d0: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
84e0: 54 20 7c 20 28 38 3c 3c 38 29 7d 20 7b 0a 20 20  T | (8<<8)} {.  
84f0: 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  The SQLITE_CONST
8500: 52 41 49 4e 54 5f 55 4e 49 51 55 45 20 65 72 72  RAINT_UNIQUE err
8510: 6f 72 20 63 6f 64 65 0a 20 20 69 73 20 61 6e 20  or code.  is an 
8520: 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65  [ext-v-prim|exte
8530: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d  nded error code]
8540: 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43  .  for [SQLITE_C
8550: 4f 4e 53 54 52 41 49 4e 54 5d 20 69 6e 64 69 63  ONSTRAINT] indic
8560: 61 74 69 6e 67 20 74 68 61 74 20 61 20 5b 55 4e  ating that a [UN
8570: 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 5d  IQUE constraint]
8580: 20 66 61 69 6c 65 64 2e 0a 7d 0a 52 45 53 43 4f   failed..}.RESCO
8590: 44 45 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  DE SQLITE_CONSTR
85a0: 41 49 4e 54 5f 56 54 41 42 20 20 20 20 20 20 20  AINT_VTAB       
85b0: 20 20 7b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52    {SQLITE_CONSTR
85c0: 41 49 4e 54 20 7c 20 28 39 3c 3c 38 29 7d 20 7b  AINT | (9<<8)} {
85d0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  .  The SQLITE_CO
85e0: 4e 53 54 52 41 49 4e 54 5f 56 54 41 42 20 65 72  NSTRAINT_VTAB er
85f0: 72 6f 72 20 63 6f 64 65 20 69 73 20 6e 6f 74 20  ror code is not 
8600: 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64 0a 20  currently used. 
8610: 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
8620: 6f 72 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 74  ore.  However, t
8630: 68 69 73 20 65 72 72 6f 72 20 63 6f 64 65 20 69  his error code i
8640: 73 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20  s available for 
8650: 75 73 65 0a 20 20 62 79 20 61 70 70 6c 69 63 61  use.  by applica
8660: 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 5b 76 69  tion-defined [vi
8670: 72 74 75 61 6c 20 74 61 62 6c 65 73 5d 2e 0a 7d  rtual tables]..}
8680: 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f  .RESCODE SQLITE_
8690: 43 4f 4e 53 54 52 41 49 4e 54 5f 52 4f 57 49 44  CONSTRAINT_ROWID
86a0: 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f          {SQLITE_
86b0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 28 31 30 3c  CONSTRAINT |(10<
86c0: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
86d0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 52  ITE_CONSTRAINT_R
86e0: 4f 57 49 44 20 65 72 72 6f 72 20 63 6f 64 65 0a  OWID error code.
86f0: 20 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70    is an [ext-v-p
8700: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
8710: 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b  or code].  for [
8720: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
8730: 54 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68  T] indicating th
8740: 61 74 20 61 20 5b 72 6f 77 69 64 5d 20 69 73 20  at a [rowid] is 
8750: 6e 6f 74 20 75 6e 69 71 75 65 2e 0a 7d 0a 52 45  not unique..}.RE
8760: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 4e 4f 54  SCODE SQLITE_NOT
8770: 49 43 45 5f 52 45 43 4f 56 45 52 5f 57 41 4c 20  ICE_RECOVER_WAL 
8780: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 4e 4f 54       {SQLITE_NOT
8790: 49 43 45 20 7c 20 28 31 3c 3c 38 29 7d 20 7b 0a  ICE | (1<<8)} {.
87a0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4e 4f 54    The SQLITE_NOT
87b0: 49 43 45 5f 52 45 43 4f 56 45 52 5f 57 41 4c 20  ICE_RECOVER_WAL 
87c0: 72 65 73 75 6c 74 20 63 6f 64 65 20 69 73 0a 20  result code is. 
87d0: 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 63   passed to the c
87e0: 61 6c 6c 62 61 63 6b 20 6f 66 0a 20 20 5b 73 71  allback of.  [sq
87f0: 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20 77 68 65  lite3_log()] whe
8800: 6e 20 61 20 5b 57 41 4c 20 6d 6f 64 65 5d 20 64  n a [WAL mode] d
8810: 61 74 61 62 61 73 65 20 66 69 6c 65 20 69 73 20  atabase file is 
8820: 72 65 63 6f 76 65 72 65 64 2e 0a 7d 0a 52 45 53  recovered..}.RES
8830: 43 4f 44 45 20 53 51 4c 49 54 45 5f 4e 4f 54 49  CODE SQLITE_NOTI
8840: 43 45 5f 52 45 43 4f 56 45 52 5f 52 4f 4c 4c 42  CE_RECOVER_ROLLB
8850: 41 43 4b 20 7b 53 51 4c 49 54 45 5f 4e 4f 54 49  ACK {SQLITE_NOTI
8860: 43 45 20 7c 20 28 32 3c 3c 38 29 7d 20 7b 0a 20  CE | (2<<8)} {. 
8870: 20 54 68 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49   The SQLITE_NOTI
8880: 43 45 5f 52 45 43 4f 56 45 52 5f 52 4f 4c 4c 42  CE_RECOVER_ROLLB
8890: 41 43 4b 20 72 65 73 75 6c 74 20 63 6f 64 65 20  ACK result code 
88a0: 69 73 0a 20 20 70 61 73 73 65 64 20 74 6f 20 74  is.  passed to t
88b0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 6f 66 0a 20  he callback of. 
88c0: 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d   [sqlite3_log()]
88d0: 20 77 68 65 6e 20 61 20 5b 68 6f 74 20 6a 6f 75   when a [hot jou
88e0: 72 6e 61 6c 5d 20 69 73 20 72 6f 6c 6c 65 64 20  rnal] is rolled 
88f0: 62 61 63 6b 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  back..}.RESCODE 
8900: 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 5f 41  SQLITE_WARNING_A
8910: 55 54 4f 49 4e 44 45 58 20 20 20 20 20 20 20 7b  UTOINDEX       {
8920: 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 20 7c  SQLITE_WARNING |
8930: 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (1<<8)} {.  The
8940: 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 5f   SQLITE_WARNING_
8950: 41 55 54 4f 49 4e 44 45 58 20 72 65 73 75 6c 74  AUTOINDEX result
8960: 20 63 6f 64 65 20 69 73 0a 20 20 70 61 73 73 65   code is.  passe
8970: 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63  d to the callbac
8980: 6b 20 6f 66 0a 20 20 5b 73 71 6c 69 74 65 33 5f  k of.  [sqlite3_
8990: 6c 6f 67 28 29 5d 20 77 68 65 6e 65 76 65 72 20  log()] whenever 
89a0: 5b 61 75 74 6f 6d 61 74 69 63 20 69 6e 64 65 78  [automatic index
89b0: 69 6e 67 5d 20 69 73 20 75 73 65 64 2e 0a 20 20  ing] is used..  
89c0: 54 68 69 73 20 63 61 6e 20 73 65 72 76 65 20 61  This can serve a
89d0: 73 20 61 20 77 61 72 6e 69 6e 67 20 74 6f 20 61  s a warning to a
89e0: 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 73 69 67  pplication desig
89f0: 6e 65 72 73 20 74 68 61 74 20 74 68 65 0a 20 20  ners that the.  
8a00: 64 61 74 61 62 61 73 65 20 6d 69 67 68 74 20 62  database might b
8a10: 65 6e 65 66 69 74 20 66 72 6f 6d 20 61 64 64 69  enefit from addi
8a20: 74 69 6f 6e 61 6c 20 69 6e 64 65 78 65 73 2e 0a  tional indexes..
8a30: 7d 0a 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  }..RESCODE SQLIT
8a40: 45 5f 45 52 52 4f 52 5f 4d 49 53 53 49 4e 47 5f  E_ERROR_MISSING_
8a50: 43 4f 4c 4c 53 45 51 20 20 7b 53 51 4c 49 54 45  COLLSEQ  {SQLITE
8a60: 5f 45 52 52 4f 52 20 7c 20 28 31 3c 3c 38 29 7d  _ERROR | (1<<8)}
8a70: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
8a80: 45 52 52 4f 52 5f 4d 49 53 53 49 4e 47 5f 43 4f  ERROR_MISSING_CO
8a90: 4c 4c 53 45 51 20 72 65 73 75 6c 74 20 63 6f 64  LLSEQ result cod
8aa0: 65 20 6d 65 61 6e 73 20 74 68 61 74 20 61 6e 20  e means that an 
8ab0: 53 51 4c 0a 20 20 73 74 61 74 65 6d 65 6e 74 20  SQL.  statement 
8ac0: 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 70 72 65  could not be pre
8ad0: 70 61 72 65 64 20 62 65 63 61 75 73 65 20 61 20  pared because a 
8ae0: 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e  collating sequen
8af0: 63 65 20 6e 61 6d 65 64 0a 20 20 69 6e 20 74 68  ce named.  in th
8b00: 61 74 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  at SQL statement
8b10: 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 6c 6f   could not be lo
8b20: 63 61 74 65 64 2e 0a 20 20 3c 70 3e 0a 20 20 53  cated..  <p>.  S
8b30: 6f 6d 65 74 69 6d 65 73 20 77 68 65 6e 20 74 68  ometimes when th
8b40: 69 73 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  is error code is
8b50: 20 65 6e 63 6f 75 6e 74 65 72 65 64 2c 20 74 68   encountered, th
8b60: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  e.  [sqlite3_pre
8b70: 70 61 72 65 5f 76 32 28 29 5d 20 72 6f 75 74 69  pare_v2()] routi
8b80: 6e 65 20 77 69 6c 6c 20 63 6f 6e 76 65 72 74 20  ne will convert 
8b90: 74 68 65 20 65 72 72 6f 72 20 69 6e 74 6f 0a 20  the error into. 
8ba0: 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5f 52   [SQLITE_ERROR_R
8bb0: 45 54 52 59 5d 20 61 6e 64 20 74 72 79 20 61 67  ETRY] and try ag
8bc0: 61 69 6e 20 74 6f 20 70 72 65 70 61 72 65 20 74  ain to prepare t
8bd0: 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
8be0: 0a 20 20 75 73 69 6e 67 20 61 20 64 69 66 66 65  .  using a diffe
8bf0: 72 65 6e 74 20 71 75 65 72 79 20 70 6c 61 6e 20  rent query plan 
8c00: 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 72 65  that does not re
8c10: 71 75 69 72 65 20 74 68 65 20 75 73 65 20 6f 66  quire the use of
8c20: 0a 20 20 74 68 65 20 75 6e 6b 6e 6f 77 6e 20 63  .  the unknown c
8c30: 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65 6e 63  ollating sequenc
8c40: 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  e..}.RESCODE SQL
8c50: 49 54 45 5f 45 52 52 4f 52 5f 52 45 54 52 59 20  ITE_ERROR_RETRY 
8c60: 7b 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 7c 20  {SQLITE_ERROR | 
8c70: 28 32 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  (2<<8)} {.  The 
8c80: 53 51 4c 49 54 45 5f 45 52 52 4f 52 5f 52 45 54  SQLITE_ERROR_RET
8c90: 52 59 20 69 73 20 75 73 65 64 20 69 6e 74 65 72  RY is used inter
8ca0: 6e 61 6c 6c 79 20 74 6f 20 70 72 6f 76 6f 6b 65  nally to provoke
8cb0: 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
8cc0: 65 5f 76 32 28 29 5d 0a 20 20 28 6f 72 20 6f 6e  e_v2()].  (or on
8cd0: 65 20 6f 66 20 69 74 73 20 73 69 62 6c 69 6e 67  e of its sibling
8ce0: 20 72 6f 75 74 69 6e 65 73 20 66 6f 72 20 63 72   routines for cr
8cf0: 65 61 74 69 6e 67 20 70 72 65 70 61 72 65 64 20  eating prepared 
8d00: 73 74 61 74 65 6d 65 6e 74 73 29 20 74 6f 0a 20  statements) to. 
8d10: 20 74 72 79 20 61 67 61 69 6e 20 74 6f 20 70 72   try again to pr
8d20: 65 70 61 72 65 20 61 20 73 74 61 74 65 6d 65 6e  epare a statemen
8d30: 74 20 74 68 61 74 20 66 61 69 6c 65 64 20 77 69  t that failed wi
8d40: 74 68 20 61 6e 20 65 72 72 6f 72 20 6f 6e 20 74  th an error on t
8d50: 68 65 0a 20 20 70 72 65 76 69 6f 75 73 20 61 74  he.  previous at
8d60: 74 65 6d 70 74 2e 0a 7d 0a 52 45 53 43 4f 44 45  tempt..}.RESCODE
8d70: 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59   SQLITE_READONLY
8d80: 5f 43 41 4e 54 49 4e 49 54 20 7b 53 51 4c 49 54  _CANTINIT {SQLIT
8d90: 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 35 3c  E_READONLY | (5<
8da0: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
8db0: 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 43 41 4e  ITE_READONLY_CAN
8dc0: 54 49 4e 49 54 20 72 65 73 75 6c 74 20 63 6f 64  TINIT result cod
8dd0: 65 20 6f 72 69 67 69 6e 61 74 65 73 20 69 6e 20  e originates in 
8de0: 74 68 65 20 78 53 68 6d 4d 61 70 20 6d 65 74 68  the xShmMap meth
8df0: 6f 64 0a 20 20 6f 66 20 61 20 5b 56 46 53 5d 20  od.  of a [VFS] 
8e00: 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
8e10: 20 74 68 65 20 73 68 61 72 65 64 20 6d 65 6d 6f   the shared memo
8e20: 72 79 20 72 65 67 69 6f 6e 20 75 73 65 64 20 62  ry region used b
8e30: 79 20 5b 57 41 4c 20 6d 6f 64 65 5d 0a 20 20 65  y [WAL mode].  e
8e40: 78 69 73 74 73 20 62 75 74 73 20 69 74 73 20 63  xists buts its c
8e50: 6f 6e 74 65 6e 74 20 69 73 20 75 6e 72 65 6c 69  ontent is unreli
8e60: 61 62 6c 65 20 61 6e 64 20 75 6e 75 73 61 62 6c  able and unusabl
8e70: 65 20 62 79 20 74 68 65 20 63 75 72 72 65 6e 74  e by the current
8e80: 20 70 72 6f 63 65 73 73 0a 20 20 73 69 6e 63 65   process.  since
8e90: 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
8ea0: 63 65 73 73 20 64 6f 65 73 20 6e 6f 74 20 68 61  cess does not ha
8eb0: 76 65 20 77 72 69 74 65 20 70 65 72 6d 69 73 73  ve write permiss
8ec0: 69 6f 6e 20 6f 6e 20 74 68 65 20 73 68 61 72 65  ion on the share
8ed0: 64 0a 20 20 6d 65 6d 6f 72 79 20 72 65 67 69 6f  d.  memory regio
8ee0: 6e 2e 20 20 28 54 68 65 20 73 68 61 72 65 64 20  n.  (The shared 
8ef0: 6d 65 6d 6f 72 79 20 72 65 67 69 6f 6e 20 66 6f  memory region fo
8f00: 72 20 57 41 4c 20 6d 6f 64 65 20 69 73 20 6e 6f  r WAL mode is no
8f10: 72 6d 61 6c 6c 79 20 61 0a 20 20 66 69 6c 65 20  rmally a.  file 
8f20: 77 69 74 68 20 61 20 22 2d 77 61 6c 22 20 73 75  with a "-wal" su
8f30: 66 66 69 78 20 74 68 61 74 20 69 73 20 6d 6d 61  ffix that is mma
8f40: 70 70 65 64 20 69 6e 74 6f 20 74 68 65 20 70 72  pped into the pr
8f50: 6f 63 65 73 73 20 73 70 61 63 65 2e 20 20 49 66  ocess space.  If
8f60: 0a 20 20 74 68 65 20 63 75 72 72 65 6e 74 20 70  .  the current p
8f70: 72 6f 63 65 73 73 20 64 6f 65 73 20 6e 6f 74 20  rocess does not 
8f80: 68 61 76 65 20 77 72 69 74 65 20 70 65 72 6d 69  have write permi
8f90: 73 73 69 6f 6e 20 6f 6e 20 74 68 61 74 20 66 69  ssion on that fi
8fa0: 6c 65 2c 20 74 68 65 6e 20 69 74 0a 20 20 63 61  le, then it.  ca
8fb0: 6e 6e 6f 74 20 77 72 69 74 65 20 69 6e 74 6f 20  nnot write into 
8fc0: 73 68 61 72 65 64 20 6d 65 6d 6f 72 79 2e 29 0a  shared memory.).
8fd0: 20 20 3c 70 3e 0a 20 20 48 69 67 68 65 72 20 6c    <p>.  Higher l
8fe0: 65 76 65 6c 20 6c 6f 67 69 63 20 77 69 74 68 69  evel logic withi
8ff0: 6e 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e 6f  n SQLite will no
9000: 72 6d 61 6c 6c 79 20 69 6e 74 65 72 63 65 70 74  rmally intercept
9010: 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 0a   the error code.
9020: 20 20 61 6e 64 20 63 72 65 61 74 65 20 61 20 74    and create a t
9030: 65 6d 70 6f 72 61 72 79 20 69 6e 2d 6d 65 6d 6f  emporary in-memo
9040: 72 79 20 73 68 61 72 65 64 20 6d 65 6d 6f 72 79  ry shared memory
9050: 20 72 65 67 69 6f 6e 20 73 6f 20 74 68 61 74 20   region so that 
9060: 74 68 65 20 63 75 72 72 65 6e 74 0a 20 20 70 72  the current.  pr
9070: 6f 63 65 73 73 20 63 61 6e 20 61 74 20 6c 65 61  ocess can at lea
9080: 73 74 20 72 65 61 64 20 74 68 65 20 63 6f 6e 74  st read the cont
9090: 65 6e 74 20 6f 66 20 74 68 65 20 64 61 74 61 62  ent of the datab
90a0: 61 73 65 2e 20 20 54 68 69 73 20 72 65 73 75 6c  ase.  This resul
90b0: 74 20 63 6f 64 65 0a 20 20 73 68 6f 75 6c 64 20  t code.  should 
90c0: 6e 6f 74 20 72 65 61 63 68 20 74 68 65 20 61 70  not reach the ap
90d0: 70 6c 69 63 61 74 69 6f 6e 20 69 6e 74 65 72 66  plication interf
90e0: 61 63 65 20 6c 61 79 65 72 2e 0a 7d 0a 52 45 53  ace layer..}.RES
90f0: 43 4f 44 45 20 53 51 4c 49 54 45 5f 52 45 41 44  CODE SQLITE_READ
9100: 4f 4e 4c 59 5f 44 49 52 45 43 54 4f 52 59 20 7b  ONLY_DIRECTORY {
9110: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20  SQLITE_READONLY 
9120: 7c 20 28 36 3c 3c 38 29 7d 20 7b 0a 20 20 54 68  | (6<<8)} {.  Th
9130: 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c  e SQLITE_READONL
9140: 59 5f 44 49 52 45 43 54 4f 52 59 20 72 65 73 75  Y_DIRECTORY resu
9150: 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65  lt code indicate
9160: 73 20 74 68 61 74 20 74 68 65 20 64 61 74 61 62  s that the datab
9170: 61 73 65 0a 20 20 69 73 20 72 65 61 64 2d 6f 6e  ase.  is read-on
9180: 6c 79 20 62 65 63 61 75 73 65 20 70 72 6f 63 65  ly because proce
9190: 73 73 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65  ss does not have
91a0: 20 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 63   permission to c
91b0: 72 65 61 74 65 0a 20 20 61 20 6a 6f 75 72 6e 61  reate.  a journa
91c0: 6c 20 66 69 6c 65 20 69 6e 20 74 68 65 20 73 61  l file in the sa
91d0: 6d 65 20 64 69 72 65 63 74 6f 72 79 20 61 73 20  me directory as 
91e0: 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
91f0: 20 74 68 65 20 63 72 65 61 74 69 6f 6e 20 6f 66   the creation of
9200: 0a 20 20 61 20 6a 6f 75 72 6e 61 6c 20 66 69 6c  .  a journal fil
9210: 65 20 69 73 20 61 20 70 72 65 72 65 71 75 69 73  e is a prerequis
9220: 69 74 65 20 66 6f 72 20 77 72 69 74 69 6e 67 2e  ite for writing.
9230: 0a 7d 0a 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  .}..RESCODE SQLI
9240: 54 45 5f 45 52 52 4f 52 5f 53 4e 41 50 53 48 4f  TE_ERROR_SNAPSHO
9250: 54 20 7b 53 51 4c 49 54 45 5f 45 52 52 4f 52 20  T {SQLITE_ERROR 
9260: 7c 20 28 33 3c 3c 38 29 7d 20 7b 0a 20 20 54 68  | (3<<8)} {.  Th
9270: 65 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 5f 53  e SQLITE_ERROR_S
9280: 4e 41 50 53 48 4f 54 20 72 65 73 75 6c 74 20 63  NAPSHOT result c
9290: 6f 64 65 20 6d 69 67 68 74 20 62 65 20 72 65 74  ode might be ret
92a0: 75 72 6e 65 64 20 77 68 65 6e 20 61 74 74 65 6d  urned when attem
92b0: 70 74 69 6e 67 0a 20 20 74 6f 20 73 74 61 72 74  pting.  to start
92c0: 20 61 20 72 65 61 64 20 74 72 61 6e 73 61 63 74   a read transact
92d0: 69 6f 6e 20 6f 6e 20 61 6e 20 68 69 73 74 6f 72  ion on an histor
92e0: 69 63 61 6c 20 76 65 72 73 69 6f 6e 20 6f 66 20  ical version of 
92f0: 74 68 65 20 64 61 74 61 62 61 73 65 0a 20 20 62  the database.  b
9300: 79 20 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c  y using the [sql
9310: 69 74 65 33 5f 73 6e 61 70 73 68 6f 74 5f 6f 70  ite3_snapshot_op
9320: 65 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e  en()] interface.
9330: 20 20 49 66 20 74 68 65 20 68 69 73 74 6f 72 69    If the histori
9340: 63 61 6c 0a 20 20 73 6e 61 70 73 68 6f 74 20 69  cal.  snapshot i
9350: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 61 76 61 69  s no longer avai
9360: 6c 61 62 6c 65 2c 20 74 68 65 6e 20 74 68 65 20  lable, then the 
9370: 72 65 61 64 20 74 72 61 6e 73 61 63 74 69 6f 6e  read transaction
9380: 20 77 69 6c 6c 20 66 61 69 6c 0a 20 20 77 69 74   will fail.  wit
9390: 68 20 74 68 65 20 53 51 4c 49 54 45 5f 45 52 52  h the SQLITE_ERR
93a0: 4f 52 5f 53 4e 41 50 53 48 4f 54 2e 20 20 54 68  OR_SNAPSHOT.  Th
93b0: 69 73 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  is error code is
93c0: 20 6f 6e 6c 79 20 70 6f 73 73 69 62 6c 65 20 69   only possible i
93d0: 66 0a 20 20 53 51 4c 69 74 65 20 69 73 20 63 6f  f.  SQLite is co
93e0: 6d 70 69 6c 65 64 20 77 69 74 68 20 5b 2d 44 53  mpiled with [-DS
93f0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 4e 41  QLITE_ENABLE_SNA
9400: 50 53 48 4f 54 5d 2e 0a 7d 0a 0a 52 45 53 43 4f  PSHOT]..}..RESCO
9410: 44 45 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44  DE SQLITE_LOCKED
9420: 5f 56 54 41 42 20 7b 53 51 4c 49 54 45 5f 4c 4f  _VTAB {SQLITE_LO
9430: 43 4b 45 44 20 7c 20 28 32 3c 3c 38 29 7d 20 7b  CKED | (2<<8)} {
9440: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4c 4f  .  The SQLITE_LO
9450: 43 4b 45 44 5f 56 54 41 42 20 72 65 73 75 6c 74  CKED_VTAB result
9460: 20 63 6f 64 65 20 69 73 20 6e 6f 74 20 75 73 65   code is not use
9470: 64 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20  d by the SQLite 
9480: 63 6f 72 65 2c 20 62 75 74 0a 20 20 69 74 20 69  core, but.  it i
9490: 73 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20  s available for 
94a0: 75 73 65 20 62 79 20 65 78 74 65 6e 73 69 6f 6e  use by extension
94b0: 73 2e 20 20 56 69 72 74 75 61 6c 20 74 61 62 6c  s.  Virtual tabl
94c0: 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
94d0: 73 0a 20 20 63 61 6e 20 72 65 74 75 72 6e 20 74  s.  can return t
94e0: 68 69 73 20 72 65 73 75 6c 74 20 63 6f 64 65 20  his result code 
94f0: 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
9500: 20 74 68 65 79 20 63 61 6e 6e 6f 74 20 63 6f 6d   they cannot com
9510: 70 6c 65 74 65 20 74 68 65 0a 20 20 63 75 72 72  plete the.  curr
9520: 65 6e 74 20 6f 70 65 72 61 74 69 6f 6e 20 62 65  ent operation be
9530: 63 61 75 73 65 20 6f 66 20 6c 6f 63 6b 73 20 68  cause of locks h
9540: 65 6c 64 20 62 79 20 6f 74 68 65 72 20 74 68 72  eld by other thr
9550: 65 61 64 73 20 6f 72 20 70 72 6f 63 65 73 73 65  eads or processe
9560: 73 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20 5b  s..  <p>.  The [
9570: 52 2d 54 72 65 65 20 65 78 74 65 6e 73 69 6f 6e  R-Tree extension
9580: 5d 20 72 65 74 75 72 6e 73 20 74 68 69 73 20 72  ] returns this r
9590: 65 73 75 6c 74 20 63 6f 64 65 20 77 68 65 6e 20  esult code when 
95a0: 61 6e 20 61 74 74 65 6d 70 74 20 69 73 20 6d 61  an attempt is ma
95b0: 64 65 0a 20 20 74 6f 20 75 70 64 61 74 65 20 74  de.  to update t
95c0: 68 65 20 52 2d 54 72 65 65 20 77 68 69 6c 65 20  he R-Tree while 
95d0: 61 6e 6f 74 68 65 72 20 70 72 65 70 61 72 65 64  another prepared
95e0: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 61 63   statement is ac
95f0: 74 69 76 65 6c 79 20 72 65 61 64 69 6e 67 0a 20  tively reading. 
9600: 20 74 68 65 20 52 2d 54 72 65 65 2e 20 20 54 68   the R-Tree.  Th
9610: 65 20 75 70 64 61 74 65 20 63 61 6e 6e 6f 74 20  e update cannot 
9620: 70 72 6f 63 65 65 64 20 62 65 63 61 75 73 65 20  proceed because 
9630: 61 6e 79 20 63 68 61 6e 67 65 20 74 6f 20 61 6e  any change to an
9640: 20 52 2d 54 72 65 65 0a 20 20 6d 69 67 68 74 20   R-Tree.  might 
9650: 69 6e 76 6f 6c 76 65 20 72 65 73 68 75 66 66 6c  involve reshuffl
9660: 69 6e 67 20 61 6e 64 20 72 65 62 61 6c 61 6e 63  ing and rebalanc
9670: 69 6e 67 20 6f 66 20 6e 6f 64 65 73 2c 20 77 68  ing of nodes, wh
9680: 69 63 68 20 77 6f 75 6c 64 20 64 69 73 72 75 70  ich would disrup
9690: 74 0a 20 20 72 65 61 64 20 63 75 72 73 6f 72 73  t.  read cursors
96a0: 2c 20 63 61 75 73 69 6e 67 20 73 6f 6d 65 20 72  , causing some r
96b0: 6f 77 73 20 74 6f 20 62 65 20 72 65 70 65 61 74  ows to be repeat
96c0: 65 64 20 61 6e 64 20 6f 74 68 65 72 20 72 6f 77  ed and other row
96d0: 73 20 74 6f 20 62 65 0a 20 20 6f 6d 69 74 74 65  s to be.  omitte
96e0: 64 2e 0a 7d 0a 0a 52 45 53 43 4f 44 45 20 53 51  d..}..RESCODE SQ
96f0: 4c 49 54 45 5f 43 4f 52 52 55 50 54 5f 53 45 51  LITE_CORRUPT_SEQ
9700: 55 45 4e 43 45 20 7b 53 51 4c 49 54 45 5f 43 4f  UENCE {SQLITE_CO
9710: 52 52 55 50 54 20 7c 20 28 32 3c 3c 38 29 7d 20  RRUPT | (2<<8)} 
9720: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 43  {.  The SQLITE_C
9730: 4f 52 52 55 50 54 5f 53 45 51 55 45 4e 43 45 20  ORRUPT_SEQUENCE 
9740: 72 65 73 75 6c 74 20 63 6f 64 65 20 6d 65 61 6e  result code mean
9750: 73 20 74 68 61 74 20 74 68 65 20 73 63 68 65 6d  s that the schem
9760: 61 20 6f 66 0a 20 20 74 68 65 20 73 71 6c 69 74  a of.  the sqlit
9770: 65 5f 73 65 71 75 65 6e 63 65 20 74 61 62 6c 65  e_sequence table
9780: 20 69 73 20 63 6f 72 72 75 70 74 2e 20 20 54 68   is corrupt.  Th
9790: 65 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e 63  e sqlite_sequenc
97a0: 65 20 74 61 62 6c 65 0a 20 20 69 73 20 75 73 65  e table.  is use
97b0: 64 20 74 6f 20 68 65 6c 70 20 69 6d 70 6c 65 6d  d to help implem
97c0: 65 6e 74 20 74 68 65 20 5b 41 55 54 4f 49 4e 43  ent the [AUTOINC
97d0: 52 45 4d 45 4e 54 5d 20 66 65 61 74 75 72 65 2e  REMENT] feature.
97e0: 20 20 54 68 65 0a 20 20 73 71 6c 69 74 65 5f 73    The.  sqlite_s
97f0: 65 71 75 65 6e 63 65 20 74 61 62 6c 65 20 73 68  equence table sh
9800: 6f 75 6c 64 20 68 61 76 65 20 74 68 65 20 66 6f  ould have the fo
9810: 6c 6c 6f 77 69 6e 67 20 66 6f 72 6d 61 74 3a 0a  llowing format:.
9820: 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70    <blockquote><p
9830: 72 65 3e 0a 20 20 43 52 45 41 54 45 20 54 41 42  re>.  CREATE TAB
9840: 4c 45 20 73 71 6c 69 74 65 5f 73 65 71 75 65 6e  LE sqlite_sequen
9850: 63 65 28 6e 61 6d 65 2c 73 65 71 29 3b 0a 20 20  ce(name,seq);.  
9860: 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  </pre></blockquo
9870: 74 65 3e 0a 20 20 3c 70 3e 49 66 20 53 51 4c 69  te>.  <p>If SQLi
9880: 74 65 20 64 69 73 63 6f 76 65 72 73 20 74 68 61  te discovers tha
9890: 74 20 74 68 65 20 73 71 6c 69 74 65 5f 73 65 71  t the sqlite_seq
98a0: 75 65 6e 63 65 20 74 61 62 6c 65 20 68 61 73 20  uence table has 
98b0: 61 6e 79 20 6f 74 68 65 72 0a 20 20 66 6f 72 6d  any other.  form
98c0: 61 74 2c 20 69 74 20 72 65 74 75 72 6e 73 20 74  at, it returns t
98d0: 68 65 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50  he SQLITE_CORRUP
98e0: 54 5f 53 45 51 55 45 4e 43 45 20 65 72 72 6f 72  T_SEQUENCE error
98f0: 2e 0a 7d 0a 0a 52 45 53 43 4f 44 45 20 53 51 4c  ..}..RESCODE SQL
9900: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 44 49 52  ITE_CANTOPEN_DIR
9910: 54 59 57 41 4c 20 7b 53 51 4c 49 54 45 5f 43 41  TYWAL {SQLITE_CA
9920: 4e 54 4f 50 45 4e 20 7c 20 28 35 3c 3c 38 29 7d  NTOPEN | (5<<8)}
9930: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
9940: 43 41 4e 54 4f 50 45 4e 5f 44 49 52 54 59 57 41  CANTOPEN_DIRTYWA
9950: 4c 20 72 65 73 75 6c 74 20 63 6f 64 65 20 69 73  L result code is
9960: 20 6e 6f 74 20 75 73 65 64 20 61 74 20 74 68 69   not used at thi
9970: 73 20 74 69 6d 65 2e 0a 7d 0a 0a 0a 23 23 23 23  s time..}...####
9980: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
9990: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
99a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
99b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
99c0: 23 23 23 23 23 23 23 23 23 0a 23 20 43 6f 64 65  #########.# Code
99d0: 20 74 6f 20 70 72 6f 63 65 73 73 20 74 68 65 20   to process the 
99e0: 52 45 53 43 4f 44 45 20 76 61 6c 75 65 73 0a 23  RESCODE values.#
99f0: 0a 23 20 43 6f 6e 76 65 72 74 20 66 6f 72 6d 75  .# Convert formu
9a00: 6c 61 20 52 45 53 43 4f 44 45 20 76 61 6c 75 65  la RESCODE value
9a10: 73 20 69 6e 74 6f 20 6e 75 6d 65 72 69 63 73 0a  s into numerics.
9a20: 73 65 74 20 6e 52 65 73 43 6f 64 65 20 30 0a 73  set nResCode 0.s
9a30: 65 74 20 6e 50 72 69 6d 43 6f 64 65 20 30 0a 73  et nPrimCode 0.s
9a40: 65 74 20 6e 45 78 74 43 6f 64 65 20 30 0a 73 65  et nExtCode 0.se
9a50: 74 20 6e 4e 6f 6e 45 72 72 6f 72 20 33 0a 75 6e  t nNonError 3.un
9a60: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
9a70: 70 72 69 6d 5f 72 63 0a 75 6e 73 65 74 20 2d 6e  prim_rc.unset -n
9a80: 6f 63 6f 6d 70 6c 61 69 6e 20 65 78 74 5f 72 63  ocomplain ext_rc
9a90: 0a 66 6f 72 65 61 63 68 20 6e 61 6d 65 20 5b 61  .foreach name [a
9aa0: 72 72 61 79 20 6e 61 6d 65 73 20 72 65 73 76 61  rray names resva
9ab0: 6c 75 65 5d 20 7b 0a 20 20 73 65 74 20 76 61 6c  lue] {.  set val
9ac0: 20 24 72 65 73 76 61 6c 75 65 28 24 6e 61 6d 65   $resvalue($name
9ad0: 29 0a 20 20 69 66 20 7b 5b 72 65 67 65 78 70 20  ).  if {[regexp 
9ae0: 7b 5e 28 53 51 4c 49 54 45 5f 5b 5e 20 5d 2b 29  {^(SQLITE_[^ ]+)
9af0: 20 2a 5c 7c 20 2a 5c 28 28 5c 64 2b 29 3c 3c 38   *\| *\((\d+)<<8
9b00: 5c 29 24 7d 20 24 76 61 6c 20 61 6c 6c 20 62 61  \)$} $val all ba
9b10: 73 65 6e 61 6d 65 20 68 69 76 61 6c 5d 7d 20 7b  sename hival]} {
9b20: 0a 20 20 20 20 73 65 74 20 76 61 6c 20 5b 65 78  .    set val [ex
9b30: 70 72 20 7b 24 72 65 73 76 61 6c 75 65 28 24 62  pr {$resvalue($b
9b40: 61 73 65 6e 61 6d 65 29 2b 28 24 68 69 76 61 6c  asename)+($hival
9b50: 3c 3c 38 29 7d 5d 0a 20 20 20 20 73 65 74 20 72  <<8)}].    set r
9b60: 65 73 76 61 6c 75 65 28 24 6e 61 6d 65 29 20 24  esvalue($name) $
9b70: 76 61 6c 0a 20 20 7d 0a 20 20 73 65 74 20 76 61  val.  }.  set va
9b80: 6c 74 6f 6e 61 6d 65 28 24 76 61 6c 29 20 24 6e  ltoname($val) $n
9b90: 61 6d 65 0a 20 20 69 6e 63 72 20 6e 52 65 73 43  ame.  incr nResC
9ba0: 6f 64 65 0a 20 20 69 66 20 7b 24 76 61 6c 3c 32  ode.  if {$val<2
9bb0: 35 36 7d 20 7b 0a 20 20 20 20 69 6e 63 72 20 6e  56} {.    incr n
9bc0: 50 72 69 6d 43 6f 64 65 0a 20 20 20 20 73 65 74  PrimCode.    set
9bd0: 20 70 72 69 6d 5f 72 63 28 24 6e 61 6d 65 29 20   prim_rc($name) 
9be0: 24 76 61 6c 0a 20 20 7d 20 65 6c 73 65 20 7b 0a  $val.  } else {.
9bf0: 20 20 20 20 69 6e 63 72 20 6e 45 78 74 43 6f 64      incr nExtCod
9c00: 65 0a 20 20 20 20 73 65 74 20 65 78 74 5f 72 63  e.    set ext_rc
9c10: 28 24 6e 61 6d 65 29 20 24 76 61 6c 0a 20 20 7d  ($name) $val.  }
9c20: 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a 3c 68 31 3e 50  .}..</tcl>.<h1>P
9c30: 72 69 6d 61 72 79 20 52 65 73 75 6c 74 20 43 6f  rimary Result Co
9c40: 64 65 20 4c 69 73 74 3c 2f 68 31 3e 0a 3c 70 3e  de List</h1>.<p>
9c50: 54 68 65 20 24 6e 50 72 69 6d 43 6f 64 65 20 72  The $nPrimCode r
9c60: 65 73 75 6c 74 20 63 6f 64 65 73 20 61 72 65 20  esult codes are 
9c70: 0a 20 20 20 5b 72 65 73 75 6c 74 20 63 6f 64 65  .   [result code
9c80: 20 64 65 66 69 6e 69 74 69 6f 6e 73 7c 64 65 66   definitions|def
9c90: 69 6e 65 64 20 69 6e 20 73 71 6c 69 74 65 33 2e  ined in sqlite3.
9ca0: 68 5d 20 61 6e 64 20 61 72 65 20 6c 69 73 74 65  h] and are liste
9cb0: 64 20 69 6e 0a 20 20 20 61 6c 70 68 61 62 65 74  d in.   alphabet
9cc0: 69 63 61 6c 20 6f 72 64 65 72 20 62 65 6c 6f 77  ical order below
9cd0: 3a 20 0a 3c 74 63 6c 3e 0a 73 65 74 20 6c 78 20  : .<tcl>.set lx 
9ce0: 7b 7d 0a 66 6f 72 65 61 63 68 20 6e 61 6d 65 20  {}.foreach name 
9cf0: 5b 6c 73 6f 72 74 20 5b 61 72 72 61 79 20 6e 61  [lsort [array na
9d00: 6d 65 73 20 70 72 69 6d 5f 72 63 5d 5d 20 7b 0a  mes prim_rc]] {.
9d10: 20 20 6c 61 70 70 65 6e 64 20 6c 78 20 5b 6c 69    lappend lx [li
9d20: 73 74 20 24 6e 61 6d 65 20 22 24 6e 61 6d 65 26  st $name "$name&
9d30: 6e 62 73 70 3b 28 24 70 72 69 6d 5f 72 63 28 24  nbsp;($prim_rc($
9d40: 6e 61 6d 65 29 29 22 20 30 5d 0a 7d 0a 68 64 5f  name))" 0].}.hd_
9d50: 6c 69 73 74 5f 6f 66 5f 6c 69 6e 6b 73 20 7b 7d  list_of_links {}
9d60: 20 33 32 30 20 24 6c 78 0a 0a 68 64 5f 66 72 61   320 $lx..hd_fra
9d70: 67 6d 65 6e 74 20 65 78 74 72 63 20 7b 65 78 74  gment extrc {ext
9d80: 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
9d90: 65 7d 20 7b 65 78 74 65 6e 64 65 64 20 72 65 73  e} {extended res
9da0: 75 6c 74 20 63 6f 64 65 73 7d 20 5c 0a 20 20 20  ult codes} \.   
9db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9dc0: 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63  extended error c
9dd0: 6f 64 65 7d 20 7b 65 78 74 65 6e 64 65 64 20 65  ode} {extended e
9de0: 72 72 6f 72 20 63 6f 64 65 73 7d 0a 3c 2f 74 63  rror codes}.</tc
9df0: 6c 3e 0a 3c 68 31 3e 45 78 74 65 6e 64 65 64 20  l>.<h1>Extended 
9e00: 52 65 73 75 6c 74 20 43 6f 64 65 20 4c 69 73 74  Result Code List
9e10: 3c 2f 68 31 3e 0a 3c 70 3e 54 68 65 20 24 6e 45  </h1>.<p>The $nE
9e20: 78 74 43 6f 64 65 20 65 78 74 65 6e 64 65 64 20  xtCode extended 
9e30: 72 65 73 75 6c 74 20 63 6f 64 65 73 0a 20 20 61  result codes.  a
9e40: 72 65 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73  re [extended res
9e50: 75 6c 74 20 63 6f 64 65 20 64 65 66 69 6e 69 74  ult code definit
9e60: 69 6f 6e 73 7c 64 65 66 69 6e 65 64 20 69 6e 20  ions|defined in 
9e70: 73 71 6c 69 74 65 33 2e 68 5d 20 61 6e 64 20 61  sqlite3.h] and a
9e80: 72 65 0a 20 20 6c 69 73 74 65 64 20 69 6e 20 61  re.  listed in a
9e90: 6c 70 68 61 62 65 74 69 63 61 6c 20 6f 72 64 65  lphabetical orde
9ea0: 72 20 62 65 6c 6f 77 3a 0a 3c 74 63 6c 3e 0a 0a  r below:.<tcl>..
9eb0: 73 65 74 20 6c 78 20 7b 7d 0a 66 6f 72 65 61 63  set lx {}.foreac
9ec0: 68 20 6e 61 6d 65 20 5b 6c 73 6f 72 74 20 5b 61  h name [lsort [a
9ed0: 72 72 61 79 20 6e 61 6d 65 73 20 65 78 74 5f 72  rray names ext_r
9ee0: 63 5d 5d 20 7b 0a 20 20 6c 61 70 70 65 6e 64 20  c]] {.  lappend 
9ef0: 6c 78 20 5b 6c 69 73 74 20 24 6e 61 6d 65 20 22  lx [list $name "
9f00: 24 6e 61 6d 65 26 6e 62 73 70 3b 28 24 65 78 74  $name&nbsp;($ext
9f10: 5f 72 63 28 24 6e 61 6d 65 29 29 22 20 30 5d 0a  _rc($name))" 0].
9f20: 7d 0a 68 64 5f 6c 69 73 74 5f 6f 66 5f 6c 69 6e  }.hd_list_of_lin
9f30: 6b 73 20 7b 7d 20 34 35 30 20 24 6c 78 0a 0a 3c  ks {} 450 $lx..<
9f40: 2f 74 63 6c 3e 0a 3c 68 31 3e 52 65 73 75 6c 74  /tcl>.<h1>Result
9f50: 20 43 6f 64 65 20 4d 65 61 6e 69 6e 67 73 3c 2f   Code Meanings</
9f60: 68 31 3e 0a 3c 70 3e 0a 54 68 65 20 6d 65 61 6e  h1>.<p>.The mean
9f70: 69 6e 67 73 20 66 6f 72 20 61 6c 6c 20 24 6e 52  ings for all $nR
9f80: 65 73 43 6f 64 65 20 72 65 73 75 6c 74 20 63 6f  esCode result co
9f90: 64 65 20 76 61 6c 75 65 73 20 61 72 65 20 73 68  de values are sh
9fa0: 6f 77 6e 20 62 65 6c 6f 77 2c 0a 69 6e 20 6e 75  own below,.in nu
9fb0: 6d 65 72 69 63 20 6f 72 64 65 72 2e 0a 0a 3c 74  meric order...<t
9fc0: 63 6c 3e 0a 23 20 47 65 6e 65 72 61 74 65 20 74  cl>.# Generate t
9fd0: 68 65 20 74 61 62 6c 65 20 6f 66 20 72 65 73 75  he table of resu
9fe0: 6c 74 20 63 6f 64 65 73 0a 23 0a 66 6f 72 65 61  lt codes.#.forea
9ff0: 63 68 20 76 61 6c 20 5b 6c 73 6f 72 74 20 2d 69  ch val [lsort -i
a000: 6e 74 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20  nt [array names 
a010: 76 61 6c 74 6f 6e 61 6d 65 5d 5d 20 7b 0a 20 20  valtoname]] {.  
a020: 73 65 74 20 6e 61 6d 65 20 24 76 61 6c 74 6f 6e  set name $valton
a030: 61 6d 65 28 24 76 61 6c 29 0a 20 20 72 65 67 73  ame($val).  regs
a040: 75 62 20 7b 73 71 6c 69 74 65 5f 7d 20 5b 73 74  ub {sqlite_} [st
a050: 72 69 6e 67 20 74 6f 6c 6f 77 65 72 20 24 6e 61  ring tolower $na
a060: 6d 65 5d 20 7b 7d 20 74 61 67 0a 20 20 68 64 5f  me] {} tag.  hd_
a070: 70 75 74 73 20 22 3c 21 2d 2d 2d 2d 2d 2d 2d 2d  puts "<!--------
a080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a0a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a0b0: 2d 2d 2d 2d 2d 2d 2d 3e 5c 6e 22 0a 20 20 68 64  ------->\n".  hd
a0c0: 5f 66 72 61 67 6d 65 6e 74 20 24 74 61 67 20 2d  _fragment $tag -
a0d0: 2d 6f 76 65 72 72 69 64 65 20 24 6e 61 6d 65 0a  -override $name.
a0e0: 20 20 68 64 5f 70 75 74 73 20 22 3c 68 33 3e 28    hd_puts "<h3>(
a0f0: 24 76 61 6c 29 20 24 76 61 6c 74 6f 6e 61 6d 65  $val) $valtoname
a100: 28 24 76 61 6c 29 3c 2f 68 33 3e 5c 6e 22 0a 20  ($val)</h3>\n". 
a110: 20 68 64 5f 72 65 73 6f 6c 76 65 20 3c 70 3e 24   hd_resolve <p>$
a120: 72 65 73 64 65 73 63 28 24 6e 61 6d 65 29 5c 6e  resdesc($name)\n
a130: 5c 6e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a           \n.}..</tcl>.