Documentation Source Text

Hex Artifact Content
Login

Artifact 4da4a97b70dbdbf361a6c8f853666373021c03c6:


0000: 3c 74 69 74 6c 65 3e 53 51 4c 69 74 65 20 52 65  <title>SQLite Re
0010: 73 75 6c 74 20 43 6f 64 65 73 3c 2f 74 69 74 6c  sult Codes</titl
0020: 65 3e 0a 3c 74 63 6c 3e 68 64 5f 6b 65 79 77 6f  e>.<tcl>hd_keywo
0030: 72 64 73 20 7b 72 65 73 75 6c 74 20 63 6f 64 65  rds {result code
0040: 7d 20 7b 72 65 73 75 6c 74 20 63 6f 64 65 73 7d  } {result codes}
0050: 20 7b 65 72 72 6f 72 20 63 6f 64 65 7d 20 7b 65   {error code} {e
0060: 72 72 6f 72 20 63 6f 64 65 73 7d 3c 2f 74 63 6c  rror codes}</tcl
0070: 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 22 63 65 6e  >.<h1 align="cen
0080: 74 65 72 22 3e 53 51 4c 69 74 65 20 52 65 73 75  ter">SQLite Resu
0090: 6c 74 20 43 6f 64 65 73 3c 2f 68 31 3e 0a 0a 3c  lt Codes</h1>..<
00a0: 70 3e 0a 4d 61 6e 79 20 6f 66 20 74 68 65 20 72  p>.Many of the r
00b0: 6f 75 74 69 6e 65 73 20 69 6e 20 74 68 65 20 53  outines in the S
00c0: 51 4c 69 74 65 20 5b 43 2d 6c 61 6e 67 75 61 67  QLite [C-languag
00d0: 65 20 49 6e 74 65 72 66 61 63 65 5d 20 72 65 74  e Interface] ret
00e0: 75 72 6e 0a 6e 75 6d 65 72 69 63 20 72 65 73 75  urn.numeric resu
00f0: 6c 74 20 63 6f 64 65 73 20 69 6e 64 69 63 61 74  lt codes indicat
0100: 69 6e 67 20 65 69 74 68 65 72 20 73 75 63 63 65  ing either succe
0110: 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2c 20 61  ss or failure, a
0120: 6e 64 20 0a 69 6e 20 74 68 65 20 65 76 65 6e 74  nd .in the event
0130: 20 6f 66 20 61 20 66 61 69 6c 75 72 65 2c 20 70   of a failure, p
0140: 72 6f 76 69 64 69 6e 67 20 73 6f 6d 65 20 69 64  roviding some id
0150: 65 61 20 6f 66 20 74 68 65 20 63 61 75 73 65 20  ea of the cause 
0160: 6f 66 0a 74 68 65 20 66 61 69 6c 75 72 65 2e 20  of.the failure. 
0170: 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 73   This document s
0180: 74 72 69 76 65 73 20 74 6f 20 65 78 70 6c 61 69  trives to explai
0190: 6e 20 77 68 61 74 20 65 61 63 68 0a 6f 66 20 74  n what each.of t
01a0: 68 6f 73 65 20 6e 75 6d 65 72 69 63 20 72 65 73  hose numeric res
01b0: 75 6c 74 20 63 6f 64 65 73 20 6d 65 61 6e 73 2e  ult codes means.
01c0: 0a 0a 3c 68 32 3e 52 65 73 75 6c 74 20 43 6f 64  ..<h2>Result Cod
01d0: 65 73 20 76 65 72 73 75 73 20 45 72 72 6f 72 20  es versus Error 
01e0: 43 6f 64 65 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 0a  Codes</h2>..<p>.
01f0: 22 45 72 72 6f 72 20 63 6f 64 65 73 22 20 61 72  "Error codes" ar
0200: 65 20 61 20 73 75 62 73 65 74 20 6f 66 20 22 72  e a subset of "r
0210: 65 73 75 6c 74 20 63 6f 64 65 73 22 20 74 68 61  esult codes" tha
0220: 74 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 0a  t indicate that.
0230: 73 6f 6d 65 74 68 69 6e 67 20 68 61 73 20 67 6f  something has go
0240: 6e 65 20 77 72 6f 6e 67 2e 20 20 54 68 65 72 65  ne wrong.  There
0250: 20 61 72 65 20 6f 6e 6c 79 20 61 20 66 65 77 20   are only a few 
0260: 6e 6f 6e 2d 65 72 72 6f 72 20 72 65 73 75 6c 74  non-error result
0270: 0a 63 6f 64 65 73 3a 20 20 5b 53 51 4c 49 54 45  .codes:  [SQLITE
0280: 5f 4f 4b 5d 2c 20 5b 53 51 4c 49 54 45 5f 52 4f  _OK], [SQLITE_RO
0290: 57 5d 2c 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f  W], and [SQLITE_
02a0: 44 4f 4e 45 5d 2e 20 20 54 68 65 20 74 65 72 6d  DONE].  The term
02b0: 0a 22 65 72 72 6f 72 20 63 6f 64 65 22 20 6d 65  ."error code" me
02c0: 61 6e 73 20 61 6e 79 20 72 65 73 75 6c 74 20 63  ans any result c
02d0: 6f 64 65 20 6f 74 68 65 72 20 74 68 61 6e 20 74  ode other than t
02e0: 68 65 73 65 20 74 68 72 65 65 2e 0a 0a 3c 74 63  hese three...<tc
02f0: 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 70 76  l>hd_fragment pv
0300: 65 20 7b 70 72 69 6d 61 72 79 20 76 65 72 73 75  e {primary versu
0310: 73 20 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c  s extended resul
0320: 74 20 63 6f 64 65 73 7d 20 5c 0a 20 20 20 20 20  t codes} \.     
0330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0340: 7b 2a 65 78 74 2d 76 2d 70 72 69 6d 7d 20 3c 2f  {*ext-v-prim} </
0350: 74 63 6c 3e 0a 3c 68 32 3e 50 72 69 6d 61 72 79  tcl>.<h2>Primary
0360: 20 52 65 73 75 6c 74 20 43 6f 64 65 73 20 76 65   Result Codes ve
0370: 72 73 75 73 20 45 78 74 65 6e 64 65 64 20 52 65  rsus Extended Re
0380: 73 75 6c 74 20 43 6f 64 65 73 3c 2f 68 32 3e 0a  sult Codes</h2>.
0390: 0a 3c 70 3e 0a 52 65 73 75 6c 74 20 63 6f 64 65  .<p>.Result code
03a0: 73 20 61 72 65 20 73 69 67 6e 65 64 20 33 32 2d  s are signed 32-
03b0: 62 69 74 20 69 6e 74 65 67 65 72 73 2e 0a 54 68  bit integers..Th
03c0: 65 20 6c 65 61 73 74 20 73 69 67 6e 69 66 69 63  e least signific
03d0: 61 6e 74 20 38 20 62 69 74 73 20 6f 66 20 74 68  ant 8 bits of th
03e0: 65 20 72 65 73 75 6c 74 20 63 6f 64 65 20 64 65  e result code de
03f0: 66 69 6e 65 20 61 20 62 72 6f 61 64 20 63 61 74  fine a broad cat
0400: 65 67 6f 72 79 0a 61 6e 64 20 61 72 65 20 63 61  egory.and are ca
0410: 6c 6c 65 64 20 74 68 65 20 22 70 72 69 6d 61 72  lled the "primar
0420: 79 20 72 65 73 75 6c 74 20 63 6f 64 65 22 2e 20  y result code". 
0430: 20 4d 6f 72 65 20 73 69 67 6e 69 66 69 63 61 6e   More significan
0440: 74 20 62 69 74 73 20 70 72 6f 76 69 64 65 0a 6d  t bits provide.m
0450: 6f 72 65 20 64 65 74 61 69 6c 65 64 20 69 6e 66  ore detailed inf
0460: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
0470: 68 65 20 65 72 72 6f 72 20 61 6e 64 20 61 72 65  he error and are
0480: 20 63 61 6c 6c 65 64 20 74 68 65 0a 22 65 78 74   called the."ext
0490: 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
04a0: 65 22 0a 0a 3c 70 3e 0a 4e 6f 74 65 20 74 68 61  e"..<p>.Note tha
04b0: 74 20 74 68 65 20 70 72 69 6d 61 72 79 20 72 65  t the primary re
04c0: 73 75 6c 74 20 63 6f 64 65 20 69 73 20 61 6c 77  sult code is alw
04d0: 61 79 73 20 61 20 70 61 72 74 20 6f 66 20 74 68  ays a part of th
04e0: 65 20 65 78 74 65 6e 64 65 64 0a 72 65 73 75 6c  e extended.resul
04f0: 74 20 63 6f 64 65 2e 20 20 47 69 76 65 6e 20 61  t code.  Given a
0500: 20 66 75 6c 6c 20 33 32 2d 62 69 74 20 65 78 74   full 32-bit ext
0510: 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
0520: 65 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  e, the applicati
0530: 6f 6e 0a 63 61 6e 20 61 6c 77 61 79 73 20 66 69  on.can always fi
0540: 6e 64 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  nd the correspon
0550: 64 69 6e 67 20 70 72 69 6d 61 72 79 20 72 65 73  ding primary res
0560: 75 6c 74 20 63 6f 64 65 20 6d 65 72 65 6c 79 20  ult code merely 
0570: 62 79 20 65 78 74 72 61 63 74 69 6e 67 0a 74 68  by extracting.th
0580: 65 20 6c 65 61 73 74 20 73 69 67 6e 69 66 69 63  e least signific
0590: 61 6e 74 20 38 20 62 69 74 73 20 6f 66 20 74 68  ant 8 bits of th
05a0: 65 20 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c  e extended resul
05b0: 74 20 63 6f 64 65 2e 0a 0a 3c 70 3e 0a 41 6c 6c  t code...<p>.All
05c0: 20 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74   extended result
05d0: 20 63 6f 64 65 73 20 61 72 65 20 61 6c 73 6f 20   codes are also 
05e0: 65 72 72 6f 72 20 63 6f 64 65 73 2e 20 20 48 65  error codes.  He
05f0: 6e 63 65 20 74 68 65 20 74 65 72 6d 73 0a 22 65  nce the terms."e
0600: 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
0610: 6f 64 65 22 20 61 6e 64 20 22 65 78 74 65 6e 64  ode" and "extend
0620: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 22 20 61  ed error code" a
0630: 72 65 20 69 6e 74 65 72 63 68 61 6e 67 65 61 62  re interchangeab
0640: 6c 65 2e 0a 0a 3c 70 3e 0a 46 6f 72 20 68 69 73  le...<p>.For his
0650: 74 6f 72 69 63 20 63 6f 6d 70 61 74 69 62 69 6c  toric compatibil
0660: 69 74 79 2c 20 74 68 65 20 43 2d 6c 61 6e 67 75  ity, the C-langu
0670: 61 67 65 20 69 6e 74 65 72 66 61 63 65 73 20 72  age interfaces r
0680: 65 74 75 72 6e 0a 70 72 69 6d 61 72 79 20 72 65  eturn.primary re
0690: 73 75 6c 74 20 63 6f 64 65 73 20 62 79 20 64 65  sult codes by de
06a0: 66 61 75 6c 74 2e 20 20 0a 54 68 65 20 65 78 74  fault.  .The ext
06b0: 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
06c0: 65 20 66 6f 72 20 74 68 65 20 6d 6f 73 74 20 72  e for the most r
06d0: 65 63 65 6e 74 20 65 72 72 6f 72 20 63 61 6e 20  ecent error can 
06e0: 62 65 0a 72 65 74 72 69 65 76 65 64 20 75 73 69  be.retrieved usi
06f0: 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ng the [sqlite3_
0700: 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65  extended_errcode
0710: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 54  ()] interface..T
0720: 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 78 74 65  he [sqlite3_exte
0730: 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65  nded_result_code
0740: 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 63  s()] interface c
0750: 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 70 75  an be used to pu
0760: 74 0a 61 20 5b 64 61 74 61 62 61 73 65 20 63 6f  t.a [database co
0770: 6e 6e 65 63 74 69 6f 6e 5d 20 69 6e 74 6f 20 61  nnection] into a
0780: 20 6d 6f 64 65 20 77 68 65 72 65 20 69 74 20 72   mode where it r
0790: 65 74 75 72 6e 73 20 74 68 65 0a 65 78 74 65 6e  eturns the.exten
07a0: 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73  ded result codes
07b0: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
07c0: 70 72 69 6d 61 72 79 20 72 65 73 75 6c 74 20 63  primary result c
07d0: 6f 64 65 73 2e 0a 0a 3c 68 32 3e 44 65 66 69 6e  odes...<h2>Defin
07e0: 69 74 69 6f 6e 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  itions</h2>..<p>
07f0: 0a 41 6c 6c 20 72 65 73 75 6c 74 20 63 6f 64 65  .All result code
0800: 73 20 61 72 65 20 69 6e 74 65 67 65 72 73 2e 0a  s are integers..
0810: 53 79 6d 62 6f 6c 69 63 20 6e 61 6d 65 73 20 66  Symbolic names f
0820: 6f 72 20 61 6c 6c 20 72 65 73 75 6c 74 20 63 6f  or all result co
0830: 64 65 73 20 61 72 65 20 63 72 65 61 74 65 64 20  des are created 
0840: 75 73 69 6e 67 0a 22 23 64 65 66 69 6e 65 22 20  using."#define" 
0850: 6d 61 63 72 6f 73 20 69 6e 20 74 68 65 20 73 71  macros in the sq
0860: 6c 69 74 65 33 2e 68 20 68 65 61 64 65 72 20 66  lite3.h header f
0870: 69 6c 65 2e 0a 54 68 65 72 65 20 61 72 65 20 73  ile..There are s
0880: 65 70 61 72 61 74 65 20 73 65 63 74 69 6f 6e 73  eparate sections
0890: 20 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33 2e   in the sqlite3.
08a0: 68 20 68 65 61 64 65 72 20 66 69 6c 65 20 66 6f  h header file fo
08b0: 72 0a 74 68 65 20 5b 72 65 73 75 6c 74 20 63 6f  r.the [result co
08c0: 64 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 5d 20  de definitions] 
08d0: 61 6e 64 20 74 68 65 20 5b 65 78 74 65 6e 64 65  and the [extende
08e0: 64 20 72 65 73 75 6c 74 20 63 6f 64 65 20 64 65  d result code de
08f0: 66 69 6e 69 74 69 6f 6e 73 5d 2e 0a 0a 3c 70 3e  finitions]...<p>
0900: 0a 50 72 69 6d 61 72 79 20 72 65 73 75 6c 74 20  .Primary result 
0910: 63 6f 64 65 20 73 79 6d 62 6f 6c 69 63 20 6e 61  code symbolic na
0920: 6d 65 73 20 61 72 65 20 6f 66 20 74 68 65 20 66  mes are of the f
0930: 6f 72 6d 20 22 53 51 4c 49 54 45 5f 58 58 58 58  orm "SQLITE_XXXX
0940: 58 58 22 20 77 68 65 72 65 0a 58 58 58 58 58 58  XX" where.XXXXXX
0950: 20 69 73 20 61 20 73 65 71 75 65 6e 63 65 20 6f   is a sequence o
0960: 66 20 75 70 70 65 72 63 61 73 65 20 61 6c 70 68  f uppercase alph
0970: 61 62 65 74 69 63 20 63 68 61 72 61 63 74 65 72  abetic character
0980: 73 2e 20 20 45 78 74 65 6e 64 65 64 0a 72 65 73  s.  Extended.res
0990: 75 6c 74 20 63 6f 64 65 20 6e 61 6d 65 73 20 61  ult code names a
09a0: 72 65 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 22  re of the form "
09b0: 53 51 4c 49 54 45 5f 58 58 58 58 58 58 5f 59 59  SQLITE_XXXXXX_YY
09c0: 59 59 59 59 59 22 20 77 68 65 72 65 0a 74 68 65  YYYYY" where.the
09d0: 20 58 58 58 58 58 58 20 70 61 72 74 20 69 73 20   XXXXXX part is 
09e0: 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  the correspondin
09f0: 67 20 70 72 69 6d 61 72 79 20 72 65 73 75 6c 74  g primary result
0a00: 20 63 6f 64 65 20 61 6e 64 20 74 68 65 0a 59 59   code and the.YY
0a10: 59 59 59 59 59 20 69 73 20 61 6e 20 65 78 74 65  YYYYY is an exte
0a20: 6e 73 69 6f 6e 20 74 68 61 74 20 66 75 72 74 68  nsion that furth
0a30: 65 72 20 63 6c 61 73 73 69 66 69 65 73 20 74 68  er classifies th
0a40: 65 20 72 65 73 75 6c 74 20 63 6f 64 65 2e 0a 0a  e result code...
0a50: 3c 70 3e 0a 54 68 65 20 6e 61 6d 65 73 20 61 6e  <p>.The names an
0a60: 64 20 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 73  d numeric values
0a70: 20 66 6f 72 20 65 78 69 73 74 69 6e 67 20 72 65   for existing re
0a80: 73 75 6c 74 20 63 6f 64 65 73 20 61 72 65 20 66  sult codes are f
0a90: 69 78 65 64 0a 61 6e 64 20 75 6e 63 68 61 6e 67  ixed.and unchang
0aa0: 69 6e 67 2e 20 20 48 6f 77 65 76 65 72 2c 20 6e  ing.  However, n
0ab0: 65 77 20 72 65 73 75 6c 74 20 63 6f 64 65 73 2c  ew result codes,
0ac0: 20 61 6e 64 20 65 73 70 65 63 69 61 6c 6c 79 20   and especially 
0ad0: 6e 65 77 20 65 78 74 65 6e 64 65 64 0a 72 65 73  new extended.res
0ae0: 75 6c 74 20 63 6f 64 65 73 2c 20 6d 69 67 68 74  ult codes, might
0af0: 20 61 70 70 65 61 72 20 69 6e 20 66 75 74 75 72   appear in futur
0b00: 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51  e releases of SQ
0b10: 4c 69 74 65 2e 0a 0a 3c 74 63 6c 3e 0a 75 6e 73  Lite...<tcl>.uns
0b20: 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72  et -nocomplain r
0b30: 65 73 64 65 73 63 0a 75 6e 73 65 74 20 2d 6e 6f  esdesc.unset -no
0b40: 63 6f 6d 70 6c 61 69 6e 20 72 65 73 76 61 6c 75  complain resvalu
0b50: 65 0a 70 72 6f 63 20 52 45 53 43 4f 44 45 20 7b  e.proc RESCODE {
0b60: 6e 61 6d 65 20 76 61 6c 75 65 20 64 65 73 63 7d  name value desc}
0b70: 20 7b 0a 20 20 73 65 74 20 3a 3a 72 65 73 64 65   {.  set ::resde
0b80: 73 63 28 24 6e 61 6d 65 29 20 24 64 65 73 63 0a  sc($name) $desc.
0b90: 20 20 73 65 74 20 3a 3a 72 65 73 76 61 6c 75 65    set ::resvalue
0ba0: 28 24 6e 61 6d 65 29 20 24 76 61 6c 75 65 0a 7d  ($name) $value.}
0bb0: 0a 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  ..RESCODE SQLITE
0bc0: 5f 4f 4b 20 30 20 7b 0a 20 20 54 68 65 20 53 51  _OK 0 {.  The SQ
0bd0: 4c 49 54 45 5f 4f 4b 20 72 65 73 75 6c 74 20 63  LITE_OK result c
0be0: 6f 64 65 20 6d 65 61 6e 73 20 74 68 61 74 20 74  ode means that t
0bf0: 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 77 61 73  he operation was
0c00: 20 73 75 63 63 65 73 73 66 75 6c 20 61 6e 64 0a   successful and.
0c10: 20 20 74 68 61 74 20 74 68 65 72 65 20 77 65 72    that there wer
0c20: 65 20 6e 6f 20 65 72 72 6f 72 73 2e 20 20 4d 6f  e no errors.  Mo
0c30: 73 74 20 6f 74 68 65 72 20 72 65 73 75 6c 74 20  st other result 
0c40: 63 6f 64 65 73 20 69 6e 64 69 63 61 74 65 20 61  codes indicate a
0c50: 6e 20 65 72 72 6f 72 2e 0a 7d 0a 52 45 53 43 4f  n error..}.RESCO
0c60: 44 45 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 20  DE SQLITE_ERROR 
0c70: 31 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45  1 {.  The SQLITE
0c80: 5f 45 52 52 4f 52 20 72 65 73 75 6c 74 20 63 6f  _ERROR result co
0c90: 64 65 20 69 73 20 61 20 67 65 6e 65 72 69 63 20  de is a generic 
0ca0: 65 72 72 6f 72 20 63 6f 64 65 20 74 68 61 74 20  error code that 
0cb0: 69 73 20 75 73 65 64 20 77 68 65 6e 0a 20 20 6e  is used when.  n
0cc0: 6f 20 6f 74 68 65 72 20 6d 6f 72 65 20 73 70 65  o other more spe
0cd0: 63 69 66 69 63 20 65 72 72 6f 72 20 63 6f 64 65  cific error code
0ce0: 20 69 73 20 61 76 61 69 6c 61 62 6c 65 2e 0a 7d   is available..}
0cf0: 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f  .RESCODE SQLITE_
0d00: 49 4e 54 45 52 4e 41 4c 20 20 20 20 20 32 20 20  INTERNAL     2  
0d10: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49  {.  The SQLITE_I
0d20: 4e 54 45 52 4e 41 4c 20 72 65 73 75 6c 74 20 63  NTERNAL result c
0d30: 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20 61 6e  ode indicates an
0d40: 20 69 6e 74 65 72 6e 61 6c 20 6d 61 6c 66 75 6e   internal malfun
0d50: 63 74 69 6f 6e 2e 0a 20 20 49 6e 20 61 20 77 6f  ction..  In a wo
0d60: 72 6b 69 6e 67 20 76 65 72 73 69 6f 6e 20 6f 66  rking version of
0d70: 20 53 51 4c 69 74 65 2c 20 61 6e 20 61 70 70 6c   SQLite, an appl
0d80: 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e  ication should n
0d90: 65 76 65 72 20 73 65 65 20 74 68 69 73 0a 20 20  ever see this.  
0da0: 72 65 73 75 6c 74 20 63 6f 64 65 2e 20 20 49 66  result code.  If
0db0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 65   application doe
0dc0: 73 20 65 6e 63 6f 75 6e 74 65 72 20 74 68 69 73  s encounter this
0dd0: 20 72 65 73 75 6c 74 20 63 6f 64 65 2c 20 69 74   result code, it
0de0: 20 73 68 6f 77 73 0a 20 20 74 68 61 74 20 74 68   shows.  that th
0df0: 65 72 65 20 69 73 20 61 20 62 75 67 20 69 6e 20  ere is a bug in 
0e00: 74 68 65 20 64 61 74 61 62 61 73 65 20 65 6e 67  the database eng
0e10: 69 6e 65 2e 0a 20 20 3c 70 3e 0a 20 20 41 63 74  ine..  <p>.  Act
0e20: 75 61 6c 6c 79 2c 20 53 51 4c 69 74 65 20 64 6f  ually, SQLite do
0e30: 65 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79  es not currently
0e40: 20 67 65 6e 65 72 61 74 65 20 74 68 69 73 20 72   generate this r
0e50: 65 73 75 6c 74 20 63 6f 64 65 20 75 6e 64 65 72  esult code under
0e60: 0a 20 20 61 6e 79 20 63 69 72 63 75 6d 73 74 61  .  any circumsta
0e70: 6e 63 65 73 2e 20 20 48 6f 77 65 76 65 72 2c 20  nces.  However, 
0e80: 5b 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66  [application-def
0e90: 69 6e 65 64 20 53 51 4c 20 66 75 6e 63 74 69 6f  ined SQL functio
0ea0: 6e 73 5d 20 6f 72 0a 20 20 5b 76 69 72 74 75 61  ns] or.  [virtua
0eb0: 6c 20 74 61 62 6c 65 73 5d 2c 20 6f 72 20 5b 56  l tables], or [V
0ec0: 46 53 65 73 5d 2c 20 6f 72 20 6f 74 68 65 72 20  FSes], or other 
0ed0: 65 78 74 65 6e 73 69 6f 6e 73 20 6d 69 67 68 74  extensions might
0ee0: 20 63 61 75 73 65 20 74 68 69 73 20 0a 20 20 72   cause this .  r
0ef0: 65 73 75 6c 74 20 63 6f 64 65 20 74 6f 20 62 65  esult code to be
0f00: 20 72 65 74 75 72 6e 65 64 2e 0a 7d 0a 52 45 53   returned..}.RES
0f10: 43 4f 44 45 20 53 51 4c 49 54 45 5f 50 45 52 4d  CODE SQLITE_PERM
0f20: 20 20 20 20 20 20 20 20 20 33 20 20 7b 0a 20 20           3  {.  
0f30: 54 68 65 20 53 51 4c 49 54 45 5f 50 45 52 4d 20  The SQLITE_PERM 
0f40: 72 65 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69  result code indi
0f50: 63 61 74 65 73 20 61 20 66 69 6c 65 2d 73 79 73  cates a file-sys
0f60: 74 65 6d 20 70 65 72 6d 69 73 73 69 6f 6e 73 20  tem permissions 
0f70: 70 72 6f 62 6c 65 6d 2e 0a 20 20 43 75 72 72 65  problem..  Curre
0f80: 6e 74 6c 79 2c 20 6f 6e 20 74 68 65 20 75 6e 69  ntly, on the uni
0f90: 78 20 56 46 53 20 67 65 6e 65 72 61 74 65 73 20  x VFS generates 
0fa0: 74 68 69 73 20 72 65 73 75 6c 74 20 63 6f 64 65  this result code
0fb0: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
0fc0: 54 45 5f 41 42 4f 52 54 20 20 20 20 20 20 20 20  TE_ABORT        
0fd0: 34 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  4  {.  The SQLIT
0fe0: 45 5f 41 42 4f 52 54 20 72 65 73 75 6c 74 20 63  E_ABORT result c
0ff0: 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20 74 68  ode indicates th
1000: 61 74 20 61 6e 20 6f 70 65 72 61 74 69 6f 6e 20  at an operation 
1010: 77 61 73 20 61 62 6f 72 74 65 64 0a 20 20 70 72  was aborted.  pr
1020: 69 6f 72 20 74 6f 20 63 6f 6d 70 6c 65 74 69 6f  ior to completio
1030: 6e 2c 20 75 73 75 61 6c 6c 79 20 62 65 20 61 70  n, usually be ap
1040: 70 6c 69 63 61 74 69 6f 6e 20 72 65 71 75 65 73  plication reques
1050: 74 2e 0a 20 20 3c 70 3e 0a 20 20 5e 49 66 20 74  t..  <p>.  ^If t
1060: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
1070: 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33  tion to [sqlite3
1080: 5f 65 78 65 63 28 29 5d 20 72 65 74 75 72 6e 73  _exec()] returns
1090: 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 0a   non-zero, then.
10a0: 20 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29    sqlite3_exec()
10b0: 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 53 51 4c   will return SQL
10c0: 49 54 45 5f 41 42 4f 52 54 2e 0a 20 20 3c 70 3e  ITE_ABORT..  <p>
10d0: 0a 20 20 5e 49 66 20 61 20 5b 52 4f 4c 4c 42 41  .  ^If a [ROLLBA
10e0: 43 4b 5d 20 6f 70 65 72 61 74 69 6f 6e 20 6f 63  CK] operation oc
10f0: 63 75 72 73 20 6f 6e 20 74 68 65 20 73 61 6d 65  curs on the same
1100: 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
1110: 63 74 69 6f 6e 5d 20 61 73 0a 20 20 61 20 70 65  ction] as.  a pe
1120: 6e 64 69 6e 67 20 72 65 61 64 20 6f 72 20 77 72  nding read or wr
1130: 69 74 65 2c 20 74 68 65 6e 20 74 68 65 20 70 65  ite, then the pe
1140: 6e 64 69 6e 67 20 72 65 61 64 20 6f 72 20 77 72  nding read or wr
1150: 69 74 65 20 6d 61 79 20 66 61 69 6c 20 77 69 74  ite may fail wit
1160: 68 0a 20 20 61 6e 20 53 51 4c 49 54 45 5f 41 42  h.  an SQLITE_AB
1170: 4f 52 54 20 6f 72 20 5b 53 51 4c 49 54 45 5f 41  ORT or [SQLITE_A
1180: 42 4f 52 54 5f 52 4f 4c 4c 42 41 43 4b 5d 20 65  BORT_ROLLBACK] e
1190: 72 72 6f 72 2e 0a 20 20 3c 70 3e 0a 20 20 5e 49  rror..  <p>.  ^I
11a0: 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 62 65  n addition to be
11b0: 69 6e 67 20 61 20 72 65 73 75 6c 74 20 63 6f 64  ing a result cod
11c0: 65 2c 0a 20 20 74 68 65 20 53 51 4c 49 54 45 5f  e,.  the SQLITE_
11d0: 41 42 4f 52 54 20 76 61 6c 75 65 20 69 73 20 61  ABORT value is a
11e0: 6c 73 6f 20 75 73 65 64 20 61 73 20 61 20 5b 63  lso used as a [c
11f0: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
1200: 6f 6e 20 6d 6f 64 65 5d 0a 20 20 72 65 74 75 72  on mode].  retur
1210: 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 5b 73 71  ned from the [sq
1220: 6c 69 74 65 33 5f 76 74 61 62 5f 6f 6e 5f 63 6f  lite3_vtab_on_co
1230: 6e 66 6c 69 63 74 28 29 5d 20 69 6e 74 65 72 66  nflict()] interf
1240: 61 63 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ace..}.RESCODE S
1250: 51 4c 49 54 45 5f 42 55 53 59 20 20 20 20 20 20  QLITE_BUSY      
1260: 20 20 20 35 20 20 7b 0a 20 20 54 68 65 20 53 51     5  {.  The SQ
1270: 4c 49 54 45 5f 42 55 53 59 20 72 65 73 75 6c 74  LITE_BUSY result
1280: 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20   code indicates 
1290: 74 68 61 74 20 74 68 65 20 64 61 74 61 62 61 73  that the databas
12a0: 65 20 66 69 6c 65 20 63 6f 75 6c 64 20 6e 6f 74  e file could not
12b0: 0a 20 20 62 65 20 77 72 69 74 74 65 6e 20 28 6f  .  be written (o
12c0: 72 20 69 6e 20 73 6f 6d 65 20 63 61 73 65 73 20  r in some cases 
12d0: 72 65 61 64 29 20 62 65 63 61 75 73 65 20 6f 66  read) because of
12e0: 20 63 6f 6e 63 75 72 72 65 6e 74 20 61 63 74 69   concurrent acti
12f0: 76 69 74 79 20 62 79 20 0a 20 20 73 6f 6d 65 20  vity by .  some 
1300: 6f 74 68 65 72 20 5b 64 61 74 61 62 61 73 65 20  other [database 
1310: 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2c 20 75 73 75  connection], usu
1320: 61 6c 6c 79 20 61 20 64 61 74 61 62 61 73 65 20  ally a database 
1330: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 20 61 0a  connection in a.
1340: 20 20 73 65 70 61 72 61 74 65 20 70 72 6f 63 65    separate proce
1350: 73 73 2e 0a 20 20 3c 70 3e 0a 20 20 46 6f 72 20  ss..  <p>.  For 
1360: 65 78 61 6d 70 6c 65 2c 20 69 66 20 70 72 6f 63  example, if proc
1370: 65 73 73 20 41 20 69 73 20 69 6e 20 74 68 65 20  ess A is in the 
1380: 6d 69 64 64 6c 65 20 6f 66 20 61 20 6c 61 72 67  middle of a larg
1390: 65 20 77 72 69 74 65 20 74 72 61 6e 73 61 63 74  e write transact
13a0: 69 6f 6e 0a 20 20 61 6e 64 20 61 74 20 74 68 65  ion.  and at the
13b0: 20 73 61 6d 65 20 74 69 6d 65 20 70 72 6f 63 65   same time proce
13c0: 73 73 20 42 20 61 74 74 65 6d 70 74 73 20 74 6f  ss B attempts to
13d0: 20 73 74 61 72 74 20 61 20 6e 65 77 20 77 72 69   start a new wri
13e0: 74 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 0a  te transaction,.
13f0: 20 20 70 72 6f 63 65 73 73 20 42 20 77 69 6c 6c    process B will
1400: 20 67 65 74 20 62 61 63 6b 20 61 6e 20 53 51 4c   get back an SQL
1410: 49 54 45 5f 42 55 53 59 20 72 65 73 75 6c 74 20  ITE_BUSY result 
1420: 62 65 63 61 75 73 65 20 53 51 4c 69 74 65 20 6f  because SQLite o
1430: 6e 6c 79 20 73 75 70 70 6f 72 74 73 0a 20 20 6f  nly supports.  o
1440: 6e 65 20 77 72 69 74 65 72 20 61 74 20 61 20 74  ne writer at a t
1450: 69 6d 65 2e 20 20 50 72 6f 63 65 73 73 20 42 20  ime.  Process B 
1460: 77 69 6c 6c 20 6e 65 65 64 20 74 6f 20 77 61 69  will need to wai
1470: 74 20 66 6f 72 20 70 72 6f 63 65 73 73 20 41 20  t for process A 
1480: 74 6f 20 66 69 6e 69 73 68 0a 20 20 69 74 73 20  to finish.  its 
1490: 74 72 61 6e 73 61 63 74 69 6f 6e 20 62 65 66 6f  transaction befo
14a0: 72 65 20 73 74 61 72 74 69 6e 67 20 61 20 6e 65  re starting a ne
14b0: 77 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20  w transaction.  
14c0: 54 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 62  The.  [sqlite3_b
14d0: 75 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d 20 61  usy_timeout()] a
14e0: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79  nd [sqlite3_busy
14f0: 5f 68 61 6e 64 6c 65 72 28 29 5d 20 69 6e 74 65  _handler()] inte
1500: 72 66 61 63 65 73 20 61 6e 64 0a 20 20 74 68 65  rfaces and.  the
1510: 20 5b 62 75 73 79 5f 74 69 6d 65 6f 75 74 20 70   [busy_timeout p
1520: 72 61 67 6d 61 5d 20 61 72 65 20 61 76 61 69 6c  ragma] are avail
1530: 61 62 6c 65 20 74 6f 20 70 72 6f 63 65 73 73 20  able to process 
1540: 42 20 74 6f 20 68 65 6c 70 20 69 74 20 64 65 61  B to help it dea
1550: 6c 0a 20 20 77 69 74 68 20 53 51 4c 49 54 45 5f  l.  with SQLITE_
1560: 42 55 53 59 20 65 72 72 6f 72 73 2e 0a 20 20 3c  BUSY errors..  <
1570: 70 3e 0a 20 20 41 6e 20 53 51 4c 49 54 45 5f 42  p>.  An SQLITE_B
1580: 55 53 59 20 65 72 72 6f 72 20 63 61 6e 20 6f 63  USY error can oc
1590: 63 75 72 20 61 74 20 61 6e 79 20 70 6f 69 6e 74  cur at any point
15a0: 20 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69 6f   in a transactio
15b0: 6e 3a 20 77 68 65 6e 20 74 68 65 0a 20 20 74 72  n: when the.  tr
15c0: 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 66 69 72  ansaction is fir
15d0: 73 74 20 73 74 61 72 74 65 64 2c 20 64 75 72 69  st started, duri
15e0: 6e 67 20 61 6e 79 20 77 72 69 74 65 20 6f 72 20  ng any write or 
15f0: 75 70 64 61 74 65 20 6f 70 65 72 61 74 69 6f 6e  update operation
1600: 73 2c 20 6f 72 0a 20 20 77 68 65 6e 20 74 68 65  s, or.  when the
1610: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d   transaction com
1620: 6d 69 74 73 2e 0a 20 20 54 6f 20 61 76 6f 69 64  mits..  To avoid
1630: 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67 20 53 51   encountering SQ
1640: 4c 49 54 45 5f 42 55 53 59 20 65 72 72 6f 72 73  LITE_BUSY errors
1650: 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f   in the middle o
1660: 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c  f a transaction,
1670: 0a 20 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  .  the applicati
1680: 6f 6e 20 63 61 6e 20 75 73 65 20 5b 42 45 47 49  on can use [BEGI
1690: 4e 20 49 4d 4d 45 44 49 41 54 45 5d 20 69 6e 73  N IMMEDIATE] ins
16a0: 74 65 61 64 20 6f 66 20 6a 75 73 74 20 5b 42 45  tead of just [BE
16b0: 47 49 4e 5d 20 74 6f 0a 20 20 73 74 61 72 74 20  GIN] to.  start 
16c0: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20  a transaction.  
16d0: 54 68 65 20 5b 42 45 47 49 4e 20 49 4d 4d 45 44  The [BEGIN IMMED
16e0: 49 41 54 45 5d 20 63 6f 6d 6d 61 6e 64 20 6d 69  IATE] command mi
16f0: 67 68 74 20 69 74 73 65 6c 66 20 72 65 74 75 72  ght itself retur
1700: 6e 0a 20 20 53 51 4c 49 54 45 5f 42 55 53 59 2c  n.  SQLITE_BUSY,
1710: 20 62 75 74 20 69 66 20 69 74 20 73 75 63 63 65   but if it succe
1720: 65 64 73 2c 20 74 68 65 6e 20 53 51 4c 69 74 65  eds, then SQLite
1730: 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74   guarantees that
1740: 20 6e 6f 20 0a 20 20 73 75 62 73 65 71 75 65 6e   no .  subsequen
1750: 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 6f 6e 20  t operations on 
1760: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
1770: 65 20 74 68 72 6f 75 67 68 20 74 68 65 20 6e 65  e through the ne
1780: 78 74 20 5b 43 4f 4d 4d 49 54 5d 20 0a 20 20 77  xt [COMMIT] .  w
1790: 69 6c 6c 20 72 65 74 75 72 6e 20 53 51 4c 49 54  ill return SQLIT
17a0: 45 5f 42 55 53 59 2e 0a 20 20 3c 70 3e 0a 20 20  E_BUSY..  <p>.  
17b0: 53 65 65 20 61 6c 73 6f 3a 20 20 5b 53 51 4c 49  See also:  [SQLI
17c0: 54 45 5f 42 55 53 59 5f 52 45 43 4f 56 45 52 59  TE_BUSY_RECOVERY
17d0: 5d 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55  ] and [SQLITE_BU
17e0: 53 59 5f 53 4e 41 50 53 48 4f 54 5d 2e 0a 20 20  SY_SNAPSHOT]..  
17f0: 3c 70 3e 0a 20 20 54 68 65 20 53 51 4c 49 54 45  <p>.  The SQLITE
1800: 5f 42 55 53 59 20 72 65 73 75 6c 74 20 63 6f 64  _BUSY result cod
1810: 65 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20 5b  e differs from [
1820: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 69  SQLITE_LOCKED] i
1830: 6e 20 74 68 61 74 0a 20 20 53 51 4c 49 54 45 5f  n that.  SQLITE_
1840: 42 55 53 59 20 69 6e 64 69 63 61 74 65 73 20 61  BUSY indicates a
1850: 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 20 61   conflict with a
1860: 0a 20 20 73 65 70 61 72 61 74 65 20 5b 64 61 74  .  separate [dat
1870: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1880: 5d 2c 20 70 72 6f 62 61 62 6c 79 20 69 6e 20 61  ], probably in a
1890: 20 73 65 70 61 72 61 74 65 20 70 72 6f 63 65 73   separate proces
18a0: 73 2c 0a 20 20 77 68 65 72 65 61 73 20 5b 53 51  s,.  whereas [SQ
18b0: 4c 49 54 45 5f 4c 4f 43 4b 45 44 5d 20 0a 20 20  LITE_LOCKED] .  
18c0: 69 6e 64 69 63 61 74 65 73 20 61 20 63 6f 6e 66  indicates a conf
18d0: 6c 69 63 74 20 77 69 74 68 69 6e 20 74 68 65 20  lict within the 
18e0: 73 61 6d 65 20 5b 64 61 74 61 62 61 73 65 20 63  same [database c
18f0: 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28 6f 72 20 73  onnection] (or s
1900: 6f 6d 65 74 69 6d 65 73 0a 20 20 61 20 64 61 74  ometimes.  a dat
1910: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1920: 20 77 69 74 68 20 61 20 5b 73 68 61 72 65 64 20   with a [shared 
1930: 63 61 63 68 65 5d 29 2e 0a 7d 0a 52 45 53 43 4f  cache])..}.RESCO
1940: 44 45 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44  DE SQLITE_LOCKED
1950: 20 20 20 20 20 20 20 36 20 20 7b 0a 20 20 54 68         6  {.  Th
1960: 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20  e SQLITE_LOCKED 
1970: 72 65 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69  result code indi
1980: 63 61 74 65 73 20 74 68 61 74 20 61 20 77 72 69  cates that a wri
1990: 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 63 6f 75  te operation cou
19a0: 6c 64 20 6e 6f 74 0a 20 20 70 72 6f 63 65 65 64  ld not.  proceed
19b0: 20 62 65 63 61 75 73 65 20 6f 66 20 61 20 63 6f   because of a co
19c0: 6e 66 6c 69 63 74 20 77 69 74 68 69 6e 20 74 68  nflict within th
19d0: 65 20 73 61 6d 65 20 5b 64 61 74 61 62 61 73 65  e same [database
19e0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 72 0a   connection] or.
19f0: 20 20 61 20 63 6f 6e 66 6c 69 63 74 20 77 69 74    a conflict wit
1a00: 68 20 61 20 64 69 66 66 65 72 65 6e 74 20 64 61  h a different da
1a10: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
1a20: 6e 20 74 68 61 74 20 75 73 65 73 20 61 20 5b 73  n that uses a [s
1a30: 68 61 72 65 64 20 63 61 63 68 65 5d 2e 0a 20 20  hared cache]..  
1a40: 3c 70 3e 0a 20 20 46 6f 72 20 65 78 61 6d 70 6c  <p>.  For exampl
1a50: 65 2c 20 61 20 5b 44 52 4f 50 20 54 41 42 4c 45  e, a [DROP TABLE
1a60: 5d 20 73 74 61 74 65 6d 65 6e 74 20 63 61 6e 6e  ] statement cann
1a70: 6f 74 20 62 65 20 72 75 6e 20 77 68 69 6c 65 20  ot be run while 
1a80: 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64 0a 20  another thread. 
1a90: 20 69 73 20 72 65 61 64 69 6e 67 20 66 72 6f 6d   is reading from
1aa0: 20 74 68 61 74 20 74 61 62 6c 65 20 6f 6e 20 74   that table on t
1ab0: 68 65 20 73 61 6d 65 20 5b 64 61 74 61 62 61 73  he same [databas
1ac0: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 62 65  e connection] be
1ad0: 63 61 75 73 65 20 0a 20 20 64 72 6f 70 70 69 6e  cause .  droppin
1ae0: 67 20 74 68 65 20 74 61 62 6c 65 20 77 6f 75 6c  g the table woul
1af0: 64 20 64 65 6c 65 74 65 20 74 68 65 20 74 61 62  d delete the tab
1b00: 6c 65 20 6f 75 74 20 66 72 6f 6d 20 75 6e 64 65  le out from unde
1b10: 72 20 74 68 65 20 63 6f 6e 63 75 72 72 65 6e 74  r the concurrent
1b20: 0a 20 20 72 65 61 64 65 72 2e 0a 20 20 3c 70 3e  .  reader..  <p>
1b30: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4c 4f  .  The SQLITE_LO
1b40: 43 4b 45 44 20 72 65 73 75 6c 74 20 63 6f 64 65  CKED result code
1b50: 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20 5b 53   differs from [S
1b60: 51 4c 49 54 45 5f 42 55 53 59 5d 20 69 6e 20 74  QLITE_BUSY] in t
1b70: 68 61 74 0a 20 20 53 51 4c 49 54 45 5f 4c 4f 43  hat.  SQLITE_LOC
1b80: 4b 45 44 20 69 6e 64 69 63 61 74 65 73 20 61 20  KED indicates a 
1b90: 63 6f 6e 66 6c 69 63 74 20 6f 6e 20 74 68 65 20  conflict on the 
1ba0: 73 61 6d 65 20 5b 64 61 74 61 62 61 73 65 20 63  same [database c
1bb0: 6f 6e 6e 65 63 74 69 6f 6e 5d 0a 20 20 28 6f 72  onnection].  (or
1bc0: 20 6f 6e 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e   on a connection
1bd0: 20 77 69 74 68 20 61 20 5b 73 68 61 72 65 64 20   with a [shared 
1be0: 63 61 63 68 65 5d 29 20 77 68 65 72 65 61 73 20  cache]) whereas 
1bf0: 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 69 6e  [SQLITE_BUSY] in
1c00: 64 69 63 61 74 65 73 0a 20 20 61 20 63 6f 6e 66  dicates.  a conf
1c10: 6c 69 63 74 20 77 69 74 68 20 61 20 64 69 66 66  lict with a diff
1c20: 65 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 63  erent database c
1c30: 6f 6e 6e 65 63 74 69 6f 6e 2c 20 70 72 6f 62 61  onnection, proba
1c40: 62 6c 79 20 69 6e 20 61 20 64 69 66 66 65 72 65  bly in a differe
1c50: 6e 74 0a 20 20 70 72 6f 63 65 73 73 2e 0a 7d 0a  nt.  process..}.
1c60: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 4e  RESCODE SQLITE_N
1c70: 4f 4d 45 4d 20 20 20 20 20 20 20 20 37 20 20 20  OMEM        7   
1c80: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4e  {.  The SQLITE_N
1c90: 4f 4d 45 4d 20 72 65 73 75 6c 74 20 63 6f 64 65  OMEM result code
1ca0: 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20   indicates that 
1cb0: 53 51 4c 69 74 65 20 77 61 73 20 75 6e 61 62 6c  SQLite was unabl
1cc0: 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 0a 20 20  e to allocate.  
1cd0: 61 6c 6c 20 74 68 65 20 6d 65 6d 6f 72 79 20 69  all the memory i
1ce0: 74 20 6e 65 65 64 65 64 20 74 6f 20 63 6f 6d 70  t needed to comp
1cf0: 6c 65 74 65 20 74 68 65 20 6f 70 65 72 61 74 69  lete the operati
1d00: 6f 6e 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f  on.  In other wo
1d10: 72 64 73 2c 20 61 6e 0a 20 20 69 6e 74 65 72 6e  rds, an.  intern
1d20: 61 6c 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69  al call to [sqli
1d30: 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 6f 72  te3_malloc()] or
1d40: 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   [sqlite3_reallo
1d50: 63 28 29 5d 20 68 61 73 20 66 61 69 6c 65 64 20  c()] has failed 
1d60: 69 6e 0a 20 20 61 20 63 61 73 65 20 77 68 65 72  in.  a case wher
1d70: 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 65 69  e the memory bei
1d80: 6e 67 20 61 6c 6c 6f 63 61 74 65 64 20 77 61 73  ng allocated was
1d90: 20 72 65 71 75 69 72 65 64 20 69 6e 20 6f 72 64   required in ord
1da0: 65 72 20 74 6f 20 63 6f 6e 74 69 6e 75 65 0a 20  er to continue. 
1db0: 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 2e 0a   the operation..
1dc0: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
1dd0: 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20 20 38 20  _READONLY     8 
1de0: 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45    {.  The SQLITE
1df0: 5f 52 45 41 44 4f 4e 4c 59 20 72 65 73 75 6c 74  _READONLY result
1e00: 20 63 6f 64 65 20 69 73 20 72 65 74 75 72 6e 65   code is returne
1e10: 64 20 77 68 65 6e 20 61 6e 20 61 74 74 65 6d 70  d when an attemp
1e20: 74 20 69 73 20 6d 61 64 65 20 74 6f 20 0a 20 20  t is made to .  
1e30: 61 6c 74 65 72 20 73 6f 6d 65 20 64 61 74 61 20  alter some data 
1e40: 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 63 75  for which the cu
1e50: 72 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 63  rrent database c
1e60: 6f 6e 6e 65 63 74 69 6f 6e 20 64 6f 65 73 20 6e  onnection does n
1e70: 6f 74 20 68 61 76 65 0a 20 20 77 72 69 74 65 20  ot have.  write 
1e80: 70 65 72 6d 69 73 73 69 6f 6e 2e 0a 7d 0a 52 45  permission..}.RE
1e90: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4e 54  SCODE SQLITE_INT
1ea0: 45 52 52 55 50 54 20 20 20 20 39 20 20 20 7b 0a  ERRUPT    9   {.
1eb0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4e 54    The SQLITE_INT
1ec0: 45 52 52 55 50 54 20 72 65 73 75 6c 74 20 63 6f  ERRUPT result co
1ed0: 64 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  de indicates tha
1ee0: 74 20 61 6e 20 6f 70 65 72 61 74 69 6f 6e 20 77  t an operation w
1ef0: 61 73 0a 20 20 69 6e 74 65 72 72 75 70 74 65 64  as.  interrupted
1f00: 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33   by the [sqlite3
1f10: 5f 69 6e 74 65 72 72 75 70 74 28 29 5d 20 69 6e  _interrupt()] in
1f20: 74 65 72 66 61 63 65 2e 0a 7d 0a 52 45 53 43 4f  terface..}.RESCO
1f30: 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 20  DE SQLITE_IOERR 
1f40: 20 20 20 20 20 20 31 30 20 20 20 7b 0a 20 20 54        10   {.  T
1f50: 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 20  he SQLITE_IOERR 
1f60: 72 65 73 75 6c 74 20 63 6f 64 65 20 73 61 79 73  result code says
1f70: 20 74 68 61 74 20 74 68 65 20 6f 70 65 72 61 74   that the operat
1f80: 69 6f 6e 20 63 6f 75 6c 64 20 6e 6f 74 20 66 69  ion could not fi
1f90: 6e 69 73 68 0a 20 20 62 65 63 61 75 73 65 20 74  nish.  because t
1fa0: 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
1fb0: 74 65 6d 20 72 65 70 6f 72 74 65 64 20 61 6e 20  tem reported an 
1fc0: 49 2f 4f 20 65 72 72 6f 72 2e 20 20 54 68 69 73  I/O error.  This
1fd0: 20 63 6f 75 6c 64 20 6d 65 61 6e 0a 20 20 61 20   could mean.  a 
1fe0: 68 61 72 64 77 61 72 65 20 6d 61 6c 66 75 6e 63  hardware malfunc
1ff0: 74 69 6f 6e 2e 20 20 4f 72 20 70 65 72 68 61 70  tion.  Or perhap
2000: 73 20 61 20 72 65 6d 6f 76 61 62 6c 65 20 73 74  s a removable st
2010: 6f 72 61 67 65 20 64 65 76 69 63 65 20 73 75 63  orage device suc
2020: 68 20 61 73 0a 20 20 61 20 55 53 42 20 74 68 75  h as.  a USB thu
2030: 6d 62 20 64 72 69 76 65 20 6f 6e 20 77 68 69 63  mb drive on whic
2040: 68 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  h the database f
2050: 69 6c 65 20 69 73 20 73 74 6f 72 65 64 20 77 61  ile is stored wa
2060: 73 20 72 65 6d 6f 76 65 64 20 69 6e 0a 20 20 74  s removed in.  t
2070: 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 61 20 77  he middle of a w
2080: 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 2e 0a  rite operation..
2090: 20 20 3c 70 3e 0a 20 20 41 20 66 75 6c 6c 20 64    <p>.  A full d
20a0: 69 73 6b 20 64 72 69 76 65 20 77 69 6c 6c 20 6e  isk drive will n
20b0: 6f 72 6d 61 6c 6c 79 20 67 69 76 65 20 61 6e 20  ormally give an 
20c0: 53 51 4c 49 54 45 5f 46 55 4c 4c 20 65 72 72 6f  SQLITE_FULL erro
20d0: 72 20 72 61 74 68 65 72 20 74 68 61 6e 0a 20 20  r rather than.  
20e0: 61 6e 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 20  an SQLITE_IOERR 
20f0: 65 72 72 6f 72 2e 0a 20 20 3c 70 3e 0a 20 20 54  error..  <p>.  T
2100: 68 65 72 65 20 61 72 65 20 6d 61 6e 79 20 64 69  here are many di
2110: 66 66 65 72 65 6e 74 20 65 78 74 65 6e 64 65 64  fferent extended
2120: 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 66 6f   result codes fo
2130: 72 20 49 2f 4f 20 65 72 72 6f 72 73 20 74 68 61  r I/O errors tha
2140: 74 0a 20 20 69 64 65 6e 74 69 66 79 20 74 68 65  t.  identify the
2150: 20 73 70 65 63 69 66 69 63 20 49 2f 4f 20 6f 70   specific I/O op
2160: 65 72 61 74 69 6f 6e 20 74 68 61 74 20 66 61 69  eration that fai
2170: 6c 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  led..}.RESCODE S
2180: 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 20 20  QLITE_CORRUPT   
2190: 20 20 31 31 20 20 20 7b 0a 20 20 54 68 65 20 53    11   {.  The S
21a0: 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 72 65  QLITE_CORRUPT re
21b0: 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61  sult code indica
21c0: 74 65 73 20 74 68 61 74 20 74 68 65 20 64 61 74  tes that the dat
21d0: 61 62 61 73 65 20 66 69 6c 65 20 68 61 73 0a 20  abase file has. 
21e0: 20 62 65 65 6e 20 63 6f 72 72 75 70 74 65 64 2e   been corrupted.
21f0: 20 20 53 65 65 20 74 68 65 20 5b 48 6f 77 20 54    See the [How T
2200: 6f 20 43 6f 72 72 75 70 74 20 59 6f 75 72 20 44  o Corrupt Your D
2210: 61 74 61 62 61 73 65 20 46 69 6c 65 73 5d 20 66  atabase Files] f
2220: 6f 72 0a 20 20 66 75 72 74 68 65 72 20 64 69 73  or.  further dis
2230: 63 75 73 73 69 6f 6e 20 6f 6e 20 68 6f 77 20 63  cussion on how c
2240: 6f 72 72 75 70 74 69 6f 6e 20 63 61 6e 20 6f 63  orruption can oc
2250: 63 75 72 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  cur..}.RESCODE S
2260: 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 20  QLITE_NOTFOUND  
2270: 20 20 31 32 20 20 20 7b 0a 20 20 54 68 65 20 53    12   {.  The S
2280: 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 72  QLITE_NOTFOUND r
2290: 65 73 75 6c 74 20 63 6f 64 65 20 69 73 20 75 73  esult code is us
22a0: 65 64 20 69 6e 20 74 77 6f 20 63 6f 6e 74 65 78  ed in two contex
22b0: 74 73 2e 0a 20 20 53 51 4c 49 54 45 5f 4e 4f 54  ts..  SQLITE_NOT
22c0: 46 4f 55 4e 44 20 63 61 6e 20 62 65 20 72 65 74  FOUND can be ret
22d0: 75 72 6e 65 64 20 62 79 20 74 68 65 20 5b 73 71  urned by the [sq
22e0: 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
22f0: 6f 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a  ol()] interface.
2300: 20 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68    to indicate th
2310: 61 74 20 74 68 65 20 5b 66 69 6c 65 20 63 6f 6e  at the [file con
2320: 74 72 6f 6c 20 6f 70 63 6f 64 65 5d 20 70 61 73  trol opcode] pas
2330: 73 65 64 20 61 73 20 74 68 65 20 74 68 69 72 64  sed as the third
2340: 20 61 72 67 75 6d 65 6e 74 0a 20 20 77 61 73 20   argument.  was 
2350: 6e 6f 74 20 72 65 63 6f 67 6e 69 7a 65 64 20 62  not recognized b
2360: 79 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  y the underlying
2370: 20 5b 56 46 53 5d 2e 0a 20 20 53 51 4c 49 54 45   [VFS]..  SQLITE
2380: 5f 4e 4f 54 46 4f 55 4e 44 20 63 61 6e 20 61 6c  _NOTFOUND can al
2390: 73 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 62  so be returned b
23a0: 79 20 74 68 65 20 78 53 65 74 53 79 73 74 65 6d  y the xSetSystem
23b0: 43 61 6c 6c 28 29 20 6d 65 74 68 6f 64 20 6f 66  Call() method of
23c0: 0a 20 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 76  .  an [sqlite3_v
23d0: 66 73 5d 20 6f 62 6a 65 63 74 2e 0a 20 20 3c 70  fs] object..  <p
23e0: 3e 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4e  >.  The SQLITE_N
23f0: 4f 54 46 4f 55 4e 44 20 72 65 73 75 6c 74 20 63  OTFOUND result c
2400: 6f 64 65 20 69 73 20 61 6c 73 6f 20 75 73 65 64  ode is also used
2410: 0a 20 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79  .  internally by
2420: 20 74 68 65 20 53 51 4c 69 74 65 20 69 6d 70 6c   the SQLite impl
2430: 65 6d 65 6e 74 61 74 69 6f 6e 2c 20 62 75 74 20  ementation, but 
2440: 74 68 6f 73 65 20 69 6e 74 65 72 6e 61 6c 20 75  those internal u
2450: 73 65 73 20 61 72 65 0a 20 20 6e 6f 74 20 65 78  ses are.  not ex
2460: 70 6f 73 65 64 20 74 6f 20 74 68 65 20 61 70 70  posed to the app
2470: 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 52 45 53 43  lication..}.RESC
2480: 4f 44 45 20 53 51 4c 49 54 45 5f 46 55 4c 4c 20  ODE SQLITE_FULL 
2490: 20 20 20 20 20 20 20 31 33 20 20 20 7b 0a 20 20         13   {.  
24a0: 54 68 65 20 53 51 4c 49 54 45 5f 46 55 4c 4c 20  The SQLITE_FULL 
24b0: 72 65 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69  result code indi
24c0: 63 61 74 65 73 20 74 68 61 74 20 61 20 77 72 69  cates that a wri
24d0: 74 65 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6f 6d  te could not com
24e0: 70 6c 65 74 65 0a 20 20 62 65 63 61 75 73 65 20  plete.  because 
24f0: 74 68 65 20 64 69 73 6b 20 69 73 20 66 75 6c 6c  the disk is full
2500: 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 69  .  Note that thi
2510: 73 20 65 72 72 6f 72 20 63 61 6e 20 6f 63 63 75  s error can occu
2520: 72 20 77 68 65 6e 20 74 72 79 69 6e 67 0a 20 20  r when trying.  
2530: 74 6f 20 77 72 69 74 65 20 69 6e 66 6f 72 6d 61  to write informa
2540: 74 69 6f 6e 20 69 6e 74 6f 20 74 68 65 20 6d 61  tion into the ma
2550: 69 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  in database file
2560: 2c 20 6f 72 20 69 74 20 63 61 6e 20 61 6c 73 6f  , or it can also
2570: 0a 20 20 6f 63 63 75 72 20 77 68 65 6e 20 77 72  .  occur when wr
2580: 69 74 69 6e 67 20 69 6e 74 6f 20 5b 74 65 6d 70  iting into [temp
2590: 6f 72 61 72 79 20 64 69 73 6b 20 66 69 6c 65 73  orary disk files
25a0: 5d 2e 0a 20 20 3c 70 3e 0a 20 20 53 6f 6d 65 74  ]..  <p>.  Somet
25b0: 69 6d 65 73 20 61 70 70 6c 69 63 61 74 69 6f 6e  imes application
25c0: 73 20 65 6e 63 6f 75 6e 74 65 72 20 74 68 69 73  s encounter this
25d0: 20 65 72 72 6f 72 20 65 76 65 6e 20 74 68 6f 75   error even thou
25e0: 67 68 20 74 68 65 72 65 20 69 73 20 61 6e 0a 20  gh there is an. 
25f0: 20 61 62 75 6e 64 61 6e 63 65 20 6f 66 20 70 72   abundance of pr
2600: 69 6d 61 72 79 20 64 69 73 6b 20 73 70 61 63 65  imary disk space
2610: 20 62 65 63 61 75 73 65 20 74 68 65 20 65 72 72   because the err
2620: 6f 72 20 6f 63 63 75 72 73 20 77 68 65 6e 20 77  or occurs when w
2630: 72 69 74 69 6e 67 0a 20 20 69 6e 74 6f 20 5b 74  riting.  into [t
2640: 65 6d 70 6f 72 61 72 79 20 64 69 73 6b 20 66 69  emporary disk fi
2650: 6c 65 73 5d 20 6f 6e 20 61 20 73 79 73 74 65 6d  les] on a system
2660: 20 77 68 65 72 65 20 74 65 6d 70 6f 72 61 72 79   where temporary
2670: 20 66 69 6c 65 73 20 61 72 65 20 73 74 6f 72 65   files are store
2680: 64 0a 20 20 6f 6e 20 61 20 73 65 70 61 72 61 74  d.  on a separat
2690: 65 20 70 61 72 74 69 74 69 6f 6e 20 77 69 74 68  e partition with
26a0: 20 6d 75 63 68 20 6c 65 73 73 20 73 70 61 63 65   much less space
26b0: 20 74 68 61 74 20 74 68 65 20 70 72 69 6d 61 72   that the primar
26c0: 79 20 64 69 73 6b 2e 0a 7d 0a 52 45 53 43 4f 44  y disk..}.RESCOD
26d0: 45 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45  E SQLITE_CANTOPE
26e0: 4e 20 20 20 20 31 34 20 20 20 7b 0a 20 20 54 68  N    14   {.  Th
26f0: 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45  e SQLITE_CANTOPE
2700: 4e 20 72 65 73 75 6c 74 20 63 6f 64 65 20 69 6e  N result code in
2710: 64 69 63 61 74 65 73 20 74 68 61 74 20 53 51 4c  dicates that SQL
2720: 69 74 65 20 77 61 73 20 75 6e 61 62 6c 65 20 74  ite was unable t
2730: 6f 0a 20 20 6f 70 65 6e 20 61 20 66 69 6c 65 2e  o.  open a file.
2740: 20 20 54 68 65 20 66 69 6c 65 20 69 6e 20 71 75    The file in qu
2750: 65 73 74 69 6f 6e 20 6d 69 67 68 74 20 62 65 20  estion might be 
2760: 61 20 70 72 69 6d 61 72 79 20 64 61 74 61 62 61  a primary databa
2770: 73 65 20 66 69 6c 65 0a 20 20 6f 72 20 6f 6e 20  se file.  or on 
2780: 6f 66 20 73 65 76 65 72 61 6c 20 5b 74 65 6d 70  of several [temp
2790: 6f 72 61 72 79 20 64 69 73 6b 20 66 69 6c 65 73  orary disk files
27a0: 5d 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  ]..}.RESCODE SQL
27b0: 49 54 45 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20  ITE_PROTOCOL    
27c0: 31 35 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c  15   {.  The SQL
27d0: 49 54 45 5f 50 52 4f 54 4f 43 4f 4c 20 72 65 73  ITE_PROTOCOL res
27e0: 75 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74  ult code indicat
27f0: 65 73 20 61 20 70 72 6f 62 6c 65 6d 20 77 69 74  es a problem wit
2800: 68 20 74 68 65 20 66 69 6c 65 20 6c 6f 63 6b 69  h the file locki
2810: 6e 67 0a 20 20 70 72 6f 74 6f 63 6f 6c 20 75 73  ng.  protocol us
2820: 65 64 20 62 79 20 53 51 4c 69 74 65 2e 20 20 54  ed by SQLite.  T
2830: 68 65 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43  he SQLITE_PROTOC
2840: 4f 4c 20 65 72 72 6f 72 20 69 73 20 63 75 72 72  OL error is curr
2850: 65 6e 74 6c 79 20 6f 6e 6c 79 0a 20 20 72 65 74  ently only.  ret
2860: 75 72 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67  urned when using
2870: 20 5b 57 41 4c 20 6d 6f 64 65 5d 20 61 6e 64 20   [WAL mode] and 
2880: 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 74  attempting to st
2890: 61 72 74 20 61 20 6e 65 77 20 74 72 61 6e 73 61  art a new transa
28a0: 63 74 69 6f 6e 2e 0a 20 20 54 68 65 72 65 20 69  ction..  There i
28b0: 73 20 61 20 72 61 63 65 20 63 6f 6e 64 69 74 69  s a race conditi
28c0: 6f 6e 20 74 68 61 74 20 63 61 6e 20 6f 63 63 75  on that can occu
28d0: 72 20 77 68 65 6e 20 74 77 6f 20 73 65 70 61 72  r when two separ
28e0: 61 74 65 20 0a 20 20 5b 64 61 74 61 62 61 73 65  ate .  [database
28f0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 62 6f   connections] bo
2900: 74 68 20 74 72 79 20 74 6f 20 73 74 61 72 74 20  th try to start 
2910: 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 74  a transaction at
2920: 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 0a 20   the same time. 
2930: 20 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 20   in [WAL mode]. 
2940: 20 54 68 65 20 6c 6f 73 65 72 20 6f 66 20 74 68   The loser of th
2950: 65 20 72 61 63 65 20 62 61 63 6b 73 20 6f 66 66  e race backs off
2960: 20 61 6e 64 20 74 72 69 65 73 20 61 67 61 69 6e   and tries again
2970: 2c 20 61 66 74 65 72 0a 20 20 61 20 62 72 69 65  , after.  a brie
2980: 66 20 64 65 6c 61 79 2e 20 20 49 66 20 74 68 65  f delay.  If the
2990: 20 73 61 6d 65 20 63 6f 6e 6e 65 63 74 69 6f 6e   same connection
29a0: 20 6c 6f 73 65 73 20 74 68 65 20 6c 6f 63 6b 69   loses the locki
29b0: 6e 67 20 72 61 63 65 20 64 6f 7a 65 6e 73 0a 20  ng race dozens. 
29c0: 20 6f 66 20 74 69 6d 65 73 20 6f 76 65 72 20 61   of times over a
29d0: 20 73 70 61 6e 20 6f 66 20 6d 75 6c 74 69 70 6c   span of multipl
29e0: 65 20 73 65 63 6f 6e 64 73 2c 20 69 74 20 77 69  e seconds, it wi
29f0: 6c 6c 20 65 76 65 6e 74 75 61 6c 6c 79 20 67 69  ll eventually gi
2a00: 76 65 20 75 70 20 61 6e 64 0a 20 20 72 65 74 75  ve up and.  retu
2a10: 72 6e 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43  rn SQLITE_PROTOC
2a20: 4f 4c 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f  OL.  The SQLITE_
2a30: 50 52 4f 54 4f 43 4f 4c 20 65 72 72 6f 72 20 73  PROTOCOL error s
2a40: 68 6f 75 6c 64 20 61 70 70 65 61 72 20 69 6e 20  hould appear in 
2a50: 70 72 61 63 74 69 63 65 0a 20 20 76 65 72 79 2c  practice.  very,
2a60: 20 76 65 72 79 20 72 61 72 65 6c 79 2c 20 61 6e   very rarely, an
2a70: 64 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 72  d only when ther
2a80: 65 20 61 72 65 20 6d 61 6e 79 20 73 65 70 61 72  e are many separ
2a90: 61 74 65 20 70 72 6f 63 65 73 73 65 73 20 61 6c  ate processes al
2aa0: 6c 0a 20 20 63 6f 6d 70 65 74 69 6e 67 20 69 6e  l.  competing in
2ab0: 74 65 6e 73 65 6c 79 20 74 6f 20 77 72 69 74 65  tensely to write
2ac0: 20 74 6f 20 74 68 65 20 73 61 6d 65 20 64 61 74   to the same dat
2ad0: 61 62 61 73 65 2e 0a 7d 0a 52 45 53 43 4f 44 45  abase..}.RESCODE
2ae0: 20 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20   SQLITE_EMPTY   
2af0: 20 20 20 20 31 36 20 20 20 7b 0a 20 20 54 68 65      16   {.  The
2b00: 20 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 72 65   SQLITE_EMPTY re
2b10: 73 75 6c 74 20 63 6f 64 65 20 6f 72 69 67 69 6e  sult code origin
2b20: 61 6c 6c 79 20 6d 65 61 6e 74 20 74 68 61 74 20  ally meant that 
2b30: 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  a database file 
2b40: 77 61 73 0a 20 20 65 6d 70 74 79 20 61 6e 64 20  was.  empty and 
2b50: 68 65 6c 64 20 6e 6f 20 63 6f 6e 74 65 6e 74 2e  held no content.
2b60: 20 20 54 68 69 73 20 72 65 73 75 6c 74 20 63 6f    This result co
2b70: 64 65 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20  de is no longer 
2b80: 75 73 65 64 2c 20 62 75 74 20 6d 69 67 68 74 0a  used, but might.
2b90: 20 20 62 65 20 72 65 75 73 65 64 20 69 6e 20 73    be reused in s
2ba0: 6f 6d 65 20 66 75 74 75 72 65 20 72 65 6c 65 61  ome future relea
2bb0: 73 65 20 6f 66 20 53 51 4c 69 74 65 2e 0a 7d 0a  se of SQLite..}.
2bc0: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 53  RESCODE SQLITE_S
2bd0: 43 48 45 4d 41 20 20 20 20 20 20 31 37 20 20 20  CHEMA      17   
2be0: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 53  {.  The SQLITE_S
2bf0: 43 48 45 4d 41 20 72 65 73 75 6c 74 20 63 6f 64  CHEMA result cod
2c00: 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74  e indicates that
2c10: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63   the database sc
2c20: 68 65 6d 61 0a 20 20 68 61 73 20 63 68 61 6e 67  hema.  has chang
2c30: 65 64 2e 20 20 54 68 69 73 20 72 65 73 75 6c 74  ed.  This result
2c40: 20 63 6f 64 65 20 63 61 6e 20 62 65 20 72 65 74   code can be ret
2c50: 75 72 6e 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69  urned from [sqli
2c60: 74 65 33 5f 73 74 65 70 28 29 5d 20 66 6f 72 0a  te3_step()] for.
2c70: 20 20 61 20 5b 70 72 65 70 61 72 65 64 20 73 74    a [prepared st
2c80: 61 74 65 6d 65 6e 74 5d 20 74 68 61 74 20 77 61  atement] that wa
2c90: 73 20 67 65 6e 65 72 61 74 65 64 20 75 73 69 6e  s generated usin
2ca0: 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  g [sqlite3_prepa
2cb0: 72 65 28 29 5d 20 6f 72 0a 20 20 5b 73 71 6c 69  re()] or.  [sqli
2cc0: 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d  te3_prepare16()]
2cd0: 2e 20 20 49 66 20 74 68 65 20 64 61 74 61 62 61  .  If the databa
2ce0: 73 65 20 73 63 68 65 6d 61 20 77 61 73 20 63 68  se schema was ch
2cf0: 61 6e 67 65 64 20 62 79 20 73 6f 6d 65 20 6f 74  anged by some ot
2d00: 68 65 72 0a 20 20 70 72 6f 63 65 73 73 20 69 6e  her.  process in
2d10: 20 62 65 74 77 65 65 6e 20 74 68 65 20 74 69 6d   between the tim
2d20: 65 20 74 68 61 74 20 74 68 65 20 73 74 61 74 65  e that the state
2d30: 6d 65 6e 74 20 77 61 73 20 70 72 65 70 61 72 65  ment was prepare
2d40: 64 20 61 6e 64 20 74 68 65 20 74 69 6d 65 0a 20  d and the time. 
2d50: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 77   the statement w
2d60: 61 73 20 72 75 6e 2c 20 74 68 69 73 20 65 72 72  as run, this err
2d70: 6f 72 20 63 61 6e 20 72 65 73 75 6c 74 2e 0a 20  or can result.. 
2d80: 20 3c 70 3e 0a 20 20 49 66 20 61 20 5b 70 72 65   <p>.  If a [pre
2d90: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
2da0: 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 66 72   is generated fr
2db0: 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  om [sqlite3_prep
2dc0: 61 72 65 5f 76 32 28 29 5d 20 74 68 65 6e 0a 20  are_v2()] then. 
2dd0: 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 69   the statement i
2de0: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
2df0: 72 65 2d 70 72 65 70 61 72 65 64 20 69 66 20 74  re-prepared if t
2e00: 68 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65  he schema change
2e10: 73 2c 20 75 70 20 74 6f 0a 20 20 5b 53 51 4c 49  s, up to.  [SQLI
2e20: 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45  TE_MAX_SCHEMA_RE
2e30: 54 52 59 5d 20 74 69 6d 65 73 20 28 64 65 66 61  TRY] times (defa
2e40: 75 6c 74 3a 20 35 30 29 2e 20 20 54 68 65 20 5b  ult: 50).  The [
2e50: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 0a  sqlite3_step()].
2e60: 20 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c    interface will
2e70: 20 6f 6e 6c 79 20 72 65 74 75 72 6e 20 53 51 4c   only return SQL
2e80: 49 54 45 5f 53 43 48 45 4d 41 20 62 61 63 6b 20  ITE_SCHEMA back 
2e90: 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  to the applicati
2ea0: 6f 6e 20 69 66 20 0a 20 20 74 68 65 20 66 61 69  on if .  the fai
2eb0: 6c 75 72 65 20 70 65 72 73 69 73 74 73 20 61 66  lure persists af
2ec0: 74 65 72 20 74 68 65 73 65 20 6d 61 6e 79 20 72  ter these many r
2ed0: 65 74 72 69 65 73 2e 0a 7d 0a 52 45 53 43 4f 44  etries..}.RESCOD
2ee0: 45 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47 20  E SQLITE_TOOBIG 
2ef0: 20 20 20 20 20 31 38 20 20 20 7b 0a 20 20 54 68       18   {.  Th
2f00: 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47 20  e SQLITE_TOOBIG 
2f10: 65 72 72 6f 72 20 63 6f 64 65 20 69 6e 64 69 63  error code indic
2f20: 61 74 65 73 20 74 68 61 74 20 61 20 73 74 72 69  ates that a stri
2f30: 6e 67 20 6f 72 20 42 4c 4f 42 20 77 61 73 0a 20  ng or BLOB was. 
2f40: 20 74 6f 6f 20 6c 61 72 67 65 2e 20 20 54 68 65   too large.  The
2f50: 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d   default maximum
2f60: 20 6c 65 6e 67 74 68 20 6f 66 20 61 20 73 74 72   length of a str
2f70: 69 6e 67 20 6f 72 20 42 4c 4f 42 20 69 6e 20 53  ing or BLOB in S
2f80: 51 4c 69 74 65 20 69 73 0a 20 20 31 2c 30 30 30  QLite is.  1,000
2f90: 2c 30 30 30 2c 30 30 30 20 62 79 74 65 73 2e 20  ,000,000 bytes. 
2fa0: 20 54 68 69 73 20 6d 61 78 69 6d 75 6d 20 6c 65   This maximum le
2fb0: 6e 67 74 68 20 63 61 6e 20 62 65 20 63 68 61 6e  ngth can be chan
2fc0: 67 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74  ged at compile-t
2fd0: 69 6d 65 0a 20 20 75 73 69 6e 67 20 74 68 65 20  ime.  using the 
2fe0: 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47  [SQLITE_MAX_LENG
2ff0: 54 48 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  TH] compile-time
3000: 20 6f 70 74 69 6f 6e 2c 20 6f 72 20 61 74 20 72   option, or at r
3010: 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a 20 20  un-time using.  
3020: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d  the [sqlite3_lim
3030: 69 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 4c  it](db,[SQLITE_L
3040: 49 4d 49 54 5f 4c 45 4e 47 54 48 5d 2c 2e 2e 2e  IMIT_LENGTH],...
3050: 29 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54 68  ) interface.  Th
3060: 65 0a 20 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49  e.  SQLITE_TOOBI
3070: 47 20 65 72 72 6f 72 20 72 65 73 75 6c 74 73 20  G error results 
3080: 77 68 65 6e 20 53 51 4c 69 74 65 20 65 6e 63 6f  when SQLite enco
3090: 75 6e 74 65 72 73 20 61 20 73 74 72 69 6e 67 20  unters a string 
30a0: 6f 72 20 42 4c 4f 42 0a 20 20 74 68 61 74 20 65  or BLOB.  that e
30b0: 78 63 65 65 64 73 20 74 68 65 20 63 6f 6d 70 69  xceeds the compi
30c0: 6c 65 2d 74 69 6d 65 20 6f 72 20 72 75 6e 2d 74  le-time or run-t
30d0: 69 6d 65 20 6c 69 6d 69 74 2e 0a 20 20 3c 70 3e  ime limit..  <p>
30e0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 54 4f  .  The SQLITE_TO
30f0: 4f 42 49 47 20 65 72 72 6f 72 20 63 6f 64 65 20  OBIG error code 
3100: 63 61 6e 20 61 6c 73 6f 20 72 65 73 75 6c 74 20  can also result 
3110: 77 68 65 6e 20 61 6e 20 6f 76 65 72 73 69 7a 65  when an oversize
3120: 64 20 53 51 4c 0a 20 20 73 74 61 74 65 6d 65 6e  d SQL.  statemen
3130: 74 20 69 73 20 70 61 73 73 65 64 20 69 6e 74 6f  t is passed into
3140: 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 73 71 6c   one of the [sql
3150: 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
3160: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 20  )] interfaces.. 
3170: 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e   The maximum len
3180: 67 74 68 20 6f 66 20 61 6e 20 53 51 4c 20 73 74  gth of an SQL st
3190: 61 74 65 6d 65 6e 74 20 64 65 66 61 75 6c 74 73  atement defaults
31a0: 20 74 6f 20 61 20 6d 75 63 68 20 73 6d 61 6c 6c   to a much small
31b0: 65 72 0a 20 20 76 61 6c 75 65 20 6f 66 20 31 2c  er.  value of 1,
31c0: 30 30 30 2c 30 30 30 20 62 79 74 65 73 2e 20 20  000,000 bytes.  
31d0: 54 68 65 20 6d 61 78 69 6d 75 6d 20 53 51 4c 20  The maximum SQL 
31e0: 73 74 61 74 65 6d 65 6e 74 20 6c 65 6e 67 74 68  statement length
31f0: 20 63 61 6e 20 62 65 0a 20 20 73 65 74 20 61 74   can be.  set at
3200: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 75 73   compile-time us
3210: 69 6e 67 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  ing [SQLITE_MAX_
3220: 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 6f 72 20 61  SQL_LENGTH] or a
3230: 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75 73 69  t run-time.  usi
3240: 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69  ng [sqlite3_limi
3250: 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f 4c 49  t](db,[SQLITE_LI
3260: 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 2c  MIT_SQL_LENGTH],
3270: 2e 2e 2e 29 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  ...)..}.RESCODE 
3280: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
3290: 54 20 20 31 39 20 20 20 7b 0a 20 20 54 68 65 20  T  19   {.  The 
32a0: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
32b0: 54 20 65 72 72 6f 72 20 63 6f 64 65 20 6d 65 61  T error code mea
32c0: 6e 73 20 74 68 61 74 20 61 6e 20 53 51 4c 20 63  ns that an SQL c
32d0: 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
32e0: 69 6f 6e 0a 20 20 6f 63 63 75 72 72 65 64 20 77  ion.  occurred w
32f0: 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f 20 70  hile trying to p
3300: 72 6f 63 65 73 73 20 61 6e 20 53 51 4c 20 73 74  rocess an SQL st
3310: 61 74 65 6d 65 6e 74 2e 20 20 41 64 64 69 74 69  atement.  Additi
3320: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
3330: 0a 20 20 61 62 6f 75 74 20 74 68 65 20 66 61 69  .  about the fai
3340: 6c 65 64 20 63 6f 6e 73 74 72 61 69 6e 74 20 63  led constraint c
3350: 61 6e 20 62 65 20 66 6f 75 6e 64 20 62 79 20 63  an be found by c
3360: 6f 6e 73 75 6c 74 69 6e 67 20 74 68 65 0a 20 20  onsulting the.  
3370: 61 63 63 6f 6d 70 61 6e 79 69 6e 67 20 65 72 72  accompanying err
3380: 6f 72 20 6d 65 73 73 61 67 65 20 28 72 65 74 75  or message (retu
3390: 72 6e 65 64 20 76 69 61 20 5b 73 71 6c 69 74 65  rned via [sqlite
33a0: 33 5f 65 72 72 6d 73 67 28 29 5d 20 6f 72 0a 20  3_errmsg()] or. 
33b0: 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67   [sqlite3_errmsg
33c0: 31 36 28 29 5d 29 20 6f 72 20 62 79 20 6c 6f 6f  16()]) or by loo
33d0: 6b 69 6e 67 20 61 74 20 74 68 65 20 5b 65 78 74  king at the [ext
33e0: 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65  ended error code
33f0: 5d 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  ]..}.RESCODE SQL
3400: 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 20 20 20  ITE_MISMATCH    
3410: 32 30 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c  20   {.  The SQL
3420: 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 65 72 72  ITE_MISMATCH err
3430: 6f 72 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65  or code indicate
3440: 73 20 61 20 64 61 74 61 74 79 70 65 20 6d 69 73  s a datatype mis
3450: 6d 61 74 63 68 2e 0a 20 20 3c 70 3e 0a 20 20 53  match..  <p>.  S
3460: 51 4c 69 74 65 20 69 73 20 6e 6f 72 6d 61 6c 6c  QLite is normall
3470: 79 20 76 65 72 79 20 66 6f 72 67 69 76 69 6e 67  y very forgiving
3480: 20 61 62 6f 75 74 20 6d 69 73 6d 61 74 63 68 65   about mismatche
3490: 73 20 62 65 74 77 65 65 6e 20 74 68 65 20 74 79  s between the ty
34a0: 70 65 20 6f 66 0a 20 20 61 20 76 61 6c 75 65 20  pe of.  a value 
34b0: 61 6e 64 20 74 68 65 20 64 65 63 6c 61 72 65 64  and the declared
34c0: 20 74 79 70 65 20 6f 66 20 74 68 65 20 63 6f 6e   type of the con
34d0: 74 61 69 6e 65 72 20 69 6e 20 77 68 69 63 68 20  tainer in which 
34e0: 74 68 61 74 20 76 61 6c 75 65 20 69 73 0a 20 20  that value is.  
34f0: 74 6f 20 62 65 20 73 74 6f 72 65 64 2e 20 20 46  to be stored.  F
3500: 6f 72 20 65 78 61 6d 70 6c 65 2c 20 53 51 4c 69  or example, SQLi
3510: 74 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 61 70  te allows the ap
3520: 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20 73 74 6f  plication to sto
3530: 72 65 0a 20 20 61 20 6c 61 72 67 65 20 42 4c 4f  re.  a large BLO
3540: 42 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20 77 69  B in a column wi
3550: 74 68 20 61 20 64 65 63 6c 61 72 65 64 20 74 79  th a declared ty
3560: 70 65 20 6f 66 20 42 4f 4f 4c 45 41 4e 2e 20 20  pe of BOOLEAN.  
3570: 42 75 74 20 69 6e 20 61 20 66 65 77 0a 20 20 63  But in a few.  c
3580: 61 73 65 73 2c 20 53 51 4c 69 74 65 20 69 73 20  ases, SQLite is 
3590: 73 74 72 69 63 74 20 61 62 6f 75 74 20 74 79 70  strict about typ
35a0: 65 73 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f  es.  The SQLITE_
35b0: 4d 49 53 4d 41 54 43 48 20 65 72 72 6f 72 20 69  MISMATCH error i
35c0: 73 0a 20 20 72 65 74 75 72 6e 65 64 20 69 6e 20  s.  returned in 
35d0: 74 68 6f 73 65 20 66 65 77 20 63 61 73 65 73 20  those few cases 
35e0: 77 68 65 6e 20 74 68 65 20 74 79 70 65 73 20 64  when the types d
35f0: 6f 20 6e 6f 74 20 6d 61 74 63 68 2e 0a 20 20 3c  o not match..  <
3600: 70 3e 0a 20 20 54 68 65 20 5b 72 6f 77 69 64 5d  p>.  The [rowid]
3610: 20 6f 66 20 61 20 74 61 62 6c 65 20 6d 75 73 74   of a table must
3620: 20 62 65 20 61 6e 20 69 6e 74 65 67 65 72 2e 20   be an integer. 
3630: 20 41 74 74 65 6d 70 74 20 74 6f 20 73 65 74 20   Attempt to set 
3640: 74 68 65 20 5b 72 6f 77 69 64 5d 0a 20 20 74 6f  the [rowid].  to
3650: 20 61 6e 79 74 68 69 6e 67 20 6f 74 68 65 72 20   anything other 
3660: 74 68 61 6e 20 61 6e 20 69 6e 74 65 67 65 72 20  than an integer 
3670: 28 6f 72 20 61 20 4e 55 4c 4c 20 77 68 69 63 68  (or a NULL which
3680: 20 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74   will be automat
3690: 69 63 61 6c 6c 79 0a 20 20 63 6f 6e 76 65 72 74  ically.  convert
36a0: 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 65 78 74  ed into the next
36b0: 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 74 65 67   available integ
36c0: 65 72 20 72 6f 77 69 64 29 20 72 65 73 75 6c 74  er rowid) result
36d0: 73 20 69 6e 20 61 6e 0a 20 20 53 51 4c 49 54 45  s in an.  SQLITE
36e0: 5f 4d 49 53 4d 41 54 43 48 20 65 72 72 6f 72 2e  _MISMATCH error.
36f0: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
3700: 45 5f 4d 49 53 55 53 45 20 20 20 20 20 20 32 31  E_MISUSE      21
3710: 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54     {.  The SQLIT
3720: 45 5f 4d 49 53 55 53 45 20 72 65 74 75 72 6e 20  E_MISUSE return 
3730: 63 6f 64 65 20 6d 69 67 68 74 20 62 65 20 72 65  code might be re
3740: 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 61 70  turned if the ap
3750: 70 6c 69 63 61 74 69 6f 6e 20 75 73 65 73 0a 20  plication uses. 
3760: 20 61 6e 79 20 53 51 4c 69 74 65 20 69 6e 74 65   any SQLite inte
3770: 72 66 61 63 65 20 69 6e 20 61 20 77 61 79 20 74  rface in a way t
3780: 68 61 74 20 69 73 20 75 6e 64 65 66 69 6e 65 64  hat is undefined
3790: 20 6f 72 20 75 6e 73 75 70 70 6f 72 74 65 64 2e   or unsupported.
37a0: 20 20 46 6f 72 0a 20 20 65 78 61 6d 70 6c 65 2c    For.  example,
37b0: 20 75 73 69 6e 67 20 61 20 5b 70 72 65 70 61 72   using a [prepar
37c0: 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 61 66  ed statement] af
37d0: 74 65 72 20 74 68 61 74 20 70 72 65 70 61 72 65  ter that prepare
37e0: 64 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73 0a  d statement has.
37f0: 20 20 62 65 65 6e 20 5b 73 71 6c 69 74 65 33 5f    been [sqlite3_
3800: 66 69 6e 61 6c 69 7a 65 7c 66 69 6e 61 6c 69 7a  finalize|finaliz
3810: 65 64 5d 20 6d 69 67 68 74 20 72 65 73 75 6c 74  ed] might result
3820: 20 69 6e 20 61 6e 20 53 51 4c 49 54 45 5f 4d 49   in an SQLITE_MI
3830: 53 55 53 45 20 65 72 72 6f 72 2e 0a 20 20 3c 70  SUSE error..  <p
3840: 3e 0a 20 20 53 51 4c 69 74 65 20 74 72 69 65 73  >.  SQLite tries
3850: 20 74 6f 20 64 65 74 65 63 74 20 6d 69 73 75 73   to detect misus
3860: 65 20 61 6e 64 20 72 65 70 6f 72 74 20 74 68 65  e and report the
3870: 20 6d 69 73 75 73 65 20 75 73 69 6e 67 20 74 68   misuse using th
3880: 69 73 20 72 65 73 75 6c 74 20 63 6f 64 65 2e 0a  is result code..
3890: 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65 72 65    However, there
38a0: 20 69 73 20 6e 6f 20 67 75 61 72 61 6e 74 65 65   is no guarantee
38b0: 20 74 68 61 74 20 74 68 65 20 64 65 74 65 63 74   that the detect
38c0: 69 6f 6e 20 6f 66 20 6d 69 73 75 73 65 20 77 69  ion of misuse wi
38d0: 6c 6c 20 62 65 0a 20 20 73 75 63 63 65 73 73 66  ll be.  successf
38e0: 75 6c 2e 20 20 4d 69 73 75 73 65 20 64 65 74 65  ul.  Misuse dete
38f0: 63 74 69 6f 6e 20 69 73 20 70 72 6f 62 61 62 6c  ction is probabl
3900: 69 73 74 69 63 2e 20 20 41 70 70 6c 69 63 61 74  istic.  Applicat
3910: 69 6f 6e 73 20 73 68 6f 75 6c 64 0a 20 20 6e 65  ions should.  ne
3920: 76 65 72 20 64 65 70 65 6e 64 20 6f 6e 20 61 6e  ver depend on an
3930: 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 72   SQLITE_MISUSE r
3940: 65 74 75 72 6e 20 76 61 6c 75 65 2e 0a 20 20 3c  eturn value..  <
3950: 70 3e 0a 20 20 49 66 20 53 51 4c 69 74 65 20 65  p>.  If SQLite e
3960: 76 65 72 20 72 65 74 75 72 6e 73 20 53 51 4c 49  ver returns SQLI
3970: 54 45 5f 4d 49 53 55 53 45 20 66 72 6f 6d 20 61  TE_MISUSE from a
3980: 6e 79 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68  ny interface, th
3990: 61 74 20 6d 65 61 6e 73 20 74 68 61 74 0a 20 20  at means that.  
39a0: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
39b0: 69 73 20 69 6e 63 6f 72 72 65 63 74 6c 79 20 63  is incorrectly c
39c0: 6f 64 65 64 20 61 6e 64 20 6e 65 65 64 73 20 74  oded and needs t
39d0: 6f 20 62 65 20 66 69 78 65 64 2e 20 20 44 6f 20  o be fixed.  Do 
39e0: 6e 6f 74 20 73 68 69 70 0a 20 20 61 6e 20 61 70  not ship.  an ap
39f0: 70 6c 69 63 61 74 69 6f 6e 20 74 68 61 74 20 73  plication that s
3a00: 6f 6d 65 74 69 6d 65 73 20 72 65 74 75 72 6e 73  ometimes returns
3a10: 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 66   SQLITE_MISUSE f
3a20: 72 6f 6d 20 61 20 73 74 61 6e 64 61 72 64 0a 20  rom a standard. 
3a30: 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63   SQLite interfac
3a40: 65 20 62 65 63 61 75 73 65 20 74 68 61 74 20 61  e because that a
3a50: 70 70 6c 69 63 61 74 69 6f 6e 20 63 6f 6e 74 61  pplication conta
3a60: 69 6e 73 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20  ins potentially 
3a70: 73 65 72 69 6f 75 73 20 62 75 67 73 2e 0a 7d 0a  serious bugs..}.
3a80: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 4e  RESCODE SQLITE_N
3a90: 4f 4c 46 53 20 20 20 20 20 20 20 32 32 20 20 20  OLFS       22   
3aa0: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4e  {.  The SQLITE_N
3ab0: 4f 4c 46 53 20 65 72 72 6f 72 20 63 61 6e 20 62  OLFS error can b
3ac0: 65 20 72 65 74 75 72 6e 65 64 20 6f 6e 20 73 79  e returned on sy
3ad0: 73 74 65 6d 73 20 74 68 61 74 20 64 6f 20 6e 6f  stems that do no
3ae0: 74 20 73 75 70 70 6f 72 74 0a 20 20 6c 61 72 67  t support.  larg
3af0: 65 20 66 69 6c 65 73 20 77 68 65 6e 20 74 68 65  e files when the
3b00: 20 64 61 74 61 62 61 73 65 20 67 72 6f 77 73 20   database grows 
3b10: 74 6f 20 62 65 20 6c 61 72 67 65 72 20 74 68 61  to be larger tha
3b20: 6e 20 77 68 61 74 20 74 68 65 20 66 69 6c 65 73  n what the files
3b30: 79 73 74 65 6d 0a 20 20 63 61 6e 20 68 61 6e 64  ystem.  can hand
3b40: 6c 65 2e 20 20 22 4e 4f 4c 46 53 22 20 73 74 61  le.  "NOLFS" sta
3b50: 6e 64 73 20 66 6f 72 20 22 4e 4f 20 4c 61 72 67  nds for "NO Larg
3b60: 65 20 46 69 6c 65 20 53 75 70 70 6f 72 74 22 2e  e File Support".
3b70: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
3b80: 45 5f 41 55 54 48 20 20 20 20 20 20 20 20 32 33  E_AUTH        23
3b90: 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54     {.  The SQLIT
3ba0: 45 5f 41 55 54 48 20 65 72 72 6f 72 20 69 73 20  E_AUTH error is 
3bb0: 72 65 74 75 72 6e 65 64 20 77 68 65 6e 20 74 68  returned when th
3bc0: 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  e.  [sqlite3_set
3bd0: 5f 61 75 74 68 6f 72 69 7a 65 72 20 7c 20 61 75  _authorizer | au
3be0: 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63  thorizer callbac
3bf0: 6b 5d 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  k] indicates tha
3c00: 74 20 61 6e 0a 20 20 53 51 4c 20 73 74 61 74 65  t an.  SQL state
3c10: 6d 65 6e 74 20 62 65 69 6e 67 20 70 72 65 70 61  ment being prepa
3c20: 72 65 64 20 69 73 20 6e 6f 74 20 61 75 74 68 6f  red is not autho
3c30: 72 69 7a 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45  rized..}.RESCODE
3c40: 20 53 51 4c 49 54 45 5f 46 4f 52 4d 41 54 20 20   SQLITE_FORMAT  
3c50: 20 20 20 20 32 34 20 20 20 7b 0a 20 20 54 68 65      24   {.  The
3c60: 20 53 51 4c 49 54 45 5f 46 4f 52 4d 41 54 20 65   SQLITE_FORMAT e
3c70: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 6e 6f 74  rror code is not
3c80: 20 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20   currently used 
3c90: 62 79 20 53 51 4c 69 74 65 2e 0a 7d 0a 52 45 53  by SQLite..}.RES
3ca0: 43 4f 44 45 20 53 51 4c 49 54 45 5f 52 41 4e 47  CODE SQLITE_RANG
3cb0: 45 20 20 20 20 20 20 20 32 35 20 20 20 7b 0a 20  E       25   {. 
3cc0: 20 54 68 65 20 53 51 4c 49 54 45 5f 52 41 4e 47   The SQLITE_RANG
3cd0: 45 20 65 72 72 6f 72 20 69 6e 64 69 63 65 73 20  E error indices 
3ce0: 74 68 61 74 20 74 68 65 20 70 61 72 61 6d 65 74  that the paramet
3cf0: 65 72 20 6e 75 6d 62 65 72 20 61 72 67 75 6d 65  er number argume
3d00: 6e 74 0a 20 20 74 6f 20 6f 6e 65 20 6f 66 20 74  nt.  to one of t
3d10: 68 65 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  he [sqlite3_bind
3d20: 5f 62 6c 6f 62 7c 73 71 6c 69 74 65 33 5f 62 69  _blob|sqlite3_bi
3d30: 6e 64 5d 20 72 6f 75 74 69 6e 65 73 20 69 73 20  nd] routines is 
3d40: 6f 75 74 20 6f 66 0a 20 20 72 61 6e 67 65 2e 0a  out of.  range..
3d50: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
3d60: 5f 4e 4f 54 41 44 42 20 20 20 20 20 20 32 36 20  _NOTADB      26 
3d70: 20 20 7b 0a 20 20 57 68 65 6e 20 61 74 74 65 6d    {.  When attem
3d80: 70 74 69 6e 67 20 74 6f 20 6f 70 65 6e 20 61 20  pting to open a 
3d90: 66 69 6c 65 2c 20 74 68 65 20 53 51 4c 49 54 45  file, the SQLITE
3da0: 5f 4e 4f 54 41 44 42 20 65 72 72 6f 72 20 69 6e  _NOTADB error in
3db0: 64 69 63 61 74 65 73 20 74 68 61 74 0a 20 20 74  dicates that.  t
3dc0: 68 65 20 66 69 6c 65 20 62 65 69 6e 67 20 6f 70  he file being op
3dd0: 65 6e 65 64 20 64 6f 65 73 20 6e 6f 74 20 61 70  ened does not ap
3de0: 70 65 61 72 20 74 6f 20 62 65 20 61 6e 20 53 51  pear to be an SQ
3df0: 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 66 69  Lite database fi
3e00: 6c 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  le..}.RESCODE SQ
3e10: 4c 49 54 45 5f 4e 4f 54 49 43 45 20 20 20 20 20  LITE_NOTICE     
3e20: 20 32 37 20 20 20 7b 0a 20 20 54 68 65 20 53 51   27   {.  The SQ
3e30: 4c 49 54 45 5f 4e 4f 54 49 43 45 20 72 65 73 75  LITE_NOTICE resu
3e40: 6c 74 20 63 6f 64 65 20 69 73 20 6e 6f 74 20 72  lt code is not r
3e50: 65 74 75 72 6e 65 64 20 62 79 20 61 6e 79 20 43  eturned by any C
3e60: 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 2e 0a  /C++ interface..
3e70: 20 20 48 6f 77 65 76 65 72 2c 20 53 51 4c 49 54    However, SQLIT
3e80: 45 5f 4e 4f 54 49 43 45 20 28 6f 72 20 72 61 74  E_NOTICE (or rat
3e90: 68 65 72 20 6f 6e 65 20 6f 66 20 69 74 73 20 5b  her one of its [
3ea0: 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63  extended error c
3eb0: 6f 64 65 73 5d 29 0a 20 20 69 73 20 73 6f 6d 65  odes]).  is some
3ec0: 74 69 6d 65 73 20 75 73 65 64 20 61 73 20 74 68  times used as th
3ed0: 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
3ee0: 20 69 6e 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f   in an [sqlite3_
3ef0: 6c 6f 67 28 29 5d 20 63 61 6c 6c 62 61 63 6b 0a  log()] callback.
3f00: 20 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68    to indicate th
3f10: 61 74 20 61 6e 20 75 6e 75 73 75 61 6c 20 6f 70  at an unusual op
3f20: 65 72 61 74 69 6f 6e 20 69 73 20 74 61 6b 69 6e  eration is takin
3f30: 67 20 70 6c 61 63 65 2e 0a 7d 0a 52 45 53 43 4f  g place..}.RESCO
3f40: 44 45 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e  DE SQLITE_WARNIN
3f50: 47 20 20 20 20 20 32 38 20 20 20 7b 0a 20 20 54  G     28   {.  T
3f60: 68 65 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e  he SQLITE_WARNIN
3f70: 47 20 72 65 73 75 6c 74 20 63 6f 64 65 20 69 73  G result code is
3f80: 20 6e 6f 74 20 72 65 74 75 72 6e 65 64 20 62 79   not returned by
3f90: 20 61 6e 79 20 43 2f 43 2b 2b 20 69 6e 74 65 72   any C/C++ inter
3fa0: 66 61 63 65 2e 0a 20 20 48 6f 77 65 76 65 72 2c  face..  However,
3fb0: 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 20   SQLITE_WARNING 
3fc0: 28 6f 72 20 72 61 74 68 65 72 20 6f 6e 65 20 6f  (or rather one o
3fd0: 66 20 69 74 73 20 5b 65 78 74 65 6e 64 65 64 20  f its [extended 
3fe0: 65 72 72 6f 72 20 63 6f 64 65 73 5d 29 0a 20 20  error codes]).  
3ff0: 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 75 73 65  is sometimes use
4000: 64 20 61 73 20 74 68 65 20 66 69 72 73 74 20 61  d as the first a
4010: 72 67 75 6d 65 6e 74 20 69 6e 20 61 6e 20 5b 73  rgument in an [s
4020: 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20 63 61  qlite3_log()] ca
4030: 6c 6c 62 61 63 6b 0a 20 20 74 6f 20 69 6e 64 69  llback.  to indi
4040: 63 61 74 65 20 74 68 61 74 20 61 6e 20 75 6e 75  cate that an unu
4050: 73 75 61 6c 20 61 6e 64 20 70 6f 73 73 69 62 6c  sual and possibl
4060: 79 20 69 6c 6c 2d 61 64 76 69 73 65 64 20 6f 70  y ill-advised op
4070: 65 72 61 74 69 6f 6e 20 69 73 0a 20 20 74 61 6b  eration is.  tak
4080: 69 6e 67 20 70 6c 61 63 65 2e 0a 7d 0a 52 45 53  ing place..}.RES
4090: 43 4f 44 45 20 53 51 4c 49 54 45 5f 52 4f 57 20  CODE SQLITE_ROW 
40a0: 20 20 20 20 20 20 20 20 31 30 30 20 20 7b 0a 20          100  {. 
40b0: 20 54 68 65 20 53 51 4c 49 54 45 5f 52 4f 57 20   The SQLITE_ROW 
40c0: 72 65 73 75 6c 74 20 63 6f 64 65 20 72 65 74 75  result code retu
40d0: 72 6e 65 64 20 62 79 0a 20 20 5b 73 71 6c 69 74  rned by.  [sqlit
40e0: 65 33 5f 73 74 65 70 28 29 5d 20 69 6e 64 69 63  e3_step()] indic
40f0: 61 74 65 73 20 74 68 61 74 20 61 6e 6f 74 68 65  ates that anothe
4100: 72 20 72 6f 77 20 6f 66 20 6f 75 74 70 75 74 20  r row of output 
4110: 69 73 20 61 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a  is available..}.
4120: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 44  RESCODE SQLITE_D
4130: 4f 4e 45 20 20 20 20 20 20 20 20 31 30 31 20 20  ONE        101  
4140: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44  {.  The SQLITE_D
4150: 4f 4e 45 20 72 65 73 75 6c 74 20 63 6f 64 65 20  ONE result code 
4160: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61  indicates that a
4170: 6e 20 6f 70 65 72 61 74 69 6f 6e 20 68 61 73 20  n operation has 
4180: 63 6f 6d 70 6c 65 74 65 64 2e 0a 20 20 54 68 65  completed..  The
4190: 20 53 51 4c 49 54 45 5f 44 4f 4e 45 20 72 65 73   SQLITE_DONE res
41a0: 75 6c 74 20 63 6f 64 65 20 69 73 20 6d 6f 73 74  ult code is most
41b0: 20 63 6f 6d 6d 6f 6e 6c 79 20 73 65 65 6e 20 61   commonly seen a
41c0: 73 20 61 20 72 65 74 75 72 6e 20 76 61 6c 75 65  s a return value
41d0: 0a 20 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  .  from [sqlite3
41e0: 5f 73 74 65 70 28 29 5d 20 69 6e 64 69 63 61 74  _step()] indicat
41f0: 69 6e 67 20 74 68 61 74 20 74 68 65 20 53 51 4c  ing that the SQL
4200: 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20 72   statement has r
4210: 75 6e 20 74 6f 0a 20 20 63 6f 6d 70 6c 65 74 69  un to.  completi
4220: 6f 6e 2e 20 20 42 75 74 20 53 51 4c 49 54 45 5f  on.  But SQLITE_
4230: 44 4f 4e 45 20 63 61 6e 20 61 6c 73 6f 20 62 65  DONE can also be
4240: 20 72 65 74 75 72 6e 65 64 20 62 79 20 6f 74 68   returned by oth
4250: 65 72 20 6d 75 6c 74 69 2d 73 74 65 70 0a 20 20  er multi-step.  
4260: 69 6e 74 65 72 66 61 63 65 73 20 73 75 63 68 20  interfaces such 
4270: 61 73 20 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b  as [sqlite3_back
4280: 75 70 5f 73 74 65 70 28 29 5d 2e 0a 7d 0a 52 45  up_step()]..}.RE
4290: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45  SCODE SQLITE_IOE
42a0: 52 52 5f 52 45 41 44 20 20 20 20 20 20 20 20 20  RR_READ         
42b0: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45       {SQLITE_IOE
42c0: 52 52 20 7c 20 28 31 3c 3c 38 29 7d 20 7b 0a 20  RR | (1<<8)} {. 
42d0: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
42e0: 52 5f 52 45 41 44 20 65 72 72 6f 72 20 63 6f 64  R_READ error cod
42f0: 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70  e is an [ext-v-p
4300: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
4310: 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b  or code].  for [
4320: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e  SQLITE_IOERR] in
4330: 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20  dicating an I/O 
4340: 65 72 72 6f 72 20 69 6e 20 74 68 65 20 5b 56 46  error in the [VF
4350: 53 5d 20 6c 61 79 65 72 0a 20 20 77 68 69 6c 65  S] layer.  while
4360: 20 74 72 79 69 6e 67 20 74 6f 20 72 65 61 64 20   trying to read 
4370: 66 72 6f 6d 20 61 20 66 69 6c 65 20 6f 6e 20 64  from a file on d
4380: 69 73 6b 2e 20 20 54 68 69 73 20 65 72 72 6f 72  isk.  This error
4390: 20 6d 69 67 68 74 20 72 65 73 75 6c 74 0a 20 20   might result.  
43a0: 66 72 6f 6d 20 61 20 68 61 72 64 77 61 72 65 20  from a hardware 
43b0: 6d 61 6c 66 75 6e 63 74 69 6f 6e 20 6f 72 20 62  malfunction or b
43c0: 65 63 61 75 73 65 20 61 20 66 69 6c 65 73 79 73  ecause a filesys
43d0: 74 65 6d 20 63 61 6d 65 20 75 6e 6d 6f 75 6e 74  tem came unmount
43e0: 65 64 0a 20 20 77 68 69 6c 65 20 74 68 65 20 66  ed.  while the f
43f0: 69 6c 65 20 77 61 73 20 6f 70 65 6e 2e 0a 7d 0a  ile was open..}.
4400: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49  RESCODE SQLITE_I
4410: 4f 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20  OERR_SHORT_READ 
4420: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49         {SQLITE_I
4430: 4f 45 52 52 20 7c 20 28 32 3c 3c 38 29 7d 20 7b  OERR | (2<<8)} {
4440: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  .  The SQLITE_IO
4450: 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20 65  ERR_SHORT_READ e
4460: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20  rror code is an 
4470: 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65  [ext-v-prim|exte
4480: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d  nded error code]
4490: 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49  .  for [SQLITE_I
44a0: 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67  OERR] indicating
44b0: 20 74 68 61 74 20 61 20 72 65 61 64 20 61 74 74   that a read att
44c0: 65 6d 70 74 20 69 6e 20 74 68 65 20 5b 56 46 53  empt in the [VFS
44d0: 5d 20 6c 61 79 65 72 0a 20 20 77 61 73 20 75 6e  ] layer.  was un
44e0: 61 62 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 61  able to obtain a
44f0: 73 20 6d 61 6e 79 20 62 79 74 65 73 20 61 73 20  s many bytes as 
4500: 77 61 73 20 72 65 71 75 65 73 74 65 64 2e 20 20  was requested.  
4510: 54 68 69 73 20 6d 69 67 68 74 20 62 65 0a 20 20  This might be.  
4520: 64 75 65 20 74 6f 20 61 20 74 72 75 6e 63 61 74  due to a truncat
4530: 65 64 20 66 69 6c 65 2e 0a 7d 0a 52 45 53 43 4f  ed file..}.RESCO
4540: 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  DE SQLITE_IOERR_
4550: 57 52 49 54 45 20 20 20 20 20 20 20 20 20 20 20  WRITE           
4560: 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    {SQLITE_IOERR 
4570: 7c 20 28 33 3c 3c 38 29 7d 20 7b 0a 20 20 54 68  | (3<<8)} {.  Th
4580: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 57  e SQLITE_IOERR_W
4590: 52 49 54 45 20 65 72 72 6f 72 20 63 6f 64 65 20  RITE error code 
45a0: 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69  is an [ext-v-pri
45b0: 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72  m|extended error
45c0: 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51   code].  for [SQ
45d0: 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69  LITE_IOERR] indi
45e0: 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72  cating an I/O er
45f0: 72 6f 72 20 69 6e 20 74 68 65 20 5b 56 46 53 5d  ror in the [VFS]
4600: 20 6c 61 79 65 72 0a 20 20 77 68 69 6c 65 20 74   layer.  while t
4610: 72 79 69 6e 67 20 74 6f 20 77 72 69 74 65 20 69  rying to write i
4620: 6e 74 6f 20 61 20 66 69 6c 65 20 6f 6e 20 64 69  nto a file on di
4630: 73 6b 2e 20 20 54 68 69 73 20 65 72 72 6f 72 20  sk.  This error 
4640: 6d 69 67 68 74 20 72 65 73 75 6c 74 0a 20 20 66  might result.  f
4650: 72 6f 6d 20 61 20 68 61 72 64 77 61 72 65 20 6d  rom a hardware m
4660: 61 6c 66 75 6e 63 74 69 6f 6e 20 6f 72 20 62 65  alfunction or be
4670: 63 61 75 73 65 20 61 20 66 69 6c 65 73 79 73 74  cause a filesyst
4680: 65 6d 20 63 61 6d 65 20 75 6e 6d 6f 75 6e 74 65  em came unmounte
4690: 64 0a 20 20 77 68 69 6c 65 20 74 68 65 20 66 69  d.  while the fi
46a0: 6c 65 20 77 61 73 20 6f 70 65 6e 2e 20 20 54 68  le was open.  Th
46b0: 69 73 20 65 72 72 6f 72 20 73 68 6f 75 6c 64 20  is error should 
46c0: 6e 6f 74 20 6f 63 63 75 72 20 69 66 20 74 68 65  not occur if the
46d0: 20 66 69 6c 65 73 79 73 74 65 6d 0a 20 20 69 73   filesystem.  is
46e0: 20 66 75 6c 6c 20 61 73 20 74 68 65 72 65 20 69   full as there i
46f0: 73 20 61 20 73 65 70 61 72 61 74 65 20 65 72 72  s a separate err
4700: 6f 72 20 63 6f 64 65 20 28 53 51 4c 49 54 45 5f  or code (SQLITE_
4710: 46 55 4c 4c 29 20 66 6f 72 20 74 68 61 74 20 70  FULL) for that p
4720: 75 72 70 6f 73 65 2e 0a 7d 0a 52 45 53 43 4f 44  urpose..}.RESCOD
4730: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46  E SQLITE_IOERR_F
4740: 53 59 4e 43 20 20 20 20 20 20 20 20 20 20 20 20  SYNC            
4750: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
4760: 20 28 34 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (4<<8)} {.  The
4770: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53   SQLITE_IOERR_FS
4780: 59 4e 43 20 65 72 72 6f 72 20 63 6f 64 65 20 69  YNC error code i
4790: 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d  s an [ext-v-prim
47a0: 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  |extended error 
47b0: 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c  code].  for [SQL
47c0: 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63  ITE_IOERR] indic
47d0: 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72  ating an I/O err
47e0: 6f 72 20 69 6e 20 74 68 65 20 5b 56 46 53 5d 20  or in the [VFS] 
47f0: 6c 61 79 65 72 0a 20 20 77 68 69 6c 65 20 74 72  layer.  while tr
4800: 79 69 6e 67 20 74 6f 20 66 6c 75 73 68 20 70 72  ying to flush pr
4810: 65 76 69 6f 75 73 6c 79 20 77 72 69 74 74 65 6e  eviously written
4820: 20 63 6f 6e 74 65 6e 74 20 6f 75 74 20 6f 66 20   content out of 
4830: 4f 53 20 61 6e 64 2f 6f 72 0a 20 20 64 69 73 6b  OS and/or.  disk
4840: 2d 63 6f 6e 74 72 6f 6c 20 62 75 66 66 65 72 73  -control buffers
4850: 20 61 6e 64 20 69 6e 74 6f 20 70 65 72 73 69 73   and into persis
4860: 74 65 6e 74 20 73 74 6f 72 61 67 65 2e 20 20 49  tent storage.  I
4870: 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 0a 20  n other words,. 
4880: 20 74 68 69 73 20 63 6f 64 65 20 69 6e 64 69 63   this code indic
4890: 61 74 65 73 20 61 20 70 72 6f 62 6c 65 6d 20 77  ates a problem w
48a0: 69 74 68 20 74 68 65 20 66 73 79 6e 63 28 29 20  ith the fsync() 
48b0: 73 79 73 74 65 6d 20 63 61 6c 6c 20 69 6e 20 75  system call in u
48c0: 6e 69 78 0a 20 20 6f 72 20 74 68 65 20 46 6c 75  nix.  or the Flu
48d0: 73 68 46 69 6c 65 42 75 66 66 65 72 73 28 29 20  shFileBuffers() 
48e0: 73 79 73 74 65 6d 20 63 61 6c 6c 20 69 6e 20 77  system call in w
48f0: 69 6e 64 6f 77 73 2e 0a 7d 0a 52 45 53 43 4f 44  indows..}.RESCOD
4900: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44  E SQLITE_IOERR_D
4910: 49 52 5f 46 53 59 4e 43 20 20 20 20 20 20 20 20  IR_FSYNC        
4920: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
4930: 20 28 35 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (5<<8)} {.  The
4940: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49   SQLITE_IOERR_DI
4950: 52 5f 46 53 59 4e 43 20 65 72 72 6f 72 20 63 6f  R_FSYNC error co
4960: 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  de is an [ext-v-
4970: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
4980: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
4990: 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69  [SQLITE_IOERR] i
49a0: 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f  ndicating an I/O
49b0: 20 65 72 72 6f 72 20 69 6e 20 74 68 65 20 5b 56   error in the [V
49c0: 46 53 5d 20 6c 61 79 65 72 0a 20 20 77 68 69 6c  FS] layer.  whil
49d0: 65 20 74 72 79 69 6e 67 20 74 6f 20 69 6e 76 6f  e trying to invo
49e0: 6b 65 20 66 73 79 6e 63 28 29 20 6f 6e 20 61 20  ke fsync() on a 
49f0: 64 69 72 65 63 74 6f 72 79 2e 20 20 54 68 65 20  directory.  The 
4a00: 75 6e 69 78 20 5b 56 46 53 5d 20 61 74 74 65 6d  unix [VFS] attem
4a10: 70 74 73 0a 20 20 74 6f 20 66 73 79 6e 63 28 29  pts.  to fsync()
4a20: 20 64 69 72 65 63 74 6f 72 69 65 73 20 61 66 74   directories aft
4a30: 65 72 20 63 72 65 61 74 69 6e 67 20 6f 72 20 64  er creating or d
4a40: 65 6c 65 74 69 6e 67 20 63 65 72 74 61 69 6e 20  eleting certain 
4a50: 66 69 6c 65 73 20 74 6f 0a 20 20 65 6e 73 75 72  files to.  ensur
4a60: 65 20 74 68 61 74 20 74 68 6f 73 65 20 66 69 6c  e that those fil
4a70: 65 73 20 77 69 6c 6c 20 73 74 69 6c 6c 20 61 70  es will still ap
4a80: 70 65 61 72 20 69 6e 20 74 68 65 20 66 69 6c 65  pear in the file
4a90: 73 79 73 74 65 6d 20 66 6f 6c 6c 6f 77 69 6e 67  system following
4aa0: 0a 20 20 61 20 70 6f 77 65 72 20 6c 6f 73 73 20  .  a power loss 
4ab0: 6f 72 20 73 79 73 74 65 6d 20 63 72 61 73 68 2e  or system crash.
4ac0: 20 20 54 68 69 73 20 65 72 72 6f 72 20 63 6f 64    This error cod
4ad0: 65 20 69 6e 64 69 63 61 74 65 73 20 61 20 70 72  e indicates a pr
4ae0: 6f 62 6c 65 6d 0a 20 20 61 74 74 65 6d 70 74 69  oblem.  attempti
4af0: 6e 67 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68  ng to perform th
4b00: 61 74 20 66 73 79 6e 63 28 29 2e 0a 7d 0a 52 45  at fsync()..}.RE
4b10: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45  SCODE SQLITE_IOE
4b20: 52 52 5f 54 52 55 4e 43 41 54 45 20 20 20 20 20  RR_TRUNCATE     
4b30: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45       {SQLITE_IOE
4b40: 52 52 20 7c 20 28 36 3c 3c 38 29 7d 20 7b 0a 20  RR | (6<<8)} {. 
4b50: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
4b60: 52 5f 54 52 55 4e 43 41 54 45 20 65 72 72 6f 72  R_TRUNCATE error
4b70: 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74   code is an [ext
4b80: 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64  -v-prim|extended
4b90: 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66   error code].  f
4ba0: 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52  or [SQLITE_IOERR
4bb0: 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20  ] indicating an 
4bc0: 49 2f 4f 20 65 72 72 6f 72 20 69 6e 20 74 68 65  I/O error in the
4bd0: 20 5b 56 46 53 5d 20 6c 61 79 65 72 0a 20 20 77   [VFS] layer.  w
4be0: 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f 20 74  hile trying to t
4bf0: 72 75 6e 63 61 74 65 20 61 20 66 69 6c 65 20 74  runcate a file t
4c00: 6f 20 61 20 73 6d 61 6c 6c 65 72 20 73 69 7a 65  o a smaller size
4c10: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
4c20: 54 45 5f 49 4f 45 52 52 5f 46 53 54 41 54 20 20  TE_IOERR_FSTAT  
4c30: 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49             {SQLI
4c40: 54 45 5f 49 4f 45 52 52 20 7c 20 28 37 3c 3c 38  TE_IOERR | (7<<8
4c50: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
4c60: 45 5f 49 4f 45 52 52 5f 46 53 54 41 54 20 65 72  E_IOERR_FSTAT er
4c70: 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b  ror code is an [
4c80: 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e  ext-v-prim|exten
4c90: 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a  ded error code].
4ca0: 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f    for [SQLITE_IO
4cb0: 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20  ERR] indicating 
4cc0: 61 6e 20 49 2f 4f 20 65 72 72 6f 72 20 69 6e 20  an I/O error in 
4cd0: 74 68 65 20 5b 56 46 53 5d 20 6c 61 79 65 72 0a  the [VFS] layer.
4ce0: 20 20 77 68 69 6c 65 20 74 72 79 69 6e 67 20 74    while trying t
4cf0: 6f 20 69 6e 76 6f 6b 65 20 66 73 74 61 74 28 29  o invoke fstat()
4d00: 20 28 6f 72 20 74 68 65 20 65 71 75 69 76 61 6c   (or the equival
4d10: 65 6e 74 29 20 6f 6e 20 61 20 66 69 6c 65 20 69  ent) on a file i
4d20: 6e 20 6f 72 64 65 72 0a 20 20 74 6f 20 64 65 74  n order.  to det
4d30: 65 72 6d 69 6e 65 20 69 6e 66 6f 72 6d 61 74 69  ermine informati
4d40: 6f 6e 20 73 75 63 68 20 61 73 20 74 68 65 20 66  on such as the f
4d50: 69 6c 65 20 73 69 7a 65 20 6f 72 20 61 63 63 65  ile size or acce
4d60: 73 73 20 70 65 72 6d 69 73 73 69 6f 6e 73 2e 0a  ss permissions..
4d70: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
4d80: 5f 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b 20 20 20  _IOERR_UNLOCK   
4d90: 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45           {SQLITE
4da0: 5f 49 4f 45 52 52 20 7c 20 28 38 3c 3c 38 29 7d  _IOERR | (8<<8)}
4db0: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
4dc0: 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b 20 65 72 72  IOERR_UNLOCK err
4dd0: 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65  or code is an [e
4de0: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
4df0: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20  ed error code]. 
4e00: 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45   for [SQLITE_IOE
4e10: 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 61  RR] indicating a
4e20: 6e 20 49 2f 4f 20 65 72 72 6f 72 0a 20 20 77 69  n I/O error.  wi
4e30: 74 68 69 6e 20 78 55 6e 6c 6f 63 6b 20 6d 65 74  thin xUnlock met
4e40: 68 6f 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69  hod on the [sqli
4e50: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
4e60: 6f 62 6a 65 63 74 2e 0a 7d 0a 52 45 53 43 4f 44  object..}.RESCOD
4e70: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52  E SQLITE_IOERR_R
4e80: 44 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20  DLOCK           
4e90: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
4ea0: 20 28 39 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (9<<8)} {.  The
4eb0: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 55 4e   SQLITE_IOERR_UN
4ec0: 4c 4f 43 4b 20 65 72 72 6f 72 20 63 6f 64 65 20  LOCK error code 
4ed0: 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69  is an [ext-v-pri
4ee0: 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72  m|extended error
4ef0: 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51   code].  for [SQ
4f00: 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69  LITE_IOERR] indi
4f10: 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72  cating an I/O er
4f20: 72 6f 72 0a 20 20 77 69 74 68 69 6e 20 78 4c 6f  ror.  within xLo
4f30: 63 6b 20 6d 65 74 68 6f 64 20 6f 6e 20 74 68 65  ck method on the
4f40: 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74   [sqlite3_io_met
4f50: 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 77 68 69  hods] object whi
4f60: 6c 65 20 74 72 79 69 6e 67 0a 20 20 74 6f 20 6f  le trying.  to o
4f70: 62 74 61 69 6e 20 61 20 72 65 61 64 20 6c 6f 63  btain a read loc
4f80: 6b 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  k..}.RESCODE SQL
4f90: 49 54 45 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45  ITE_IOERR_DELETE
4fa0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c              {SQL
4fb0: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31 30 3c  ITE_IOERR | (10<
4fc0: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
4fd0: 49 54 45 5f 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b  ITE_IOERR_UNLOCK
4fe0: 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61   error code is a
4ff0: 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78  n [ext-v-prim|ex
5000: 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64  tended error cod
5010: 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45  e].  for [SQLITE
5020: 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69  _IOERR] indicati
5030: 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72 0a  ng an I/O error.
5040: 20 20 77 69 74 68 69 6e 20 78 44 65 6c 65 74 65    within xDelete
5050: 20 6d 65 74 68 6f 64 20 6f 6e 20 74 68 65 20 5b   method on the [
5060: 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a  sqlite3_vfs] obj
5070: 65 63 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ect..}.RESCODE S
5080: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 4c 4f 43  QLITE_IOERR_BLOC
5090: 4b 45 44 20 20 20 20 20 20 20 20 20 20 20 7b 53  KED           {S
50a0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
50b0: 31 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53  1<<8)} {.  The S
50c0: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 4c 4f 43  QLITE_IOERR_BLOC
50d0: 4b 45 44 20 65 72 72 6f 72 20 63 6f 64 65 20 69  KED error code i
50e0: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64  s no longer used
50f0: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
5100: 54 45 5f 49 4f 45 52 52 5f 4e 4f 4d 45 4d 20 20  TE_IOERR_NOMEM  
5110: 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49             {SQLI
5120: 54 45 5f 49 4f 45 52 52 20 7c 20 28 31 32 3c 3c  TE_IOERR | (12<<
5130: 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  8)} {.  The SQLI
5140: 54 45 5f 49 4f 45 52 52 5f 4e 4f 4d 45 4d 20 65  TE_IOERR_NOMEM e
5150: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 73 6f 6d  rror code is som
5160: 65 74 69 6d 65 73 20 72 65 74 75 72 6e 65 64 20  etimes returned 
5170: 62 79 20 74 68 65 20 5b 56 46 53 5d 0a 20 20 6c  by the [VFS].  l
5180: 61 79 65 72 20 74 6f 20 69 6e 64 69 63 61 74 65  ayer to indicate
5190: 20 74 68 61 74 20 61 6e 20 6f 70 65 72 61 74 69   that an operati
51a0: 6f 6e 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20  on could not be 
51b0: 63 6f 6d 70 6c 65 74 65 64 20 64 75 65 20 74 6f  completed due to
51c0: 20 74 68 65 0a 20 20 69 6e 61 62 69 6c 69 74 79   the.  inability
51d0: 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 73 75 66   to allocate suf
51e0: 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 2e 20  ficient memory. 
51f0: 20 54 68 69 73 20 65 72 72 6f 72 20 63 6f 64 65   This error code
5200: 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 0a 20 20 63   is normally.  c
5210: 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 5b 53  onverted into [S
5220: 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 20 62 79 20  QLITE_NOMEM] by 
5230: 74 68 65 20 68 69 67 68 65 72 20 6c 61 79 65 72  the higher layer
5240: 73 20 6f 66 20 53 51 4c 69 74 65 20 62 65 66 6f  s of SQLite befo
5250: 72 65 0a 20 20 62 65 69 6e 67 20 72 65 74 75 72  re.  being retur
5260: 6e 65 64 20 74 6f 20 74 68 65 20 61 70 70 6c 69  ned to the appli
5270: 63 61 74 69 6f 6e 2e 0a 7d 0a 52 45 53 43 4f 44  cation..}.RESCOD
5280: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41  E SQLITE_IOERR_A
5290: 43 43 45 53 53 20 20 20 20 20 20 20 20 20 20 20  CCESS           
52a0: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
52b0: 20 28 31 33 3c 3c 38 29 7d 20 7b 0a 20 20 54 68   (13<<8)} {.  Th
52c0: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41  e SQLITE_IOERR_A
52d0: 43 43 45 53 53 20 65 72 72 6f 72 20 63 6f 64 65  CCESS error code
52e0: 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72   is an [ext-v-pr
52f0: 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f  im|extended erro
5300: 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53  r code].  for [S
5310: 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64  QLITE_IOERR] ind
5320: 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65  icating an I/O e
5330: 72 72 6f 72 0a 20 20 77 69 74 68 69 6e 20 74 68  rror.  within th
5340: 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64  e xAccess method
5350: 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33   on the [sqlite3
5360: 5f 76 66 73 5d 20 6f 62 6a 65 63 74 2e 0a 7d 0a  _vfs] object..}.
5370: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49  RESCODE SQLITE_I
5380: 4f 45 52 52 5f 43 48 45 43 4b 52 45 53 45 52 56  OERR_CHECKRESERV
5390: 45 44 4c 4f 43 4b 20 7b 53 51 4c 49 54 45 5f 49  EDLOCK {SQLITE_I
53a0: 4f 45 52 52 20 7c 20 28 31 34 3c 3c 38 29 7d 20  OERR | (14<<8)} 
53b0: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49  {.  The SQLITE_I
53c0: 4f 45 52 52 5f 43 48 45 43 4b 52 45 53 45 52 56  OERR_CHECKRESERV
53d0: 45 44 4c 4f 43 4b 20 65 72 72 6f 72 20 63 6f 64  EDLOCK error cod
53e0: 65 20 69 73 0a 20 20 61 6e 20 5b 65 78 74 2d 76  e is.  an [ext-v
53f0: 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65  -prim|extended e
5400: 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72  rror code].  for
5410: 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20   [SQLITE_IOERR] 
5420: 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f  indicating an I/
5430: 4f 20 65 72 72 6f 72 0a 20 20 77 69 74 68 69 6e  O error.  within
5440: 20 74 68 65 20 78 43 68 65 63 6b 52 65 73 65 72   the xCheckReser
5450: 76 65 64 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f  vedLock method o
5460: 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  n the [sqlite3_i
5470: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
5480: 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  t..}.RESCODE SQL
5490: 49 54 45 5f 49 4f 45 52 52 5f 4c 4f 43 4b 20 20  ITE_IOERR_LOCK  
54a0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c              {SQL
54b0: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31 35 3c  ITE_IOERR | (15<
54c0: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
54d0: 49 54 45 5f 49 4f 45 52 52 5f 4c 4f 43 4b 20 65  ITE_IOERR_LOCK e
54e0: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20  rror code is an 
54f0: 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65  [ext-v-prim|exte
5500: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d  nded error code]
5510: 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49  .  for [SQLITE_I
5520: 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67  OERR] indicating
5530: 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72 20 69 6e   an I/O error in
5540: 20 74 68 65 20 0a 20 20 61 64 76 69 73 6f 72 79   the .  advisory
5550: 20 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 6c 6f   file locking lo
5560: 67 69 63 2e 0a 20 20 55 73 75 61 6c 6c 79 20 61  gic..  Usually a
5570: 6e 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4c  n SQLITE_IOERR_L
5580: 4f 43 4b 20 65 72 72 6f 72 20 69 6e 64 69 63 61  OCK error indica
5590: 74 65 73 20 61 20 70 72 6f 62 6c 65 6d 20 6f 62  tes a problem ob
55a0: 74 61 69 6e 69 6e 67 0a 20 20 61 20 5b 50 45 4e  taining.  a [PEN
55b0: 44 49 4e 47 20 6c 6f 63 6b 5d 2e 20 20 48 6f 77  DING lock].  How
55c0: 65 76 65 72 20 69 74 20 63 61 6e 20 61 6c 73 6f  ever it can also
55d0: 20 69 6e 64 69 63 61 74 65 20 6d 69 73 63 65 6c   indicate miscel
55e0: 6c 61 6e 65 6f 75 73 0a 20 20 6c 6f 63 6b 69 6e  laneous.  lockin
55f0: 67 20 65 72 72 6f 72 73 20 6f 6e 20 73 6f 6d 65  g errors on some
5600: 20 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 69   of the speciali
5610: 7a 65 64 20 5b 56 46 53 65 73 5d 20 75 73 65 64  zed [VFSes] used
5620: 20 6f 6e 20 4d 61 63 73 2e 0a 7d 0a 52 45 53 43   on Macs..}.RESC
5630: 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ODE SQLITE_IOERR
5640: 5f 43 4c 4f 53 45 20 20 20 20 20 20 20 20 20 20  _CLOSE          
5650: 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52     {SQLITE_IOERR
5660: 20 7c 20 28 31 36 3c 3c 38 29 7d 20 7b 0a 20 20   | (16<<8)} {.  
5670: 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  The SQLITE_IOERR
5680: 5f 41 43 43 45 53 53 20 65 72 72 6f 72 20 63 6f  _ACCESS error co
5690: 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  de is an [ext-v-
56a0: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
56b0: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
56c0: 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69  [SQLITE_IOERR] i
56d0: 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f  ndicating an I/O
56e0: 20 65 72 72 6f 72 0a 20 20 77 69 74 68 69 6e 20   error.  within 
56f0: 74 68 65 20 78 43 6c 6f 73 65 20 6d 65 74 68 6f  the xClose metho
5700: 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74 65  d on the [sqlite
5710: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62  3_io_methods] ob
5720: 6a 65 63 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  ject..}.RESCODE 
5730: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52  SQLITE_IOERR_DIR
5740: 5f 43 4c 4f 53 45 20 20 20 20 20 20 20 20 20 7b  _CLOSE         {
5750: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
5760: 31 37 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  17<<8)} {.  The 
5770: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52  SQLITE_IOERR_DIR
5780: 5f 43 4c 4f 53 45 20 65 72 72 6f 72 20 63 6f 64  _CLOSE error cod
5790: 65 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75  e is no longer u
57a0: 73 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  sed..}.RESCODE S
57b0: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 4f  QLITE_IOERR_SHMO
57c0: 50 45 4e 20 20 20 20 20 20 20 20 20 20 20 7b 53  PEN           {S
57d0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
57e0: 38 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53  8<<8)} {.  The S
57f0: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 4f  QLITE_IOERR_SHMO
5800: 50 45 4e 20 65 72 72 6f 72 20 63 6f 64 65 20 69  PEN error code i
5810: 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d  s an [ext-v-prim
5820: 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  |extended error 
5830: 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c  code].  for [SQL
5840: 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63  ITE_IOERR] indic
5850: 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72  ating an I/O err
5860: 6f 72 0a 20 20 77 69 74 68 69 6e 20 74 68 65 20  or.  within the 
5870: 78 53 68 6d 4d 61 70 20 6d 65 74 68 6f 64 20 6f  xShmMap method o
5880: 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  n the [sqlite3_i
5890: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
58a0: 74 0a 20 20 77 68 69 6c 65 20 74 72 79 69 6e 67  t.  while trying
58b0: 20 74 6f 20 6f 70 65 6e 20 61 20 6e 65 77 20 73   to open a new s
58c0: 68 61 72 65 64 20 6d 65 6d 6f 72 79 20 73 65 67  hared memory seg
58d0: 6d 65 6e 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  ment..}.RESCODE 
58e0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
58f0: 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 7b  SIZE           {
5900: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
5910: 31 39 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  19<<8)} {.  The 
5920: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
5930: 53 49 5a 45 20 65 72 72 6f 72 20 63 6f 64 65 20  SIZE error code 
5940: 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69  is an [ext-v-pri
5950: 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72  m|extended error
5960: 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51   code].  for [SQ
5970: 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69  LITE_IOERR] indi
5980: 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72  cating an I/O er
5990: 72 6f 72 0a 20 20 77 69 74 68 69 6e 20 74 68 65  ror.  within the
59a0: 20 78 53 68 6d 4d 61 70 20 6d 65 74 68 6f 64 20   xShmMap method 
59b0: 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  on the [sqlite3_
59c0: 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65  io_methods] obje
59d0: 63 74 0a 20 20 77 68 69 6c 65 20 74 72 79 69 6e  ct.  while tryin
59e0: 67 20 74 6f 20 72 65 73 69 7a 65 20 61 6e 20 65  g to resize an e
59f0: 78 69 73 74 69 6e 67 20 73 68 61 72 65 64 20 6d  xisting shared m
5a00: 65 6d 6f 72 79 20 73 65 67 6d 65 6e 74 2e 0a 7d  emory segment..}
5a10: 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f  .RESCODE SQLITE_
5a20: 49 4f 45 52 52 5f 53 48 4d 4c 4f 43 4b 20 20 20  IOERR_SHMLOCK   
5a30: 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f          {SQLITE_
5a40: 49 4f 45 52 52 20 7c 20 28 32 30 3c 3c 38 29 7d  IOERR | (20<<8)}
5a50: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
5a60: 49 4f 45 52 52 5f 53 48 4d 4c 4f 43 4b 20 65 72  IOERR_SHMLOCK er
5a70: 72 6f 72 20 63 6f 64 65 20 69 73 20 6e 6f 20 6c  ror code is no l
5a80: 6f 6e 67 65 72 20 75 73 65 64 2e 0a 7d 0a 52 45  onger used..}.RE
5a90: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45  SCODE SQLITE_IOE
5aa0: 52 52 5f 53 48 4d 4d 41 50 20 20 20 20 20 20 20  RR_SHMMAP       
5ab0: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45       {SQLITE_IOE
5ac0: 52 52 20 7c 20 28 32 31 3c 3c 38 29 7d 20 7b 0a  RR | (21<<8)} {.
5ad0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45    The SQLITE_IOE
5ae0: 52 52 5f 53 48 4d 4d 41 50 20 65 72 72 6f 72 20  RR_SHMMAP error 
5af0: 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d  code is an [ext-
5b00: 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20  v-prim|extended 
5b10: 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f  error code].  fo
5b20: 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d  r [SQLITE_IOERR]
5b30: 20 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49   indicating an I
5b40: 2f 4f 20 65 72 72 6f 72 0a 20 20 77 69 74 68 69  /O error.  withi
5b50: 6e 20 74 68 65 20 78 53 68 6d 4d 61 70 20 6d 65  n the xShmMap me
5b60: 74 68 6f 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c  thod on the [sql
5b70: 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d  ite3_io_methods]
5b80: 20 6f 62 6a 65 63 74 0a 20 20 77 68 69 6c 65 20   object.  while 
5b90: 74 72 79 69 6e 67 20 74 6f 20 6d 61 70 20 61 20  trying to map a 
5ba0: 73 68 61 72 65 64 20 6d 65 6d 6f 72 79 20 73 65  shared memory se
5bb0: 67 6d 65 6e 74 20 69 6e 74 6f 20 74 68 65 20 70  gment into the p
5bc0: 72 6f 63 65 73 73 20 61 64 64 72 65 73 73 20 73  rocess address s
5bd0: 70 61 63 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  pace..}.RESCODE 
5be0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 45 45  SQLITE_IOERR_SEE
5bf0: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b  K              {
5c00: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
5c10: 32 32 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  22<<8)} {.  The 
5c20: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 45 45  SQLITE_IOERR_SEE
5c30: 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  K error code is 
5c40: 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65  an [ext-v-prim|e
5c50: 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f  xtended error co
5c60: 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54  de].  for [SQLIT
5c70: 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63 61 74  E_IOERR] indicat
5c80: 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72  ing an I/O error
5c90: 0a 20 20 77 69 74 68 69 6e 20 74 68 65 20 78 52  .  within the xR
5ca0: 65 61 64 20 6f 72 20 78 57 72 69 74 65 20 6d 65  ead or xWrite me
5cb0: 74 68 6f 64 73 20 6f 6e 20 74 68 65 20 5b 73 71  thods on the [sq
5cc0: 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73  lite3_io_methods
5cd0: 5d 20 6f 62 6a 65 63 74 0a 20 20 77 68 69 6c 65  ] object.  while
5ce0: 20 74 72 79 69 6e 67 20 74 6f 20 73 65 65 6b 20   trying to seek 
5cf0: 61 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  a file descripto
5d00: 72 20 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69  r to the beginni
5d10: 6e 67 20 70 6f 69 6e 74 20 6f 66 20 74 68 65 0a  ng point of the.
5d20: 20 20 66 69 6c 65 20 77 68 65 72 65 20 74 68 65    file where the
5d30: 20 72 65 61 64 20 6f 72 20 77 72 69 74 65 20 69   read or write i
5d40: 73 20 74 6f 20 6f 63 63 75 72 2e 0a 7d 0a 52 45  s to occur..}.RE
5d50: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45  SCODE SQLITE_IOE
5d60: 52 52 5f 44 45 4c 45 54 45 5f 4e 4f 45 4e 54 20  RR_DELETE_NOENT 
5d70: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45       {SQLITE_IOE
5d80: 52 52 20 7c 20 28 32 33 3c 3c 38 29 7d 20 7b 0a  RR | (23<<8)} {.
5d90: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45    The SQLITE_IOE
5da0: 52 52 5f 44 45 4c 45 54 45 5f 4e 4f 45 4e 54 20  RR_DELETE_NOENT 
5db0: 65 72 72 6f 72 20 63 6f 64 65 0a 20 20 69 73 20  error code.  is 
5dc0: 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65  an [ext-v-prim|e
5dd0: 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f  xtended error co
5de0: 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54  de].  for [SQLIT
5df0: 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63 61 74  E_IOERR] indicat
5e00: 69 6e 67 20 74 68 61 74 20 74 68 65 0a 20 20 78  ing that the.  x
5e10: 44 65 6c 65 74 65 20 6d 65 74 68 6f 64 20 6f 6e  Delete method on
5e20: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66   the [sqlite3_vf
5e30: 73 5d 20 6f 62 6a 65 63 74 20 66 61 69 6c 65 64  s] object failed
5e40: 20 62 65 63 61 75 73 65 20 74 68 65 0a 20 20 66   because the.  f
5e50: 69 6c 65 20 62 65 69 6e 67 20 64 65 6c 65 74 65  ile being delete
5e60: 64 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74  d does not exist
5e70: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
5e80: 54 45 5f 49 4f 45 52 52 5f 4d 4d 41 50 20 20 20  TE_IOERR_MMAP   
5e90: 20 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49             {SQLI
5ea0: 54 45 5f 49 4f 45 52 52 20 7c 20 28 32 34 3c 3c  TE_IOERR | (24<<
5eb0: 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  8)} {.  The SQLI
5ec0: 54 45 5f 49 4f 45 52 52 5f 53 45 45 4b 20 65 72  TE_IOERR_SEEK er
5ed0: 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b  ror code is an [
5ee0: 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e  ext-v-prim|exten
5ef0: 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a  ded error code].
5f00: 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f    for [SQLITE_IO
5f10: 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20  ERR] indicating 
5f20: 61 6e 20 49 2f 4f 20 65 72 72 6f 72 0a 20 20 77  an I/O error.  w
5f30: 69 74 68 69 6e 20 74 68 65 20 78 46 65 74 63 68  ithin the xFetch
5f40: 20 6f 72 20 78 55 6e 66 65 74 63 68 20 6d 65 74   or xUnfetch met
5f50: 68 6f 64 73 20 6f 6e 20 74 68 65 20 5b 73 71 6c  hods on the [sql
5f60: 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d  ite3_io_methods]
5f70: 20 6f 62 6a 65 63 74 0a 20 20 77 68 69 6c 65 20   object.  while 
5f80: 74 72 79 69 6e 67 20 74 6f 20 6d 61 70 20 6f 72  trying to map or
5f90: 20 75 6e 6d 61 70 20 70 61 72 74 20 6f 66 20 74   unmap part of t
5fa0: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
5fb0: 20 69 6e 74 6f 20 74 68 65 0a 20 20 70 72 6f 63   into the.  proc
5fc0: 65 73 73 20 61 64 64 72 65 73 73 20 73 70 61 63  ess address spac
5fd0: 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  e..}.RESCODE SQL
5fe0: 49 54 45 5f 49 4f 45 52 52 5f 47 45 54 54 45 4d  ITE_IOERR_GETTEM
5ff0: 50 50 41 54 48 20 20 20 20 20 20 20 7b 53 51 4c  PPATH       {SQL
6000: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32 35 3c  ITE_IOERR | (25<
6010: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
6020: 49 54 45 5f 49 4f 45 52 52 5f 53 45 45 4b 20 65  ITE_IOERR_SEEK e
6030: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20  rror code is an 
6040: 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65  [ext-v-prim|exte
6050: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d  nded error code]
6060: 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49  .  for [SQLITE_I
6070: 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67  OERR] indicating
6080: 20 74 68 61 74 20 74 68 65 20 5b 56 46 53 5d 20   that the [VFS] 
6090: 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 64 65 74  is unable to det
60a0: 65 72 6d 69 6e 65 0a 20 20 61 20 73 75 69 74 61  ermine.  a suita
60b0: 62 6c 65 20 64 69 72 65 63 74 6f 72 79 20 69 6e  ble directory in
60c0: 20 77 68 69 63 68 20 74 6f 20 70 6c 61 63 65 20   which to place 
60d0: 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 2e  temporary files.
60e0: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
60f0: 45 5f 49 4f 45 52 52 5f 43 4f 4e 56 50 41 54 48  E_IOERR_CONVPATH
6100: 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54            {SQLIT
6110: 45 5f 49 4f 45 52 52 20 7c 20 28 32 36 3c 3c 38  E_IOERR | (26<<8
6120: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
6130: 45 5f 49 4f 45 52 52 5f 53 45 45 4b 20 65 72 72  E_IOERR_SEEK err
6140: 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65  or code is an [e
6150: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
6160: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20  ed error code]. 
6170: 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45   for [SQLITE_IOE
6180: 52 52 5d 20 75 73 65 64 20 6f 6e 6c 79 20 62 79  RR] used only by
6190: 20 43 79 67 77 69 6e 20 5b 56 46 53 5d 20 61 6e   Cygwin [VFS] an
61a0: 64 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61  d indicating tha
61b0: 74 0a 20 20 74 68 65 20 63 79 67 77 69 6e 5f 63  t.  the cygwin_c
61c0: 6f 6e 76 5f 70 61 74 68 28 29 20 73 79 73 74 65  onv_path() syste
61d0: 6d 20 63 61 6c 6c 20 66 61 69 6c 65 64 2e 0a 20  m call failed.. 
61e0: 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49   See also: [SQLI
61f0: 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 43 4f 4e 56  TE_CANTOPEN_CONV
6200: 50 41 54 48 5d 0a 7d 0a 52 45 53 43 4f 44 45 20  PATH].}.RESCODE 
6210: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 53 48  SQLITE_LOCKED_SH
6220: 41 52 45 44 43 41 43 48 45 20 20 20 20 20 20 7b  AREDCACHE      {
6230: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 7c 20  SQLITE_LOCKED | 
6240: 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (1<<8)} {.  The
6250: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 53   SQLITE_LOCKED_S
6260: 48 41 52 45 44 43 41 43 48 45 20 65 72 72 6f 72  HAREDCACHE error
6270: 20 63 6f 64 65 20 69 73 0a 20 20 61 6e 20 5b 65   code is.  an [e
6280: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
6290: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 20 66  ed error code] f
62a0: 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  or [SQLITE_LOCKE
62b0: 44 5d 0a 20 20 69 6e 64 69 63 61 74 69 6e 67 20  D].  indicating 
62c0: 74 68 61 74 20 74 68 65 20 6c 6f 63 6b 69 6e 67  that the locking
62d0: 20 63 6f 6e 66 6c 69 63 74 20 68 61 73 20 6f 63   conflict has oc
62e0: 63 75 72 72 65 64 20 64 75 65 20 74 6f 20 63 6f  curred due to co
62f0: 6e 74 65 6e 74 69 6f 6e 0a 20 20 77 69 74 68 20  ntention.  with 
6300: 61 20 64 69 66 66 65 72 65 6e 74 20 5b 64 61 74  a different [dat
6310: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
6320: 5d 20 74 68 61 74 20 68 61 70 70 65 6e 73 20 74  ] that happens t
6330: 6f 20 68 6f 6c 64 20 61 20 0a 20 20 5b 73 68 61  o hold a .  [sha
6340: 72 65 64 20 63 61 63 68 65 5d 20 77 69 74 68 20  red cache] with 
6350: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
6360: 6e 65 63 74 69 6f 6e 20 74 6f 20 77 68 69 63 68  nection to which
6370: 20 74 68 65 20 65 72 72 6f 72 20 77 61 73 0a 20   the error was. 
6380: 20 72 65 74 75 72 6e 65 64 2e 20 20 46 6f 72 20   returned.  For 
6390: 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65 20  example, if the 
63a0: 6f 74 68 65 72 20 64 61 74 61 62 61 73 65 20 63  other database c
63b0: 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 68 6f 6c  onnection is hol
63c0: 64 69 6e 67 0a 20 20 61 6e 20 5b 65 78 63 6c 75  ding.  an [exclu
63d0: 73 69 76 65 20 6c 6f 63 6b 5d 20 6f 6e 20 74 68  sive lock] on th
63e0: 65 20 64 61 74 61 62 61 73 65 2c 20 74 68 65 6e  e database, then
63f0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
6400: 6e 6e 65 63 74 69 6f 6e 0a 20 20 74 68 61 74 20  nnection.  that 
6410: 72 65 63 65 69 76 65 73 20 74 68 69 73 20 65 72  receives this er
6420: 72 6f 72 20 77 69 6c 6c 20 62 65 20 75 6e 61 62  ror will be unab
6430: 6c 65 20 74 6f 20 72 65 61 64 20 6f 72 20 77 72  le to read or wr
6440: 69 74 65 20 61 6e 79 20 70 61 72 74 0a 20 20 6f  ite any part.  o
6450: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
6460: 69 6c 65 20 75 6e 6c 65 73 73 20 69 74 20 68 61  ile unless it ha
6470: 73 20 74 68 65 20 5b 72 65 61 64 5f 75 6e 63 6f  s the [read_unco
6480: 6d 6d 69 74 74 65 64 20 70 72 61 67 6d 61 5d 0a  mmitted pragma].
6490: 20 20 65 6e 61 62 6c 65 64 2e 0a 20 20 3c 70 3e    enabled..  <p>
64a0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4c 4f  .  The SQLITE_LO
64b0: 43 4b 45 44 5f 53 48 41 52 45 43 41 43 48 45 20  CKED_SHARECACHE 
64c0: 65 72 72 6f 72 20 63 6f 64 65 20 77 6f 72 6b 73  error code works
64d0: 20 76 65 72 79 20 6d 75 63 68 20 6c 69 6b 65 20   very much like 
64e0: 74 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f 42 55  the.  [SQLITE_BU
64f0: 53 59 5d 20 65 72 72 6f 72 20 63 6f 64 65 20 65  SY] error code e
6500: 78 63 65 70 74 20 74 68 61 74 20 53 51 4c 49 54  xcept that SQLIT
6510: 45 5f 4c 4f 43 4b 45 44 5f 53 48 41 52 45 43 41  E_LOCKED_SHARECA
6520: 43 48 45 20 69 73 0a 20 20 66 6f 72 20 73 65 70  CHE is.  for sep
6530: 61 72 61 74 65 20 64 61 74 61 62 61 73 65 20 63  arate database c
6540: 6f 6e 6e 65 63 74 69 6f 6e 73 20 74 68 61 74 20  onnections that 
6550: 73 68 61 72 65 20 61 20 63 61 63 68 65 20 77 68  share a cache wh
6560: 65 72 65 61 73 20 0a 20 20 53 51 4c 49 54 45 5f  ereas .  SQLITE_
6570: 42 55 53 59 20 69 73 20 66 6f 72 20 74 68 65 20  BUSY is for the 
6580: 6d 75 63 68 20 6d 6f 72 65 20 63 6f 6d 6d 6f 6e  much more common
6590: 20 63 61 73 65 20 6f 66 20 73 65 70 61 72 61 74   case of separat
65a0: 65 20 64 61 74 61 62 61 73 65 0a 20 20 63 6f 6e  e database.  con
65b0: 6e 65 63 74 69 6f 6e 73 20 74 68 61 74 20 64 6f  nections that do
65c0: 20 6e 6f 74 20 73 68 61 72 65 20 74 68 65 20 73   not share the s
65d0: 61 6d 65 20 63 61 63 68 65 2e 20 20 41 6c 73 6f  ame cache.  Also
65e0: 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  , the.  [sqlite3
65f0: 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 29 5d  _busy_handler()]
6600: 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 62 75   and [sqlite3_bu
6610: 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d 20 69 6e  sy_timeout()] in
6620: 74 65 72 66 61 63 65 73 0a 20 20 64 6f 20 6e 6f  terfaces.  do no
6630: 74 20 68 65 6c 70 20 69 6e 20 72 65 73 6f 6c 76  t help in resolv
6640: 69 6e 67 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  ing SQLITE_LOCKE
6650: 44 5f 53 48 41 52 45 44 43 41 43 48 45 20 63 6f  D_SHAREDCACHE co
6660: 6e 66 6c 69 63 74 73 2e 0a 7d 0a 52 45 53 43 4f  nflicts..}.RESCO
6670: 44 45 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 52  DE SQLITE_BUSY_R
6680: 45 43 4f 56 45 52 59 20 20 20 20 20 20 20 20 20  ECOVERY         
6690: 20 20 7b 53 51 4c 49 54 45 5f 42 55 53 59 20 20    {SQLITE_BUSY  
66a0: 20 7c 20 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20   |  (1<<8)} {.  
66b0: 54 68 65 20 53 51 4c 49 54 45 5f 42 55 53 59 5f  The SQLITE_BUSY_
66c0: 52 45 43 4f 56 45 52 59 20 65 72 72 6f 72 20 63  RECOVERY error c
66d0: 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76  ode is an [ext-v
66e0: 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65  -prim|extended e
66f0: 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72  rror code].  for
6700: 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 74   [SQLITE_BUSY] t
6710: 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74 68  hat indicates th
6720: 61 74 20 61 6e 20 6f 70 65 72 61 74 69 6f 6e 20  at an operation 
6730: 63 6f 75 6c 64 20 6e 6f 74 20 70 72 6f 63 65 65  could not procee
6740: 64 0a 20 20 62 65 63 61 75 73 65 20 61 6e 6f 74  d.  because anot
6750: 68 65 72 20 70 72 6f 63 65 73 73 20 69 73 20 62  her process is b
6760: 75 73 79 20 72 65 63 6f 76 65 72 69 6e 67 20 61  usy recovering a
6770: 20 5b 57 41 4c 20 6d 6f 64 65 5d 20 64 61 74 61   [WAL mode] data
6780: 62 61 73 65 20 66 69 6c 65 0a 20 20 66 6f 6c 6c  base file.  foll
6790: 6f 77 69 6e 67 20 61 20 63 72 61 73 68 2e 20 20  owing a crash.  
67a0: 54 68 65 20 53 51 4c 49 54 45 5f 42 55 53 59 5f  The SQLITE_BUSY_
67b0: 52 45 43 4f 56 45 52 59 20 65 72 72 6f 72 20 63  RECOVERY error c
67c0: 6f 64 65 20 6f 6e 6c 79 20 6f 63 63 75 72 73 0a  ode only occurs.
67d0: 20 20 6f 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d 20    on [WAL mode] 
67e0: 64 61 74 61 62 61 73 65 73 2e 0a 7d 0a 52 45 53  databases..}.RES
67f0: 43 4f 44 45 20 53 51 4c 49 54 45 5f 42 55 53 59  CODE SQLITE_BUSY
6800: 5f 53 4e 41 50 53 48 4f 54 20 20 20 20 20 20 20  _SNAPSHOT       
6810: 20 20 20 20 7b 53 51 4c 49 54 45 5f 42 55 53 59      {SQLITE_BUSY
6820: 20 20 20 7c 20 20 28 32 3c 3c 38 29 7d 20 7b 0a     |  (2<<8)} {.
6830: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 42 55 53    The SQLITE_BUS
6840: 59 5f 53 4e 41 50 53 48 4f 54 20 65 72 72 6f 72  Y_SNAPSHOT error
6850: 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74   code is an [ext
6860: 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64  -v-prim|extended
6870: 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66   error code].  f
6880: 6f 72 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  or [SQLITE_BUSY]
6890: 20 74 68 61 74 20 6f 63 63 75 72 73 20 6f 6e 20   that occurs on 
68a0: 5b 57 41 4c 20 6d 6f 64 65 5d 20 64 61 74 61 62  [WAL mode] datab
68b0: 61 73 65 73 20 77 68 65 6e 20 61 20 64 61 74 61  ases when a data
68c0: 62 61 73 65 0a 20 20 63 6f 6e 6e 65 63 74 69 6f  base.  connectio
68d0: 6e 20 74 72 69 65 73 20 74 6f 20 70 72 6f 6d 6f  n tries to promo
68e0: 74 65 20 61 20 72 65 61 64 20 74 72 61 6e 73 61  te a read transa
68f0: 63 74 69 6f 6e 20 69 6e 74 6f 20 61 20 77 72 69  ction into a wri
6900: 74 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 20  te transaction. 
6910: 20 62 75 74 20 66 69 6e 64 73 20 74 68 61 74 20   but finds that 
6920: 61 6e 6f 74 68 65 72 20 5b 64 61 74 61 62 61 73  another [databas
6930: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 68 61  e connection] ha
6940: 73 20 61 6c 72 65 61 64 79 20 77 72 69 74 74 65  s already writte
6950: 6e 20 74 6f 20 74 68 65 0a 20 20 64 61 74 61 62  n to the.  datab
6960: 61 73 65 20 61 6e 64 20 74 68 75 73 20 69 6e 76  ase and thus inv
6970: 61 6c 69 64 61 74 65 64 20 70 72 69 6f 72 20 72  alidated prior r
6980: 65 61 64 73 2e 0a 20 20 3c 70 3e 0a 20 20 54 68  eads..  <p>.  Th
6990: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 63 65 6e  e following scen
69a0: 61 72 69 6f 20 69 6c 6c 75 73 74 72 61 74 65 73  ario illustrates
69b0: 20 68 6f 77 20 61 6e 20 53 51 4c 49 54 45 5f 42   how an SQLITE_B
69c0: 55 53 59 5f 53 4e 41 50 53 48 4f 54 20 65 72 72  USY_SNAPSHOT err
69d0: 6f 72 0a 20 20 6d 69 67 68 74 20 61 72 69 73 65  or.  might arise
69e0: 3a 0a 20 20 3c 6f 6c 3e 0a 20 20 3c 6c 69 3e 20  :.  <ol>.  <li> 
69f0: 50 72 6f 63 65 73 73 20 41 20 73 74 61 72 74 73  Process A starts
6a00: 20 61 20 72 65 61 64 20 74 72 61 6e 73 61 63 74   a read transact
6a10: 69 6f 6e 20 6f 6e 20 74 68 65 20 64 61 74 61 62  ion on the datab
6a20: 61 73 65 20 61 6e 64 20 64 6f 65 73 20 6f 6e 65  ase and does one
6a30: 0a 20 20 20 20 20 20 20 6f 72 20 6d 6f 72 65 20  .       or more 
6a40: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
6a50: 2e 20 20 50 72 6f 63 65 73 73 20 41 20 6b 65 65  .  Process A kee
6a60: 70 73 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  ps the transacti
6a70: 6f 6e 20 6f 70 65 6e 2e 0a 20 20 3c 6c 69 3e 20  on open..  <li> 
6a80: 50 72 6f 63 65 73 73 20 42 20 75 70 64 61 74 65  Process B update
6a90: 73 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20  s the database, 
6aa0: 63 68 61 6e 67 69 6e 67 20 76 61 6c 75 65 73 20  changing values 
6ab0: 70 72 65 76 69 6f 75 73 20 72 65 61 64 20 62 79  previous read by
6ac0: 0a 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 20  .       process 
6ad0: 41 2e 0a 20 20 3c 6c 69 3e 20 50 72 6f 63 65 73  A..  <li> Proces
6ae0: 73 20 41 20 6e 6f 77 20 74 72 69 65 73 20 74 6f  s A now tries to
6af0: 20 77 72 69 74 65 20 74 6f 20 74 68 65 20 64 61   write to the da
6b00: 74 61 62 61 73 65 2e 20 20 42 75 74 20 70 72 6f  tabase.  But pro
6b10: 63 65 73 73 20 41 27 73 20 76 69 65 77 0a 20 20  cess A's view.  
6b20: 20 20 20 20 20 6f 66 20 74 68 65 20 64 61 74 61       of the data
6b30: 62 61 73 65 20 63 6f 6e 74 65 6e 74 20 69 73 20  base content is 
6b40: 6e 6f 77 20 6f 62 73 6f 6c 65 74 65 20 62 65 63  now obsolete bec
6b50: 61 75 73 65 20 70 72 6f 63 65 73 73 20 42 20 68  ause process B h
6b60: 61 73 0a 20 20 20 20 20 20 20 6d 6f 64 69 66 69  as.       modifi
6b70: 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ed the database 
6b80: 66 69 6c 65 20 61 66 74 65 72 20 70 72 6f 63 65  file after proce
6b90: 73 73 20 41 20 72 65 61 64 20 66 72 6f 6d 20 69  ss A read from i
6ba0: 74 2e 20 20 48 65 6e 63 65 0a 20 20 20 20 20 20  t.  Hence.      
6bb0: 20 70 72 6f 63 65 73 73 20 42 20 67 65 74 73 20   process B gets 
6bc0: 61 6e 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 53  an SQLITE_BUSY_S
6bd0: 4e 41 50 53 48 4f 54 20 65 72 72 6f 72 2e 0a 20  NAPSHOT error.. 
6be0: 20 3c 2f 6f 6c 3e 0a 7d 0a 52 45 53 43 4f 44 45   </ol>.}.RESCODE
6bf0: 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e   SQLITE_CANTOPEN
6c00: 5f 4e 4f 54 45 4d 50 44 49 52 20 20 20 20 20 20  _NOTEMPDIR      
6c10: 7b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e  {SQLITE_CANTOPEN
6c20: 20 7c 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20 54   | (1<<8)} {.  T
6c30: 68 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  he SQLITE_CANTOP
6c40: 45 4e 5f 4e 4f 54 45 4d 50 44 49 52 20 65 72 72  EN_NOTEMPDIR err
6c50: 6f 72 20 63 6f 64 65 20 69 73 20 6e 6f 20 6c 6f  or code is no lo
6c60: 6e 67 65 72 20 75 73 65 64 2e 0a 7d 0a 52 45 53  nger used..}.RES
6c70: 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 41 4e 54  CODE SQLITE_CANT
6c80: 4f 50 45 4e 5f 49 53 44 49 52 20 20 20 20 20 20  OPEN_ISDIR      
6c90: 20 20 20 20 7b 53 51 4c 49 54 45 5f 43 41 4e 54      {SQLITE_CANT
6ca0: 4f 50 45 4e 20 7c 20 28 32 3c 3c 38 29 7d 20 7b  OPEN | (2<<8)} {
6cb0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 43 41  .  The SQLITE_CA
6cc0: 4e 54 4f 50 45 4e 5f 49 53 44 49 52 20 65 72 72  NTOPEN_ISDIR err
6cd0: 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65  or code is an [e
6ce0: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
6cf0: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20  ed error code]. 
6d00: 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 41 4e   for [SQLITE_CAN
6d10: 54 4f 50 45 4e 5d 20 69 6e 64 69 63 61 74 69 6e  TOPEN] indicatin
6d20: 67 20 74 68 61 74 20 61 20 66 69 6c 65 20 6f 70  g that a file op
6d30: 65 6e 20 6f 70 65 72 61 74 69 6f 6e 20 66 61 69  en operation fai
6d40: 6c 65 64 20 62 65 63 61 75 73 65 0a 20 20 74 68  led because.  th
6d50: 65 20 66 69 6c 65 20 69 73 20 72 65 61 6c 6c 79  e file is really
6d60: 20 61 20 64 69 72 65 63 74 6f 72 79 2e 0a 7d 0a   a directory..}.
6d70: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43  RESCODE SQLITE_C
6d80: 41 4e 54 4f 50 45 4e 5f 46 55 4c 4c 50 41 54 48  ANTOPEN_FULLPATH
6d90: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43         {SQLITE_C
6da0: 41 4e 54 4f 50 45 4e 20 7c 20 28 33 3c 3c 38 29  ANTOPEN | (3<<8)
6db0: 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45  } {.  The SQLITE
6dc0: 5f 43 41 4e 54 4f 50 45 4e 5f 46 55 4c 4c 50 41  _CANTOPEN_FULLPA
6dd0: 54 48 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  TH error code is
6de0: 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c   an [ext-v-prim|
6df0: 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63  extended error c
6e00: 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49  ode].  for [SQLI
6e10: 54 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 69 6e 64  TE_CANTOPEN] ind
6e20: 69 63 61 74 69 6e 67 20 74 68 61 74 20 61 20 66  icating that a f
6e30: 69 6c 65 20 6f 70 65 6e 20 6f 70 65 72 61 74 69  ile open operati
6e40: 6f 6e 20 66 61 69 6c 65 64 20 62 65 63 61 75 73  on failed becaus
6e50: 65 0a 20 20 74 68 65 20 6f 70 65 72 61 74 69 6e  e.  the operatin
6e60: 67 20 73 79 73 74 65 6d 20 77 61 73 20 75 6e 61  g system was una
6e70: 62 6c 65 20 74 6f 20 63 6f 6e 76 65 72 74 20 74  ble to convert t
6e80: 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 6e 74 6f  he filename into
6e90: 20 61 20 66 75 6c 6c 20 70 61 74 68 6e 61 6d 65   a full pathname
6ea0: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
6eb0: 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 43 4f 4e 56  TE_CANTOPEN_CONV
6ec0: 50 41 54 48 20 20 20 20 20 20 20 7b 53 51 4c 49  PATH       {SQLI
6ed0: 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 34  TE_CANTOPEN | (4
6ee0: 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51  <<8)} {.  The SQ
6ef0: 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 53 45  LITE_CANTOPEN_SE
6f00: 45 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  EK error code is
6f10: 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c   an [ext-v-prim|
6f20: 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63  extended error c
6f30: 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49  ode].  for [SQLI
6f40: 54 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 75 73 65  TE_CANTOPEN] use
6f50: 64 20 6f 6e 6c 79 20 62 79 20 43 79 67 77 69 6e  d only by Cygwin
6f60: 20 5b 56 46 53 5d 20 61 6e 64 20 69 6e 64 69 63   [VFS] and indic
6f70: 61 74 69 6e 67 20 74 68 61 74 0a 20 20 74 68 65  ating that.  the
6f80: 20 63 79 67 77 69 6e 5f 63 6f 6e 76 5f 70 61 74   cygwin_conv_pat
6f90: 68 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c 20  h() system call 
6fa0: 66 61 69 6c 65 64 20 77 68 69 6c 65 20 74 72 79  failed while try
6fb0: 69 6e 67 20 74 6f 20 6f 70 65 6e 20 61 20 66 69  ing to open a fi
6fc0: 6c 65 2e 0a 20 20 53 65 65 20 61 6c 73 6f 3a 20  le..  See also: 
6fd0: 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f  [SQLITE_IOERR_CO
6fe0: 4e 56 50 41 54 48 5d 0a 7d 0a 52 45 53 43 4f 44  NVPATH].}.RESCOD
6ff0: 45 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54  E SQLITE_CORRUPT
7000: 5f 56 54 41 42 20 20 20 20 20 20 20 20 20 20 20  _VTAB           
7010: 20 7b 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54   {SQLITE_CORRUPT
7020: 20 7c 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20 54   | (1<<8)} {.  T
7030: 68 65 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50  he SQLITE_CORRUP
7040: 54 5f 56 54 41 42 20 65 72 72 6f 72 20 63 6f 64  T_VTAB error cod
7050: 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70  e is an [ext-v-p
7060: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
7070: 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b  or code].  for [
7080: 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5d 20  SQLITE_CORRUPT] 
7090: 75 73 65 64 20 62 79 20 5b 76 69 72 74 75 61 6c  used by [virtual
70a0: 20 74 61 62 6c 65 73 5d 2e 20 20 41 20 5b 76 69   tables].  A [vi
70b0: 72 74 75 61 6c 20 74 61 62 6c 65 5d 20 6d 69 67  rtual table] mig
70c0: 68 74 0a 20 20 72 65 74 75 72 6e 20 53 51 4c 49  ht.  return SQLI
70d0: 54 45 5f 43 4f 52 52 55 50 54 5f 56 54 41 42 20  TE_CORRUPT_VTAB 
70e0: 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
70f0: 20 63 6f 6e 74 65 6e 74 20 69 6e 20 74 68 65 20   content in the 
7100: 76 69 72 74 75 61 6c 20 74 61 62 6c 65 0a 20 20  virtual table.  
7110: 69 73 20 63 6f 72 72 75 70 74 2e 0a 7d 0a 52 45  is corrupt..}.RE
7120: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 52 45 41  SCODE SQLITE_REA
7130: 44 4f 4e 4c 59 5f 52 45 43 4f 56 45 52 59 20 20  DONLY_RECOVERY  
7140: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 52 45 41       {SQLITE_REA
7150: 44 4f 4e 4c 59 20 7c 20 28 31 3c 3c 38 29 7d 20  DONLY | (1<<8)} 
7160: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 52  {.  The SQLITE_R
7170: 45 41 44 4f 4e 4c 59 5f 52 45 43 4f 56 45 52 59  EADONLY_RECOVERY
7180: 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61   error code is a
7190: 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78  n [ext-v-prim|ex
71a0: 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64  tended error cod
71b0: 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45  e].  for [SQLITE
71c0: 5f 52 45 41 44 4f 4e 4c 59 5d 2e 20 20 54 68 65  _READONLY].  The
71d0: 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59   SQLITE_READONLY
71e0: 5f 52 45 43 4f 56 45 52 59 20 65 72 72 6f 72 20  _RECOVERY error 
71f0: 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 0a 20  code indicates. 
7200: 20 74 68 61 74 20 61 20 5b 57 41 4c 20 6d 6f 64   that a [WAL mod
7210: 65 5d 20 64 61 74 61 62 61 73 65 20 63 61 6e 6e  e] database cann
7220: 6f 74 20 62 65 20 6f 70 65 6e 65 64 20 62 65 63  ot be opened bec
7230: 61 75 73 65 20 74 68 65 20 64 61 74 61 62 61 73  ause the databas
7240: 65 20 66 69 6c 65 0a 20 20 6e 65 65 64 73 20 74  e file.  needs t
7250: 6f 20 62 65 20 72 65 63 6f 76 65 72 65 64 20 61  o be recovered a
7260: 6e 64 20 72 65 63 6f 76 65 72 79 20 72 65 71 75  nd recovery requ
7270: 69 72 65 73 20 77 72 69 74 65 20 61 63 63 65 73  ires write acces
7280: 73 20 62 75 74 20 6f 6e 6c 79 0a 20 20 72 65 61  s but only.  rea
7290: 64 20 61 63 63 65 73 73 20 69 73 20 61 76 61 69  d access is avai
72a0: 6c 61 62 6c 65 2e 0a 7d 0a 52 45 53 43 4f 44 45  lable..}.RESCODE
72b0: 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59   SQLITE_READONLY
72c0: 5f 43 41 4e 54 4c 4f 43 4b 20 20 20 20 20 20 20  _CANTLOCK       
72d0: 7b 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59  {SQLITE_READONLY
72e0: 20 7c 20 28 32 3c 3c 38 29 7d 20 7b 0a 20 20 54   | (2<<8)} {.  T
72f0: 68 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e  he SQLITE_READON
7300: 4c 59 5f 43 41 4e 54 4c 4f 43 4b 20 65 72 72 6f  LY_CANTLOCK erro
7310: 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78  r code is an [ex
7320: 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65  t-v-prim|extende
7330: 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20  d error code].  
7340: 66 6f 72 20 5b 53 51 4c 49 54 45 5f 52 45 41 44  for [SQLITE_READ
7350: 4f 4e 4c 59 5d 2e 20 20 54 68 65 20 53 51 4c 49  ONLY].  The SQLI
7360: 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 43 41 4e 54  TE_READONLY_CANT
7370: 4c 4f 43 4b 20 65 72 72 6f 72 20 63 6f 64 65 20  LOCK error code 
7380: 69 6e 64 69 63 61 74 65 73 0a 20 20 74 68 61 74  indicates.  that
7390: 20 53 51 4c 69 74 65 20 69 73 20 75 6e 61 62 6c   SQLite is unabl
73a0: 65 20 74 6f 20 6f 62 74 61 69 6e 20 61 20 72 65  e to obtain a re
73b0: 61 64 20 6c 6f 63 6b 20 6f 6e 20 61 20 5b 57 41  ad lock on a [WA
73c0: 4c 20 6d 6f 64 65 5d 20 64 61 74 61 62 61 73 65  L mode] database
73d0: 0a 20 20 62 65 63 61 75 73 65 20 74 68 65 20 73  .  because the s
73e0: 68 61 72 65 64 2d 6d 65 6d 6f 72 79 20 66 69 6c  hared-memory fil
73f0: 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
7400: 68 20 74 68 61 74 20 64 61 74 61 62 61 73 65 20  h that database 
7410: 69 73 20 72 65 61 64 2d 6f 6e 6c 79 2e 0a 7d 0a  is read-only..}.
7420: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 52  RESCODE SQLITE_R
7430: 45 41 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41 43 4b  EADONLY_ROLLBACK
7440: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 52         {SQLITE_R
7450: 45 41 44 4f 4e 4c 59 20 7c 20 28 33 3c 3c 38 29  EADONLY | (3<<8)
7460: 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45  } {.  The SQLITE
7470: 5f 52 45 41 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41  _READONLY_ROLLBA
7480: 43 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  CK error code is
7490: 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c   an [ext-v-prim|
74a0: 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63  extended error c
74b0: 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49  ode].  for [SQLI
74c0: 54 45 5f 52 45 41 44 4f 4e 4c 59 5d 2e 20 20 54  TE_READONLY].  T
74d0: 68 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e  he SQLITE_READON
74e0: 4c 59 5f 52 4f 4c 4c 42 41 43 4b 20 65 72 72 6f  LY_ROLLBACK erro
74f0: 72 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73  r code indicates
7500: 0a 20 20 74 68 61 74 20 61 20 64 61 74 61 62 61  .  that a databa
7510: 73 65 20 63 61 6e 6e 6f 74 20 62 65 20 6f 70 65  se cannot be ope
7520: 6e 65 64 20 62 65 63 61 75 73 65 20 69 74 20 68  ned because it h
7530: 61 73 20 61 20 5b 68 6f 74 20 6a 6f 75 72 6e 61  as a [hot journa
7540: 6c 5d 20 74 68 61 74 0a 20 20 6e 65 65 64 73 20  l] that.  needs 
7550: 74 6f 20 62 65 20 72 6f 6c 6c 65 64 20 62 61 63  to be rolled bac
7560: 6b 20 62 75 74 20 63 61 6e 6e 6f 74 20 62 65 63  k but cannot bec
7570: 61 75 73 65 20 74 68 65 20 64 61 74 61 62 61 73  ause the databas
7580: 65 20 69 73 20 72 65 61 64 6f 6e 6c 79 2e 0a 7d  e is readonly..}
7590: 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f  .RESCODE SQLITE_
75a0: 52 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f 56 45 44  READONLY_DBMOVED
75b0: 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f          {SQLITE_
75c0: 52 45 41 44 4f 4e 4c 59 20 7c 20 28 34 3c 3c 38  READONLY | (4<<8
75d0: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
75e0: 45 5f 52 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f 56  E_READONLY_DBMOV
75f0: 45 44 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  ED error code is
7600: 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c   an [ext-v-prim|
7610: 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63  extended error c
7620: 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49  ode].  for [SQLI
7630: 54 45 5f 52 45 41 44 4f 4e 4c 59 5d 2e 20 20 54  TE_READONLY].  T
7640: 68 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e  he SQLITE_READON
7650: 4c 59 5f 44 42 4d 4f 56 45 44 20 65 72 72 6f 72  LY_DBMOVED error
7660: 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 0a   code indicates.
7670: 20 20 74 68 61 74 20 61 20 64 61 74 61 62 61 73    that a databas
7680: 65 20 63 61 6e 6e 6f 74 20 62 65 20 6d 6f 64 69  e cannot be modi
7690: 66 69 65 64 20 62 65 63 61 75 73 65 20 74 68 65  fied because the
76a0: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 68   database file h
76b0: 61 73 20 62 65 65 6e 0a 20 20 6d 6f 76 65 64 20  as been.  moved 
76c0: 73 69 6e 63 65 20 69 74 20 77 61 73 20 6f 70 65  since it was ope
76d0: 6e 65 64 2c 20 61 6e 64 20 73 6f 20 61 6e 79 20  ned, and so any 
76e0: 61 74 74 65 6d 70 74 20 74 6f 20 6d 6f 64 69 66  attempt to modif
76f0: 79 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 20  y the database. 
7700: 20 6d 69 67 68 74 20 72 65 73 75 6c 74 20 69 6e   might result in
7710: 20 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70   database corrup
7720: 74 69 6f 6e 20 69 66 20 74 68 65 20 70 72 6f 63  tion if the proc
7730: 65 73 73 65 73 20 63 72 61 73 68 65 73 20 62 65  esses crashes be
7740: 63 61 75 73 65 20 74 68 65 0a 20 20 5b 72 6f 6c  cause the.  [rol
7750: 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 77  lback journal] w
7760: 6f 75 6c 64 20 6e 6f 74 20 62 65 20 63 6f 72 72  ould not be corr
7770: 65 63 74 6c 79 20 6e 61 6d 65 64 2e 0a 7d 0a 52  ectly named..}.R
7780: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 41 42  ESCODE SQLITE_AB
7790: 4f 52 54 5f 52 4f 4c 4c 42 41 43 4b 20 20 20 20  ORT_ROLLBACK    
77a0: 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 41 42        {SQLITE_AB
77b0: 4f 52 54 20 7c 20 28 32 3c 3c 38 29 7d 20 7b 0a  ORT | (2<<8)} {.
77c0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 41 42 4f    The SQLITE_ABO
77d0: 52 54 5f 52 4f 4c 4c 42 41 43 4b 20 65 72 72 6f  RT_ROLLBACK erro
77e0: 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78  r code is an [ex
77f0: 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65  t-v-prim|extende
7800: 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20  d error code].  
7810: 66 6f 72 20 5b 53 51 4c 49 54 45 5f 41 42 4f 52  for [SQLITE_ABOR
7820: 54 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68  T] indicating th
7830: 61 74 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d  at an SQL statem
7840: 65 6e 74 20 61 62 6f 72 74 65 64 20 62 65 63 61  ent aborted beca
7850: 75 73 65 0a 20 20 74 68 65 20 74 72 61 6e 73 61  use.  the transa
7860: 63 74 69 6f 6e 20 74 68 61 74 20 77 61 73 20 61  ction that was a
7870: 63 74 69 76 65 20 77 68 65 6e 20 74 68 65 20 53  ctive when the S
7880: 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 66 69 72  QL statement fir
7890: 73 74 20 73 74 61 72 74 65 64 0a 20 20 77 61 73  st started.  was
78a0: 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 7d 0a   rolled back..}.
78b0: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43  RESCODE SQLITE_C
78c0: 4f 4e 53 54 52 41 49 4e 54 5f 43 48 45 43 4b 20  ONSTRAINT_CHECK 
78d0: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43         {SQLITE_C
78e0: 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 31 3c 3c  ONSTRAINT | (1<<
78f0: 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  8)} {.  The SQLI
7900: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43 48  TE_CONSTRAINT_CH
7910: 45 43 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69  ECK error code i
7920: 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d  s an [ext-v-prim
7930: 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  |extended error 
7940: 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c  code].  for [SQL
7950: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d 20  ITE_CONSTRAINT] 
7960: 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61 74 20  indicating that 
7970: 61 20 5b 43 48 45 43 4b 20 63 6f 6e 73 74 72 61  a [CHECK constra
7980: 69 6e 74 5d 20 66 61 69 6c 65 64 2e 0a 7d 0a 52  int] failed..}.R
7990: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 4f  ESCODE SQLITE_CO
79a0: 4e 53 54 52 41 49 4e 54 5f 43 4f 4d 4d 49 54 48  NSTRAINT_COMMITH
79b0: 4f 4f 4b 20 20 20 7b 53 51 4c 49 54 45 5f 43 4f  OOK   {SQLITE_CO
79c0: 4e 53 54 52 41 49 4e 54 20 7c 20 28 32 3c 3c 38  NSTRAINT | (2<<8
79d0: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
79e0: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43 4f 4d  E_CONSTRAINT_COM
79f0: 4d 49 54 48 4f 4f 4b 20 65 72 72 6f 72 20 63 6f  MITHOOK error co
7a00: 64 65 0a 20 20 69 73 20 61 6e 20 5b 65 78 74 2d  de.  is an [ext-
7a10: 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20  v-prim|extended 
7a20: 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f  error code].  fo
7a30: 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  r [SQLITE_CONSTR
7a40: 41 49 4e 54 5d 20 69 6e 64 69 63 61 74 69 6e 67  AINT] indicating
7a50: 20 74 68 61 74 20 61 0a 20 20 5b 73 71 6c 69 74   that a.  [sqlit
7a60: 65 33 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 7c 63  e3_commit_hook|c
7a70: 6f 6d 6d 69 74 20 68 6f 6f 6b 20 63 61 6c 6c 62  ommit hook callb
7a80: 61 63 6b 5d 20 72 65 74 75 72 6e 65 64 20 6e 6f  ack] returned no
7a90: 6e 2d 7a 65 72 6f 20 74 68 61 74 20 74 68 75 73  n-zero that thus
7aa0: 0a 20 20 63 61 75 73 65 64 20 74 68 65 20 53 51  .  caused the SQ
7ab0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62  L statement to b
7ac0: 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 7d  e rolled back..}
7ad0: 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f  .RESCODE SQLITE_
7ae0: 43 4f 4e 53 54 52 41 49 4e 54 5f 46 4f 52 45 49  CONSTRAINT_FOREI
7af0: 47 4e 4b 45 59 20 20 20 7b 53 51 4c 49 54 45 5f  GNKEY   {SQLITE_
7b00: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 33 3c  CONSTRAINT | (3<
7b10: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
7b20: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 46  ITE_CONSTRAINT_F
7b30: 4f 52 45 49 47 4e 4b 45 59 20 65 72 72 6f 72 20  OREIGNKEY error 
7b40: 63 6f 64 65 0a 20 20 69 73 20 61 6e 20 5b 65 78  code.  is an [ex
7b50: 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65  t-v-prim|extende
7b60: 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20  d error code].  
7b70: 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53  for [SQLITE_CONS
7b80: 54 52 41 49 4e 54 5d 20 69 6e 64 69 63 61 74 69  TRAINT] indicati
7b90: 6e 67 20 74 68 61 74 20 61 20 5b 66 6f 72 65 69  ng that a [forei
7ba0: 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e  gn key constrain
7bb0: 74 5d 20 66 61 69 6c 65 64 2e 0a 7d 0a 52 45 53  t] failed..}.RES
7bc0: 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 4f 4e 53  CODE SQLITE_CONS
7bd0: 54 52 41 49 4e 54 5f 46 55 4e 43 54 49 4f 4e 20  TRAINT_FUNCTION 
7be0: 20 20 20 20 7b 53 51 4c 49 54 45 5f 43 4f 4e 53      {SQLITE_CONS
7bf0: 54 52 41 49 4e 54 20 7c 20 28 34 3c 3c 38 29 7d  TRAINT | (4<<8)}
7c00: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
7c10: 43 4f 4e 53 54 52 41 49 4e 54 5f 46 55 4e 43 54  CONSTRAINT_FUNCT
7c20: 49 4f 4e 20 65 72 72 6f 72 20 63 6f 64 65 20 69  ION error code i
7c30: 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20  s not currently 
7c40: 75 73 65 64 0a 20 20 62 79 20 74 68 65 20 53 51  used.  by the SQ
7c50: 4c 69 74 65 20 63 6f 72 65 2e 20 20 48 6f 77 65  Lite core.  Howe
7c60: 76 65 72 2c 20 74 68 69 73 20 65 72 72 6f 72 20  ver, this error 
7c70: 63 6f 64 65 20 69 73 20 61 76 61 69 6c 61 62 6c  code is availabl
7c80: 65 20 66 6f 72 20 75 73 65 0a 20 20 62 79 20 65  e for use.  by e
7c90: 78 74 65 6e 73 69 6f 6e 20 66 75 6e 63 74 69 6f  xtension functio
7ca0: 6e 73 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  ns..}.RESCODE SQ
7cb0: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  LITE_CONSTRAINT_
7cc0: 4e 4f 54 4e 55 4c 4c 20 20 20 20 20 20 7b 53 51  NOTNULL      {SQ
7cd0: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
7ce0: 7c 20 28 35 3c 3c 38 29 7d 20 7b 0a 20 20 54 68  | (5<<8)} {.  Th
7cf0: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
7d00: 49 4e 54 5f 4e 4f 54 4e 55 4c 4c 20 65 72 72 6f  INT_NOTNULL erro
7d10: 72 20 63 6f 64 65 0a 20 20 69 73 20 61 6e 20 5b  r code.  is an [
7d20: 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e  ext-v-prim|exten
7d30: 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a  ded error code].
7d40: 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f    for [SQLITE_CO
7d50: 4e 53 54 52 41 49 4e 54 5d 20 69 6e 64 69 63 61  NSTRAINT] indica
7d60: 74 69 6e 67 20 74 68 61 74 20 61 20 5b 4e 4f 54  ting that a [NOT
7d70: 20 4e 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74   NULL constraint
7d80: 5d 20 66 61 69 6c 65 64 2e 0a 7d 0a 52 45 53 43  ] failed..}.RESC
7d90: 4f 44 45 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  ODE SQLITE_CONST
7da0: 52 41 49 4e 54 5f 50 52 49 4d 41 52 59 4b 45 59  RAINT_PRIMARYKEY
7db0: 20 20 20 7b 53 51 4c 49 54 45 5f 43 4f 4e 53 54     {SQLITE_CONST
7dc0: 52 41 49 4e 54 20 7c 20 28 36 3c 3c 38 29 7d 20  RAINT | (6<<8)} 
7dd0: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 43  {.  The SQLITE_C
7de0: 4f 4e 53 54 52 41 49 4e 54 5f 50 52 49 4d 41 52  ONSTRAINT_PRIMAR
7df0: 59 4b 45 59 20 65 72 72 6f 72 20 63 6f 64 65 0a  YKEY error code.
7e00: 20 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70    is an [ext-v-p
7e10: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
7e20: 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b  or code].  for [
7e30: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
7e40: 54 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68  T] indicating th
7e50: 61 74 20 61 20 5b 50 52 49 4d 41 52 59 20 4b 45  at a [PRIMARY KE
7e60: 59 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20 66 61  Y constraint] fa
7e70: 69 6c 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  iled..}.RESCODE 
7e80: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
7e90: 54 5f 54 52 49 47 47 45 52 20 20 20 20 20 20 7b  T_TRIGGER      {
7ea0: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
7eb0: 54 20 7c 20 28 37 3c 3c 38 29 7d 20 7b 0a 20 20  T | (7<<8)} {.  
7ec0: 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54  The SQLITE_CONST
7ed0: 52 41 49 4e 54 5f 54 52 49 47 47 45 52 20 65 72  RAINT_TRIGGER er
7ee0: 72 6f 72 20 63 6f 64 65 0a 20 20 69 73 20 61 6e  ror code.  is an
7ef0: 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74   [ext-v-prim|ext
7f00: 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65  ended error code
7f10: 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f  ].  for [SQLITE_
7f20: 43 4f 4e 53 54 52 41 49 4e 54 5d 20 69 6e 64 69  CONSTRAINT] indi
7f30: 63 61 74 69 6e 67 20 74 68 61 74 20 61 20 5b 52  cating that a [R
7f40: 41 49 53 45 20 66 75 6e 63 74 69 6f 6e 5d 20 77  AISE function] w
7f50: 69 74 68 69 6e 0a 20 20 61 20 5b 43 52 45 41 54  ithin.  a [CREAT
7f60: 45 20 54 52 49 47 47 45 52 7c 74 72 69 67 67 65  E TRIGGER|trigge
7f70: 72 5d 20 66 69 72 65 64 2c 20 63 61 75 73 69 6e  r] fired, causin
7f80: 67 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  g the SQL statem
7f90: 65 6e 74 20 74 6f 20 61 62 6f 72 74 2e 0a 7d 0a  ent to abort..}.
7fa0: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43  RESCODE SQLITE_C
7fb0: 4f 4e 53 54 52 41 49 4e 54 5f 55 4e 49 51 55 45  ONSTRAINT_UNIQUE
7fc0: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43         {SQLITE_C
7fd0: 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 38 3c 3c  ONSTRAINT | (8<<
7fe0: 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  8)} {.  The SQLI
7ff0: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 55 4e  TE_CONSTRAINT_UN
8000: 49 51 55 45 20 65 72 72 6f 72 20 63 6f 64 65 0a  IQUE error code.
8010: 20 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70    is an [ext-v-p
8020: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
8030: 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b  or code].  for [
8040: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
8050: 54 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68  T] indicating th
8060: 61 74 20 61 20 5b 55 4e 49 51 55 45 20 63 6f 6e  at a [UNIQUE con
8070: 73 74 72 61 69 6e 74 5d 20 66 61 69 6c 65 64 2e  straint] failed.
8080: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
8090: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 56 54 41  E_CONSTRAINT_VTA
80a0: 42 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54  B         {SQLIT
80b0: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28  E_CONSTRAINT | (
80c0: 39 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53  9<<8)} {.  The S
80d0: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
80e0: 5f 56 54 41 42 20 65 72 72 6f 72 20 63 6f 64 65  _VTAB error code
80f0: 20 69 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c   is not currentl
8100: 79 20 75 73 65 64 0a 20 20 62 79 20 74 68 65 20  y used.  by the 
8110: 53 51 4c 69 74 65 20 63 6f 72 65 2e 20 20 48 6f  SQLite core.  Ho
8120: 77 65 76 65 72 2c 20 74 68 69 73 20 65 72 72 6f  wever, this erro
8130: 72 20 63 6f 64 65 20 69 73 20 61 76 61 69 6c 61  r code is availa
8140: 62 6c 65 20 66 6f 72 20 75 73 65 0a 20 20 62 79  ble for use.  by
8150: 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66   application-def
8160: 69 6e 65 64 20 5b 76 69 72 74 75 61 6c 20 74 61  ined [virtual ta
8170: 62 6c 65 73 5d 2e 0a 7d 0a 52 45 53 43 4f 44 45  bles]..}.RESCODE
8180: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
8190: 4e 54 5f 52 4f 57 49 44 20 20 20 20 20 20 20 20  NT_ROWID        
81a0: 7b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  {SQLITE_CONSTRAI
81b0: 4e 54 20 7c 28 31 30 3c 3c 38 29 7d 20 7b 0a 20  NT |(10<<8)} {. 
81c0: 20 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53   The SQLITE_CONS
81d0: 54 52 41 49 4e 54 5f 52 4f 57 49 44 20 65 72 72  TRAINT_ROWID err
81e0: 6f 72 20 63 6f 64 65 0a 20 20 69 73 20 61 6e 20  or code.  is an 
81f0: 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65  [ext-v-prim|exte
8200: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d  nded error code]
8210: 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43  .  for [SQLITE_C
8220: 4f 4e 53 54 52 41 49 4e 54 5d 20 69 6e 64 69 63  ONSTRAINT] indic
8230: 61 74 69 6e 67 20 74 68 61 74 20 61 20 5b 72 6f  ating that a [ro
8240: 77 69 64 5d 20 69 73 20 6e 6f 74 20 75 6e 69 71  wid] is not uniq
8250: 75 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  ue..}.RESCODE SQ
8260: 4c 49 54 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f  LITE_NOTICE_RECO
8270: 56 45 52 5f 57 41 4c 20 20 20 20 20 20 7b 53 51  VER_WAL      {SQ
8280: 4c 49 54 45 5f 4e 4f 54 49 43 45 20 7c 20 28 31  LITE_NOTICE | (1
8290: 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51  <<8)} {.  The SQ
82a0: 4c 49 54 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f  LITE_NOTICE_RECO
82b0: 56 45 52 5f 57 41 4c 20 72 65 73 75 6c 74 20 63  VER_WAL result c
82c0: 6f 64 65 20 69 73 0a 20 20 70 61 73 73 65 64 20  ode is.  passed 
82d0: 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  to the callback 
82e0: 6f 66 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f  of.  [sqlite3_lo
82f0: 67 28 29 5d 20 77 68 65 6e 20 61 20 5b 57 41 4c  g()] when a [WAL
8300: 20 6d 6f 64 65 5d 20 64 61 74 61 62 61 73 65 20   mode] database 
8310: 66 69 6c 65 20 69 73 20 72 65 63 6f 76 65 72 65  file is recovere
8320: 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  d..}.RESCODE SQL
8330: 49 54 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f 56  ITE_NOTICE_RECOV
8340: 45 52 5f 52 4f 4c 4c 42 41 43 4b 20 7b 53 51 4c  ER_ROLLBACK {SQL
8350: 49 54 45 5f 4e 4f 54 49 43 45 20 7c 20 28 32 3c  ITE_NOTICE | (2<
8360: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
8370: 49 54 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f 56  ITE_NOTICE_RECOV
8380: 45 52 5f 52 4f 4c 4c 42 41 43 4b 20 72 65 73 75  ER_ROLLBACK resu
8390: 6c 74 20 63 6f 64 65 20 69 73 0a 20 20 70 61 73  lt code is.  pas
83a0: 73 65 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  sed to the callb
83b0: 61 63 6b 20 6f 66 0a 20 20 5b 73 71 6c 69 74 65  ack of.  [sqlite
83c0: 33 5f 6c 6f 67 28 29 5d 20 77 68 65 6e 20 61 20  3_log()] when a 
83d0: 5b 68 6f 74 20 6a 6f 75 72 6e 61 6c 5d 20 69 73  [hot journal] is
83e0: 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 7d 0a   rolled back..}.
83f0: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 57  RESCODE SQLITE_W
8400: 41 52 4e 49 4e 47 5f 41 55 54 4f 49 4e 44 45 58  ARNING_AUTOINDEX
8410: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 57         {SQLITE_W
8420: 41 52 4e 49 4e 47 20 7c 20 28 31 3c 3c 38 29 7d  ARNING | (1<<8)}
8430: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
8440: 57 41 52 4e 49 4e 47 5f 41 55 54 4f 49 4e 44 45  WARNING_AUTOINDE
8450: 58 20 72 65 73 75 6c 74 20 63 6f 64 65 20 69 73  X result code is
8460: 0a 20 20 70 61 73 73 65 64 20 74 6f 20 74 68 65  .  passed to the
8470: 20 63 61 6c 6c 62 61 63 6b 20 6f 66 0a 20 20 5b   callback of.  [
8480: 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20 77  sqlite3_log()] w
8490: 68 65 6e 65 76 65 72 20 5b 61 75 74 6f 6d 61 74  henever [automat
84a0: 69 63 20 69 6e 64 65 78 69 6e 67 5d 20 69 73 20  ic indexing] is 
84b0: 75 73 65 64 2e 0a 20 20 54 68 69 73 20 63 61 6e  used..  This can
84c0: 20 73 65 72 76 65 20 61 73 20 61 20 77 61 72 6e   serve as a warn
84d0: 69 6e 67 20 74 6f 20 61 70 70 6c 69 63 61 74 69  ing to applicati
84e0: 6f 6e 20 64 65 73 69 67 6e 65 72 73 20 74 68 61  on designers tha
84f0: 74 20 74 68 65 0a 20 20 64 61 74 61 62 61 73 65  t the.  database
8500: 20 6d 69 67 68 74 20 62 65 6e 65 66 69 74 20 66   might benefit f
8510: 72 6f 6d 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  rom additional i
8520: 6e 64 65 78 65 73 2e 0a 7d 0a 0a 23 23 23 23 23  ndexes..}..#####
8530: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
8570: 23 23 23 23 23 23 23 23 0a 23 20 43 6f 64 65 20  ########.# Code 
8580: 74 6f 20 70 72 6f 63 65 73 73 20 74 68 65 20 52  to process the R
8590: 45 53 43 4f 44 45 20 76 61 6c 75 65 73 0a 23 0a  ESCODE values.#.
85a0: 23 20 43 6f 6e 76 65 72 74 20 66 6f 72 6d 75 6c  # Convert formul
85b0: 61 20 52 45 53 43 4f 44 45 20 76 61 6c 75 65 73  a RESCODE values
85c0: 20 69 6e 74 6f 20 6e 75 6d 65 72 69 63 73 0a 73   into numerics.s
85d0: 65 74 20 6e 52 65 73 43 6f 64 65 20 30 0a 73 65  et nResCode 0.se
85e0: 74 20 6e 50 72 69 6d 43 6f 64 65 20 30 0a 73 65  t nPrimCode 0.se
85f0: 74 20 6e 45 78 74 43 6f 64 65 20 30 0a 73 65 74  t nExtCode 0.set
8600: 20 6e 4e 6f 6e 45 72 72 6f 72 20 33 0a 75 6e 73   nNonError 3.uns
8610: 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 70  et -nocomplain p
8620: 72 69 6d 5f 72 63 0a 75 6e 73 65 74 20 2d 6e 6f  rim_rc.unset -no
8630: 63 6f 6d 70 6c 61 69 6e 20 65 78 74 5f 72 63 0a  complain ext_rc.
8640: 66 6f 72 65 61 63 68 20 6e 61 6d 65 20 5b 61 72  foreach name [ar
8650: 72 61 79 20 6e 61 6d 65 73 20 72 65 73 76 61 6c  ray names resval
8660: 75 65 5d 20 7b 0a 20 20 73 65 74 20 76 61 6c 20  ue] {.  set val 
8670: 24 72 65 73 76 61 6c 75 65 28 24 6e 61 6d 65 29  $resvalue($name)
8680: 0a 20 20 69 66 20 7b 5b 72 65 67 65 78 70 20 7b  .  if {[regexp {
8690: 5e 28 53 51 4c 49 54 45 5f 5b 5e 20 5d 2b 29 20  ^(SQLITE_[^ ]+) 
86a0: 2a 5c 7c 20 2a 5c 28 28 5c 64 2b 29 3c 3c 38 5c  *\| *\((\d+)<<8\
86b0: 29 24 7d 20 24 76 61 6c 20 61 6c 6c 20 62 61 73  )$} $val all bas
86c0: 65 6e 61 6d 65 20 68 69 76 61 6c 5d 7d 20 7b 0a  ename hival]} {.
86d0: 20 20 20 20 73 65 74 20 76 61 6c 20 5b 65 78 70      set val [exp
86e0: 72 20 7b 24 72 65 73 76 61 6c 75 65 28 24 62 61  r {$resvalue($ba
86f0: 73 65 6e 61 6d 65 29 2b 28 24 68 69 76 61 6c 3c  sename)+($hival<
8700: 3c 38 29 7d 5d 0a 20 20 20 20 73 65 74 20 72 65  <8)}].    set re
8710: 73 76 61 6c 75 65 28 24 6e 61 6d 65 29 20 24 76  svalue($name) $v
8720: 61 6c 0a 20 20 7d 0a 20 20 73 65 74 20 76 61 6c  al.  }.  set val
8730: 74 6f 6e 61 6d 65 28 24 76 61 6c 29 20 24 6e 61  toname($val) $na
8740: 6d 65 0a 20 20 69 6e 63 72 20 6e 52 65 73 43 6f  me.  incr nResCo
8750: 64 65 0a 20 20 69 66 20 7b 24 76 61 6c 3c 32 35  de.  if {$val<25
8760: 36 7d 20 7b 0a 20 20 20 20 69 6e 63 72 20 6e 50  6} {.    incr nP
8770: 72 69 6d 43 6f 64 65 0a 20 20 20 20 73 65 74 20  rimCode.    set 
8780: 70 72 69 6d 5f 72 63 28 24 6e 61 6d 65 29 20 24  prim_rc($name) $
8790: 76 61 6c 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20  val.  } else {. 
87a0: 20 20 20 69 6e 63 72 20 6e 45 78 74 43 6f 64 65     incr nExtCode
87b0: 0a 20 20 20 20 73 65 74 20 65 78 74 5f 72 63 28  .    set ext_rc(
87c0: 24 6e 61 6d 65 29 20 24 76 61 6c 0a 20 20 7d 0a  $name) $val.  }.
87d0: 7d 0a 0a 68 64 5f 70 75 74 73 20 22 3c 68 32 3e  }..hd_puts "<h2>
87e0: 50 72 69 6d 61 72 79 20 52 65 73 75 6c 74 20 43  Primary Result C
87f0: 6f 64 65 20 4c 69 73 74 3c 2f 68 32 3e 5c 6e 22  ode List</h2>\n"
8800: 0a 68 64 5f 70 75 74 73 20 22 3c 70 3e 54 68 65  .hd_puts "<p>The
8810: 20 24 6e 50 72 69 6d 43 6f 64 65 20 72 65 73 75   $nPrimCode resu
8820: 6c 74 20 63 6f 64 65 73 22 0a 3c 2f 74 63 6c 3e  lt codes".</tcl>
8830: 0a 20 20 61 72 65 20 5b 72 65 73 75 6c 74 20 63  .  are [result c
8840: 6f 64 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 7c  ode definitions|
8850: 64 65 66 69 6e 65 64 20 69 6e 20 73 71 6c 69 74  defined in sqlit
8860: 65 33 2e 68 5d 20 61 6e 64 20 61 72 65 0a 20 20  e3.h] and are.  
8870: 6c 69 73 74 65 64 20 69 6e 20 61 6c 70 68 61 62  listed in alphab
8880: 65 74 69 63 61 6c 20 6f 72 64 65 72 20 62 65 6c  etical order bel
8890: 6f 77 3a 0a 20 20 3c 74 61 62 6c 65 20 62 6f 72  ow:.  <table bor
88a0: 64 65 72 3d 30 20 77 69 64 74 68 3d 22 31 30 30  der=0 width="100
88b0: 25 22 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31  %" cellpadding=1
88c0: 30 3e 0a 20 20 3c 74 72 3e 3c 74 64 20 76 61 6c  0>.  <tr><td val
88d0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
88e0: 22 6c 65 66 74 22 3e 3c 75 6c 3e 0a 3c 74 63 6c  "left"><ul>.<tcl
88f0: 3e 0a 73 65 74 20 6e 72 6f 77 20 5b 65 78 70 72  >.set nrow [expr
8900: 20 7b 28 24 6e 50 72 69 6d 43 6f 64 65 2b 32 29   {($nPrimCode+2)
8910: 2f 33 7d 5d 0a 73 65 74 20 69 20 30 0a 66 6f 72  /3}].set i 0.for
8920: 65 61 63 68 20 6e 61 6d 65 20 5b 6c 73 6f 72 74  each name [lsort
8930: 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 70 72   [array names pr
8940: 69 6d 5f 72 63 5d 5d 20 7b 0a 20 20 69 66 20 7b  im_rc]] {.  if {
8950: 24 69 3d 3d 24 6e 72 6f 77 7d 20 7b 0a 20 20 20  $i==$nrow} {.   
8960: 20 68 64 5f 70 75 74 73 20 22 3c 2f 75 6c 3e 3c   hd_puts "</ul><
8970: 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 5c  /td><td valign=\
8980: 22 74 6f 70 5c 22 20 61 6c 69 67 6e 3d 5c 22 6c  "top\" align=\"l
8990: 65 66 74 5c 22 3e 3c 75 6c 3e 5c 6e 22 0a 20 20  eft\"><ul>\n".  
89a0: 20 20 73 65 74 20 69 20 30 0a 20 20 7d 0a 20 20    set i 0.  }.  
89b0: 69 6e 63 72 20 69 0a 20 20 68 64 5f 72 65 73 6f  incr i.  hd_reso
89c0: 6c 76 65 20 22 3c 6c 69 3e 20 5c 5b 24 6e 61 6d  lve "<li> \[$nam
89d0: 65 5c 5d 20 28 24 70 72 69 6d 5f 72 63 28 24 6e  e\] ($prim_rc($n
89e0: 61 6d 65 29 29 5c 6e 22 0a 7d 0a 68 64 5f 70 75  ame))\n".}.hd_pu
89f0: 74 73 20 22 3c 2f 74 64 3e 3c 2f 74 64 3e 3c 2f  ts "</td></td></
8a00: 74 61 62 6c 65 3e 5c 6e 5c 6e 22 0a 0a 68 64 5f  table>\n\n"..hd_
8a10: 66 72 61 67 6d 65 6e 74 20 65 78 74 72 63 20 7b  fragment extrc {
8a20: 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20  extended result 
8a30: 63 6f 64 65 7d 20 7b 65 78 74 65 6e 64 65 64 20  code} {extended 
8a40: 72 65 73 75 6c 74 20 63 6f 64 65 73 7d 20 5c 0a  result codes} \.
8a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a60: 20 20 7b 65 78 74 65 6e 64 65 64 20 65 72 72 6f    {extended erro
8a70: 72 20 63 6f 64 65 7d 20 7b 65 78 74 65 6e 64 65  r code} {extende
8a80: 64 20 65 72 72 6f 72 20 63 6f 64 65 73 7d 0a 68  d error codes}.h
8a90: 64 5f 70 75 74 73 20 22 3c 68 32 3e 45 78 74 65  d_puts "<h2>Exte
8aa0: 6e 64 65 64 20 52 65 73 75 6c 74 20 43 6f 64 65  nded Result Code
8ab0: 20 4c 69 73 74 3c 2f 68 32 3e 5c 6e 22 0a 68 64   List</h2>\n".hd
8ac0: 5f 70 75 74 73 20 22 3c 70 3e 54 68 65 20 24 6e  _puts "<p>The $n
8ad0: 45 78 74 43 6f 64 65 20 65 78 74 65 6e 64 65 64  ExtCode extended
8ae0: 20 72 65 73 75 6c 74 20 63 6f 64 65 73 22 0a 3c   result codes".<
8af0: 2f 74 63 6c 3e 0a 20 20 61 72 65 20 5b 65 78 74  /tcl>.  are [ext
8b00: 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
8b10: 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 7c 64 65  e definitions|de
8b20: 66 69 6e 65 64 20 69 6e 20 73 71 6c 69 74 65 33  fined in sqlite3
8b30: 2e 68 5d 20 61 6e 64 20 61 72 65 0a 20 20 6c 69  .h] and are.  li
8b40: 73 74 65 64 20 69 6e 20 61 6c 70 68 61 62 65 74  sted in alphabet
8b50: 69 63 61 6c 20 6f 72 64 65 72 20 62 65 6c 6f 77  ical order below
8b60: 3a 0a 20 20 3c 74 61 62 6c 65 20 62 6f 72 64 65  :.  <table borde
8b70: 72 3d 30 20 77 69 64 74 68 3d 22 31 30 30 25 22  r=0 width="100%"
8b80: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e   cellpadding=10>
8b90: 0a 20 20 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67  .  <tr><td valig
8ba0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 6c  n="top" align="l
8bb0: 65 66 74 22 3e 3c 75 6c 3e 0a 3c 74 63 6c 3e 0a  eft"><ul>.<tcl>.
8bc0: 73 65 74 20 6e 72 6f 77 20 5b 65 78 70 72 20 7b  set nrow [expr {
8bd0: 28 24 6e 45 78 74 43 6f 64 65 2b 31 29 2f 32 7d  ($nExtCode+1)/2}
8be0: 5d 0a 73 65 74 20 69 20 30 0a 66 6f 72 65 61 63  ].set i 0.foreac
8bf0: 68 20 6e 61 6d 65 20 5b 6c 73 6f 72 74 20 5b 61  h name [lsort [a
8c00: 72 72 61 79 20 6e 61 6d 65 73 20 65 78 74 5f 72  rray names ext_r
8c10: 63 5d 5d 20 7b 0a 20 20 69 66 20 7b 24 69 3d 3d  c]] {.  if {$i==
8c20: 24 6e 72 6f 77 7d 20 7b 0a 20 20 20 20 68 64 5f  $nrow} {.    hd_
8c30: 70 75 74 73 20 22 3c 2f 75 6c 3e 3c 2f 74 64 3e  puts "</ul></td>
8c40: 3c 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70  <td valign=\"top
8c50: 5c 22 20 61 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c  \" align=\"left\
8c60: 22 3e 3c 75 6c 3e 5c 6e 22 0a 20 20 20 20 73 65  "><ul>\n".    se
8c70: 74 20 69 20 30 0a 20 20 7d 0a 20 20 69 6e 63 72  t i 0.  }.  incr
8c80: 20 69 0a 20 20 68 64 5f 72 65 73 6f 6c 76 65 20   i.  hd_resolve 
8c90: 22 3c 6c 69 3e 20 5c 5b 24 6e 61 6d 65 5c 5d 20  "<li> \[$name\] 
8ca0: 28 24 65 78 74 5f 72 63 28 24 6e 61 6d 65 29 29  ($ext_rc($name))
8cb0: 5c 6e 22 0a 7d 0a 68 64 5f 70 75 74 73 20 22 3c  \n".}.hd_puts "<
8cc0: 2f 74 64 3e 3c 2f 74 64 3e 3c 2f 74 61 62 6c 65  /td></td></table
8cd0: 3e 5c 6e 5c 6e 22 0a 0a 68 64 5f 70 75 74 73 20  >\n\n"..hd_puts 
8ce0: 22 0a 3c 68 32 3e 52 65 73 75 6c 74 20 43 6f 64  ".<h2>Result Cod
8cf0: 65 20 4d 65 61 6e 69 6e 67 73 3c 2f 68 32 3e 0a  e Meanings</h2>.
8d00: 3c 70 3e 0a 54 68 65 20 6d 65 61 6e 69 6e 67 73  <p>.The meanings
8d10: 20 66 6f 72 20 61 6c 6c 20 24 6e 52 65 73 43 6f   for all $nResCo
8d20: 64 65 20 72 65 73 75 6c 74 20 63 6f 64 65 20 76  de result code v
8d30: 61 6c 75 65 73 20 61 72 65 20 73 68 6f 77 6e 20  alues are shown 
8d40: 62 65 6c 6f 77 2c 0a 69 6e 20 6e 75 6d 65 72 69  below,.in numeri
8d50: 63 20 6f 72 64 65 72 2e 0a 22 0a 0a 23 20 47 65  c order.."..# Ge
8d60: 6e 65 72 61 74 65 20 74 68 65 20 74 61 62 6c 65  nerate the table
8d70: 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 64 65 73   of result codes
8d80: 0a 23 0a 66 6f 72 65 61 63 68 20 76 61 6c 20 5b  .#.foreach val [
8d90: 6c 73 6f 72 74 20 2d 69 6e 74 20 5b 61 72 72 61  lsort -int [arra
8da0: 79 20 6e 61 6d 65 73 20 76 61 6c 74 6f 6e 61 6d  y names valtonam
8db0: 65 5d 5d 20 7b 0a 20 20 73 65 74 20 6e 61 6d 65  e]] {.  set name
8dc0: 20 24 76 61 6c 74 6f 6e 61 6d 65 28 24 76 61 6c   $valtoname($val
8dd0: 29 0a 20 20 72 65 67 73 75 62 20 7b 73 71 6c 69  ).  regsub {sqli
8de0: 74 65 5f 7d 20 5b 73 74 72 69 6e 67 20 74 6f 6c  te_} [string tol
8df0: 6f 77 65 72 20 24 6e 61 6d 65 5d 20 7b 7d 20 74  ower $name] {} t
8e00: 61 67 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 21  ag.  hd_puts "<!
8e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 3e  --------------->
8e50: 5c 6e 22 0a 20 20 68 64 5f 66 72 61 67 6d 65 6e  \n".  hd_fragmen
8e60: 74 20 24 74 61 67 20 2d 2d 6f 76 65 72 72 69 64  t $tag --overrid
8e70: 65 20 24 6e 61 6d 65 0a 20 20 68 64 5f 70 75 74  e $name.  hd_put
8e80: 73 20 22 3c 68 33 3e 28 24 76 61 6c 29 20 24 76  s "<h3>($val) $v
8e90: 61 6c 74 6f 6e 61 6d 65 28 24 76 61 6c 29 3c 2f  altoname($val)</
8ea0: 68 33 3e 5c 6e 22 0a 20 20 68 64 5f 72 65 73 6f  h3>\n".  hd_reso
8eb0: 6c 76 65 20 24 72 65 73 64 65 73 63 28 24 6e 61  lve $resdesc($na
8ec0: 6d 65 29 5c 6e 5c 6e 0a 7d 0a 0a 3c 2f 74 63 6c  me)\n\n.}..</tcl
8ed0: 3e 0a                                            >.