Documentation Source Text

Hex Artifact Content
Login

Artifact 9d631d0a431d8c7e006dbe674e135eab2f17ee05:


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 53 51 4c  ine..  <p>.  SQL
0e20: 69 74 65 20 64 6f 65 73 20 6e 6f 74 20 63 75 72  ite does not cur
0e30: 72 65 6e 74 6c 79 20 67 65 6e 65 72 61 74 65 20  rently generate 
0e40: 74 68 69 73 20 72 65 73 75 6c 74 20 63 6f 64 65  this result code
0e50: 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 5b 61 70  ..  However, [ap
0e60: 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
0e70: 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d  d SQL functions]
0e80: 20 6f 72 0a 20 20 5b 76 69 72 74 75 61 6c 20 74   or.  [virtual t
0e90: 61 62 6c 65 73 5d 2c 20 6f 72 20 5b 56 46 53 65  ables], or [VFSe
0ea0: 73 5d 2c 20 6f 72 20 6f 74 68 65 72 20 65 78 74  s], or other ext
0eb0: 65 6e 73 69 6f 6e 73 20 6d 69 67 68 74 20 63 61  ensions might ca
0ec0: 75 73 65 20 74 68 69 73 20 0a 20 20 72 65 73 75  use this .  resu
0ed0: 6c 74 20 63 6f 64 65 20 74 6f 20 62 65 20 72 65  lt code to be re
0ee0: 74 75 72 6e 65 64 2e 0a 7d 0a 52 45 53 43 4f 44  turned..}.RESCOD
0ef0: 45 20 53 51 4c 49 54 45 5f 50 45 52 4d 20 20 20  E SQLITE_PERM   
0f00: 20 20 20 20 20 20 33 20 20 7b 0a 20 20 54 68 65        3  {.  The
0f10: 20 53 51 4c 49 54 45 5f 50 45 52 4d 20 72 65 73   SQLITE_PERM res
0f20: 75 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74  ult code indicat
0f30: 65 73 20 74 68 61 74 20 74 68 65 20 72 65 71 75  es that the requ
0f40: 65 73 74 65 64 20 61 63 63 65 73 73 20 6d 6f 64  ested access mod
0f50: 65 0a 20 20 66 6f 72 20 61 20 6e 65 77 6c 79 20  e.  for a newly 
0f60: 63 72 65 61 74 65 64 20 64 61 74 61 62 61 73 65  created database
0f70: 20 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 70 72   could not be pr
0f80: 6f 76 69 64 65 64 2e 0a 7d 0a 52 45 53 43 4f 44  ovided..}.RESCOD
0f90: 45 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20  E SQLITE_ABORT  
0fa0: 20 20 20 20 20 20 34 20 20 7b 0a 20 20 54 68 65        4  {.  The
0fb0: 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 72 65   SQLITE_ABORT re
0fc0: 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61  sult code indica
0fd0: 74 65 73 20 74 68 61 74 20 61 6e 20 6f 70 65 72  tes that an oper
0fe0: 61 74 69 6f 6e 20 77 61 73 20 61 62 6f 72 74 65  ation was aborte
0ff0: 64 0a 20 20 70 72 69 6f 72 20 74 6f 20 63 6f 6d  d.  prior to com
1000: 70 6c 65 74 69 6f 6e 2c 20 75 73 75 61 6c 6c 79  pletion, usually
1010: 20 62 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   be application 
1020: 72 65 71 75 65 73 74 2e 0a 20 20 53 65 65 20 61  request..  See a
1030: 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 49 4e 54  lso: [SQLITE_INT
1040: 45 52 52 55 50 54 5d 2e 0a 20 20 3c 70 3e 0a 20  ERRUPT]..  <p>. 
1050: 20 5e 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63   ^If the callbac
1060: 6b 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 5b 73  k function to [s
1070: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d 20 72  qlite3_exec()] r
1080: 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eturns non-zero,
1090: 20 74 68 65 6e 0a 20 20 73 71 6c 69 74 65 33 5f   then.  sqlite3_
10a0: 65 78 65 63 28 29 20 77 69 6c 6c 20 72 65 74 75  exec() will retu
10b0: 72 6e 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 2e  rn SQLITE_ABORT.
10c0: 0a 20 20 3c 70 3e 0a 20 20 5e 49 66 20 61 20 5b  .  <p>.  ^If a [
10d0: 52 4f 4c 4c 42 41 43 4b 5d 20 6f 70 65 72 61 74  ROLLBACK] operat
10e0: 69 6f 6e 20 6f 63 63 75 72 73 20 6f 6e 20 74 68  ion occurs on th
10f0: 65 20 73 61 6d 65 20 5b 64 61 74 61 62 61 73 65  e same [database
1100: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 73 0a   connection] as.
1110: 20 20 61 20 70 65 6e 64 69 6e 67 20 72 65 61 64    a pending read
1120: 20 6f 72 20 77 72 69 74 65 2c 20 74 68 65 6e 20   or write, then 
1130: 74 68 65 20 70 65 6e 64 69 6e 67 20 72 65 61 64  the pending read
1140: 20 6f 72 20 77 72 69 74 65 20 6d 61 79 20 66 61   or write may fa
1150: 69 6c 20 77 69 74 68 0a 20 20 61 6e 20 53 51 4c  il with.  an SQL
1160: 49 54 45 5f 41 42 4f 52 54 20 6f 72 20 5b 53 51  ITE_ABORT or [SQ
1170: 4c 49 54 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42  LITE_ABORT_ROLLB
1180: 41 43 4b 5d 20 65 72 72 6f 72 2e 0a 20 20 3c 70  ACK] error..  <p
1190: 3e 0a 20 20 5e 49 6e 20 61 64 64 69 74 69 6f 6e  >.  ^In addition
11a0: 20 74 6f 20 62 65 69 6e 67 20 61 20 72 65 73 75   to being a resu
11b0: 6c 74 20 63 6f 64 65 2c 0a 20 20 74 68 65 20 53  lt code,.  the S
11c0: 51 4c 49 54 45 5f 41 42 4f 52 54 20 76 61 6c 75  QLITE_ABORT valu
11d0: 65 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20 61  e is also used a
11e0: 73 20 61 20 5b 63 6f 6e 66 6c 69 63 74 20 72 65  s a [conflict re
11f0: 73 6f 6c 75 74 69 6f 6e 20 6d 6f 64 65 5d 0a 20  solution mode]. 
1200: 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74   returned from t
1210: 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 74 61 62  he [sqlite3_vtab
1220: 5f 6f 6e 5f 63 6f 6e 66 6c 69 63 74 28 29 5d 20  _on_conflict()] 
1230: 69 6e 74 65 72 66 61 63 65 2e 0a 7d 0a 52 45 53  interface..}.RES
1240: 43 4f 44 45 20 53 51 4c 49 54 45 5f 42 55 53 59  CODE SQLITE_BUSY
1250: 20 20 20 20 20 20 20 20 20 35 20 20 7b 0a 20 20           5  {.  
1260: 54 68 65 20 53 51 4c 49 54 45 5f 42 55 53 59 20  The SQLITE_BUSY 
1270: 72 65 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69  result code indi
1280: 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20 64  cates that the d
1290: 61 74 61 62 61 73 65 20 66 69 6c 65 20 63 6f 75  atabase file cou
12a0: 6c 64 20 6e 6f 74 0a 20 20 62 65 20 77 72 69 74  ld not.  be writ
12b0: 74 65 6e 20 28 6f 72 20 69 6e 20 73 6f 6d 65 20  ten (or in some 
12c0: 63 61 73 65 73 20 72 65 61 64 29 20 62 65 63 61  cases read) beca
12d0: 75 73 65 20 6f 66 20 63 6f 6e 63 75 72 72 65 6e  use of concurren
12e0: 74 20 61 63 74 69 76 69 74 79 20 62 79 20 0a 20  t activity by . 
12f0: 20 73 6f 6d 65 20 6f 74 68 65 72 20 5b 64 61 74   some other [dat
1300: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1310: 5d 2c 20 75 73 75 61 6c 6c 79 20 61 20 64 61 74  ], usually a dat
1320: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1330: 20 69 6e 20 61 0a 20 20 73 65 70 61 72 61 74 65   in a.  separate
1340: 20 70 72 6f 63 65 73 73 2e 0a 20 20 3c 70 3e 0a   process..  <p>.
1350: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69    For example, i
1360: 66 20 70 72 6f 63 65 73 73 20 41 20 69 73 20 69  f process A is i
1370: 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20  n the middle of 
1380: 61 20 6c 61 72 67 65 20 77 72 69 74 65 20 74 72  a large write tr
1390: 61 6e 73 61 63 74 69 6f 6e 0a 20 20 61 6e 64 20  ansaction.  and 
13a0: 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65  at the same time
13b0: 20 70 72 6f 63 65 73 73 20 42 20 61 74 74 65 6d   process B attem
13c0: 70 74 73 20 74 6f 20 73 74 61 72 74 20 61 20 6e  pts to start a n
13d0: 65 77 20 77 72 69 74 65 20 74 72 61 6e 73 61 63  ew write transac
13e0: 74 69 6f 6e 2c 0a 20 20 70 72 6f 63 65 73 73 20  tion,.  process 
13f0: 42 20 77 69 6c 6c 20 67 65 74 20 62 61 63 6b 20  B will get back 
1400: 61 6e 20 53 51 4c 49 54 45 5f 42 55 53 59 20 72  an SQLITE_BUSY r
1410: 65 73 75 6c 74 20 62 65 63 61 75 73 65 20 53 51  esult because SQ
1420: 4c 69 74 65 20 6f 6e 6c 79 20 73 75 70 70 6f 72  Lite only suppor
1430: 74 73 0a 20 20 6f 6e 65 20 77 72 69 74 65 72 20  ts.  one writer 
1440: 61 74 20 61 20 74 69 6d 65 2e 20 20 50 72 6f 63  at a time.  Proc
1450: 65 73 73 20 42 20 77 69 6c 6c 20 6e 65 65 64 20  ess B will need 
1460: 74 6f 20 77 61 69 74 20 66 6f 72 20 70 72 6f 63  to wait for proc
1470: 65 73 73 20 41 20 74 6f 20 66 69 6e 69 73 68 0a  ess A to finish.
1480: 20 20 69 74 73 20 74 72 61 6e 73 61 63 74 69 6f    its transactio
1490: 6e 20 62 65 66 6f 72 65 20 73 74 61 72 74 69 6e  n before startin
14a0: 67 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63 74  g a new transact
14b0: 69 6f 6e 2e 20 20 54 68 65 0a 20 20 5b 73 71 6c  ion.  The.  [sql
14c0: 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75  ite3_busy_timeou
14d0: 74 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  t()] and [sqlite
14e0: 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 29  3_busy_handler()
14f0: 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61 6e 64  ] interfaces and
1500: 0a 20 20 74 68 65 20 5b 62 75 73 79 5f 74 69 6d  .  the [busy_tim
1510: 65 6f 75 74 20 70 72 61 67 6d 61 5d 20 61 72 65  eout pragma] are
1520: 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 70 72   available to pr
1530: 6f 63 65 73 73 20 42 20 74 6f 20 68 65 6c 70 20  ocess B to help 
1540: 69 74 20 64 65 61 6c 0a 20 20 77 69 74 68 20 53  it deal.  with S
1550: 51 4c 49 54 45 5f 42 55 53 59 20 65 72 72 6f 72  QLITE_BUSY error
1560: 73 2e 0a 20 20 3c 70 3e 0a 20 20 41 6e 20 53 51  s..  <p>.  An SQ
1570: 4c 49 54 45 5f 42 55 53 59 20 65 72 72 6f 72 20  LITE_BUSY error 
1580: 63 61 6e 20 6f 63 63 75 72 20 61 74 20 61 6e 79  can occur at any
1590: 20 70 6f 69 6e 74 20 69 6e 20 61 20 74 72 61 6e   point in a tran
15a0: 73 61 63 74 69 6f 6e 3a 20 77 68 65 6e 20 74 68  saction: when th
15b0: 65 0a 20 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  e.  transaction 
15c0: 69 73 20 66 69 72 73 74 20 73 74 61 72 74 65 64  is first started
15d0: 2c 20 64 75 72 69 6e 67 20 61 6e 79 20 77 72 69  , during any wri
15e0: 74 65 20 6f 72 20 75 70 64 61 74 65 20 6f 70 65  te or update ope
15f0: 72 61 74 69 6f 6e 73 2c 20 6f 72 0a 20 20 77 68  rations, or.  wh
1600: 65 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  en the transacti
1610: 6f 6e 20 63 6f 6d 6d 69 74 73 2e 0a 20 20 54 6f  on commits..  To
1620: 20 61 76 6f 69 64 20 65 6e 63 6f 75 6e 74 65 72   avoid encounter
1630: 69 6e 67 20 53 51 4c 49 54 45 5f 42 55 53 59 20  ing SQLITE_BUSY 
1640: 65 72 72 6f 72 73 20 69 6e 20 74 68 65 20 6d 69  errors in the mi
1650: 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61  ddle of a transa
1660: 63 74 69 6f 6e 2c 0a 20 20 74 68 65 20 61 70 70  ction,.  the app
1670: 6c 69 63 61 74 69 6f 6e 20 63 61 6e 20 75 73 65  lication can use
1680: 20 5b 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54   [BEGIN IMMEDIAT
1690: 45 5d 20 69 6e 73 74 65 61 64 20 6f 66 20 6a 75  E] instead of ju
16a0: 73 74 20 5b 42 45 47 49 4e 5d 20 74 6f 0a 20 20  st [BEGIN] to.  
16b0: 73 74 61 72 74 20 61 20 74 72 61 6e 73 61 63 74  start a transact
16c0: 69 6f 6e 2e 20 20 54 68 65 20 5b 42 45 47 49 4e  ion.  The [BEGIN
16d0: 20 49 4d 4d 45 44 49 41 54 45 5d 20 63 6f 6d 6d   IMMEDIATE] comm
16e0: 61 6e 64 20 6d 69 67 68 74 20 69 74 73 65 6c 66  and might itself
16f0: 20 72 65 74 75 72 6e 0a 20 20 53 51 4c 49 54 45   return.  SQLITE
1700: 5f 42 55 53 59 2c 20 62 75 74 20 69 66 20 69 74  _BUSY, but if it
1710: 20 73 75 63 63 65 65 64 73 2c 20 74 68 65 6e 20   succeeds, then 
1720: 53 51 4c 69 74 65 20 67 75 61 72 61 6e 74 65 65  SQLite guarantee
1730: 73 20 74 68 61 74 20 6e 6f 20 0a 20 20 73 75 62  s that no .  sub
1740: 73 65 71 75 65 6e 74 20 6f 70 65 72 61 74 69 6f  sequent operatio
1750: 6e 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 64  ns on the same d
1760: 61 74 61 62 61 73 65 20 74 68 72 6f 75 67 68 20  atabase through 
1770: 74 68 65 20 6e 65 78 74 20 5b 43 4f 4d 4d 49 54  the next [COMMIT
1780: 5d 20 0a 20 20 77 69 6c 6c 20 72 65 74 75 72 6e  ] .  will return
1790: 20 53 51 4c 49 54 45 5f 42 55 53 59 2e 0a 20 20   SQLITE_BUSY..  
17a0: 3c 70 3e 0a 20 20 53 65 65 20 61 6c 73 6f 3a 20  <p>.  See also: 
17b0: 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5f 52 45   [SQLITE_BUSY_RE
17c0: 43 4f 56 45 52 59 5d 20 61 6e 64 20 5b 53 51 4c  COVERY] and [SQL
17d0: 49 54 45 5f 42 55 53 59 5f 53 4e 41 50 53 48 4f  ITE_BUSY_SNAPSHO
17e0: 54 5d 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20  T]..  <p>.  The 
17f0: 53 51 4c 49 54 45 5f 42 55 53 59 20 72 65 73 75  SQLITE_BUSY resu
1800: 6c 74 20 63 6f 64 65 20 64 69 66 66 65 72 73 20  lt code differs 
1810: 66 72 6f 6d 20 5b 53 51 4c 49 54 45 5f 4c 4f 43  from [SQLITE_LOC
1820: 4b 45 44 5d 20 69 6e 20 74 68 61 74 0a 20 20 53  KED] in that.  S
1830: 51 4c 49 54 45 5f 42 55 53 59 20 69 6e 64 69 63  QLITE_BUSY indic
1840: 61 74 65 73 20 61 20 63 6f 6e 66 6c 69 63 74 20  ates a conflict 
1850: 77 69 74 68 20 61 0a 20 20 73 65 70 61 72 61 74  with a.  separat
1860: 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
1870: 65 63 74 69 6f 6e 5d 2c 20 70 72 6f 62 61 62 6c  ection], probabl
1880: 79 20 69 6e 20 61 20 73 65 70 61 72 61 74 65 20  y in a separate 
1890: 70 72 6f 63 65 73 73 2c 0a 20 20 77 68 65 72 65  process,.  where
18a0: 61 73 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  as [SQLITE_LOCKE
18b0: 44 5d 20 0a 20 20 69 6e 64 69 63 61 74 65 73 20  D] .  indicates 
18c0: 61 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 69  a conflict withi
18d0: 6e 20 74 68 65 20 73 61 6d 65 20 5b 64 61 74 61  n the same [data
18e0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
18f0: 20 28 6f 72 20 73 6f 6d 65 74 69 6d 65 73 0a 20   (or sometimes. 
1900: 20 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e   a database conn
1910: 65 63 74 69 6f 6e 20 77 69 74 68 20 61 20 5b 73  ection with a [s
1920: 68 61 72 65 64 20 63 61 63 68 65 5d 29 2e 0a 7d  hared cache])..}
1930: 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f  .RESCODE SQLITE_
1940: 4c 4f 43 4b 45 44 20 20 20 20 20 20 20 36 20 20  LOCKED       6  
1950: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4c  {.  The SQLITE_L
1960: 4f 43 4b 45 44 20 72 65 73 75 6c 74 20 63 6f 64  OCKED result cod
1970: 65 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74  e indicates that
1980: 20 61 20 77 72 69 74 65 20 6f 70 65 72 61 74 69   a write operati
1990: 6f 6e 20 63 6f 75 6c 64 20 6e 6f 74 0a 20 20 63  on could not.  c
19a0: 6f 6e 74 69 6e 75 65 20 62 65 63 61 75 73 65 20  ontinue because 
19b0: 6f 66 20 61 20 63 6f 6e 66 6c 69 63 74 20 77 69  of a conflict wi
19c0: 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 5b 64  thin the same [d
19d0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
19e0: 6f 6e 5d 20 6f 72 0a 20 20 61 20 63 6f 6e 66 6c  on] or.  a confl
19f0: 69 63 74 20 77 69 74 68 20 61 20 64 69 66 66 65  ict with a diffe
1a00: 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f  rent database co
1a10: 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 75 73  nnection that us
1a20: 65 73 20 61 20 5b 73 68 61 72 65 64 20 63 61 63  es a [shared cac
1a30: 68 65 5d 2e 0a 20 20 3c 70 3e 0a 20 20 46 6f 72  he]..  <p>.  For
1a40: 20 65 78 61 6d 70 6c 65 2c 20 61 20 5b 44 52 4f   example, a [DRO
1a50: 50 20 54 41 42 4c 45 5d 20 73 74 61 74 65 6d 65  P TABLE] stateme
1a60: 6e 74 20 63 61 6e 6e 6f 74 20 62 65 20 72 75 6e  nt cannot be run
1a70: 20 77 68 69 6c 65 20 61 6e 6f 74 68 65 72 20 74   while another t
1a80: 68 72 65 61 64 0a 20 20 69 73 20 72 65 61 64 69  hread.  is readi
1a90: 6e 67 20 66 72 6f 6d 20 74 68 61 74 20 74 61 62  ng from that tab
1aa0: 6c 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b  le on the same [
1ab0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1ac0: 69 6f 6e 5d 20 62 65 63 61 75 73 65 20 0a 20 20  ion] because .  
1ad0: 64 72 6f 70 70 69 6e 67 20 74 68 65 20 74 61 62  dropping the tab
1ae0: 6c 65 20 77 6f 75 6c 64 20 64 65 6c 65 74 65 20  le would delete 
1af0: 74 68 65 20 74 61 62 6c 65 20 6f 75 74 20 66 72  the table out fr
1b00: 6f 6d 20 75 6e 64 65 72 20 74 68 65 20 63 6f 6e  om under the con
1b10: 63 75 72 72 65 6e 74 0a 20 20 72 65 61 64 65 72  current.  reader
1b20: 2e 0a 20 20 3c 70 3e 0a 20 20 54 68 65 20 53 51  ..  <p>.  The SQ
1b30: 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 72 65 73 75  LITE_LOCKED resu
1b40: 6c 74 20 63 6f 64 65 20 64 69 66 66 65 72 73 20  lt code differs 
1b50: 66 72 6f 6d 20 5b 53 51 4c 49 54 45 5f 42 55 53  from [SQLITE_BUS
1b60: 59 5d 20 69 6e 20 74 68 61 74 0a 20 20 53 51 4c  Y] in that.  SQL
1b70: 49 54 45 5f 4c 4f 43 4b 45 44 20 69 6e 64 69 63  ITE_LOCKED indic
1b80: 61 74 65 73 20 61 20 63 6f 6e 66 6c 69 63 74 20  ates a conflict 
1b90: 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b 64 61 74  on the same [dat
1ba0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1bb0: 5d 0a 20 20 28 6f 72 20 6f 6e 20 61 20 63 6f 6e  ].  (or on a con
1bc0: 6e 65 63 74 69 6f 6e 20 77 69 74 68 20 61 20 5b  nection with a [
1bd0: 73 68 61 72 65 64 20 63 61 63 68 65 5d 29 20 77  shared cache]) w
1be0: 68 65 72 65 61 73 20 5b 53 51 4c 49 54 45 5f 42  hereas [SQLITE_B
1bf0: 55 53 59 5d 20 69 6e 64 69 63 61 74 65 73 0a 20  USY] indicates. 
1c00: 20 61 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68   a conflict with
1c10: 20 61 20 64 69 66 66 65 72 65 6e 74 20 64 61 74   a different dat
1c20: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1c30: 2c 20 70 72 6f 62 61 62 6c 79 20 69 6e 20 61 20  , probably in a 
1c40: 64 69 66 66 65 72 65 6e 74 0a 20 20 70 72 6f 63  different.  proc
1c50: 65 73 73 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ess..}.RESCODE S
1c60: 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 20 20 20 20  QLITE_NOMEM     
1c70: 20 20 20 37 20 20 20 7b 0a 20 20 54 68 65 20 53     7   {.  The S
1c80: 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 72 65 73 75  QLITE_NOMEM resu
1c90: 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65  lt code indicate
1ca0: 73 20 74 68 61 74 20 53 51 4c 69 74 65 20 77 61  s that SQLite wa
1cb0: 73 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f  s unable to allo
1cc0: 63 61 74 65 0a 20 20 61 6c 6c 20 74 68 65 20 6d  cate.  all the m
1cd0: 65 6d 6f 72 79 20 69 74 20 6e 65 65 64 65 64 20  emory it needed 
1ce0: 74 6f 20 63 6f 6d 70 6c 65 74 65 20 74 68 65 20  to complete the 
1cf0: 6f 70 65 72 61 74 69 6f 6e 2e 20 20 49 6e 20 6f  operation.  In o
1d00: 74 68 65 72 20 77 6f 72 64 73 2c 20 61 6e 0a 20  ther words, an. 
1d10: 20 69 6e 74 65 72 6e 61 6c 20 63 61 6c 6c 20 74   internal call t
1d20: 6f 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  o [sqlite3_mallo
1d30: 63 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33  c()] or [sqlite3
1d40: 5f 72 65 61 6c 6c 6f 63 28 29 5d 20 68 61 73 20  _realloc()] has 
1d50: 66 61 69 6c 65 64 20 69 6e 0a 20 20 61 20 63 61  failed in.  a ca
1d60: 73 65 20 77 68 65 72 65 20 74 68 65 20 6d 65 6d  se where the mem
1d70: 6f 72 79 20 62 65 69 6e 67 20 61 6c 6c 6f 63 61  ory being alloca
1d80: 74 65 64 20 77 61 73 20 72 65 71 75 69 72 65 64  ted was required
1d90: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 63 6f 6e   in order to con
1da0: 74 69 6e 75 65 0a 20 20 74 68 65 20 6f 70 65 72  tinue.  the oper
1db0: 61 74 69 6f 6e 2e 0a 7d 0a 52 45 53 43 4f 44 45  ation..}.RESCODE
1dc0: 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59   SQLITE_READONLY
1dd0: 20 20 20 20 20 38 20 20 20 7b 0a 20 20 54 68 65       8   {.  The
1de0: 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59   SQLITE_READONLY
1df0: 20 72 65 73 75 6c 74 20 63 6f 64 65 20 69 73 20   result code is 
1e00: 72 65 74 75 72 6e 65 64 20 77 68 65 6e 20 61 6e  returned when an
1e10: 20 61 74 74 65 6d 70 74 20 69 73 20 6d 61 64 65   attempt is made
1e20: 20 74 6f 20 0a 20 20 61 6c 74 65 72 20 73 6f 6d   to .  alter som
1e30: 65 20 64 61 74 61 20 66 6f 72 20 77 68 69 63 68  e data for which
1e40: 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74   the current dat
1e50: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1e60: 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 0a 20   does not have. 
1e70: 20 77 72 69 74 65 20 70 65 72 6d 69 73 73 69 6f   write permissio
1e80: 6e 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  n..}.RESCODE SQL
1e90: 49 54 45 5f 49 4e 54 45 52 52 55 50 54 20 20 20  ITE_INTERRUPT   
1ea0: 20 39 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c   9   {.  The SQL
1eb0: 49 54 45 5f 49 4e 54 45 52 52 55 50 54 20 72 65  ITE_INTERRUPT re
1ec0: 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61  sult code indica
1ed0: 74 65 73 20 74 68 61 74 20 61 6e 20 6f 70 65 72  tes that an oper
1ee0: 61 74 69 6f 6e 20 77 61 73 0a 20 20 69 6e 74 65  ation was.  inte
1ef0: 72 72 75 70 74 65 64 20 62 79 20 74 68 65 20 5b  rrupted by the [
1f00: 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70  sqlite3_interrup
1f10: 74 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a  t()] interface..
1f20: 20 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c    See also: [SQL
1f30: 49 54 45 5f 41 42 4f 52 54 5d 0a 7d 0a 52 45 53  ITE_ABORT].}.RES
1f40: 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52  CODE SQLITE_IOER
1f50: 52 20 20 20 20 20 20 20 31 30 20 20 20 7b 0a 20  R       10   {. 
1f60: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
1f70: 52 20 72 65 73 75 6c 74 20 63 6f 64 65 20 73 61  R result code sa
1f80: 79 73 20 74 68 61 74 20 74 68 65 20 6f 70 65 72  ys that the oper
1f90: 61 74 69 6f 6e 20 63 6f 75 6c 64 20 6e 6f 74 20  ation could not 
1fa0: 66 69 6e 69 73 68 0a 20 20 62 65 63 61 75 73 65  finish.  because
1fb0: 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
1fc0: 79 73 74 65 6d 20 72 65 70 6f 72 74 65 64 20 61  ystem reported a
1fd0: 6e 20 49 2f 4f 20 65 72 72 6f 72 2e 0a 20 20 3c  n I/O error..  <
1fe0: 70 3e 0a 20 20 41 20 66 75 6c 6c 20 64 69 73 6b  p>.  A full disk
1ff0: 20 64 72 69 76 65 20 77 69 6c 6c 20 6e 6f 72 6d   drive will norm
2000: 61 6c 6c 79 20 67 69 76 65 20 61 6e 20 5b 53 51  ally give an [SQ
2010: 4c 49 54 45 5f 46 55 4c 4c 5d 20 65 72 72 6f 72  LITE_FULL] error
2020: 20 72 61 74 68 65 72 20 74 68 61 6e 0a 20 20 61   rather than.  a
2030: 6e 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 65  n SQLITE_IOERR e
2040: 72 72 6f 72 2e 0a 20 20 3c 70 3e 0a 20 20 54 68  rror..  <p>.  Th
2050: 65 72 65 20 61 72 65 20 6d 61 6e 79 20 64 69 66  ere are many dif
2060: 66 65 72 65 6e 74 20 65 78 74 65 6e 64 65 64 20  ferent extended 
2070: 72 65 73 75 6c 74 20 63 6f 64 65 73 20 66 6f 72  result codes for
2080: 20 49 2f 4f 20 65 72 72 6f 72 73 20 74 68 61 74   I/O errors that
2090: 0a 20 20 69 64 65 6e 74 69 66 79 20 74 68 65 20  .  identify the 
20a0: 73 70 65 63 69 66 69 63 20 49 2f 4f 20 6f 70 65  specific I/O ope
20b0: 72 61 74 69 6f 6e 20 74 68 61 74 20 66 61 69 6c  ration that fail
20c0: 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  ed..}.RESCODE SQ
20d0: 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 20 20 20  LITE_CORRUPT    
20e0: 20 31 31 20 20 20 7b 0a 20 20 54 68 65 20 53 51   11   {.  The SQ
20f0: 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 72 65 73  LITE_CORRUPT res
2100: 75 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74  ult code indicat
2110: 65 73 20 74 68 61 74 20 74 68 65 20 64 61 74 61  es that the data
2120: 62 61 73 65 20 66 69 6c 65 20 68 61 73 0a 20 20  base file has.  
2130: 62 65 65 6e 20 63 6f 72 72 75 70 74 65 64 2e 20  been corrupted. 
2140: 20 53 65 65 20 74 68 65 20 5b 48 6f 77 20 54 6f   See the [How To
2150: 20 43 6f 72 72 75 70 74 20 59 6f 75 72 20 44 61   Corrupt Your Da
2160: 74 61 62 61 73 65 20 46 69 6c 65 73 5d 20 66 6f  tabase Files] fo
2170: 72 0a 20 20 66 75 72 74 68 65 72 20 64 69 73 63  r.  further disc
2180: 75 73 73 69 6f 6e 20 6f 6e 20 68 6f 77 20 63 6f  ussion on how co
2190: 72 72 75 70 74 69 6f 6e 20 63 61 6e 20 6f 63 63  rruption can occ
21a0: 75 72 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  ur..}.RESCODE SQ
21b0: 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20  LITE_NOTFOUND   
21c0: 20 31 32 20 20 20 7b 0a 20 20 54 68 65 20 53 51   12   {.  The SQ
21d0: 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 72 65  LITE_NOTFOUND re
21e0: 73 75 6c 74 20 63 6f 64 65 20 69 73 20 75 73 65  sult code is use
21f0: 64 20 69 6e 20 74 77 6f 20 63 6f 6e 74 65 78 74  d in two context
2200: 73 2e 0a 20 20 53 51 4c 49 54 45 5f 4e 4f 54 46  s..  SQLITE_NOTF
2210: 4f 55 4e 44 20 63 61 6e 20 62 65 20 72 65 74 75  OUND can be retu
2220: 72 6e 65 64 20 62 79 20 74 68 65 20 5b 73 71 6c  rned by the [sql
2230: 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
2240: 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 20  l()] interface. 
2250: 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61   to indicate tha
2260: 74 20 74 68 65 20 5b 66 69 6c 65 20 63 6f 6e 74  t the [file cont
2270: 72 6f 6c 20 6f 70 63 6f 64 65 5d 20 70 61 73 73  rol opcode] pass
2280: 65 64 20 61 73 20 74 68 65 20 74 68 69 72 64 20  ed as the third 
2290: 61 72 67 75 6d 65 6e 74 0a 20 20 77 61 73 20 6e  argument.  was n
22a0: 6f 74 20 72 65 63 6f 67 6e 69 7a 65 64 20 62 79  ot recognized by
22b0: 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
22c0: 5b 56 46 53 5d 2e 0a 20 20 53 51 4c 49 54 45 5f  [VFS]..  SQLITE_
22d0: 4e 4f 54 46 4f 55 4e 44 20 63 61 6e 20 61 6c 73  NOTFOUND can als
22e0: 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 62 79  o be returned by
22f0: 20 74 68 65 20 78 53 65 74 53 79 73 74 65 6d 43   the xSetSystemC
2300: 61 6c 6c 28 29 20 6d 65 74 68 6f 64 20 6f 66 0a  all() method of.
2310: 20 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 76 66    an [sqlite3_vf
2320: 73 5d 20 6f 62 6a 65 63 74 2e 0a 20 20 3c 70 3e  s] object..  <p>
2330: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4e 4f  .  The SQLITE_NO
2340: 54 46 4f 55 4e 44 20 72 65 73 75 6c 74 20 63 6f  TFOUND result co
2350: 64 65 20 69 73 20 61 6c 73 6f 20 75 73 65 64 0a  de is also used.
2360: 20 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20    internally by 
2370: 74 68 65 20 53 51 4c 69 74 65 20 69 6d 70 6c 65  the SQLite imple
2380: 6d 65 6e 74 61 74 69 6f 6e 2c 20 62 75 74 20 74  mentation, but t
2390: 68 6f 73 65 20 69 6e 74 65 72 6e 61 6c 20 75 73  hose internal us
23a0: 65 73 20 61 72 65 0a 20 20 6e 6f 74 20 65 78 70  es are.  not exp
23b0: 6f 73 65 64 20 74 6f 20 74 68 65 20 61 70 70 6c  osed to the appl
23c0: 69 63 61 74 69 6f 6e 2e 0a 7d 0a 52 45 53 43 4f  ication..}.RESCO
23d0: 44 45 20 53 51 4c 49 54 45 5f 46 55 4c 4c 20 20  DE SQLITE_FULL  
23e0: 20 20 20 20 20 20 31 33 20 20 20 7b 0a 20 20 54        13   {.  T
23f0: 68 65 20 53 51 4c 49 54 45 5f 46 55 4c 4c 20 72  he SQLITE_FULL r
2400: 65 73 75 6c 74 20 63 6f 64 65 20 69 6e 64 69 63  esult code indic
2410: 61 74 65 73 20 74 68 61 74 20 61 20 77 72 69 74  ates that a writ
2420: 65 20 63 6f 75 6c 64 20 6e 6f 74 20 63 6f 6d 70  e could not comp
2430: 6c 65 74 65 0a 20 20 62 65 63 61 75 73 65 20 74  lete.  because t
2440: 68 65 20 64 69 73 6b 20 69 73 20 66 75 6c 6c 2e  he disk is full.
2450: 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 69 73    Note that this
2460: 20 65 72 72 6f 72 20 63 61 6e 20 6f 63 63 75 72   error can occur
2470: 20 77 68 65 6e 20 74 72 79 69 6e 67 0a 20 20 74   when trying.  t
2480: 6f 20 77 72 69 74 65 20 69 6e 66 6f 72 6d 61 74  o write informat
2490: 69 6f 6e 20 69 6e 74 6f 20 74 68 65 20 6d 61 69  ion into the mai
24a0: 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c  n database file,
24b0: 20 6f 72 20 69 74 20 63 61 6e 20 61 6c 73 6f 0a   or it can also.
24c0: 20 20 6f 63 63 75 72 20 77 68 65 6e 20 77 72 69    occur when wri
24d0: 74 69 6e 67 20 69 6e 74 6f 20 5b 74 65 6d 70 6f  ting into [tempo
24e0: 72 61 72 79 20 64 69 73 6b 20 66 69 6c 65 73 5d  rary disk files]
24f0: 2e 0a 20 20 3c 70 3e 0a 20 20 53 6f 6d 65 74 69  ..  <p>.  Someti
2500: 6d 65 73 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  mes applications
2510: 20 65 6e 63 6f 75 6e 74 65 72 20 74 68 69 73 20   encounter this 
2520: 65 72 72 6f 72 20 65 76 65 6e 20 74 68 6f 75 67  error even thoug
2530: 68 20 74 68 65 72 65 20 69 73 20 61 6e 0a 20 20  h there is an.  
2540: 61 62 75 6e 64 61 6e 63 65 20 6f 66 20 70 72 69  abundance of pri
2550: 6d 61 72 79 20 64 69 73 6b 20 73 70 61 63 65 20  mary disk space 
2560: 62 65 63 61 75 73 65 20 74 68 65 20 65 72 72 6f  because the erro
2570: 72 20 6f 63 63 75 72 73 20 77 68 65 6e 20 77 72  r occurs when wr
2580: 69 74 69 6e 67 0a 20 20 69 6e 74 6f 20 5b 74 65  iting.  into [te
2590: 6d 70 6f 72 61 72 79 20 64 69 73 6b 20 66 69 6c  mporary disk fil
25a0: 65 73 5d 20 6f 6e 20 61 20 73 79 73 74 65 6d 20  es] on a system 
25b0: 77 68 65 72 65 20 74 65 6d 70 6f 72 61 72 79 20  where temporary 
25c0: 66 69 6c 65 73 20 61 72 65 20 73 74 6f 72 65 64  files are stored
25d0: 0a 20 20 6f 6e 20 61 20 73 65 70 61 72 61 74 65  .  on a separate
25e0: 20 70 61 72 74 69 74 69 6f 6e 20 77 69 74 68 20   partition with 
25f0: 6d 75 63 68 20 6c 65 73 73 20 73 70 61 63 65 20  much less space 
2600: 74 68 61 74 20 74 68 65 20 70 72 69 6d 61 72 79  that the primary
2610: 20 64 69 73 6b 2e 0a 7d 0a 52 45 53 43 4f 44 45   disk..}.RESCODE
2620: 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e   SQLITE_CANTOPEN
2630: 20 20 20 20 31 34 20 20 20 7b 0a 20 20 54 68 65      14   {.  The
2640: 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e   SQLITE_CANTOPEN
2650: 20 72 65 73 75 6c 74 20 63 6f 64 65 20 69 6e 64   result code ind
2660: 69 63 61 74 65 73 20 74 68 61 74 20 53 51 4c 69  icates that SQLi
2670: 74 65 20 77 61 73 20 75 6e 61 62 6c 65 20 74 6f  te was unable to
2680: 0a 20 20 6f 70 65 6e 20 61 20 66 69 6c 65 2e 20  .  open a file. 
2690: 20 54 68 65 20 66 69 6c 65 20 69 6e 20 71 75 65   The file in que
26a0: 73 74 69 6f 6e 20 6d 69 67 68 74 20 62 65 20 61  stion might be a
26b0: 20 70 72 69 6d 61 72 79 20 64 61 74 61 62 61 73   primary databas
26c0: 65 20 66 69 6c 65 0a 20 20 6f 72 20 6f 6e 20 6f  e file.  or on o
26d0: 66 20 73 65 76 65 72 61 6c 20 5b 74 65 6d 70 6f  f several [tempo
26e0: 72 61 72 79 20 64 69 73 6b 20 66 69 6c 65 73 5d  rary disk files]
26f0: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
2700: 54 45 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20 31  TE_PROTOCOL    1
2710: 35 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  5   {.  The SQLI
2720: 54 45 5f 50 52 4f 54 4f 43 4f 4c 20 72 65 73 75  TE_PROTOCOL resu
2730: 6c 74 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65  lt code indicate
2740: 73 20 61 20 70 72 6f 62 6c 65 6d 20 77 69 74 68  s a problem with
2750: 20 74 68 65 20 66 69 6c 65 20 6c 6f 63 6b 69 6e   the file lockin
2760: 67 0a 20 20 70 72 6f 74 6f 63 6f 6c 20 75 73 65  g.  protocol use
2770: 64 20 62 79 20 53 51 4c 69 74 65 2e 20 20 54 68  d by SQLite.  Th
2780: 65 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f  e SQLITE_PROTOCO
2790: 4c 20 65 72 72 6f 72 20 69 73 20 63 75 72 72 65  L error is curre
27a0: 6e 74 6c 79 20 6f 6e 6c 79 0a 20 20 72 65 74 75  ntly only.  retu
27b0: 72 6e 65 64 20 77 68 65 6e 20 75 73 69 6e 67 20  rned when using 
27c0: 5b 57 41 4c 20 6d 6f 64 65 5d 20 61 6e 64 20 61  [WAL mode] and a
27d0: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 74 61  ttempting to sta
27e0: 72 74 20 61 20 6e 65 77 20 74 72 61 6e 73 61 63  rt a new transac
27f0: 74 69 6f 6e 2e 0a 20 20 54 68 65 72 65 20 69 73  tion..  There is
2800: 20 61 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f   a race conditio
2810: 6e 20 74 68 61 74 20 63 61 6e 20 6f 63 63 75 72  n that can occur
2820: 20 77 68 65 6e 20 74 77 6f 20 73 65 70 61 72 61   when two separa
2830: 74 65 20 0a 20 20 5b 64 61 74 61 62 61 73 65 20  te .  [database 
2840: 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 62 6f 74  connections] bot
2850: 68 20 74 72 79 20 74 6f 20 73 74 61 72 74 20 61  h try to start a
2860: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 61 74 20   transaction at 
2870: 74 68 65 20 73 61 6d 65 20 74 69 6d 65 0a 20 20  the same time.  
2880: 69 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d 2e 20 20  in [WAL mode].  
2890: 54 68 65 20 6c 6f 73 65 72 20 6f 66 20 74 68 65  The loser of the
28a0: 20 72 61 63 65 20 62 61 63 6b 73 20 6f 66 66 20   race backs off 
28b0: 61 6e 64 20 74 72 69 65 73 20 61 67 61 69 6e 2c  and tries again,
28c0: 20 61 66 74 65 72 0a 20 20 61 20 62 72 69 65 66   after.  a brief
28d0: 20 64 65 6c 61 79 2e 20 20 49 66 20 74 68 65 20   delay.  If the 
28e0: 73 61 6d 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  same connection 
28f0: 6c 6f 73 65 73 20 74 68 65 20 6c 6f 63 6b 69 6e  loses the lockin
2900: 67 20 72 61 63 65 20 64 6f 7a 65 6e 73 0a 20 20  g race dozens.  
2910: 6f 66 20 74 69 6d 65 73 20 6f 76 65 72 20 61 20  of times over a 
2920: 73 70 61 6e 20 6f 66 20 6d 75 6c 74 69 70 6c 65  span of multiple
2930: 20 73 65 63 6f 6e 64 73 2c 20 69 74 20 77 69 6c   seconds, it wil
2940: 6c 20 65 76 65 6e 74 75 61 6c 6c 79 20 67 69 76  l eventually giv
2950: 65 20 75 70 20 61 6e 64 0a 20 20 72 65 74 75 72  e up and.  retur
2960: 6e 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f  n SQLITE_PROTOCO
2970: 4c 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 50  L.  The SQLITE_P
2980: 52 4f 54 4f 43 4f 4c 20 65 72 72 6f 72 20 73 68  ROTOCOL error sh
2990: 6f 75 6c 64 20 61 70 70 65 61 72 20 69 6e 20 70  ould appear in p
29a0: 72 61 63 74 69 63 65 0a 20 20 76 65 72 79 2c 20  ractice.  very, 
29b0: 76 65 72 79 20 72 61 72 65 6c 79 2c 20 61 6e 64  very rarely, and
29c0: 20 6f 6e 6c 79 20 77 68 65 6e 20 74 68 65 72 65   only when there
29d0: 20 61 72 65 20 6d 61 6e 79 20 73 65 70 61 72 61   are many separa
29e0: 74 65 20 70 72 6f 63 65 73 73 65 73 20 61 6c 6c  te processes all
29f0: 0a 20 20 63 6f 6d 70 65 74 69 6e 67 20 69 6e 74  .  competing int
2a00: 65 6e 73 65 6c 79 20 74 6f 20 77 72 69 74 65 20  ensely to write 
2a10: 74 6f 20 74 68 65 20 73 61 6d 65 20 64 61 74 61  to the same data
2a20: 62 61 73 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20  base..}.RESCODE 
2a30: 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 20  SQLITE_EMPTY    
2a40: 20 20 20 31 36 20 20 20 7b 0a 20 20 54 68 65 20     16   {.  The 
2a50: 53 51 4c 49 54 45 5f 45 4d 50 54 59 20 72 65 73  SQLITE_EMPTY res
2a60: 75 6c 74 20 63 6f 64 65 20 69 73 20 6e 6f 74 20  ult code is not 
2a70: 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64 2e 0a  currently used..
2a80: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
2a90: 5f 53 43 48 45 4d 41 20 20 20 20 20 20 31 37 20  _SCHEMA      17 
2aa0: 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45    {.  The SQLITE
2ab0: 5f 53 43 48 45 4d 41 20 72 65 73 75 6c 74 20 63  _SCHEMA result c
2ac0: 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20 74 68  ode indicates th
2ad0: 61 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20  at the database 
2ae0: 73 63 68 65 6d 61 0a 20 20 68 61 73 20 63 68 61  schema.  has cha
2af0: 6e 67 65 64 2e 20 20 54 68 69 73 20 72 65 73 75  nged.  This resu
2b00: 6c 74 20 63 6f 64 65 20 63 61 6e 20 62 65 20 72  lt code can be r
2b10: 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 5b 73 71  eturned from [sq
2b20: 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 66 6f  lite3_step()] fo
2b30: 72 0a 20 20 61 20 5b 70 72 65 70 61 72 65 64 20  r.  a [prepared 
2b40: 73 74 61 74 65 6d 65 6e 74 5d 20 74 68 61 74 20  statement] that 
2b50: 77 61 73 20 67 65 6e 65 72 61 74 65 64 20 75 73  was generated us
2b60: 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  ing [sqlite3_pre
2b70: 70 61 72 65 28 29 5d 20 6f 72 0a 20 20 5b 73 71  pare()] or.  [sq
2b80: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
2b90: 29 5d 2e 20 20 49 66 20 74 68 65 20 64 61 74 61  )].  If the data
2ba0: 62 61 73 65 20 73 63 68 65 6d 61 20 77 61 73 20  base schema was 
2bb0: 63 68 61 6e 67 65 64 20 62 79 20 73 6f 6d 65 20  changed by some 
2bc0: 6f 74 68 65 72 0a 20 20 70 72 6f 63 65 73 73 20  other.  process 
2bd0: 69 6e 20 62 65 74 77 65 65 6e 20 74 68 65 20 74  in between the t
2be0: 69 6d 65 20 74 68 61 74 20 74 68 65 20 73 74 61  ime that the sta
2bf0: 74 65 6d 65 6e 74 20 77 61 73 20 70 72 65 70 61  tement was prepa
2c00: 72 65 64 20 61 6e 64 20 74 68 65 20 74 69 6d 65  red and the time
2c10: 0a 20 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  .  the statement
2c20: 20 77 61 73 20 72 75 6e 2c 20 74 68 69 73 20 65   was run, this e
2c30: 72 72 6f 72 20 63 61 6e 20 72 65 73 75 6c 74 2e  rror can result.
2c40: 0a 20 20 3c 70 3e 0a 20 20 49 66 20 61 20 5b 70  .  <p>.  If a [p
2c50: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
2c60: 74 5d 20 69 73 20 67 65 6e 65 72 61 74 65 64 20  t] is generated 
2c70: 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 70 72  from [sqlite3_pr
2c80: 65 70 61 72 65 5f 76 32 28 29 5d 20 74 68 65 6e  epare_v2()] then
2c90: 0a 20 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  .  the statement
2ca0: 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
2cb0: 79 20 72 65 2d 70 72 65 70 61 72 65 64 20 69 66  y re-prepared if
2cc0: 20 74 68 65 20 73 63 68 65 6d 61 20 63 68 61 6e   the schema chan
2cd0: 67 65 73 2c 20 75 70 20 74 6f 0a 20 20 5b 53 51  ges, up to.  [SQ
2ce0: 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f  LITE_MAX_SCHEMA_
2cf0: 52 45 54 52 59 5d 20 74 69 6d 65 73 20 28 64 65  RETRY] times (de
2d00: 66 61 75 6c 74 3a 20 35 30 29 2e 20 20 54 68 65  fault: 50).  The
2d10: 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
2d20: 5d 0a 20 20 69 6e 74 65 72 66 61 63 65 20 77 69  ].  interface wi
2d30: 6c 6c 20 6f 6e 6c 79 20 72 65 74 75 72 6e 20 53  ll only return S
2d40: 51 4c 49 54 45 5f 53 43 48 45 4d 41 20 62 61 63  QLITE_SCHEMA bac
2d50: 6b 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61  k to the applica
2d60: 74 69 6f 6e 20 69 66 20 0a 20 20 74 68 65 20 66  tion if .  the f
2d70: 61 69 6c 75 72 65 20 70 65 72 73 69 73 74 73 20  ailure persists 
2d80: 61 66 74 65 72 20 74 68 65 73 65 20 6d 61 6e 79  after these many
2d90: 20 72 65 74 72 69 65 73 2e 0a 7d 0a 52 45 53 43   retries..}.RESC
2da0: 4f 44 45 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49  ODE SQLITE_TOOBI
2db0: 47 20 20 20 20 20 20 31 38 20 20 20 7b 0a 20 20  G      18   {.  
2dc0: 54 68 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49  The SQLITE_TOOBI
2dd0: 47 20 65 72 72 6f 72 20 63 6f 64 65 20 69 6e 64  G error code ind
2de0: 69 63 61 74 65 73 20 74 68 61 74 20 61 20 73 74  icates that a st
2df0: 72 69 6e 67 20 6f 72 20 42 4c 4f 42 20 77 61 73  ring or BLOB was
2e00: 0a 20 20 74 6f 6f 20 6c 61 72 67 65 2e 20 20 54  .  too large.  T
2e10: 68 65 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d  he default maxim
2e20: 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 61 20 73  um length of a s
2e30: 74 72 69 6e 67 20 6f 72 20 42 4c 4f 42 20 69 6e  tring or BLOB in
2e40: 20 53 51 4c 69 74 65 20 69 73 0a 20 20 31 2c 30   SQLite is.  1,0
2e50: 30 30 2c 30 30 30 2c 30 30 30 20 62 79 74 65 73  00,000,000 bytes
2e60: 2e 20 20 54 68 69 73 20 6d 61 78 69 6d 75 6d 20  .  This maximum 
2e70: 6c 65 6e 67 74 68 20 63 61 6e 20 62 65 20 63 68  length can be ch
2e80: 61 6e 67 65 64 20 61 74 20 63 6f 6d 70 69 6c 65  anged at compile
2e90: 2d 74 69 6d 65 0a 20 20 75 73 69 6e 67 20 74 68  -time.  using th
2ea0: 65 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45  e [SQLITE_MAX_LE
2eb0: 4e 47 54 48 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  NGTH] compile-ti
2ec0: 6d 65 20 6f 70 74 69 6f 6e 2c 20 6f 72 20 61 74  me option, or at
2ed0: 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 0a   run-time using.
2ee0: 20 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c    the [sqlite3_l
2ef0: 69 6d 69 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45  imit](db,[SQLITE
2f00: 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 5d 2c 2e  _LIMIT_LENGTH],.
2f10: 2e 2e 29 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ..) interface.  
2f20: 54 68 65 0a 20 20 53 51 4c 49 54 45 5f 54 4f 4f  The.  SQLITE_TOO
2f30: 42 49 47 20 65 72 72 6f 72 20 72 65 73 75 6c 74  BIG error result
2f40: 73 20 77 68 65 6e 20 53 51 4c 69 74 65 20 65 6e  s when SQLite en
2f50: 63 6f 75 6e 74 65 72 73 20 61 20 73 74 72 69 6e  counters a strin
2f60: 67 20 6f 72 20 42 4c 4f 42 0a 20 20 74 68 61 74  g or BLOB.  that
2f70: 20 65 78 63 65 65 64 73 20 74 68 65 20 63 6f 6d   exceeds the com
2f80: 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20 72 75 6e  pile-time or run
2f90: 2d 74 69 6d 65 20 6c 69 6d 69 74 2e 0a 20 20 3c  -time limit..  <
2fa0: 70 3e 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f  p>.  The SQLITE_
2fb0: 54 4f 4f 42 49 47 20 65 72 72 6f 72 20 63 6f 64  TOOBIG error cod
2fc0: 65 20 63 61 6e 20 61 6c 73 6f 20 72 65 73 75 6c  e can also resul
2fd0: 74 20 77 68 65 6e 20 61 6e 20 6f 76 65 72 73 69  t when an oversi
2fe0: 7a 65 64 20 53 51 4c 0a 20 20 73 74 61 74 65 6d  zed SQL.  statem
2ff0: 65 6e 74 20 69 73 20 70 61 73 73 65 64 20 69 6e  ent is passed in
3000: 74 6f 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 73  to one of the [s
3010: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
3020: 32 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e  2()] interfaces.
3030: 0a 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c  .  The maximum l
3040: 65 6e 67 74 68 20 6f 66 20 61 6e 20 53 51 4c 20  ength of an SQL 
3050: 73 74 61 74 65 6d 65 6e 74 20 64 65 66 61 75 6c  statement defaul
3060: 74 73 20 74 6f 20 61 20 6d 75 63 68 20 73 6d 61  ts to a much sma
3070: 6c 6c 65 72 0a 20 20 76 61 6c 75 65 20 6f 66 20  ller.  value of 
3080: 31 2c 30 30 30 2c 30 30 30 20 62 79 74 65 73 2e  1,000,000 bytes.
3090: 20 20 54 68 65 20 6d 61 78 69 6d 75 6d 20 53 51    The maximum SQ
30a0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 6c 65 6e 67  L statement leng
30b0: 74 68 20 63 61 6e 20 62 65 0a 20 20 73 65 74 20  th can be.  set 
30c0: 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  at compile-time 
30d0: 75 73 69 6e 67 20 5b 53 51 4c 49 54 45 5f 4d 41  using [SQLITE_MA
30e0: 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 20 6f 72  X_SQL_LENGTH] or
30f0: 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 75   at run-time.  u
3100: 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6c 69  sing [sqlite3_li
3110: 6d 69 74 5d 28 64 62 2c 5b 53 51 4c 49 54 45 5f  mit](db,[SQLITE_
3120: 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48  LIMIT_SQL_LENGTH
3130: 5d 2c 2e 2e 2e 29 2e 0a 7d 0a 52 45 53 43 4f 44  ],...)..}.RESCOD
3140: 45 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  E SQLITE_CONSTRA
3150: 49 4e 54 20 20 31 39 20 20 20 7b 0a 20 20 54 68  INT  19   {.  Th
3160: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
3170: 49 4e 54 20 65 72 72 6f 72 20 63 6f 64 65 20 6d  INT error code m
3180: 65 61 6e 73 20 74 68 61 74 20 61 6e 20 53 51 4c  eans that an SQL
3190: 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
31a0: 61 74 69 6f 6e 0a 20 20 6f 63 63 75 72 72 65 64  ation.  occurred
31b0: 20 77 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f   while trying to
31c0: 20 70 72 6f 63 65 73 73 20 61 6e 20 53 51 4c 20   process an SQL 
31d0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 41 64 64 69  statement.  Addi
31e0: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
31f0: 6f 6e 0a 20 20 61 62 6f 75 74 20 74 68 65 20 66  on.  about the f
3200: 61 69 6c 65 64 20 63 6f 6e 73 74 72 61 69 6e 74  ailed constraint
3210: 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 62 79   can be found by
3220: 20 63 6f 6e 73 75 6c 74 69 6e 67 20 74 68 65 0a   consulting the.
3230: 20 20 61 63 63 6f 6d 70 61 6e 79 69 6e 67 20 65    accompanying e
3240: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 28 72 65  rror message (re
3250: 74 75 72 6e 65 64 20 76 69 61 20 5b 73 71 6c 69  turned via [sqli
3260: 74 65 33 5f 65 72 72 6d 73 67 28 29 5d 20 6f 72  te3_errmsg()] or
3270: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d  .  [sqlite3_errm
3280: 73 67 31 36 28 29 5d 29 20 6f 72 20 62 79 20 6c  sg16()]) or by l
3290: 6f 6f 6b 69 6e 67 20 61 74 20 74 68 65 20 5b 65  ooking at the [e
32a0: 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f  xtended error co
32b0: 64 65 5d 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  de]..}.RESCODE S
32c0: 51 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 20  QLITE_MISMATCH  
32d0: 20 20 32 30 20 20 20 7b 0a 20 20 54 68 65 20 53    20   {.  The S
32e0: 51 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 65  QLITE_MISMATCH e
32f0: 72 72 6f 72 20 63 6f 64 65 20 69 6e 64 69 63 61  rror code indica
3300: 74 65 73 20 61 20 64 61 74 61 74 79 70 65 20 6d  tes a datatype m
3310: 69 73 6d 61 74 63 68 2e 0a 20 20 3c 70 3e 0a 20  ismatch..  <p>. 
3320: 20 53 51 4c 69 74 65 20 69 73 20 6e 6f 72 6d 61   SQLite is norma
3330: 6c 6c 79 20 76 65 72 79 20 66 6f 72 67 69 76 69  lly very forgivi
3340: 6e 67 20 61 62 6f 75 74 20 6d 69 73 6d 61 74 63  ng about mismatc
3350: 68 65 73 20 62 65 74 77 65 65 6e 20 74 68 65 20  hes between the 
3360: 74 79 70 65 20 6f 66 0a 20 20 61 20 76 61 6c 75  type of.  a valu
3370: 65 20 61 6e 64 20 74 68 65 20 64 65 63 6c 61 72  e and the declar
3380: 65 64 20 74 79 70 65 20 6f 66 20 74 68 65 20 63  ed type of the c
3390: 6f 6e 74 61 69 6e 65 72 20 69 6e 20 77 68 69 63  ontainer in whic
33a0: 68 20 74 68 61 74 20 76 61 6c 75 65 20 69 73 0a  h that value is.
33b0: 20 20 74 6f 20 62 65 20 73 74 6f 72 65 64 2e 20    to be stored. 
33c0: 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 53 51   For example, SQ
33d0: 4c 69 74 65 20 61 6c 6c 6f 77 73 20 74 68 65 20  Lite allows the 
33e0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20 73  application to s
33f0: 74 6f 72 65 0a 20 20 61 20 6c 61 72 67 65 20 42  tore.  a large B
3400: 4c 4f 42 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20  LOB in a column 
3410: 77 69 74 68 20 61 20 64 65 63 6c 61 72 65 64 20  with a declared 
3420: 74 79 70 65 20 6f 66 20 42 4f 4f 4c 45 41 4e 2e  type of BOOLEAN.
3430: 20 20 42 75 74 20 69 6e 20 61 20 66 65 77 0a 20    But in a few. 
3440: 20 63 61 73 65 73 2c 20 53 51 4c 69 74 65 20 69   cases, SQLite i
3450: 73 20 73 74 72 69 63 74 20 61 62 6f 75 74 20 74  s strict about t
3460: 79 70 65 73 2e 20 20 54 68 65 20 53 51 4c 49 54  ypes.  The SQLIT
3470: 45 5f 4d 49 53 4d 41 54 43 48 20 65 72 72 6f 72  E_MISMATCH error
3480: 20 69 73 0a 20 20 72 65 74 75 72 6e 65 64 20 69   is.  returned i
3490: 6e 20 74 68 6f 73 65 20 66 65 77 20 63 61 73 65  n those few case
34a0: 73 20 77 68 65 6e 20 74 68 65 20 74 79 70 65 73  s when the types
34b0: 20 64 6f 20 6e 6f 74 20 6d 61 74 63 68 2e 0a 20   do not match.. 
34c0: 20 3c 70 3e 0a 20 20 54 68 65 20 5b 72 6f 77 69   <p>.  The [rowi
34d0: 64 5d 20 6f 66 20 61 20 74 61 62 6c 65 20 6d 75  d] of a table mu
34e0: 73 74 20 62 65 20 61 6e 20 69 6e 74 65 67 65 72  st be an integer
34f0: 2e 20 20 41 74 74 65 6d 70 74 20 74 6f 20 73 65  .  Attempt to se
3500: 74 20 74 68 65 20 5b 72 6f 77 69 64 5d 0a 20 20  t the [rowid].  
3510: 74 6f 20 61 6e 79 74 68 69 6e 67 20 6f 74 68 65  to anything othe
3520: 72 20 74 68 61 6e 20 61 6e 20 69 6e 74 65 67 65  r than an intege
3530: 72 20 28 6f 72 20 61 20 4e 55 4c 4c 20 77 68 69  r (or a NULL whi
3540: 63 68 20 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d  ch will be autom
3550: 61 74 69 63 61 6c 6c 79 0a 20 20 63 6f 6e 76 65  atically.  conve
3560: 72 74 65 64 20 69 6e 74 6f 20 74 68 65 20 6e 65  rted into the ne
3570: 78 74 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 74  xt available int
3580: 65 67 65 72 20 72 6f 77 69 64 29 20 72 65 73 75  eger rowid) resu
3590: 6c 74 73 20 69 6e 20 61 6e 0a 20 20 53 51 4c 49  lts in an.  SQLI
35a0: 54 45 5f 4d 49 53 4d 41 54 43 48 20 65 72 72 6f  TE_MISMATCH erro
35b0: 72 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  r..}.RESCODE SQL
35c0: 49 54 45 5f 4d 49 53 55 53 45 20 20 20 20 20 20  ITE_MISUSE      
35d0: 32 31 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c  21   {.  The SQL
35e0: 49 54 45 5f 4d 49 53 55 53 45 20 72 65 74 75 72  ITE_MISUSE retur
35f0: 6e 20 63 6f 64 65 20 6d 69 67 68 74 20 62 65 20  n code might be 
3600: 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65 20  returned if the 
3610: 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73 65 73  application uses
3620: 0a 20 20 61 6e 79 20 53 51 4c 69 74 65 20 69 6e  .  any SQLite in
3630: 74 65 72 66 61 63 65 20 69 6e 20 61 20 77 61 79  terface in a way
3640: 20 74 68 61 74 20 69 73 20 75 6e 64 65 66 69 6e   that is undefin
3650: 65 64 20 6f 72 20 75 6e 73 75 70 70 6f 72 74 65  ed or unsupporte
3660: 64 2e 20 20 46 6f 72 0a 20 20 65 78 61 6d 70 6c  d.  For.  exampl
3670: 65 2c 20 75 73 69 6e 67 20 61 20 5b 70 72 65 70  e, using a [prep
3680: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
3690: 61 66 74 65 72 20 74 68 61 74 20 70 72 65 70 61  after that prepa
36a0: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 68 61  red statement ha
36b0: 73 0a 20 20 62 65 65 6e 20 5b 73 71 6c 69 74 65  s.  been [sqlite
36c0: 33 5f 66 69 6e 61 6c 69 7a 65 7c 66 69 6e 61 6c  3_finalize|final
36d0: 69 7a 65 64 5d 20 6d 69 67 68 74 20 72 65 73 75  ized] might resu
36e0: 6c 74 20 69 6e 20 61 6e 20 53 51 4c 49 54 45 5f  lt in an SQLITE_
36f0: 4d 49 53 55 53 45 20 65 72 72 6f 72 2e 0a 20 20  MISUSE error..  
3700: 3c 70 3e 0a 20 20 53 51 4c 69 74 65 20 74 72 69  <p>.  SQLite tri
3710: 65 73 20 74 6f 20 64 65 74 65 63 74 20 6d 69 73  es to detect mis
3720: 75 73 65 20 61 6e 64 20 72 65 70 6f 72 74 20 74  use and report t
3730: 68 65 20 6d 69 73 75 73 65 20 75 73 69 6e 67 20  he misuse using 
3740: 74 68 69 73 20 72 65 73 75 6c 74 20 63 6f 64 65  this result code
3750: 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65  ..  However, the
3760: 72 65 20 69 73 20 6e 6f 20 67 75 61 72 61 6e 74  re is no guarant
3770: 65 65 20 74 68 61 74 20 74 68 65 20 64 65 74 65  ee that the dete
3780: 63 74 69 6f 6e 20 6f 66 20 6d 69 73 75 73 65 20  ction of misuse 
3790: 77 69 6c 6c 20 62 65 0a 20 20 73 75 63 63 65 73  will be.  succes
37a0: 73 66 75 6c 2e 20 20 4d 69 73 75 73 65 20 64 65  sful.  Misuse de
37b0: 74 65 63 74 69 6f 6e 20 69 73 20 70 72 6f 62 61  tection is proba
37c0: 62 69 6c 69 73 74 69 63 2e 20 20 41 70 70 6c 69  bilistic.  Appli
37d0: 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 0a 20  cations should. 
37e0: 20 6e 65 76 65 72 20 64 65 70 65 6e 64 20 6f 6e   never depend on
37f0: 20 61 6e 20 53 51 4c 49 54 45 5f 4d 49 53 55 53   an SQLITE_MISUS
3800: 45 20 72 65 74 75 72 6e 20 76 61 6c 75 65 2e 0a  E return value..
3810: 20 20 3c 70 3e 0a 20 20 49 66 20 53 51 4c 69 74    <p>.  If SQLit
3820: 65 20 65 76 65 72 20 72 65 74 75 72 6e 73 20 53  e ever returns S
3830: 51 4c 49 54 45 5f 4d 49 53 55 53 45 20 66 72 6f  QLITE_MISUSE fro
3840: 6d 20 61 6e 79 20 69 6e 74 65 72 66 61 63 65 2c  m any interface,
3850: 20 74 68 61 74 20 6d 65 61 6e 73 20 74 68 61 74   that means that
3860: 0a 20 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  .  the applicati
3870: 6f 6e 20 69 73 20 69 6e 63 6f 72 72 65 63 74 6c  on is incorrectl
3880: 79 20 63 6f 64 65 64 20 61 6e 64 20 6e 65 65 64  y coded and need
3890: 73 20 74 6f 20 62 65 20 66 69 78 65 64 2e 20 20  s to be fixed.  
38a0: 44 6f 20 6e 6f 74 20 73 68 69 70 0a 20 20 61 6e  Do not ship.  an
38b0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 68 61   application tha
38c0: 74 20 73 6f 6d 65 74 69 6d 65 73 20 72 65 74 75  t sometimes retu
38d0: 72 6e 73 20 53 51 4c 49 54 45 5f 4d 49 53 55 53  rns SQLITE_MISUS
38e0: 45 20 66 72 6f 6d 20 61 20 73 74 61 6e 64 61 72  E from a standar
38f0: 64 0a 20 20 53 51 4c 69 74 65 20 69 6e 74 65 72  d.  SQLite inter
3900: 66 61 63 65 20 62 65 63 61 75 73 65 20 74 68 61  face because tha
3910: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 6f  t application co
3920: 6e 74 61 69 6e 73 20 70 6f 74 65 6e 74 69 61 6c  ntains potential
3930: 6c 79 20 73 65 72 69 6f 75 73 20 62 75 67 73 2e  ly serious bugs.
3940: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
3950: 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20 20 32 32  E_NOLFS       22
3960: 20 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54     {.  The SQLIT
3970: 45 5f 4e 4f 4c 46 53 20 65 72 72 6f 72 20 63 61  E_NOLFS error ca
3980: 6e 20 62 65 20 72 65 74 75 72 6e 65 64 20 6f 6e  n be returned on
3990: 20 73 79 73 74 65 6d 73 20 74 68 61 74 20 64 6f   systems that do
39a0: 20 6e 6f 74 20 73 75 70 70 6f 72 74 0a 20 20 6c   not support.  l
39b0: 61 72 67 65 20 66 69 6c 65 73 20 77 68 65 6e 20  arge files when 
39c0: 74 68 65 20 64 61 74 61 62 61 73 65 20 67 72 6f  the database gro
39d0: 77 73 20 74 6f 20 62 65 20 6c 61 72 67 65 72 20  ws to be larger 
39e0: 74 68 61 6e 20 77 68 61 74 20 74 68 65 20 66 69  than what the fi
39f0: 6c 65 73 79 73 74 65 6d 0a 20 20 63 61 6e 20 68  lesystem.  can h
3a00: 61 6e 64 6c 65 2e 20 20 22 4e 4f 4c 46 53 22 20  andle.  "NOLFS" 
3a10: 73 74 61 6e 64 73 20 66 6f 72 20 22 4e 4f 20 4c  stands for "NO L
3a20: 61 72 67 65 20 46 69 6c 65 20 53 75 70 70 6f 72  arge File Suppor
3a30: 74 22 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  t"..}.RESCODE SQ
3a40: 4c 49 54 45 5f 41 55 54 48 20 20 20 20 20 20 20  LITE_AUTH       
3a50: 20 32 33 20 20 20 7b 0a 20 20 54 68 65 20 53 51   23   {.  The SQ
3a60: 4c 49 54 45 5f 41 55 54 48 20 65 72 72 6f 72 20  LITE_AUTH error 
3a70: 69 73 20 72 65 74 75 72 6e 65 64 20 77 68 65 6e  is returned when
3a80: 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33 5f   the.  [sqlite3_
3a90: 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 20 7c  set_authorizer |
3aa0: 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
3ab0: 62 61 63 6b 5d 20 69 6e 64 69 63 61 74 65 73 20  back] indicates 
3ac0: 74 68 61 74 20 61 6e 0a 20 20 53 51 4c 20 73 74  that an.  SQL st
3ad0: 61 74 65 6d 65 6e 74 20 62 65 69 6e 67 20 70 72  atement being pr
3ae0: 65 70 61 72 65 64 20 69 73 20 6e 6f 74 20 61 75  epared is not au
3af0: 74 68 6f 72 69 7a 65 64 2e 0a 7d 0a 52 45 53 43  thorized..}.RESC
3b00: 4f 44 45 20 53 51 4c 49 54 45 5f 46 4f 52 4d 41  ODE SQLITE_FORMA
3b10: 54 20 20 20 20 20 20 32 34 20 20 20 7b 0a 20 20  T      24   {.  
3b20: 54 68 65 20 53 51 4c 49 54 45 5f 46 4f 52 4d 41  The SQLITE_FORMA
3b30: 54 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  T error code is 
3b40: 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73  not currently us
3b50: 65 64 20 62 79 20 53 51 4c 69 74 65 2e 0a 7d 0a  ed by SQLite..}.
3b60: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 52  RESCODE SQLITE_R
3b70: 41 4e 47 45 20 20 20 20 20 20 20 32 35 20 20 20  ANGE       25   
3b80: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 52  {.  The SQLITE_R
3b90: 41 4e 47 45 20 65 72 72 6f 72 20 69 6e 64 69 63  ANGE error indic
3ba0: 65 73 20 74 68 61 74 20 74 68 65 20 70 61 72 61  es that the para
3bb0: 6d 65 74 65 72 20 6e 75 6d 62 65 72 20 61 72 67  meter number arg
3bc0: 75 6d 65 6e 74 0a 20 20 74 6f 20 6f 6e 65 20 6f  ument.  to one o
3bd0: 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 62  f the [sqlite3_b
3be0: 69 6e 64 5f 62 6c 6f 62 7c 73 71 6c 69 74 65 33  ind_blob|sqlite3
3bf0: 5f 62 69 6e 64 5d 20 72 6f 75 74 69 6e 65 73 20  _bind] routines 
3c00: 6f 72 20 74 68 65 0a 20 20 63 6f 6c 75 6d 6e 20  or the.  column 
3c10: 6e 75 6d 62 65 72 20 69 6e 20 6f 6e 65 20 6f 66  number in one of
3c20: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f   the [sqlite3_co
3c30: 6c 75 6d 6e 5f 69 6e 74 7c 73 71 6c 69 74 65 33  lumn_int|sqlite3
3c40: 5f 63 6f 6c 75 6d 6e 5d 0a 20 20 72 6f 75 74 69  _column].  routi
3c50: 6e 65 73 20 69 73 20 6f 75 74 20 6f 66 20 72 61  nes is out of ra
3c60: 6e 67 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  nge..}.RESCODE S
3c70: 51 4c 49 54 45 5f 4e 4f 54 41 44 42 20 20 20 20  QLITE_NOTADB    
3c80: 20 20 32 36 20 20 20 7b 0a 20 20 57 68 65 6e 20    26   {.  When 
3c90: 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 6f 70  attempting to op
3ca0: 65 6e 20 61 20 66 69 6c 65 2c 20 74 68 65 20 53  en a file, the S
3cb0: 51 4c 49 54 45 5f 4e 4f 54 41 44 42 20 65 72 72  QLITE_NOTADB err
3cc0: 6f 72 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  or indicates tha
3cd0: 74 0a 20 20 74 68 65 20 66 69 6c 65 20 62 65 69  t.  the file bei
3ce0: 6e 67 20 6f 70 65 6e 65 64 20 64 6f 65 73 20 6e  ng opened does n
3cf0: 6f 74 20 61 70 70 65 61 72 20 74 6f 20 62 65 20  ot appear to be 
3d00: 61 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62 61  an SQLite databa
3d10: 73 65 20 66 69 6c 65 2e 0a 7d 0a 52 45 53 43 4f  se file..}.RESCO
3d20: 44 45 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45  DE SQLITE_NOTICE
3d30: 20 20 20 20 20 20 32 37 20 20 20 7b 0a 20 20 54        27   {.  T
3d40: 68 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45  he SQLITE_NOTICE
3d50: 20 72 65 73 75 6c 74 20 63 6f 64 65 20 69 73 20   result code is 
3d60: 6e 6f 74 20 72 65 74 75 72 6e 65 64 20 62 79 20  not returned by 
3d70: 61 6e 79 20 43 2f 43 2b 2b 20 69 6e 74 65 72 66  any C/C++ interf
3d80: 61 63 65 2e 0a 20 20 48 6f 77 65 76 65 72 2c 20  ace..  However, 
3d90: 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20 28 6f  SQLITE_NOTICE (o
3da0: 72 20 72 61 74 68 65 72 20 6f 6e 65 20 6f 66 20  r rather one of 
3db0: 69 74 73 20 5b 65 78 74 65 6e 64 65 64 20 65 72  its [extended er
3dc0: 72 6f 72 20 63 6f 64 65 73 5d 29 0a 20 20 69 73  ror codes]).  is
3dd0: 20 73 6f 6d 65 74 69 6d 65 73 20 75 73 65 64 20   sometimes used 
3de0: 61 73 20 74 68 65 20 66 69 72 73 74 20 61 72 67  as the first arg
3df0: 75 6d 65 6e 74 20 69 6e 20 61 6e 20 5b 73 71 6c  ument in an [sql
3e00: 69 74 65 33 5f 6c 6f 67 28 29 5d 20 63 61 6c 6c  ite3_log()] call
3e10: 62 61 63 6b 0a 20 20 74 6f 20 69 6e 64 69 63 61  back.  to indica
3e20: 74 65 20 74 68 61 74 20 61 6e 20 75 6e 75 73 75  te that an unusu
3e30: 61 6c 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20  al operation is 
3e40: 74 61 6b 69 6e 67 20 70 6c 61 63 65 2e 0a 7d 0a  taking place..}.
3e50: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 57  RESCODE SQLITE_W
3e60: 41 52 4e 49 4e 47 20 20 20 20 20 32 38 20 20 20  ARNING     28   
3e70: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 57  {.  The SQLITE_W
3e80: 41 52 4e 49 4e 47 20 72 65 73 75 6c 74 20 63 6f  ARNING result co
3e90: 64 65 20 69 73 20 6e 6f 74 20 72 65 74 75 72 6e  de is not return
3ea0: 65 64 20 62 79 20 61 6e 79 20 43 2f 43 2b 2b 20  ed by any C/C++ 
3eb0: 69 6e 74 65 72 66 61 63 65 2e 0a 20 20 48 6f 77  interface..  How
3ec0: 65 76 65 72 2c 20 53 51 4c 49 54 45 5f 57 41 52  ever, SQLITE_WAR
3ed0: 4e 49 4e 47 20 28 6f 72 20 72 61 74 68 65 72 20  NING (or rather 
3ee0: 6f 6e 65 20 6f 66 20 69 74 73 20 5b 65 78 74 65  one of its [exte
3ef0: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 73  nded error codes
3f00: 5d 29 0a 20 20 69 73 20 73 6f 6d 65 74 69 6d 65  ]).  is sometime
3f10: 73 20 75 73 65 64 20 61 73 20 74 68 65 20 66 69  s used as the fi
3f20: 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 6e 20  rst argument in 
3f30: 61 6e 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28  an [sqlite3_log(
3f40: 29 5d 20 63 61 6c 6c 62 61 63 6b 0a 20 20 74 6f  )] callback.  to
3f50: 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 20 61   indicate that a
3f60: 6e 20 75 6e 75 73 75 61 6c 20 61 6e 64 20 70 6f  n unusual and po
3f70: 73 73 69 62 6c 79 20 69 6c 6c 2d 61 64 76 69 73  ssibly ill-advis
3f80: 65 64 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 0a  ed operation is.
3f90: 20 20 74 61 6b 69 6e 67 20 70 6c 61 63 65 2e 0a    taking place..
3fa0: 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45  }.RESCODE SQLITE
3fb0: 5f 52 4f 57 20 20 20 20 20 20 20 20 20 31 30 30  _ROW         100
3fc0: 20 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45    {.  The SQLITE
3fd0: 5f 52 4f 57 20 72 65 73 75 6c 74 20 63 6f 64 65  _ROW result code
3fe0: 20 72 65 74 75 72 6e 65 64 20 62 79 0a 20 20 5b   returned by.  [
3ff0: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20  sqlite3_step()] 
4000: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61  indicates that a
4010: 6e 6f 74 68 65 72 20 72 6f 77 20 6f 66 20 6f 75  nother row of ou
4020: 74 70 75 74 20 69 73 20 61 76 61 69 6c 61 62 6c  tput is availabl
4030: 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  e..}.RESCODE SQL
4040: 49 54 45 5f 44 4f 4e 45 20 20 20 20 20 20 20 20  ITE_DONE        
4050: 31 30 31 20 20 7b 0a 20 20 54 68 65 20 53 51 4c  101  {.  The SQL
4060: 49 54 45 5f 44 4f 4e 45 20 72 65 73 75 6c 74 20  ITE_DONE result 
4070: 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 20 74  code indicates t
4080: 68 61 74 20 61 6e 20 6f 70 65 72 61 74 69 6f 6e  hat an operation
4090: 20 68 61 73 20 63 6f 6d 70 6c 65 74 65 64 2e 0a   has completed..
40a0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 44 4f 4e    The SQLITE_DON
40b0: 45 20 72 65 73 75 6c 74 20 63 6f 64 65 20 69 73  E result code is
40c0: 20 6d 6f 73 74 20 63 6f 6d 6d 6f 6e 6c 79 20 73   most commonly s
40d0: 65 65 6e 20 61 73 20 61 20 72 65 74 75 72 6e 20  een as a return 
40e0: 76 61 6c 75 65 0a 20 20 66 72 6f 6d 20 5b 73 71  value.  from [sq
40f0: 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 69 6e  lite3_step()] in
4100: 64 69 63 61 74 69 6e 67 20 74 68 61 74 20 74 68  dicating that th
4110: 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
4120: 68 61 73 20 72 75 6e 20 74 6f 0a 20 20 63 6f 6d  has run to.  com
4130: 70 6c 65 74 69 6f 6e 2e 20 20 42 75 74 20 53 51  pletion.  But SQ
4140: 4c 49 54 45 5f 44 4f 4e 45 20 63 61 6e 20 61 6c  LITE_DONE can al
4150: 73 6f 20 62 65 20 72 65 74 75 72 6e 65 64 20 62  so be returned b
4160: 79 20 6f 74 68 65 72 20 6d 75 6c 74 69 2d 73 74  y other multi-st
4170: 65 70 0a 20 20 69 6e 74 65 72 66 61 63 65 73 20  ep.  interfaces 
4180: 73 75 63 68 20 61 73 20 5b 73 71 6c 69 74 65 33  such as [sqlite3
4190: 5f 62 61 63 6b 75 70 5f 73 74 65 70 28 29 5d 2e  _backup_step()].
41a0: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
41b0: 45 5f 49 4f 45 52 52 5f 52 45 41 44 20 20 20 20  E_IOERR_READ    
41c0: 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54            {SQLIT
41d0: 45 5f 49 4f 45 52 52 20 7c 20 28 31 3c 3c 38 29  E_IOERR | (1<<8)
41e0: 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45  } {.  The SQLITE
41f0: 5f 49 4f 45 52 52 5f 52 45 41 44 20 65 72 72 6f  _IOERR_READ erro
4200: 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78  r code is an [ex
4210: 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65  t-v-prim|extende
4220: 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20  d error code].  
4230: 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52  for [SQLITE_IOER
4240: 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 61 6e  R] indicating an
4250: 20 49 2f 4f 20 65 72 72 6f 72 20 69 6e 20 74 68   I/O error in th
4260: 65 20 5b 56 46 53 5d 20 6c 61 79 65 72 0a 20 20  e [VFS] layer.  
4270: 77 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f 20  while trying to 
4280: 72 65 61 64 20 66 72 6f 6d 20 61 20 66 69 6c 65  read from a file
4290: 20 6f 6e 20 64 69 73 6b 2e 20 20 54 68 69 73 20   on disk.  This 
42a0: 65 72 72 6f 72 20 6d 69 67 68 74 20 72 65 73 75  error might resu
42b0: 6c 74 0a 20 20 66 72 6f 6d 20 61 20 68 61 72 64  lt.  from a hard
42c0: 77 61 72 65 20 6d 61 6c 66 75 6e 63 74 69 6f 6e  ware malfunction
42d0: 20 6f 72 20 62 65 63 61 75 73 65 20 61 20 66 69   or because a fi
42e0: 6c 65 73 79 73 74 65 6d 20 63 61 6d 65 20 75 6e  lesystem came un
42f0: 6d 6f 75 6e 74 65 64 0a 20 20 77 68 69 6c 65 20  mounted.  while 
4300: 74 68 65 20 66 69 6c 65 20 77 61 73 20 6f 70 65  the file was ope
4310: 6e 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  n..}.RESCODE SQL
4320: 49 54 45 5f 49 4f 45 52 52 5f 53 48 4f 52 54 5f  ITE_IOERR_SHORT_
4330: 52 45 41 44 20 20 20 20 20 20 20 20 7b 53 51 4c  READ        {SQL
4340: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32 3c 3c  ITE_IOERR | (2<<
4350: 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  8)} {.  The SQLI
4360: 54 45 5f 49 4f 45 52 52 5f 53 48 4f 52 54 5f 52  TE_IOERR_SHORT_R
4370: 45 41 44 20 65 72 72 6f 72 20 63 6f 64 65 20 69  EAD error code i
4380: 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d  s an [ext-v-prim
4390: 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  |extended error 
43a0: 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c  code].  for [SQL
43b0: 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63  ITE_IOERR] indic
43c0: 61 74 69 6e 67 20 74 68 61 74 20 61 20 72 65 61  ating that a rea
43d0: 64 20 61 74 74 65 6d 70 74 20 69 6e 20 74 68 65  d attempt in the
43e0: 20 5b 56 46 53 5d 20 6c 61 79 65 72 0a 20 20 77   [VFS] layer.  w
43f0: 61 73 20 75 6e 61 62 6c 65 20 74 6f 20 6f 62 74  as unable to obt
4400: 61 69 6e 20 61 73 20 6d 61 6e 79 20 62 79 74 65  ain as many byte
4410: 73 20 61 73 20 77 61 73 20 72 65 71 75 65 73 74  s as was request
4420: 65 64 2e 20 20 54 68 69 73 20 6d 69 67 68 74 20  ed.  This might 
4430: 62 65 0a 20 20 64 75 65 20 74 6f 20 61 20 74 72  be.  due to a tr
4440: 75 6e 63 61 74 65 64 20 66 69 6c 65 2e 0a 7d 0a  uncated file..}.
4450: 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49  RESCODE SQLITE_I
4460: 4f 45 52 52 5f 57 52 49 54 45 20 20 20 20 20 20  OERR_WRITE      
4470: 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49         {SQLITE_I
4480: 4f 45 52 52 20 7c 20 28 33 3c 3c 38 29 7d 20 7b  OERR | (3<<8)} {
4490: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  .  The SQLITE_IO
44a0: 45 52 52 5f 57 52 49 54 45 20 65 72 72 6f 72 20  ERR_WRITE error 
44b0: 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d  code is an [ext-
44c0: 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20  v-prim|extended 
44d0: 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f  error code].  fo
44e0: 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d  r [SQLITE_IOERR]
44f0: 20 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49   indicating an I
4500: 2f 4f 20 65 72 72 6f 72 20 69 6e 20 74 68 65 20  /O error in the 
4510: 5b 56 46 53 5d 20 6c 61 79 65 72 0a 20 20 77 68  [VFS] layer.  wh
4520: 69 6c 65 20 74 72 79 69 6e 67 20 74 6f 20 77 72  ile trying to wr
4530: 69 74 65 20 69 6e 74 6f 20 61 20 66 69 6c 65 20  ite into a file 
4540: 6f 6e 20 64 69 73 6b 2e 20 20 54 68 69 73 20 65  on disk.  This e
4550: 72 72 6f 72 20 6d 69 67 68 74 20 72 65 73 75 6c  rror might resul
4560: 74 0a 20 20 66 72 6f 6d 20 61 20 68 61 72 64 77  t.  from a hardw
4570: 61 72 65 20 6d 61 6c 66 75 6e 63 74 69 6f 6e 20  are malfunction 
4580: 6f 72 20 62 65 63 61 75 73 65 20 61 20 66 69 6c  or because a fil
4590: 65 73 79 73 74 65 6d 20 63 61 6d 65 20 75 6e 6d  esystem came unm
45a0: 6f 75 6e 74 65 64 0a 20 20 77 68 69 6c 65 20 74  ounted.  while t
45b0: 68 65 20 66 69 6c 65 20 77 61 73 20 6f 70 65 6e  he file was open
45c0: 2e 20 20 54 68 69 73 20 65 72 72 6f 72 20 73 68  .  This error sh
45d0: 6f 75 6c 64 20 6e 6f 74 20 6f 63 63 75 72 20 69  ould not occur i
45e0: 66 20 74 68 65 20 66 69 6c 65 73 79 73 74 65 6d  f the filesystem
45f0: 0a 20 20 69 73 20 66 75 6c 6c 20 61 73 20 74 68  .  is full as th
4600: 65 72 65 20 69 73 20 61 20 73 65 70 61 72 61 74  ere is a separat
4610: 65 20 65 72 72 6f 72 20 63 6f 64 65 20 28 53 51  e error code (SQ
4620: 4c 49 54 45 5f 46 55 4c 4c 29 20 66 6f 72 20 74  LITE_FULL) for t
4630: 68 61 74 20 70 75 72 70 6f 73 65 2e 0a 7d 0a 52  hat purpose..}.R
4640: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f  ESCODE SQLITE_IO
4650: 45 52 52 5f 46 53 59 4e 43 20 20 20 20 20 20 20  ERR_FSYNC       
4660: 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f        {SQLITE_IO
4670: 45 52 52 20 7c 20 28 34 3c 3c 38 29 7d 20 7b 0a  ERR | (4<<8)} {.
4680: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45    The SQLITE_IOE
4690: 52 52 5f 46 53 59 4e 43 20 65 72 72 6f 72 20 63  RR_FSYNC error c
46a0: 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76  ode is an [ext-v
46b0: 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65  -prim|extended e
46c0: 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72  rror code].  for
46d0: 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20   [SQLITE_IOERR] 
46e0: 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f  indicating an I/
46f0: 4f 20 65 72 72 6f 72 20 69 6e 20 74 68 65 20 5b  O error in the [
4700: 56 46 53 5d 20 6c 61 79 65 72 0a 20 20 77 68 69  VFS] layer.  whi
4710: 6c 65 20 74 72 79 69 6e 67 20 74 6f 20 66 6c 75  le trying to flu
4720: 73 68 20 70 72 65 76 69 6f 75 73 6c 79 20 77 72  sh previously wr
4730: 69 74 74 65 6e 20 63 6f 6e 74 65 6e 74 20 6f 75  itten content ou
4740: 74 20 6f 66 20 4f 53 20 61 6e 64 2f 6f 72 0a 20  t of OS and/or. 
4750: 20 64 69 73 6b 2d 63 6f 6e 74 72 6f 6c 20 62 75   disk-control bu
4760: 66 66 65 72 73 20 61 6e 64 20 69 6e 74 6f 20 70  ffers and into p
4770: 65 72 73 69 73 74 65 6e 74 20 73 74 6f 72 61 67  ersistent storag
4780: 65 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72  e.  In other wor
4790: 64 73 2c 0a 20 20 74 68 69 73 20 63 6f 64 65 20  ds,.  this code 
47a0: 69 6e 64 69 63 61 74 65 73 20 61 20 70 72 6f 62  indicates a prob
47b0: 6c 65 6d 20 77 69 74 68 20 74 68 65 20 66 73 79  lem with the fsy
47c0: 6e 63 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c  nc() system call
47d0: 20 69 6e 20 75 6e 69 78 0a 20 20 6f 72 20 74 68   in unix.  or th
47e0: 65 20 46 6c 75 73 68 46 69 6c 65 42 75 66 66 65  e FlushFileBuffe
47f0: 72 73 28 29 20 73 79 73 74 65 6d 20 63 61 6c 6c  rs() system call
4800: 20 69 6e 20 77 69 6e 64 6f 77 73 2e 0a 7d 0a 52   in windows..}.R
4810: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f  ESCODE SQLITE_IO
4820: 45 52 52 5f 44 49 52 5f 46 53 59 4e 43 20 20 20  ERR_DIR_FSYNC   
4830: 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f        {SQLITE_IO
4840: 45 52 52 20 7c 20 28 35 3c 3c 38 29 7d 20 7b 0a  ERR | (5<<8)} {.
4850: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45    The SQLITE_IOE
4860: 52 52 5f 44 49 52 5f 46 53 59 4e 43 20 65 72 72  RR_DIR_FSYNC err
4870: 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65  or code is an [e
4880: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
4890: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20  ed error code]. 
48a0: 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45   for [SQLITE_IOE
48b0: 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 61  RR] indicating a
48c0: 6e 20 49 2f 4f 20 65 72 72 6f 72 20 69 6e 20 74  n I/O error in t
48d0: 68 65 20 5b 56 46 53 5d 20 6c 61 79 65 72 0a 20  he [VFS] layer. 
48e0: 20 77 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f   while trying to
48f0: 20 69 6e 76 6f 6b 65 20 66 73 79 6e 63 28 29 20   invoke fsync() 
4900: 6f 6e 20 61 20 64 69 72 65 63 74 6f 72 79 2e 20  on a directory. 
4910: 20 54 68 65 20 75 6e 69 78 20 5b 56 46 53 5d 20   The unix [VFS] 
4920: 61 74 74 65 6d 70 74 73 0a 20 20 74 6f 20 66 73  attempts.  to fs
4930: 79 6e 63 28 29 20 64 69 72 65 63 74 6f 72 69 65  ync() directorie
4940: 73 20 61 66 74 65 72 20 63 72 65 61 74 69 6e 67  s after creating
4950: 20 6f 72 20 64 65 6c 65 74 69 6e 67 20 63 65 72   or deleting cer
4960: 74 61 69 6e 20 66 69 6c 65 73 20 74 6f 0a 20 20  tain files to.  
4970: 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 6f 73  ensure that thos
4980: 65 20 66 69 6c 65 73 20 77 69 6c 6c 20 73 74 69  e files will sti
4990: 6c 6c 20 61 70 70 65 61 72 20 69 6e 20 74 68 65  ll appear in the
49a0: 20 66 69 6c 65 73 79 73 74 65 6d 20 66 6f 6c 6c   filesystem foll
49b0: 6f 77 69 6e 67 0a 20 20 61 20 70 6f 77 65 72 20  owing.  a power 
49c0: 6c 6f 73 73 20 6f 72 20 73 79 73 74 65 6d 20 63  loss or system c
49d0: 72 61 73 68 2e 20 20 54 68 69 73 20 65 72 72 6f  rash.  This erro
49e0: 72 20 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73  r code indicates
49f0: 20 61 20 70 72 6f 62 6c 65 6d 0a 20 20 61 74 74   a problem.  att
4a00: 65 6d 70 74 69 6e 67 20 74 6f 20 70 65 72 66 6f  empting to perfo
4a10: 72 6d 20 74 68 61 74 20 66 73 79 6e 63 28 29 2e  rm that fsync().
4a20: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
4a30: 45 5f 49 4f 45 52 52 5f 54 52 55 4e 43 41 54 45  E_IOERR_TRUNCATE
4a40: 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54            {SQLIT
4a50: 45 5f 49 4f 45 52 52 20 7c 20 28 36 3c 3c 38 29  E_IOERR | (6<<8)
4a60: 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45  } {.  The SQLITE
4a70: 5f 49 4f 45 52 52 5f 54 52 55 4e 43 41 54 45 20  _IOERR_TRUNCATE 
4a80: 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e  error code is an
4a90: 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74   [ext-v-prim|ext
4aa0: 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65  ended error code
4ab0: 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f  ].  for [SQLITE_
4ac0: 49 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e  IOERR] indicatin
4ad0: 67 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72 20 69  g an I/O error i
4ae0: 6e 20 74 68 65 20 5b 56 46 53 5d 20 6c 61 79 65  n the [VFS] laye
4af0: 72 0a 20 20 77 68 69 6c 65 20 74 72 79 69 6e 67  r.  while trying
4b00: 20 74 6f 20 74 72 75 6e 63 61 74 65 20 61 20 66   to truncate a f
4b10: 69 6c 65 20 74 6f 20 61 20 73 6d 61 6c 6c 65 72  ile to a smaller
4b20: 20 73 69 7a 65 2e 0a 7d 0a 52 45 53 43 4f 44 45   size..}.RESCODE
4b30: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53   SQLITE_IOERR_FS
4b40: 54 41 54 20 20 20 20 20 20 20 20 20 20 20 20 20  TAT             
4b50: 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  {SQLITE_IOERR | 
4b60: 28 37 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  (7<<8)} {.  The 
4b70: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53 54  SQLITE_IOERR_FST
4b80: 41 54 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  AT error code is
4b90: 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c   an [ext-v-prim|
4ba0: 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63  extended error c
4bb0: 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49  ode].  for [SQLI
4bc0: 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63 61  TE_IOERR] indica
4bd0: 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72 6f  ting an I/O erro
4be0: 72 20 69 6e 20 74 68 65 20 5b 56 46 53 5d 20 6c  r in the [VFS] l
4bf0: 61 79 65 72 0a 20 20 77 68 69 6c 65 20 74 72 79  ayer.  while try
4c00: 69 6e 67 20 74 6f 20 69 6e 76 6f 6b 65 20 66 73  ing to invoke fs
4c10: 74 61 74 28 29 20 28 6f 72 20 74 68 65 20 65 71  tat() (or the eq
4c20: 75 69 76 61 6c 65 6e 74 29 20 6f 6e 20 61 20 66  uivalent) on a f
4c30: 69 6c 65 20 69 6e 20 6f 72 64 65 72 0a 20 20 74  ile in order.  t
4c40: 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 6e 66 6f  o determine info
4c50: 72 6d 61 74 69 6f 6e 20 73 75 63 68 20 61 73 20  rmation such as 
4c60: 74 68 65 20 66 69 6c 65 20 73 69 7a 65 20 6f 72  the file size or
4c70: 20 61 63 63 65 73 73 20 70 65 72 6d 69 73 73 69   access permissi
4c80: 6f 6e 73 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  ons..}.RESCODE S
4c90: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 55 4e 4c 4f  QLITE_IOERR_UNLO
4ca0: 43 4b 20 20 20 20 20 20 20 20 20 20 20 20 7b 53  CK            {S
4cb0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 38  QLITE_IOERR | (8
4cc0: 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51  <<8)} {.  The SQ
4cd0: 4c 49 54 45 5f 49 4f 45 52 52 5f 55 4e 4c 4f 43  LITE_IOERR_UNLOC
4ce0: 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  K error code is 
4cf0: 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65  an [ext-v-prim|e
4d00: 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f  xtended error co
4d10: 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54  de].  for [SQLIT
4d20: 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63 61 74  E_IOERR] indicat
4d30: 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72  ing an I/O error
4d40: 0a 20 20 77 69 74 68 69 6e 20 78 55 6e 6c 6f 63  .  within xUnloc
4d50: 6b 20 6d 65 74 68 6f 64 20 6f 6e 20 74 68 65 20  k method on the 
4d60: 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68  [sqlite3_io_meth
4d70: 6f 64 73 5d 20 6f 62 6a 65 63 74 2e 0a 7d 0a 52  ods] object..}.R
4d80: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f  ESCODE SQLITE_IO
4d90: 45 52 52 5f 52 44 4c 4f 43 4b 20 20 20 20 20 20  ERR_RDLOCK      
4da0: 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f        {SQLITE_IO
4db0: 45 52 52 20 7c 20 28 39 3c 3c 38 29 7d 20 7b 0a  ERR | (9<<8)} {.
4dc0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45    The SQLITE_IOE
4dd0: 52 52 5f 55 4e 4c 4f 43 4b 20 65 72 72 6f 72 20  RR_UNLOCK error 
4de0: 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d  code is an [ext-
4df0: 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20  v-prim|extended 
4e00: 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f  error code].  fo
4e10: 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d  r [SQLITE_IOERR]
4e20: 20 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49   indicating an I
4e30: 2f 4f 20 65 72 72 6f 72 0a 20 20 77 69 74 68 69  /O error.  withi
4e40: 6e 20 78 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f  n xLock method o
4e50: 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  n the [sqlite3_i
4e60: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
4e70: 74 20 77 68 69 6c 65 20 74 72 79 69 6e 67 0a 20  t while trying. 
4e80: 20 74 6f 20 6f 62 74 61 69 6e 20 61 20 72 65 61   to obtain a rea
4e90: 64 20 6c 6f 63 6b 2e 0a 7d 0a 52 45 53 43 4f 44  d lock..}.RESCOD
4ea0: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44  E SQLITE_IOERR_D
4eb0: 45 4c 45 54 45 20 20 20 20 20 20 20 20 20 20 20  ELETE           
4ec0: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
4ed0: 20 28 31 30 3c 3c 38 29 7d 20 7b 0a 20 20 54 68   (10<<8)} {.  Th
4ee0: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 55  e SQLITE_IOERR_U
4ef0: 4e 4c 4f 43 4b 20 65 72 72 6f 72 20 63 6f 64 65  NLOCK error code
4f00: 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72   is an [ext-v-pr
4f10: 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f  im|extended erro
4f20: 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53  r code].  for [S
4f30: 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64  QLITE_IOERR] ind
4f40: 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65  icating an I/O e
4f50: 72 72 6f 72 0a 20 20 77 69 74 68 69 6e 20 78 44  rror.  within xD
4f60: 65 6c 65 74 65 20 6d 65 74 68 6f 64 20 6f 6e 20  elete method on 
4f70: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  the [sqlite3_vfs
4f80: 5d 20 6f 62 6a 65 63 74 2e 0a 7d 0a 52 45 53 43  ] object..}.RESC
4f90: 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ODE SQLITE_IOERR
4fa0: 5f 42 4c 4f 43 4b 45 44 20 20 20 20 20 20 20 20  _BLOCKED        
4fb0: 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52     {SQLITE_IOERR
4fc0: 20 7c 20 28 31 31 3c 3c 38 29 7d 20 7b 0a 20 20   | (11<<8)} {.  
4fd0: 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  The SQLITE_IOERR
4fe0: 5f 42 4c 4f 43 4b 45 44 20 65 72 72 6f 72 20 63  _BLOCKED error c
4ff0: 6f 64 65 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72  ode is no longer
5000: 20 75 73 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45   used..}.RESCODE
5010: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4e 4f   SQLITE_IOERR_NO
5020: 4d 45 4d 20 20 20 20 20 20 20 20 20 20 20 20 20  MEM             
5030: 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  {SQLITE_IOERR | 
5040: 28 31 32 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65  (12<<8)} {.  The
5050: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4e 4f   SQLITE_IOERR_NO
5060: 4d 45 4d 20 65 72 72 6f 72 20 63 6f 64 65 20 69  MEM error code i
5070: 73 20 73 6f 6d 65 74 69 6d 65 73 20 72 65 74 75  s sometimes retu
5080: 72 6e 65 64 20 62 79 20 74 68 65 20 5b 56 46 53  rned by the [VFS
5090: 5d 0a 20 20 6c 61 79 65 72 20 74 6f 20 69 6e 64  ].  layer to ind
50a0: 69 63 61 74 65 20 74 68 61 74 20 61 6e 20 6f 70  icate that an op
50b0: 65 72 61 74 69 6f 6e 20 63 6f 75 6c 64 20 6e 6f  eration could no
50c0: 74 20 62 65 20 63 6f 6d 70 6c 65 74 65 64 20 64  t be completed d
50d0: 75 65 20 74 6f 20 74 68 65 0a 20 20 69 6e 61 62  ue to the.  inab
50e0: 69 6c 69 74 79 20 74 6f 20 61 6c 6c 6f 63 61 74  ility to allocat
50f0: 65 20 73 75 66 66 69 63 69 65 6e 74 20 6d 65 6d  e sufficient mem
5100: 6f 72 79 2e 20 20 54 68 69 73 20 65 72 72 6f 72  ory.  This error
5110: 20 63 6f 64 65 20 69 73 20 6e 6f 72 6d 61 6c 6c   code is normall
5120: 79 0a 20 20 63 6f 6e 76 65 72 74 65 64 20 69 6e  y.  converted in
5130: 74 6f 20 5b 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d  to [SQLITE_NOMEM
5140: 5d 20 62 79 20 74 68 65 20 68 69 67 68 65 72 20  ] by the higher 
5150: 6c 61 79 65 72 73 20 6f 66 20 53 51 4c 69 74 65  layers of SQLite
5160: 20 62 65 66 6f 72 65 0a 20 20 62 65 69 6e 67 20   before.  being 
5170: 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65 20  returned to the 
5180: 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 7d 0a 52  application..}.R
5190: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f  ESCODE SQLITE_IO
51a0: 45 52 52 5f 41 43 43 45 53 53 20 20 20 20 20 20  ERR_ACCESS      
51b0: 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f        {SQLITE_IO
51c0: 45 52 52 20 7c 20 28 31 33 3c 3c 38 29 7d 20 7b  ERR | (13<<8)} {
51d0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  .  The SQLITE_IO
51e0: 45 52 52 5f 41 43 43 45 53 53 20 65 72 72 6f 72  ERR_ACCESS error
51f0: 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74   code is an [ext
5200: 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64  -v-prim|extended
5210: 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66   error code].  f
5220: 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52  or [SQLITE_IOERR
5230: 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20  ] indicating an 
5240: 49 2f 4f 20 65 72 72 6f 72 0a 20 20 77 69 74 68  I/O error.  with
5250: 69 6e 20 74 68 65 20 78 41 63 63 65 73 73 20 6d  in the xAccess m
5260: 65 74 68 6f 64 20 6f 6e 20 74 68 65 20 5b 73 71  ethod on the [sq
5270: 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63  lite3_vfs] objec
5280: 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  t..}.RESCODE SQL
5290: 49 54 45 5f 49 4f 45 52 52 5f 43 48 45 43 4b 52  ITE_IOERR_CHECKR
52a0: 45 53 45 52 56 45 44 4c 4f 43 4b 20 7b 53 51 4c  ESERVEDLOCK {SQL
52b0: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31 34 3c  ITE_IOERR | (14<
52c0: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
52d0: 49 54 45 5f 49 4f 45 52 52 5f 43 48 45 43 4b 52  ITE_IOERR_CHECKR
52e0: 45 53 45 52 56 45 44 4c 4f 43 4b 20 65 72 72 6f  ESERVEDLOCK erro
52f0: 72 20 63 6f 64 65 20 69 73 0a 20 20 61 6e 20 5b  r code is.  an [
5300: 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e  ext-v-prim|exten
5310: 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a  ded error code].
5320: 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f    for [SQLITE_IO
5330: 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20  ERR] indicating 
5340: 61 6e 20 49 2f 4f 20 65 72 72 6f 72 0a 20 20 77  an I/O error.  w
5350: 69 74 68 69 6e 20 74 68 65 20 78 43 68 65 63 6b  ithin the xCheck
5360: 52 65 73 65 72 76 65 64 4c 6f 63 6b 20 6d 65 74  ReservedLock met
5370: 68 6f 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69  hod on the [sqli
5380: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
5390: 6f 62 6a 65 63 74 2e 0a 7d 0a 52 45 53 43 4f 44  object..}.RESCOD
53a0: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4c  E SQLITE_IOERR_L
53b0: 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20 20  OCK             
53c0: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
53d0: 20 28 31 35 3c 3c 38 29 7d 20 7b 0a 20 20 54 68   (15<<8)} {.  Th
53e0: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4c  e SQLITE_IOERR_L
53f0: 4f 43 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69  OCK error code i
5400: 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d  s an [ext-v-prim
5410: 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  |extended error 
5420: 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c  code].  for [SQL
5430: 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63  ITE_IOERR] indic
5440: 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72  ating an I/O err
5450: 6f 72 20 69 6e 20 74 68 65 20 0a 20 20 61 64 76  or in the .  adv
5460: 69 73 6f 72 79 20 66 69 6c 65 20 6c 6f 63 6b 69  isory file locki
5470: 6e 67 20 6c 6f 67 69 63 2e 0a 20 20 55 73 75 61  ng logic..  Usua
5480: 6c 6c 79 20 61 6e 20 53 51 4c 49 54 45 5f 49 4f  lly an SQLITE_IO
5490: 45 52 52 5f 4c 4f 43 4b 20 65 72 72 6f 72 20 69  ERR_LOCK error i
54a0: 6e 64 69 63 61 74 65 73 20 61 20 70 72 6f 62 6c  ndicates a probl
54b0: 65 6d 20 6f 62 74 61 69 6e 69 6e 67 0a 20 20 61  em obtaining.  a
54c0: 20 5b 50 45 4e 44 49 4e 47 20 6c 6f 63 6b 5d 2e   [PENDING lock].
54d0: 20 20 48 6f 77 65 76 65 72 20 69 74 20 63 61 6e    However it can
54e0: 20 61 6c 73 6f 20 69 6e 64 69 63 61 74 65 20 6d   also indicate m
54f0: 69 73 63 65 6c 6c 61 6e 65 6f 75 73 0a 20 20 6c  iscellaneous.  l
5500: 6f 63 6b 69 6e 67 20 65 72 72 6f 72 73 20 6f 6e  ocking errors on
5510: 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 73 70 65   some of the spe
5520: 63 69 61 6c 69 7a 65 64 20 5b 56 46 53 65 73 5d  cialized [VFSes]
5530: 20 75 73 65 64 20 6f 6e 20 4d 61 63 73 2e 0a 7d   used on Macs..}
5540: 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f  .RESCODE SQLITE_
5550: 49 4f 45 52 52 5f 43 4c 4f 53 45 20 20 20 20 20  IOERR_CLOSE     
5560: 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f          {SQLITE_
5570: 49 4f 45 52 52 20 7c 20 28 31 36 3c 3c 38 29 7d  IOERR | (16<<8)}
5580: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
5590: 49 4f 45 52 52 5f 41 43 43 45 53 53 20 65 72 72  IOERR_ACCESS err
55a0: 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65  or code is an [e
55b0: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
55c0: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20  ed error code]. 
55d0: 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45   for [SQLITE_IOE
55e0: 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 61  RR] indicating a
55f0: 6e 20 49 2f 4f 20 65 72 72 6f 72 0a 20 20 77 69  n I/O error.  wi
5600: 74 68 69 6e 20 74 68 65 20 78 43 6c 6f 73 65 20  thin the xClose 
5610: 6d 65 74 68 6f 64 20 6f 6e 20 74 68 65 20 5b 73  method on the [s
5620: 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
5630: 73 5d 20 6f 62 6a 65 63 74 2e 0a 7d 0a 52 45 53  s] object..}.RES
5640: 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52  CODE SQLITE_IOER
5650: 52 5f 44 49 52 5f 43 4c 4f 53 45 20 20 20 20 20  R_DIR_CLOSE     
5660: 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52      {SQLITE_IOER
5670: 52 20 7c 20 28 31 37 3c 3c 38 29 7d 20 7b 0a 20  R | (17<<8)} {. 
5680: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
5690: 52 5f 44 49 52 5f 43 4c 4f 53 45 20 65 72 72 6f  R_DIR_CLOSE erro
56a0: 72 20 63 6f 64 65 20 69 73 20 6e 6f 20 6c 6f 6e  r code is no lon
56b0: 67 65 72 20 75 73 65 64 2e 0a 7d 0a 52 45 53 43  ger used..}.RESC
56c0: 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ODE SQLITE_IOERR
56d0: 5f 53 48 4d 4f 50 45 4e 20 20 20 20 20 20 20 20  _SHMOPEN        
56e0: 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52     {SQLITE_IOERR
56f0: 20 7c 20 28 31 38 3c 3c 38 29 7d 20 7b 0a 20 20   | (18<<8)} {.  
5700: 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  The SQLITE_IOERR
5710: 5f 53 48 4d 4f 50 45 4e 20 65 72 72 6f 72 20 63  _SHMOPEN error c
5720: 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76  ode is an [ext-v
5730: 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65  -prim|extended e
5740: 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72  rror code].  for
5750: 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20   [SQLITE_IOERR] 
5760: 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f  indicating an I/
5770: 4f 20 65 72 72 6f 72 0a 20 20 77 69 74 68 69 6e  O error.  within
5780: 20 74 68 65 20 78 53 68 6d 4d 61 70 20 6d 65 74   the xShmMap met
5790: 68 6f 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69  hod on the [sqli
57a0: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
57b0: 6f 62 6a 65 63 74 0a 20 20 77 68 69 6c 65 20 74  object.  while t
57c0: 72 79 69 6e 67 20 74 6f 20 6f 70 65 6e 20 61 20  rying to open a 
57d0: 6e 65 77 20 73 68 61 72 65 64 20 6d 65 6d 6f 72  new shared memor
57e0: 79 20 73 65 67 6d 65 6e 74 2e 0a 7d 0a 52 45 53  y segment..}.RES
57f0: 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52  CODE SQLITE_IOER
5800: 52 5f 53 48 4d 53 49 5a 45 20 20 20 20 20 20 20  R_SHMSIZE       
5810: 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52      {SQLITE_IOER
5820: 52 20 7c 20 28 31 39 3c 3c 38 29 7d 20 7b 0a 20  R | (19<<8)} {. 
5830: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
5840: 52 5f 53 48 4d 53 49 5a 45 20 65 72 72 6f 72 20  R_SHMSIZE error 
5850: 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d  code is an [ext-
5860: 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20  v-prim|extended 
5870: 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f  error code].  fo
5880: 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d  r [SQLITE_IOERR]
5890: 20 69 6e 64 69 63 61 74 69 6e 67 20 61 6e 20 49   indicating an I
58a0: 2f 4f 20 65 72 72 6f 72 0a 20 20 77 69 74 68 69  /O error.  withi
58b0: 6e 20 74 68 65 20 78 53 68 6d 4d 61 70 20 6d 65  n the xShmMap me
58c0: 74 68 6f 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c  thod on the [sql
58d0: 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d  ite3_io_methods]
58e0: 20 6f 62 6a 65 63 74 0a 20 20 77 68 69 6c 65 20   object.  while 
58f0: 74 72 79 69 6e 67 20 74 6f 20 72 65 73 69 7a 65  trying to resize
5900: 20 61 6e 20 65 78 69 73 74 69 6e 67 20 73 68 61   an existing sha
5910: 72 65 64 20 6d 65 6d 6f 72 79 20 73 65 67 6d 65  red memory segme
5920: 6e 74 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  nt..}.RESCODE SQ
5930: 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 4c 4f  LITE_IOERR_SHMLO
5940: 43 4b 20 20 20 20 20 20 20 20 20 20 20 7b 53 51  CK           {SQ
5950: 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32 30  LITE_IOERR | (20
5960: 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51  <<8)} {.  The SQ
5970: 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 4c 4f  LITE_IOERR_SHMLO
5980: 43 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  CK error code is
5990: 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e   no longer used.
59a0: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
59b0: 45 5f 49 4f 45 52 52 5f 53 48 4d 4d 41 50 20 20  E_IOERR_SHMMAP  
59c0: 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54            {SQLIT
59d0: 45 5f 49 4f 45 52 52 20 7c 20 28 32 31 3c 3c 38  E_IOERR | (21<<8
59e0: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
59f0: 45 5f 49 4f 45 52 52 5f 53 48 4d 4d 41 50 20 65  E_IOERR_SHMMAP e
5a00: 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20  rror code is an 
5a10: 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65  [ext-v-prim|exte
5a20: 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d  nded error code]
5a30: 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49  .  for [SQLITE_I
5a40: 4f 45 52 52 5d 20 69 6e 64 69 63 61 74 69 6e 67  OERR] indicating
5a50: 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72 0a 20 20   an I/O error.  
5a60: 77 69 74 68 69 6e 20 74 68 65 20 78 53 68 6d 4d  within the xShmM
5a70: 61 70 20 6d 65 74 68 6f 64 20 6f 6e 20 74 68 65  ap method on the
5a80: 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74   [sqlite3_io_met
5a90: 68 6f 64 73 5d 20 6f 62 6a 65 63 74 0a 20 20 77  hods] object.  w
5aa0: 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f 20 6d  hile trying to m
5ab0: 61 70 20 61 20 73 68 61 72 65 64 20 6d 65 6d 6f  ap a shared memo
5ac0: 72 79 20 73 65 67 6d 65 6e 74 20 69 6e 74 6f 20  ry segment into 
5ad0: 74 68 65 20 70 72 6f 63 65 73 73 20 61 64 64 72  the process addr
5ae0: 65 73 73 20 73 70 61 63 65 2e 0a 7d 0a 52 45 53  ess space..}.RES
5af0: 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f 45 52  CODE SQLITE_IOER
5b00: 52 5f 53 45 45 4b 20 20 20 20 20 20 20 20 20 20  R_SEEK          
5b10: 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52      {SQLITE_IOER
5b20: 52 20 7c 20 28 32 32 3c 3c 38 29 7d 20 7b 0a 20  R | (22<<8)} {. 
5b30: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 45 52   The SQLITE_IOER
5b40: 52 5f 53 45 45 4b 20 65 72 72 6f 72 20 63 6f 64  R_SEEK error cod
5b50: 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70  e is an [ext-v-p
5b60: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
5b70: 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b  or code].  for [
5b80: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e  SQLITE_IOERR] in
5b90: 64 69 63 61 74 69 6e 67 20 61 6e 20 49 2f 4f 20  dicating an I/O 
5ba0: 65 72 72 6f 72 0a 20 20 77 69 74 68 69 6e 20 74  error.  within t
5bb0: 68 65 20 78 52 65 61 64 20 6f 72 20 78 57 72 69  he xRead or xWri
5bc0: 74 65 20 6d 65 74 68 6f 64 73 20 6f 6e 20 74 68  te methods on th
5bd0: 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  e [sqlite3_io_me
5be0: 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 0a 20 20  thods] object.  
5bf0: 77 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f 20  while trying to 
5c00: 73 65 65 6b 20 61 20 66 69 6c 65 20 64 65 73 63  seek a file desc
5c10: 72 69 70 74 6f 72 20 74 6f 20 74 68 65 20 62 65  riptor to the be
5c20: 67 69 6e 6e 69 6e 67 20 70 6f 69 6e 74 20 6f 66  ginning point of
5c30: 20 74 68 65 0a 20 20 66 69 6c 65 20 77 68 65 72   the.  file wher
5c40: 65 20 74 68 65 20 72 65 61 64 20 6f 72 20 77 72  e the read or wr
5c50: 69 74 65 20 69 73 20 74 6f 20 6f 63 63 75 72 2e  ite is to occur.
5c60: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
5c70: 45 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45 5f 4e  E_IOERR_DELETE_N
5c80: 4f 45 4e 54 20 20 20 20 20 20 7b 53 51 4c 49 54  OENT      {SQLIT
5c90: 45 5f 49 4f 45 52 52 20 7c 20 28 32 33 3c 3c 38  E_IOERR | (23<<8
5ca0: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
5cb0: 45 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45 5f 4e  E_IOERR_DELETE_N
5cc0: 4f 45 4e 54 20 65 72 72 6f 72 20 63 6f 64 65 0a  OENT error code.
5cd0: 20 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70    is an [ext-v-p
5ce0: 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72  rim|extended err
5cf0: 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b  or code].  for [
5d00: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 69 6e  SQLITE_IOERR] in
5d10: 64 69 63 61 74 69 6e 67 20 74 68 61 74 20 74 68  dicating that th
5d20: 65 0a 20 20 78 44 65 6c 65 74 65 20 6d 65 74 68  e.  xDelete meth
5d30: 6f 64 20 6f 6e 20 74 68 65 20 5b 73 71 6c 69 74  od on the [sqlit
5d40: 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74 20 66  e3_vfs] object f
5d50: 61 69 6c 65 64 20 62 65 63 61 75 73 65 20 74 68  ailed because th
5d60: 65 0a 20 20 66 69 6c 65 20 62 65 69 6e 67 20 64  e.  file being d
5d70: 65 6c 65 74 65 64 20 64 6f 65 73 20 6e 6f 74 20  eleted does not 
5d80: 65 78 69 73 74 2e 0a 7d 0a 52 45 53 43 4f 44 45  exist..}.RESCODE
5d90: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4d 4d   SQLITE_IOERR_MM
5da0: 41 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20  AP              
5db0: 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  {SQLITE_IOERR | 
5dc0: 28 32 34 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65  (24<<8)} {.  The
5dd0: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4d 4d   SQLITE_IOERR_MM
5de0: 41 50 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73  AP error code is
5df0: 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c   an [ext-v-prim|
5e00: 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63  extended error c
5e10: 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49  ode].  for [SQLI
5e20: 54 45 5f 49 4f 45 52 52 5d 20 69 6e 64 69 63 61  TE_IOERR] indica
5e30: 74 69 6e 67 20 61 6e 20 49 2f 4f 20 65 72 72 6f  ting an I/O erro
5e40: 72 0a 20 20 77 69 74 68 69 6e 20 74 68 65 20 78  r.  within the x
5e50: 46 65 74 63 68 20 6f 72 20 78 55 6e 66 65 74 63  Fetch or xUnfetc
5e60: 68 20 6d 65 74 68 6f 64 73 20 6f 6e 20 74 68 65  h methods on the
5e70: 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74   [sqlite3_io_met
5e80: 68 6f 64 73 5d 20 6f 62 6a 65 63 74 0a 20 20 77  hods] object.  w
5e90: 68 69 6c 65 20 74 72 79 69 6e 67 20 74 6f 20 6d  hile trying to m
5ea0: 61 70 20 6f 72 20 75 6e 6d 61 70 20 70 61 72 74  ap or unmap part
5eb0: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
5ec0: 20 66 69 6c 65 20 69 6e 74 6f 20 74 68 65 0a 20   file into the. 
5ed0: 20 70 72 6f 63 65 73 73 20 61 64 64 72 65 73 73   process address
5ee0: 20 73 70 61 63 65 2e 0a 7d 0a 52 45 53 43 4f 44   space..}.RESCOD
5ef0: 45 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 47  E SQLITE_IOERR_G
5f00: 45 54 54 45 4d 50 50 41 54 48 20 20 20 20 20 20  ETTEMPPATH      
5f10: 20 7b 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   {SQLITE_IOERR |
5f20: 20 28 32 35 3c 3c 38 29 7d 20 7b 0a 20 20 54 68   (25<<8)} {.  Th
5f30: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 47  e SQLITE_IOERR_G
5f40: 45 54 54 45 4d 50 50 41 54 48 20 65 72 72 6f 72  ETTEMPPATH error
5f50: 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74   code is an [ext
5f60: 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64  -v-prim|extended
5f70: 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66   error code].  f
5f80: 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52  or [SQLITE_IOERR
5f90: 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61  ] indicating tha
5fa0: 74 20 74 68 65 20 5b 56 46 53 5d 20 69 73 20 75  t the [VFS] is u
5fb0: 6e 61 62 6c 65 20 74 6f 20 64 65 74 65 72 6d 69  nable to determi
5fc0: 6e 65 0a 20 20 61 20 73 75 69 74 61 62 6c 65 20  ne.  a suitable 
5fd0: 64 69 72 65 63 74 6f 72 79 20 69 6e 20 77 68 69  directory in whi
5fe0: 63 68 20 74 6f 20 70 6c 61 63 65 20 74 65 6d 70  ch to place temp
5ff0: 6f 72 61 72 79 20 66 69 6c 65 73 2e 0a 7d 0a 52  orary files..}.R
6000: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 49 4f  ESCODE SQLITE_IO
6010: 45 52 52 5f 43 4f 4e 56 50 41 54 48 20 20 20 20  ERR_CONVPATH    
6020: 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 49 4f        {SQLITE_IO
6030: 45 52 52 20 7c 20 28 32 36 3c 3c 38 29 7d 20 7b  ERR | (26<<8)} {
6040: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  .  The SQLITE_IO
6050: 45 52 52 5f 43 4f 4e 56 50 41 54 48 20 65 72 72  ERR_CONVPATH err
6060: 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65  or code is an [e
6070: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
6080: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20  ed error code]. 
6090: 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 49 4f 45   for [SQLITE_IOE
60a0: 52 52 5d 20 75 73 65 64 20 6f 6e 6c 79 20 62 79  RR] used only by
60b0: 20 43 79 67 77 69 6e 20 5b 56 46 53 5d 20 61 6e   Cygwin [VFS] an
60c0: 64 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61  d indicating tha
60d0: 74 0a 20 20 74 68 65 20 63 79 67 77 69 6e 5f 63  t.  the cygwin_c
60e0: 6f 6e 76 5f 70 61 74 68 28 29 20 73 79 73 74 65  onv_path() syste
60f0: 6d 20 63 61 6c 6c 20 66 61 69 6c 65 64 2e 0a 20  m call failed.. 
6100: 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49   See also: [SQLI
6110: 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 43 4f 4e 56  TE_CANTOPEN_CONV
6120: 50 41 54 48 5d 0a 7d 0a 52 45 53 43 4f 44 45 20  PATH].}.RESCODE 
6130: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 53 48  SQLITE_LOCKED_SH
6140: 41 52 45 44 43 41 43 48 45 20 20 20 20 20 20 7b  AREDCACHE      {
6150: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 7c 20  SQLITE_LOCKED | 
6160: 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65   (1<<8)} {.  The
6170: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 53   SQLITE_LOCKED_S
6180: 48 41 52 45 44 43 41 43 48 45 20 65 72 72 6f 72  HAREDCACHE error
6190: 20 63 6f 64 65 20 69 73 0a 20 20 61 6e 20 5b 65   code is.  an [e
61a0: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
61b0: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 20 66  ed error code] f
61c0: 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  or [SQLITE_LOCKE
61d0: 44 5d 0a 20 20 69 6e 64 69 63 61 74 69 6e 67 20  D].  indicating 
61e0: 74 68 61 74 20 74 68 65 20 6c 6f 63 6b 69 6e 67  that the locking
61f0: 20 63 6f 6e 66 6c 69 63 74 20 68 61 73 20 6f 63   conflict has oc
6200: 63 75 72 72 65 64 20 64 75 65 20 74 6f 20 63 6f  curred due to co
6210: 6e 74 65 6e 74 69 6f 6e 0a 20 20 77 69 74 68 20  ntention.  with 
6220: 61 20 64 69 66 66 65 72 65 6e 74 20 5b 64 61 74  a different [dat
6230: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
6240: 5d 20 74 68 61 74 20 68 61 70 70 65 6e 73 20 74  ] that happens t
6250: 6f 20 68 6f 6c 64 20 61 20 0a 20 20 5b 73 68 61  o hold a .  [sha
6260: 72 65 64 20 63 61 63 68 65 5d 20 77 69 74 68 20  red cache] with 
6270: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
6280: 6e 65 63 74 69 6f 6e 20 74 6f 20 77 68 69 63 68  nection to which
6290: 20 74 68 65 20 65 72 72 6f 72 20 77 61 73 0a 20   the error was. 
62a0: 20 72 65 74 75 72 6e 65 64 2e 20 20 46 6f 72 20   returned.  For 
62b0: 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65 20  example, if the 
62c0: 6f 74 68 65 72 20 64 61 74 61 62 61 73 65 20 63  other database c
62d0: 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 68 6f 6c  onnection is hol
62e0: 64 69 6e 67 0a 20 20 61 6e 20 5b 65 78 63 6c 75  ding.  an [exclu
62f0: 73 69 76 65 20 6c 6f 63 6b 5d 20 6f 6e 20 74 68  sive lock] on th
6300: 65 20 64 61 74 61 62 61 73 65 2c 20 74 68 65 6e  e database, then
6310: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
6320: 6e 6e 65 63 74 69 6f 6e 0a 20 20 74 68 61 74 20  nnection.  that 
6330: 72 65 63 65 69 76 65 73 20 74 68 69 73 20 65 72  receives this er
6340: 72 6f 72 20 77 69 6c 6c 20 62 65 20 75 6e 61 62  ror will be unab
6350: 6c 65 20 74 6f 20 72 65 61 64 20 6f 72 20 77 72  le to read or wr
6360: 69 74 65 20 61 6e 79 20 70 61 72 74 0a 20 20 6f  ite any part.  o
6370: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
6380: 69 6c 65 20 75 6e 6c 65 73 73 20 69 74 20 68 61  ile unless it ha
6390: 73 20 74 68 65 20 5b 72 65 61 64 5f 75 6e 63 6f  s the [read_unco
63a0: 6d 6d 69 74 74 65 64 20 70 72 61 67 6d 61 5d 0a  mmitted pragma].
63b0: 20 20 65 6e 61 62 6c 65 64 2e 0a 20 20 3c 70 3e    enabled..  <p>
63c0: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4c 4f  .  The SQLITE_LO
63d0: 43 4b 45 44 5f 53 48 41 52 45 43 41 43 48 45 20  CKED_SHARECACHE 
63e0: 65 72 72 6f 72 20 63 6f 64 65 20 77 6f 72 6b 73  error code works
63f0: 20 76 65 72 79 20 6d 75 63 68 20 6c 69 6b 65 20   very much like 
6400: 74 68 65 0a 20 20 5b 53 51 4c 49 54 45 5f 42 55  the.  [SQLITE_BU
6410: 53 59 5d 20 65 72 72 6f 72 20 63 6f 64 65 20 65  SY] error code e
6420: 78 63 65 70 74 20 74 68 61 74 20 53 51 4c 49 54  xcept that SQLIT
6430: 45 5f 4c 4f 43 4b 45 44 5f 53 48 41 52 45 43 41  E_LOCKED_SHARECA
6440: 43 48 45 20 69 73 0a 20 20 66 6f 72 20 73 65 70  CHE is.  for sep
6450: 61 72 61 74 65 20 64 61 74 61 62 61 73 65 20 63  arate database c
6460: 6f 6e 6e 65 63 74 69 6f 6e 73 20 74 68 61 74 20  onnections that 
6470: 73 68 61 72 65 20 61 20 63 61 63 68 65 20 77 68  share a cache wh
6480: 65 72 65 61 73 20 0a 20 20 53 51 4c 49 54 45 5f  ereas .  SQLITE_
6490: 42 55 53 59 20 69 73 20 66 6f 72 20 74 68 65 20  BUSY is for the 
64a0: 6d 75 63 68 20 6d 6f 72 65 20 63 6f 6d 6d 6f 6e  much more common
64b0: 20 63 61 73 65 20 6f 66 20 73 65 70 61 72 61 74   case of separat
64c0: 65 20 64 61 74 61 62 61 73 65 0a 20 20 63 6f 6e  e database.  con
64d0: 6e 65 63 74 69 6f 6e 73 20 74 68 61 74 20 64 6f  nections that do
64e0: 20 6e 6f 74 20 73 68 61 72 65 20 74 68 65 20 73   not share the s
64f0: 61 6d 65 20 63 61 63 68 65 2e 20 20 41 6c 73 6f  ame cache.  Also
6500: 2c 20 74 68 65 0a 20 20 5b 73 71 6c 69 74 65 33  , the.  [sqlite3
6510: 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 29 5d  _busy_handler()]
6520: 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 62 75   and [sqlite3_bu
6530: 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d 20 69 6e  sy_timeout()] in
6540: 74 65 72 66 61 63 65 73 0a 20 20 64 6f 20 6e 6f  terfaces.  do no
6550: 74 20 68 65 6c 70 20 69 6e 20 72 65 73 6f 6c 76  t help in resolv
6560: 69 6e 67 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  ing SQLITE_LOCKE
6570: 44 5f 53 48 41 52 45 44 43 41 43 48 45 20 63 6f  D_SHAREDCACHE co
6580: 6e 66 6c 69 63 74 73 2e 0a 7d 0a 52 45 53 43 4f  nflicts..}.RESCO
6590: 44 45 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 52  DE SQLITE_BUSY_R
65a0: 45 43 4f 56 45 52 59 20 20 20 20 20 20 20 20 20  ECOVERY         
65b0: 20 20 7b 53 51 4c 49 54 45 5f 42 55 53 59 20 20    {SQLITE_BUSY  
65c0: 20 7c 20 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20   |  (1<<8)} {.  
65d0: 54 68 65 20 53 51 4c 49 54 45 5f 42 55 53 59 5f  The SQLITE_BUSY_
65e0: 52 45 43 4f 56 45 52 59 20 65 72 72 6f 72 20 63  RECOVERY error c
65f0: 6f 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76  ode is an [ext-v
6600: 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65  -prim|extended e
6610: 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72  rror code].  for
6620: 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 74   [SQLITE_BUSY] t
6630: 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74 68  hat indicates th
6640: 61 74 20 61 6e 20 6f 70 65 72 61 74 69 6f 6e 20  at an operation 
6650: 63 6f 75 6c 64 20 6e 6f 74 20 63 6f 6e 74 69 6e  could not contin
6660: 75 65 0a 20 20 62 65 63 61 75 73 65 20 61 6e 6f  ue.  because ano
6670: 74 68 65 72 20 70 72 6f 63 65 73 73 20 69 73 20  ther process is 
6680: 62 75 73 79 20 72 65 63 6f 76 65 72 69 6e 67 20  busy recovering 
6690: 61 20 5b 57 41 4c 20 6d 6f 64 65 5d 20 64 61 74  a [WAL mode] dat
66a0: 61 62 61 73 65 20 66 69 6c 65 0a 20 20 66 6f 6c  abase file.  fol
66b0: 6c 6f 77 69 6e 67 20 61 20 63 72 61 73 68 2e 20  lowing a crash. 
66c0: 20 54 68 65 20 53 51 4c 49 54 45 5f 42 55 53 59   The SQLITE_BUSY
66d0: 5f 52 45 43 4f 56 45 52 59 20 65 72 72 6f 72 20  _RECOVERY error 
66e0: 63 6f 64 65 20 6f 6e 6c 79 20 6f 63 63 75 72 73  code only occurs
66f0: 0a 20 20 6f 6e 20 5b 57 41 4c 20 6d 6f 64 65 5d  .  on [WAL mode]
6700: 20 64 61 74 61 62 61 73 65 73 2e 0a 7d 0a 52 45   databases..}.RE
6710: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 42 55 53  SCODE SQLITE_BUS
6720: 59 5f 53 4e 41 50 53 48 4f 54 20 20 20 20 20 20  Y_SNAPSHOT      
6730: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 42 55 53       {SQLITE_BUS
6740: 59 20 20 20 7c 20 20 28 32 3c 3c 38 29 7d 20 7b  Y   |  (2<<8)} {
6750: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 42 55  .  The SQLITE_BU
6760: 53 59 5f 53 4e 41 50 53 48 4f 54 20 65 72 72 6f  SY_SNAPSHOT erro
6770: 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78  r code is an [ex
6780: 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65  t-v-prim|extende
6790: 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20  d error code].  
67a0: 66 6f 72 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  for [SQLITE_BUSY
67b0: 5d 20 74 68 61 74 20 6f 63 63 75 72 73 20 6f 6e  ] that occurs on
67c0: 20 5b 57 41 4c 20 6d 6f 64 65 5d 20 64 61 74 61   [WAL mode] data
67d0: 62 61 73 65 73 20 77 68 65 6e 20 61 20 64 61 74  bases when a dat
67e0: 61 62 61 73 65 0a 20 20 63 6f 6e 6e 65 63 74 69  abase.  connecti
67f0: 6f 6e 20 74 72 69 65 73 20 74 6f 20 70 72 6f 6d  on tries to prom
6800: 6f 74 65 20 61 20 72 65 61 64 20 74 72 61 6e 73  ote a read trans
6810: 61 63 74 69 6f 6e 20 69 6e 74 6f 20 61 20 77 72  action into a wr
6820: 69 74 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  ite transaction.
6830: 20 20 62 75 74 20 66 69 6e 64 73 20 74 68 61 74    but finds that
6840: 20 61 6e 6f 74 68 65 72 20 5b 64 61 74 61 62 61   another [databa
6850: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 68  se connection] h
6860: 61 73 20 61 6c 72 65 61 64 79 20 77 72 69 74 74  as already writt
6870: 65 6e 20 74 6f 20 74 68 65 0a 20 20 64 61 74 61  en to the.  data
6880: 62 61 73 65 20 61 6e 64 20 74 68 75 73 20 69 6e  base and thus in
6890: 76 61 6c 69 64 61 74 65 64 20 70 72 69 6f 72 20  validated prior 
68a0: 72 65 61 64 73 2e 0a 20 20 3c 70 3e 0a 20 20 54  reads..  <p>.  T
68b0: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 63 65  he following sce
68c0: 6e 61 72 69 6f 20 69 6c 6c 75 73 74 72 61 74 65  nario illustrate
68d0: 73 20 68 6f 77 20 61 6e 20 53 51 4c 49 54 45 5f  s how an SQLITE_
68e0: 42 55 53 59 5f 53 4e 41 50 53 48 4f 54 20 65 72  BUSY_SNAPSHOT er
68f0: 72 6f 72 0a 20 20 6d 69 67 68 74 20 61 72 69 73  ror.  might aris
6900: 65 3a 0a 20 20 3c 6f 6c 3e 0a 20 20 3c 6c 69 3e  e:.  <ol>.  <li>
6910: 20 50 72 6f 63 65 73 73 20 41 20 73 74 61 72 74   Process A start
6920: 73 20 61 20 72 65 61 64 20 74 72 61 6e 73 61 63  s a read transac
6930: 74 69 6f 6e 20 6f 6e 20 74 68 65 20 64 61 74 61  tion on the data
6940: 62 61 73 65 20 61 6e 64 20 64 6f 65 73 20 6f 6e  base and does on
6950: 65 0a 20 20 20 20 20 20 20 6f 72 20 6d 6f 72 65  e.       or more
6960: 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
6970: 74 2e 20 20 50 72 6f 63 65 73 73 20 41 20 6b 65  t.  Process A ke
6980: 65 70 73 20 74 68 65 20 74 72 61 6e 73 61 63 74  eps the transact
6990: 69 6f 6e 20 6f 70 65 6e 2e 0a 20 20 3c 6c 69 3e  ion open..  <li>
69a0: 20 50 72 6f 63 65 73 73 20 42 20 75 70 64 61 74   Process B updat
69b0: 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65 2c  es the database,
69c0: 20 63 68 61 6e 67 69 6e 67 20 76 61 6c 75 65 73   changing values
69d0: 20 70 72 65 76 69 6f 75 73 20 72 65 61 64 20 62   previous read b
69e0: 79 0a 20 20 20 20 20 20 20 70 72 6f 63 65 73 73  y.       process
69f0: 20 41 2e 0a 20 20 3c 6c 69 3e 20 50 72 6f 63 65   A..  <li> Proce
6a00: 73 73 20 41 20 6e 6f 77 20 74 72 69 65 73 20 74  ss A now tries t
6a10: 6f 20 77 72 69 74 65 20 74 6f 20 74 68 65 20 64  o write to the d
6a20: 61 74 61 62 61 73 65 2e 20 20 42 75 74 20 70 72  atabase.  But pr
6a30: 6f 63 65 73 73 20 41 27 73 20 76 69 65 77 0a 20  ocess A's view. 
6a40: 20 20 20 20 20 20 6f 66 20 74 68 65 20 64 61 74        of the dat
6a50: 61 62 61 73 65 20 63 6f 6e 74 65 6e 74 20 69 73  abase content is
6a60: 20 6e 6f 77 20 6f 62 73 6f 6c 65 74 65 20 62 65   now obsolete be
6a70: 63 61 75 73 65 20 70 72 6f 63 65 73 73 20 42 20  cause process B 
6a80: 68 61 73 0a 20 20 20 20 20 20 20 6d 6f 64 69 66  has.       modif
6a90: 69 65 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ied the database
6aa0: 20 66 69 6c 65 20 61 66 74 65 72 20 70 72 6f 63   file after proc
6ab0: 65 73 73 20 41 20 72 65 61 64 20 66 72 6f 6d 20  ess A read from 
6ac0: 69 74 2e 20 20 48 65 6e 63 65 0a 20 20 20 20 20  it.  Hence.     
6ad0: 20 20 70 72 6f 63 65 73 73 20 41 20 67 65 74 73    process A gets
6ae0: 20 61 6e 20 53 51 4c 49 54 45 5f 42 55 53 59 5f   an SQLITE_BUSY_
6af0: 53 4e 41 50 53 48 4f 54 20 65 72 72 6f 72 2e 0a  SNAPSHOT error..
6b00: 20 20 3c 2f 6f 6c 3e 0a 7d 0a 52 45 53 43 4f 44    </ol>.}.RESCOD
6b10: 45 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45  E SQLITE_CANTOPE
6b20: 4e 5f 4e 4f 54 45 4d 50 44 49 52 20 20 20 20 20  N_NOTEMPDIR     
6b30: 20 7b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45   {SQLITE_CANTOPE
6b40: 4e 20 7c 20 28 31 3c 3c 38 29 7d 20 7b 0a 20 20  N | (1<<8)} {.  
6b50: 54 68 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f  The SQLITE_CANTO
6b60: 50 45 4e 5f 4e 4f 54 45 4d 50 44 49 52 20 65 72  PEN_NOTEMPDIR er
6b70: 72 6f 72 20 63 6f 64 65 20 69 73 20 6e 6f 20 6c  ror code is no l
6b80: 6f 6e 67 65 72 20 75 73 65 64 2e 0a 7d 0a 52 45  onger used..}.RE
6b90: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 41 4e  SCODE SQLITE_CAN
6ba0: 54 4f 50 45 4e 5f 49 53 44 49 52 20 20 20 20 20  TOPEN_ISDIR     
6bb0: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43 41 4e       {SQLITE_CAN
6bc0: 54 4f 50 45 4e 20 7c 20 28 32 3c 3c 38 29 7d 20  TOPEN | (2<<8)} 
6bd0: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 43  {.  The SQLITE_C
6be0: 41 4e 54 4f 50 45 4e 5f 49 53 44 49 52 20 65 72  ANTOPEN_ISDIR er
6bf0: 72 6f 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b  ror code is an [
6c00: 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e  ext-v-prim|exten
6c10: 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a  ded error code].
6c20: 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 41    for [SQLITE_CA
6c30: 4e 54 4f 50 45 4e 5d 20 69 6e 64 69 63 61 74 69  NTOPEN] indicati
6c40: 6e 67 20 74 68 61 74 20 61 20 66 69 6c 65 20 6f  ng that a file o
6c50: 70 65 6e 20 6f 70 65 72 61 74 69 6f 6e 20 66 61  pen operation fa
6c60: 69 6c 65 64 20 62 65 63 61 75 73 65 0a 20 20 74  iled because.  t
6c70: 68 65 20 66 69 6c 65 20 69 73 20 72 65 61 6c 6c  he file is reall
6c80: 79 20 61 20 64 69 72 65 63 74 6f 72 79 2e 0a 7d  y a directory..}
6c90: 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f  .RESCODE SQLITE_
6ca0: 43 41 4e 54 4f 50 45 4e 5f 46 55 4c 4c 50 41 54  CANTOPEN_FULLPAT
6cb0: 48 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f  H       {SQLITE_
6cc0: 43 41 4e 54 4f 50 45 4e 20 7c 20 28 33 3c 3c 38  CANTOPEN | (3<<8
6cd0: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
6ce0: 45 5f 43 41 4e 54 4f 50 45 4e 5f 46 55 4c 4c 50  E_CANTOPEN_FULLP
6cf0: 41 54 48 20 65 72 72 6f 72 20 63 6f 64 65 20 69  ATH error code i
6d00: 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d  s an [ext-v-prim
6d10: 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  |extended error 
6d20: 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c  code].  for [SQL
6d30: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 69 6e  ITE_CANTOPEN] in
6d40: 64 69 63 61 74 69 6e 67 20 74 68 61 74 20 61 20  dicating that a 
6d50: 66 69 6c 65 20 6f 70 65 6e 20 6f 70 65 72 61 74  file open operat
6d60: 69 6f 6e 20 66 61 69 6c 65 64 20 62 65 63 61 75  ion failed becau
6d70: 73 65 0a 20 20 74 68 65 20 6f 70 65 72 61 74 69  se.  the operati
6d80: 6e 67 20 73 79 73 74 65 6d 20 77 61 73 20 75 6e  ng system was un
6d90: 61 62 6c 65 20 74 6f 20 63 6f 6e 76 65 72 74 20  able to convert 
6da0: 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 6e 74  the filename int
6db0: 6f 20 61 20 66 75 6c 6c 20 70 61 74 68 6e 61 6d  o a full pathnam
6dc0: 65 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  e..}.RESCODE SQL
6dd0: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 43 4f 4e  ITE_CANTOPEN_CON
6de0: 56 50 41 54 48 20 20 20 20 20 20 20 7b 53 51 4c  VPATH       {SQL
6df0: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28  ITE_CANTOPEN | (
6e00: 34 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53  4<<8)} {.  The S
6e10: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 43  QLITE_CANTOPEN_C
6e20: 4f 4e 56 50 41 54 48 20 65 72 72 6f 72 20 63 6f  ONVPATH error co
6e30: 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  de is an [ext-v-
6e40: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
6e50: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
6e60: 5b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e  [SQLITE_CANTOPEN
6e70: 5d 20 75 73 65 64 20 6f 6e 6c 79 20 62 79 20 43  ] used only by C
6e80: 79 67 77 69 6e 20 5b 56 46 53 5d 20 61 6e 64 20  ygwin [VFS] and 
6e90: 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61 74 0a  indicating that.
6ea0: 20 20 74 68 65 20 63 79 67 77 69 6e 5f 63 6f 6e    the cygwin_con
6eb0: 76 5f 70 61 74 68 28 29 20 73 79 73 74 65 6d 20  v_path() system 
6ec0: 63 61 6c 6c 20 66 61 69 6c 65 64 20 77 68 69 6c  call failed whil
6ed0: 65 20 74 72 79 69 6e 67 20 74 6f 20 6f 70 65 6e  e trying to open
6ee0: 20 61 20 66 69 6c 65 2e 0a 20 20 53 65 65 20 61   a file..  See a
6ef0: 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 49 4f 45  lso: [SQLITE_IOE
6f00: 52 52 5f 43 4f 4e 56 50 41 54 48 5d 0a 7d 0a 52  RR_CONVPATH].}.R
6f10: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 4f  ESCODE SQLITE_CO
6f20: 52 52 55 50 54 5f 56 54 41 42 20 20 20 20 20 20  RRUPT_VTAB      
6f30: 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43 4f        {SQLITE_CO
6f40: 52 52 55 50 54 20 7c 20 28 31 3c 3c 38 29 7d 20  RRUPT | (1<<8)} 
6f50: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 43  {.  The SQLITE_C
6f60: 4f 52 52 55 50 54 5f 56 54 41 42 20 65 72 72 6f  ORRUPT_VTAB erro
6f70: 72 20 63 6f 64 65 20 69 73 20 61 6e 20 5b 65 78  r code is an [ex
6f80: 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65  t-v-prim|extende
6f90: 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20  d error code].  
6fa0: 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 52 52  for [SQLITE_CORR
6fb0: 55 50 54 5d 20 75 73 65 64 20 62 79 20 5b 76 69  UPT] used by [vi
6fc0: 72 74 75 61 6c 20 74 61 62 6c 65 73 5d 2e 20 20  rtual tables].  
6fd0: 41 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c 65  A [virtual table
6fe0: 5d 20 6d 69 67 68 74 0a 20 20 72 65 74 75 72 6e  ] might.  return
6ff0: 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5f   SQLITE_CORRUPT_
7000: 56 54 41 42 20 74 6f 20 69 6e 64 69 63 61 74 65  VTAB to indicate
7010: 20 74 68 61 74 20 63 6f 6e 74 65 6e 74 20 69 6e   that content in
7020: 20 74 68 65 20 76 69 72 74 75 61 6c 20 74 61 62   the virtual tab
7030: 6c 65 0a 20 20 69 73 20 63 6f 72 72 75 70 74 2e  le.  is corrupt.
7040: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
7050: 45 5f 52 45 41 44 4f 4e 4c 59 5f 52 45 43 4f 56  E_READONLY_RECOV
7060: 45 52 59 20 20 20 20 20 20 20 7b 53 51 4c 49 54  ERY       {SQLIT
7070: 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 31 3c  E_READONLY | (1<
7080: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
7090: 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 52 45 43  ITE_READONLY_REC
70a0: 4f 56 45 52 59 20 65 72 72 6f 72 20 63 6f 64 65  OVERY error code
70b0: 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72   is an [ext-v-pr
70c0: 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f  im|extended erro
70d0: 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53  r code].  for [S
70e0: 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5d 2e  QLITE_READONLY].
70f0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 52 45 41    The SQLITE_REA
7100: 44 4f 4e 4c 59 5f 52 45 43 4f 56 45 52 59 20 65  DONLY_RECOVERY e
7110: 72 72 6f 72 20 63 6f 64 65 20 69 6e 64 69 63 61  rror code indica
7120: 74 65 73 0a 20 20 74 68 61 74 20 61 20 5b 57 41  tes.  that a [WA
7130: 4c 20 6d 6f 64 65 5d 20 64 61 74 61 62 61 73 65  L mode] database
7140: 20 63 61 6e 6e 6f 74 20 62 65 20 6f 70 65 6e 65   cannot be opene
7150: 64 20 62 65 63 61 75 73 65 20 74 68 65 20 64 61  d because the da
7160: 74 61 62 61 73 65 20 66 69 6c 65 0a 20 20 6e 65  tabase file.  ne
7170: 65 64 73 20 74 6f 20 62 65 20 72 65 63 6f 76 65  eds to be recove
7180: 72 65 64 20 61 6e 64 20 72 65 63 6f 76 65 72 79  red and recovery
7190: 20 72 65 71 75 69 72 65 73 20 77 72 69 74 65 20   requires write 
71a0: 61 63 63 65 73 73 20 62 75 74 20 6f 6e 6c 79 0a  access but only.
71b0: 20 20 72 65 61 64 20 61 63 63 65 73 73 20 69 73    read access is
71c0: 20 61 76 61 69 6c 61 62 6c 65 2e 0a 7d 0a 52 45   available..}.RE
71d0: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 52 45 41  SCODE SQLITE_REA
71e0: 44 4f 4e 4c 59 5f 43 41 4e 54 4c 4f 43 4b 20 20  DONLY_CANTLOCK  
71f0: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 52 45 41       {SQLITE_REA
7200: 44 4f 4e 4c 59 20 7c 20 28 32 3c 3c 38 29 7d 20  DONLY | (2<<8)} 
7210: 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 52  {.  The SQLITE_R
7220: 45 41 44 4f 4e 4c 59 5f 43 41 4e 54 4c 4f 43 4b  EADONLY_CANTLOCK
7230: 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61   error code is a
7240: 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78  n [ext-v-prim|ex
7250: 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64  tended error cod
7260: 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45  e].  for [SQLITE
7270: 5f 52 45 41 44 4f 4e 4c 59 5d 2e 20 20 54 68 65  _READONLY].  The
7280: 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59   SQLITE_READONLY
7290: 5f 43 41 4e 54 4c 4f 43 4b 20 65 72 72 6f 72 20  _CANTLOCK error 
72a0: 63 6f 64 65 20 69 6e 64 69 63 61 74 65 73 0a 20  code indicates. 
72b0: 20 74 68 61 74 20 53 51 4c 69 74 65 20 69 73 20   that SQLite is 
72c0: 75 6e 61 62 6c 65 20 74 6f 20 6f 62 74 61 69 6e  unable to obtain
72d0: 20 61 20 72 65 61 64 20 6c 6f 63 6b 20 6f 6e 20   a read lock on 
72e0: 61 20 5b 57 41 4c 20 6d 6f 64 65 5d 20 64 61 74  a [WAL mode] dat
72f0: 61 62 61 73 65 0a 20 20 62 65 63 61 75 73 65 20  abase.  because 
7300: 74 68 65 20 73 68 61 72 65 64 2d 6d 65 6d 6f 72  the shared-memor
7310: 79 20 66 69 6c 65 20 61 73 73 6f 63 69 61 74 65  y file associate
7320: 64 20 77 69 74 68 20 74 68 61 74 20 64 61 74 61  d with that data
7330: 62 61 73 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c  base is read-onl
7340: 79 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c  y..}.RESCODE SQL
7350: 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 52 4f 4c  ITE_READONLY_ROL
7360: 4c 42 41 43 4b 20 20 20 20 20 20 20 7b 53 51 4c  LBACK       {SQL
7370: 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28  ITE_READONLY | (
7380: 33 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53  3<<8)} {.  The S
7390: 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 52  QLITE_READONLY_R
73a0: 4f 4c 4c 42 41 43 4b 20 65 72 72 6f 72 20 63 6f  OLLBACK error co
73b0: 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  de is an [ext-v-
73c0: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
73d0: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
73e0: 5b 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59  [SQLITE_READONLY
73f0: 5d 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 52  ].  The SQLITE_R
7400: 45 41 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41 43 4b  EADONLY_ROLLBACK
7410: 20 65 72 72 6f 72 20 63 6f 64 65 20 69 6e 64 69   error code indi
7420: 63 61 74 65 73 0a 20 20 74 68 61 74 20 61 20 64  cates.  that a d
7430: 61 74 61 62 61 73 65 20 63 61 6e 6e 6f 74 20 62  atabase cannot b
7440: 65 20 6f 70 65 6e 65 64 20 62 65 63 61 75 73 65  e opened because
7450: 20 69 74 20 68 61 73 20 61 20 5b 68 6f 74 20 6a   it has a [hot j
7460: 6f 75 72 6e 61 6c 5d 20 74 68 61 74 0a 20 20 6e  ournal] that.  n
7470: 65 65 64 73 20 74 6f 20 62 65 20 72 6f 6c 6c 65  eeds to be rolle
7480: 64 20 62 61 63 6b 20 62 75 74 20 63 61 6e 6e 6f  d back but canno
7490: 74 20 62 65 63 61 75 73 65 20 74 68 65 20 64 61  t because the da
74a0: 74 61 62 61 73 65 20 69 73 20 72 65 61 64 6f 6e  tabase is readon
74b0: 6c 79 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  ly..}.RESCODE SQ
74c0: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 44 42  LITE_READONLY_DB
74d0: 4d 4f 56 45 44 20 20 20 20 20 20 20 20 7b 53 51  MOVED        {SQ
74e0: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20  LITE_READONLY | 
74f0: 28 34 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  (4<<8)} {.  The 
7500: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f  SQLITE_READONLY_
7510: 44 42 4d 4f 56 45 44 20 65 72 72 6f 72 20 63 6f  DBMOVED error co
7520: 64 65 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  de is an [ext-v-
7530: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
7540: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
7550: 5b 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59  [SQLITE_READONLY
7560: 5d 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 52  ].  The SQLITE_R
7570: 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f 56 45 44 20  EADONLY_DBMOVED 
7580: 65 72 72 6f 72 20 63 6f 64 65 20 69 6e 64 69 63  error code indic
7590: 61 74 65 73 0a 20 20 74 68 61 74 20 61 20 64 61  ates.  that a da
75a0: 74 61 62 61 73 65 20 63 61 6e 6e 6f 74 20 62 65  tabase cannot be
75b0: 20 6d 6f 64 69 66 69 65 64 20 62 65 63 61 75 73   modified becaus
75c0: 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  e the database f
75d0: 69 6c 65 20 68 61 73 20 62 65 65 6e 0a 20 20 6d  ile has been.  m
75e0: 6f 76 65 64 20 73 69 6e 63 65 20 69 74 20 77 61  oved since it wa
75f0: 73 20 6f 70 65 6e 65 64 2c 20 61 6e 64 20 73 6f  s opened, and so
7600: 20 61 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20   any attempt to 
7610: 6d 6f 64 69 66 79 20 74 68 65 20 64 61 74 61 62  modify the datab
7620: 61 73 65 0a 20 20 6d 69 67 68 74 20 72 65 73 75  ase.  might resu
7630: 6c 74 20 69 6e 20 64 61 74 61 62 61 73 65 20 63  lt in database c
7640: 6f 72 72 75 70 74 69 6f 6e 20 69 66 20 74 68 65  orruption if the
7650: 20 70 72 6f 63 65 73 73 65 73 20 63 72 61 73 68   processes crash
7660: 65 73 20 62 65 63 61 75 73 65 20 74 68 65 0a 20  es because the. 
7670: 20 5b 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e   [rollback journ
7680: 61 6c 5d 20 77 6f 75 6c 64 20 6e 6f 74 20 62 65  al] would not be
7690: 20 63 6f 72 72 65 63 74 6c 79 20 6e 61 6d 65 64   correctly named
76a0: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
76b0: 54 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42 41 43  TE_ABORT_ROLLBAC
76c0: 4b 20 20 20 20 20 20 20 20 20 20 7b 53 51 4c 49  K          {SQLI
76d0: 54 45 5f 41 42 4f 52 54 20 7c 20 28 32 3c 3c 38  TE_ABORT | (2<<8
76e0: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
76f0: 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42 41 43 4b  E_ABORT_ROLLBACK
7700: 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20 61   error code is a
7710: 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78  n [ext-v-prim|ex
7720: 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64  tended error cod
7730: 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54 45  e].  for [SQLITE
7740: 5f 41 42 4f 52 54 5d 20 69 6e 64 69 63 61 74 69  _ABORT] indicati
7750: 6e 67 20 74 68 61 74 20 61 6e 20 53 51 4c 20 73  ng that an SQL s
7760: 74 61 74 65 6d 65 6e 74 20 61 62 6f 72 74 65 64  tatement aborted
7770: 20 62 65 63 61 75 73 65 0a 20 20 74 68 65 20 74   because.  the t
7780: 72 61 6e 73 61 63 74 69 6f 6e 20 74 68 61 74 20  ransaction that 
7790: 77 61 73 20 61 63 74 69 76 65 20 77 68 65 6e 20  was active when 
77a0: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
77b0: 74 20 66 69 72 73 74 20 73 74 61 72 74 65 64 0a  t first started.
77c0: 20 20 77 61 73 20 72 6f 6c 6c 65 64 20 62 61 63    was rolled bac
77d0: 6b 2e 20 20 5e 50 65 6e 64 69 6e 67 20 77 72 69  k.  ^Pending wri
77e0: 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 6c  te operations al
77f0: 77 61 79 73 20 66 61 69 6c 20 77 69 74 68 20 74  ways fail with t
7800: 68 69 73 20 65 72 72 6f 72 0a 20 20 77 68 65 6e  his error.  when
7810: 20 61 20 72 6f 6c 6c 62 61 63 6b 20 6f 63 63 75   a rollback occu
7820: 72 73 2e 20 20 5e 41 20 5b 52 4f 4c 4c 42 41 43  rs.  ^A [ROLLBAC
7830: 4b 5d 20 77 69 6c 6c 20 63 61 75 73 65 20 61 20  K] will cause a 
7840: 70 65 6e 64 69 6e 67 20 72 65 61 64 20 6f 70 65  pending read ope
7850: 72 61 74 69 6f 6e 0a 20 20 74 6f 20 66 61 69 6c  ration.  to fail
7860: 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 73 63 68   only if the sch
7870: 65 6d 61 20 77 61 73 20 63 68 61 6e 67 65 64 20  ema was changed 
7880: 77 69 74 68 69 6e 20 74 68 65 20 74 72 61 6e 73  within the trans
7890: 61 63 74 69 6f 6e 20 62 65 69 6e 67 20 72 6f 6c  action being rol
78a0: 6c 65 64 0a 20 20 62 61 63 6b 2e 0a 7d 0a 52 45  led.  back..}.RE
78b0: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 4f 4e  SCODE SQLITE_CON
78c0: 53 54 52 41 49 4e 54 5f 43 48 45 43 4b 20 20 20  STRAINT_CHECK   
78d0: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43 4f 4e       {SQLITE_CON
78e0: 53 54 52 41 49 4e 54 20 7c 20 28 31 3c 3c 38 29  STRAINT | (1<<8)
78f0: 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45  } {.  The SQLITE
7900: 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43 48 45 43  _CONSTRAINT_CHEC
7910: 4b 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  K error code is 
7920: 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69 6d 7c 65  an [ext-v-prim|e
7930: 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f  xtended error co
7940: 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51 4c 49 54  de].  for [SQLIT
7950: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d 20 69 6e  E_CONSTRAINT] in
7960: 64 69 63 61 74 69 6e 67 20 74 68 61 74 20 61 20  dicating that a 
7970: 5b 43 48 45 43 4b 20 63 6f 6e 73 74 72 61 69 6e  [CHECK constrain
7980: 74 5d 20 66 61 69 6c 65 64 2e 0a 7d 0a 52 45 53  t] failed..}.RES
7990: 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 4f 4e 53  CODE SQLITE_CONS
79a0: 54 52 41 49 4e 54 5f 43 4f 4d 4d 49 54 48 4f 4f  TRAINT_COMMITHOO
79b0: 4b 20 20 20 7b 53 51 4c 49 54 45 5f 43 4f 4e 53  K   {SQLITE_CONS
79c0: 54 52 41 49 4e 54 20 7c 20 28 32 3c 3c 38 29 7d  TRAINT | (2<<8)}
79d0: 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f   {.  The SQLITE_
79e0: 43 4f 4e 53 54 52 41 49 4e 54 5f 43 4f 4d 4d 49  CONSTRAINT_COMMI
79f0: 54 48 4f 4f 4b 20 65 72 72 6f 72 20 63 6f 64 65  THOOK error code
7a00: 0a 20 20 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d  .  is an [ext-v-
7a10: 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20 65 72  prim|extended er
7a20: 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20  ror code].  for 
7a30: 5b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  [SQLITE_CONSTRAI
7a40: 4e 54 5d 20 69 6e 64 69 63 61 74 69 6e 67 20 74  NT] indicating t
7a50: 68 61 74 20 61 0a 20 20 5b 73 71 6c 69 74 65 33  hat a.  [sqlite3
7a60: 5f 63 6f 6d 6d 69 74 5f 68 6f 6f 6b 7c 63 6f 6d  _commit_hook|com
7a70: 6d 69 74 20 68 6f 6f 6b 20 63 61 6c 6c 62 61 63  mit hook callbac
7a80: 6b 5d 20 72 65 74 75 72 6e 65 64 20 6e 6f 6e 2d  k] returned non-
7a90: 7a 65 72 6f 20 74 68 61 74 20 74 68 75 73 0a 20  zero that thus. 
7aa0: 20 63 61 75 73 65 64 20 74 68 65 20 53 51 4c 20   caused the SQL 
7ab0: 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65 20  statement to be 
7ac0: 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 7d 0a 52  rolled back..}.R
7ad0: 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 4f  ESCODE SQLITE_CO
7ae0: 4e 53 54 52 41 49 4e 54 5f 46 4f 52 45 49 47 4e  NSTRAINT_FOREIGN
7af0: 4b 45 59 20 20 20 7b 53 51 4c 49 54 45 5f 43 4f  KEY   {SQLITE_CO
7b00: 4e 53 54 52 41 49 4e 54 20 7c 20 28 33 3c 3c 38  NSTRAINT | (3<<8
7b10: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
7b20: 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 46 4f 52  E_CONSTRAINT_FOR
7b30: 45 49 47 4e 4b 45 59 20 65 72 72 6f 72 20 63 6f  EIGNKEY error co
7b40: 64 65 0a 20 20 69 73 20 61 6e 20 5b 65 78 74 2d  de.  is an [ext-
7b50: 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65 64 20  v-prim|extended 
7b60: 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20 66 6f  error code].  fo
7b70: 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  r [SQLITE_CONSTR
7b80: 41 49 4e 54 5d 20 69 6e 64 69 63 61 74 69 6e 67  AINT] indicating
7b90: 20 74 68 61 74 20 61 20 5b 66 6f 72 65 69 67 6e   that a [foreign
7ba0: 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 5d   key constraint]
7bb0: 20 66 61 69 6c 65 64 2e 0a 7d 0a 52 45 53 43 4f   failed..}.RESCO
7bc0: 44 45 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  DE SQLITE_CONSTR
7bd0: 41 49 4e 54 5f 46 55 4e 43 54 49 4f 4e 20 20 20  AINT_FUNCTION   
7be0: 20 20 7b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52    {SQLITE_CONSTR
7bf0: 41 49 4e 54 20 7c 20 28 34 3c 3c 38 29 7d 20 7b  AINT | (4<<8)} {
7c00: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  .  The SQLITE_CO
7c10: 4e 53 54 52 41 49 4e 54 5f 46 55 4e 43 54 49 4f  NSTRAINT_FUNCTIO
7c20: 4e 20 65 72 72 6f 72 20 63 6f 64 65 20 69 73 20  N error code is 
7c30: 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73  not currently us
7c40: 65 64 0a 20 20 62 79 20 74 68 65 20 53 51 4c 69  ed.  by the SQLi
7c50: 74 65 20 63 6f 72 65 2e 20 20 48 6f 77 65 76 65  te core.  Howeve
7c60: 72 2c 20 74 68 69 73 20 65 72 72 6f 72 20 63 6f  r, this error co
7c70: 64 65 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20  de is available 
7c80: 66 6f 72 20 75 73 65 0a 20 20 62 79 20 65 78 74  for use.  by ext
7c90: 65 6e 73 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 73  ension functions
7ca0: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
7cb0: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4e 4f  TE_CONSTRAINT_NO
7cc0: 54 4e 55 4c 4c 20 20 20 20 20 20 7b 53 51 4c 49  TNULL      {SQLI
7cd0: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20  TE_CONSTRAINT | 
7ce0: 28 35 3c 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20  (5<<8)} {.  The 
7cf0: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
7d00: 54 5f 4e 4f 54 4e 55 4c 4c 20 65 72 72 6f 72 20  T_NOTNULL error 
7d10: 63 6f 64 65 0a 20 20 69 73 20 61 6e 20 5b 65 78  code.  is an [ex
7d20: 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64 65  t-v-prim|extende
7d30: 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20 20  d error code].  
7d40: 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 53  for [SQLITE_CONS
7d50: 54 52 41 49 4e 54 5d 20 69 6e 64 69 63 61 74 69  TRAINT] indicati
7d60: 6e 67 20 74 68 61 74 20 61 20 5b 4e 4f 54 20 4e  ng that a [NOT N
7d70: 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 5d 20  ULL constraint] 
7d80: 66 61 69 6c 65 64 2e 0a 7d 0a 52 45 53 43 4f 44  failed..}.RESCOD
7d90: 45 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  E SQLITE_CONSTRA
7da0: 49 4e 54 5f 50 52 49 4d 41 52 59 4b 45 59 20 20  INT_PRIMARYKEY  
7db0: 20 7b 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41   {SQLITE_CONSTRA
7dc0: 49 4e 54 20 7c 20 28 36 3c 3c 38 29 7d 20 7b 0a  INT | (6<<8)} {.
7dd0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e    The SQLITE_CON
7de0: 53 54 52 41 49 4e 54 5f 50 52 49 4d 41 52 59 4b  STRAINT_PRIMARYK
7df0: 45 59 20 65 72 72 6f 72 20 63 6f 64 65 0a 20 20  EY error code.  
7e00: 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69  is an [ext-v-pri
7e10: 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72  m|extended error
7e20: 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51   code].  for [SQ
7e30: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d  LITE_CONSTRAINT]
7e40: 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61 74   indicating that
7e50: 20 61 20 5b 50 52 49 4d 41 52 59 20 4b 45 59 20   a [PRIMARY KEY 
7e60: 63 6f 6e 73 74 72 61 69 6e 74 5d 20 66 61 69 6c  constraint] fail
7e70: 65 64 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51  ed..}.RESCODE SQ
7e80: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  LITE_CONSTRAINT_
7e90: 54 52 49 47 47 45 52 20 20 20 20 20 20 7b 53 51  TRIGGER      {SQ
7ea0: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
7eb0: 7c 20 28 37 3c 3c 38 29 7d 20 7b 0a 20 20 54 68  | (7<<8)} {.  Th
7ec0: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
7ed0: 49 4e 54 5f 54 52 49 47 47 45 52 20 65 72 72 6f  INT_TRIGGER erro
7ee0: 72 20 63 6f 64 65 0a 20 20 69 73 20 61 6e 20 5b  r code.  is an [
7ef0: 65 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e  ext-v-prim|exten
7f00: 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a  ded error code].
7f10: 20 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f    for [SQLITE_CO
7f20: 4e 53 54 52 41 49 4e 54 5d 20 69 6e 64 69 63 61  NSTRAINT] indica
7f30: 74 69 6e 67 20 74 68 61 74 20 61 20 5b 52 41 49  ting that a [RAI
7f40: 53 45 20 66 75 6e 63 74 69 6f 6e 5d 20 77 69 74  SE function] wit
7f50: 68 69 6e 0a 20 20 61 20 5b 43 52 45 41 54 45 20  hin.  a [CREATE 
7f60: 54 52 49 47 47 45 52 7c 74 72 69 67 67 65 72 5d  TRIGGER|trigger]
7f70: 20 66 69 72 65 64 2c 20 63 61 75 73 69 6e 67 20   fired, causing 
7f80: 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
7f90: 74 20 74 6f 20 61 62 6f 72 74 2e 0a 7d 0a 52 45  t to abort..}.RE
7fa0: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 43 4f 4e  SCODE SQLITE_CON
7fb0: 53 54 52 41 49 4e 54 5f 55 4e 49 51 55 45 20 20  STRAINT_UNIQUE  
7fc0: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 43 4f 4e       {SQLITE_CON
7fd0: 53 54 52 41 49 4e 54 20 7c 20 28 38 3c 3c 38 29  STRAINT | (8<<8)
7fe0: 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54 45  } {.  The SQLITE
7ff0: 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 55 4e 49 51  _CONSTRAINT_UNIQ
8000: 55 45 20 65 72 72 6f 72 20 63 6f 64 65 0a 20 20  UE error code.  
8010: 69 73 20 61 6e 20 5b 65 78 74 2d 76 2d 70 72 69  is an [ext-v-pri
8020: 6d 7c 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72  m|extended error
8030: 20 63 6f 64 65 5d 0a 20 20 66 6f 72 20 5b 53 51   code].  for [SQ
8040: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5d  LITE_CONSTRAINT]
8050: 20 69 6e 64 69 63 61 74 69 6e 67 20 74 68 61 74   indicating that
8060: 20 61 20 5b 55 4e 49 51 55 45 20 63 6f 6e 73 74   a [UNIQUE const
8070: 72 61 69 6e 74 5d 20 66 61 69 6c 65 64 2e 0a 7d  raint] failed..}
8080: 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54 45 5f  .RESCODE SQLITE_
8090: 43 4f 4e 53 54 52 41 49 4e 54 5f 56 54 41 42 20  CONSTRAINT_VTAB 
80a0: 20 20 20 20 20 20 20 20 7b 53 51 4c 49 54 45 5f          {SQLITE_
80b0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 39 3c  CONSTRAINT | (9<
80c0: 3c 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c  <8)} {.  The SQL
80d0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 56  ITE_CONSTRAINT_V
80e0: 54 41 42 20 65 72 72 6f 72 20 63 6f 64 65 20 69  TAB error code i
80f0: 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20  s not currently 
8100: 75 73 65 64 0a 20 20 62 79 20 74 68 65 20 53 51  used.  by the SQ
8110: 4c 69 74 65 20 63 6f 72 65 2e 20 20 48 6f 77 65  Lite core.  Howe
8120: 76 65 72 2c 20 74 68 69 73 20 65 72 72 6f 72 20  ver, this error 
8130: 63 6f 64 65 20 69 73 20 61 76 61 69 6c 61 62 6c  code is availabl
8140: 65 20 66 6f 72 20 75 73 65 0a 20 20 62 79 20 61  e for use.  by a
8150: 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e  pplication-defin
8160: 65 64 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c  ed [virtual tabl
8170: 65 73 5d 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53  es]..}.RESCODE S
8180: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
8190: 5f 52 4f 57 49 44 20 20 20 20 20 20 20 20 7b 53  _ROWID        {S
81a0: 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54  QLITE_CONSTRAINT
81b0: 20 7c 28 31 30 3c 3c 38 29 7d 20 7b 0a 20 20 54   |(10<<8)} {.  T
81c0: 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  he SQLITE_CONSTR
81d0: 41 49 4e 54 5f 52 4f 57 49 44 20 65 72 72 6f 72  AINT_ROWID error
81e0: 20 63 6f 64 65 0a 20 20 69 73 20 61 6e 20 5b 65   code.  is an [e
81f0: 78 74 2d 76 2d 70 72 69 6d 7c 65 78 74 65 6e 64  xt-v-prim|extend
8200: 65 64 20 65 72 72 6f 72 20 63 6f 64 65 5d 0a 20  ed error code]. 
8210: 20 66 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   for [SQLITE_CON
8220: 53 54 52 41 49 4e 54 5d 20 69 6e 64 69 63 61 74  STRAINT] indicat
8230: 69 6e 67 20 74 68 61 74 20 61 20 5b 72 6f 77 69  ing that a [rowi
8240: 64 5d 20 69 73 20 6e 6f 74 20 75 6e 69 71 75 65  d] is not unique
8250: 2e 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49  ..}.RESCODE SQLI
8260: 54 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f 56 45  TE_NOTICE_RECOVE
8270: 52 5f 57 41 4c 20 20 20 20 20 20 7b 53 51 4c 49  R_WAL      {SQLI
8280: 54 45 5f 4e 4f 54 49 43 45 20 7c 20 28 31 3c 3c  TE_NOTICE | (1<<
8290: 38 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49  8)} {.  The SQLI
82a0: 54 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f 56 45  TE_NOTICE_RECOVE
82b0: 52 5f 57 41 4c 20 72 65 73 75 6c 74 20 63 6f 64  R_WAL result cod
82c0: 65 20 69 73 0a 20 20 70 61 73 73 65 64 20 74 6f  e is.  passed to
82d0: 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 6f 66   the callback of
82e0: 0a 20 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28  .  [sqlite3_log(
82f0: 29 5d 20 77 68 65 6e 20 61 20 5b 57 41 4c 20 6d  )] when a [WAL m
8300: 6f 64 65 5d 20 64 61 74 61 62 61 73 65 20 66 69  ode] database fi
8310: 6c 65 20 69 73 20 72 65 63 6f 76 65 72 65 64 2e  le is recovered.
8320: 0a 7d 0a 52 45 53 43 4f 44 45 20 53 51 4c 49 54  .}.RESCODE SQLIT
8330: 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f 56 45 52  E_NOTICE_RECOVER
8340: 5f 52 4f 4c 4c 42 41 43 4b 20 7b 53 51 4c 49 54  _ROLLBACK {SQLIT
8350: 45 5f 4e 4f 54 49 43 45 20 7c 20 28 32 3c 3c 38  E_NOTICE | (2<<8
8360: 29 7d 20 7b 0a 20 20 54 68 65 20 53 51 4c 49 54  )} {.  The SQLIT
8370: 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f 56 45 52  E_NOTICE_RECOVER
8380: 5f 52 4f 4c 4c 42 41 43 4b 20 72 65 73 75 6c 74  _ROLLBACK result
8390: 20 63 6f 64 65 20 69 73 0a 20 20 70 61 73 73 65   code is.  passe
83a0: 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63  d to the callbac
83b0: 6b 20 6f 66 0a 20 20 5b 73 71 6c 69 74 65 33 5f  k of.  [sqlite3_
83c0: 6c 6f 67 28 29 5d 20 77 68 65 6e 20 61 20 5b 68  log()] when a [h
83d0: 6f 74 20 6a 6f 75 72 6e 61 6c 5d 20 69 73 20 72  ot journal] is r
83e0: 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 7d 0a 52 45  olled back..}.RE
83f0: 53 43 4f 44 45 20 53 51 4c 49 54 45 5f 57 41 52  SCODE SQLITE_WAR
8400: 4e 49 4e 47 5f 41 55 54 4f 49 4e 44 45 58 20 20  NING_AUTOINDEX  
8410: 20 20 20 20 20 7b 53 51 4c 49 54 45 5f 57 41 52       {SQLITE_WAR
8420: 4e 49 4e 47 20 7c 20 28 31 3c 3c 38 29 7d 20 7b  NING | (1<<8)} {
8430: 0a 20 20 54 68 65 20 53 51 4c 49 54 45 5f 57 41  .  The SQLITE_WA
8440: 52 4e 49 4e 47 5f 41 55 54 4f 49 4e 44 45 58 20  RNING_AUTOINDEX 
8450: 72 65 73 75 6c 74 20 63 6f 64 65 20 69 73 0a 20  result code is. 
8460: 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 63   passed to the c
8470: 61 6c 6c 62 61 63 6b 20 6f 66 0a 20 20 5b 73 71  allback of.  [sq
8480: 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20 77 68 65  lite3_log()] whe
8490: 6e 65 76 65 72 20 5b 61 75 74 6f 6d 61 74 69 63  never [automatic
84a0: 20 69 6e 64 65 78 69 6e 67 5d 20 69 73 20 75 73   indexing] is us
84b0: 65 64 2e 0a 20 20 54 68 69 73 20 63 61 6e 20 73  ed..  This can s
84c0: 65 72 76 65 20 61 73 20 61 20 77 61 72 6e 69 6e  erve as a warnin
84d0: 67 20 74 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e  g to application
84e0: 20 64 65 73 69 67 6e 65 72 73 20 74 68 61 74 20   designers that 
84f0: 74 68 65 0a 20 20 64 61 74 61 62 61 73 65 20 6d  the.  database m
8500: 69 67 68 74 20 62 65 6e 65 66 69 74 20 66 72 6f  ight benefit fro
8510: 6d 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 64  m additional ind
8520: 65 78 65 73 2e 0a 7d 0a 0a 23 23 23 23 23 23 23  exes..}..#######
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 0a 23 20 43 6f 64 65 20 74 6f  ######.# Code to
8580: 20 70 72 6f 63 65 73 73 20 74 68 65 20 52 45 53   process the RES
8590: 43 4f 44 45 20 76 61 6c 75 65 73 0a 23 0a 23 20  CODE values.#.# 
85a0: 43 6f 6e 76 65 72 74 20 66 6f 72 6d 75 6c 61 20  Convert formula 
85b0: 52 45 53 43 4f 44 45 20 76 61 6c 75 65 73 20 69  RESCODE values i
85c0: 6e 74 6f 20 6e 75 6d 65 72 69 63 73 0a 73 65 74  nto numerics.set
85d0: 20 6e 52 65 73 43 6f 64 65 20 30 0a 73 65 74 20   nResCode 0.set 
85e0: 6e 50 72 69 6d 43 6f 64 65 20 30 0a 73 65 74 20  nPrimCode 0.set 
85f0: 6e 45 78 74 43 6f 64 65 20 30 0a 73 65 74 20 6e  nExtCode 0.set n
8600: 4e 6f 6e 45 72 72 6f 72 20 33 0a 75 6e 73 65 74  NonError 3.unset
8610: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 70 72 69   -nocomplain pri
8620: 6d 5f 72 63 0a 75 6e 73 65 74 20 2d 6e 6f 63 6f  m_rc.unset -noco
8630: 6d 70 6c 61 69 6e 20 65 78 74 5f 72 63 0a 66 6f  mplain ext_rc.fo
8640: 72 65 61 63 68 20 6e 61 6d 65 20 5b 61 72 72 61  reach name [arra
8650: 79 20 6e 61 6d 65 73 20 72 65 73 76 61 6c 75 65  y names resvalue
8660: 5d 20 7b 0a 20 20 73 65 74 20 76 61 6c 20 24 72  ] {.  set val $r
8670: 65 73 76 61 6c 75 65 28 24 6e 61 6d 65 29 0a 20  esvalue($name). 
8680: 20 69 66 20 7b 5b 72 65 67 65 78 70 20 7b 5e 28   if {[regexp {^(
8690: 53 51 4c 49 54 45 5f 5b 5e 20 5d 2b 29 20 2a 5c  SQLITE_[^ ]+) *\
86a0: 7c 20 2a 5c 28 28 5c 64 2b 29 3c 3c 38 5c 29 24  | *\((\d+)<<8\)$
86b0: 7d 20 24 76 61 6c 20 61 6c 6c 20 62 61 73 65 6e  } $val all basen
86c0: 61 6d 65 20 68 69 76 61 6c 5d 7d 20 7b 0a 20 20  ame hival]} {.  
86d0: 20 20 73 65 74 20 76 61 6c 20 5b 65 78 70 72 20    set val [expr 
86e0: 7b 24 72 65 73 76 61 6c 75 65 28 24 62 61 73 65  {$resvalue($base
86f0: 6e 61 6d 65 29 2b 28 24 68 69 76 61 6c 3c 3c 38  name)+($hival<<8
8700: 29 7d 5d 0a 20 20 20 20 73 65 74 20 72 65 73 76  )}].    set resv
8710: 61 6c 75 65 28 24 6e 61 6d 65 29 20 24 76 61 6c  alue($name) $val
8720: 0a 20 20 7d 0a 20 20 73 65 74 20 76 61 6c 74 6f  .  }.  set valto
8730: 6e 61 6d 65 28 24 76 61 6c 29 20 24 6e 61 6d 65  name($val) $name
8740: 0a 20 20 69 6e 63 72 20 6e 52 65 73 43 6f 64 65  .  incr nResCode
8750: 0a 20 20 69 66 20 7b 24 76 61 6c 3c 32 35 36 7d  .  if {$val<256}
8760: 20 7b 0a 20 20 20 20 69 6e 63 72 20 6e 50 72 69   {.    incr nPri
8770: 6d 43 6f 64 65 0a 20 20 20 20 73 65 74 20 70 72  mCode.    set pr
8780: 69 6d 5f 72 63 28 24 6e 61 6d 65 29 20 24 76 61  im_rc($name) $va
8790: 6c 0a 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20  l.  } else {.   
87a0: 20 69 6e 63 72 20 6e 45 78 74 43 6f 64 65 0a 20   incr nExtCode. 
87b0: 20 20 20 73 65 74 20 65 78 74 5f 72 63 28 24 6e     set ext_rc($n
87c0: 61 6d 65 29 20 24 76 61 6c 0a 20 20 7d 0a 7d 0a  ame) $val.  }.}.
87d0: 0a 68 64 5f 70 75 74 73 20 22 3c 68 32 3e 50 72  .hd_puts "<h2>Pr
87e0: 69 6d 61 72 79 20 52 65 73 75 6c 74 20 43 6f 64  imary Result Cod
87f0: 65 20 4c 69 73 74 3c 2f 68 32 3e 5c 6e 22 0a 68  e List</h2>\n".h
8800: 64 5f 70 75 74 73 20 22 3c 70 3e 54 68 65 20 24  d_puts "<p>The $
8810: 6e 50 72 69 6d 43 6f 64 65 20 72 65 73 75 6c 74  nPrimCode result
8820: 20 63 6f 64 65 73 22 0a 3c 2f 74 63 6c 3e 0a 20   codes".</tcl>. 
8830: 20 61 72 65 20 5b 72 65 73 75 6c 74 20 63 6f 64   are [result cod
8840: 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 7c 64 65  e definitions|de
8850: 66 69 6e 65 64 20 69 6e 20 73 71 6c 69 74 65 33  fined in sqlite3
8860: 2e 68 5d 20 61 6e 64 20 61 72 65 0a 20 20 6c 69  .h] and are.  li
8870: 73 74 65 64 20 69 6e 20 61 6c 70 68 61 62 65 74  sted in alphabet
8880: 69 63 61 6c 20 6f 72 64 65 72 20 62 65 6c 6f 77  ical order below
8890: 3a 0a 20 20 3c 74 61 62 6c 65 20 62 6f 72 64 65  :.  <table borde
88a0: 72 3d 30 20 77 69 64 74 68 3d 22 31 30 30 25 22  r=0 width="100%"
88b0: 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e   cellpadding=10>
88c0: 0a 20 20 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67  .  <tr><td valig
88d0: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 6c  n="top" align="l
88e0: 65 66 74 22 3e 3c 75 6c 3e 0a 3c 74 63 6c 3e 0a  eft"><ul>.<tcl>.
88f0: 73 65 74 20 6e 72 6f 77 20 5b 65 78 70 72 20 7b  set nrow [expr {
8900: 28 24 6e 50 72 69 6d 43 6f 64 65 2b 32 29 2f 33  ($nPrimCode+2)/3
8910: 7d 5d 0a 73 65 74 20 69 20 30 0a 66 6f 72 65 61  }].set i 0.forea
8920: 63 68 20 6e 61 6d 65 20 5b 6c 73 6f 72 74 20 5b  ch name [lsort [
8930: 61 72 72 61 79 20 6e 61 6d 65 73 20 70 72 69 6d  array names prim
8940: 5f 72 63 5d 5d 20 7b 0a 20 20 69 66 20 7b 24 69  _rc]] {.  if {$i
8950: 3d 3d 24 6e 72 6f 77 7d 20 7b 0a 20 20 20 20 68  ==$nrow} {.    h
8960: 64 5f 70 75 74 73 20 22 3c 2f 75 6c 3e 3c 2f 74  d_puts "</ul></t
8970: 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 5c 22 74  d><td valign=\"t
8980: 6f 70 5c 22 20 61 6c 69 67 6e 3d 5c 22 6c 65 66  op\" align=\"lef
8990: 74 5c 22 3e 3c 75 6c 3e 5c 6e 22 0a 20 20 20 20  t\"><ul>\n".    
89a0: 73 65 74 20 69 20 30 0a 20 20 7d 0a 20 20 69 6e  set i 0.  }.  in
89b0: 63 72 20 69 0a 20 20 68 64 5f 72 65 73 6f 6c 76  cr i.  hd_resolv
89c0: 65 20 22 3c 6c 69 3e 20 5c 5b 24 6e 61 6d 65 5c  e "<li> \[$name\
89d0: 5d 20 28 24 70 72 69 6d 5f 72 63 28 24 6e 61 6d  ] ($prim_rc($nam
89e0: 65 29 29 5c 6e 22 0a 7d 0a 68 64 5f 70 75 74 73  e))\n".}.hd_puts
89f0: 20 22 3c 2f 74 64 3e 3c 2f 74 64 3e 3c 2f 74 61   "</td></td></ta
8a00: 62 6c 65 3e 5c 6e 5c 6e 22 0a 0a 68 64 5f 66 72  ble>\n\n"..hd_fr
8a10: 61 67 6d 65 6e 74 20 65 78 74 72 63 20 7b 65 78  agment extrc {ex
8a20: 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
8a30: 64 65 7d 20 7b 65 78 74 65 6e 64 65 64 20 72 65  de} {extended re
8a40: 73 75 6c 74 20 63 6f 64 65 73 7d 20 5c 0a 20 20  sult codes} \.  
8a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a60: 7b 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  {extended error 
8a70: 63 6f 64 65 7d 20 7b 65 78 74 65 6e 64 65 64 20  code} {extended 
8a80: 65 72 72 6f 72 20 63 6f 64 65 73 7d 0a 68 64 5f  error codes}.hd_
8a90: 70 75 74 73 20 22 3c 68 32 3e 45 78 74 65 6e 64  puts "<h2>Extend
8aa0: 65 64 20 52 65 73 75 6c 74 20 43 6f 64 65 20 4c  ed Result Code L
8ab0: 69 73 74 3c 2f 68 32 3e 5c 6e 22 0a 68 64 5f 70  ist</h2>\n".hd_p
8ac0: 75 74 73 20 22 3c 70 3e 54 68 65 20 24 6e 45 78  uts "<p>The $nEx
8ad0: 74 43 6f 64 65 20 65 78 74 65 6e 64 65 64 20 72  tCode extended r
8ae0: 65 73 75 6c 74 20 63 6f 64 65 73 22 0a 3c 2f 74  esult codes".</t
8af0: 63 6c 3e 0a 20 20 61 72 65 20 5b 65 78 74 65 6e  cl>.  are [exten
8b00: 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 20  ded result code 
8b10: 64 65 66 69 6e 69 74 69 6f 6e 73 7c 64 65 66 69  definitions|defi
8b20: 6e 65 64 20 69 6e 20 73 71 6c 69 74 65 33 2e 68  ned in sqlite3.h
8b30: 5d 20 61 6e 64 20 61 72 65 0a 20 20 6c 69 73 74  ] and are.  list
8b40: 65 64 20 69 6e 20 61 6c 70 68 61 62 65 74 69 63  ed in alphabetic
8b50: 61 6c 20 6f 72 64 65 72 20 62 65 6c 6f 77 3a 0a  al order below:.
8b60: 20 20 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d    <table border=
8b70: 30 20 77 69 64 74 68 3d 22 31 30 30 25 22 20 63  0 width="100%" c
8b80: 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 20  ellpadding=10>. 
8b90: 20 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d   <tr><td valign=
8ba0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 6c 65 66  "top" align="lef
8bb0: 74 22 3e 3c 75 6c 3e 0a 3c 74 63 6c 3e 0a 73 65  t"><ul>.<tcl>.se
8bc0: 74 20 6e 72 6f 77 20 5b 65 78 70 72 20 7b 28 24  t nrow [expr {($
8bd0: 6e 45 78 74 43 6f 64 65 2b 31 29 2f 32 7d 5d 0a  nExtCode+1)/2}].
8be0: 73 65 74 20 69 20 30 0a 66 6f 72 65 61 63 68 20  set i 0.foreach 
8bf0: 6e 61 6d 65 20 5b 6c 73 6f 72 74 20 5b 61 72 72  name [lsort [arr
8c00: 61 79 20 6e 61 6d 65 73 20 65 78 74 5f 72 63 5d  ay names ext_rc]
8c10: 5d 20 7b 0a 20 20 69 66 20 7b 24 69 3d 3d 24 6e  ] {.  if {$i==$n
8c20: 72 6f 77 7d 20 7b 0a 20 20 20 20 68 64 5f 70 75  row} {.    hd_pu
8c30: 74 73 20 22 3c 2f 75 6c 3e 3c 2f 74 64 3e 3c 74  ts "</ul></td><t
8c40: 64 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22  d valign=\"top\"
8c50: 20 61 6c 69 67 6e 3d 5c 22 6c 65 66 74 5c 22 3e   align=\"left\">
8c60: 3c 75 6c 3e 5c 6e 22 0a 20 20 20 20 73 65 74 20  <ul>\n".    set 
8c70: 69 20 30 0a 20 20 7d 0a 20 20 69 6e 63 72 20 69  i 0.  }.  incr i
8c80: 0a 20 20 68 64 5f 72 65 73 6f 6c 76 65 20 22 3c  .  hd_resolve "<
8c90: 6c 69 3e 20 5c 5b 24 6e 61 6d 65 5c 5d 20 28 24  li> \[$name\] ($
8ca0: 65 78 74 5f 72 63 28 24 6e 61 6d 65 29 29 5c 6e  ext_rc($name))\n
8cb0: 22 0a 7d 0a 68 64 5f 70 75 74 73 20 22 3c 2f 74  ".}.hd_puts "</t
8cc0: 64 3e 3c 2f 74 64 3e 3c 2f 74 61 62 6c 65 3e 5c  d></td></table>\
8cd0: 6e 5c 6e 22 0a 0a 68 64 5f 70 75 74 73 20 22 0a  n\n"..hd_puts ".
8ce0: 3c 68 32 3e 52 65 73 75 6c 74 20 43 6f 64 65 20  <h2>Result Code 
8cf0: 4d 65 61 6e 69 6e 67 73 3c 2f 68 32 3e 0a 3c 70  Meanings</h2>.<p
8d00: 3e 0a 54 68 65 20 6d 65 61 6e 69 6e 67 73 20 66  >.The meanings f
8d10: 6f 72 20 61 6c 6c 20 24 6e 52 65 73 43 6f 64 65  or all $nResCode
8d20: 20 72 65 73 75 6c 74 20 63 6f 64 65 20 76 61 6c   result code val
8d30: 75 65 73 20 61 72 65 20 73 68 6f 77 6e 20 62 65  ues are shown be
8d40: 6c 6f 77 2c 0a 69 6e 20 6e 75 6d 65 72 69 63 20  low,.in numeric 
8d50: 6f 72 64 65 72 2e 0a 22 0a 0a 23 20 47 65 6e 65  order.."..# Gene
8d60: 72 61 74 65 20 74 68 65 20 74 61 62 6c 65 20 6f  rate the table o
8d70: 66 20 72 65 73 75 6c 74 20 63 6f 64 65 73 0a 23  f result codes.#
8d80: 0a 66 6f 72 65 61 63 68 20 76 61 6c 20 5b 6c 73  .foreach val [ls
8d90: 6f 72 74 20 2d 69 6e 74 20 5b 61 72 72 61 79 20  ort -int [array 
8da0: 6e 61 6d 65 73 20 76 61 6c 74 6f 6e 61 6d 65 5d  names valtoname]
8db0: 5d 20 7b 0a 20 20 73 65 74 20 6e 61 6d 65 20 24  ] {.  set name $
8dc0: 76 61 6c 74 6f 6e 61 6d 65 28 24 76 61 6c 29 0a  valtoname($val).
8dd0: 20 20 72 65 67 73 75 62 20 7b 73 71 6c 69 74 65    regsub {sqlite
8de0: 5f 7d 20 5b 73 74 72 69 6e 67 20 74 6f 6c 6f 77  _} [string tolow
8df0: 65 72 20 24 6e 61 6d 65 5d 20 7b 7d 20 74 61 67  er $name] {} tag
8e00: 0a 20 20 68 64 5f 70 75 74 73 20 22 3c 21 2d 2d  .  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 3e 5c 6e  ------------->\n
8e50: 22 0a 20 20 68 64 5f 66 72 61 67 6d 65 6e 74 20  ".  hd_fragment 
8e60: 24 74 61 67 20 2d 2d 6f 76 65 72 72 69 64 65 20  $tag --override 
8e70: 24 6e 61 6d 65 0a 20 20 68 64 5f 70 75 74 73 20  $name.  hd_puts 
8e80: 22 3c 68 33 3e 28 24 76 61 6c 29 20 24 76 61 6c  "<h3>($val) $val
8e90: 74 6f 6e 61 6d 65 28 24 76 61 6c 29 3c 2f 68 33  toname($val)</h3
8ea0: 3e 5c 6e 22 0a 20 20 68 64 5f 72 65 73 6f 6c 76  >\n".  hd_resolv
8eb0: 65 20 24 72 65 73 64 65 73 63 28 24 6e 61 6d 65  e $resdesc($name
8ec0: 29 5c 6e 5c 6e 0a 7d 0a 0a 3c 2f 74 63 6c 3e 0a  )\n\n.}..</tcl>.