/ Hex Artifact Content
Login

Artifact cb63bf37ccde7ed391669feb3fa5131ea6ce0d0bd0f5561c295a2faee208bbc5:


0000: 2f 2a 0a 2a 2a 20 32 30 30 31 2d 30 39 2d 31 35  /*.** 2001-09-15
0010: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f  .**.** The autho
0020: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
0030: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
0040: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
0050: 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67  lace of.** a leg
0060: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0070: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a  is a blessing:.*
0080: 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20  *.**    May you 
0090: 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20  do good and not 
00a0: 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  evil..**    May 
00b0: 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65  you find forgive
00c0: 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c  ness for yoursel
00d0: 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74  f and forgive ot
00e0: 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  hers..**    May 
00f0: 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c 79  you share freely
0100: 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d  , never taking m
0110: 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76  ore than you giv
0120: 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  e..**.**********
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a  ***************.
0170: 2a 2a 20 54 68 69 73 20 68 65 61 64 65 72 20 66  ** This header f
0180: 69 6c 65 20 64 65 66 69 6e 65 73 20 74 68 65 20  ile defines the 
0190: 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 74  interface that t
01a0: 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  he SQLite librar
01b0: 79 0a 2a 2a 20 70 72 65 73 65 6e 74 73 20 74 6f  y.** presents to
01c0: 20 63 6c 69 65 6e 74 20 70 72 6f 67 72 61 6d 73   client programs
01d0: 2e 20 20 49 66 20 61 20 43 2d 66 75 6e 63 74 69  .  If a C-functi
01e0: 6f 6e 2c 20 73 74 72 75 63 74 75 72 65 2c 20 64  on, structure, d
01f0: 61 74 61 74 79 70 65 2c 0a 2a 2a 20 6f 72 20 63  atatype,.** or c
0200: 6f 6e 73 74 61 6e 74 20 64 65 66 69 6e 69 74 69  onstant definiti
0210: 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 65  on does not appe
0220: 61 72 20 69 6e 20 74 68 69 73 20 66 69 6c 65 2c  ar in this file,
0230: 20 74 68 65 6e 20 69 74 20 69 73 0a 2a 2a 20 6e   then it is.** n
0240: 6f 74 20 61 20 70 75 62 6c 69 73 68 65 64 20 41  ot a published A
0250: 50 49 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 73  PI of SQLite, is
0260: 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e   subject to chan
0270: 67 65 20 77 69 74 68 6f 75 74 0a 2a 2a 20 6e 6f  ge without.** no
0280: 74 69 63 65 2c 20 61 6e 64 20 73 68 6f 75 6c 64  tice, and should
0290: 20 6e 6f 74 20 62 65 20 72 65 66 65 72 65 6e 63   not be referenc
02a0: 65 64 20 62 79 20 70 72 6f 67 72 61 6d 73 20 74  ed by programs t
02b0: 68 61 74 20 75 73 65 20 53 51 4c 69 74 65 2e 0a  hat use SQLite..
02c0: 2a 2a 0a 2a 2a 20 53 6f 6d 65 20 6f 66 20 74 68  **.** Some of th
02d0: 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 74 68  e definitions th
02e0: 61 74 20 61 72 65 20 69 6e 20 74 68 69 73 20 66  at are in this f
02f0: 69 6c 65 20 61 72 65 20 6d 61 72 6b 65 64 20 61  ile are marked a
0300: 73 0a 2a 2a 20 22 65 78 70 65 72 69 6d 65 6e 74  s.** "experiment
0310: 61 6c 22 2e 20 20 45 78 70 65 72 69 6d 65 6e 74  al".  Experiment
0320: 61 6c 20 69 6e 74 65 72 66 61 63 65 73 20 61 72  al interfaces ar
0330: 65 20 6e 6f 72 6d 61 6c 6c 79 20 6e 65 77 0a 2a  e normally new.*
0340: 2a 20 66 65 61 74 75 72 65 73 20 72 65 63 65 6e  * features recen
0350: 74 6c 79 20 61 64 64 65 64 20 74 6f 20 53 51 4c  tly added to SQL
0360: 69 74 65 2e 20 20 57 65 20 64 6f 20 6e 6f 74 20  ite.  We do not 
0370: 61 6e 74 69 63 69 70 61 74 65 20 63 68 61 6e 67  anticipate chang
0380: 65 73 0a 2a 2a 20 74 6f 20 65 78 70 65 72 69 6d  es.** to experim
0390: 65 6e 74 61 6c 20 69 6e 74 65 72 66 61 63 65 73  ental interfaces
03a0: 20 62 75 74 20 72 65 73 65 72 76 65 20 74 68 65   but reserve the
03b0: 20 72 69 67 68 74 20 74 6f 20 6d 61 6b 65 20 6d   right to make m
03c0: 69 6e 6f 72 20 63 68 61 6e 67 65 73 0a 2a 2a 20  inor changes.** 
03d0: 69 66 20 65 78 70 65 72 69 65 6e 63 65 20 66 72  if experience fr
03e0: 6f 6d 20 75 73 65 20 22 69 6e 20 74 68 65 20 77  om use "in the w
03f0: 69 6c 64 22 20 73 75 67 67 65 73 74 20 73 75 63  ild" suggest suc
0400: 68 20 63 68 61 6e 67 65 73 20 61 72 65 20 70 72  h changes are pr
0410: 75 64 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  udent..**.** The
0420: 20 6f 66 66 69 63 69 61 6c 20 43 2d 6c 61 6e 67   official C-lang
0430: 75 61 67 65 20 41 50 49 20 64 6f 63 75 6d 65 6e  uage API documen
0440: 74 61 74 69 6f 6e 20 66 6f 72 20 53 51 4c 69 74  tation for SQLit
0450: 65 20 69 73 20 64 65 72 69 76 65 64 0a 2a 2a 20  e is derived.** 
0460: 66 72 6f 6d 20 63 6f 6d 6d 65 6e 74 73 20 69 6e  from comments in
0470: 20 74 68 69 73 20 66 69 6c 65 2e 20 20 54 68 69   this file.  Thi
0480: 73 20 66 69 6c 65 20 69 73 20 74 68 65 20 61 75  s file is the au
0490: 74 68 6f 72 69 74 61 74 69 76 65 20 73 6f 75 72  thoritative sour
04a0: 63 65 0a 2a 2a 20 6f 6e 20 68 6f 77 20 53 51 4c  ce.** on how SQL
04b0: 69 74 65 20 69 6e 74 65 72 66 61 63 65 73 20 61  ite interfaces a
04c0: 72 65 20 73 75 70 70 6f 73 65 64 20 74 6f 20 6f  re supposed to o
04d0: 70 65 72 61 74 65 2e 0a 2a 2a 0a 2a 2a 20 54 68  perate..**.** Th
04e0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 69 73 20 66  e name of this f
04f0: 69 6c 65 20 75 6e 64 65 72 20 63 6f 6e 66 69 67  ile under config
0500: 75 72 61 74 69 6f 6e 20 6d 61 6e 61 67 65 6d 65  uration manageme
0510: 6e 74 20 69 73 20 22 73 71 6c 69 74 65 2e 68 2e  nt is "sqlite.h.
0520: 69 6e 22 2e 0a 2a 2a 20 54 68 65 20 6d 61 6b 65  in"..** The make
0530: 66 69 6c 65 20 6d 61 6b 65 73 20 73 6f 6d 65 20  file makes some 
0540: 6d 69 6e 6f 72 20 63 68 61 6e 67 65 73 20 74 6f  minor changes to
0550: 20 74 68 69 73 20 66 69 6c 65 20 28 73 75 63 68   this file (such
0560: 20 61 73 20 69 6e 73 65 72 74 69 6e 67 0a 2a 2a   as inserting.**
0570: 20 74 68 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d   the version num
0580: 62 65 72 29 20 61 6e 64 20 63 68 61 6e 67 65 73  ber) and changes
0590: 20 69 74 73 20 6e 61 6d 65 20 74 6f 20 22 73 71   its name to "sq
05a0: 6c 69 74 65 33 2e 68 22 20 61 73 0a 2a 2a 20 70  lite3.h" as.** p
05b0: 61 72 74 20 6f 66 20 74 68 65 20 62 75 69 6c 64  art of the build
05c0: 20 70 72 6f 63 65 73 73 2e 0a 2a 2f 0a 23 69 66   process..*/.#if
05d0: 6e 64 65 66 20 53 51 4c 49 54 45 33 5f 48 0a 23  ndef SQLITE3_H.#
05e0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 33 5f 48  define SQLITE3_H
05f0: 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 61 72  .#include <stdar
0600: 67 2e 68 3e 20 20 20 20 20 2f 2a 20 4e 65 65 64  g.h>     /* Need
0610: 65 64 20 66 6f 72 20 74 68 65 20 64 65 66 69 6e  ed for the defin
0620: 69 74 69 6f 6e 20 6f 66 20 76 61 5f 6c 69 73 74  ition of va_list
0630: 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 4d 61 6b 65 20   */../*.** Make 
0640: 73 75 72 65 20 77 65 20 63 61 6e 20 63 61 6c 6c  sure we can call
0650: 20 74 68 69 73 20 73 74 75 66 66 20 66 72 6f 6d   this stuff from
0660: 20 43 2b 2b 2e 0a 2a 2f 0a 23 69 66 64 65 66 20   C++..*/.#ifdef 
0670: 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 65 78 74 65  __cplusplus.exte
0680: 72 6e 20 22 43 22 20 7b 0a 23 65 6e 64 69 66 0a  rn "C" {.#endif.
0690: 0a 0a 2f 2a 0a 2a 2a 20 50 72 6f 76 69 64 65 20  ../*.** Provide 
06a0: 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 6f  the ability to o
06b0: 76 65 72 72 69 64 65 20 6c 69 6e 6b 61 67 65 20  verride linkage 
06c0: 66 65 61 74 75 72 65 73 20 6f 66 20 74 68 65 20  features of the 
06d0: 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2f 0a 23 69  interface..*/.#i
06e0: 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 45 58 54  fndef SQLITE_EXT
06f0: 45 52 4e 0a 23 20 64 65 66 69 6e 65 20 53 51 4c  ERN.# define SQL
0700: 49 54 45 5f 45 58 54 45 52 4e 20 65 78 74 65 72  ITE_EXTERN exter
0710: 6e 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  n.#endif.#ifndef
0720: 20 53 51 4c 49 54 45 5f 41 50 49 0a 23 20 64 65   SQLITE_API.# de
0730: 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 50 49 0a  fine SQLITE_API.
0740: 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 53  #endif.#ifndef S
0750: 51 4c 49 54 45 5f 43 44 45 43 4c 0a 23 20 64 65  QLITE_CDECL.# de
0760: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 44 45 43  fine SQLITE_CDEC
0770: 4c 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  L.#endif.#ifndef
0780: 20 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 0a   SQLITE_APICALL.
0790: 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  # define SQLITE_
07a0: 41 50 49 43 41 4c 4c 0a 23 65 6e 64 69 66 0a 23  APICALL.#endif.#
07b0: 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 53 54  ifndef SQLITE_ST
07c0: 44 43 41 4c 4c 0a 23 20 64 65 66 69 6e 65 20 53  DCALL.# define S
07d0: 51 4c 49 54 45 5f 53 54 44 43 41 4c 4c 20 53 51  QLITE_STDCALL SQ
07e0: 4c 49 54 45 5f 41 50 49 43 41 4c 4c 0a 23 65 6e  LITE_APICALL.#en
07f0: 64 69 66 0a 23 69 66 6e 64 65 66 20 53 51 4c 49  dif.#ifndef SQLI
0800: 54 45 5f 43 41 4c 4c 42 41 43 4b 0a 23 20 64 65  TE_CALLBACK.# de
0810: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4c 4c  fine SQLITE_CALL
0820: 42 41 43 4b 0a 23 65 6e 64 69 66 0a 23 69 66 6e  BACK.#endif.#ifn
0830: 64 65 66 20 53 51 4c 49 54 45 5f 53 59 53 41 50  def SQLITE_SYSAP
0840: 49 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54  I.# define SQLIT
0850: 45 5f 53 59 53 41 50 49 0a 23 65 6e 64 69 66 0a  E_SYSAPI.#endif.
0860: 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 6e 6f 2d  ./*.** These no-
0870: 6f 70 20 6d 61 63 72 6f 73 20 61 72 65 20 75 73  op macros are us
0880: 65 64 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 69  ed in front of i
0890: 6e 74 65 72 66 61 63 65 73 20 74 6f 20 6d 61 72  nterfaces to mar
08a0: 6b 20 74 68 6f 73 65 0a 2a 2a 20 69 6e 74 65 72  k those.** inter
08b0: 66 61 63 65 73 20 61 73 20 65 69 74 68 65 72 20  faces as either 
08c0: 64 65 70 72 65 63 61 74 65 64 20 6f 72 20 65 78  deprecated or ex
08d0: 70 65 72 69 6d 65 6e 74 61 6c 2e 20 20 4e 65 77  perimental.  New
08e0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a   applications.**
08f0: 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75 73 65 20   should not use 
0900: 64 65 70 72 65 63 61 74 65 64 20 69 6e 74 65 72  deprecated inter
0910: 66 61 63 65 73 20 2d 20 74 68 65 79 20 61 72 65  faces - they are
0920: 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20 62   supported for b
0930: 61 63 6b 77 61 72 64 73 0a 2a 2a 20 63 6f 6d 70  ackwards.** comp
0940: 61 74 69 62 69 6c 69 74 79 20 6f 6e 6c 79 2e 20  atibility only. 
0950: 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 77 72 69   Application wri
0960: 74 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20 61  ters should be a
0970: 77 61 72 65 20 74 68 61 74 0a 2a 2a 20 65 78 70  ware that.** exp
0980: 65 72 69 6d 65 6e 74 61 6c 20 69 6e 74 65 72 66  erimental interf
0990: 61 63 65 73 20 61 72 65 20 73 75 62 6a 65 63 74  aces are subject
09a0: 20 74 6f 20 63 68 61 6e 67 65 20 69 6e 20 70 6f   to change in po
09b0: 69 6e 74 20 72 65 6c 65 61 73 65 73 2e 0a 2a 2a  int releases..**
09c0: 0a 2a 2a 20 54 68 65 73 65 20 6d 61 63 72 6f 73  .** These macros
09d0: 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65   used to resolve
09e0: 20 74 6f 20 76 61 72 69 6f 75 73 20 6b 69 6e 64   to various kind
09f0: 73 20 6f 66 20 63 6f 6d 70 69 6c 65 72 20 6d 61  s of compiler ma
0a00: 67 69 63 20 74 68 61 74 0a 2a 2a 20 77 6f 75 6c  gic that.** woul
0a10: 64 20 67 65 6e 65 72 61 74 65 20 77 61 72 6e 69  d generate warni
0a20: 6e 67 20 6d 65 73 73 61 67 65 73 20 77 68 65 6e  ng messages when
0a30: 20 74 68 65 79 20 77 65 72 65 20 75 73 65 64 2e   they were used.
0a40: 20 20 42 75 74 20 74 68 61 74 0a 2a 2a 20 63 6f    But that.** co
0a50: 6d 70 69 6c 65 72 20 6d 61 67 69 63 20 65 6e 64  mpiler magic end
0a60: 65 64 20 75 70 20 67 65 6e 65 72 61 74 69 6e 67  ed up generating
0a70: 20 73 75 63 68 20 61 20 66 6c 75 72 72 79 20 6f   such a flurry o
0a80: 66 20 62 75 67 20 72 65 70 6f 72 74 73 0a 2a 2a  f bug reports.**
0a90: 20 74 68 61 74 20 77 65 20 68 61 76 65 20 74 61   that we have ta
0aa0: 6b 65 6e 20 69 74 20 61 6c 6c 20 6f 75 74 20 61  ken it all out a
0ab0: 6e 64 20 67 6f 6e 65 20 62 61 63 6b 20 74 6f 20  nd gone back to 
0ac0: 75 73 69 6e 67 20 73 69 6d 70 6c 65 0a 2a 2a 20  using simple.** 
0ad0: 6e 6f 6f 70 20 6d 61 63 72 6f 73 2e 0a 2a 2f 0a  noop macros..*/.
0ae0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
0af0: 45 50 52 45 43 41 54 45 44 0a 23 64 65 66 69 6e  EPRECATED.#defin
0b00: 65 20 53 51 4c 49 54 45 5f 45 58 50 45 52 49 4d  e SQLITE_EXPERIM
0b10: 45 4e 54 41 4c 0a 0a 2f 2a 0a 2a 2a 20 45 6e 73  ENTAL../*.** Ens
0b20: 75 72 65 20 74 68 65 73 65 20 73 79 6d 62 6f 6c  ure these symbol
0b30: 73 20 77 65 72 65 20 6e 6f 74 20 64 65 66 69 6e  s were not defin
0b40: 65 64 20 62 79 20 73 6f 6d 65 20 70 72 65 76 69  ed by some previ
0b50: 6f 75 73 20 68 65 61 64 65 72 20 66 69 6c 65 2e  ous header file.
0b60: 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54  .*/.#ifdef SQLIT
0b70: 45 5f 56 45 52 53 49 4f 4e 0a 23 20 75 6e 64 65  E_VERSION.# unde
0b80: 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e  f SQLITE_VERSION
0b90: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
0ba0: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55  QLITE_VERSION_NU
0bb0: 4d 42 45 52 0a 23 20 75 6e 64 65 66 20 53 51 4c  MBER.# undef SQL
0bc0: 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42  ITE_VERSION_NUMB
0bd0: 45 52 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a  ER.#endif../*.**
0be0: 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6d 70 69   CAPI3REF: Compi
0bf0: 6c 65 2d 54 69 6d 65 20 4c 69 62 72 61 72 79 20  le-Time Library 
0c00: 56 65 72 73 69 6f 6e 20 4e 75 6d 62 65 72 73 0a  Version Numbers.
0c10: 2a 2a 0a 2a 2a 20 5e 28 54 68 65 20 5b 53 51 4c  **.** ^(The [SQL
0c20: 49 54 45 5f 56 45 52 53 49 4f 4e 5d 20 43 20 70  ITE_VERSION] C p
0c30: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
0c40: 6f 20 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33  o in the sqlite3
0c50: 2e 68 20 68 65 61 64 65 72 0a 2a 2a 20 65 76 61  .h header.** eva
0c60: 6c 75 61 74 65 73 20 74 6f 20 61 20 73 74 72 69  luates to a stri
0c70: 6e 67 20 6c 69 74 65 72 61 6c 20 74 68 61 74 20  ng literal that 
0c80: 69 73 20 74 68 65 20 53 51 4c 69 74 65 20 76 65  is the SQLite ve
0c90: 72 73 69 6f 6e 20 69 6e 20 74 68 65 0a 2a 2a 20  rsion in the.** 
0ca0: 66 6f 72 6d 61 74 20 22 58 2e 59 2e 5a 22 20 77  format "X.Y.Z" w
0cb0: 68 65 72 65 20 58 20 69 73 20 74 68 65 20 6d 61  here X is the ma
0cc0: 6a 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62  jor version numb
0cd0: 65 72 20 28 61 6c 77 61 79 73 20 33 20 66 6f 72  er (always 3 for
0ce0: 0a 2a 2a 20 53 51 4c 69 74 65 33 29 20 61 6e 64  .** SQLite3) and
0cf0: 20 59 20 69 73 20 74 68 65 20 6d 69 6e 6f 72 20   Y is the minor 
0d00: 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 61  version number a
0d10: 6e 64 20 5a 20 69 73 20 74 68 65 20 72 65 6c 65  nd Z is the rele
0d20: 61 73 65 20 6e 75 6d 62 65 72 2e 29 5e 0a 2a 2a  ase number.)^.**
0d30: 20 5e 28 54 68 65 20 5b 53 51 4c 49 54 45 5f 56   ^(The [SQLITE_V
0d40: 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 5d 20 43  ERSION_NUMBER] C
0d50: 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61   preprocessor ma
0d60: 63 72 6f 20 72 65 73 6f 6c 76 65 73 20 74 6f 20  cro resolves to 
0d70: 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 77 69  an integer.** wi
0d80: 74 68 20 74 68 65 20 76 61 6c 75 65 20 28 58 2a  th the value (X*
0d90: 31 30 30 30 30 30 30 20 2b 20 59 2a 31 30 30 30  1000000 + Y*1000
0da0: 20 2b 20 5a 29 20 77 68 65 72 65 20 58 2c 20 59   + Z) where X, Y
0db0: 2c 20 61 6e 64 20 5a 20 61 72 65 20 74 68 65 20  , and Z are the 
0dc0: 73 61 6d 65 0a 2a 2a 20 6e 75 6d 62 65 72 73 20  same.** numbers 
0dd0: 75 73 65 64 20 69 6e 20 5b 53 51 4c 49 54 45 5f  used in [SQLITE_
0de0: 56 45 52 53 49 4f 4e 5d 2e 29 5e 0a 2a 2a 20 54  VERSION].)^.** T
0df0: 68 65 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f  he SQLITE_VERSIO
0e00: 4e 5f 4e 55 4d 42 45 52 20 66 6f 72 20 61 6e 79  N_NUMBER for any
0e10: 20 67 69 76 65 6e 20 72 65 6c 65 61 73 65 20 6f   given release o
0e20: 66 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c  f SQLite will al
0e30: 73 6f 0a 2a 2a 20 62 65 20 6c 61 72 67 65 72 20  so.** be larger 
0e40: 74 68 61 6e 20 74 68 65 20 72 65 6c 65 61 73 65  than the release
0e50: 20 66 72 6f 6d 20 77 68 69 63 68 20 69 74 20 69   from which it i
0e60: 73 20 64 65 72 69 76 65 64 2e 20 20 45 69 74 68  s derived.  Eith
0e70: 65 72 20 59 20 77 69 6c 6c 0a 2a 2a 20 62 65 20  er Y will.** be 
0e80: 68 65 6c 64 20 63 6f 6e 73 74 61 6e 74 20 61 6e  held constant an
0e90: 64 20 5a 20 77 69 6c 6c 20 62 65 20 69 6e 63 72  d Z will be incr
0ea0: 65 6d 65 6e 74 65 64 20 6f 72 20 65 6c 73 65 20  emented or else 
0eb0: 59 20 77 69 6c 6c 20 62 65 20 69 6e 63 72 65 6d  Y will be increm
0ec0: 65 6e 74 65 64 0a 2a 2a 20 61 6e 64 20 5a 20 77  ented.** and Z w
0ed0: 69 6c 6c 20 62 65 20 72 65 73 65 74 20 74 6f 20  ill be reset to 
0ee0: 7a 65 72 6f 2e 0a 2a 2a 0a 2a 2a 20 53 69 6e 63  zero..**.** Sinc
0ef0: 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e 31  e [version 3.6.1
0f00: 38 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 36 2e  8] ([dateof:3.6.
0f10: 31 38 5d 29 2c 20 0a 2a 2a 20 53 51 4c 69 74 65  18]), .** SQLite
0f20: 20 73 6f 75 72 63 65 20 63 6f 64 65 20 68 61 73   source code has
0f30: 20 62 65 65 6e 20 73 74 6f 72 65 64 20 69 6e 20   been stored in 
0f40: 74 68 65 0a 2a 2a 20 3c 61 20 68 72 65 66 3d 22  the.** <a href="
0f50: 68 74 74 70 3a 2f 2f 77 77 77 2e 66 6f 73 73 69  http://www.fossi
0f60: 6c 2d 73 63 6d 2e 6f 72 67 2f 22 3e 46 6f 73 73  l-scm.org/">Foss
0f70: 69 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  il configuration
0f80: 20 6d 61 6e 61 67 65 6d 65 6e 74 0a 2a 2a 20 73   management.** s
0f90: 79 73 74 65 6d 3c 2f 61 3e 2e 20 20 5e 54 68 65  ystem</a>.  ^The
0fa0: 20 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49   SQLITE_SOURCE_I
0fb0: 44 20 6d 61 63 72 6f 20 65 76 61 6c 75 61 74 65  D macro evaluate
0fc0: 73 20 74 6f 0a 2a 2a 20 61 20 73 74 72 69 6e 67  s to.** a string
0fd0: 20 77 68 69 63 68 20 69 64 65 6e 74 69 66 69 65   which identifie
0fe0: 73 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 63  s a particular c
0ff0: 68 65 63 6b 2d 69 6e 20 6f 66 20 53 51 4c 69 74  heck-in of SQLit
1000: 65 0a 2a 2a 20 77 69 74 68 69 6e 20 69 74 73 20  e.** within its 
1010: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6d 61  configuration ma
1020: 6e 61 67 65 6d 65 6e 74 20 73 79 73 74 65 6d 2e  nagement system.
1030: 20 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 53 4f    ^The SQLITE_SO
1040: 55 52 43 45 5f 49 44 0a 2a 2a 20 73 74 72 69 6e  URCE_ID.** strin
1050: 67 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 64  g contains the d
1060: 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6f 66 20  ate and time of 
1070: 74 68 65 20 63 68 65 63 6b 2d 69 6e 20 28 55 54  the check-in (UT
1080: 43 29 20 61 6e 64 20 61 20 53 48 41 31 0a 2a 2a  C) and a SHA1.**
1090: 20 6f 72 20 53 48 41 33 2d 32 35 36 20 68 61 73   or SHA3-256 has
10a0: 68 20 6f 66 20 74 68 65 20 65 6e 74 69 72 65 20  h of the entire 
10b0: 73 6f 75 72 63 65 20 74 72 65 65 2e 20 20 49 66  source tree.  If
10c0: 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65   the source code
10d0: 20 68 61 73 0a 2a 2a 20 62 65 65 6e 20 65 64 69   has.** been edi
10e0: 74 65 64 20 69 6e 20 61 6e 79 20 77 61 79 20 73  ted in any way s
10f0: 69 6e 63 65 20 69 74 20 77 61 73 20 6c 61 73 74  ince it was last
1100: 20 63 68 65 63 6b 65 64 20 69 6e 2c 20 74 68 65   checked in, the
1110: 6e 20 74 68 65 20 6c 61 73 74 0a 2a 2a 20 66 6f  n the last.** fo
1120: 75 72 20 68 65 78 61 64 65 63 69 6d 61 6c 20 64  ur hexadecimal d
1130: 69 67 69 74 73 20 6f 66 20 74 68 65 20 68 61 73  igits of the has
1140: 68 20 6d 61 79 20 62 65 20 6d 6f 64 69 66 69 65  h may be modifie
1150: 64 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73  d..**.** See als
1160: 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 6c 69 62 76  o: [sqlite3_libv
1170: 65 72 73 69 6f 6e 28 29 5d 2c 0a 2a 2a 20 5b 73  ersion()],.** [s
1180: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
1190: 6e 5f 6e 75 6d 62 65 72 28 29 5d 2c 20 5b 73 71  n_number()], [sq
11a0: 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29  lite3_sourceid()
11b0: 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 5f 76 65  ],.** [sqlite_ve
11c0: 72 73 69 6f 6e 28 29 5d 20 61 6e 64 20 5b 73 71  rsion()] and [sq
11d0: 6c 69 74 65 5f 73 6f 75 72 63 65 5f 69 64 28 29  lite_source_id()
11e0: 5d 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ]..*/.#define SQ
11f0: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 20 20 20 20  LITE_VERSION    
1200: 20 20 20 20 22 2d 2d 56 45 52 53 2d 2d 22 0a 23      "--VERS--".#
1210: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 56 45  define SQLITE_VE
1220: 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 2d 2d 56  RSION_NUMBER --V
1230: 45 52 53 49 4f 4e 2d 4e 55 4d 42 45 52 2d 2d 0a  ERSION-NUMBER--.
1240: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
1250: 4f 55 52 43 45 5f 49 44 20 20 20 20 20 20 22 2d  OURCE_ID      "-
1260: 2d 53 4f 55 52 43 45 2d 49 44 2d 2d 22 0a 0a 2f  -SOURCE-ID--"../
1270: 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52  *.** CAPI3REF: R
1280: 75 6e 2d 54 69 6d 65 20 4c 69 62 72 61 72 79 20  un-Time Library 
1290: 56 65 72 73 69 6f 6e 20 4e 75 6d 62 65 72 73 0a  Version Numbers.
12a0: 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 73 71 6c  ** KEYWORDS: sql
12b0: 69 74 65 33 5f 76 65 72 73 69 6f 6e 20 73 71 6c  ite3_version sql
12c0: 69 74 65 33 5f 73 6f 75 72 63 65 69 64 0a 2a 2a  ite3_sourceid.**
12d0: 0a 2a 2a 20 54 68 65 73 65 20 69 6e 74 65 72 66  .** These interf
12e0: 61 63 65 73 20 70 72 6f 76 69 64 65 20 74 68 65  aces provide the
12f0: 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61 74 69 6f   same informatio
1300: 6e 20 61 73 20 74 68 65 20 5b 53 51 4c 49 54 45  n as the [SQLITE
1310: 5f 56 45 52 53 49 4f 4e 5d 2c 0a 2a 2a 20 5b 53  _VERSION],.** [S
1320: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55  QLITE_VERSION_NU
1330: 4d 42 45 52 5d 2c 20 61 6e 64 20 5b 53 51 4c 49  MBER], and [SQLI
1340: 54 45 5f 53 4f 55 52 43 45 5f 49 44 5d 20 43 20  TE_SOURCE_ID] C 
1350: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
1360: 72 6f 73 0a 2a 2a 20 62 75 74 20 61 72 65 20 61  ros.** but are a
1370: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
1380: 68 65 20 6c 69 62 72 61 72 79 20 69 6e 73 74 65  he library inste
1390: 61 64 20 6f 66 20 74 68 65 20 68 65 61 64 65 72  ad of the header
13a0: 20 66 69 6c 65 2e 20 20 5e 28 43 61 75 74 69 6f   file.  ^(Cautio
13b0: 75 73 0a 2a 2a 20 70 72 6f 67 72 61 6d 6d 65 72  us.** programmer
13c0: 73 20 6d 69 67 68 74 20 69 6e 63 6c 75 64 65 20  s might include 
13d0: 61 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65  assert() stateme
13e0: 6e 74 73 20 69 6e 20 74 68 65 69 72 20 61 70 70  nts in their app
13f0: 6c 69 63 61 74 69 6f 6e 20 74 6f 0a 2a 2a 20 76  lication to.** v
1400: 65 72 69 66 79 20 74 68 61 74 20 76 61 6c 75 65  erify that value
1410: 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  s returned by th
1420: 65 73 65 20 69 6e 74 65 72 66 61 63 65 73 20 6d  ese interfaces m
1430: 61 74 63 68 20 74 68 65 20 6d 61 63 72 6f 73 20  atch the macros 
1440: 69 6e 0a 2a 2a 20 74 68 65 20 68 65 61 64 65 72  in.** the header
1450: 2c 20 61 6e 64 20 74 68 75 73 20 65 6e 73 75 72  , and thus ensur
1460: 65 20 74 68 61 74 20 74 68 65 20 61 70 70 6c 69  e that the appli
1470: 63 61 74 69 6f 6e 20 69 73 0a 2a 2a 20 63 6f 6d  cation is.** com
1480: 70 69 6c 65 64 20 77 69 74 68 20 6d 61 74 63 68  piled with match
1490: 69 6e 67 20 6c 69 62 72 61 72 79 20 61 6e 64 20  ing library and 
14a0: 68 65 61 64 65 72 20 66 69 6c 65 73 2e 0a 2a 2a  header files..**
14b0: 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  .** <blockquote>
14c0: 3c 70 72 65 3e 0a 2a 2a 20 61 73 73 65 72 74 28  <pre>.** assert(
14d0: 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73   sqlite3_libvers
14e0: 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3d 3d 53 51  ion_number()==SQ
14f0: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d  LITE_VERSION_NUM
1500: 42 45 52 20 29 3b 0a 2a 2a 20 61 73 73 65 72 74  BER );.** assert
1510: 28 20 73 74 72 6e 63 6d 70 28 73 71 6c 69 74 65  ( strncmp(sqlite
1520: 33 5f 73 6f 75 72 63 65 69 64 28 29 2c 53 51 4c  3_sourceid(),SQL
1530: 49 54 45 5f 53 4f 55 52 43 45 5f 49 44 2c 38 30  ITE_SOURCE_ID,80
1540: 29 3d 3d 30 20 29 3b 0a 2a 2a 20 61 73 73 65 72  )==0 );.** asser
1550: 74 28 20 73 74 72 63 6d 70 28 73 71 6c 69 74 65  t( strcmp(sqlite
1560: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 2c 53  3_libversion(),S
1570: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 29 3d 3d  QLITE_VERSION)==
1580: 30 20 29 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f  0 );.** </pre></
1590: 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 2a 2a  blockquote>)^.**
15a0: 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
15b0: 5f 76 65 72 73 69 6f 6e 5b 5d 20 73 74 72 69 6e  _version[] strin
15c0: 67 20 63 6f 6e 73 74 61 6e 74 20 63 6f 6e 74 61  g constant conta
15d0: 69 6e 73 20 74 68 65 20 74 65 78 74 20 6f 66 20  ins the text of 
15e0: 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d  [SQLITE_VERSION]
15f0: 0a 2a 2a 20 6d 61 63 72 6f 2e 20 20 5e 54 68 65  .** macro.  ^The
1600: 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73   sqlite3_libvers
1610: 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  ion() function r
1620: 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72  eturns a pointer
1630: 20 74 6f 20 74 68 65 0a 2a 2a 20 74 6f 20 74 68   to the.** to th
1640: 65 20 73 71 6c 69 74 65 33 5f 76 65 72 73 69 6f  e sqlite3_versio
1650: 6e 5b 5d 20 73 74 72 69 6e 67 20 63 6f 6e 73 74  n[] string const
1660: 61 6e 74 2e 20 20 54 68 65 20 73 71 6c 69 74 65  ant.  The sqlite
1670: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 0a 2a  3_libversion().*
1680: 2a 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 70 72  * function is pr
1690: 6f 76 69 64 65 64 20 66 6f 72 20 75 73 65 20 69  ovided for use i
16a0: 6e 20 44 4c 4c 73 20 73 69 6e 63 65 20 44 4c 4c  n DLLs since DLL
16b0: 20 75 73 65 72 73 20 75 73 75 61 6c 6c 79 20 64   users usually d
16c0: 6f 20 6e 6f 74 20 68 61 76 65 0a 2a 2a 20 64 69  o not have.** di
16d0: 72 65 63 74 20 61 63 63 65 73 73 20 74 6f 20 73  rect access to s
16e0: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 20  tring constants 
16f0: 77 69 74 68 69 6e 20 74 68 65 20 44 4c 4c 2e 20  within the DLL. 
1700: 20 5e 54 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33   ^The.** sqlite3
1710: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
1720: 65 72 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  er() function re
1730: 74 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72  turns an integer
1740: 20 65 71 75 61 6c 20 74 6f 0a 2a 2a 20 5b 53 51   equal to.** [SQ
1750: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d  LITE_VERSION_NUM
1760: 42 45 52 5d 2e 20 20 5e 28 54 68 65 20 73 71 6c  BER].  ^(The sql
1770: 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 20  ite3_sourceid() 
1780: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
1790: 20 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20 74   .** a pointer t
17a0: 6f 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 73 74  o a string const
17b0: 61 6e 74 20 77 68 6f 73 65 20 76 61 6c 75 65 20  ant whose value 
17c0: 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 74  is the same as t
17d0: 68 65 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 53  he .** [SQLITE_S
17e0: 4f 55 52 43 45 5f 49 44 5d 20 43 20 70 72 65 70  OURCE_ID] C prep
17f0: 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e 20  rocessor macro. 
1800: 20 45 78 63 65 70 74 20 69 66 20 53 51 4c 69 74   Except if SQLit
1810: 65 20 69 73 20 62 75 69 6c 74 0a 2a 2a 20 75 73  e is built.** us
1820: 69 6e 67 20 61 6e 20 65 64 69 74 65 64 20 63 6f  ing an edited co
1830: 70 79 20 6f 66 20 5b 74 68 65 20 61 6d 61 6c 67  py of [the amalg
1840: 61 6d 61 74 69 6f 6e 5d 2c 20 74 68 65 6e 20 74  amation], then t
1850: 68 65 20 6c 61 73 74 20 66 6f 75 72 20 63 68 61  he last four cha
1860: 72 61 63 74 65 72 73 0a 2a 2a 20 6f 66 20 74 68  racters.** of th
1870: 65 20 68 61 73 68 20 6d 69 67 68 74 20 62 65 20  e hash might be 
1880: 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 5b  different from [
1890: 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44  SQLITE_SOURCE_ID
18a0: 5d 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61  ].)^.**.** See a
18b0: 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 5f 76 65 72  lso: [sqlite_ver
18c0: 73 69 6f 6e 28 29 5d 20 61 6e 64 20 5b 73 71 6c  sion()] and [sql
18d0: 69 74 65 5f 73 6f 75 72 63 65 5f 69 64 28 29 5d  ite_source_id()]
18e0: 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 45 58 54 45  ..*/.SQLITE_EXTE
18f0: 52 4e 20 63 6f 6e 73 74 20 63 68 61 72 20 73 71  RN const char sq
1900: 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 3b  lite3_version[];
1910: 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c  .const char *sql
1920: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
1930: 76 6f 69 64 29 3b 0a 63 6f 6e 73 74 20 63 68 61  void);.const cha
1940: 72 20 2a 73 71 6c 69 74 65 33 5f 73 6f 75 72 63  r *sqlite3_sourc
1950: 65 69 64 28 76 6f 69 64 29 3b 0a 69 6e 74 20 73  eid(void);.int s
1960: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
1970: 6e 5f 6e 75 6d 62 65 72 28 76 6f 69 64 29 3b 0a  n_number(void);.
1980: 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
1990: 20 52 75 6e 2d 54 69 6d 65 20 4c 69 62 72 61 72   Run-Time Librar
19a0: 79 20 43 6f 6d 70 69 6c 61 74 69 6f 6e 20 4f 70  y Compilation Op
19b0: 74 69 6f 6e 73 20 44 69 61 67 6e 6f 73 74 69 63  tions Diagnostic
19c0: 73 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  s.**.** ^The sql
19d0: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
19e0: 6f 6e 5f 75 73 65 64 28 29 20 66 75 6e 63 74 69  on_used() functi
19f0: 6f 6e 20 72 65 74 75 72 6e 73 20 30 20 6f 72 20  on returns 0 or 
1a00: 31 20 0a 2a 2a 20 69 6e 64 69 63 61 74 69 6e 67  1 .** indicating
1a10: 20 77 68 65 74 68 65 72 20 74 68 65 20 73 70 65   whether the spe
1a20: 63 69 66 69 65 64 20 6f 70 74 69 6f 6e 20 77 61  cified option wa
1a30: 73 20 64 65 66 69 6e 65 64 20 61 74 20 0a 2a 2a  s defined at .**
1a40: 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 20   compile time.  
1a50: 5e 54 68 65 20 53 51 4c 49 54 45 5f 20 70 72 65  ^The SQLITE_ pre
1a60: 66 69 78 20 6d 61 79 20 62 65 20 6f 6d 69 74 74  fix may be omitt
1a70: 65 64 20 66 72 6f 6d 20 74 68 65 20 0a 2a 2a 20  ed from the .** 
1a80: 6f 70 74 69 6f 6e 20 6e 61 6d 65 20 70 61 73 73  option name pass
1a90: 65 64 20 74 6f 20 73 71 6c 69 74 65 33 5f 63 6f  ed to sqlite3_co
1aa0: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
1ab0: 28 29 2e 20 20 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ().  .**.** ^The
1ac0: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
1ad0: 6f 70 74 69 6f 6e 5f 67 65 74 28 29 20 66 75 6e  option_get() fun
1ae0: 63 74 69 6f 6e 20 61 6c 6c 6f 77 73 20 69 74 65  ction allows ite
1af0: 72 61 74 69 6e 67 0a 2a 2a 20 6f 76 65 72 20 74  rating.** over t
1b00: 68 65 20 6c 69 73 74 20 6f 66 20 6f 70 74 69 6f  he list of optio
1b10: 6e 73 20 74 68 61 74 20 77 65 72 65 20 64 65 66  ns that were def
1b20: 69 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 20  ined at compile 
1b30: 74 69 6d 65 20 62 79 0a 2a 2a 20 72 65 74 75 72  time by.** retur
1b40: 6e 69 6e 67 20 74 68 65 20 4e 2d 74 68 20 63 6f  ning the N-th co
1b50: 6d 70 69 6c 65 20 74 69 6d 65 20 6f 70 74 69 6f  mpile time optio
1b60: 6e 20 73 74 72 69 6e 67 2e 20 20 5e 49 66 20 4e  n string.  ^If N
1b70: 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65   is out of range
1b80: 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6d  ,.** sqlite3_com
1b90: 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29  pileoption_get()
1ba0: 20 72 65 74 75 72 6e 73 20 61 20 4e 55 4c 4c 20   returns a NULL 
1bb0: 70 6f 69 6e 74 65 72 2e 20 20 5e 54 68 65 20 53  pointer.  ^The S
1bc0: 51 4c 49 54 45 5f 20 0a 2a 2a 20 70 72 65 66 69  QLITE_ .** prefi
1bd0: 78 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f  x is omitted fro
1be0: 6d 20 61 6e 79 20 73 74 72 69 6e 67 73 20 72 65  m any strings re
1bf0: 74 75 72 6e 65 64 20 62 79 20 0a 2a 2a 20 73 71  turned by .** sq
1c00: 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74  lite3_compileopt
1c10: 69 6f 6e 5f 67 65 74 28 29 2e 0a 2a 2a 0a 2a 2a  ion_get()..**.**
1c20: 20 5e 53 75 70 70 6f 72 74 20 66 6f 72 20 74 68   ^Support for th
1c30: 65 20 64 69 61 67 6e 6f 73 74 69 63 20 66 75 6e  e diagnostic fun
1c40: 63 74 69 6f 6e 73 20 73 71 6c 69 74 65 33 5f 63  ctions sqlite3_c
1c50: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
1c60: 64 28 29 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74  d().** and sqlit
1c70: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
1c80: 5f 67 65 74 28 29 20 6d 61 79 20 62 65 20 6f 6d  _get() may be om
1c90: 69 74 74 65 64 20 62 79 20 73 70 65 63 69 66 79  itted by specify
1ca0: 69 6e 67 20 74 68 65 20 0a 2a 2a 20 5b 53 51 4c  ing the .** [SQL
1cb0: 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45  ITE_OMIT_COMPILE
1cc0: 4f 50 54 49 4f 4e 5f 44 49 41 47 53 5d 20 6f 70  OPTION_DIAGS] op
1cd0: 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c 65 20  tion at compile 
1ce0: 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20  time..**.** See 
1cf0: 61 6c 73 6f 3a 20 53 51 4c 20 66 75 6e 63 74 69  also: SQL functi
1d00: 6f 6e 73 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70  ons [sqlite_comp
1d10: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29  ileoption_used()
1d20: 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65  ] and.** [sqlite
1d30: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
1d40: 65 74 28 29 5d 20 61 6e 64 20 74 68 65 20 5b 63  et()] and the [c
1d50: 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70  ompile_options p
1d60: 72 61 67 6d 61 5d 2e 0a 2a 2f 0a 23 69 66 6e 64  ragma]..*/.#ifnd
1d70: 65 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  ef SQLITE_OMIT_C
1d80: 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41  OMPILEOPTION_DIA
1d90: 47 53 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  GS.int sqlite3_c
1da0: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
1db0: 64 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4f  d(const char *zO
1dc0: 70 74 4e 61 6d 65 29 3b 0a 63 6f 6e 73 74 20 63  ptName);.const c
1dd0: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6d  har *sqlite3_com
1de0: 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69  pileoption_get(i
1df0: 6e 74 20 4e 29 3b 0a 23 65 6e 64 69 66 0a 0a 2f  nt N);.#endif../
1e00: 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 54  *.** CAPI3REF: T
1e10: 65 73 74 20 54 6f 20 53 65 65 20 49 66 20 54 68  est To See If Th
1e20: 65 20 4c 69 62 72 61 72 79 20 49 73 20 54 68 72  e Library Is Thr
1e30: 65 61 64 73 61 66 65 0a 2a 2a 0a 2a 2a 20 5e 54  eadsafe.**.** ^T
1e40: 68 65 20 73 71 6c 69 74 65 33 5f 74 68 72 65 61  he sqlite3_threa
1e50: 64 73 61 66 65 28 29 20 66 75 6e 63 74 69 6f 6e  dsafe() function
1e60: 20 72 65 74 75 72 6e 73 20 7a 65 72 6f 20 69 66   returns zero if
1e70: 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 2a 2a 20   and only if.** 
1e80: 53 51 4c 69 74 65 20 77 61 73 20 63 6f 6d 70 69  SQLite was compi
1e90: 6c 65 64 20 77 69 74 68 20 6d 75 74 65 78 69 6e  led with mutexin
1ea0: 67 20 63 6f 64 65 20 6f 6d 69 74 74 65 64 20 64  g code omitted d
1eb0: 75 65 20 74 6f 20 74 68 65 0a 2a 2a 20 5b 53 51  ue to the.** [SQ
1ec0: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d  LITE_THREADSAFE]
1ed0: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
1ee0: 74 69 6f 6e 20 62 65 69 6e 67 20 73 65 74 20 74  tion being set t
1ef0: 6f 20 30 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74  o 0..**.** SQLit
1f00: 65 20 63 61 6e 20 62 65 20 63 6f 6d 70 69 6c 65  e can be compile
1f10: 64 20 77 69 74 68 20 6f 72 20 77 69 74 68 6f 75  d with or withou
1f20: 74 20 6d 75 74 65 78 65 73 2e 20 20 57 68 65 6e  t mutexes.  When
1f30: 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  .** the [SQLITE_
1f40: 54 48 52 45 41 44 53 41 46 45 5d 20 43 20 70 72  THREADSAFE] C pr
1f50: 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  eprocessor macro
1f60: 20 69 73 20 31 20 6f 72 20 32 2c 20 6d 75 74 65   is 1 or 2, mute
1f70: 78 65 73 0a 2a 2a 20 61 72 65 20 65 6e 61 62 6c  xes.** are enabl
1f80: 65 64 20 61 6e 64 20 53 51 4c 69 74 65 20 69 73  ed and SQLite is
1f90: 20 74 68 72 65 61 64 73 61 66 65 2e 20 20 57 68   threadsafe.  Wh
1fa0: 65 6e 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  en the.** [SQLIT
1fb0: 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20 6d 61  E_THREADSAFE] ma
1fc0: 63 72 6f 20 69 73 20 30 2c 20 0a 2a 2a 20 74 68  cro is 0, .** th
1fd0: 65 20 6d 75 74 65 78 65 73 20 61 72 65 20 6f 6d  e mutexes are om
1fe0: 69 74 74 65 64 2e 20 20 57 69 74 68 6f 75 74 20  itted.  Without 
1ff0: 74 68 65 20 6d 75 74 65 78 65 73 2c 20 69 74 20  the mutexes, it 
2000: 69 73 20 6e 6f 74 20 73 61 66 65 0a 2a 2a 20 74  is not safe.** t
2010: 6f 20 75 73 65 20 53 51 4c 69 74 65 20 63 6f 6e  o use SQLite con
2020: 63 75 72 72 65 6e 74 6c 79 20 66 72 6f 6d 20 6d  currently from m
2030: 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 68 72  ore than one thr
2040: 65 61 64 2e 0a 2a 2a 0a 2a 2a 20 45 6e 61 62 6c  ead..**.** Enabl
2050: 69 6e 67 20 6d 75 74 65 78 65 73 20 69 6e 63 75  ing mutexes incu
2060: 72 73 20 61 20 6d 65 61 73 75 72 61 62 6c 65 20  rs a measurable 
2070: 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61  performance pena
2080: 6c 74 79 2e 0a 2a 2a 20 53 6f 20 69 66 20 73 70  lty..** So if sp
2090: 65 65 64 20 69 73 20 6f 66 20 75 74 6d 6f 73 74  eed is of utmost
20a0: 20 69 6d 70 6f 72 74 61 6e 63 65 2c 20 69 74 20   importance, it 
20b0: 6d 61 6b 65 73 20 73 65 6e 73 65 20 74 6f 20 64  makes sense to d
20c0: 69 73 61 62 6c 65 0a 2a 2a 20 74 68 65 20 6d 75  isable.** the mu
20d0: 74 65 78 65 73 2e 20 20 42 75 74 20 66 6f 72 20  texes.  But for 
20e0: 6d 61 78 69 6d 75 6d 20 73 61 66 65 74 79 2c 20  maximum safety, 
20f0: 6d 75 74 65 78 65 73 20 73 68 6f 75 6c 64 20 62  mutexes should b
2100: 65 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 20 5e 54  e enabled..** ^T
2110: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
2120: 69 6f 72 20 69 73 20 66 6f 72 20 6d 75 74 65 78  ior is for mutex
2130: 65 73 20 74 6f 20 62 65 20 65 6e 61 62 6c 65 64  es to be enabled
2140: 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 6e 74  ..**.** This int
2150: 65 72 66 61 63 65 20 63 61 6e 20 62 65 20 75 73  erface can be us
2160: 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69 63 61  ed by an applica
2170: 74 69 6f 6e 20 74 6f 20 6d 61 6b 65 20 73 75 72  tion to make sur
2180: 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 76 65  e that the.** ve
2190: 72 73 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20  rsion of SQLite 
21a0: 74 68 61 74 20 69 74 20 69 73 20 6c 69 6e 6b 69  that it is linki
21b0: 6e 67 20 61 67 61 69 6e 73 74 20 77 61 73 20 63  ng against was c
21c0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20  ompiled with.** 
21d0: 74 68 65 20 64 65 73 69 72 65 64 20 73 65 74 74  the desired sett
21e0: 69 6e 67 20 6f 66 20 74 68 65 20 5b 53 51 4c 49  ing of the [SQLI
21f0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20 6d  TE_THREADSAFE] m
2200: 61 63 72 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73  acro..**.** This
2210: 20 69 6e 74 65 72 66 61 63 65 20 6f 6e 6c 79 20   interface only 
2220: 72 65 70 6f 72 74 73 20 6f 6e 20 74 68 65 20 63  reports on the c
2230: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6d 75 74 65  ompile-time mute
2240: 78 20 73 65 74 74 69 6e 67 0a 2a 2a 20 6f 66 20  x setting.** of 
2250: 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45  the [SQLITE_THRE
2260: 41 44 53 41 46 45 5d 20 66 6c 61 67 2e 20 20 49  ADSAFE] flag.  I
2270: 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  f SQLite is comp
2280: 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 53 51 4c  iled with.** SQL
2290: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
22a0: 20 6f 72 20 3d 32 20 74 68 65 6e 20 6d 75 74 65   or =2 then mute
22b0: 78 65 73 20 61 72 65 20 65 6e 61 62 6c 65 64 20  xes are enabled 
22c0: 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 0a 2a  by default but.*
22d0: 2a 20 63 61 6e 20 62 65 20 66 75 6c 6c 79 20 6f  * can be fully o
22e0: 72 20 70 61 72 74 69 61 6c 6c 79 20 64 69 73 61  r partially disa
22f0: 62 6c 65 64 20 75 73 69 6e 67 20 61 20 63 61 6c  bled using a cal
2300: 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f  l to [sqlite3_co
2310: 6e 66 69 67 28 29 5d 0a 2a 2a 20 77 69 74 68 20  nfig()].** with 
2320: 74 68 65 20 76 65 72 62 73 20 5b 53 51 4c 49 54  the verbs [SQLIT
2330: 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54  E_CONFIG_SINGLET
2340: 48 52 45 41 44 5d 2c 20 5b 53 51 4c 49 54 45 5f  HREAD], [SQLITE_
2350: 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45  CONFIG_MULTITHRE
2360: 41 44 5d 2c 0a 2a 2a 20 6f 72 20 5b 53 51 4c 49  AD],.** or [SQLI
2370: 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c  TE_CONFIG_SERIAL
2380: 49 5a 45 44 5d 2e 20 20 5e 28 54 68 65 20 72 65  IZED].  ^(The re
2390: 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68  turn value of th
23a0: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 74 68 72  e.** sqlite3_thr
23b0: 65 61 64 73 61 66 65 28 29 20 66 75 6e 63 74 69  eadsafe() functi
23c0: 6f 6e 20 73 68 6f 77 73 20 6f 6e 6c 79 20 74 68  on shows only th
23d0: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 73  e compile-time s
23e0: 65 74 74 69 6e 67 20 6f 66 0a 2a 2a 20 74 68 72  etting of.** thr
23f0: 65 61 64 20 73 61 66 65 74 79 2c 20 6e 6f 74 20  ead safety, not 
2400: 61 6e 79 20 72 75 6e 2d 74 69 6d 65 20 63 68 61  any run-time cha
2410: 6e 67 65 73 20 74 6f 20 74 68 61 74 20 73 65 74  nges to that set
2420: 74 69 6e 67 20 6d 61 64 65 20 62 79 0a 2a 2a 20  ting made by.** 
2430: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
2440: 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73  . In other words
2450: 2c 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c  , the return val
2460: 75 65 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  ue from sqlite3_
2470: 74 68 72 65 61 64 73 61 66 65 28 29 0a 2a 2a 20  threadsafe().** 
2480: 69 73 20 75 6e 63 68 61 6e 67 65 64 20 62 79 20  is unchanged by 
2490: 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33  calls to sqlite3
24a0: 5f 63 6f 6e 66 69 67 28 29 2e 29 5e 0a 2a 2a 0a  _config().)^.**.
24b0: 2a 2a 20 53 65 65 20 74 68 65 20 5b 74 68 72 65  ** See the [thre
24c0: 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63 75  ading mode] docu
24d0: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64  mentation for ad
24e0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
24f0: 74 69 6f 6e 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  tion..*/.int sql
2500: 69 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28  ite3_threadsafe(
2510: 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  void);../*.** CA
2520: 50 49 33 52 45 46 3a 20 44 61 74 61 62 61 73 65  PI3REF: Database
2530: 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 48 61 6e 64   Connection Hand
2540: 6c 65 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  le.** KEYWORDS: 
2550: 7b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  {database connec
2560: 74 69 6f 6e 7d 20 7b 64 61 74 61 62 61 73 65 20  tion} {database 
2570: 63 6f 6e 6e 65 63 74 69 6f 6e 73 7d 0a 2a 2a 0a  connections}.**.
2580: 2a 2a 20 45 61 63 68 20 6f 70 65 6e 20 53 51 4c  ** Each open SQL
2590: 69 74 65 20 64 61 74 61 62 61 73 65 20 69 73 20  ite database is 
25a0: 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 61  represented by a
25b0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
25c0: 6e 73 74 61 6e 63 65 20 6f 66 0a 2a 2a 20 74 68  nstance of.** th
25d0: 65 20 6f 70 61 71 75 65 20 73 74 72 75 63 74 75  e opaque structu
25e0: 72 65 20 6e 61 6d 65 64 20 22 73 71 6c 69 74 65  re named "sqlite
25f0: 33 22 2e 20 20 49 74 20 69 73 20 75 73 65 66 75  3".  It is usefu
2600: 6c 20 74 6f 20 74 68 69 6e 6b 20 6f 66 20 61 6e  l to think of an
2610: 20 73 71 6c 69 74 65 33 0a 2a 2a 20 70 6f 69 6e   sqlite3.** poin
2620: 74 65 72 20 61 73 20 61 6e 20 6f 62 6a 65 63 74  ter as an object
2630: 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  .  The [sqlite3_
2640: 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65  open()], [sqlite
2650: 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 61 6e 64  3_open16()], and
2660: 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65  .** [sqlite3_ope
2670: 6e 5f 76 32 28 29 5d 20 69 6e 74 65 72 66 61 63  n_v2()] interfac
2680: 65 73 20 61 72 65 20 69 74 73 20 63 6f 6e 73 74  es are its const
2690: 72 75 63 74 6f 72 73 2c 20 61 6e 64 20 5b 73 71  ructors, and [sq
26a0: 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29 5d 0a 2a  lite3_close()].*
26b0: 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63  * and [sqlite3_c
26c0: 6c 6f 73 65 5f 76 32 28 29 5d 20 61 72 65 20 69  lose_v2()] are i
26d0: 74 73 20 64 65 73 74 72 75 63 74 6f 72 73 2e 20  ts destructors. 
26e0: 20 54 68 65 72 65 20 61 72 65 20 6d 61 6e 79 20   There are many 
26f0: 6f 74 68 65 72 0a 2a 2a 20 69 6e 74 65 72 66 61  other.** interfa
2700: 63 65 73 20 28 73 75 63 68 20 61 73 0a 2a 2a 20  ces (such as.** 
2710: 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
2720: 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  _v2()], [sqlite3
2730: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
2740: 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c  ()], and.** [sql
2750: 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75  ite3_busy_timeou
2760: 74 28 29 5d 20 74 6f 20 6e 61 6d 65 20 62 75 74  t()] to name but
2770: 20 74 68 72 65 65 29 20 74 68 61 74 20 61 72 65   three) that are
2780: 20 6d 65 74 68 6f 64 73 20 6f 6e 20 61 6e 0a 2a   methods on an.*
2790: 2a 20 73 71 6c 69 74 65 33 20 6f 62 6a 65 63 74  * sqlite3 object
27a0: 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
27b0: 75 63 74 20 73 71 6c 69 74 65 33 20 73 71 6c 69  uct sqlite3 sqli
27c0: 74 65 33 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  te3;../*.** CAPI
27d0: 33 52 45 46 3a 20 36 34 2d 42 69 74 20 49 6e 74  3REF: 64-Bit Int
27e0: 65 67 65 72 20 54 79 70 65 73 0a 2a 2a 20 4b 45  eger Types.** KE
27f0: 59 57 4f 52 44 53 3a 20 73 71 6c 69 74 65 5f 69  YWORDS: sqlite_i
2800: 6e 74 36 34 20 73 71 6c 69 74 65 5f 75 69 6e 74  nt64 sqlite_uint
2810: 36 34 0a 2a 2a 0a 2a 2a 20 42 65 63 61 75 73 65  64.**.** Because
2820: 20 74 68 65 72 65 20 69 73 20 6e 6f 20 63 72 6f   there is no cro
2830: 73 73 2d 70 6c 61 74 66 6f 72 6d 20 77 61 79 20  ss-platform way 
2840: 74 6f 20 73 70 65 63 69 66 79 20 36 34 2d 62 69  to specify 64-bi
2850: 74 20 69 6e 74 65 67 65 72 20 74 79 70 65 73 0a  t integer types.
2860: 2a 2a 20 53 51 4c 69 74 65 20 69 6e 63 6c 75 64  ** SQLite includ
2870: 65 73 20 74 79 70 65 64 65 66 73 20 66 6f 72 20  es typedefs for 
2880: 36 34 2d 62 69 74 20 73 69 67 6e 65 64 20 61 6e  64-bit signed an
2890: 64 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67  d unsigned integ
28a0: 65 72 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  ers..**.** The s
28b0: 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 61 6e 64  qlite3_int64 and
28c0: 20 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 20   sqlite3_uint64 
28d0: 61 72 65 20 74 68 65 20 70 72 65 66 65 72 72 65  are the preferre
28e0: 64 20 74 79 70 65 20 64 65 66 69 6e 69 74 69 6f  d type definitio
28f0: 6e 73 2e 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  ns..** The sqlit
2900: 65 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c 69  e_int64 and sqli
2910: 74 65 5f 75 69 6e 74 36 34 20 74 79 70 65 73 20  te_uint64 types 
2920: 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 66 6f  are supported fo
2930: 72 20 62 61 63 6b 77 61 72 64 73 0a 2a 2a 20 63  r backwards.** c
2940: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 6f 6e 6c  ompatibility onl
2950: 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  y..**.** ^The sq
2960: 6c 69 74 65 33 5f 69 6e 74 36 34 20 61 6e 64 20  lite3_int64 and 
2970: 73 71 6c 69 74 65 5f 69 6e 74 36 34 20 74 79 70  sqlite_int64 typ
2980: 65 73 20 63 61 6e 20 73 74 6f 72 65 20 69 6e 74  es can store int
2990: 65 67 65 72 20 76 61 6c 75 65 73 0a 2a 2a 20 62  eger values.** b
29a0: 65 74 77 65 65 6e 20 2d 39 32 32 33 33 37 32 30  etween -92233720
29b0: 33 36 38 35 34 37 37 35 38 30 38 20 61 6e 64 20  36854775808 and 
29c0: 2b 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  +922337203685477
29d0: 35 38 30 37 20 69 6e 63 6c 75 73 69 76 65 2e 20  5807 inclusive. 
29e0: 20 5e 54 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33   ^The.** sqlite3
29f0: 5f 75 69 6e 74 36 34 20 61 6e 64 20 73 71 6c 69  _uint64 and sqli
2a00: 74 65 5f 75 69 6e 74 36 34 20 74 79 70 65 73 20  te_uint64 types 
2a10: 63 61 6e 20 73 74 6f 72 65 20 69 6e 74 65 67 65  can store intege
2a20: 72 20 76 61 6c 75 65 73 20 0a 2a 2a 20 62 65 74  r values .** bet
2a30: 77 65 65 6e 20 30 20 61 6e 64 20 2b 31 38 34 34  ween 0 and +1844
2a40: 36 37 34 34 30 37 33 37 30 39 35 35 31 36 31 35  6744073709551615
2a50: 20 69 6e 63 6c 75 73 69 76 65 2e 0a 2a 2f 0a 23   inclusive..*/.#
2a60: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 49 4e 54  ifdef SQLITE_INT
2a70: 36 34 5f 54 59 50 45 0a 20 20 74 79 70 65 64 65  64_TYPE.  typede
2a80: 66 20 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54  f SQLITE_INT64_T
2a90: 59 50 45 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  YPE sqlite_int64
2aa0: 3b 0a 23 20 69 66 64 65 66 20 53 51 4c 49 54 45  ;.# ifdef SQLITE
2ab0: 5f 55 49 4e 54 36 34 5f 54 59 50 45 0a 20 20 20  _UINT64_TYPE.   
2ac0: 20 74 79 70 65 64 65 66 20 53 51 4c 49 54 45 5f   typedef SQLITE_
2ad0: 55 49 4e 54 36 34 5f 54 59 50 45 20 73 71 6c 69  UINT64_TYPE sqli
2ae0: 74 65 5f 75 69 6e 74 36 34 3b 0a 23 20 65 6c 73  te_uint64;.# els
2af0: 65 20 20 0a 20 20 20 20 74 79 70 65 64 65 66 20  e  .    typedef 
2b00: 75 6e 73 69 67 6e 65 64 20 53 51 4c 49 54 45 5f  unsigned SQLITE_
2b10: 49 4e 54 36 34 5f 54 59 50 45 20 73 71 6c 69 74  INT64_TYPE sqlit
2b20: 65 5f 75 69 6e 74 36 34 3b 0a 23 20 65 6e 64 69  e_uint64;.# endi
2b30: 66 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28  f.#elif defined(
2b40: 5f 4d 53 43 5f 56 45 52 29 20 7c 7c 20 64 65 66  _MSC_VER) || def
2b50: 69 6e 65 64 28 5f 5f 42 4f 52 4c 41 4e 44 43 5f  ined(__BORLANDC_
2b60: 5f 29 0a 20 20 74 79 70 65 64 65 66 20 5f 5f 69  _).  typedef __i
2b70: 6e 74 36 34 20 73 71 6c 69 74 65 5f 69 6e 74 36  nt64 sqlite_int6
2b80: 34 3b 0a 20 20 74 79 70 65 64 65 66 20 75 6e 73  4;.  typedef uns
2b90: 69 67 6e 65 64 20 5f 5f 69 6e 74 36 34 20 73 71  igned __int64 sq
2ba0: 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23 65 6c  lite_uint64;.#el
2bb0: 73 65 0a 20 20 74 79 70 65 64 65 66 20 6c 6f 6e  se.  typedef lon
2bc0: 67 20 6c 6f 6e 67 20 69 6e 74 20 73 71 6c 69 74  g long int sqlit
2bd0: 65 5f 69 6e 74 36 34 3b 0a 20 20 74 79 70 65 64  e_int64;.  typed
2be0: 65 66 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67  ef unsigned long
2bf0: 20 6c 6f 6e 67 20 69 6e 74 20 73 71 6c 69 74 65   long int sqlite
2c00: 5f 75 69 6e 74 36 34 3b 0a 23 65 6e 64 69 66 0a  _uint64;.#endif.
2c10: 74 79 70 65 64 65 66 20 73 71 6c 69 74 65 5f 69  typedef sqlite_i
2c20: 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 69 6e 74  nt64 sqlite3_int
2c30: 36 34 3b 0a 74 79 70 65 64 65 66 20 73 71 6c 69  64;.typedef sqli
2c40: 74 65 5f 75 69 6e 74 36 34 20 73 71 6c 69 74 65  te_uint64 sqlite
2c50: 33 5f 75 69 6e 74 36 34 3b 0a 0a 2f 2a 0a 2a 2a  3_uint64;../*.**
2c60: 20 49 66 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f   If compiling fo
2c70: 72 20 61 20 70 72 6f 63 65 73 73 6f 72 20 74 68  r a processor th
2c80: 61 74 20 6c 61 63 6b 73 20 66 6c 6f 61 74 69 6e  at lacks floatin
2c90: 67 20 70 6f 69 6e 74 20 73 75 70 70 6f 72 74 2c  g point support,
2ca0: 0a 2a 2a 20 73 75 62 73 74 69 74 75 74 65 20 69  .** substitute i
2cb0: 6e 74 65 67 65 72 20 66 6f 72 20 66 6c 6f 61 74  nteger for float
2cc0: 69 6e 67 2d 70 6f 69 6e 74 2e 0a 2a 2f 0a 23 69  ing-point..*/.#i
2cd0: 66 64 65 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  fdef SQLITE_OMIT
2ce0: 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 0a  _FLOATING_POINT.
2cf0: 23 20 64 65 66 69 6e 65 20 64 6f 75 62 6c 65 20  # define double 
2d00: 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 0a 23 65  sqlite3_int64.#e
2d10: 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  ndif../*.** CAPI
2d20: 33 52 45 46 3a 20 43 6c 6f 73 69 6e 67 20 41 20  3REF: Closing A 
2d30: 44 61 74 61 62 61 73 65 20 43 6f 6e 6e 65 63 74  Database Connect
2d40: 69 6f 6e 0a 2a 2a 20 44 45 53 54 52 55 43 54 4f  ion.** DESTRUCTO
2d50: 52 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a  R: sqlite3.**.**
2d60: 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6c   ^The sqlite3_cl
2d70: 6f 73 65 28 29 20 61 6e 64 20 73 71 6c 69 74 65  ose() and sqlite
2d80: 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 72 6f 75  3_close_v2() rou
2d90: 74 69 6e 65 73 20 61 72 65 20 64 65 73 74 72 75  tines are destru
2da0: 63 74 6f 72 73 0a 2a 2a 20 66 6f 72 20 74 68 65  ctors.** for the
2db0: 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63   [sqlite3] objec
2dc0: 74 2e 0a 2a 2a 20 5e 43 61 6c 6c 73 20 74 6f 20  t..** ^Calls to 
2dd0: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29 20  sqlite3_close() 
2de0: 61 6e 64 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  and sqlite3_clos
2df0: 65 5f 76 32 28 29 20 72 65 74 75 72 6e 20 5b 53  e_v2() return [S
2e00: 51 4c 49 54 45 5f 4f 4b 5d 20 69 66 0a 2a 2a 20  QLITE_OK] if.** 
2e10: 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62  the [sqlite3] ob
2e20: 6a 65 63 74 20 69 73 20 73 75 63 63 65 73 73 66  ject is successf
2e30: 75 6c 6c 79 20 64 65 73 74 72 6f 79 65 64 20 61  ully destroyed a
2e40: 6e 64 20 61 6c 6c 20 61 73 73 6f 63 69 61 74 65  nd all associate
2e50: 64 0a 2a 2a 20 72 65 73 6f 75 72 63 65 73 20 61  d.** resources a
2e60: 72 65 20 64 65 61 6c 6c 6f 63 61 74 65 64 2e 0a  re deallocated..
2e70: 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 64 61  **.** ^If the da
2e80: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2e90: 6e 20 69 73 20 61 73 73 6f 63 69 61 74 65 64 20  n is associated 
2ea0: 77 69 74 68 20 75 6e 66 69 6e 61 6c 69 7a 65 64  with unfinalized
2eb0: 20 70 72 65 70 61 72 65 64 0a 2a 2a 20 73 74 61   prepared.** sta
2ec0: 74 65 6d 65 6e 74 73 20 6f 72 20 75 6e 66 69 6e  tements or unfin
2ed0: 69 73 68 65 64 20 73 71 6c 69 74 65 33 5f 62 61  ished sqlite3_ba
2ee0: 63 6b 75 70 20 6f 62 6a 65 63 74 73 20 74 68 65  ckup objects the
2ef0: 6e 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28  n sqlite3_close(
2f00: 29 0a 2a 2a 20 77 69 6c 6c 20 6c 65 61 76 65 20  ).** will leave 
2f10: 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
2f20: 6e 65 63 74 69 6f 6e 20 6f 70 65 6e 20 61 6e 64  nection open and
2f30: 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
2f40: 42 55 53 59 5d 2e 0a 2a 2a 20 5e 49 66 20 73 71  BUSY]..** ^If sq
2f50: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29  lite3_close_v2()
2f60: 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20   is called with 
2f70: 75 6e 66 69 6e 61 6c 69 7a 65 64 20 70 72 65 70  unfinalized prep
2f80: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 0a  ared statements.
2f90: 2a 2a 20 61 6e 64 2f 6f 72 20 75 6e 66 69 6e 69  ** and/or unfini
2fa0: 73 68 65 64 20 73 71 6c 69 74 65 33 5f 62 61 63  shed sqlite3_bac
2fb0: 6b 75 70 73 2c 20 74 68 65 6e 20 74 68 65 20 64  kups, then the d
2fc0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2fd0: 6f 6e 20 62 65 63 6f 6d 65 73 0a 2a 2a 20 61 6e  on becomes.** an
2fe0: 20 75 6e 75 73 61 62 6c 65 20 22 7a 6f 6d 62 69   unusable "zombi
2ff0: 65 22 20 77 68 69 63 68 20 77 69 6c 6c 20 61 75  e" which will au
3000: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 65 20 64  tomatically be d
3010: 65 61 6c 6c 6f 63 61 74 65 64 20 77 68 65 6e 20  eallocated when 
3020: 74 68 65 0a 2a 2a 20 6c 61 73 74 20 70 72 65 70  the.** last prep
3030: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69  ared statement i
3040: 73 20 66 69 6e 61 6c 69 7a 65 64 20 6f 72 20 74  s finalized or t
3050: 68 65 20 6c 61 73 74 20 73 71 6c 69 74 65 33 5f  he last sqlite3_
3060: 62 61 63 6b 75 70 20 69 73 0a 2a 2a 20 66 69 6e  backup is.** fin
3070: 69 73 68 65 64 2e 20 20 54 68 65 20 73 71 6c 69  ished.  The sqli
3080: 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 69  te3_close_v2() i
3090: 6e 74 65 72 66 61 63 65 20 69 73 20 69 6e 74 65  nterface is inte
30a0: 6e 64 65 64 20 66 6f 72 20 75 73 65 20 77 69 74  nded for use wit
30b0: 68 0a 2a 2a 20 68 6f 73 74 20 6c 61 6e 67 75 61  h.** host langua
30c0: 67 65 73 20 74 68 61 74 20 61 72 65 20 67 61 72  ges that are gar
30d0: 62 61 67 65 20 63 6f 6c 6c 65 63 74 65 64 2c 20  bage collected, 
30e0: 61 6e 64 20 77 68 65 72 65 20 74 68 65 20 6f 72  and where the or
30f0: 64 65 72 20 69 6e 20 77 68 69 63 68 0a 2a 2a 20  der in which.** 
3100: 64 65 73 74 72 75 63 74 6f 72 73 20 61 72 65 20  destructors are 
3110: 63 61 6c 6c 65 64 20 69 73 20 61 72 62 69 74 72  called is arbitr
3120: 61 72 79 2e 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69  ary..**.** Appli
3130: 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 5b  cations should [
3140: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
3150: 20 7c 20 66 69 6e 61 6c 69 7a 65 5d 20 61 6c 6c   | finalize] all
3160: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
3170: 6d 65 6e 74 73 5d 2c 0a 2a 2a 20 5b 73 71 6c 69  ments],.** [sqli
3180: 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 20 7c  te3_blob_close |
3190: 20 63 6c 6f 73 65 5d 20 61 6c 6c 20 5b 42 4c 4f   close] all [BLO
31a0: 42 20 68 61 6e 64 6c 65 73 5d 2c 20 61 6e 64 20  B handles], and 
31b0: 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 61 63  .** [sqlite3_bac
31c0: 6b 75 70 5f 66 69 6e 69 73 68 20 7c 20 66 69 6e  kup_finish | fin
31d0: 69 73 68 5d 20 61 6c 6c 20 5b 73 71 6c 69 74 65  ish] all [sqlite
31e0: 33 5f 62 61 63 6b 75 70 5d 20 6f 62 6a 65 63 74  3_backup] object
31f0: 73 20 61 73 73 6f 63 69 61 74 65 64 0a 2a 2a 20  s associated.** 
3200: 77 69 74 68 20 74 68 65 20 5b 73 71 6c 69 74 65  with the [sqlite
3210: 33 5d 20 6f 62 6a 65 63 74 20 70 72 69 6f 72 20  3] object prior 
3220: 74 6f 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f  to attempting to
3230: 20 63 6c 6f 73 65 20 74 68 65 20 6f 62 6a 65 63   close the objec
3240: 74 2e 20 20 5e 49 66 0a 2a 2a 20 73 71 6c 69 74  t.  ^If.** sqlit
3250: 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 69 73  e3_close_v2() is
3260: 20 63 61 6c 6c 65 64 20 6f 6e 20 61 20 5b 64 61   called on a [da
3270: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
3280: 6e 5d 20 74 68 61 74 20 73 74 69 6c 6c 20 68 61  n] that still ha
3290: 73 0a 2a 2a 20 6f 75 74 73 74 61 6e 64 69 6e 67  s.** outstanding
32a0: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
32b0: 6d 65 6e 74 73 5d 2c 20 5b 42 4c 4f 42 20 68 61  ments], [BLOB ha
32c0: 6e 64 6c 65 73 5d 2c 20 61 6e 64 2f 6f 72 0a 2a  ndles], and/or.*
32d0: 2a 20 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  * [sqlite3_backu
32e0: 70 5d 20 6f 62 6a 65 63 74 73 20 74 68 65 6e 20  p] objects then 
32f0: 69 74 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49  it returns [SQLI
3300: 54 45 5f 4f 4b 5d 20 61 6e 64 20 74 68 65 20 64  TE_OK] and the d
3310: 65 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f  eallocation.** o
3320: 66 20 72 65 73 6f 75 72 63 65 73 20 69 73 20 64  f resources is d
3330: 65 66 65 72 72 65 64 20 75 6e 74 69 6c 20 61 6c  eferred until al
3340: 6c 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  l [prepared stat
3350: 65 6d 65 6e 74 73 5d 2c 20 5b 42 4c 4f 42 20 68  ements], [BLOB h
3360: 61 6e 64 6c 65 73 5d 2c 0a 2a 2a 20 61 6e 64 20  andles],.** and 
3370: 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5d  [sqlite3_backup]
3380: 20 6f 62 6a 65 63 74 73 20 61 72 65 20 61 6c 73   objects are als
3390: 6f 20 64 65 73 74 72 6f 79 65 64 2e 0a 2a 2a 0a  o destroyed..**.
33a0: 2a 2a 20 5e 49 66 20 61 6e 20 5b 73 71 6c 69 74  ** ^If an [sqlit
33b0: 65 33 5d 20 6f 62 6a 65 63 74 20 69 73 20 64 65  e3] object is de
33c0: 73 74 72 6f 79 65 64 20 77 68 69 6c 65 20 61 20  stroyed while a 
33d0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 6f  transaction is o
33e0: 70 65 6e 2c 0a 2a 2a 20 74 68 65 20 74 72 61 6e  pen,.** the tran
33f0: 73 61 63 74 69 6f 6e 20 69 73 20 61 75 74 6f 6d  saction is autom
3400: 61 74 69 63 61 6c 6c 79 20 72 6f 6c 6c 65 64 20  atically rolled 
3410: 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  back..**.** The 
3420: 43 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 5b  C parameter to [
3430: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 43 29  sqlite3_close(C)
3440: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63  ] and [sqlite3_c
3450: 6c 6f 73 65 5f 76 32 28 43 29 5d 0a 2a 2a 20 6d  lose_v2(C)].** m
3460: 75 73 74 20 62 65 20 65 69 74 68 65 72 20 61 20  ust be either a 
3470: 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74 65 72 20  NULL.** pointer 
3480: 6f 72 20 61 6e 20 5b 73 71 6c 69 74 65 33 5d 20  or an [sqlite3] 
3490: 6f 62 6a 65 63 74 20 70 6f 69 6e 74 65 72 20 6f  object pointer o
34a0: 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20  btained.** from 
34b0: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
34c0: 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  , [sqlite3_open1
34d0: 36 28 29 5d 2c 20 6f 72 0a 2a 2a 20 5b 73 71 6c  6()], or.** [sql
34e0: 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c  ite3_open_v2()],
34f0: 20 61 6e 64 20 6e 6f 74 20 70 72 65 76 69 6f 75   and not previou
3500: 73 6c 79 20 63 6c 6f 73 65 64 2e 0a 2a 2a 20 5e  sly closed..** ^
3510: 43 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f  Calling sqlite3_
3520: 63 6c 6f 73 65 28 29 20 6f 72 20 73 71 6c 69 74  close() or sqlit
3530: 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 77 69  e3_close_v2() wi
3540: 74 68 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  th a NULL pointe
3550: 72 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 69 73  r.** argument is
3560: 20 61 20 68 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f   a harmless no-o
3570: 70 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  p..*/.int sqlite
3580: 33 5f 63 6c 6f 73 65 28 73 71 6c 69 74 65 33 2a  3_close(sqlite3*
3590: 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  );.int sqlite3_c
35a0: 6c 6f 73 65 5f 76 32 28 73 71 6c 69 74 65 33 2a  lose_v2(sqlite3*
35b0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 74 79  );../*.** The ty
35c0: 70 65 20 66 6f 72 20 61 20 63 61 6c 6c 62 61 63  pe for a callbac
35d0: 6b 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20 54  k function..** T
35e0: 68 69 73 20 69 73 20 6c 65 67 61 63 79 20 61 6e  his is legacy an
35f0: 64 20 64 65 70 72 65 63 61 74 65 64 2e 20 20 49  d deprecated.  I
3600: 74 20 69 73 20 69 6e 63 6c 75 64 65 64 20 66 6f  t is included fo
3610: 72 20 68 69 73 74 6f 72 69 63 61 6c 0a 2a 2a 20  r historical.** 
3620: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 61 6e  compatibility an
3630: 64 20 69 73 20 6e 6f 74 20 64 6f 63 75 6d 65 6e  d is not documen
3640: 74 65 64 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  ted..*/.typedef 
3650: 69 6e 74 20 28 2a 73 71 6c 69 74 65 33 5f 63 61  int (*sqlite3_ca
3660: 6c 6c 62 61 63 6b 29 28 76 6f 69 64 2a 2c 69 6e  llback)(void*,in
3670: 74 2c 63 68 61 72 2a 2a 2c 20 63 68 61 72 2a 2a  t,char**, char**
3680: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
3690: 45 46 3a 20 4f 6e 65 2d 53 74 65 70 20 51 75 65  EF: One-Step Que
36a0: 72 79 20 45 78 65 63 75 74 69 6f 6e 20 49 6e 74  ry Execution Int
36b0: 65 72 66 61 63 65 0a 2a 2a 20 4d 45 54 48 4f 44  erface.** METHOD
36c0: 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
36d0: 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63  The sqlite3_exec
36e0: 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  () interface is 
36f0: 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 77 72  a convenience wr
3700: 61 70 70 65 72 20 61 72 6f 75 6e 64 0a 2a 2a 20  apper around.** 
3710: 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
3720: 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  _v2()], [sqlite3
3730: 5f 73 74 65 70 28 29 5d 2c 20 61 6e 64 20 5b 73  _step()], and [s
3740: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
3750: 29 5d 2c 0a 2a 2a 20 74 68 61 74 20 61 6c 6c 6f  )],.** that allo
3760: 77 73 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f  ws an applicatio
3770: 6e 20 74 6f 20 72 75 6e 20 6d 75 6c 74 69 70 6c  n to run multipl
3780: 65 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 66 20  e statements of 
3790: 53 51 4c 0a 2a 2a 20 77 69 74 68 6f 75 74 20 68  SQL.** without h
37a0: 61 76 69 6e 67 20 74 6f 20 75 73 65 20 61 20 6c  aving to use a l
37b0: 6f 74 20 6f 66 20 43 20 63 6f 64 65 2e 20 0a 2a  ot of C code. .*
37c0: 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
37d0: 33 5f 65 78 65 63 28 29 20 69 6e 74 65 72 66 61  3_exec() interfa
37e0: 63 65 20 72 75 6e 73 20 7a 65 72 6f 20 6f 72 20  ce runs zero or 
37f0: 6d 6f 72 65 20 55 54 46 2d 38 20 65 6e 63 6f 64  more UTF-8 encod
3800: 65 64 2c 0a 2a 2a 20 73 65 6d 69 63 6f 6c 6f 6e  ed,.** semicolon
3810: 2d 73 65 70 61 72 61 74 65 20 53 51 4c 20 73 74  -separate SQL st
3820: 61 74 65 6d 65 6e 74 73 20 70 61 73 73 65 64 20  atements passed 
3830: 69 6e 74 6f 20 69 74 73 20 32 6e 64 20 61 72 67  into its 2nd arg
3840: 75 6d 65 6e 74 2c 0a 2a 2a 20 69 6e 20 74 68 65  ument,.** in the
3850: 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65 20   context of the 
3860: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
3870: 74 69 6f 6e 5d 20 70 61 73 73 65 64 20 69 6e 20  tion] passed in 
3880: 61 73 20 69 74 73 20 31 73 74 0a 2a 2a 20 61 72  as its 1st.** ar
3890: 67 75 6d 65 6e 74 2e 20 20 5e 49 66 20 74 68 65  gument.  ^If the
38a0: 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   callback functi
38b0: 6f 6e 20 6f 66 20 74 68 65 20 33 72 64 20 61 72  on of the 3rd ar
38c0: 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c  gument to.** sql
38d0: 69 74 65 33 5f 65 78 65 63 28 29 20 69 73 20 6e  ite3_exec() is n
38e0: 6f 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 69 74  ot NULL, then it
38f0: 20 69 73 20 69 6e 76 6f 6b 65 64 20 66 6f 72 20   is invoked for 
3900: 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f 77 0a  each result row.
3910: 2a 2a 20 63 6f 6d 69 6e 67 20 6f 75 74 20 6f 66  ** coming out of
3920: 20 74 68 65 20 65 76 61 6c 75 61 74 65 64 20 53   the evaluated S
3930: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20 20  QL statements.  
3940: 5e 54 68 65 20 34 74 68 20 61 72 67 75 6d 65 6e  ^The 4th argumen
3950: 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  t to.** sqlite3_
3960: 65 78 65 63 28 29 20 69 73 20 72 65 6c 61 79 65  exec() is relaye
3970: 64 20 74 68 72 6f 75 67 68 20 74 6f 20 74 68 65  d through to the
3980: 20 31 73 74 20 61 72 67 75 6d 65 6e 74 20 6f 66   1st argument of
3990: 20 65 61 63 68 0a 2a 2a 20 63 61 6c 6c 62 61 63   each.** callbac
39a0: 6b 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20 20 5e  k invocation.  ^
39b0: 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  If the callback 
39c0: 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c 69 74  pointer to sqlit
39d0: 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 69 73 20  e3_exec().** is 
39e0: 4e 55 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20 63 61  NULL, then no ca
39f0: 6c 6c 62 61 63 6b 20 69 73 20 65 76 65 72 20 69  llback is ever i
3a00: 6e 76 6f 6b 65 64 20 61 6e 64 20 72 65 73 75 6c  nvoked and resul
3a10: 74 20 72 6f 77 73 20 61 72 65 0a 2a 2a 20 69 67  t rows are.** ig
3a20: 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  nored..**.** ^If
3a30: 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73   an error occurs
3a40: 20 77 68 69 6c 65 20 65 76 61 6c 75 61 74 69 6e   while evaluatin
3a50: 67 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  g the SQL statem
3a60: 65 6e 74 73 20 70 61 73 73 65 64 20 69 6e 74 6f  ents passed into
3a70: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78 65 63  .** sqlite3_exec
3a80: 28 29 2c 20 74 68 65 6e 20 65 78 65 63 75 74 69  (), then executi
3a90: 6f 6e 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  on of the curren
3aa0: 74 20 73 74 61 74 65 6d 65 6e 74 20 73 74 6f 70  t statement stop
3ab0: 73 20 61 6e 64 0a 2a 2a 20 73 75 62 73 65 71 75  s and.** subsequ
3ac0: 65 6e 74 20 73 74 61 74 65 6d 65 6e 74 73 20 61  ent statements a
3ad0: 72 65 20 73 6b 69 70 70 65 64 2e 20 20 5e 49 66  re skipped.  ^If
3ae0: 20 74 68 65 20 35 74 68 20 70 61 72 61 6d 65 74   the 5th paramet
3af0: 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78  er to sqlite3_ex
3b00: 65 63 28 29 0a 2a 2a 20 69 73 20 6e 6f 74 20 4e  ec().** is not N
3b10: 55 4c 4c 20 74 68 65 6e 20 61 6e 79 20 65 72 72  ULL then any err
3b20: 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20 77 72  or message is wr
3b30: 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72  itten into memor
3b40: 79 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72  y obtained.** fr
3b50: 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  om [sqlite3_mall
3b60: 6f 63 28 29 5d 20 61 6e 64 20 70 61 73 73 65 64  oc()] and passed
3b70: 20 62 61 63 6b 20 74 68 72 6f 75 67 68 20 74 68   back through th
3b80: 65 20 35 74 68 20 70 61 72 61 6d 65 74 65 72 2e  e 5th parameter.
3b90: 0a 2a 2a 20 54 6f 20 61 76 6f 69 64 20 6d 65 6d  .** To avoid mem
3ba0: 6f 72 79 20 6c 65 61 6b 73 2c 20 74 68 65 20 61  ory leaks, the a
3bb0: 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c  pplication shoul
3bc0: 64 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65  d invoke [sqlite
3bd0: 33 5f 66 72 65 65 28 29 5d 0a 2a 2a 20 6f 6e 20  3_free()].** on 
3be0: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 74  error message st
3bf0: 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64 20 74  rings returned t
3c00: 68 72 6f 75 67 68 20 74 68 65 20 35 74 68 20 70  hrough the 5th p
3c10: 61 72 61 6d 65 74 65 72 20 6f 66 0a 2a 2a 20 73  arameter of.** s
3c20: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 61 66  qlite3_exec() af
3c30: 74 65 72 20 74 68 65 20 65 72 72 6f 72 20 6d 65  ter the error me
3c40: 73 73 61 67 65 20 73 74 72 69 6e 67 20 69 73 20  ssage string is 
3c50: 6e 6f 20 6c 6f 6e 67 65 72 20 6e 65 65 64 65 64  no longer needed
3c60: 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 35 74 68  ..** ^If the 5th
3c70: 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71   parameter to sq
3c80: 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73 20  lite3_exec() is 
3c90: 6e 6f 74 20 4e 55 4c 4c 20 61 6e 64 20 6e 6f 20  not NULL and no 
3ca0: 65 72 72 6f 72 73 0a 2a 2a 20 6f 63 63 75 72 2c  errors.** occur,
3cb0: 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 65 78   then sqlite3_ex
3cc0: 65 63 28 29 20 73 65 74 73 20 74 68 65 20 70 6f  ec() sets the po
3cd0: 69 6e 74 65 72 20 69 6e 20 69 74 73 20 35 74 68  inter in its 5th
3ce0: 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a   parameter to.**
3cf0: 20 4e 55 4c 4c 20 62 65 66 6f 72 65 20 72 65 74   NULL before ret
3d00: 75 72 6e 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 5e 49  urning..**.** ^I
3d10: 66 20 61 6e 20 73 71 6c 69 74 65 33 5f 65 78 65  f an sqlite3_exe
3d20: 63 28 29 20 63 61 6c 6c 62 61 63 6b 20 72 65 74  c() callback ret
3d30: 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74  urns non-zero, t
3d40: 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  he sqlite3_exec(
3d50: 29 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 72 65 74  ).** routine ret
3d60: 75 72 6e 73 20 53 51 4c 49 54 45 5f 41 42 4f 52  urns SQLITE_ABOR
3d70: 54 20 77 69 74 68 6f 75 74 20 69 6e 76 6f 6b 69  T without invoki
3d80: 6e 67 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  ng the callback 
3d90: 61 67 61 69 6e 20 61 6e 64 0a 2a 2a 20 77 69 74  again and.** wit
3da0: 68 6f 75 74 20 72 75 6e 6e 69 6e 67 20 61 6e 79  hout running any
3db0: 20 73 75 62 73 65 71 75 65 6e 74 20 53 51 4c 20   subsequent SQL 
3dc0: 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a  statements..**.*
3dd0: 2a 20 5e 54 68 65 20 32 6e 64 20 61 72 67 75 6d  * ^The 2nd argum
3de0: 65 6e 74 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ent to the sqlit
3df0: 65 33 5f 65 78 65 63 28 29 20 63 61 6c 6c 62 61  e3_exec() callba
3e00: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 74  ck function is t
3e10: 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20  he.** number of 
3e20: 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72  columns in the r
3e30: 65 73 75 6c 74 2e 20 20 5e 54 68 65 20 33 72 64  esult.  ^The 3rd
3e40: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65   argument to the
3e50: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 0a   sqlite3_exec().
3e60: 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61  ** callback is a
3e70: 6e 20 61 72 72 61 79 20 6f 66 20 70 6f 69 6e 74  n array of point
3e80: 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73 20 6f  ers to strings o
3e90: 62 74 61 69 6e 65 64 20 61 73 20 69 66 20 66 72  btained as if fr
3ea0: 6f 6d 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63  om.** [sqlite3_c
3eb0: 6f 6c 75 6d 6e 5f 74 65 78 74 28 29 5d 2c 20 6f  olumn_text()], o
3ec0: 6e 65 20 66 6f 72 20 65 61 63 68 20 63 6f 6c 75  ne for each colu
3ed0: 6d 6e 2e 20 20 5e 49 66 20 61 6e 20 65 6c 65 6d  mn.  ^If an elem
3ee0: 65 6e 74 20 6f 66 20 61 0a 2a 2a 20 72 65 73 75  ent of a.** resu
3ef0: 6c 74 20 72 6f 77 20 69 73 20 4e 55 4c 4c 20 74  lt row is NULL t
3f00: 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f  hen the correspo
3f10: 6e 64 69 6e 67 20 73 74 72 69 6e 67 20 70 6f 69  nding string poi
3f20: 6e 74 65 72 20 66 6f 72 20 74 68 65 0a 2a 2a 20  nter for the.** 
3f30: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 63  sqlite3_exec() c
3f40: 61 6c 6c 62 61 63 6b 20 69 73 20 61 20 4e 55 4c  allback is a NUL
3f50: 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e 54 68 65  L pointer.  ^The
3f60: 20 34 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f   4th argument to
3f70: 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f   the.** sqlite3_
3f80: 65 78 65 63 28 29 20 63 61 6c 6c 62 61 63 6b 20  exec() callback 
3f90: 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 70  is an array of p
3fa0: 6f 69 6e 74 65 72 73 20 74 6f 20 73 74 72 69 6e  ointers to strin
3fb0: 67 73 20 77 68 65 72 65 20 65 61 63 68 0a 2a 2a  gs where each.**
3fc0: 20 65 6e 74 72 79 20 72 65 70 72 65 73 65 6e 74   entry represent
3fd0: 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 63 6f  s the name of co
3fe0: 72 72 65 73 70 6f 6e 64 69 6e 67 20 72 65 73 75  rresponding resu
3ff0: 6c 74 20 63 6f 6c 75 6d 6e 20 61 73 20 6f 62 74  lt column as obt
4000: 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b 73  ained.** from [s
4010: 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
4020: 6d 65 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  me()]..**.** ^If
4030: 20 74 68 65 20 32 6e 64 20 70 61 72 61 6d 65 74   the 2nd paramet
4040: 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78  er to sqlite3_ex
4050: 65 63 28 29 20 69 73 20 61 20 4e 55 4c 4c 20 70  ec() is a NULL p
4060: 6f 69 6e 74 65 72 2c 20 61 20 70 6f 69 6e 74 65  ointer, a pointe
4070: 72 0a 2a 2a 20 74 6f 20 61 6e 20 65 6d 70 74 79  r.** to an empty
4080: 20 73 74 72 69 6e 67 2c 20 6f 72 20 61 20 70 6f   string, or a po
4090: 69 6e 74 65 72 20 74 68 61 74 20 63 6f 6e 74 61  inter that conta
40a0: 69 6e 73 20 6f 6e 6c 79 20 77 68 69 74 65 73 70  ins only whitesp
40b0: 61 63 65 20 61 6e 64 2f 6f 72 20 0a 2a 2a 20 53  ace and/or .** S
40c0: 51 4c 20 63 6f 6d 6d 65 6e 74 73 2c 20 74 68 65  QL comments, the
40d0: 6e 20 6e 6f 20 53 51 4c 20 73 74 61 74 65 6d 65  n no SQL stateme
40e0: 6e 74 73 20 61 72 65 20 65 76 61 6c 75 61 74 65  nts are evaluate
40f0: 64 20 61 6e 64 20 74 68 65 20 64 61 74 61 62 61  d and the databa
4100: 73 65 0a 2a 2a 20 69 73 20 6e 6f 74 20 63 68 61  se.** is not cha
4110: 6e 67 65 64 2e 0a 2a 2a 0a 2a 2a 20 52 65 73 74  nged..**.** Rest
4120: 72 69 63 74 69 6f 6e 73 3a 0a 2a 2a 0a 2a 2a 20  rictions:.**.** 
4130: 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65  <ul>.** <li> The
4140: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73   application mus
4150: 74 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68  t ensure that th
4160: 65 20 31 73 74 20 70 61 72 61 6d 65 74 65 72 20  e 1st parameter 
4170: 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  to sqlite3_exec(
4180: 29 0a 2a 2a 20 20 20 20 20 20 69 73 20 61 20 76  ).**      is a v
4190: 61 6c 69 64 20 61 6e 64 20 6f 70 65 6e 20 5b 64  alid and open [d
41a0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
41b0: 6f 6e 5d 2e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65  on]..** <li> The
41c0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73   application mus
41d0: 74 20 6e 6f 74 20 63 6c 6f 73 65 20 74 68 65 20  t not close the 
41e0: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
41f0: 74 69 6f 6e 5d 20 73 70 65 63 69 66 69 65 64 20  tion] specified 
4200: 62 79 0a 2a 2a 20 20 20 20 20 20 74 68 65 20 31  by.**      the 1
4210: 73 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  st parameter to 
4220: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 77  sqlite3_exec() w
4230: 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 65 78 65  hile sqlite3_exe
4240: 63 28 29 20 69 73 20 72 75 6e 6e 69 6e 67 2e 0a  c() is running..
4250: 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 61 70 70 6c  ** <li> The appl
4260: 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74  ication must not
4270: 20 6d 6f 64 69 66 79 20 74 68 65 20 53 51 4c 20   modify the SQL 
4280: 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74 20 70  statement text p
4290: 61 73 73 65 64 20 69 6e 74 6f 0a 2a 2a 20 20 20  assed into.**   
42a0: 20 20 20 74 68 65 20 32 6e 64 20 70 61 72 61 6d     the 2nd param
42b0: 65 74 65 72 20 6f 66 20 73 71 6c 69 74 65 33 5f  eter of sqlite3_
42c0: 65 78 65 63 28 29 20 77 68 69 6c 65 20 73 71 6c  exec() while sql
42d0: 69 74 65 33 5f 65 78 65 63 28 29 20 69 73 20 72  ite3_exec() is r
42e0: 75 6e 6e 69 6e 67 2e 0a 2a 2a 20 3c 2f 75 6c 3e  unning..** </ul>
42f0: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
4300: 65 78 65 63 28 0a 20 20 73 71 6c 69 74 65 33 2a  exec(.  sqlite3*
4310: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
4320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4330: 20 20 20 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61     /* An open da
4340: 74 61 62 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73  tabase */.  cons
4350: 74 20 63 68 61 72 20 2a 73 71 6c 2c 20 20 20 20  t char *sql,    
4360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4370: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f         /* SQL to
4380: 20 62 65 20 65 76 61 6c 75 61 74 65 64 20 2a 2f   be evaluated */
4390: 0a 20 20 69 6e 74 20 28 2a 63 61 6c 6c 62 61 63  .  int (*callbac
43a0: 6b 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61  k)(void*,int,cha
43b0: 72 2a 2a 2c 63 68 61 72 2a 2a 29 2c 20 20 2f 2a  r**,char**),  /*
43c0: 20 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   Callback functi
43d0: 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 2c 20  on */.  void *, 
43e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4400: 20 20 20 2f 2a 20 31 73 74 20 61 72 67 75 6d 65     /* 1st argume
4410: 6e 74 20 74 6f 20 63 61 6c 6c 62 61 63 6b 20 2a  nt to callback *
4420: 2f 0a 20 20 63 68 61 72 20 2a 2a 65 72 72 6d 73  /.  char **errms
4430: 67 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  g               
4440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4450: 2a 20 45 72 72 6f 72 20 6d 73 67 20 77 72 69 74  * Error msg writ
4460: 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29 3b 0a 0a  ten here */.);..
4470: 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
4480: 52 65 73 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20  Result Codes.** 
4490: 4b 45 59 57 4f 52 44 53 3a 20 7b 72 65 73 75 6c  KEYWORDS: {resul
44a0: 74 20 63 6f 64 65 20 64 65 66 69 6e 69 74 69 6f  t code definitio
44b0: 6e 73 7d 0a 2a 2a 0a 2a 2a 20 4d 61 6e 79 20 53  ns}.**.** Many S
44c0: 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 73 20  QLite functions 
44d0: 72 65 74 75 72 6e 20 61 6e 20 69 6e 74 65 67 65  return an intege
44e0: 72 20 72 65 73 75 6c 74 20 63 6f 64 65 20 66 72  r result code fr
44f0: 6f 6d 20 74 68 65 20 73 65 74 20 73 68 6f 77 6e  om the set shown
4500: 0a 2a 2a 20 68 65 72 65 20 69 6e 20 6f 72 64 65  .** here in orde
4510: 72 20 74 6f 20 69 6e 64 69 63 61 74 65 20 73 75  r to indicate su
4520: 63 63 65 73 73 20 6f 72 20 66 61 69 6c 75 72 65  ccess or failure
4530: 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 65 72 72 6f  ..**.** New erro
4540: 72 20 63 6f 64 65 73 20 6d 61 79 20 62 65 20 61  r codes may be a
4550: 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 76  dded in future v
4560: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
4570: 65 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73  e..**.** See als
4580: 6f 3a 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73  o: [extended res
4590: 75 6c 74 20 63 6f 64 65 20 64 65 66 69 6e 69 74  ult code definit
45a0: 69 6f 6e 73 5d 0a 2a 2f 0a 23 64 65 66 69 6e 65  ions].*/.#define
45b0: 20 53 51 4c 49 54 45 5f 4f 4b 20 20 20 20 20 20   SQLITE_OK      
45c0: 20 20 20 20 20 30 20 20 20 2f 2a 20 53 75 63 63       0   /* Succ
45d0: 65 73 73 66 75 6c 20 72 65 73 75 6c 74 20 2a 2f  essful result */
45e0: 0a 2f 2a 20 62 65 67 69 6e 6e 69 6e 67 2d 6f 66  ./* beginning-of
45f0: 2d 65 72 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a  -error-codes */.
4600: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45  #define SQLITE_E
4610: 52 52 4f 52 20 20 20 20 20 20 20 20 31 20 20 20  RROR        1   
4620: 2f 2a 20 47 65 6e 65 72 69 63 20 65 72 72 6f 72  /* Generic error
4630: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
4640: 54 45 5f 49 4e 54 45 52 4e 41 4c 20 20 20 20 20  TE_INTERNAL     
4650: 32 20 20 20 2f 2a 20 49 6e 74 65 72 6e 61 6c 20  2   /* Internal 
4660: 6c 6f 67 69 63 20 65 72 72 6f 72 20 69 6e 20 53  logic error in S
4670: 51 4c 69 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65  QLite */.#define
4680: 20 53 51 4c 49 54 45 5f 50 45 52 4d 20 20 20 20   SQLITE_PERM    
4690: 20 20 20 20 20 33 20 20 20 2f 2a 20 41 63 63 65       3   /* Acce
46a0: 73 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 64 65  ss permission de
46b0: 6e 69 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  nied */.#define 
46c0: 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20 20 20  SQLITE_ABORT    
46d0: 20 20 20 20 34 20 20 20 2f 2a 20 43 61 6c 6c 62      4   /* Callb
46e0: 61 63 6b 20 72 6f 75 74 69 6e 65 20 72 65 71 75  ack routine requ
46f0: 65 73 74 65 64 20 61 6e 20 61 62 6f 72 74 20 2a  ested an abort *
4700: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
4710: 5f 42 55 53 59 20 20 20 20 20 20 20 20 20 35 20  _BUSY         5 
4720: 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62 61 73    /* The databas
4730: 65 20 66 69 6c 65 20 69 73 20 6c 6f 63 6b 65 64  e file is locked
4740: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
4750: 54 45 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20 20  TE_LOCKED       
4760: 36 20 20 20 2f 2a 20 41 20 74 61 62 6c 65 20 69  6   /* A table i
4770: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  n the database i
4780: 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66  s locked */.#def
4790: 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d  ine SQLITE_NOMEM
47a0: 20 20 20 20 20 20 20 20 37 20 20 20 2f 2a 20 41          7   /* A
47b0: 20 6d 61 6c 6c 6f 63 28 29 20 66 61 69 6c 65 64   malloc() failed
47c0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
47d0: 54 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20 20  TE_READONLY     
47e0: 38 20 20 20 2f 2a 20 41 74 74 65 6d 70 74 20 74  8   /* Attempt t
47f0: 6f 20 77 72 69 74 65 20 61 20 72 65 61 64 6f 6e  o write a readon
4800: 6c 79 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 23  ly database */.#
4810: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
4820: 54 45 52 52 55 50 54 20 20 20 20 39 20 20 20 2f  TERRUPT    9   /
4830: 2a 20 4f 70 65 72 61 74 69 6f 6e 20 74 65 72 6d  * Operation term
4840: 69 6e 61 74 65 64 20 62 79 20 73 71 6c 69 74 65  inated by sqlite
4850: 33 5f 69 6e 74 65 72 72 75 70 74 28 29 2a 2f 0a  3_interrupt()*/.
4860: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
4870: 4f 45 52 52 20 20 20 20 20 20 20 31 30 20 20 20  OERR       10   
4880: 2f 2a 20 53 6f 6d 65 20 6b 69 6e 64 20 6f 66 20  /* Some kind of 
4890: 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 20 6f  disk I/O error o
48a0: 63 63 75 72 72 65 64 20 2a 2f 0a 23 64 65 66 69  ccurred */.#defi
48b0: 6e 65 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50  ne SQLITE_CORRUP
48c0: 54 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54 68  T     11   /* Th
48d0: 65 20 64 61 74 61 62 61 73 65 20 64 69 73 6b 20  e database disk 
48e0: 69 6d 61 67 65 20 69 73 20 6d 61 6c 66 6f 72 6d  image is malform
48f0: 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ed */.#define SQ
4900: 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20  LITE_NOTFOUND   
4910: 20 31 32 20 20 20 2f 2a 20 55 6e 6b 6e 6f 77 6e   12   /* Unknown
4920: 20 6f 70 63 6f 64 65 20 69 6e 20 73 71 6c 69 74   opcode in sqlit
4930: 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28  e3_file_control(
4940: 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ) */.#define SQL
4950: 49 54 45 5f 46 55 4c 4c 20 20 20 20 20 20 20 20  ITE_FULL        
4960: 31 33 20 20 20 2f 2a 20 49 6e 73 65 72 74 69 6f  13   /* Insertio
4970: 6e 20 66 61 69 6c 65 64 20 62 65 63 61 75 73 65  n failed because
4980: 20 64 61 74 61 62 61 73 65 20 69 73 20 66 75 6c   database is ful
4990: 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  l */.#define SQL
49a0: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 20 20 20  ITE_CANTOPEN    
49b0: 31 34 20 20 20 2f 2a 20 55 6e 61 62 6c 65 20 74  14   /* Unable t
49c0: 6f 20 6f 70 65 6e 20 74 68 65 20 64 61 74 61 62  o open the datab
49d0: 61 73 65 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66  ase file */.#def
49e0: 69 6e 65 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f  ine SQLITE_PROTO
49f0: 43 4f 4c 20 20 20 20 31 35 20 20 20 2f 2a 20 44  COL    15   /* D
4a00: 61 74 61 62 61 73 65 20 6c 6f 63 6b 20 70 72 6f  atabase lock pro
4a10: 74 6f 63 6f 6c 20 65 72 72 6f 72 20 2a 2f 0a 23  tocol error */.#
4a20: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 4d  define SQLITE_EM
4a30: 50 54 59 20 20 20 20 20 20 20 31 36 20 20 20 2f  PTY       16   /
4a40: 2a 20 49 6e 74 65 72 6e 61 6c 20 75 73 65 20 6f  * Internal use o
4a50: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
4a60: 51 4c 49 54 45 5f 53 43 48 45 4d 41 20 20 20 20  QLITE_SCHEMA    
4a70: 20 20 31 37 20 20 20 2f 2a 20 54 68 65 20 64 61    17   /* The da
4a80: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 63 68  tabase schema ch
4a90: 61 6e 67 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  anged */.#define
4aa0: 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47 20 20   SQLITE_TOOBIG  
4ab0: 20 20 20 20 31 38 20 20 20 2f 2a 20 53 74 72 69      18   /* Stri
4ac0: 6e 67 20 6f 72 20 42 4c 4f 42 20 65 78 63 65 65  ng or BLOB excee
4ad0: 64 73 20 73 69 7a 65 20 6c 69 6d 69 74 20 2a 2f  ds size limit */
4ae0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
4af0: 43 4f 4e 53 54 52 41 49 4e 54 20 20 31 39 20 20  CONSTRAINT  19  
4b00: 20 2f 2a 20 41 62 6f 72 74 20 64 75 65 20 74 6f   /* Abort due to
4b10: 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
4b20: 61 74 69 6f 6e 20 2a 2f 0a 23 64 65 66 69 6e 65  ation */.#define
4b30: 20 53 51 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48   SQLITE_MISMATCH
4b40: 20 20 20 20 32 30 20 20 20 2f 2a 20 44 61 74 61      20   /* Data
4b50: 20 74 79 70 65 20 6d 69 73 6d 61 74 63 68 20 2a   type mismatch *
4b60: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
4b70: 5f 4d 49 53 55 53 45 20 20 20 20 20 20 32 31 20  _MISUSE      21 
4b80: 20 20 2f 2a 20 4c 69 62 72 61 72 79 20 75 73 65    /* Library use
4b90: 64 20 69 6e 63 6f 72 72 65 63 74 6c 79 20 2a 2f  d incorrectly */
4ba0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
4bb0: 4e 4f 4c 46 53 20 20 20 20 20 20 20 32 32 20 20  NOLFS       22  
4bc0: 20 2f 2a 20 55 73 65 73 20 4f 53 20 66 65 61 74   /* Uses OS feat
4bd0: 75 72 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  ures not support
4be0: 65 64 20 6f 6e 20 68 6f 73 74 20 2a 2f 0a 23 64  ed on host */.#d
4bf0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 55 54  efine SQLITE_AUT
4c00: 48 20 20 20 20 20 20 20 20 32 33 20 20 20 2f 2a  H        23   /*
4c10: 20 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 64   Authorization d
4c20: 65 6e 69 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  enied */.#define
4c30: 20 53 51 4c 49 54 45 5f 46 4f 52 4d 41 54 20 20   SQLITE_FORMAT  
4c40: 20 20 20 20 32 34 20 20 20 2f 2a 20 4e 6f 74 20      24   /* Not 
4c50: 75 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  used */.#define 
4c60: 53 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 20 20  SQLITE_RANGE    
4c70: 20 20 20 32 35 20 20 20 2f 2a 20 32 6e 64 20 70     25   /* 2nd p
4c80: 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
4c90: 74 65 33 5f 62 69 6e 64 20 6f 75 74 20 6f 66 20  te3_bind out of 
4ca0: 72 61 6e 67 65 20 2a 2f 0a 23 64 65 66 69 6e 65  range */.#define
4cb0: 20 53 51 4c 49 54 45 5f 4e 4f 54 41 44 42 20 20   SQLITE_NOTADB  
4cc0: 20 20 20 20 32 36 20 20 20 2f 2a 20 46 69 6c 65      26   /* File
4cd0: 20 6f 70 65 6e 65 64 20 74 68 61 74 20 69 73 20   opened that is 
4ce0: 6e 6f 74 20 61 20 64 61 74 61 62 61 73 65 20 66  not a database f
4cf0: 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ile */.#define S
4d00: 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20 20 20 20  QLITE_NOTICE    
4d10: 20 20 32 37 20 20 20 2f 2a 20 4e 6f 74 69 66 69    27   /* Notifi
4d20: 63 61 74 69 6f 6e 73 20 66 72 6f 6d 20 73 71 6c  cations from sql
4d30: 69 74 65 33 5f 6c 6f 67 28 29 20 2a 2f 0a 23 64  ite3_log() */.#d
4d40: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 57 41 52  efine SQLITE_WAR
4d50: 4e 49 4e 47 20 20 20 20 20 32 38 20 20 20 2f 2a  NING     28   /*
4d60: 20 57 61 72 6e 69 6e 67 73 20 66 72 6f 6d 20 73   Warnings from s
4d70: 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 2a 2f 0a  qlite3_log() */.
4d80: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
4d90: 4f 57 20 20 20 20 20 20 20 20 20 31 30 30 20 20  OW         100  
4da0: 2f 2a 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  /* sqlite3_step(
4db0: 29 20 68 61 73 20 61 6e 6f 74 68 65 72 20 72 6f  ) has another ro
4dc0: 77 20 72 65 61 64 79 20 2a 2f 0a 23 64 65 66 69  w ready */.#defi
4dd0: 6e 65 20 53 51 4c 49 54 45 5f 44 4f 4e 45 20 20  ne SQLITE_DONE  
4de0: 20 20 20 20 20 20 31 30 31 20 20 2f 2a 20 73 71        101  /* sq
4df0: 6c 69 74 65 33 5f 73 74 65 70 28 29 20 68 61 73  lite3_step() has
4e00: 20 66 69 6e 69 73 68 65 64 20 65 78 65 63 75 74   finished execut
4e10: 69 6e 67 20 2a 2f 0a 2f 2a 20 65 6e 64 2d 6f 66  ing */./* end-of
4e20: 2d 65 72 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a  -error-codes */.
4e30: 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
4e40: 20 45 78 74 65 6e 64 65 64 20 52 65 73 75 6c 74   Extended Result
4e50: 20 43 6f 64 65 73 0a 2a 2a 20 4b 45 59 57 4f 52   Codes.** KEYWOR
4e60: 44 53 3a 20 7b 65 78 74 65 6e 64 65 64 20 72 65  DS: {extended re
4e70: 73 75 6c 74 20 63 6f 64 65 20 64 65 66 69 6e 69  sult code defini
4e80: 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a 20 49 6e 20  tions}.**.** In 
4e90: 69 74 73 20 64 65 66 61 75 6c 74 20 63 6f 6e 66  its default conf
4ea0: 69 67 75 72 61 74 69 6f 6e 2c 20 53 51 4c 69 74  iguration, SQLit
4eb0: 65 20 41 50 49 20 72 6f 75 74 69 6e 65 73 20 72  e API routines r
4ec0: 65 74 75 72 6e 20 6f 6e 65 20 6f 66 20 33 30 20  eturn one of 30 
4ed0: 69 6e 74 65 67 65 72 0a 2a 2a 20 5b 72 65 73 75  integer.** [resu
4ee0: 6c 74 20 63 6f 64 65 73 5d 2e 20 20 48 6f 77 65  lt codes].  Howe
4ef0: 76 65 72 2c 20 65 78 70 65 72 69 65 6e 63 65 20  ver, experience 
4f00: 68 61 73 20 73 68 6f 77 6e 20 74 68 61 74 20 6d  has shown that m
4f10: 61 6e 79 20 6f 66 0a 2a 2a 20 74 68 65 73 65 20  any of.** these 
4f20: 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61 72 65  result codes are
4f30: 20 74 6f 6f 20 63 6f 61 72 73 65 2d 67 72 61 69   too coarse-grai
4f40: 6e 65 64 2e 20 20 54 68 65 79 20 64 6f 20 6e 6f  ned.  They do no
4f50: 74 20 70 72 6f 76 69 64 65 20 61 73 0a 2a 2a 20  t provide as.** 
4f60: 6d 75 63 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  much information
4f70: 20 61 62 6f 75 74 20 70 72 6f 62 6c 65 6d 73 20   about problems 
4f80: 61 73 20 70 72 6f 67 72 61 6d 6d 65 72 73 20 6d  as programmers m
4f90: 69 67 68 74 20 6c 69 6b 65 2e 20 20 49 6e 20 61  ight like.  In a
4fa0: 6e 20 65 66 66 6f 72 74 20 74 6f 0a 2a 2a 20 61  n effort to.** a
4fb0: 64 64 72 65 73 73 20 74 68 69 73 2c 20 6e 65 77  ddress this, new
4fc0: 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  er versions of S
4fd0: 51 4c 69 74 65 20 28 76 65 72 73 69 6f 6e 20 33  QLite (version 3
4fe0: 2e 33 2e 38 20 5b 64 61 74 65 6f 66 3a 33 2e 33  .3.8 [dateof:3.3
4ff0: 2e 38 5d 0a 2a 2a 20 61 6e 64 20 6c 61 74 65 72  .8].** and later
5000: 29 20 69 6e 63 6c 75 64 65 0a 2a 2a 20 73 75 70  ) include.** sup
5010: 70 6f 72 74 20 66 6f 72 20 61 64 64 69 74 69 6f  port for additio
5020: 6e 61 6c 20 72 65 73 75 6c 74 20 63 6f 64 65 73  nal result codes
5030: 20 74 68 61 74 20 70 72 6f 76 69 64 65 20 6d 6f   that provide mo
5040: 72 65 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f  re detailed info
5050: 72 6d 61 74 69 6f 6e 0a 2a 2a 20 61 62 6f 75 74  rmation.** about
5060: 20 65 72 72 6f 72 73 2e 20 54 68 65 73 65 20 5b   errors. These [
5070: 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20  extended result 
5080: 63 6f 64 65 73 5d 20 61 72 65 20 65 6e 61 62 6c  codes] are enabl
5090: 65 64 20 6f 72 20 64 69 73 61 62 6c 65 64 0a 2a  ed or disabled.*
50a0: 2a 20 6f 6e 20 61 20 70 65 72 20 64 61 74 61 62  * on a per datab
50b0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62  ase connection b
50c0: 61 73 69 73 20 75 73 69 6e 67 20 74 68 65 0a 2a  asis using the.*
50d0: 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  * [sqlite3_exten
50e0: 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
50f0: 28 29 5d 20 41 50 49 2e 20 20 4f 72 2c 20 74 68  ()] API.  Or, th
5100: 65 20 65 78 74 65 6e 64 65 64 20 63 6f 64 65 20  e extended code 
5110: 66 6f 72 0a 2a 2a 20 74 68 65 20 6d 6f 73 74 20  for.** the most 
5120: 72 65 63 65 6e 74 20 65 72 72 6f 72 20 63 61 6e  recent error can
5130: 20 62 65 20 6f 62 74 61 69 6e 65 64 20 75 73 69   be obtained usi
5140: 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65  ng.** [sqlite3_e
5150: 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28  xtended_errcode(
5160: 29 5d 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  )]..*/.#define S
5170: 51 4c 49 54 45 5f 45 52 52 4f 52 5f 4d 49 53 53  QLITE_ERROR_MISS
5180: 49 4e 47 5f 43 4f 4c 4c 53 45 51 20 20 20 28 53  ING_COLLSEQ   (S
5190: 51 4c 49 54 45 5f 45 52 52 4f 52 20 7c 20 28 31  QLITE_ERROR | (1
51a0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
51b0: 4c 49 54 45 5f 45 52 52 4f 52 5f 52 45 54 52 59  LITE_ERROR_RETRY
51c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51               (SQ
51d0: 4c 49 54 45 5f 45 52 52 4f 52 20 7c 20 28 32 3c  LITE_ERROR | (2<
51e0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
51f0: 49 54 45 5f 45 52 52 4f 52 5f 53 4e 41 50 53 48  ITE_ERROR_SNAPSH
5200: 4f 54 20 20 20 20 20 20 20 20 20 20 28 53 51 4c  OT          (SQL
5210: 49 54 45 5f 45 52 52 4f 52 20 7c 20 28 33 3c 3c  ITE_ERROR | (3<<
5220: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
5230: 54 45 5f 49 4f 45 52 52 5f 52 45 41 44 20 20 20  TE_IOERR_READ   
5240: 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49             (SQLI
5250: 54 45 5f 49 4f 45 52 52 20 7c 20 28 31 3c 3c 38  TE_IOERR | (1<<8
5260: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
5270: 45 5f 49 4f 45 52 52 5f 53 48 4f 52 54 5f 52 45  E_IOERR_SHORT_RE
5280: 41 44 20 20 20 20 20 20 20 20 28 53 51 4c 49 54  AD        (SQLIT
5290: 45 5f 49 4f 45 52 52 20 7c 20 28 32 3c 3c 38 29  E_IOERR | (2<<8)
52a0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
52b0: 5f 49 4f 45 52 52 5f 57 52 49 54 45 20 20 20 20  _IOERR_WRITE    
52c0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
52d0: 5f 49 4f 45 52 52 20 7c 20 28 33 3c 3c 38 29 29  _IOERR | (3<<8))
52e0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
52f0: 49 4f 45 52 52 5f 46 53 59 4e 43 20 20 20 20 20  IOERR_FSYNC     
5300: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
5310: 49 4f 45 52 52 20 7c 20 28 34 3c 3c 38 29 29 0a  IOERR | (4<<8)).
5320: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
5330: 4f 45 52 52 5f 44 49 52 5f 46 53 59 4e 43 20 20  OERR_DIR_FSYNC  
5340: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
5350: 4f 45 52 52 20 7c 20 28 35 3c 3c 38 29 29 0a 23  OERR | (5<<8)).#
5360: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
5370: 45 52 52 5f 54 52 55 4e 43 41 54 45 20 20 20 20  ERR_TRUNCATE    
5380: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f        (SQLITE_IO
5390: 45 52 52 20 7c 20 28 36 3c 3c 38 29 29 0a 23 64  ERR | (6<<8)).#d
53a0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45  efine SQLITE_IOE
53b0: 52 52 5f 46 53 54 41 54 20 20 20 20 20 20 20 20  RR_FSTAT        
53c0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45       (SQLITE_IOE
53d0: 52 52 20 7c 20 28 37 3c 3c 38 29 29 0a 23 64 65  RR | (7<<8)).#de
53e0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52  fine SQLITE_IOER
53f0: 52 5f 55 4e 4c 4f 43 4b 20 20 20 20 20 20 20 20  R_UNLOCK        
5400: 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52      (SQLITE_IOER
5410: 52 20 7c 20 28 38 3c 3c 38 29 29 0a 23 64 65 66  R | (8<<8)).#def
5420: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
5430: 5f 52 44 4c 4f 43 4b 20 20 20 20 20 20 20 20 20  _RDLOCK         
5440: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
5450: 20 7c 20 28 39 3c 3c 38 29 29 0a 23 64 65 66 69   | (9<<8)).#defi
5460: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5470: 44 45 4c 45 54 45 20 20 20 20 20 20 20 20 20 20  DELETE          
5480: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5490: 7c 20 28 31 30 3c 3c 38 29 29 0a 23 64 65 66 69  | (10<<8)).#defi
54a0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
54b0: 42 4c 4f 43 4b 45 44 20 20 20 20 20 20 20 20 20  BLOCKED         
54c0: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
54d0: 7c 20 28 31 31 3c 3c 38 29 29 0a 23 64 65 66 69  | (11<<8)).#defi
54e0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
54f0: 4e 4f 4d 45 4d 20 20 20 20 20 20 20 20 20 20 20  NOMEM           
5500: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5510: 7c 20 28 31 32 3c 3c 38 29 29 0a 23 64 65 66 69  | (12<<8)).#defi
5520: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5530: 41 43 43 45 53 53 20 20 20 20 20 20 20 20 20 20  ACCESS          
5540: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5550: 7c 20 28 31 33 3c 3c 38 29 29 0a 23 64 65 66 69  | (13<<8)).#defi
5560: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5570: 43 48 45 43 4b 52 45 53 45 52 56 45 44 4c 4f 43  CHECKRESERVEDLOC
5580: 4b 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20  K (SQLITE_IOERR 
5590: 7c 20 28 31 34 3c 3c 38 29 29 0a 23 64 65 66 69  | (14<<8)).#defi
55a0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
55b0: 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20  LOCK            
55c0: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
55d0: 7c 20 28 31 35 3c 3c 38 29 29 0a 23 64 65 66 69  | (15<<8)).#defi
55e0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
55f0: 43 4c 4f 53 45 20 20 20 20 20 20 20 20 20 20 20  CLOSE           
5600: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5610: 7c 20 28 31 36 3c 3c 38 29 29 0a 23 64 65 66 69  | (16<<8)).#defi
5620: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5630: 44 49 52 5f 43 4c 4f 53 45 20 20 20 20 20 20 20  DIR_CLOSE       
5640: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5650: 7c 20 28 31 37 3c 3c 38 29 29 0a 23 64 65 66 69  | (17<<8)).#defi
5660: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5670: 53 48 4d 4f 50 45 4e 20 20 20 20 20 20 20 20 20  SHMOPEN         
5680: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5690: 7c 20 28 31 38 3c 3c 38 29 29 0a 23 64 65 66 69  | (18<<8)).#defi
56a0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
56b0: 53 48 4d 53 49 5a 45 20 20 20 20 20 20 20 20 20  SHMSIZE         
56c0: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
56d0: 7c 20 28 31 39 3c 3c 38 29 29 0a 23 64 65 66 69  | (19<<8)).#defi
56e0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
56f0: 53 48 4d 4c 4f 43 4b 20 20 20 20 20 20 20 20 20  SHMLOCK         
5700: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5710: 7c 20 28 32 30 3c 3c 38 29 29 0a 23 64 65 66 69  | (20<<8)).#defi
5720: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5730: 53 48 4d 4d 41 50 20 20 20 20 20 20 20 20 20 20  SHMMAP          
5740: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5750: 7c 20 28 32 31 3c 3c 38 29 29 0a 23 64 65 66 69  | (21<<8)).#defi
5760: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5770: 53 45 45 4b 20 20 20 20 20 20 20 20 20 20 20 20  SEEK            
5780: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5790: 7c 20 28 32 32 3c 3c 38 29 29 0a 23 64 65 66 69  | (22<<8)).#defi
57a0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
57b0: 44 45 4c 45 54 45 5f 4e 4f 45 4e 54 20 20 20 20  DELETE_NOENT    
57c0: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
57d0: 7c 20 28 32 33 3c 3c 38 29 29 0a 23 64 65 66 69  | (23<<8)).#defi
57e0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
57f0: 4d 4d 41 50 20 20 20 20 20 20 20 20 20 20 20 20  MMAP            
5800: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5810: 7c 20 28 32 34 3c 3c 38 29 29 0a 23 64 65 66 69  | (24<<8)).#defi
5820: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5830: 47 45 54 54 45 4d 50 50 41 54 48 20 20 20 20 20  GETTEMPPATH     
5840: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5850: 7c 20 28 32 35 3c 3c 38 29 29 0a 23 64 65 66 69  | (25<<8)).#defi
5860: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5870: 43 4f 4e 56 50 41 54 48 20 20 20 20 20 20 20 20  CONVPATH        
5880: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5890: 7c 20 28 32 36 3c 3c 38 29 29 0a 23 64 65 66 69  | (26<<8)).#defi
58a0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
58b0: 56 4e 4f 44 45 20 20 20 20 20 20 20 20 20 20 20  VNODE           
58c0: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
58d0: 7c 20 28 32 37 3c 3c 38 29 29 0a 23 64 65 66 69  | (27<<8)).#defi
58e0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
58f0: 41 55 54 48 20 20 20 20 20 20 20 20 20 20 20 20  AUTH            
5900: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5910: 7c 20 28 32 38 3c 3c 38 29 29 0a 23 64 65 66 69  | (28<<8)).#defi
5920: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5930: 42 45 47 49 4e 5f 41 54 4f 4d 49 43 20 20 20 20  BEGIN_ATOMIC    
5940: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5950: 7c 20 28 32 39 3c 3c 38 29 29 0a 23 64 65 66 69  | (29<<8)).#defi
5960: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
5970: 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 20 20 20  COMMIT_ATOMIC   
5980: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
5990: 7c 20 28 33 30 3c 3c 38 29 29 0a 23 64 65 66 69  | (30<<8)).#defi
59a0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
59b0: 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 20  ROLLBACK_ATOMIC 
59c0: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
59d0: 7c 20 28 33 31 3c 3c 38 29 29 0a 23 64 65 66 69  | (31<<8)).#defi
59e0: 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44  ne SQLITE_LOCKED
59f0: 5f 53 48 41 52 45 44 43 41 43 48 45 20 20 20 20  _SHAREDCACHE    
5a00: 20 20 28 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44    (SQLITE_LOCKED
5a10: 20 7c 20 20 28 31 3c 3c 38 29 29 0a 23 64 65 66   |  (1<<8)).#def
5a20: 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  ine SQLITE_LOCKE
5a30: 44 5f 56 54 41 42 20 20 20 20 20 20 20 20 20 20  D_VTAB          
5a40: 20 20 20 28 53 51 4c 49 54 45 5f 4c 4f 43 4b 45     (SQLITE_LOCKE
5a50: 44 20 7c 20 20 28 32 3c 3c 38 29 29 0a 23 64 65  D |  (2<<8)).#de
5a60: 66 69 6e 65 20 53 51 4c 49 54 45 5f 42 55 53 59  fine SQLITE_BUSY
5a70: 5f 52 45 43 4f 56 45 52 59 20 20 20 20 20 20 20  _RECOVERY       
5a80: 20 20 20 20 28 53 51 4c 49 54 45 5f 42 55 53 59      (SQLITE_BUSY
5a90: 20 20 20 7c 20 20 28 31 3c 3c 38 29 29 0a 23 64     |  (1<<8)).#d
5aa0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42 55 53  efine SQLITE_BUS
5ab0: 59 5f 53 4e 41 50 53 48 4f 54 20 20 20 20 20 20  Y_SNAPSHOT      
5ac0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 42 55 53       (SQLITE_BUS
5ad0: 59 20 20 20 7c 20 20 28 32 3c 3c 38 29 29 0a 23  Y   |  (2<<8)).#
5ae0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41  define SQLITE_CA
5af0: 4e 54 4f 50 45 4e 5f 4e 4f 54 45 4d 50 44 49 52  NTOPEN_NOTEMPDIR
5b00: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43 41        (SQLITE_CA
5b10: 4e 54 4f 50 45 4e 20 7c 20 28 31 3c 3c 38 29 29  NTOPEN | (1<<8))
5b20: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
5b30: 43 41 4e 54 4f 50 45 4e 5f 49 53 44 49 52 20 20  CANTOPEN_ISDIR  
5b40: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
5b50: 43 41 4e 54 4f 50 45 4e 20 7c 20 28 32 3c 3c 38  CANTOPEN | (2<<8
5b60: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
5b70: 45 5f 43 41 4e 54 4f 50 45 4e 5f 46 55 4c 4c 50  E_CANTOPEN_FULLP
5b80: 41 54 48 20 20 20 20 20 20 20 28 53 51 4c 49 54  ATH       (SQLIT
5b90: 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 33 3c  E_CANTOPEN | (3<
5ba0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
5bb0: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 43 4f 4e  ITE_CANTOPEN_CON
5bc0: 56 50 41 54 48 20 20 20 20 20 20 20 28 53 51 4c  VPATH       (SQL
5bd0: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28  ITE_CANTOPEN | (
5be0: 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  4<<8)).#define S
5bf0: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 44  QLITE_CANTOPEN_D
5c00: 49 52 54 59 57 41 4c 20 20 20 20 20 20 20 28 53  IRTYWAL       (S
5c10: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c  QLITE_CANTOPEN |
5c20: 20 28 35 3c 3c 38 29 29 20 2f 2a 20 4e 6f 74 20   (5<<8)) /* Not 
5c30: 55 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  Used */.#define 
5c40: 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5f 56  SQLITE_CORRUPT_V
5c50: 54 41 42 20 20 20 20 20 20 20 20 20 20 20 20 28  TAB            (
5c60: 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 7c  SQLITE_CORRUPT |
5c70: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
5c80: 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5f   SQLITE_CORRUPT_
5c90: 53 45 51 55 45 4e 43 45 20 20 20 20 20 20 20 20  SEQUENCE        
5ca0: 28 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20  (SQLITE_CORRUPT 
5cb0: 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (2<<8)).#defin
5cc0: 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c  e SQLITE_READONL
5cd0: 59 5f 52 45 43 4f 56 45 52 59 20 20 20 20 20 20  Y_RECOVERY      
5ce0: 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c   (SQLITE_READONL
5cf0: 59 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66  Y | (1<<8)).#def
5d00: 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f  ine SQLITE_READO
5d10: 4e 4c 59 5f 43 41 4e 54 4c 4f 43 4b 20 20 20 20  NLY_CANTLOCK    
5d20: 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f     (SQLITE_READO
5d30: 4e 4c 59 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64  NLY | (2<<8)).#d
5d40: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41  efine SQLITE_REA
5d50: 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41 43 4b 20 20  DONLY_ROLLBACK  
5d60: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41       (SQLITE_REA
5d70: 44 4f 4e 4c 59 20 7c 20 28 33 3c 3c 38 29 29 0a  DONLY | (3<<8)).
5d80: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
5d90: 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f 56 45 44 20  EADONLY_DBMOVED 
5da0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52         (SQLITE_R
5db0: 45 41 44 4f 4e 4c 59 20 7c 20 28 34 3c 3c 38 29  EADONLY | (4<<8)
5dc0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
5dd0: 5f 52 45 41 44 4f 4e 4c 59 5f 43 41 4e 54 49 4e  _READONLY_CANTIN
5de0: 49 54 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  IT       (SQLITE
5df0: 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 35 3c 3c  _READONLY | (5<<
5e00: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
5e10: 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 44 49 52 45  TE_READONLY_DIRE
5e20: 43 54 4f 52 59 20 20 20 20 20 20 28 53 51 4c 49  CTORY      (SQLI
5e30: 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 36  TE_READONLY | (6
5e40: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
5e50: 4c 49 54 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42  LITE_ABORT_ROLLB
5e60: 41 43 4b 20 20 20 20 20 20 20 20 20 20 28 53 51  ACK          (SQ
5e70: 4c 49 54 45 5f 41 42 4f 52 54 20 7c 20 28 32 3c  LITE_ABORT | (2<
5e80: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
5e90: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43  ITE_CONSTRAINT_C
5ea0: 48 45 43 4b 20 20 20 20 20 20 20 20 28 53 51 4c  HECK        (SQL
5eb0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
5ec0: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
5ed0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
5ee0: 4e 54 5f 43 4f 4d 4d 49 54 48 4f 4f 4b 20 20 20  NT_COMMITHOOK   
5ef0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
5f00: 4e 54 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  NT | (2<<8)).#de
5f10: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
5f20: 54 52 41 49 4e 54 5f 46 4f 52 45 49 47 4e 4b 45  TRAINT_FOREIGNKE
5f30: 59 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53  Y   (SQLITE_CONS
5f40: 54 52 41 49 4e 54 20 7c 20 28 33 3c 3c 38 29 29  TRAINT | (3<<8))
5f50: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
5f60: 43 4f 4e 53 54 52 41 49 4e 54 5f 46 55 4e 43 54  CONSTRAINT_FUNCT
5f70: 49 4f 4e 20 20 20 20 20 28 53 51 4c 49 54 45 5f  ION     (SQLITE_
5f80: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 34 3c  CONSTRAINT | (4<
5f90: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
5fa0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4e  ITE_CONSTRAINT_N
5fb0: 4f 54 4e 55 4c 4c 20 20 20 20 20 20 28 53 51 4c  OTNULL      (SQL
5fc0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
5fd0: 20 28 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (5<<8)).#define
5fe0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
5ff0: 4e 54 5f 50 52 49 4d 41 52 59 4b 45 59 20 20 20  NT_PRIMARYKEY   
6000: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
6010: 4e 54 20 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65  NT | (6<<8)).#de
6020: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
6030: 54 52 41 49 4e 54 5f 54 52 49 47 47 45 52 20 20  TRAINT_TRIGGER  
6040: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
6050: 54 52 41 49 4e 54 20 7c 20 28 37 3c 3c 38 29 29  TRAINT | (7<<8))
6060: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
6070: 43 4f 4e 53 54 52 41 49 4e 54 5f 55 4e 49 51 55  CONSTRAINT_UNIQU
6080: 45 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  E       (SQLITE_
6090: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 38 3c  CONSTRAINT | (8<
60a0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
60b0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 56  ITE_CONSTRAINT_V
60c0: 54 41 42 20 20 20 20 20 20 20 20 20 28 53 51 4c  TAB         (SQL
60d0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
60e0: 20 28 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (9<<8)).#define
60f0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
6100: 4e 54 5f 52 4f 57 49 44 20 20 20 20 20 20 20 20  NT_ROWID        
6110: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
6120: 4e 54 20 7c 28 31 30 3c 3c 38 29 29 0a 23 64 65  NT |(10<<8)).#de
6130: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49  fine SQLITE_NOTI
6140: 43 45 5f 52 45 43 4f 56 45 52 5f 57 41 4c 20 20  CE_RECOVER_WAL  
6150: 20 20 20 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49      (SQLITE_NOTI
6160: 43 45 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65  CE | (1<<8)).#de
6170: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49  fine SQLITE_NOTI
6180: 43 45 5f 52 45 43 4f 56 45 52 5f 52 4f 4c 4c 42  CE_RECOVER_ROLLB
6190: 41 43 4b 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49  ACK (SQLITE_NOTI
61a0: 43 45 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  CE | (2<<8)).#de
61b0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 57 41 52 4e  fine SQLITE_WARN
61c0: 49 4e 47 5f 41 55 54 4f 49 4e 44 45 58 20 20 20  ING_AUTOINDEX   
61d0: 20 20 20 20 28 53 51 4c 49 54 45 5f 57 41 52 4e      (SQLITE_WARN
61e0: 49 4e 47 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  ING | (1<<8)).#d
61f0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 55 54  efine SQLITE_AUT
6200: 48 5f 55 53 45 52 20 20 20 20 20 20 20 20 20 20  H_USER          
6210: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 41 55 54       (SQLITE_AUT
6220: 48 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66  H | (1<<8)).#def
6230: 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 5f 4c 4f  ine SQLITE_OK_LO
6240: 41 44 5f 50 45 52 4d 41 4e 45 4e 54 4c 59 20 20  AD_PERMANENTLY  
6250: 20 20 20 28 53 51 4c 49 54 45 5f 4f 4b 20 7c 20     (SQLITE_OK | 
6260: 28 31 3c 3c 38 29 29 0a 0a 2f 2a 0a 2a 2a 20 43  (1<<8))../*.** C
6270: 41 50 49 33 52 45 46 3a 20 46 6c 61 67 73 20 46  API3REF: Flags F
6280: 6f 72 20 46 69 6c 65 20 4f 70 65 6e 20 4f 70 65  or File Open Ope
6290: 72 61 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68  rations.**.** Th
62a0: 65 73 65 20 62 69 74 20 76 61 6c 75 65 73 20 61  ese bit values a
62b0: 72 65 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  re intended for 
62c0: 75 73 65 20 69 6e 20 74 68 65 0a 2a 2a 20 33 72  use in the.** 3r
62d0: 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  d parameter to t
62e0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  he [sqlite3_open
62f0: 5f 76 32 28 29 5d 20 69 6e 74 65 72 66 61 63 65  _v2()] interface
6300: 20 61 6e 64 0a 2a 2a 20 69 6e 20 74 68 65 20 34   and.** in the 4
6310: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
6320: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  the [sqlite3_vfs
6330: 2e 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 2e 0a  .xOpen] method..
6340: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6350: 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 20  E_OPEN_READONLY 
6360: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
6370: 30 31 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  01  /* Ok for sq
6380: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
6390: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
63a0: 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45  E_OPEN_READWRITE
63b0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
63c0: 30 32 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  02  /* Ok for sq
63d0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
63e0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
63f0: 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 20 20 20  E_OPEN_CREATE   
6400: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
6410: 30 34 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  04  /* Ok for sq
6420: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
6430: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6440: 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43  E_OPEN_DELETEONC
6450: 4c 4f 53 45 20 20 20 20 30 78 30 30 30 30 30 30  LOSE    0x000000
6460: 30 38 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  08  /* VFS only 
6470: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6480: 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45  E_OPEN_EXCLUSIVE
6490: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
64a0: 31 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  10  /* VFS only 
64b0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
64c0: 45 5f 4f 50 45 4e 5f 41 55 54 4f 50 52 4f 58 59  E_OPEN_AUTOPROXY
64d0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
64e0: 32 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  20  /* VFS only 
64f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6500: 45 5f 4f 50 45 4e 5f 55 52 49 20 20 20 20 20 20  E_OPEN_URI      
6510: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
6520: 34 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  40  /* Ok for sq
6530: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
6540: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6550: 45 5f 4f 50 45 4e 5f 4d 45 4d 4f 52 59 20 20 20  E_OPEN_MEMORY   
6560: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
6570: 38 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  80  /* Ok for sq
6580: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
6590: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
65a0: 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 44 42 20 20  E_OPEN_MAIN_DB  
65b0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 31          0x000001
65c0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
65d0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
65e0: 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 44 42 20 20  E_OPEN_TEMP_DB  
65f0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 32          0x000002
6600: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
6610: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6620: 45 5f 4f 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54  E_OPEN_TRANSIENT
6630: 5f 44 42 20 20 20 20 20 30 78 30 30 30 30 30 34  _DB     0x000004
6640: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
6650: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6660: 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52  E_OPEN_MAIN_JOUR
6670: 4e 41 4c 20 20 20 20 20 30 78 30 30 30 30 30 38  NAL     0x000008
6680: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
6690: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
66a0: 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 4a 4f 55 52  E_OPEN_TEMP_JOUR
66b0: 4e 41 4c 20 20 20 20 20 30 78 30 30 30 30 31 30  NAL     0x000010
66c0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
66d0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
66e0: 45 5f 4f 50 45 4e 5f 53 55 42 4a 4f 55 52 4e 41  E_OPEN_SUBJOURNA
66f0: 4c 20 20 20 20 20 20 20 30 78 30 30 30 30 32 30  L       0x000020
6700: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
6710: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6720: 45 5f 4f 50 45 4e 5f 4d 41 53 54 45 52 5f 4a 4f  E_OPEN_MASTER_JO
6730: 55 52 4e 41 4c 20 20 20 30 78 30 30 30 30 34 30  URNAL   0x000040
6740: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
6750: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6760: 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 20 20  E_OPEN_NOMUTEX  
6770: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 38 30          0x000080
6780: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
6790: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
67a0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
67b0: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
67c0: 20 20 20 20 20 20 20 20 30 78 30 30 30 31 30 30          0x000100
67d0: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
67e0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
67f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6800: 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43  E_OPEN_SHAREDCAC
6810: 48 45 20 20 20 20 20 20 30 78 30 30 30 32 30 30  HE      0x000200
6820: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
6830: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
6840: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
6850: 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41  E_OPEN_PRIVATECA
6860: 43 48 45 20 20 20 20 20 30 78 30 30 30 34 30 30  CHE     0x000400
6870: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
6880: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
6890: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
68a0: 45 5f 4f 50 45 4e 5f 57 41 4c 20 20 20 20 20 20  E_OPEN_WAL      
68b0: 20 20 20 20 20 20 20 20 30 78 30 30 30 38 30 30          0x000800
68c0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
68d0: 2a 2f 0a 0a 2f 2a 20 52 65 73 65 72 76 65 64 3a  */../* Reserved:
68e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68f0: 20 20 20 20 20 20 20 20 20 30 78 30 30 46 30 30           0x00F00
6900: 30 30 30 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41  000 */../*.** CA
6910: 50 49 33 52 45 46 3a 20 44 65 76 69 63 65 20 43  PI3REF: Device C
6920: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 0a 2a  haracteristics.*
6930: 2a 0a 2a 2a 20 54 68 65 20 78 44 65 76 69 63 65  *.** The xDevice
6940: 43 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20  Characteristics 
6950: 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 5b 73  method of the [s
6960: 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
6970: 73 5d 0a 2a 2a 20 6f 62 6a 65 63 74 20 72 65 74  s].** object ret
6980: 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20  urns an integer 
6990: 77 68 69 63 68 20 69 73 20 61 20 76 65 63 74 6f  which is a vecto
69a0: 72 20 6f 66 20 74 68 65 73 65 0a 2a 2a 20 62 69  r of these.** bi
69b0: 74 20 76 61 6c 75 65 73 20 65 78 70 72 65 73 73  t values express
69c0: 69 6e 67 20 49 2f 4f 20 63 68 61 72 61 63 74 65  ing I/O characte
69d0: 72 69 73 74 69 63 73 20 6f 66 20 74 68 65 20 6d  ristics of the m
69e0: 61 73 73 20 73 74 6f 72 61 67 65 0a 2a 2a 20 64  ass storage.** d
69f0: 65 76 69 63 65 20 74 68 61 74 20 68 6f 6c 64 73  evice that holds
6a00: 20 74 68 65 20 66 69 6c 65 20 74 68 61 74 20 74   the file that t
6a10: 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  he [sqlite3_io_m
6a20: 65 74 68 6f 64 73 5d 0a 2a 2a 20 72 65 66 65 72  ethods].** refer
6a30: 73 20 74 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  s to..**.** The 
6a40: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
6a50: 4d 49 43 20 70 72 6f 70 65 72 74 79 20 6d 65 61  MIC property mea
6a60: 6e 73 20 74 68 61 74 20 61 6c 6c 20 77 72 69 74  ns that all writ
6a70: 65 73 20 6f 66 0a 2a 2a 20 61 6e 79 20 73 69 7a  es of.** any siz
6a80: 65 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54  e are atomic.  T
6a90: 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  he SQLITE_IOCAP_
6aa0: 41 54 4f 4d 49 43 6e 6e 6e 20 76 61 6c 75 65 73  ATOMICnnn values
6ab0: 0a 2a 2a 20 6d 65 61 6e 20 74 68 61 74 20 77 72  .** mean that wr
6ac0: 69 74 65 73 20 6f 66 20 62 6c 6f 63 6b 73 20 74  ites of blocks t
6ad0: 68 61 74 20 61 72 65 20 6e 6e 6e 20 62 79 74 65  hat are nnn byte
6ae0: 73 20 69 6e 20 73 69 7a 65 20 61 6e 64 0a 2a 2a  s in size and.**
6af0: 20 61 72 65 20 61 6c 69 67 6e 65 64 20 74 6f 20   are aligned to 
6b00: 61 6e 20 61 64 64 72 65 73 73 20 77 68 69 63 68  an address which
6b10: 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6d   is an integer m
6b20: 75 6c 74 69 70 6c 65 20 6f 66 0a 2a 2a 20 6e 6e  ultiple of.** nn
6b30: 6e 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54  n are atomic.  T
6b40: 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  he SQLITE_IOCAP_
6b50: 53 41 46 45 5f 41 50 50 45 4e 44 20 76 61 6c 75  SAFE_APPEND valu
6b60: 65 20 6d 65 61 6e 73 0a 2a 2a 20 74 68 61 74 20  e means.** that 
6b70: 77 68 65 6e 20 64 61 74 61 20 69 73 20 61 70 70  when data is app
6b80: 65 6e 64 65 64 20 74 6f 20 61 20 66 69 6c 65 2c  ended to a file,
6b90: 20 74 68 65 20 64 61 74 61 20 69 73 20 61 70 70   the data is app
6ba0: 65 6e 64 65 64 0a 2a 2a 20 66 69 72 73 74 20 74  ended.** first t
6bb0: 68 65 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20  hen the size of 
6bc0: 74 68 65 20 66 69 6c 65 20 69 73 20 65 78 74 65  the file is exte
6bd0: 6e 64 65 64 2c 20 6e 65 76 65 72 20 74 68 65 20  nded, never the 
6be0: 6f 74 68 65 72 0a 2a 2a 20 77 61 79 20 61 72 6f  other.** way aro
6bf0: 75 6e 64 2e 20 20 54 68 65 20 53 51 4c 49 54 45  und.  The SQLITE
6c00: 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e 54 49 41  _IOCAP_SEQUENTIA
6c10: 4c 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73  L property means
6c20: 20 74 68 61 74 0a 2a 2a 20 69 6e 66 6f 72 6d 61   that.** informa
6c30: 74 69 6f 6e 20 69 73 20 77 72 69 74 74 65 6e 20  tion is written 
6c40: 74 6f 20 64 69 73 6b 20 69 6e 20 74 68 65 20 73  to disk in the s
6c50: 61 6d 65 20 6f 72 64 65 72 20 61 73 20 63 61 6c  ame order as cal
6c60: 6c 73 0a 2a 2a 20 74 6f 20 78 57 72 69 74 65 28  ls.** to xWrite(
6c70: 29 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49  ).  The SQLITE_I
6c80: 4f 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f  OCAP_POWERSAFE_O
6c90: 56 45 52 57 52 49 54 45 20 70 72 6f 70 65 72 74  VERWRITE propert
6ca0: 79 20 6d 65 61 6e 73 20 74 68 61 74 0a 2a 2a 20  y means that.** 
6cb0: 61 66 74 65 72 20 72 65 62 6f 6f 74 20 66 6f 6c  after reboot fol
6cc0: 6c 6f 77 69 6e 67 20 61 20 63 72 61 73 68 20 6f  lowing a crash o
6cd0: 72 20 70 6f 77 65 72 20 6c 6f 73 73 2c 20 74 68  r power loss, th
6ce0: 65 20 6f 6e 6c 79 20 62 79 74 65 73 20 69 6e 20  e only bytes in 
6cf0: 61 0a 2a 2a 20 66 69 6c 65 20 74 68 61 74 20 77  a.** file that w
6d00: 65 72 65 20 77 72 69 74 74 65 6e 20 61 74 20 74  ere written at t
6d10: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6c  he application l
6d20: 65 76 65 6c 20 6d 69 67 68 74 20 68 61 76 65 20  evel might have 
6d30: 63 68 61 6e 67 65 64 0a 2a 2a 20 61 6e 64 20 74  changed.** and t
6d40: 68 61 74 20 61 64 6a 61 63 65 6e 74 20 62 79 74  hat adjacent byt
6d50: 65 73 2c 20 65 76 65 6e 20 62 79 74 65 73 20 77  es, even bytes w
6d60: 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 73  ithin the same s
6d70: 65 63 74 6f 72 20 61 72 65 0a 2a 2a 20 67 75 61  ector are.** gua
6d80: 72 61 6e 74 65 65 64 20 74 6f 20 62 65 20 75 6e  ranteed to be un
6d90: 63 68 61 6e 67 65 64 2e 20 20 54 68 65 20 53 51  changed.  The SQ
6da0: 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e 44 45 4c  LITE_IOCAP_UNDEL
6db0: 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e  ETABLE_WHEN_OPEN
6dc0: 0a 2a 2a 20 66 6c 61 67 20 69 6e 64 69 63 61 74  .** flag indicat
6dd0: 65 73 20 74 68 61 74 20 61 20 66 69 6c 65 20 63  es that a file c
6de0: 61 6e 6e 6f 74 20 62 65 20 64 65 6c 65 74 65 64  annot be deleted
6df0: 20 77 68 65 6e 20 6f 70 65 6e 2e 20 20 54 68 65   when open.  The
6e00: 0a 2a 2a 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  .** SQLITE_IOCAP
6e10: 5f 49 4d 4d 55 54 41 42 4c 45 20 66 6c 61 67 20  _IMMUTABLE flag 
6e20: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74  indicates that t
6e30: 68 65 20 66 69 6c 65 20 69 73 20 6f 6e 0a 2a 2a  he file is on.**
6e40: 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 65 64 69 61   read-only media
6e50: 20 61 6e 64 20 63 61 6e 6e 6f 74 20 62 65 20 63   and cannot be c
6e60: 68 61 6e 67 65 64 20 65 76 65 6e 20 62 79 20 70  hanged even by p
6e70: 72 6f 63 65 73 73 65 73 20 77 69 74 68 0a 2a 2a  rocesses with.**
6e80: 20 65 6c 65 76 61 74 65 64 20 70 72 69 76 69 6c   elevated privil
6e90: 65 67 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  eges..**.** The 
6ea0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 42 41 54  SQLITE_IOCAP_BAT
6eb0: 43 48 5f 41 54 4f 4d 49 43 20 70 72 6f 70 65 72  CH_ATOMIC proper
6ec0: 74 79 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  ty means that th
6ed0: 65 20 75 6e 64 65 72 6c 79 69 6e 67 0a 2a 2a 20  e underlying.** 
6ee0: 66 69 6c 65 73 79 73 74 65 6d 20 73 75 70 70 6f  filesystem suppo
6ef0: 72 74 73 20 64 6f 69 6e 67 20 6d 75 6c 74 69 70  rts doing multip
6f00: 6c 65 20 77 72 69 74 65 20 6f 70 65 72 61 74 69  le write operati
6f10: 6f 6e 73 20 61 74 6f 6d 69 63 61 6c 6c 79 20 77  ons atomically w
6f20: 68 65 6e 20 74 68 6f 73 65 0a 2a 2a 20 77 72 69  hen those.** wri
6f30: 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 72  te operations ar
6f40: 65 20 62 72 61 63 6b 65 74 65 64 20 62 79 20 5b  e bracketed by [
6f50: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47  SQLITE_FCNTL_BEG
6f60: 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d  IN_ATOMIC_WRITE]
6f70: 20 61 6e 64 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   and.** [SQLITE_
6f80: 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
6f90: 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2f 0a 23  MIC_WRITE]..*/.#
6fa0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
6fb0: 43 41 50 5f 41 54 4f 4d 49 43 20 20 20 20 20 20  CAP_ATOMIC      
6fc0: 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30             0x000
6fd0: 30 30 30 30 31 0a 23 64 65 66 69 6e 65 20 53 51  00001.#define SQ
6fe0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
6ff0: 43 35 31 32 20 20 20 20 20 20 20 20 20 20 20 20  C512            
7000: 20 20 30 78 30 30 30 30 30 30 30 32 0a 23 64 65    0x00000002.#de
7010: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41  fine SQLITE_IOCA
7020: 50 5f 41 54 4f 4d 49 43 31 4b 20 20 20 20 20 20  P_ATOMIC1K      
7030: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30           0x00000
7040: 30 30 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  004.#define SQLI
7050: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32  TE_IOCAP_ATOMIC2
7060: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  K               
7070: 30 78 30 30 30 30 30 30 30 38 0a 23 64 65 66 69  0x00000008.#defi
7080: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  ne SQLITE_IOCAP_
7090: 41 54 4f 4d 49 43 34 4b 20 20 20 20 20 20 20 20  ATOMIC4K        
70a0: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30 31         0x0000001
70b0: 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
70c0: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 38 4b 20  _IOCAP_ATOMIC8K 
70d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78                0x
70e0: 30 30 30 30 30 30 32 30 0a 23 64 65 66 69 6e 65  00000020.#define
70f0: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54   SQLITE_IOCAP_AT
7100: 4f 4d 49 43 31 36 4b 20 20 20 20 20 20 20 20 20  OMIC16K         
7110: 20 20 20 20 20 30 78 30 30 30 30 30 30 34 30 0a       0x00000040.
7120: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
7130: 4f 43 41 50 5f 41 54 4f 4d 49 43 33 32 4b 20 20  OCAP_ATOMIC32K  
7140: 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30              0x00
7150: 30 30 30 30 38 30 0a 23 64 65 66 69 6e 65 20 53  000080.#define S
7160: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
7170: 49 43 36 34 4b 20 20 20 20 20 20 20 20 20 20 20  IC64K           
7180: 20 20 20 30 78 30 30 30 30 30 31 30 30 0a 23 64     0x00000100.#d
7190: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43  efine SQLITE_IOC
71a0: 41 50 5f 53 41 46 45 5f 41 50 50 45 4e 44 20 20  AP_SAFE_APPEND  
71b0: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30            0x0000
71c0: 30 32 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c  0200.#define SQL
71d0: 49 54 45 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e  ITE_IOCAP_SEQUEN
71e0: 54 49 41 4c 20 20 20 20 20 20 20 20 20 20 20 20  TIAL            
71f0: 20 30 78 30 30 30 30 30 34 30 30 0a 23 64 65 66   0x00000400.#def
7200: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  ine SQLITE_IOCAP
7210: 5f 55 4e 44 45 4c 45 54 41 42 4c 45 5f 57 48 45  _UNDELETABLE_WHE
7220: 4e 5f 4f 50 45 4e 20 20 30 78 30 30 30 30 30 38  N_OPEN  0x000008
7230: 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  00.#define SQLIT
7240: 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53 41 46  E_IOCAP_POWERSAF
7250: 45 5f 4f 56 45 52 57 52 49 54 45 20 20 20 20 30  E_OVERWRITE    0
7260: 78 30 30 30 30 31 30 30 30 0a 23 64 65 66 69 6e  x00001000.#defin
7270: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49  e SQLITE_IOCAP_I
7280: 4d 4d 55 54 41 42 4c 45 20 20 20 20 20 20 20 20  MMUTABLE        
7290: 20 20 20 20 20 20 30 78 30 30 30 30 32 30 30 30        0x00002000
72a0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
72b0: 49 4f 43 41 50 5f 42 41 54 43 48 5f 41 54 4f 4d  IOCAP_BATCH_ATOM
72c0: 49 43 20 20 20 20 20 20 20 20 20 20 20 30 78 30  IC           0x0
72d0: 30 30 30 34 30 30 30 0a 0a 2f 2a 0a 2a 2a 20 43  0004000../*.** C
72e0: 41 50 49 33 52 45 46 3a 20 46 69 6c 65 20 4c 6f  API3REF: File Lo
72f0: 63 6b 69 6e 67 20 4c 65 76 65 6c 73 0a 2a 2a 0a  cking Levels.**.
7300: 2a 2a 20 53 51 4c 69 74 65 20 75 73 65 73 20 6f  ** SQLite uses o
7310: 6e 65 20 6f 66 20 74 68 65 73 65 20 69 6e 74 65  ne of these inte
7320: 67 65 72 20 76 61 6c 75 65 73 20 61 73 20 74 68  ger values as th
7330: 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 61 72 67 75  e second.** argu
7340: 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 73 20 69 74  ment to calls it
7350: 20 6d 61 6b 65 73 20 74 6f 20 74 68 65 20 78 4c   makes to the xL
7360: 6f 63 6b 28 29 20 61 6e 64 20 78 55 6e 6c 6f 63  ock() and xUnloc
7370: 6b 28 29 20 6d 65 74 68 6f 64 73 0a 2a 2a 20 6f  k() methods.** o
7380: 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 69 6f  f an [sqlite3_io
7390: 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74  _methods] object
73a0: 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ..*/.#define SQL
73b0: 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e 45 20 20 20  ITE_LOCK_NONE   
73c0: 20 20 20 20 20 20 20 30 0a 23 64 65 66 69 6e 65         0.#define
73d0: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41   SQLITE_LOCK_SHA
73e0: 52 45 44 20 20 20 20 20 20 20 20 31 0a 23 64 65  RED        1.#de
73f0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
7400: 5f 52 45 53 45 52 56 45 44 20 20 20 20 20 20 32  _RESERVED      2
7410: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
7420: 4c 4f 43 4b 5f 50 45 4e 44 49 4e 47 20 20 20 20  LOCK_PENDING    
7430: 20 20 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c     3.#define SQL
7440: 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53 49  ITE_LOCK_EXCLUSI
7450: 56 45 20 20 20 20 20 34 0a 0a 2f 2a 0a 2a 2a 20  VE     4../*.** 
7460: 43 41 50 49 33 52 45 46 3a 20 53 79 6e 63 68 72  CAPI3REF: Synchr
7470: 6f 6e 69 7a 61 74 69 6f 6e 20 54 79 70 65 20 46  onization Type F
7480: 6c 61 67 73 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20  lags.**.** When 
7490: 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65 73 20 74  SQLite invokes t
74a0: 68 65 20 78 53 79 6e 63 28 29 20 6d 65 74 68 6f  he xSync() metho
74b0: 64 20 6f 66 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69  d of an.** [sqli
74c0: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
74d0: 6f 62 6a 65 63 74 20 69 74 20 75 73 65 73 20 61  object it uses a
74e0: 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 0a   combination of.
74f0: 2a 2a 20 74 68 65 73 65 20 69 6e 74 65 67 65 72  ** these integer
7500: 20 76 61 6c 75 65 73 20 61 73 20 74 68 65 20 73   values as the s
7510: 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 2e 0a  econd argument..
7520: 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 53  **.** When the S
7530: 51 4c 49 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f  QLITE_SYNC_DATAO
7540: 4e 4c 59 20 66 6c 61 67 20 69 73 20 75 73 65 64  NLY flag is used
7550: 2c 20 69 74 20 6d 65 61 6e 73 20 74 68 61 74 20  , it means that 
7560: 74 68 65 0a 2a 2a 20 73 79 6e 63 20 6f 70 65 72  the.** sync oper
7570: 61 74 69 6f 6e 20 6f 6e 6c 79 20 6e 65 65 64 73  ation only needs
7580: 20 74 6f 20 66 6c 75 73 68 20 64 61 74 61 20 74   to flush data t
7590: 6f 20 6d 61 73 73 20 73 74 6f 72 61 67 65 2e 20  o mass storage. 
75a0: 20 49 6e 6f 64 65 0a 2a 2a 20 69 6e 66 6f 72 6d   Inode.** inform
75b0: 61 74 69 6f 6e 20 6e 65 65 64 20 6e 6f 74 20 62  ation need not b
75c0: 65 20 66 6c 75 73 68 65 64 2e 20 49 66 20 74 68  e flushed. If th
75d0: 65 20 6c 6f 77 65 72 20 66 6f 75 72 20 62 69 74  e lower four bit
75e0: 73 20 6f 66 20 74 68 65 20 66 6c 61 67 0a 2a 2a  s of the flag.**
75f0: 20 65 71 75 61 6c 20 53 51 4c 49 54 45 5f 53 59   equal SQLITE_SY
7600: 4e 43 5f 4e 4f 52 4d 41 4c 2c 20 74 68 61 74 20  NC_NORMAL, that 
7610: 6d 65 61 6e 73 20 74 6f 20 75 73 65 20 6e 6f 72  means to use nor
7620: 6d 61 6c 20 66 73 79 6e 63 28 29 20 73 65 6d 61  mal fsync() sema
7630: 6e 74 69 63 73 2e 0a 2a 2a 20 49 66 20 74 68 65  ntics..** If the
7640: 20 6c 6f 77 65 72 20 66 6f 75 72 20 62 69 74 73   lower four bits
7650: 20 65 71 75 61 6c 20 53 51 4c 49 54 45 5f 53 59   equal SQLITE_SY
7660: 4e 43 5f 46 55 4c 4c 2c 20 74 68 61 74 20 6d 65  NC_FULL, that me
7670: 61 6e 73 0a 2a 2a 20 74 6f 20 75 73 65 20 4d 61  ans.** to use Ma
7680: 63 20 4f 53 20 58 20 73 74 79 6c 65 20 66 75 6c  c OS X style ful
7690: 6c 73 79 6e 63 20 69 6e 73 74 65 61 64 20 6f 66  lsync instead of
76a0: 20 66 73 79 6e 63 28 29 2e 0a 2a 2a 0a 2a 2a 20   fsync()..**.** 
76b0: 44 6f 20 6e 6f 74 20 63 6f 6e 66 75 73 65 20 74  Do not confuse t
76c0: 68 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e  he SQLITE_SYNC_N
76d0: 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c 49 54 45  ORMAL and SQLITE
76e0: 5f 53 59 4e 43 5f 46 55 4c 4c 20 66 6c 61 67 73  _SYNC_FULL flags
76f0: 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 5b 50 52  .** with the [PR
7700: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
7710: 5d 3d 4e 4f 52 4d 41 4c 20 61 6e 64 20 5b 50 52  ]=NORMAL and [PR
7720: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
7730: 5d 3d 46 55 4c 4c 0a 2a 2a 20 73 65 74 74 69 6e  ]=FULL.** settin
7740: 67 73 2e 20 20 54 68 65 20 5b 73 79 6e 63 68 72  gs.  The [synchr
7750: 6f 6e 6f 75 73 20 70 72 61 67 6d 61 5d 20 64 65  onous pragma] de
7760: 74 65 72 6d 69 6e 65 73 20 77 68 65 6e 20 63 61  termines when ca
7770: 6c 6c 73 20 74 6f 20 74 68 65 0a 2a 2a 20 78 53  lls to the.** xS
7780: 79 6e 63 20 56 46 53 20 6d 65 74 68 6f 64 20 6f  ync VFS method o
7790: 63 63 75 72 20 61 6e 64 20 61 70 70 6c 69 65 73  ccur and applies
77a0: 20 75 6e 69 66 6f 72 6d 6c 79 20 61 63 72 6f 73   uniformly acros
77b0: 73 20 61 6c 6c 20 70 6c 61 74 66 6f 72 6d 73 2e  s all platforms.
77c0: 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 53  .** The SQLITE_S
77d0: 59 4e 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53  YNC_NORMAL and S
77e0: 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20  QLITE_SYNC_FULL 
77f0: 66 6c 61 67 73 20 64 65 74 65 72 6d 69 6e 65 20  flags determine 
7800: 68 6f 77 0a 2a 2a 20 65 6e 65 72 67 65 74 69 63  how.** energetic
7810: 20 6f 72 20 72 69 67 6f 72 6f 75 73 20 6f 72 20   or rigorous or 
7820: 66 6f 72 63 65 66 75 6c 20 74 68 65 20 73 79 6e  forceful the syn
7830: 63 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 72 65  c operations are
7840: 20 61 6e 64 0a 2a 2a 20 6f 6e 6c 79 20 6d 61 6b   and.** only mak
7850: 65 20 61 20 64 69 66 66 65 72 65 6e 63 65 20 6f  e a difference o
7860: 6e 20 4d 61 63 20 4f 53 58 20 66 6f 72 20 74 68  n Mac OSX for th
7870: 65 20 64 65 66 61 75 6c 74 20 53 51 4c 69 74 65  e default SQLite
7880: 20 63 6f 64 65 2e 0a 2a 2a 20 28 54 68 69 72 64   code..** (Third
7890: 2d 70 61 72 74 79 20 56 46 53 20 69 6d 70 6c 65  -party VFS imple
78a0: 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 69 67 68 74  mentations might
78b0: 20 61 6c 73 6f 20 6d 61 6b 65 20 74 68 65 20 64   also make the d
78c0: 69 73 74 69 6e 63 74 69 6f 6e 0a 2a 2a 20 62 65  istinction.** be
78d0: 74 77 65 65 6e 20 53 51 4c 49 54 45 5f 53 59 4e  tween SQLITE_SYN
78e0: 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c  C_NORMAL and SQL
78f0: 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 2c 20 62  ITE_SYNC_FULL, b
7900: 75 74 20 61 6d 6f 6e 67 20 74 68 65 0a 2a 2a 20  ut among the.** 
7910: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
7920: 73 20 6e 61 74 69 76 65 6c 79 20 73 75 70 70 6f  s natively suppo
7930: 72 74 65 64 20 62 79 20 53 51 4c 69 74 65 2c 20  rted by SQLite, 
7940: 6f 6e 6c 79 20 4d 61 63 20 4f 53 58 0a 2a 2a 20  only Mac OSX.** 
7950: 63 61 72 65 73 20 61 62 6f 75 74 20 74 68 65 20  cares about the 
7960: 64 69 66 66 65 72 65 6e 63 65 2e 29 0a 2a 2f 0a  difference.).*/.
7970: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
7980: 59 4e 43 5f 4e 4f 52 4d 41 4c 20 20 20 20 20 20  YNC_NORMAL      
7990: 20 20 30 78 30 30 30 30 32 0a 23 64 65 66 69 6e    0x00002.#defin
79a0: 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55  e SQLITE_SYNC_FU
79b0: 4c 4c 20 20 20 20 20 20 20 20 20 20 30 78 30 30  LL          0x00
79c0: 30 30 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  003.#define SQLI
79d0: 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59  TE_SYNC_DATAONLY
79e0: 20 20 20 20 20 20 30 78 30 30 30 31 30 0a 0a 2f        0x00010../
79f0: 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4f  *.** CAPI3REF: O
7a00: 53 20 49 6e 74 65 72 66 61 63 65 20 4f 70 65 6e  S Interface Open
7a10: 20 46 69 6c 65 20 48 61 6e 64 6c 65 0a 2a 2a 0a   File Handle.**.
7a20: 2a 2a 20 41 6e 20 5b 73 71 6c 69 74 65 33 5f 66  ** An [sqlite3_f
7a30: 69 6c 65 5d 20 6f 62 6a 65 63 74 20 72 65 70 72  ile] object repr
7a40: 65 73 65 6e 74 73 20 61 6e 20 6f 70 65 6e 20 66  esents an open f
7a50: 69 6c 65 20 69 6e 20 74 68 65 20 0a 2a 2a 20 5b  ile in the .** [
7a60: 73 71 6c 69 74 65 33 5f 76 66 73 20 7c 20 4f 53  sqlite3_vfs | OS
7a70: 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72   interface layer
7a80: 5d 2e 20 20 49 6e 64 69 76 69 64 75 61 6c 20 4f  ].  Individual O
7a90: 53 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69  S interface.** i
7aa0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 77  mplementations w
7ab0: 69 6c 6c 0a 2a 2a 20 77 61 6e 74 20 74 6f 20 73  ill.** want to s
7ac0: 75 62 63 6c 61 73 73 20 74 68 69 73 20 6f 62 6a  ubclass this obj
7ad0: 65 63 74 20 62 79 20 61 70 70 65 6e 64 69 6e 67  ect by appending
7ae0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c   additional fiel
7af0: 64 73 0a 2a 2a 20 66 6f 72 20 74 68 65 69 72 20  ds.** for their 
7b00: 6f 77 6e 20 75 73 65 2e 20 20 54 68 65 20 70 4d  own use.  The pM
7b10: 65 74 68 6f 64 73 20 65 6e 74 72 79 20 69 73 20  ethods entry is 
7b20: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 0a  a pointer to an.
7b30: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  ** [sqlite3_io_m
7b40: 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 74  ethods] object t
7b50: 68 61 74 20 64 65 66 69 6e 65 73 20 6d 65 74 68  hat defines meth
7b60: 6f 64 73 20 66 6f 72 20 70 65 72 66 6f 72 6d 69  ods for performi
7b70: 6e 67 0a 2a 2a 20 49 2f 4f 20 6f 70 65 72 61 74  ng.** I/O operat
7b80: 69 6f 6e 73 20 6f 6e 20 74 68 65 20 6f 70 65 6e  ions on the open
7b90: 20 66 69 6c 65 2e 0a 2a 2f 0a 74 79 70 65 64 65   file..*/.typede
7ba0: 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  f struct sqlite3
7bb0: 5f 66 69 6c 65 20 73 71 6c 69 74 65 33 5f 66 69  _file sqlite3_fi
7bc0: 6c 65 3b 0a 73 74 72 75 63 74 20 73 71 6c 69 74  le;.struct sqlit
7bd0: 65 33 5f 66 69 6c 65 20 7b 0a 20 20 63 6f 6e 73  e3_file {.  cons
7be0: 74 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  t struct sqlite3
7bf0: 5f 69 6f 5f 6d 65 74 68 6f 64 73 20 2a 70 4d 65  _io_methods *pMe
7c00: 74 68 6f 64 73 3b 20 20 2f 2a 20 4d 65 74 68 6f  thods;  /* Metho
7c10: 64 73 20 66 6f 72 20 61 6e 20 6f 70 65 6e 20 66  ds for an open f
7c20: 69 6c 65 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a  ile */.};../*.**
7c30: 20 43 41 50 49 33 52 45 46 3a 20 4f 53 20 49 6e   CAPI3REF: OS In
7c40: 74 65 72 66 61 63 65 20 46 69 6c 65 20 56 69 72  terface File Vir
7c50: 74 75 61 6c 20 4d 65 74 68 6f 64 73 20 4f 62 6a  tual Methods Obj
7c60: 65 63 74 0a 2a 2a 0a 2a 2a 20 45 76 65 72 79 20  ect.**.** Every 
7c70: 66 69 6c 65 20 6f 70 65 6e 65 64 20 62 79 20 74  file opened by t
7c80: 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e  he [sqlite3_vfs.
7c90: 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 20 70 6f  xOpen] method po
7ca0: 70 75 6c 61 74 65 73 20 61 6e 0a 2a 2a 20 5b 73  pulates an.** [s
7cb0: 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a  qlite3_file] obj
7cc0: 65 63 74 20 28 6f 72 2c 20 6d 6f 72 65 20 63 6f  ect (or, more co
7cd0: 6d 6d 6f 6e 6c 79 2c 20 61 20 73 75 62 63 6c 61  mmonly, a subcla
7ce0: 73 73 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 73 71  ss of the.** [sq
7cf0: 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65  lite3_file] obje
7d00: 63 74 29 20 77 69 74 68 20 61 20 70 6f 69 6e 74  ct) with a point
7d10: 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63  er to an instanc
7d20: 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  e of this object
7d30: 2e 0a 2a 2a 20 54 68 69 73 20 6f 62 6a 65 63 74  ..** This object
7d40: 20 64 65 66 69 6e 65 73 20 74 68 65 20 6d 65 74   defines the met
7d50: 68 6f 64 73 20 75 73 65 64 20 74 6f 20 70 65 72  hods used to per
7d60: 66 6f 72 6d 20 76 61 72 69 6f 75 73 20 6f 70 65  form various ope
7d70: 72 61 74 69 6f 6e 73 0a 2a 2a 20 61 67 61 69 6e  rations.** again
7d80: 73 74 20 74 68 65 20 6f 70 65 6e 20 66 69 6c 65  st the open file
7d90: 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20   represented by 
7da0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  the [sqlite3_fil
7db0: 65 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a  e] object..**.**
7dc0: 20 49 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   If the [sqlite3
7dd0: 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 6d 65 74 68  _vfs.xOpen] meth
7de0: 6f 64 20 73 65 74 73 20 74 68 65 20 73 71 6c 69  od sets the sqli
7df0: 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64  te3_file.pMethod
7e00: 73 20 65 6c 65 6d 65 6e 74 20 0a 2a 2a 20 74 6f  s element .** to
7e10: 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 70 6f 69 6e   a non-NULL poin
7e20: 74 65 72 2c 20 74 68 65 6e 20 74 68 65 20 73 71  ter, then the sq
7e30: 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73  lite3_io_methods
7e40: 2e 78 43 6c 6f 73 65 20 6d 65 74 68 6f 64 0a 2a  .xClose method.*
7e50: 2a 20 6d 61 79 20 62 65 20 69 6e 76 6f 6b 65 64  * may be invoked
7e60: 20 65 76 65 6e 20 69 66 20 74 68 65 20 5b 73 71   even if the [sq
7e70: 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d  lite3_vfs.xOpen]
7e80: 20 72 65 70 6f 72 74 65 64 20 74 68 61 74 20 69   reported that i
7e90: 74 20 66 61 69 6c 65 64 2e 20 20 54 68 65 0a 2a  t failed.  The.*
7ea0: 2a 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 70 72  * only way to pr
7eb0: 65 76 65 6e 74 20 61 20 63 61 6c 6c 20 74 6f 20  event a call to 
7ec0: 78 43 6c 6f 73 65 20 66 6f 6c 6c 6f 77 69 6e 67  xClose following
7ed0: 20 61 20 66 61 69 6c 65 64 20 5b 73 71 6c 69 74   a failed [sqlit
7ee0: 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 0a 2a 2a  e3_vfs.xOpen].**
7ef0: 20 69 73 20 66 6f 72 20 74 68 65 20 5b 73 71 6c   is for the [sql
7f00: 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20  ite3_vfs.xOpen] 
7f10: 74 6f 20 73 65 74 20 74 68 65 20 73 71 6c 69 74  to set the sqlit
7f20: 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73  e3_file.pMethods
7f30: 20 65 6c 65 6d 65 6e 74 0a 2a 2a 20 74 6f 20 4e   element.** to N
7f40: 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66  ULL..**.** The f
7f50: 6c 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f  lags argument to
7f60: 20 78 53 79 6e 63 20 6d 61 79 20 62 65 20 6f 6e   xSync may be on
7f70: 65 20 6f 66 20 5b 53 51 4c 49 54 45 5f 53 59 4e  e of [SQLITE_SYN
7f80: 43 5f 4e 4f 52 4d 41 4c 5d 20 6f 72 0a 2a 2a 20  C_NORMAL] or.** 
7f90: 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c  [SQLITE_SYNC_FUL
7fa0: 4c 5d 2e 20 20 54 68 65 20 66 69 72 73 74 20 63  L].  The first c
7fb0: 68 6f 69 63 65 20 69 73 20 74 68 65 20 6e 6f 72  hoice is the nor
7fc0: 6d 61 6c 20 66 73 79 6e 63 28 29 2e 0a 2a 2a 20  mal fsync()..** 
7fd0: 54 68 65 20 73 65 63 6f 6e 64 20 63 68 6f 69 63  The second choic
7fe0: 65 20 69 73 20 61 20 4d 61 63 20 4f 53 20 58 20  e is a Mac OS X 
7ff0: 73 74 79 6c 65 20 66 75 6c 6c 73 79 6e 63 2e 20  style fullsync. 
8000: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 53 59 4e   The [SQLITE_SYN
8010: 43 5f 44 41 54 41 4f 4e 4c 59 5d 0a 2a 2a 20 66  C_DATAONLY].** f
8020: 6c 61 67 20 6d 61 79 20 62 65 20 4f 52 65 64 20  lag may be ORed 
8030: 69 6e 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74  in to indicate t
8040: 68 61 74 20 6f 6e 6c 79 20 74 68 65 20 64 61 74  hat only the dat
8050: 61 20 6f 66 20 74 68 65 20 66 69 6c 65 0a 2a 2a  a of the file.**
8060: 20 61 6e 64 20 6e 6f 74 20 69 74 73 20 69 6e 6f   and not its ino
8070: 64 65 20 6e 65 65 64 73 20 74 6f 20 62 65 20 73  de needs to be s
8080: 79 6e 63 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  ynced..**.** The
8090: 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 20   integer values 
80a0: 74 6f 20 78 4c 6f 63 6b 28 29 20 61 6e 64 20 78  to xLock() and x
80b0: 55 6e 6c 6f 63 6b 28 29 20 61 72 65 20 6f 6e 65  Unlock() are one
80c0: 20 6f 66 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c   of.** <ul>.** <
80d0: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b  li> [SQLITE_LOCK
80e0: 5f 4e 4f 4e 45 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20  _NONE],.** <li> 
80f0: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41  [SQLITE_LOCK_SHA
8100: 52 45 44 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  RED],.** <li> [S
8110: 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52  QLITE_LOCK_RESER
8120: 56 45 44 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  VED],.** <li> [S
8130: 51 4c 49 54 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49  QLITE_LOCK_PENDI
8140: 4e 47 5d 2c 20 6f 72 0a 2a 2a 20 3c 6c 69 3e 20  NG], or.** <li> 
8150: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43  [SQLITE_LOCK_EXC
8160: 4c 55 53 49 56 45 5d 2e 0a 2a 2a 20 3c 2f 75 6c  LUSIVE]..** </ul
8170: 3e 0a 2a 2a 20 78 4c 6f 63 6b 28 29 20 69 6e 63  >.** xLock() inc
8180: 72 65 61 73 65 73 20 74 68 65 20 6c 6f 63 6b 2e  reases the lock.
8190: 20 78 55 6e 6c 6f 63 6b 28 29 20 64 65 63 72 65   xUnlock() decre
81a0: 61 73 65 73 20 74 68 65 20 6c 6f 63 6b 2e 0a 2a  ases the lock..*
81b0: 2a 20 54 68 65 20 78 43 68 65 63 6b 52 65 73 65  * The xCheckRese
81c0: 72 76 65 64 4c 6f 63 6b 28 29 20 6d 65 74 68 6f  rvedLock() metho
81d0: 64 20 63 68 65 63 6b 73 20 77 68 65 74 68 65 72  d checks whether
81e0: 20 61 6e 79 20 64 61 74 61 62 61 73 65 20 63 6f   any database co
81f0: 6e 6e 65 63 74 69 6f 6e 2c 0a 2a 2a 20 65 69 74  nnection,.** eit
8200: 68 65 72 20 69 6e 20 74 68 69 73 20 70 72 6f 63  her in this proc
8210: 65 73 73 20 6f 72 20 69 6e 20 73 6f 6d 65 20 6f  ess or in some o
8220: 74 68 65 72 20 70 72 6f 63 65 73 73 2c 20 69 73  ther process, is
8230: 20 68 6f 6c 64 69 6e 67 20 61 20 52 45 53 45 52   holding a RESER
8240: 56 45 44 2c 0a 2a 2a 20 50 45 4e 44 49 4e 47 2c  VED,.** PENDING,
8250: 20 6f 72 20 45 58 43 4c 55 53 49 56 45 20 6c 6f   or EXCLUSIVE lo
8260: 63 6b 20 6f 6e 20 74 68 65 20 66 69 6c 65 2e 20  ck on the file. 
8270: 20 49 74 20 72 65 74 75 72 6e 73 20 74 72 75 65   It returns true
8280: 0a 2a 2a 20 69 66 20 73 75 63 68 20 61 20 6c 6f  .** if such a lo
8290: 63 6b 20 65 78 69 73 74 73 20 61 6e 64 20 66 61  ck exists and fa
82a0: 6c 73 65 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a  lse otherwise..*
82b0: 2a 0a 2a 2a 20 54 68 65 20 78 46 69 6c 65 43 6f  *.** The xFileCo
82c0: 6e 74 72 6f 6c 28 29 20 6d 65 74 68 6f 64 20 69  ntrol() method i
82d0: 73 20 61 20 67 65 6e 65 72 69 63 20 69 6e 74 65  s a generic inte
82e0: 72 66 61 63 65 20 74 68 61 74 20 61 6c 6c 6f 77  rface that allow
82f0: 73 20 63 75 73 74 6f 6d 0a 2a 2a 20 56 46 53 20  s custom.** VFS 
8300: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
8310: 74 6f 20 64 69 72 65 63 74 6c 79 20 63 6f 6e 74  to directly cont
8320: 72 6f 6c 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65  rol an open file
8330: 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 73   using the.** [s
8340: 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
8350: 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65  rol()] interface
8360: 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 22 6f  .  The second "o
8370: 70 22 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  p" argument is a
8380: 6e 0a 2a 2a 20 69 6e 74 65 67 65 72 20 6f 70 63  n.** integer opc
8390: 6f 64 65 2e 20 20 54 68 65 20 74 68 69 72 64 20  ode.  The third 
83a0: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 67 65  argument is a ge
83b0: 6e 65 72 69 63 20 70 6f 69 6e 74 65 72 20 69 6e  neric pointer in
83c0: 74 65 6e 64 65 64 20 74 6f 0a 2a 2a 20 70 6f 69  tended to.** poi
83d0: 6e 74 20 74 6f 20 61 20 73 74 72 75 63 74 75 72  nt to a structur
83e0: 65 20 74 68 61 74 20 6d 61 79 20 63 6f 6e 74 61  e that may conta
83f0: 69 6e 20 61 72 67 75 6d 65 6e 74 73 20 6f 72 20  in arguments or 
8400: 73 70 61 63 65 20 69 6e 20 77 68 69 63 68 20 74  space in which t
8410: 6f 0a 2a 2a 20 77 72 69 74 65 20 72 65 74 75 72  o.** write retur
8420: 6e 20 76 61 6c 75 65 73 2e 20 20 50 6f 74 65 6e  n values.  Poten
8430: 74 69 61 6c 20 75 73 65 73 20 66 6f 72 20 78 46  tial uses for xF
8440: 69 6c 65 43 6f 6e 74 72 6f 6c 28 29 20 6d 69 67  ileControl() mig
8450: 68 74 20 62 65 0a 2a 2a 20 66 75 6e 63 74 69 6f  ht be.** functio
8460: 6e 73 20 74 6f 20 65 6e 61 62 6c 65 20 62 6c 6f  ns to enable blo
8470: 63 6b 69 6e 67 20 6c 6f 63 6b 73 20 77 69 74 68  cking locks with
8480: 20 74 69 6d 65 6f 75 74 73 2c 20 74 6f 20 63 68   timeouts, to ch
8490: 61 6e 67 65 20 74 68 65 0a 2a 2a 20 6c 6f 63 6b  ange the.** lock
84a0: 69 6e 67 20 73 74 72 61 74 65 67 79 20 28 66 6f  ing strategy (fo
84b0: 72 20 65 78 61 6d 70 6c 65 20 74 6f 20 75 73 65  r example to use
84c0: 20 64 6f 74 2d 66 69 6c 65 20 6c 6f 63 6b 73 29   dot-file locks)
84d0: 2c 20 74 6f 20 69 6e 71 75 69 72 65 0a 2a 2a 20  , to inquire.** 
84e0: 61 62 6f 75 74 20 74 68 65 20 73 74 61 74 75 73  about the status
84f0: 20 6f 66 20 61 20 6c 6f 63 6b 2c 20 6f 72 20 74   of a lock, or t
8500: 6f 20 62 72 65 61 6b 20 73 74 61 6c 65 20 6c 6f  o break stale lo
8510: 63 6b 73 2e 20 20 54 68 65 20 53 51 4c 69 74 65  cks.  The SQLite
8520: 0a 2a 2a 20 63 6f 72 65 20 72 65 73 65 72 76 65  .** core reserve
8530: 73 20 61 6c 6c 20 6f 70 63 6f 64 65 73 20 6c 65  s all opcodes le
8540: 73 73 20 74 68 61 6e 20 31 30 30 20 66 6f 72 20  ss than 100 for 
8550: 69 74 73 20 6f 77 6e 20 75 73 65 2e 0a 2a 2a 20  its own use..** 
8560: 41 20 5b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  A [file control 
8570: 6f 70 63 6f 64 65 73 20 7c 20 6c 69 73 74 20 6f  opcodes | list o
8580: 66 20 6f 70 63 6f 64 65 73 5d 20 6c 65 73 73 20  f opcodes] less 
8590: 74 68 61 6e 20 31 30 30 20 69 73 20 61 76 61 69  than 100 is avai
85a0: 6c 61 62 6c 65 2e 0a 2a 2a 20 41 70 70 6c 69 63  lable..** Applic
85b0: 61 74 69 6f 6e 73 20 74 68 61 74 20 64 65 66 69  ations that defi
85c0: 6e 65 20 61 20 63 75 73 74 6f 6d 20 78 46 69 6c  ne a custom xFil
85d0: 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20  eControl method 
85e0: 73 68 6f 75 6c 64 20 75 73 65 20 6f 70 63 6f 64  should use opcod
85f0: 65 73 0a 2a 2a 20 67 72 65 61 74 65 72 20 74 68  es.** greater th
8600: 61 6e 20 31 30 30 20 74 6f 20 61 76 6f 69 64 20  an 100 to avoid 
8610: 63 6f 6e 66 6c 69 63 74 73 2e 20 20 56 46 53 20  conflicts.  VFS 
8620: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
8630: 73 68 6f 75 6c 64 0a 2a 2a 20 72 65 74 75 72 6e  should.** return
8640: 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e   [SQLITE_NOTFOUN
8650: 44 5d 20 66 6f 72 20 66 69 6c 65 20 63 6f 6e 74  D] for file cont
8660: 72 6f 6c 20 6f 70 63 6f 64 65 73 20 74 68 61 74  rol opcodes that
8670: 20 74 68 65 79 20 64 6f 20 6e 6f 74 0a 2a 2a 20   they do not.** 
8680: 72 65 63 6f 67 6e 69 7a 65 2e 0a 2a 2a 0a 2a 2a  recognize..**.**
8690: 20 54 68 65 20 78 53 65 63 74 6f 72 53 69 7a 65   The xSectorSize
86a0: 28 29 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  () method return
86b0: 73 20 74 68 65 20 73 65 63 74 6f 72 20 73 69 7a  s the sector siz
86c0: 65 20 6f 66 20 74 68 65 0a 2a 2a 20 64 65 76 69  e of the.** devi
86d0: 63 65 20 74 68 61 74 20 75 6e 64 65 72 6c 69 65  ce that underlie
86e0: 73 20 74 68 65 20 66 69 6c 65 2e 20 20 54 68 65  s the file.  The
86f0: 20 73 65 63 74 6f 72 20 73 69 7a 65 20 69 73 20   sector size is 
8700: 74 68 65 0a 2a 2a 20 6d 69 6e 69 6d 75 6d 20 77  the.** minimum w
8710: 72 69 74 65 20 74 68 61 74 20 63 61 6e 20 62 65  rite that can be
8720: 20 70 65 72 66 6f 72 6d 65 64 20 77 69 74 68 6f   performed witho
8730: 75 74 20 64 69 73 74 75 72 62 69 6e 67 0a 2a 2a  ut disturbing.**
8740: 20 6f 74 68 65 72 20 62 79 74 65 73 20 69 6e 20   other bytes in 
8750: 74 68 65 20 66 69 6c 65 2e 20 20 54 68 65 20 78  the file.  The x
8760: 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72 69  DeviceCharacteri
8770: 73 74 69 63 73 28 29 0a 2a 2a 20 6d 65 74 68 6f  stics().** metho
8780: 64 20 72 65 74 75 72 6e 73 20 61 20 62 69 74 20  d returns a bit 
8790: 76 65 63 74 6f 72 20 64 65 73 63 72 69 62 69 6e  vector describin
87a0: 67 20 62 65 68 61 76 69 6f 72 73 20 6f 66 20 74  g behaviors of t
87b0: 68 65 0a 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67  he.** underlying
87c0: 20 64 65 76 69 63 65 3a 0a 2a 2a 0a 2a 2a 20 3c   device:.**.** <
87d0: 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  ul>.** <li> [SQL
87e0: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
87f0: 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54  ].** <li> [SQLIT
8800: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 35 31  E_IOCAP_ATOMIC51
8810: 32 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  2].** <li> [SQLI
8820: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31  TE_IOCAP_ATOMIC1
8830: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
8840: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32  TE_IOCAP_ATOMIC2
8850: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
8860: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 34  TE_IOCAP_ATOMIC4
8870: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
8880: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 38  TE_IOCAP_ATOMIC8
8890: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
88a0: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31  TE_IOCAP_ATOMIC1
88b0: 36 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  6K].** <li> [SQL
88c0: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
88d0: 33 32 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  32K].** <li> [SQ
88e0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
88f0: 43 36 34 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  C64K].** <li> [S
8900: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46 45  QLITE_IOCAP_SAFE
8910: 5f 41 50 50 45 4e 44 5d 0a 2a 2a 20 3c 6c 69 3e  _APPEND].** <li>
8920: 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53   [SQLITE_IOCAP_S
8930: 45 51 55 45 4e 54 49 41 4c 5d 0a 2a 2a 20 3c 6c  EQUENTIAL].** <l
8940: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
8950: 5f 55 4e 44 45 4c 45 54 41 42 4c 45 5f 57 48 45  _UNDELETABLE_WHE
8960: 4e 5f 4f 50 45 4e 5d 0a 2a 2a 20 3c 6c 69 3e 20  N_OPEN].** <li> 
8970: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f  [SQLITE_IOCAP_PO
8980: 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54  WERSAFE_OVERWRIT
8990: 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  E].** <li> [SQLI
89a0: 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42  TE_IOCAP_IMMUTAB
89b0: 4c 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  LE].** <li> [SQL
89c0: 49 54 45 5f 49 4f 43 41 50 5f 42 41 54 43 48 5f  ITE_IOCAP_BATCH_
89d0: 41 54 4f 4d 49 43 5d 0a 2a 2a 20 3c 2f 75 6c 3e  ATOMIC].** </ul>
89e0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54  .**.** The SQLIT
89f0: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 20 70  E_IOCAP_ATOMIC p
8a00: 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68  roperty means th
8a10: 61 74 20 61 6c 6c 20 77 72 69 74 65 73 20 6f 66  at all writes of
8a20: 0a 2a 2a 20 61 6e 79 20 73 69 7a 65 20 61 72 65  .** any size are
8a30: 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53 51   atomic.  The SQ
8a40: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
8a50: 43 6e 6e 6e 20 76 61 6c 75 65 73 0a 2a 2a 20 6d  Cnnn values.** m
8a60: 65 61 6e 20 74 68 61 74 20 77 72 69 74 65 73 20  ean that writes 
8a70: 6f 66 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 61  of blocks that a
8a80: 72 65 20 6e 6e 6e 20 62 79 74 65 73 20 69 6e 20  re nnn bytes in 
8a90: 73 69 7a 65 20 61 6e 64 0a 2a 2a 20 61 72 65 20  size and.** are 
8aa0: 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 61 64  aligned to an ad
8ab0: 64 72 65 73 73 20 77 68 69 63 68 20 69 73 20 61  dress which is a
8ac0: 6e 20 69 6e 74 65 67 65 72 20 6d 75 6c 74 69 70  n integer multip
8ad0: 6c 65 20 6f 66 0a 2a 2a 20 6e 6e 6e 20 61 72 65  le of.** nnn are
8ae0: 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53 51   atomic.  The SQ
8af0: 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f  LITE_IOCAP_SAFE_
8b00: 41 50 50 45 4e 44 20 76 61 6c 75 65 20 6d 65 61  APPEND value mea
8b10: 6e 73 0a 2a 2a 20 74 68 61 74 20 77 68 65 6e 20  ns.** that when 
8b20: 64 61 74 61 20 69 73 20 61 70 70 65 6e 64 65 64  data is appended
8b30: 20 74 6f 20 61 20 66 69 6c 65 2c 20 74 68 65 20   to a file, the 
8b40: 64 61 74 61 20 69 73 20 61 70 70 65 6e 64 65 64  data is appended
8b50: 0a 2a 2a 20 66 69 72 73 74 20 74 68 65 6e 20 74  .** first then t
8b60: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 66  he size of the f
8b70: 69 6c 65 20 69 73 20 65 78 74 65 6e 64 65 64 2c  ile is extended,
8b80: 20 6e 65 76 65 72 20 74 68 65 20 6f 74 68 65 72   never the other
8b90: 0a 2a 2a 20 77 61 79 20 61 72 6f 75 6e 64 2e 20  .** way around. 
8ba0: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41   The SQLITE_IOCA
8bb0: 50 5f 53 45 51 55 45 4e 54 49 41 4c 20 70 72 6f  P_SEQUENTIAL pro
8bc0: 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61 74  perty means that
8bd0: 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  .** information 
8be0: 69 73 20 77 72 69 74 74 65 6e 20 74 6f 20 64 69  is written to di
8bf0: 73 6b 20 69 6e 20 74 68 65 20 73 61 6d 65 20 6f  sk in the same o
8c00: 72 64 65 72 20 61 73 20 63 61 6c 6c 73 0a 2a 2a  rder as calls.**
8c10: 20 74 6f 20 78 57 72 69 74 65 28 29 2e 0a 2a 2a   to xWrite()..**
8c20: 0a 2a 2a 20 49 66 20 78 52 65 61 64 28 29 20 72  .** If xRead() r
8c30: 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 49 4f  eturns SQLITE_IO
8c40: 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20 69  ERR_SHORT_READ i
8c50: 74 20 6d 75 73 74 20 61 6c 73 6f 20 66 69 6c 6c  t must also fill
8c60: 0a 2a 2a 20 69 6e 20 74 68 65 20 75 6e 72 65 61  .** in the unrea
8c70: 64 20 70 6f 72 74 69 6f 6e 73 20 6f 66 20 74 68  d portions of th
8c80: 65 20 62 75 66 66 65 72 20 77 69 74 68 20 7a 65  e buffer with ze
8c90: 72 6f 73 2e 20 20 41 20 56 46 53 20 74 68 61 74  ros.  A VFS that
8ca0: 0a 2a 2a 20 66 61 69 6c 73 20 74 6f 20 7a 65 72  .** fails to zer
8cb0: 6f 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72 65 61  o-fill short rea
8cc0: 64 73 20 6d 69 67 68 74 20 73 65 65 6d 20 74 6f  ds might seem to
8cd0: 20 77 6f 72 6b 2e 20 20 48 6f 77 65 76 65 72 2c   work.  However,
8ce0: 0a 2a 2a 20 66 61 69 6c 75 72 65 20 74 6f 20 7a  .** failure to z
8cf0: 65 72 6f 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72  ero-fill short r
8d00: 65 61 64 73 20 77 69 6c 6c 20 65 76 65 6e 74 75  eads will eventu
8d10: 61 6c 6c 79 20 6c 65 61 64 20 74 6f 0a 2a 2a 20  ally lead to.** 
8d20: 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74  database corrupt
8d30: 69 6f 6e 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  ion..*/.typedef 
8d40: 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
8d50: 6f 5f 6d 65 74 68 6f 64 73 20 73 71 6c 69 74 65  o_methods sqlite
8d60: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 3b 0a 73 74  3_io_methods;.st
8d70: 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f  ruct sqlite3_io_
8d80: 6d 65 74 68 6f 64 73 20 7b 0a 20 20 69 6e 74 20  methods {.  int 
8d90: 69 56 65 72 73 69 6f 6e 3b 0a 20 20 69 6e 74 20  iVersion;.  int 
8da0: 28 2a 78 43 6c 6f 73 65 29 28 73 71 6c 69 74 65  (*xClose)(sqlite
8db0: 33 5f 66 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20  3_file*);.  int 
8dc0: 28 2a 78 52 65 61 64 29 28 73 71 6c 69 74 65 33  (*xRead)(sqlite3
8dd0: 5f 66 69 6c 65 2a 2c 20 76 6f 69 64 2a 2c 20 69  _file*, void*, i
8de0: 6e 74 20 69 41 6d 74 2c 20 73 71 6c 69 74 65 33  nt iAmt, sqlite3
8df0: 5f 69 6e 74 36 34 20 69 4f 66 73 74 29 3b 0a 20  _int64 iOfst);. 
8e00: 20 69 6e 74 20 28 2a 78 57 72 69 74 65 29 28 73   int (*xWrite)(s
8e10: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 63 6f  qlite3_file*, co
8e20: 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 20 69  nst void*, int i
8e30: 41 6d 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  Amt, sqlite3_int
8e40: 36 34 20 69 4f 66 73 74 29 3b 0a 20 20 69 6e 74  64 iOfst);.  int
8e50: 20 28 2a 78 54 72 75 6e 63 61 74 65 29 28 73 71   (*xTruncate)(sq
8e60: 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c  lite3_file*, sql
8e70: 69 74 65 33 5f 69 6e 74 36 34 20 73 69 7a 65 29  ite3_int64 size)
8e80: 3b 0a 20 20 69 6e 74 20 28 2a 78 53 79 6e 63 29  ;.  int (*xSync)
8e90: 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20  (sqlite3_file*, 
8ea0: 69 6e 74 20 66 6c 61 67 73 29 3b 0a 20 20 69 6e  int flags);.  in
8eb0: 74 20 28 2a 78 46 69 6c 65 53 69 7a 65 29 28 73  t (*xFileSize)(s
8ec0: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71  qlite3_file*, sq
8ed0: 6c 69 74 65 33 5f 69 6e 74 36 34 20 2a 70 53 69  lite3_int64 *pSi
8ee0: 7a 65 29 3b 0a 20 20 69 6e 74 20 28 2a 78 4c 6f  ze);.  int (*xLo
8ef0: 63 6b 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65  ck)(sqlite3_file
8f00: 2a 2c 20 69 6e 74 29 3b 0a 20 20 69 6e 74 20 28  *, int);.  int (
8f10: 2a 78 55 6e 6c 6f 63 6b 29 28 73 71 6c 69 74 65  *xUnlock)(sqlite
8f20: 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 29 3b 0a 20  3_file*, int);. 
8f30: 20 69 6e 74 20 28 2a 78 43 68 65 63 6b 52 65 73   int (*xCheckRes
8f40: 65 72 76 65 64 4c 6f 63 6b 29 28 73 71 6c 69 74  ervedLock)(sqlit
8f50: 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 2a 70  e3_file*, int *p
8f60: 52 65 73 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28  ResOut);.  int (
8f70: 2a 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 29 28 73  *xFileControl)(s
8f80: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e  qlite3_file*, in
8f90: 74 20 6f 70 2c 20 76 6f 69 64 20 2a 70 41 72 67  t op, void *pArg
8fa0: 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 65 63 74  );.  int (*xSect
8fb0: 6f 72 53 69 7a 65 29 28 73 71 6c 69 74 65 33 5f  orSize)(sqlite3_
8fc0: 66 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a  file*);.  int (*
8fd0: 78 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72  xDeviceCharacter
8fe0: 69 73 74 69 63 73 29 28 73 71 6c 69 74 65 33 5f  istics)(sqlite3_
8ff0: 66 69 6c 65 2a 29 3b 0a 20 20 2f 2a 20 4d 65 74  file*);.  /* Met
9000: 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 76  hods above are v
9010: 61 6c 69 64 20 66 6f 72 20 76 65 72 73 69 6f 6e  alid for version
9020: 20 31 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53   1 */.  int (*xS
9030: 68 6d 4d 61 70 29 28 73 71 6c 69 74 65 33 5f 66  hmMap)(sqlite3_f
9040: 69 6c 65 2a 2c 20 69 6e 74 20 69 50 67 2c 20 69  ile*, int iPg, i
9050: 6e 74 20 70 67 73 7a 2c 20 69 6e 74 2c 20 76 6f  nt pgsz, int, vo
9060: 69 64 20 76 6f 6c 61 74 69 6c 65 2a 2a 29 3b 0a  id volatile**);.
9070: 20 20 69 6e 74 20 28 2a 78 53 68 6d 4c 6f 63 6b    int (*xShmLock
9080: 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c  )(sqlite3_file*,
9090: 20 69 6e 74 20 6f 66 66 73 65 74 2c 20 69 6e 74   int offset, int
90a0: 20 6e 2c 20 69 6e 74 20 66 6c 61 67 73 29 3b 0a   n, int flags);.
90b0: 20 20 76 6f 69 64 20 28 2a 78 53 68 6d 42 61 72    void (*xShmBar
90c0: 72 69 65 72 29 28 73 71 6c 69 74 65 33 5f 66 69  rier)(sqlite3_fi
90d0: 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53  le*);.  int (*xS
90e0: 68 6d 55 6e 6d 61 70 29 28 73 71 6c 69 74 65 33  hmUnmap)(sqlite3
90f0: 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 64 65 6c 65  _file*, int dele
9100: 74 65 46 6c 61 67 29 3b 0a 20 20 2f 2a 20 4d 65  teFlag);.  /* Me
9110: 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20  thods above are 
9120: 76 61 6c 69 64 20 66 6f 72 20 76 65 72 73 69 6f  valid for versio
9130: 6e 20 32 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  n 2 */.  int (*x
9140: 46 65 74 63 68 29 28 73 71 6c 69 74 65 33 5f 66  Fetch)(sqlite3_f
9150: 69 6c 65 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e  ile*, sqlite3_in
9160: 74 36 34 20 69 4f 66 73 74 2c 20 69 6e 74 20 69  t64 iOfst, int i
9170: 41 6d 74 2c 20 76 6f 69 64 20 2a 2a 70 70 29 3b  Amt, void **pp);
9180: 0a 20 20 69 6e 74 20 28 2a 78 55 6e 66 65 74 63  .  int (*xUnfetc
9190: 68 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  h)(sqlite3_file*
91a0: 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  , sqlite3_int64 
91b0: 69 4f 66 73 74 2c 20 76 6f 69 64 20 2a 70 29 3b  iOfst, void *p);
91c0: 0a 20 20 2f 2a 20 4d 65 74 68 6f 64 73 20 61 62  .  /* Methods ab
91d0: 6f 76 65 20 61 72 65 20 76 61 6c 69 64 20 66 6f  ove are valid fo
91e0: 72 20 76 65 72 73 69 6f 6e 20 33 20 2a 2f 0a 20  r version 3 */. 
91f0: 20 2f 2a 20 41 64 64 69 74 69 6f 6e 61 6c 20 6d   /* Additional m
9200: 65 74 68 6f 64 73 20 6d 61 79 20 62 65 20 61 64  ethods may be ad
9210: 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65  ded in future re
9220: 6c 65 61 73 65 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a  leases */.};../*
9230: 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 74  .** CAPI3REF: St
9240: 61 6e 64 61 72 64 20 46 69 6c 65 20 43 6f 6e 74  andard File Cont
9250: 72 6f 6c 20 4f 70 63 6f 64 65 73 0a 2a 2a 20 4b  rol Opcodes.** K
9260: 45 59 57 4f 52 44 53 3a 20 7b 66 69 6c 65 20 63  EYWORDS: {file c
9270: 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64 65 73 7d 20  ontrol opcodes} 
9280: 7b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70  {file control op
9290: 63 6f 64 65 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73  code}.**.** Thes
92a0: 65 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61  e integer consta
92b0: 6e 74 73 20 61 72 65 20 6f 70 63 6f 64 65 73 20  nts are opcodes 
92c0: 66 6f 72 20 74 68 65 20 78 46 69 6c 65 43 6f 6e  for the xFileCon
92d0: 74 72 6f 6c 20 6d 65 74 68 6f 64 0a 2a 2a 20 6f  trol method.** o
92e0: 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  f the [sqlite3_i
92f0: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
9300: 74 20 61 6e 64 20 66 6f 72 20 74 68 65 20 5b 73  t and for the [s
9310: 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
9320: 72 6f 6c 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66  rol()].** interf
9330: 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  ace..**.** <ul>.
9340: 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
9350: 46 43 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d  FCNTL_LOCKSTATE]
9360: 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
9370: 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45  _FCNTL_LOCKSTATE
9380: 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64  ] opcode is used
9390: 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 20   for debugging. 
93a0: 20 54 68 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20   This.** opcode 
93b0: 63 61 75 73 65 73 20 74 68 65 20 78 46 69 6c 65  causes the xFile
93c0: 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74  Control method t
93d0: 6f 20 77 72 69 74 65 20 74 68 65 20 63 75 72 72  o write the curr
93e0: 65 6e 74 20 73 74 61 74 65 20 6f 66 0a 2a 2a 20  ent state of.** 
93f0: 74 68 65 20 6c 6f 63 6b 20 28 6f 6e 65 20 6f 66  the lock (one of
9400: 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f   [SQLITE_LOCK_NO
9410: 4e 45 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43  NE], [SQLITE_LOC
9420: 4b 5f 53 48 41 52 45 44 5d 2c 0a 2a 2a 20 5b 53  K_SHARED],.** [S
9430: 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52  QLITE_LOCK_RESER
9440: 56 45 44 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f  VED], [SQLITE_LO
9450: 43 4b 5f 50 45 4e 44 49 4e 47 5d 2c 20 6f 72 20  CK_PENDING], or 
9460: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43  [SQLITE_LOCK_EXC
9470: 4c 55 53 49 56 45 5d 29 0a 2a 2a 20 69 6e 74 6f  LUSIVE]).** into
9480: 20 61 6e 20 69 6e 74 65 67 65 72 20 74 68 61 74   an integer that
9490: 20 74 68 65 20 70 41 72 67 20 61 72 67 75 6d 65   the pArg argume
94a0: 6e 74 20 70 6f 69 6e 74 73 20 74 6f 2e 20 54 68  nt points to. Th
94b0: 69 73 20 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a  is capability.**
94c0: 20 69 73 20 75 73 65 64 20 64 75 72 69 6e 67 20   is used during 
94d0: 74 65 73 74 69 6e 67 20 61 6e 64 20 69 73 20 6f  testing and is o
94e0: 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 77 68  nly available wh
94f0: 65 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 54 45  en the SQLITE_TE
9500: 53 54 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  ST.** compile-ti
9510: 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  me option is use
9520: 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  d..**.** <li>[[S
9530: 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45  QLITE_FCNTL_SIZE
9540: 5f 48 49 4e 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b  _HINT]].** The [
9550: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a  SQLITE_FCNTL_SIZ
9560: 45 5f 48 49 4e 54 5d 20 6f 70 63 6f 64 65 20 69  E_HINT] opcode i
9570: 73 20 75 73 65 64 20 62 79 20 53 51 4c 69 74 65  s used by SQLite
9580: 20 74 6f 20 67 69 76 65 20 74 68 65 20 56 46 53   to give the VFS
9590: 0a 2a 2a 20 6c 61 79 65 72 20 61 20 68 69 6e 74  .** layer a hint
95a0: 20 6f 66 20 68 6f 77 20 6c 61 72 67 65 20 74 68   of how large th
95b0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
95c0: 77 69 6c 6c 20 67 72 6f 77 20 74 6f 20 62 65 20  will grow to be 
95d0: 64 75 72 69 6e 67 20 74 68 65 0a 2a 2a 20 63 75  during the.** cu
95e0: 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f  rrent transactio
95f0: 6e 2e 20 20 54 68 69 73 20 68 69 6e 74 20 69 73  n.  This hint is
9600: 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 64 20   not guaranteed 
9610: 74 6f 20 62 65 20 61 63 63 75 72 61 74 65 20 62  to be accurate b
9620: 75 74 20 69 74 0a 2a 2a 20 69 73 20 6f 66 74 65  ut it.** is ofte
9630: 6e 20 63 6c 6f 73 65 2e 20 20 54 68 65 20 75 6e  n close.  The un
9640: 64 65 72 6c 79 69 6e 67 20 56 46 53 20 6d 69 67  derlying VFS mig
9650: 68 74 20 63 68 6f 6f 73 65 20 74 6f 20 70 72 65  ht choose to pre
9660: 61 6c 6c 6f 63 61 74 65 20 64 61 74 61 62 61 73  allocate databas
9670: 65 0a 2a 2a 20 66 69 6c 65 20 73 70 61 63 65 20  e.** file space 
9680: 62 61 73 65 64 20 6f 6e 20 74 68 69 73 20 68 69  based on this hi
9690: 6e 74 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 68  nt in order to h
96a0: 65 6c 70 20 77 72 69 74 65 73 20 74 6f 20 74 68  elp writes to th
96b0: 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 66 69  e database.** fi
96c0: 6c 65 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 2a  le run faster..*
96d0: 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
96e0: 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49  E_FCNTL_CHUNK_SI
96f0: 5a 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ZE]].** The [SQL
9700: 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f  ITE_FCNTL_CHUNK_
9710: 53 49 5a 45 5d 20 6f 70 63 6f 64 65 20 69 73 20  SIZE] opcode is 
9720: 75 73 65 64 20 74 6f 20 72 65 71 75 65 73 74 20  used to request 
9730: 74 68 61 74 20 74 68 65 20 56 46 53 0a 2a 2a 20  that the VFS.** 
9740: 65 78 74 65 6e 64 73 20 61 6e 64 20 74 72 75 6e  extends and trun
9750: 63 61 74 65 73 20 74 68 65 20 64 61 74 61 62 61  cates the databa
9760: 73 65 20 66 69 6c 65 20 69 6e 20 63 68 75 6e 6b  se file in chunk
9770: 73 20 6f 66 20 61 20 73 69 7a 65 20 73 70 65 63  s of a size spec
9780: 69 66 69 65 64 0a 2a 2a 20 62 79 20 74 68 65 20  ified.** by the 
9790: 75 73 65 72 2e 20 54 68 65 20 66 6f 75 72 74 68  user. The fourth
97a0: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71   argument to [sq
97b0: 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
97c0: 6f 6c 28 29 5d 20 73 68 6f 75 6c 64 20 0a 2a 2a  ol()] should .**
97d0: 20 70 6f 69 6e 74 20 74 6f 20 61 6e 20 69 6e 74   point to an int
97e0: 65 67 65 72 20 28 74 79 70 65 20 69 6e 74 29 20  eger (type int) 
97f0: 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e  containing the n
9800: 65 77 20 63 68 75 6e 6b 2d 73 69 7a 65 20 74 6f  ew chunk-size to
9810: 20 75 73 65 0a 2a 2a 20 66 6f 72 20 74 68 65 20   use.** for the 
9820: 6e 6f 6d 69 6e 61 74 65 64 20 64 61 74 61 62 61  nominated databa
9830: 73 65 2e 20 41 6c 6c 6f 63 61 74 69 6e 67 20 64  se. Allocating d
9840: 61 74 61 62 61 73 65 20 66 69 6c 65 20 73 70 61  atabase file spa
9850: 63 65 20 69 6e 20 6c 61 72 67 65 0a 2a 2a 20 63  ce in large.** c
9860: 68 75 6e 6b 73 20 28 73 61 79 20 31 4d 42 20 61  hunks (say 1MB a
9870: 74 20 61 20 74 69 6d 65 29 2c 20 6d 61 79 20 72  t a time), may r
9880: 65 64 75 63 65 20 66 69 6c 65 2d 73 79 73 74 65  educe file-syste
9890: 6d 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20  m fragmentation 
98a0: 61 6e 64 0a 2a 2a 20 69 6d 70 72 6f 76 65 20 70  and.** improve p
98b0: 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 6f  erformance on so
98c0: 6d 65 20 73 79 73 74 65 6d 73 2e 0a 2a 2a 0a 2a  me systems..**.*
98d0: 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
98e0: 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45  CNTL_FILE_POINTE
98f0: 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  R]].** The [SQLI
9900: 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f  TE_FCNTL_FILE_PO
9910: 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 69 73  INTER] opcode is
9920: 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20   used to obtain 
9930: 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20  a pointer.** to 
9940: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  the [sqlite3_fil
9950: 65 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f 63 69  e] object associ
9960: 61 74 65 64 20 77 69 74 68 20 61 20 70 61 72 74  ated with a part
9970: 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 0a  icular database.
9980: 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  ** connection.  
9990: 53 65 65 20 61 6c 73 6f 20 5b 53 51 4c 49 54 45  See also [SQLITE
99a0: 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50  _FCNTL_JOURNAL_P
99b0: 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  OINTER]..**.** <
99c0: 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
99d0: 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54 45  L_JOURNAL_POINTE
99e0: 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  R]].** The [SQLI
99f0: 54 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c  TE_FCNTL_JOURNAL
9a00: 5f 50 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65  _POINTER] opcode
9a10: 20 69 73 20 75 73 65 64 20 74 6f 20 6f 62 74 61   is used to obta
9a20: 69 6e 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20  in a pointer.** 
9a30: 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  to the [sqlite3_
9a40: 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73 73  file] object ass
9a50: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
9a60: 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 28 65   journal file (e
9a70: 69 74 68 65 72 0a 2a 2a 20 74 68 65 20 5b 72 6f  ither.** the [ro
9a80: 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20  llback journal] 
9a90: 6f 72 20 74 68 65 20 5b 77 72 69 74 65 2d 61 68  or the [write-ah
9aa0: 65 61 64 20 6c 6f 67 5d 29 20 66 6f 72 20 61 20  ead log]) for a 
9ab0: 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62  particular datab
9ac0: 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  ase.** connectio
9ad0: 6e 2e 20 20 53 65 65 20 61 6c 73 6f 20 5b 53 51  n.  See also [SQ
9ae0: 4c 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f  LITE_FCNTL_FILE_
9af0: 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20  POINTER]..**.** 
9b00: 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
9b10: 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44 5d  TL_SYNC_OMITTED]
9b20: 5d 0a 2a 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 69  ].** No longer i
9b30: 6e 20 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  n use..**.** <li
9b40: 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
9b50: 53 59 4e 43 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53  SYNC]].** The [S
9b60: 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43  QLITE_FCNTL_SYNC
9b70: 5d 20 6f 70 63 6f 64 65 20 69 73 20 67 65 6e 65  ] opcode is gene
9b80: 72 61 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79  rated internally
9b90: 20 62 79 20 53 51 4c 69 74 65 20 61 6e 64 0a 2a   by SQLite and.*
9ba0: 2a 20 73 65 6e 74 20 74 6f 20 74 68 65 20 56 46  * sent to the VF
9bb0: 53 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 65  S immediately be
9bc0: 66 6f 72 65 20 74 68 65 20 78 53 79 6e 63 20 6d  fore the xSync m
9bd0: 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65 64  ethod is invoked
9be0: 20 6f 6e 20 61 0a 2a 2a 20 64 61 74 61 62 61 73   on a.** databas
9bf0: 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  e file descripto
9c00: 72 2e 20 4f 72 2c 20 69 66 20 74 68 65 20 78 53  r. Or, if the xS
9c10: 79 6e 63 20 6d 65 74 68 6f 64 20 69 73 20 6e 6f  ync method is no
9c20: 74 20 69 6e 76 6f 6b 65 64 20 0a 2a 2a 20 62 65  t invoked .** be
9c30: 63 61 75 73 65 20 74 68 65 20 75 73 65 72 20 68  cause the user h
9c40: 61 73 20 63 6f 6e 66 69 67 75 72 65 64 20 53 51  as configured SQ
9c50: 4c 69 74 65 20 77 69 74 68 20 0a 2a 2a 20 5b 50  Lite with .** [P
9c60: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
9c70: 73 20 7c 20 50 52 41 47 4d 41 20 73 79 6e 63 68  s | PRAGMA synch
9c80: 72 6f 6e 6f 75 73 3d 4f 46 46 5d 20 69 74 20 69  ronous=OFF] it i
9c90: 73 20 69 6e 76 6f 6b 65 64 20 69 6e 20 70 6c 61  s invoked in pla
9ca0: 63 65 20 0a 2a 2a 20 6f 66 20 74 68 65 20 78 53  ce .** of the xS
9cb0: 79 6e 63 20 6d 65 74 68 6f 64 2e 20 49 6e 20 6d  ync method. In m
9cc0: 6f 73 74 20 63 61 73 65 73 2c 20 74 68 65 20 70  ost cases, the p
9cd0: 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 20  ointer argument 
9ce0: 70 61 73 73 65 64 20 77 69 74 68 0a 2a 2a 20 74  passed with.** t
9cf0: 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  his file-control
9d00: 20 69 73 20 4e 55 4c 4c 2e 20 48 6f 77 65 76 65   is NULL. Howeve
9d10: 72 2c 20 69 66 20 74 68 65 20 64 61 74 61 62 61  r, if the databa
9d20: 73 65 20 66 69 6c 65 20 69 73 20 62 65 69 6e 67  se file is being
9d30: 20 73 79 6e 63 65 64 0a 2a 2a 20 61 73 20 70 61   synced.** as pa
9d40: 72 74 20 6f 66 20 61 20 6d 75 6c 74 69 2d 64 61  rt of a multi-da
9d50: 74 61 62 61 73 65 20 63 6f 6d 6d 69 74 2c 20 74  tabase commit, t
9d60: 68 65 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e  he argument poin
9d70: 74 73 20 74 6f 20 61 20 6e 75 6c 2d 74 65 72 6d  ts to a nul-term
9d80: 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67  inated.** string
9d90: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
9da0: 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6d 61 73  transactions mas
9db0: 74 65 72 2d 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  ter-journal file
9dc0: 20 6e 61 6d 65 2e 20 56 46 53 65 73 20 74 68 61   name. VFSes tha
9dd0: 74 20 0a 2a 2a 20 64 6f 20 6e 6f 74 20 6e 65 65  t .** do not nee
9de0: 64 20 74 68 69 73 20 73 69 67 6e 61 6c 20 73 68  d this signal sh
9df0: 6f 75 6c 64 20 73 69 6c 65 6e 74 6c 79 20 69 67  ould silently ig
9e00: 6e 6f 72 65 20 74 68 69 73 20 6f 70 63 6f 64 65  nore this opcode
9e10: 2e 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 0a  . Applications .
9e20: 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 63 61  ** should not ca
9e30: 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  ll [sqlite3_file
9e40: 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 77 69 74 68  _control()] with
9e50: 20 74 68 69 73 20 6f 70 63 6f 64 65 20 61 73 20   this opcode as 
9e60: 64 6f 69 6e 67 20 73 6f 20 6d 61 79 20 0a 2a 2a  doing so may .**
9e70: 20 64 69 73 72 75 70 74 20 74 68 65 20 6f 70 65   disrupt the ope
9e80: 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 70  ration of the sp
9e90: 65 63 69 61 6c 69 7a 65 64 20 56 46 53 65 73 20  ecialized VFSes 
9ea0: 74 68 61 74 20 64 6f 20 72 65 71 75 69 72 65 20  that do require 
9eb0: 69 74 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  it.  .**.** <li>
9ec0: 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43  [[SQLITE_FCNTL_C
9ed0: 4f 4d 4d 49 54 5f 50 48 41 53 45 54 57 4f 5d 5d  OMMIT_PHASETWO]]
9ee0: 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
9ef0: 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48 41  FCNTL_COMMIT_PHA
9f00: 53 45 54 57 4f 5d 20 6f 70 63 6f 64 65 20 69 73  SETWO] opcode is
9f10: 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65 72   generated inter
9f20: 6e 61 6c 6c 79 20 62 79 20 53 51 4c 69 74 65 0a  nally by SQLite.
9f30: 2a 2a 20 61 6e 64 20 73 65 6e 74 20 74 6f 20 74  ** and sent to t
9f40: 68 65 20 56 46 53 20 61 66 74 65 72 20 61 20 74  he VFS after a t
9f50: 72 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 62  ransaction has b
9f60: 65 65 6e 20 63 6f 6d 6d 69 74 74 65 64 20 69 6d  een committed im
9f70: 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 62 75 74  mediately.** but
9f80: 20 62 65 66 6f 72 65 20 74 68 65 20 64 61 74 61   before the data
9f90: 62 61 73 65 20 69 73 20 75 6e 6c 6f 63 6b 65 64  base is unlocked
9fa0: 2e 20 56 46 53 65 73 20 74 68 61 74 20 64 6f 20  . VFSes that do 
9fb0: 6e 6f 74 20 6e 65 65 64 20 74 68 69 73 20 73 69  not need this si
9fc0: 67 6e 61 6c 0a 2a 2a 20 73 68 6f 75 6c 64 20 73  gnal.** should s
9fd0: 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 20 74  ilently ignore t
9fe0: 68 69 73 20 6f 70 63 6f 64 65 2e 20 41 70 70 6c  his opcode. Appl
9ff0: 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ications should 
a000: 6e 6f 74 20 63 61 6c 6c 0a 2a 2a 20 5b 73 71 6c  not call.** [sql
a010: 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
a020: 6c 28 29 5d 20 77 69 74 68 20 74 68 69 73 20 6f  l()] with this o
a030: 70 63 6f 64 65 20 61 73 20 64 6f 69 6e 67 20 73  pcode as doing s
a040: 6f 20 6d 61 79 20 64 69 73 72 75 70 74 20 74 68  o may disrupt th
a050: 65 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 20  e .** operation 
a060: 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 69 7a  of the specializ
a070: 65 64 20 56 46 53 65 73 20 74 68 61 74 20 64 6f  ed VFSes that do
a080: 20 72 65 71 75 69 72 65 20 69 74 2e 20 20 0a 2a   require it.  .*
a090: 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
a0a0: 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56  E_FCNTL_WIN32_AV
a0b0: 5f 52 45 54 52 59 5d 5d 0a 2a 2a 20 5e 54 68 65  _RETRY]].** ^The
a0c0: 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57   [SQLITE_FCNTL_W
a0d0: 49 4e 33 32 5f 41 56 5f 52 45 54 52 59 5d 20 6f  IN32_AV_RETRY] o
a0e0: 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f  pcode is used to
a0f0: 20 63 6f 6e 66 69 67 75 72 65 20 61 75 74 6f 6d   configure autom
a100: 61 74 69 63 0a 2a 2a 20 72 65 74 72 79 20 63 6f  atic.** retry co
a110: 75 6e 74 73 20 61 6e 64 20 69 6e 74 65 72 76 61  unts and interva
a120: 6c 73 20 66 6f 72 20 63 65 72 74 61 69 6e 20 64  ls for certain d
a130: 69 73 6b 20 49 2f 4f 20 6f 70 65 72 61 74 69 6f  isk I/O operatio
a140: 6e 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20 77 69  ns for the.** wi
a150: 6e 64 6f 77 73 20 5b 56 46 53 5d 20 69 6e 20 6f  ndows [VFS] in o
a160: 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20  rder to provide 
a170: 72 6f 62 75 73 74 6e 65 73 73 20 69 6e 20 74 68  robustness in th
a180: 65 20 70 72 65 73 65 6e 63 65 20 6f 66 0a 2a 2a  e presence of.**
a190: 20 61 6e 74 69 2d 76 69 72 75 73 20 70 72 6f 67   anti-virus prog
a1a0: 72 61 6d 73 2e 20 20 42 79 20 64 65 66 61 75 6c  rams.  By defaul
a1b0: 74 2c 20 74 68 65 20 77 69 6e 64 6f 77 73 20 56  t, the windows V
a1c0: 46 53 20 77 69 6c 6c 20 72 65 74 72 79 20 66 69  FS will retry fi
a1d0: 6c 65 20 72 65 61 64 2c 0a 2a 2a 20 66 69 6c 65  le read,.** file
a1e0: 20 77 72 69 74 65 2c 20 61 6e 64 20 66 69 6c 65   write, and file
a1f0: 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f   delete operatio
a200: 6e 73 20 75 70 20 74 6f 20 31 30 20 74 69 6d 65  ns up to 10 time
a210: 73 2c 20 77 69 74 68 20 61 20 64 65 6c 61 79 0a  s, with a delay.
a220: 2a 2a 20 6f 66 20 32 35 20 6d 69 6c 6c 69 73 65  ** of 25 millise
a230: 63 6f 6e 64 73 20 62 65 66 6f 72 65 20 74 68 65  conds before the
a240: 20 66 69 72 73 74 20 72 65 74 72 79 20 61 6e 64   first retry and
a250: 20 77 69 74 68 20 74 68 65 20 64 65 6c 61 79 20   with the delay 
a260: 69 6e 63 72 65 61 73 69 6e 67 0a 2a 2a 20 62 79  increasing.** by
a270: 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 32   an additional 2
a280: 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 77  5 milliseconds w
a290: 69 74 68 20 65 61 63 68 20 73 75 62 73 65 71 75  ith each subsequ
a2a0: 65 6e 74 20 72 65 74 72 79 2e 20 20 54 68 69 73  ent retry.  This
a2b0: 0a 2a 2a 20 6f 70 63 6f 64 65 20 61 6c 6c 6f 77  .** opcode allow
a2c0: 73 20 74 68 65 73 65 20 74 77 6f 20 76 61 6c 75  s these two valu
a2d0: 65 73 20 28 31 30 20 72 65 74 72 69 65 73 20 61  es (10 retries a
a2e0: 6e 64 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e  nd 25 millisecon
a2f0: 64 73 20 6f 66 20 64 65 6c 61 79 29 0a 2a 2a 20  ds of delay).** 
a300: 74 6f 20 62 65 20 61 64 6a 75 73 74 65 64 2e 20  to be adjusted. 
a310: 20 54 68 65 20 76 61 6c 75 65 73 20 61 72 65 20   The values are 
a320: 63 68 61 6e 67 65 64 20 66 6f 72 20 61 6c 6c 20  changed for all 
a330: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
a340: 69 6f 6e 73 0a 2a 2a 20 77 69 74 68 69 6e 20 74  ions.** within t
a350: 68 65 20 73 61 6d 65 20 70 72 6f 63 65 73 73 2e  he same process.
a360: 20 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69    The argument i
a370: 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
a380: 6e 20 61 72 72 61 79 20 6f 66 20 74 77 6f 0a 2a  n array of two.*
a390: 2a 20 69 6e 74 65 67 65 72 73 20 77 68 65 72 65  * integers where
a3a0: 20 74 68 65 20 66 69 72 73 74 20 69 6e 74 65 67   the first integ
a3b0: 65 72 20 69 73 20 74 68 65 20 6e 65 77 20 72 65  er is the new re
a3c0: 74 72 79 20 63 6f 75 6e 74 20 61 6e 64 20 74 68  try count and th
a3d0: 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 69 6e 74 65  e second.** inte
a3e0: 67 65 72 20 69 73 20 74 68 65 20 64 65 6c 61 79  ger is the delay
a3f0: 2e 20 20 49 66 20 65 69 74 68 65 72 20 69 6e 74  .  If either int
a400: 65 67 65 72 20 69 73 20 6e 65 67 61 74 69 76 65  eger is negative
a410: 2c 20 74 68 65 6e 20 74 68 65 20 73 65 74 74 69  , then the setti
a420: 6e 67 0a 2a 2a 20 69 73 20 6e 6f 74 20 63 68 61  ng.** is not cha
a430: 6e 67 65 64 20 62 75 74 20 69 6e 73 74 65 61 64  nged but instead
a440: 20 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75 65   the prior value
a450: 20 6f 66 20 74 68 61 74 20 73 65 74 74 69 6e 67   of that setting
a460: 20 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20 69   is written.** i
a470: 6e 74 6f 20 74 68 65 20 61 72 72 61 79 20 65 6e  nto the array en
a480: 74 72 79 2c 20 61 6c 6c 6f 77 69 6e 67 20 74 68  try, allowing th
a490: 65 20 63 75 72 72 65 6e 74 20 72 65 74 72 79 20  e current retry 
a4a0: 73 65 74 74 69 6e 67 73 20 74 6f 20 62 65 0a 2a  settings to be.*
a4b0: 2a 20 69 6e 74 65 72 72 6f 67 61 74 65 64 2e 20  * interrogated. 
a4c0: 20 54 68 65 20 7a 44 62 4e 61 6d 65 20 70 61 72   The zDbName par
a4d0: 61 6d 65 74 65 72 20 69 73 20 69 67 6e 6f 72 65  ameter is ignore
a4e0: 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  d..**.** <li>[[S
a4f0: 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 45 52 53  QLITE_FCNTL_PERS
a500: 49 53 54 5f 57 41 4c 5d 5d 0a 2a 2a 20 5e 54 68  IST_WAL]].** ^Th
a510: 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
a520: 50 45 52 53 49 53 54 5f 57 41 4c 5d 20 6f 70 63  PERSIST_WAL] opc
a530: 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20 73  ode is used to s
a540: 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65 0a  et or query the.
a550: 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 5b 57  ** persistent [W
a560: 41 4c 20 7c 20 57 72 69 74 65 20 41 68 65 61 64  AL | Write Ahead
a570: 20 4c 6f 67 5d 20 73 65 74 74 69 6e 67 2e 20 20   Log] setting.  
a580: 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20  By default, the 
a590: 61 75 78 69 6c 69 61 72 79 0a 2a 2a 20 77 72 69  auxiliary.** wri
a5a0: 74 65 20 61 68 65 61 64 20 6c 6f 67 20 28 5b 57  te ahead log ([W
a5b0: 41 4c 20 66 69 6c 65 5d 29 20 61 6e 64 20 73 68  AL file]) and sh
a5c0: 61 72 65 64 20 6d 65 6d 6f 72 79 0a 2a 2a 20 66  ared memory.** f
a5d0: 69 6c 65 73 20 75 73 65 64 20 66 6f 72 20 74 72  iles used for tr
a5e0: 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6e 74 72 6f  ansaction contro
a5f0: 6c 0a 2a 2a 20 61 72 65 20 61 75 74 6f 6d 61 74  l.** are automat
a600: 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77  ically deleted w
a610: 68 65 6e 20 74 68 65 20 6c 61 74 65 73 74 20 63  hen the latest c
a620: 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65  onnection to the
a630: 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6c 6f   database.** clo
a640: 73 65 73 2e 20 20 53 65 74 74 69 6e 67 20 70 65  ses.  Setting pe
a650: 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64  rsistent WAL mod
a660: 65 20 63 61 75 73 65 73 20 74 68 6f 73 65 20 66  e causes those f
a670: 69 6c 65 73 20 74 6f 20 70 65 72 73 69 73 74 20  iles to persist 
a680: 61 66 74 65 72 0a 2a 2a 20 63 6c 6f 73 65 2e 20  after.** close. 
a690: 20 50 65 72 73 69 73 74 69 6e 67 20 74 68 65 20   Persisting the 
a6a0: 66 69 6c 65 73 20 69 73 20 75 73 65 66 75 6c 20  files is useful 
a6b0: 77 68 65 6e 20 6f 74 68 65 72 20 70 72 6f 63 65  when other proce
a6c0: 73 73 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  sses that do not
a6d0: 0a 2a 2a 20 68 61 76 65 20 77 72 69 74 65 20 70  .** have write p
a6e0: 65 72 6d 69 73 73 69 6f 6e 20 6f 6e 20 74 68 65  ermission on the
a6f0: 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
a700: 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ining the databa
a710: 73 65 20 66 69 6c 65 20 77 61 6e 74 0a 2a 2a 20  se file want.** 
a720: 74 6f 20 72 65 61 64 20 74 68 65 20 64 61 74 61  to read the data
a730: 62 61 73 65 20 66 69 6c 65 2c 20 61 73 20 74 68  base file, as th
a740: 65 20 57 41 4c 20 61 6e 64 20 73 68 61 72 65 64  e WAL and shared
a750: 20 6d 65 6d 6f 72 79 20 66 69 6c 65 73 20 6d 75   memory files mu
a760: 73 74 20 65 78 69 73 74 0a 2a 2a 20 69 6e 20 6f  st exist.** in o
a770: 72 64 65 72 20 66 6f 72 20 74 68 65 20 64 61 74  rder for the dat
a780: 61 62 61 73 65 20 74 6f 20 62 65 20 72 65 61 64  abase to be read
a790: 61 62 6c 65 2e 20 20 54 68 65 20 66 6f 75 72 74  able.  The fourt
a7a0: 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a  h parameter to.*
a7b0: 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  * [sqlite3_file_
a7c0: 63 6f 6e 74 72 6f 6c 28 29 5d 20 66 6f 72 20 74  control()] for t
a7d0: 68 69 73 20 6f 70 63 6f 64 65 20 73 68 6f 75 6c  his opcode shoul
a7e0: 64 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20 74  d be a pointer t
a7f0: 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a 2a 2a  o an integer..**
a800: 20 54 68 61 74 20 69 6e 74 65 67 65 72 20 69 73   That integer is
a810: 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 70 65   0 to disable pe
a820: 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64  rsistent WAL mod
a830: 65 20 6f 72 20 31 20 74 6f 20 65 6e 61 62 6c 65  e or 1 to enable
a840: 20 70 65 72 73 69 73 74 65 6e 74 0a 2a 2a 20 57   persistent.** W
a850: 41 4c 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65  AL mode.  If the
a860: 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20   integer is -1, 
a870: 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77  then it is overw
a880: 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20  ritten with the 
a890: 63 75 72 72 65 6e 74 0a 2a 2a 20 57 41 4c 20 70  current.** WAL p
a8a0: 65 72 73 69 73 74 65 6e 63 65 20 73 65 74 74 69  ersistence setti
a8b0: 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  ng..**.** <li>[[
a8c0: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 4f 57  SQLITE_FCNTL_POW
a8d0: 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
a8e0: 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  ]].** ^The [SQLI
a8f0: 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45 52 53 41  TE_FCNTL_POWERSA
a900: 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f 70  FE_OVERWRITE] op
a910: 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20  code is used to 
a920: 73 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65  set or query the
a930: 0a 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 22  .** persistent "
a940: 70 6f 77 65 72 73 61 66 65 2d 6f 76 65 72 77 72  powersafe-overwr
a950: 69 74 65 22 20 6f 72 20 22 50 53 4f 57 22 20 73  ite" or "PSOW" s
a960: 65 74 74 69 6e 67 2e 20 20 54 68 65 20 50 53 4f  etting.  The PSO
a970: 57 20 73 65 74 74 69 6e 67 0a 2a 2a 20 64 65 74  W setting.** det
a980: 65 72 6d 69 6e 65 73 20 74 68 65 20 5b 53 51 4c  ermines the [SQL
a990: 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53  ITE_IOCAP_POWERS
a9a0: 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 62  AFE_OVERWRITE] b
a9b0: 69 74 20 6f 66 20 74 68 65 0a 2a 2a 20 78 44 65  it of the.** xDe
a9c0: 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74  viceCharacterist
a9d0: 69 63 73 20 6d 65 74 68 6f 64 73 2e 20 54 68 65  ics methods. The
a9e0: 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
a9f0: 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  r to.** [sqlite3
aa00: 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d  _file_control()]
aa10: 20 66 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65   for this opcode
aa20: 20 73 68 6f 75 6c 64 20 62 65 20 61 20 70 6f 69   should be a poi
aa30: 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67  nter to an integ
aa40: 65 72 2e 0a 2a 2a 20 54 68 61 74 20 69 6e 74 65  er..** That inte
aa50: 67 65 72 20 69 73 20 30 20 74 6f 20 64 69 73 61  ger is 0 to disa
aa60: 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 20  ble zero-damage 
aa70: 6d 6f 64 65 20 6f 72 20 31 20 74 6f 20 65 6e 61  mode or 1 to ena
aa80: 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 0a  ble zero-damage.
aa90: 2a 2a 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65  ** mode.  If the
aaa0: 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20   integer is -1, 
aab0: 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77  then it is overw
aac0: 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20  ritten with the 
aad0: 63 75 72 72 65 6e 74 0a 2a 2a 20 7a 65 72 6f 2d  current.** zero-
aae0: 64 61 6d 61 67 65 20 6d 6f 64 65 20 73 65 74 74  damage mode sett
aaf0: 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ing..**.** <li>[
ab00: 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f 56  [SQLITE_FCNTL_OV
ab10: 45 52 57 52 49 54 45 5d 5d 0a 2a 2a 20 5e 54 68  ERWRITE]].** ^Th
ab20: 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
ab30: 4f 56 45 52 57 52 49 54 45 5d 20 6f 70 63 6f 64  OVERWRITE] opcod
ab40: 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20  e is invoked by 
ab50: 53 51 4c 69 74 65 20 61 66 74 65 72 20 6f 70 65  SQLite after ope
ab60: 6e 69 6e 67 0a 2a 2a 20 61 20 77 72 69 74 65 20  ning.** a write 
ab70: 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 69  transaction to i
ab80: 6e 64 69 63 61 74 65 20 74 68 61 74 2c 20 75 6e  ndicate that, un
ab90: 6c 65 73 73 20 69 74 20 69 73 20 72 6f 6c 6c 65  less it is rolle
aba0: 64 20 62 61 63 6b 20 66 6f 72 20 73 6f 6d 65 0a  d back for some.
abb0: 2a 2a 20 72 65 61 73 6f 6e 2c 20 74 68 65 20 65  ** reason, the e
abc0: 6e 74 69 72 65 20 64 61 74 61 62 61 73 65 20 66  ntire database f
abd0: 69 6c 65 20 77 69 6c 6c 20 62 65 20 6f 76 65 72  ile will be over
abe0: 77 72 69 74 74 65 6e 20 62 79 20 74 68 65 20 63  written by the c
abf0: 75 72 72 65 6e 74 20 0a 2a 2a 20 74 72 61 6e 73  urrent .** trans
ac00: 61 63 74 69 6f 6e 2e 20 54 68 69 73 20 69 73 20  action. This is 
ac10: 75 73 65 64 20 62 79 20 56 41 43 55 55 4d 20 6f  used by VACUUM o
ac20: 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a  perations..**.**
ac30: 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
ac40: 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 5d 0a 2a 2a  NTL_VFSNAME]].**
ac50: 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43   ^The [SQLITE_FC
ac60: 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 20 6f 70 63  NTL_VFSNAME] opc
ac70: 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  ode can be used 
ac80: 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6e 61  to obtain the na
ac90: 6d 65 73 20 6f 66 0a 2a 2a 20 61 6c 6c 20 5b 56  mes of.** all [V
aca0: 46 53 65 73 5d 20 69 6e 20 74 68 65 20 56 46 53  FSes] in the VFS
acb0: 20 73 74 61 63 6b 2e 20 20 54 68 65 20 6e 61 6d   stack.  The nam
acc0: 65 73 20 61 72 65 20 6f 66 20 61 6c 6c 20 56 46  es are of all VF
acd0: 53 20 73 68 69 6d 73 20 61 6e 64 20 74 68 65 0a  S shims and the.
ace0: 2a 2a 20 66 69 6e 61 6c 20 62 6f 74 74 6f 6d 2d  ** final bottom-
acf0: 6c 65 76 65 6c 20 56 46 53 20 61 72 65 20 77 72  level VFS are wr
ad00: 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72  itten into memor
ad10: 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
ad20: 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  .** [sqlite3_mal
ad30: 6c 6f 63 28 29 5d 20 61 6e 64 20 74 68 65 20 72  loc()] and the r
ad40: 65 73 75 6c 74 20 69 73 20 73 74 6f 72 65 64 20  esult is stored 
ad50: 69 6e 20 74 68 65 20 63 68 61 72 2a 20 76 61 72  in the char* var
ad60: 69 61 62 6c 65 0a 2a 2a 20 74 68 61 74 20 74 68  iable.** that th
ad70: 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
ad80: 65 72 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 66  er of [sqlite3_f
ad90: 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 70  ile_control()] p
ada0: 6f 69 6e 74 73 20 74 6f 2e 0a 2a 2a 20 54 68 65  oints to..** The
adb0: 20 63 61 6c 6c 65 72 20 69 73 20 72 65 73 70 6f   caller is respo
adc0: 6e 73 69 62 6c 65 20 66 6f 72 20 66 72 65 65 69  nsible for freei
add0: 6e 67 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68  ng the memory wh
ade0: 65 6e 20 64 6f 6e 65 2e 20 20 41 73 20 77 69 74  en done.  As wit
adf0: 68 0a 2a 2a 20 61 6c 6c 20 66 69 6c 65 2d 63 6f  h.** all file-co
ae00: 6e 74 72 6f 6c 20 61 63 74 69 6f 6e 73 2c 20 74  ntrol actions, t
ae10: 68 65 72 65 20 69 73 20 6e 6f 20 67 75 61 72 61  here is no guara
ae20: 6e 74 65 65 20 74 68 61 74 20 74 68 69 73 20 77  ntee that this w
ae30: 69 6c 6c 20 61 63 74 75 61 6c 6c 79 0a 2a 2a 20  ill actually.** 
ae40: 64 6f 20 61 6e 79 74 68 69 6e 67 2e 20 20 43 61  do anything.  Ca
ae50: 6c 6c 65 72 73 20 73 68 6f 75 6c 64 20 69 6e 69  llers should ini
ae60: 74 69 61 6c 69 7a 65 20 74 68 65 20 63 68 61 72  tialize the char
ae70: 2a 20 76 61 72 69 61 62 6c 65 20 74 6f 20 61 20  * variable to a 
ae80: 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74 65 72 20  NULL.** pointer 
ae90: 69 6e 20 63 61 73 65 20 74 68 69 73 20 66 69 6c  in case this fil
aea0: 65 2d 63 6f 6e 74 72 6f 6c 20 69 73 20 6e 6f 74  e-control is not
aeb0: 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 20 20 54   implemented.  T
aec0: 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  his file-control
aed0: 0a 2a 2a 20 69 73 20 69 6e 74 65 6e 64 65 64 20  .** is intended 
aee0: 66 6f 72 20 64 69 61 67 6e 6f 73 74 69 63 20 75  for diagnostic u
aef0: 73 65 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20 3c  se only..**.** <
af00: 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
af10: 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 5d 5d 0a  L_VFS_POINTER]].
af20: 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f  ** ^The [SQLITE_
af30: 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45  FCNTL_VFS_POINTE
af40: 52 5d 20 6f 70 63 6f 64 65 20 66 69 6e 64 73 20  R] opcode finds 
af50: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
af60: 20 74 6f 70 2d 6c 65 76 65 6c 0a 2a 2a 20 5b 56   top-level.** [V
af70: 46 53 65 73 5d 20 63 75 72 72 65 6e 74 6c 79 20  FSes] currently 
af80: 69 6e 20 75 73 65 2e 20 20 5e 28 54 68 65 20 61  in use.  ^(The a
af90: 72 67 75 6d 65 6e 74 20 58 20 69 6e 0a 2a 2a 20  rgument X in.** 
afa0: 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
afb0: 74 72 6f 6c 28 64 62 2c 53 51 4c 49 54 45 5f 46  trol(db,SQLITE_F
afc0: 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52  CNTL_VFS_POINTER
afd0: 2c 58 29 20 6d 75 73 74 20 62 65 0a 2a 2a 20 6f  ,X) must be.** o
afe0: 66 20 74 79 70 65 20 22 5b 73 71 6c 69 74 65 33  f type "[sqlite3
aff0: 5f 76 66 73 5d 20 2a 2a 22 2e 20 20 54 68 69 73  _vfs] **".  This
b000: 20 6f 70 63 6f 64 65 73 20 77 69 6c 6c 20 73 65   opcodes will se
b010: 74 20 2a 58 0a 2a 2a 20 74 6f 20 61 20 70 6f 69  t *X.** to a poi
b020: 6e 74 65 72 20 74 6f 20 74 68 65 20 74 6f 70 2d  nter to the top-
b030: 6c 65 76 65 6c 20 56 46 53 2e 29 5e 0a 2a 2a 20  level VFS.)^.** 
b040: 5e 57 68 65 6e 20 74 68 65 72 65 20 61 72 65 20  ^When there are 
b050: 6d 75 6c 74 69 70 6c 65 20 56 46 53 20 73 68 69  multiple VFS shi
b060: 6d 73 20 69 6e 20 74 68 65 20 73 74 61 63 6b 2c  ms in the stack,
b070: 20 74 68 69 73 20 6f 70 63 6f 64 65 20 66 69 6e   this opcode fin
b080: 64 73 20 74 68 65 0a 2a 2a 20 75 70 70 65 72 2d  ds the.** upper-
b090: 6d 6f 73 74 20 73 68 69 6d 20 6f 6e 6c 79 2e 0a  most shim only..
b0a0: 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
b0b0: 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d  TE_FCNTL_PRAGMA]
b0c0: 5d 0a 2a 2a 20 5e 57 68 65 6e 65 76 65 72 20 61  ].** ^Whenever a
b0d0: 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65 6d   [PRAGMA] statem
b0e0: 65 6e 74 20 69 73 20 70 61 72 73 65 64 2c 20 61  ent is parsed, a
b0f0: 6e 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  n [SQLITE_FCNTL_
b100: 50 52 41 47 4d 41 5d 20 0a 2a 2a 20 66 69 6c 65  PRAGMA] .** file
b110: 20 63 6f 6e 74 72 6f 6c 20 69 73 20 73 65 6e 74   control is sent
b120: 20 74 6f 20 74 68 65 20 6f 70 65 6e 20 5b 73 71   to the open [sq
b130: 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65  lite3_file] obje
b140: 63 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ct corresponding
b150: 0a 2a 2a 20 74 6f 20 74 68 65 20 64 61 74 61 62  .** to the datab
b160: 61 73 65 20 66 69 6c 65 20 74 6f 20 77 68 69 63  ase file to whic
b170: 68 20 74 68 65 20 70 72 61 67 6d 61 20 73 74 61  h the pragma sta
b180: 74 65 6d 65 6e 74 20 72 65 66 65 72 73 2e 20 5e  tement refers. ^
b190: 54 68 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20  The argument.** 
b1a0: 74 6f 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46  to the [SQLITE_F
b1b0: 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c  CNTL_PRAGMA] fil
b1c0: 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 61 6e 20  e control is an 
b1d0: 61 72 72 61 79 20 6f 66 0a 2a 2a 20 70 6f 69 6e  array of.** poin
b1e0: 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73 20  ters to strings 
b1f0: 28 63 68 61 72 2a 2a 29 20 69 6e 20 77 68 69 63  (char**) in whic
b200: 68 20 74 68 65 20 73 65 63 6f 6e 64 20 65 6c 65  h the second ele
b210: 6d 65 6e 74 20 6f 66 20 74 68 65 20 61 72 72 61  ment of the arra
b220: 79 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d 65  y.** is the name
b230: 20 6f 66 20 74 68 65 20 70 72 61 67 6d 61 20 61   of the pragma a
b240: 6e 64 20 74 68 65 20 74 68 69 72 64 20 65 6c 65  nd the third ele
b250: 6d 65 6e 74 20 69 73 20 74 68 65 20 61 72 67 75  ment is the argu
b260: 6d 65 6e 74 20 74 6f 20 74 68 65 0a 2a 2a 20 70  ment to the.** p
b270: 72 61 67 6d 61 20 6f 72 20 4e 55 4c 4c 20 69 66  ragma or NULL if
b280: 20 74 68 65 20 70 72 61 67 6d 61 20 68 61 73 20   the pragma has 
b290: 6e 6f 20 61 72 67 75 6d 65 6e 74 2e 20 20 5e 54  no argument.  ^T
b2a0: 68 65 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61  he handler for a
b2b0: 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e  n.** [SQLITE_FCN
b2c0: 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65 20  TL_PRAGMA] file 
b2d0: 63 6f 6e 74 72 6f 6c 20 63 61 6e 20 6f 70 74 69  control can opti
b2e0: 6f 6e 61 6c 6c 79 20 6d 61 6b 65 20 74 68 65 20  onally make the 
b2f0: 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 0a 2a 2a  first element.**
b300: 20 6f 66 20 74 68 65 20 63 68 61 72 2a 2a 20 61   of the char** a
b310: 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 20 74 6f  rgument point to
b320: 20 61 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e   a string obtain
b330: 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  ed from [sqlite3
b340: 5f 6d 70 72 69 6e 74 66 28 29 5d 0a 2a 2a 20 6f  _mprintf()].** o
b350: 72 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74  r the equivalent
b360: 20 61 6e 64 20 74 68 61 74 20 73 74 72 69 6e 67   and that string
b370: 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65   will become the
b380: 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 70   result of the p
b390: 72 61 67 6d 61 20 6f 72 0a 2a 2a 20 74 68 65 20  ragma or.** the 
b3a0: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 66  error message if
b3b0: 20 74 68 65 20 70 72 61 67 6d 61 20 66 61 69 6c   the pragma fail
b3c0: 73 2e 20 5e 49 66 20 74 68 65 0a 2a 2a 20 5b 53  s. ^If the.** [S
b3d0: 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47  QLITE_FCNTL_PRAG
b3e0: 4d 41 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  MA] file control
b3f0: 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
b400: 5f 4e 4f 54 46 4f 55 4e 44 5d 2c 20 74 68 65 6e  _NOTFOUND], then
b410: 20 6e 6f 72 6d 61 6c 20 0a 2a 2a 20 5b 50 52 41   normal .** [PRA
b420: 47 4d 41 5d 20 70 72 6f 63 65 73 73 69 6e 67 20  GMA] processing 
b430: 63 6f 6e 74 69 6e 75 65 73 2e 20 20 5e 49 66 20  continues.  ^If 
b440: 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  the [SQLITE_FCNT
b450: 4c 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c  L_PRAGMA].** fil
b460: 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75 72 6e  e control return
b470: 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74  s [SQLITE_OK], t
b480: 68 65 6e 20 74 68 65 20 70 61 72 73 65 72 20 61  hen the parser a
b490: 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65 0a  ssumes that the.
b4a0: 2a 2a 20 56 46 53 20 68 61 73 20 68 61 6e 64 6c  ** VFS has handl
b4b0: 65 64 20 74 68 65 20 50 52 41 47 4d 41 20 69 74  ed the PRAGMA it
b4c0: 73 65 6c 66 20 61 6e 64 20 74 68 65 20 70 61 72  self and the par
b4d0: 73 65 72 20 67 65 6e 65 72 61 74 65 73 20 61 20  ser generates a 
b4e0: 6e 6f 2d 6f 70 0a 2a 2a 20 70 72 65 70 61 72 65  no-op.** prepare
b4f0: 64 20 73 74 61 74 65 6d 65 6e 74 20 69 66 20 72  d statement if r
b500: 65 73 75 6c 74 20 73 74 72 69 6e 67 20 69 73 20  esult string is 
b510: 4e 55 4c 4c 2c 20 6f 72 20 74 68 61 74 20 72 65  NULL, or that re
b520: 74 75 72 6e 73 20 61 20 63 6f 70 79 0a 2a 2a 20  turns a copy.** 
b530: 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 74  of the result st
b540: 72 69 6e 67 20 69 66 20 74 68 65 20 73 74 72 69  ring if the stri
b550: 6e 67 20 69 73 20 6e 6f 6e 2d 4e 55 4c 4c 2e 0a  ng is non-NULL..
b560: 2a 2a 20 5e 49 66 20 74 68 65 20 5b 53 51 4c 49  ** ^If the [SQLI
b570: 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d  TE_FCNTL_PRAGMA]
b580: 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65   file control re
b590: 74 75 72 6e 73 0a 2a 2a 20 61 6e 79 20 72 65 73  turns.** any res
b5a0: 75 6c 74 20 63 6f 64 65 20 6f 74 68 65 72 20 74  ult code other t
b5b0: 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  han [SQLITE_OK] 
b5c0: 6f 72 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46 4f  or [SQLITE_NOTFO
b5d0: 55 4e 44 5d 2c 20 74 68 61 74 20 6d 65 61 6e 73  UND], that means
b5e0: 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 56 46 53  .** that the VFS
b5f0: 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e 20   encountered an 
b600: 65 72 72 6f 72 20 77 68 69 6c 65 20 68 61 6e 64  error while hand
b610: 6c 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41  ling the [PRAGMA
b620: 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 63 6f 6d  ] and the.** com
b630: 70 69 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  pilation of the 
b640: 50 52 41 47 4d 41 20 66 61 69 6c 73 20 77 69 74  PRAGMA fails wit
b650: 68 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 54 68  h an error.  ^Th
b660: 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
b670: 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65 20  PRAGMA].** file 
b680: 63 6f 6e 74 72 6f 6c 20 6f 63 63 75 72 73 20 61  control occurs a
b690: 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  t the beginning 
b6a0: 6f 66 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d  of pragma statem
b6b0: 65 6e 74 20 61 6e 61 6c 79 73 69 73 20 61 6e 64  ent analysis and
b6c0: 20 73 6f 0a 2a 2a 20 69 74 20 69 73 20 61 62 6c   so.** it is abl
b6d0: 65 20 74 6f 20 6f 76 65 72 72 69 64 65 20 62 75  e to override bu
b6e0: 69 6c 74 2d 69 6e 20 5b 50 52 41 47 4d 41 5d 20  ilt-in [PRAGMA] 
b6f0: 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a  statements..**.*
b700: 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
b710: 43 4e 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52  CNTL_BUSYHANDLER
b720: 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  ]].** ^The [SQLI
b730: 54 45 5f 46 43 4e 54 4c 5f 42 55 53 59 48 41 4e  TE_FCNTL_BUSYHAN
b740: 44 4c 45 52 5d 0a 2a 2a 20 66 69 6c 65 2d 63 6f  DLER].** file-co
b750: 6e 74 72 6f 6c 20 6d 61 79 20 62 65 20 69 6e 76  ntrol may be inv
b760: 6f 6b 65 64 20 62 79 20 53 51 4c 69 74 65 20 6f  oked by SQLite o
b770: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
b780: 69 6c 65 20 68 61 6e 64 6c 65 0a 2a 2a 20 73 68  ile handle.** sh
b790: 6f 72 74 6c 79 20 61 66 74 65 72 20 69 74 20 69  ortly after it i
b7a0: 73 20 6f 70 65 6e 65 64 20 69 6e 20 6f 72 64 65  s opened in orde
b7b0: 72 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 63  r to provide a c
b7c0: 75 73 74 6f 6d 20 56 46 53 20 77 69 74 68 20 61  ustom VFS with a
b7d0: 63 63 65 73 73 0a 2a 2a 20 74 6f 20 74 68 65 20  ccess.** to the 
b7e0: 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 62 75 73 79  connections busy
b7f0: 2d 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63  -handler callbac
b800: 6b 2e 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20  k. The argument 
b810: 69 73 20 6f 66 20 74 79 70 65 20 28 76 6f 69 64  is of type (void
b820: 20 2a 2a 29 0a 2a 2a 20 2d 20 61 6e 20 61 72 72   **).** - an arr
b830: 61 79 20 6f 66 20 74 77 6f 20 28 76 6f 69 64 20  ay of two (void 
b840: 2a 29 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66  *) values. The f
b850: 69 72 73 74 20 28 76 6f 69 64 20 2a 29 20 61 63  irst (void *) ac
b860: 74 75 61 6c 6c 79 20 70 6f 69 6e 74 73 0a 2a 2a  tually points.**
b870: 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f   to a function o
b880: 66 20 74 79 70 65 20 28 69 6e 74 20 28 2a 29 28  f type (int (*)(
b890: 76 6f 69 64 20 2a 29 29 2e 20 49 6e 20 6f 72 64  void *)). In ord
b8a0: 65 72 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65  er to invoke the
b8b0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20   connections.** 
b8c0: 62 75 73 79 2d 68 61 6e 64 6c 65 72 2c 20 74 68  busy-handler, th
b8d0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75  is function shou
b8e0: 6c 64 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69  ld be invoked wi
b8f0: 74 68 20 74 68 65 20 73 65 63 6f 6e 64 20 28 76  th the second (v
b900: 6f 69 64 20 2a 29 20 69 6e 0a 2a 2a 20 74 68 65  oid *) in.** the
b910: 20 61 72 72 61 79 20 61 73 20 74 68 65 20 6f 6e   array as the on
b920: 6c 79 20 61 72 67 75 6d 65 6e 74 2e 20 49 66 20  ly argument. If 
b930: 69 74 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a  it returns non-z
b940: 65 72 6f 2c 20 74 68 65 6e 20 74 68 65 20 6f 70  ero, then the op
b950: 65 72 61 74 69 6f 6e 0a 2a 2a 20 73 68 6f 75 6c  eration.** shoul
b960: 64 20 62 65 20 72 65 74 72 69 65 64 2e 20 49 66  d be retried. If
b970: 20 69 74 20 72 65 74 75 72 6e 73 20 7a 65 72 6f   it returns zero
b980: 2c 20 74 68 65 20 63 75 73 74 6f 6d 20 56 46 53  , the custom VFS
b990: 20 73 68 6f 75 6c 64 20 61 62 61 6e 64 6f 6e 20   should abandon 
b9a0: 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20 6f  the.** current o
b9b0: 70 65 72 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  peration..**.** 
b9c0: 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
b9d0: 54 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 5d  TL_TEMPFILENAME]
b9e0: 5d 0a 2a 2a 20 5e 41 70 70 6c 69 63 61 74 69 6f  ].** ^Applicatio
b9f0: 6e 20 63 61 6e 20 69 6e 76 6f 6b 65 20 74 68 65  n can invoke the
ba00: 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
ba10: 45 4d 50 46 49 4c 45 4e 41 4d 45 5d 20 66 69 6c  EMPFILENAME] fil
ba20: 65 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 74 6f 20  e-control.** to 
ba30: 68 61 76 65 20 53 51 4c 69 74 65 20 67 65 6e 65  have SQLite gene
ba40: 72 61 74 65 20 61 0a 2a 2a 20 74 65 6d 70 6f 72  rate a.** tempor
ba50: 61 72 79 20 66 69 6c 65 6e 61 6d 65 20 75 73 69  ary filename usi
ba60: 6e 67 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f  ng the same algo
ba70: 72 69 74 68 6d 20 74 68 61 74 20 69 73 20 66 6f  rithm that is fo
ba80: 6c 6c 6f 77 65 64 20 74 6f 20 67 65 6e 65 72 61  llowed to genera
ba90: 74 65 0a 2a 2a 20 74 65 6d 70 6f 72 61 72 79 20  te.** temporary 
baa0: 66 69 6c 65 6e 61 6d 65 73 20 66 6f 72 20 54 45  filenames for TE
bab0: 4d 50 20 74 61 62 6c 65 73 20 61 6e 64 20 6f 74  MP tables and ot
bac0: 68 65 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65  her internal use
bad0: 73 2e 20 20 54 68 65 0a 2a 2a 20 61 72 67 75 6d  s.  The.** argum
bae0: 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 61 20  ent should be a 
baf0: 63 68 61 72 2a 2a 20 77 68 69 63 68 20 77 69 6c  char** which wil
bb00: 6c 20 62 65 20 66 69 6c 6c 65 64 20 77 69 74 68  l be filled with
bb10: 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a   the filename.**
bb20: 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65   written into me
bb30: 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72  mory obtained fr
bb40: 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  om [sqlite3_mall
bb50: 6f 63 28 29 5d 2e 20 20 54 68 65 20 63 61 6c 6c  oc()].  The call
bb60: 65 72 20 73 68 6f 75 6c 64 0a 2a 2a 20 69 6e 76  er should.** inv
bb70: 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  oke [sqlite3_fre
bb80: 65 28 29 5d 20 6f 6e 20 74 68 65 20 72 65 73 75  e()] on the resu
bb90: 6c 74 20 74 6f 20 61 76 6f 69 64 20 61 20 6d 65  lt to avoid a me
bba0: 6d 6f 72 79 20 6c 65 61 6b 2e 0a 2a 2a 0a 2a 2a  mory leak..**.**
bbb0: 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
bbc0: 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a  NTL_MMAP_SIZE]].
bbd0: 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
bbe0: 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20  CNTL_MMAP_SIZE] 
bbf0: 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20  file control is 
bc00: 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 6f 72  used to query or
bc10: 20 73 65 74 20 74 68 65 0a 2a 2a 20 6d 61 78 69   set the.** maxi
bc20: 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  mum number of by
bc30: 74 65 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65  tes that will be
bc40: 20 75 73 65 64 20 66 6f 72 20 6d 65 6d 6f 72 79   used for memory
bc50: 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 2a 2a 20  -mapped I/O..** 
bc60: 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  The argument is 
bc70: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 76  a pointer to a v
bc80: 61 6c 75 65 20 6f 66 20 74 79 70 65 20 73 71 6c  alue of type sql
bc90: 69 74 65 33 5f 69 6e 74 36 34 20 74 68 61 74 0a  ite3_int64 that.
bca0: 2a 2a 20 69 73 20 61 6e 20 61 64 76 69 73 6f 72  ** is an advisor
bcb0: 79 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  y maximum number
bcc0: 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 65   of bytes in the
bcd0: 20 66 69 6c 65 20 74 6f 20 6d 65 6d 6f 72 79 20   file to memory 
bce0: 6d 61 70 2e 20 20 54 68 65 0a 2a 2a 20 70 6f 69  map.  The.** poi
bcf0: 6e 74 65 72 20 69 73 20 6f 76 65 72 77 72 69 74  nter is overwrit
bd00: 74 65 6e 20 77 69 74 68 20 74 68 65 20 6f 6c 64  ten with the old
bd10: 20 76 61 6c 75 65 2e 20 20 54 68 65 20 6c 69 6d   value.  The lim
bd20: 69 74 20 69 73 20 6e 6f 74 20 63 68 61 6e 67 65  it is not change
bd30: 64 20 69 66 0a 2a 2a 20 74 68 65 20 76 61 6c 75  d if.** the valu
bd40: 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 70 6f 69  e originally poi
bd50: 6e 74 65 64 20 74 6f 20 69 73 20 6e 65 67 61 74  nted to is negat
bd60: 69 76 65 2c 20 61 6e 64 20 73 6f 20 74 68 65 20  ive, and so the 
bd70: 63 75 72 72 65 6e 74 20 6c 69 6d 69 74 20 0a 2a  current limit .*
bd80: 2a 20 63 61 6e 20 62 65 20 71 75 65 72 69 65 64  * can be queried
bd90: 20 62 79 20 70 61 73 73 69 6e 67 20 69 6e 20 61   by passing in a
bda0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 65   pointer to a ne
bdb0: 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2e 20 20  gative number.  
bdc0: 54 68 69 73 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e  This.** file-con
bdd0: 74 72 6f 6c 20 69 73 20 75 73 65 64 20 69 6e 74  trol is used int
bde0: 65 72 6e 61 6c 6c 79 20 74 6f 20 69 6d 70 6c 65  ernally to imple
bdf0: 6d 65 6e 74 20 5b 50 52 41 47 4d 41 20 6d 6d 61  ment [PRAGMA mma
be00: 70 5f 73 69 7a 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  p_size]..**.** <
be10: 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
be20: 4c 5f 54 52 41 43 45 5d 5d 0a 2a 2a 20 54 68 65  L_TRACE]].** The
be30: 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
be40: 52 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72  RACE] file contr
be50: 6f 6c 20 70 72 6f 76 69 64 65 73 20 61 64 76 69  ol provides advi
be60: 73 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  sory information
be70: 0a 2a 2a 20 74 6f 20 74 68 65 20 56 46 53 20 61  .** to the VFS a
be80: 62 6f 75 74 20 77 68 61 74 20 74 68 65 20 68 69  bout what the hi
be90: 67 68 65 72 20 6c 61 79 65 72 73 20 6f 66 20 74  gher layers of t
bea0: 68 65 20 53 51 4c 69 74 65 20 73 74 61 63 6b 20  he SQLite stack 
beb0: 61 72 65 20 64 6f 69 6e 67 2e 0a 2a 2a 20 54 68  are doing..** Th
bec0: 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  is file control 
bed0: 69 73 20 75 73 65 64 20 62 79 20 73 6f 6d 65 20  is used by some 
bee0: 56 46 53 20 61 63 74 69 76 69 74 79 20 74 72 61  VFS activity tra
bef0: 63 69 6e 67 20 5b 73 68 69 6d 73 5d 2e 0a 2a 2a  cing [shims]..**
bf00: 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   The argument is
bf10: 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74   a zero-terminat
bf20: 65 64 20 73 74 72 69 6e 67 2e 20 20 48 69 67 68  ed string.  High
bf30: 65 72 20 6c 61 79 65 72 73 20 69 6e 20 74 68 65  er layers in the
bf40: 0a 2a 2a 20 53 51 4c 69 74 65 20 73 74 61 63 6b  .** SQLite stack
bf50: 20 6d 61 79 20 67 65 6e 65 72 61 74 65 20 69 6e   may generate in
bf60: 73 74 61 6e 63 65 73 20 6f 66 20 74 68 69 73 20  stances of this 
bf70: 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 66 0a  file control if.
bf80: 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 55  ** the [SQLITE_U
bf90: 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20  SE_FCNTL_TRACE] 
bfa0: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
bfb0: 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a  ion is enabled..
bfc0: 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
bfd0: 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56  TE_FCNTL_HAS_MOV
bfe0: 45 44 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ED]].** The [SQL
bff0: 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f  ITE_FCNTL_HAS_MO
c000: 56 45 44 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f  VED] file contro
c010: 6c 20 69 6e 74 65 72 70 72 65 74 73 20 69 74 73  l interprets its
c020: 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 0a 2a   argument as a.*
c030: 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  * pointer to an 
c040: 69 6e 74 65 67 65 72 20 61 6e 64 20 69 74 20 77  integer and it w
c050: 72 69 74 65 73 20 61 20 62 6f 6f 6c 65 61 6e 20  rites a boolean 
c060: 69 6e 74 6f 20 74 68 61 74 20 69 6e 74 65 67 65  into that intege
c070: 72 20 64 65 70 65 6e 64 69 6e 67 0a 2a 2a 20 6f  r depending.** o
c080: 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  n whether or not
c090: 20 74 68 65 20 66 69 6c 65 20 68 61 73 20 62 65   the file has be
c0a0: 65 6e 20 72 65 6e 61 6d 65 64 2c 20 6d 6f 76 65  en renamed, move
c0b0: 64 2c 20 6f 72 20 64 65 6c 65 74 65 64 20 73 69  d, or deleted si
c0c0: 6e 63 65 20 69 74 0a 2a 2a 20 77 61 73 20 66 69  nce it.** was fi
c0d0: 72 73 74 20 6f 70 65 6e 65 64 2e 0a 2a 2a 0a 2a  rst opened..**.*
c0e0: 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
c0f0: 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48  CNTL_WIN32_GET_H
c100: 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b  ANDLE]].** The [
c110: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e  SQLITE_FCNTL_WIN
c120: 33 32 5f 47 45 54 5f 48 41 4e 44 4c 45 5d 20 6f  32_GET_HANDLE] o
c130: 70 63 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65  pcode can be use
c140: 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 0a  d to obtain the.
c150: 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61  ** underlying na
c160: 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64 6c 65  tive file handle
c170: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
c180: 20 61 20 66 69 6c 65 20 68 61 6e 64 6c 65 2e 20   a file handle. 
c190: 20 54 68 69 73 20 66 69 6c 65 0a 2a 2a 20 63 6f   This file.** co
c1a0: 6e 74 72 6f 6c 20 69 6e 74 65 72 70 72 65 74 73  ntrol interprets
c1b0: 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 61 73   its argument as
c1c0: 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
c1d0: 6e 61 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64  native file hand
c1e0: 6c 65 20 61 6e 64 0a 2a 2a 20 77 72 69 74 65 73  le and.** writes
c1f0: 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 76   the resulting v
c200: 61 6c 75 65 20 74 68 65 72 65 2e 0a 2a 2a 0a 2a  alue there..**.*
c210: 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
c220: 43 4e 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f 48  CNTL_WIN32_SET_H
c230: 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b  ANDLE]].** The [
c240: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e  SQLITE_FCNTL_WIN
c250: 33 32 5f 53 45 54 5f 48 41 4e 44 4c 45 5d 20 6f  32_SET_HANDLE] o
c260: 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 66 6f  pcode is used fo
c270: 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54 68  r debugging.  Th
c280: 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61 75  is.** opcode cau
c290: 73 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f 6e  ses the xFileCon
c2a0: 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20 73  trol method to s
c2b0: 77 61 70 20 74 68 65 20 66 69 6c 65 20 68 61 6e  wap the file han
c2c0: 64 6c 65 20 77 69 74 68 20 74 68 65 20 6f 6e 65  dle with the one
c2d0: 0a 2a 2a 20 70 6f 69 6e 74 65 64 20 74 6f 20 62  .** pointed to b
c2e0: 79 20 74 68 65 20 70 41 72 67 20 61 72 67 75 6d  y the pArg argum
c2f0: 65 6e 74 2e 20 20 54 68 69 73 20 63 61 70 61 62  ent.  This capab
c300: 69 6c 69 74 79 20 69 73 20 75 73 65 64 20 64 75  ility is used du
c310: 72 69 6e 67 20 74 65 73 74 69 6e 67 0a 2a 2a 20  ring testing.** 
c320: 61 6e 64 20 6f 6e 6c 79 20 6e 65 65 64 73 20 74  and only needs t
c330: 6f 20 62 65 20 73 75 70 70 6f 72 74 65 64 20 77  o be supported w
c340: 68 65 6e 20 53 51 4c 49 54 45 5f 54 45 53 54 20  hen SQLITE_TEST 
c350: 69 73 20 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a  is defined..**.*
c360: 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
c370: 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 5d  CNTL_WAL_BLOCK]]
c380: 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
c390: 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d  FCNTL_WAL_BLOCK]
c3a0: 20 69 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20   is a signal to 
c3b0: 74 68 65 20 56 46 53 20 6c 61 79 65 72 20 74 68  the VFS layer th
c3c0: 61 74 20 69 74 20 6d 69 67 68 74 0a 2a 2a 20 62  at it might.** b
c3d0: 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73 20 74  e advantageous t
c3e0: 6f 20 62 6c 6f 63 6b 20 6f 6e 20 74 68 65 20 6e  o block on the n
c3f0: 65 78 74 20 57 41 4c 20 6c 6f 63 6b 20 69 66 20  ext WAL lock if 
c400: 74 68 65 20 6c 6f 63 6b 20 69 73 20 6e 6f 74 20  the lock is not 
c410: 69 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 61  immediately.** a
c420: 76 61 69 6c 61 62 6c 65 2e 20 20 54 68 65 20 57  vailable.  The W
c430: 41 4c 20 73 75 62 73 79 73 74 65 6d 20 69 73 73  AL subsystem iss
c440: 75 65 73 20 74 68 69 73 20 73 69 67 6e 61 6c 20  ues this signal 
c450: 64 75 72 69 6e 67 20 72 61 72 65 0a 2a 2a 20 63  during rare.** c
c460: 69 72 63 75 6d 73 74 61 6e 63 65 73 20 69 6e 20  ircumstances in 
c470: 6f 72 64 65 72 20 74 6f 20 66 69 78 20 61 20 70  order to fix a p
c480: 72 6f 62 6c 65 6d 20 77 69 74 68 20 70 72 69 6f  roblem with prio
c490: 72 69 74 79 20 69 6e 76 65 72 73 69 6f 6e 2e 0a  rity inversion..
c4a0: 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  ** Applications 
c4b0: 73 68 6f 75 6c 64 20 3c 65 6d 3e 6e 6f 74 3c 2f  should <em>not</
c4c0: 65 6d 3e 20 75 73 65 20 74 68 69 73 20 66 69 6c  em> use this fil
c4d0: 65 2d 63 6f 6e 74 72 6f 6c 2e 0a 2a 2a 0a 2a 2a  e-control..**.**
c4e0: 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
c4f0: 4e 54 4c 5f 5a 49 50 56 46 53 5d 5d 0a 2a 2a 20  NTL_ZIPVFS]].** 
c500: 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
c510: 4c 5f 5a 49 50 56 46 53 5d 20 6f 70 63 6f 64 65  L_ZIPVFS] opcode
c520: 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
c530: 62 79 20 7a 69 70 76 66 73 20 6f 6e 6c 79 2e 20  by zipvfs only. 
c540: 41 6c 6c 20 6f 74 68 65 72 0a 2a 2a 20 56 46 53  All other.** VFS
c550: 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 53   should return S
c560: 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 66  QLITE_NOTFOUND f
c570: 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65 2e 0a  or this opcode..
c580: 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
c590: 54 45 5f 46 43 4e 54 4c 5f 52 42 55 5d 5d 0a 2a  TE_FCNTL_RBU]].*
c5a0: 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
c5b0: 4e 54 4c 5f 52 42 55 5d 20 6f 70 63 6f 64 65 20  NTL_RBU] opcode 
c5c0: 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
c5d0: 79 20 74 68 65 20 73 70 65 63 69 61 6c 20 56 46  y the special VF
c5e0: 53 20 75 73 65 64 20 62 79 0a 2a 2a 20 74 68 65  S used by.** the
c5f0: 20 52 42 55 20 65 78 74 65 6e 73 69 6f 6e 20 6f   RBU extension o
c600: 6e 6c 79 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20  nly.  All other 
c610: 56 46 53 20 73 68 6f 75 6c 64 20 72 65 74 75 72  VFS should retur
c620: 6e 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e  n SQLITE_NOTFOUN
c630: 44 20 66 6f 72 0a 2a 2a 20 74 68 69 73 20 6f 70  D for.** this op
c640: 63 6f 64 65 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c  code.  .**.** <l
c650: 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
c660: 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52  _BEGIN_ATOMIC_WR
c670: 49 54 45 5d 5d 0a 2a 2a 20 49 66 20 74 68 65 20  ITE]].** If the 
c680: 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45  [SQLITE_FCNTL_BE
c690: 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  GIN_ATOMIC_WRITE
c6a0: 5d 20 6f 70 63 6f 64 65 20 72 65 74 75 72 6e 73  ] opcode returns
c6b0: 20 53 51 4c 49 54 45 5f 4f 4b 2c 20 74 68 65 6e   SQLITE_OK, then
c6c0: 0a 2a 2a 20 74 68 65 20 66 69 6c 65 20 64 65 73  .** the file des
c6d0: 63 72 69 70 74 6f 72 20 69 73 20 70 6c 61 63 65  criptor is place
c6e0: 64 20 69 6e 20 22 62 61 74 63 68 20 77 72 69 74  d in "batch writ
c6f0: 65 20 6d 6f 64 65 22 2c 20 77 68 69 63 68 0a 2a  e mode", which.*
c700: 2a 20 6d 65 61 6e 73 20 61 6c 6c 20 73 75 62 73  * means all subs
c710: 65 71 75 65 6e 74 20 77 72 69 74 65 20 6f 70 65  equent write ope
c720: 72 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20  rations will be 
c730: 64 65 66 65 72 72 65 64 20 61 6e 64 20 64 6f 6e  deferred and don
c740: 65 0a 2a 2a 20 61 74 6f 6d 69 63 61 6c 6c 79 20  e.** atomically 
c750: 61 74 20 74 68 65 20 6e 65 78 74 20 5b 53 51 4c  at the next [SQL
c760: 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54  ITE_FCNTL_COMMIT
c770: 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 20  _ATOMIC_WRITE]. 
c780: 20 53 79 73 74 65 6d 73 0a 2a 2a 20 74 68 61 74   Systems.** that
c790: 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20   do not support 
c7a0: 62 61 74 63 68 20 61 74 6f 6d 69 63 20 77 72 69  batch atomic wri
c7b0: 74 65 73 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  tes will return 
c7c0: 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 2e  SQLITE_NOTFOUND.
c7d0: 0a 2a 2a 20 5e 46 6f 6c 6c 6f 77 69 6e 67 20 61  .** ^Following a
c7e0: 20 73 75 63 63 65 73 73 66 75 6c 20 53 51 4c 49   successful SQLI
c7f0: 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41  TE_FCNTL_BEGIN_A
c800: 54 4f 4d 49 43 5f 57 52 49 54 45 20 61 6e 64 20  TOMIC_WRITE and 
c810: 70 72 69 6f 72 20 74 6f 0a 2a 2a 20 74 68 65 20  prior to.** the 
c820: 63 6c 6f 73 69 6e 67 20 5b 53 51 4c 49 54 45 5f  closing [SQLITE_
c830: 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
c840: 4d 49 43 5f 57 52 49 54 45 5d 20 6f 72 0a 2a 2a  MIC_WRITE] or.**
c850: 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52   [SQLITE_FCNTL_R
c860: 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57  OLLBACK_ATOMIC_W
c870: 52 49 54 45 5d 2c 20 53 51 4c 69 74 65 20 77 69  RITE], SQLite wi
c880: 6c 6c 20 6d 61 6b 65 0a 2a 2a 20 6e 6f 20 56 46  ll make.** no VF
c890: 53 20 69 6e 74 65 72 66 61 63 65 20 63 61 6c 6c  S interface call
c8a0: 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b 73  s on the same [s
c8b0: 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 66 69 6c  qlite3_file] fil
c8c0: 65 20 64 65 73 63 72 69 70 74 6f 72 0a 2a 2a 20  e descriptor.** 
c8d0: 65 78 63 65 70 74 20 66 6f 72 20 63 61 6c 6c 73  except for calls
c8e0: 20 74 6f 20 74 68 65 20 78 57 72 69 74 65 20 6d   to the xWrite m
c8f0: 65 74 68 6f 64 20 61 6e 64 20 74 68 65 20 78 46  ethod and the xF
c900: 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f  ileControl metho
c910: 64 0a 2a 2a 20 77 69 74 68 20 5b 53 51 4c 49 54  d.** with [SQLIT
c920: 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e  E_FCNTL_SIZE_HIN
c930: 54 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  T]..**.** <li>[[
c940: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d  SQLITE_FCNTL_COM
c950: 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  MIT_ATOMIC_WRITE
c960: 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  ]].** The [SQLIT
c970: 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41  E_FCNTL_COMMIT_A
c980: 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70 63  TOMIC_WRITE] opc
c990: 6f 64 65 20 63 61 75 73 65 73 20 61 6c 6c 20 77  ode causes all w
c9a0: 72 69 74 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f  rite.** operatio
c9b0: 6e 73 20 73 69 6e 63 65 20 74 68 65 20 70 72 65  ns since the pre
c9c0: 76 69 6f 75 73 20 73 75 63 63 65 73 73 66 75 6c  vious successful
c9d0: 20 63 61 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51   call to .** [SQ
c9e0: 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e  LITE_FCNTL_BEGIN
c9f0: 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74  _ATOMIC_WRITE] t
ca00: 6f 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20 61  o be performed a
ca10: 74 6f 6d 69 63 61 6c 6c 79 2e 0a 2a 2a 20 54 68  tomically..** Th
ca20: 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  is file control 
ca30: 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
ca40: 4f 4b 5d 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  OK] if and only 
ca50: 69 66 20 74 68 65 20 77 72 69 74 65 73 20 77 65  if the writes we
ca60: 72 65 0a 2a 2a 20 61 6c 6c 20 70 65 72 66 6f 72  re.** all perfor
ca70: 6d 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  med successfully
ca80: 20 61 6e 64 20 68 61 76 65 20 62 65 65 6e 20 63   and have been c
ca90: 6f 6d 6d 69 74 74 65 64 20 74 6f 20 70 65 72 73  ommitted to pers
caa0: 69 73 74 65 6e 74 20 73 74 6f 72 61 67 65 2e 0a  istent storage..
cab0: 2a 2a 20 5e 52 65 67 61 72 64 6c 65 73 73 20 6f  ** ^Regardless o
cac0: 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  f whether or not
cad0: 20 69 74 20 69 73 20 73 75 63 63 65 73 73 66 75   it is successfu
cae0: 6c 2c 20 74 68 69 73 20 66 69 6c 65 20 63 6f 6e  l, this file con
caf0: 74 72 6f 6c 20 74 61 6b 65 73 0a 2a 2a 20 74 68  trol takes.** th
cb00: 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  e file descripto
cb10: 72 20 6f 75 74 20 6f 66 20 62 61 74 63 68 20 77  r out of batch w
cb20: 72 69 74 65 20 6d 6f 64 65 20 73 6f 20 74 68 61  rite mode so tha
cb30: 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e 74  t all subsequent
cb40: 0a 2a 2a 20 77 72 69 74 65 20 6f 70 65 72 61 74  .** write operat
cb50: 69 6f 6e 73 20 61 72 65 20 69 6e 64 65 70 65 6e  ions are indepen
cb60: 64 65 6e 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65  dent..** ^SQLite
cb70: 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f   will never invo
cb80: 6b 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ke SQLITE_FCNTL_
cb90: 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52  COMMIT_ATOMIC_WR
cba0: 49 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61  ITE without.** a
cbb0: 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75   prior successfu
cbc0: 6c 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54  l call to [SQLIT
cbd0: 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
cbe0: 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a  OMIC_WRITE]..**.
cbf0: 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
cc00: 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41  FCNTL_ROLLBACK_A
cc10: 54 4f 4d 49 43 5f 57 52 49 54 45 5d 5d 0a 2a 2a  TOMIC_WRITE]].**
cc20: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   The [SQLITE_FCN
cc30: 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d  TL_ROLLBACK_ATOM
cc40: 49 43 5f 57 52 49 54 45 5d 20 6f 70 63 6f 64 65  IC_WRITE] opcode
cc50: 20 63 61 75 73 65 73 20 61 6c 6c 20 77 72 69 74   causes all writ
cc60: 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 73 20  e.** operations 
cc70: 73 69 6e 63 65 20 74 68 65 20 70 72 65 76 69 6f  since the previo
cc80: 75 73 20 73 75 63 63 65 73 73 66 75 6c 20 63 61  us successful ca
cc90: 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51 4c 49 54  ll to .** [SQLIT
cca0: 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
ccb0: 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74 6f 20 62  OMIC_WRITE] to b
ccc0: 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a  e rolled back..*
ccd0: 2a 20 5e 54 68 69 73 20 66 69 6c 65 20 63 6f 6e  * ^This file con
cce0: 74 72 6f 6c 20 74 61 6b 65 73 20 74 68 65 20 66  trol takes the f
ccf0: 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 6f  ile descriptor o
cd00: 75 74 20 6f 66 20 62 61 74 63 68 20 77 72 69 74  ut of batch writ
cd10: 65 20 6d 6f 64 65 0a 2a 2a 20 73 6f 20 74 68 61  e mode.** so tha
cd20: 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e 74  t all subsequent
cd30: 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
cd40: 73 20 61 72 65 20 69 6e 64 65 70 65 6e 64 65 6e  s are independen
cd50: 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69  t..** ^SQLite wi
cd60: 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20  ll never invoke 
cd70: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c  SQLITE_FCNTL_ROL
cd80: 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52 49  LBACK_ATOMIC_WRI
cd90: 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61 20  TE without.** a 
cda0: 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75 6c  prior successful
cdb0: 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54 45   call to [SQLITE
cdc0: 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f  _FCNTL_BEGIN_ATO
cdd0: 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a 2a  MIC_WRITE]..**.*
cde0: 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
cdf0: 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49 4d 45 4f 55  CNTL_LOCK_TIMEOU
ce00: 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  T]].** The [SQLI
ce10: 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49  TE_FCNTL_LOCK_TI
ce20: 4d 45 4f 55 54 5d 20 6f 70 63 6f 64 65 20 63 61  MEOUT] opcode ca
ce30: 75 73 65 73 20 61 74 74 65 6d 70 74 73 20 74 6f  uses attempts to
ce40: 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 20 66 69 6c   obtain.** a fil
ce50: 65 20 6c 6f 63 6b 20 75 73 69 6e 67 20 74 68 65  e lock using the
ce60: 20 78 4c 6f 63 6b 20 6f 72 20 78 53 68 6d 4c 6f   xLock or xShmLo
ce70: 63 6b 20 6d 65 74 68 6f 64 73 20 6f 66 20 74 68  ck methods of th
ce80: 65 20 56 46 53 20 74 6f 20 77 61 69 74 0a 2a 2a  e VFS to wait.**
ce90: 20 66 6f 72 20 75 70 20 74 6f 20 4d 20 6d 69 6c   for up to M mil
cea0: 6c 69 73 65 63 6f 6e 64 73 20 62 65 66 6f 72 65  liseconds before
ceb0: 20 66 61 69 6c 69 6e 67 2c 20 77 68 65 72 65 20   failing, where 
cec0: 4d 20 69 73 20 74 68 65 20 73 69 6e 67 6c 65 20  M is the single 
ced0: 0a 2a 2a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74  .** unsigned int
cee0: 65 67 65 72 20 70 61 72 61 6d 65 74 65 72 2e 0a  eger parameter..
cef0: 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
cf00: 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56 45  TE_FCNTL_DATA_VE
cf10: 52 53 49 4f 4e 5d 5d 0a 2a 2a 20 54 68 65 20 5b  RSION]].** The [
cf20: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44 41 54  SQLITE_FCNTL_DAT
cf30: 41 5f 56 45 52 53 49 4f 4e 5d 20 6f 70 63 6f 64  A_VERSION] opcod
cf40: 65 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74  e is used to det
cf50: 65 63 74 20 63 68 61 6e 67 65 73 20 74 6f 0a 2a  ect changes to.*
cf60: 2a 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c  * a database fil
cf70: 65 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e 74  e.  The argument
cf80: 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
cf90: 20 61 20 33 32 2d 62 69 74 20 75 6e 73 69 67 6e   a 32-bit unsign
cfa0: 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20 54  ed integer..** T
cfb0: 68 65 20 22 64 61 74 61 20 76 65 72 73 69 6f 6e  he "data version
cfc0: 22 20 66 6f 72 20 74 68 65 20 70 61 67 65 72 20  " for the pager 
cfd0: 69 73 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20  is written into 
cfe0: 74 68 65 20 70 6f 69 6e 74 65 72 2e 20 20 54 68  the pointer.  Th
cff0: 65 0a 2a 2a 20 22 64 61 74 61 20 76 65 72 73 69  e.** "data versi
d000: 6f 6e 22 20 63 68 61 6e 67 65 73 20 77 68 65 6e  on" changes when
d010: 65 76 65 72 20 61 6e 79 20 63 68 61 6e 67 65 20  ever any change 
d020: 6f 63 63 75 72 73 20 74 6f 20 74 68 65 20 63 6f  occurs to the co
d030: 72 72 65 73 70 6f 6e 64 69 6e 67 0a 2a 2a 20 64  rresponding.** d
d040: 61 74 61 62 61 73 65 20 66 69 6c 65 2c 20 65 69  atabase file, ei
d050: 74 68 65 72 20 74 68 72 6f 75 67 68 20 53 51 4c  ther through SQL
d060: 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 20 74   statements on t
d070: 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65  he same database
d080: 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  .** connection o
d090: 72 20 74 68 72 6f 75 67 68 20 74 72 61 6e 73 61  r through transa
d0a0: 63 74 69 6f 6e 73 20 63 6f 6d 6d 69 74 74 65 64  ctions committed
d0b0: 20 62 79 20 73 65 70 61 72 61 74 65 20 64 61 74   by separate dat
d0c0: 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74  abase.** connect
d0d0: 69 6f 6e 73 20 70 6f 73 73 69 62 6c 79 20 69 6e  ions possibly in
d0e0: 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 65 73   other processes
d0f0: 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 74  . The [sqlite3_t
d100: 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 0a  otal_changes()].
d110: 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e  ** interface can
d120: 20 62 65 20 75 73 65 64 20 74 6f 20 66 69 6e 64   be used to find
d130: 20 69 66 20 61 6e 79 20 64 61 74 61 62 61 73 65   if any database
d140: 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   on the connecti
d150: 6f 6e 20 68 61 73 20 63 68 61 6e 67 65 64 2c 0a  on has changed,.
d160: 2a 2a 20 62 75 74 20 74 68 61 74 20 69 6e 74 65  ** but that inte
d170: 72 66 61 63 65 20 72 65 73 70 6f 6e 64 73 20 74  rface responds t
d180: 6f 20 63 68 61 6e 67 65 73 20 6f 6e 20 54 45 4d  o changes on TEM
d190: 50 20 61 73 20 77 65 6c 6c 20 61 73 20 4d 41 49  P as well as MAI
d1a0: 4e 20 61 6e 64 20 64 6f 65 73 0a 2a 2a 20 6e 6f  N and does.** no
d1b0: 74 20 70 72 6f 76 69 64 65 20 61 20 6d 65 63 68  t provide a mech
d1c0: 61 6e 69 73 6d 20 74 6f 20 64 65 74 65 63 74 20  anism to detect 
d1d0: 63 68 61 6e 67 65 73 20 74 6f 20 4d 41 49 4e 20  changes to MAIN 
d1e0: 6f 6e 6c 79 2e 20 20 41 6c 73 6f 2c 20 74 68 65  only.  Also, the
d1f0: 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74  .** [sqlite3_tot
d200: 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20 69 6e  al_changes()] in
d210: 74 65 72 66 61 63 65 20 72 65 73 70 6f 6e 64 73  terface responds
d220: 20 74 6f 20 69 6e 74 65 72 6e 61 6c 20 63 68 61   to internal cha
d230: 6e 67 65 73 20 6f 6e 6c 79 20 61 6e 64 0a 2a 2a  nges only and.**
d240: 20 6f 6d 69 74 73 20 63 68 61 6e 67 65 73 20 6d   omits changes m
d250: 61 64 65 20 62 79 20 6f 74 68 65 72 20 64 61 74  ade by other dat
d260: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
d270: 73 2e 20 20 54 68 65 0a 2a 2a 20 5b 50 52 41 47  s.  The.** [PRAG
d280: 4d 41 20 64 61 74 61 5f 76 65 72 73 69 6f 6e 5d  MA data_version]
d290: 20 63 6f 6d 6d 61 6e 64 20 70 72 6f 76 69 64 65   command provide
d2a0: 20 61 20 6d 65 63 68 61 6e 69 73 6d 20 74 6f 20   a mechanism to 
d2b0: 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20 74  detect changes t
d2c0: 6f 0a 2a 2a 20 61 20 73 69 6e 67 6c 65 20 61 74  o.** a single at
d2d0: 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 20  tached database 
d2e0: 74 68 61 74 20 6f 63 63 75 72 20 64 75 65 20 74  that occur due t
d2f0: 6f 20 6f 74 68 65 72 20 64 61 74 61 62 61 73 65  o other database
d300: 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2c 0a 2a 2a   connections,.**
d310: 20 62 75 74 20 6f 6d 69 74 73 20 63 68 61 6e 67   but omits chang
d320: 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  es implemented b
d330: 79 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  y the database c
d340: 6f 6e 6e 65 63 74 69 6f 6e 20 6f 6e 20 77 68 69  onnection on whi
d350: 63 68 20 69 74 20 69 73 0a 2a 2a 20 63 61 6c 6c  ch it is.** call
d360: 65 64 2e 20 20 54 68 69 73 20 66 69 6c 65 20 63  ed.  This file c
d370: 6f 6e 74 72 6f 6c 20 69 73 20 74 68 65 20 6f 6e  ontrol is the on
d380: 6c 79 20 6d 65 63 68 61 6e 69 73 6d 20 74 6f 20  ly mechanism to 
d390: 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20 74  detect changes t
d3a0: 68 61 74 0a 2a 2a 20 68 61 70 70 65 6e 20 65 69  hat.** happen ei
d3b0: 74 68 65 72 20 69 6e 74 65 72 6e 61 6c 6c 79 20  ther internally 
d3c0: 6f 72 20 65 78 74 65 72 6e 61 6c 6c 79 20 61 6e  or externally an
d3d0: 64 20 74 68 61 74 20 61 72 65 20 61 73 73 6f 63  d that are assoc
d3e0: 69 61 74 65 64 20 77 69 74 68 0a 2a 2a 20 61 20  iated with.** a 
d3f0: 70 61 72 74 69 63 75 6c 61 72 20 61 74 74 61 63  particular attac
d400: 68 65 64 20 64 61 74 61 62 61 73 65 2e 0a 2a 2a  hed database..**
d410: 20 3c 2f 75 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e   </ul>.*/.#defin
d420: 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c  e SQLITE_FCNTL_L
d430: 4f 43 4b 53 54 41 54 45 20 20 20 20 20 20 20 20  OCKSTATE        
d440: 20 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65         1.#define
d450: 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 47 45   SQLITE_FCNTL_GE
d460: 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20  T_LOCKPROXYFILE 
d470: 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65 20        2.#define 
d480: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 45 54  SQLITE_FCNTL_SET
d490: 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20 20  _LOCKPROXYFILE  
d4a0: 20 20 20 20 20 33 0a 23 64 65 66 69 6e 65 20 53       3.#define S
d4b0: 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53 54  QLITE_FCNTL_LAST
d4c0: 5f 45 52 52 4e 4f 20 20 20 20 20 20 20 20 20 20  _ERRNO          
d4d0: 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53 51      4.#define SQ
d4e0: 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f  LITE_FCNTL_SIZE_
d4f0: 48 49 4e 54 20 20 20 20 20 20 20 20 20 20 20 20  HINT            
d500: 20 20 20 35 0a 23 64 65 66 69 6e 65 20 53 51 4c     5.#define SQL
d510: 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f  ITE_FCNTL_CHUNK_
d520: 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 20  SIZE            
d530: 20 20 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    6.#define SQLI
d540: 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f  TE_FCNTL_FILE_PO
d550: 49 4e 54 45 52 20 20 20 20 20 20 20 20 20 20 20  INTER           
d560: 20 37 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   7.#define SQLIT
d570: 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 5f 4f 4d 49  E_FCNTL_SYNC_OMI
d580: 54 54 45 44 20 20 20 20 20 20 20 20 20 20 20 20  TTED            
d590: 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  8.#define SQLITE
d5a0: 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56 5f  _FCNTL_WIN32_AV_
d5b0: 52 45 54 52 59 20 20 20 20 20 20 20 20 20 20 39  RETRY          9
d5c0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
d5d0: 46 43 4e 54 4c 5f 50 45 52 53 49 53 54 5f 57 41  FCNTL_PERSIST_WA
d5e0: 4c 20 20 20 20 20 20 20 20 20 20 20 20 31 30 0a  L            10.
d5f0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
d600: 43 4e 54 4c 5f 4f 56 45 52 57 52 49 54 45 20 20  CNTL_OVERWRITE  
d610: 20 20 20 20 20 20 20 20 20 20 20 20 31 31 0a 23              11.#
d620: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
d630: 4e 54 4c 5f 56 46 53 4e 41 4d 45 20 20 20 20 20  NTL_VFSNAME     
d640: 20 20 20 20 20 20 20 20 20 20 20 31 32 0a 23 64             12.#d
d650: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
d660: 54 4c 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45  TL_POWERSAFE_OVE
d670: 52 57 52 49 54 45 20 20 20 20 31 33 0a 23 64 65  RWRITE    13.#de
d680: 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
d690: 4c 5f 50 52 41 47 4d 41 20 20 20 20 20 20 20 20  L_PRAGMA        
d6a0: 20 20 20 20 20 20 20 20 20 31 34 0a 23 64 65 66           14.#def
d6b0: 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
d6c0: 5f 42 55 53 59 48 41 4e 44 4c 45 52 20 20 20 20  _BUSYHANDLER    
d6d0: 20 20 20 20 20 20 20 20 31 35 0a 23 64 65 66 69          15.#defi
d6e0: 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
d6f0: 54 45 4d 50 46 49 4c 45 4e 41 4d 45 20 20 20 20  TEMPFILENAME    
d700: 20 20 20 20 20 20 20 31 36 0a 23 64 65 66 69 6e         16.#defin
d710: 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d  e SQLITE_FCNTL_M
d720: 4d 41 50 5f 53 49 5a 45 20 20 20 20 20 20 20 20  MAP_SIZE        
d730: 20 20 20 20 20 20 31 38 0a 23 64 65 66 69 6e 65        18.#define
d740: 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52   SQLITE_FCNTL_TR
d750: 41 43 45 20 20 20 20 20 20 20 20 20 20 20 20 20  ACE             
d760: 20 20 20 20 20 31 39 0a 23 64 65 66 69 6e 65 20       19.#define 
d770: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53  SQLITE_FCNTL_HAS
d780: 5f 4d 4f 56 45 44 20 20 20 20 20 20 20 20 20 20  _MOVED          
d790: 20 20 20 20 32 30 0a 23 64 65 66 69 6e 65 20 53      20.#define S
d7a0: 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43  QLITE_FCNTL_SYNC
d7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7c0: 20 20 20 32 31 0a 23 64 65 66 69 6e 65 20 53 51     21.#define SQ
d7d0: 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49  LITE_FCNTL_COMMI
d7e0: 54 5f 50 48 41 53 45 54 57 4f 20 20 20 20 20 20  T_PHASETWO      
d7f0: 20 20 32 32 0a 23 64 65 66 69 6e 65 20 53 51 4c    22.#define SQL
d800: 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f  ITE_FCNTL_WIN32_
d810: 53 45 54 5f 48 41 4e 44 4c 45 20 20 20 20 20 20  SET_HANDLE      
d820: 20 32 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   23.#define SQLI
d830: 54 45 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f  TE_FCNTL_WAL_BLO
d840: 43 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  CK              
d850: 32 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  24.#define SQLIT
d860: 45 5f 46 43 4e 54 4c 5f 5a 49 50 56 46 53 20 20  E_FCNTL_ZIPVFS  
d870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
d880: 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  5.#define SQLITE
d890: 5f 46 43 4e 54 4c 5f 52 42 55 20 20 20 20 20 20  _FCNTL_RBU      
d8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 36                26
d8b0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
d8c0: 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45  FCNTL_VFS_POINTE
d8d0: 52 20 20 20 20 20 20 20 20 20 20 20 20 32 37 0a  R            27.
d8e0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
d8f0: 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49  CNTL_JOURNAL_POI
d900: 4e 54 45 52 20 20 20 20 20 20 20 20 32 38 0a 23  NTER        28.#
d910: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
d920: 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48 41  NTL_WIN32_GET_HA
d930: 4e 44 4c 45 20 20 20 20 20 20 20 32 39 0a 23 64  NDLE       29.#d
d940: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
d950: 54 4c 5f 50 44 42 20 20 20 20 20 20 20 20 20 20  TL_PDB          
d960: 20 20 20 20 20 20 20 20 20 20 33 30 0a 23 64 65            30.#de
d970: 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
d980: 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57  L_BEGIN_ATOMIC_W
d990: 52 49 54 45 20 20 20 20 20 33 31 0a 23 64 65 66  RITE     31.#def
d9a0: 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
d9b0: 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57  _COMMIT_ATOMIC_W
d9c0: 52 49 54 45 20 20 20 20 33 32 0a 23 64 65 66 69  RITE    32.#defi
d9d0: 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
d9e0: 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f  ROLLBACK_ATOMIC_
d9f0: 57 52 49 54 45 20 20 33 33 0a 23 64 65 66 69 6e  WRITE  33.#defin
da00: 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c  e SQLITE_FCNTL_L
da10: 4f 43 4b 5f 54 49 4d 45 4f 55 54 20 20 20 20 20  OCK_TIMEOUT     
da20: 20 20 20 20 20 20 33 34 0a 23 64 65 66 69 6e 65        34.#define
da30: 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44 41   SQLITE_FCNTL_DA
da40: 54 41 5f 56 45 52 53 49 4f 4e 20 20 20 20 20 20  TA_VERSION      
da50: 20 20 20 20 20 33 35 0a 0a 2f 2a 20 64 65 70 72       35../* depr
da60: 65 63 61 74 65 64 20 6e 61 6d 65 73 20 2a 2f 0a  ecated names */.
da70: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 47  #define SQLITE_G
da80: 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
da90: 20 20 20 20 20 20 53 51 4c 49 54 45 5f 46 43 4e        SQLITE_FCN
daa0: 54 4c 5f 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59  TL_GET_LOCKPROXY
dab0: 46 49 4c 45 0a 23 64 65 66 69 6e 65 20 53 51 4c  FILE.#define SQL
dac0: 49 54 45 5f 53 45 54 5f 4c 4f 43 4b 50 52 4f 58  ITE_SET_LOCKPROX
dad0: 59 46 49 4c 45 20 20 20 20 20 20 53 51 4c 49 54  YFILE      SQLIT
dae0: 45 5f 46 43 4e 54 4c 5f 53 45 54 5f 4c 4f 43 4b  E_FCNTL_SET_LOCK
daf0: 50 52 4f 58 59 46 49 4c 45 0a 23 64 65 66 69 6e  PROXYFILE.#defin
db00: 65 20 53 51 4c 49 54 45 5f 4c 41 53 54 5f 45 52  e SQLITE_LAST_ER
db10: 52 4e 4f 20 20 20 20 20 20 20 20 20 20 20 20 20  RNO             
db20: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53  SQLITE_FCNTL_LAS
db30: 54 5f 45 52 52 4e 4f 0a 0a 0a 2f 2a 0a 2a 2a 20  T_ERRNO.../*.** 
db40: 43 41 50 49 33 52 45 46 3a 20 4d 75 74 65 78 20  CAPI3REF: Mutex 
db50: 48 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20 54 68 65  Handle.**.** The
db60: 20 6d 75 74 65 78 20 6d 6f 64 75 6c 65 20 77 69   mutex module wi
db70: 74 68 69 6e 20 53 51 4c 69 74 65 20 64 65 66 69  thin SQLite defi
db80: 6e 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  nes [sqlite3_mut
db90: 65 78 5d 20 74 6f 20 62 65 20 61 6e 0a 2a 2a 20  ex] to be an.** 
dba0: 61 62 73 74 72 61 63 74 20 74 79 70 65 20 66 6f  abstract type fo
dbb0: 72 20 61 20 6d 75 74 65 78 20 6f 62 6a 65 63 74  r a mutex object
dbc0: 2e 20 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f  .  The SQLite co
dbd0: 72 65 20 6e 65 76 65 72 20 6c 6f 6f 6b 73 0a 2a  re never looks.*
dbe0: 2a 20 61 74 20 74 68 65 20 69 6e 74 65 72 6e 61  * at the interna
dbf0: 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  l representation
dc00: 20 6f 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f   of an [sqlite3_
dc10: 6d 75 74 65 78 5d 2e 20 20 49 74 20 6f 6e 6c 79  mutex].  It only
dc20: 0a 2a 2a 20 64 65 61 6c 73 20 77 69 74 68 20 70  .** deals with p
dc30: 6f 69 6e 74 65 72 73 20 74 6f 20 74 68 65 20 5b  ointers to the [
dc40: 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5d 20 6f  sqlite3_mutex] o
dc50: 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 4d 75 74  bject..**.** Mut
dc60: 65 78 65 73 20 61 72 65 20 63 72 65 61 74 65 64  exes are created
dc70: 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
dc80: 6d 75 74 65 78 5f 61 6c 6c 6f 63 28 29 5d 2e 0a  mutex_alloc()]..
dc90: 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
dca0: 74 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 20  t sqlite3_mutex 
dcb0: 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 3b 0a 0a  sqlite3_mutex;..
dcc0: 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
dcd0: 4c 6f 61 64 61 62 6c 65 20 45 78 74 65 6e 73 69  Loadable Extensi
dce0: 6f 6e 20 54 68 75 6e 6b 0a 2a 2a 0a 2a 2a 20 41  on Thunk.**.** A
dcf0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
dd00: 6f 70 61 71 75 65 20 73 71 6c 69 74 65 33 5f 61  opaque sqlite3_a
dd10: 70 69 5f 72 6f 75 74 69 6e 65 73 20 73 74 72 75  pi_routines stru
dd20: 63 74 75 72 65 20 69 73 20 70 61 73 73 65 64 20  cture is passed 
dd30: 61 73 0a 2a 2a 20 74 68 65 20 74 68 69 72 64 20  as.** the third 
dd40: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 65 6e 74  parameter to ent
dd50: 72 79 20 70 6f 69 6e 74 73 20 6f 66 20 5b 6c 6f  ry points of [lo
dd60: 61 64 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e  adable extension
dd70: 73 5d 2e 20 20 54 68 69 73 0a 2a 2a 20 73 74 72  s].  This.** str
dd80: 75 63 74 75 72 65 20 6d 75 73 74 20 62 65 20 74  ucture must be t
dd90: 79 70 65 64 65 66 65 64 20 69 6e 20 6f 72 64 65  ypedefed in orde
dda0: 72 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64  r to work around
ddb0: 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e   compiler warnin
ddc0: 67 73 0a 2a 2a 20 6f 6e 20 73 6f 6d 65 20 70 6c  gs.** on some pl
ddd0: 61 74 66 6f 72 6d 73 2e 0a 2a 2f 0a 74 79 70 65  atforms..*/.type
dde0: 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
ddf0: 65 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 20  e3_api_routines 
de00: 73 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74  sqlite3_api_rout
de10: 69 6e 65 73 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ines;../*.** CAP
de20: 49 33 52 45 46 3a 20 4f 53 20 49 6e 74 65 72 66  I3REF: OS Interf
de30: 61 63 65 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a  ace Object.**.**
de40: 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   An instance of 
de50: 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 20  the sqlite3_vfs 
de60: 6f 62 6a 65 63 74 20 64 65 66 69 6e 65 73 20 74  object defines t
de70: 68 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 74  he interface bet
de80: 77 65 65 6e 0a 2a 2a 20 74 68 65 20 53 51 4c 69  ween.** the SQLi
de90: 74 65 20 63 6f 72 65 20 61 6e 64 20 74 68 65 20  te core and the 
dea0: 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61  underlying opera
deb0: 74 69 6e 67 20 73 79 73 74 65 6d 2e 20 20 54 68  ting system.  Th
dec0: 65 20 22 76 66 73 22 0a 2a 2a 20 69 6e 20 74 68  e "vfs".** in th
ded0: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 62  e name of the ob
dee0: 6a 65 63 74 20 73 74 61 6e 64 73 20 66 6f 72 20  ject stands for 
def0: 22 76 69 72 74 75 61 6c 20 66 69 6c 65 20 73 79  "virtual file sy
df00: 73 74 65 6d 22 2e 20 20 53 65 65 0a 2a 2a 20 74  stem".  See.** t
df10: 68 65 20 5b 56 46 53 20 7c 20 56 46 53 20 64 6f  he [VFS | VFS do
df20: 63 75 6d 65 6e 74 61 74 69 6f 6e 5d 20 66 6f 72  cumentation] for
df30: 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61   further informa
df40: 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  tion..**.** The 
df50: 56 46 53 20 69 6e 74 65 72 66 61 63 65 20 69 73  VFS interface is
df60: 20 73 6f 6d 65 74 69 6d 65 73 20 65 78 74 65 6e   sometimes exten
df70: 64 65 64 20 62 79 20 61 64 64 69 6e 67 20 6e 65  ded by adding ne
df80: 77 20 6d 65 74 68 6f 64 73 20 6f 6e 74 6f 0a 2a  w methods onto.*
df90: 2a 20 74 68 65 20 65 6e 64 2e 20 20 45 61 63 68  * the end.  Each
dfa0: 20 74 69 6d 65 20 73 75 63 68 20 61 6e 20 65 78   time such an ex
dfb0: 74 65 6e 73 69 6f 6e 20 6f 63 63 75 72 73 2c 20  tension occurs, 
dfc0: 74 68 65 20 69 56 65 72 73 69 6f 6e 20 66 69 65  the iVersion fie
dfd0: 6c 64 0a 2a 2a 20 69 73 20 69 6e 63 72 65 6d 65  ld.** is increme
dfe0: 6e 74 65 64 2e 20 20 54 68 65 20 69 56 65 72 73  nted.  The iVers
dff0: 69 6f 6e 20 76 61 6c 75 65 20 73 74 61 72 74 65  ion value starte
e000: 64 20 6f 75 74 20 61 73 20 31 20 69 6e 0a 2a 2a  d out as 1 in.**
e010: 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e   SQLite [version
e020: 20 33 2e 35 2e 30 5d 20 6f 6e 20 5b 64 61 74 65   3.5.0] on [date
e030: 6f 66 3a 33 2e 35 2e 30 5d 2c 20 74 68 65 6e 20  of:3.5.0], then 
e040: 69 6e 63 72 65 61 73 65 64 20 74 6f 20 32 0a 2a  increased to 2.*
e050: 2a 20 77 69 74 68 20 53 51 4c 69 74 65 20 5b 76  * with SQLite [v
e060: 65 72 73 69 6f 6e 20 33 2e 37 2e 30 5d 20 6f 6e  ersion 3.7.0] on
e070: 20 5b 64 61 74 65 6f 66 3a 33 2e 37 2e 30 5d 2c   [dateof:3.7.0],
e080: 20 61 6e 64 20 74 68 65 6e 20 69 6e 63 72 65 61   and then increa
e090: 73 65 64 0a 2a 2a 20 74 6f 20 33 20 77 69 74 68  sed.** to 3 with
e0a0: 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e   SQLite [version
e0b0: 20 33 2e 37 2e 36 5d 20 6f 6e 20 5b 64 61 74 65   3.7.6] on [date
e0c0: 6f 66 3a 33 2e 37 2e 36 5d 2e 20 20 41 64 64 69  of:3.7.6].  Addi
e0d0: 74 69 6f 6e 61 6c 20 66 69 65 6c 64 73 0a 2a 2a  tional fields.**
e0e0: 20 6d 61 79 20 62 65 20 61 70 70 65 6e 64 65 64   may be appended
e0f0: 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
e100: 76 66 73 20 6f 62 6a 65 63 74 20 61 6e 64 20 74  vfs object and t
e110: 68 65 20 69 56 65 72 73 69 6f 6e 20 76 61 6c 75  he iVersion valu
e120: 65 0a 2a 2a 20 6d 61 79 20 69 6e 63 72 65 61 73  e.** may increas
e130: 65 20 61 67 61 69 6e 20 69 6e 20 66 75 74 75 72  e again in futur
e140: 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  e versions of SQ
e150: 4c 69 74 65 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68  Lite..** Note th
e160: 61 74 20 74 68 65 20 73 74 72 75 63 74 75 72 65  at the structure
e170: 0a 2a 2a 20 6f 66 20 74 68 65 20 73 71 6c 69 74  .** of the sqlit
e180: 65 33 5f 76 66 73 20 6f 62 6a 65 63 74 20 63 68  e3_vfs object ch
e190: 61 6e 67 65 73 20 69 6e 20 74 68 65 20 74 72 61  anges in the tra
e1a0: 6e 73 69 74 69 6f 6e 20 66 72 6f 6d 0a 2a 2a 20  nsition from.** 
e1b0: 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20  SQLite [version 
e1c0: 33 2e 35 2e 39 5d 20 74 6f 20 5b 76 65 72 73 69  3.5.9] to [versi
e1d0: 6f 6e 20 33 2e 36 2e 30 5d 20 6f 6e 20 5b 64 61  on 3.6.0] on [da
e1e0: 74 65 6f 66 3a 33 2e 36 2e 30 5d 0a 2a 2a 20 61  teof:3.6.0].** a
e1f0: 6e 64 20 79 65 74 20 74 68 65 20 69 56 65 72 73  nd yet the iVers
e200: 69 6f 6e 20 66 69 65 6c 64 20 77 61 73 20 6e 6f  ion field was no
e210: 74 20 6d 6f 64 69 66 69 65 64 2e 0a 2a 2a 0a 2a  t modified..**.*
e220: 2a 20 54 68 65 20 73 7a 4f 73 46 69 6c 65 20 66  * The szOsFile f
e230: 69 65 6c 64 20 69 73 20 74 68 65 20 73 69 7a 65  ield is the size
e240: 20 6f 66 20 74 68 65 20 73 75 62 63 6c 61 73 73   of the subclass
e250: 65 64 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  ed [sqlite3_file
e260: 5d 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20 75  ].** structure u
e270: 73 65 64 20 62 79 20 74 68 69 73 20 56 46 53 2e  sed by this VFS.
e280: 20 20 6d 78 50 61 74 68 6e 61 6d 65 20 69 73 20    mxPathname is 
e290: 74 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67  the maximum leng
e2a0: 74 68 20 6f 66 0a 2a 2a 20 61 20 70 61 74 68 6e  th of.** a pathn
e2b0: 61 6d 65 20 69 6e 20 74 68 69 73 20 56 46 53 2e  ame in this VFS.
e2c0: 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 65  .**.** Registere
e2d0: 64 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6f 62  d sqlite3_vfs ob
e2e0: 6a 65 63 74 73 20 61 72 65 20 6b 65 70 74 20 6f  jects are kept o
e2f0: 6e 20 61 20 6c 69 6e 6b 65 64 20 6c 69 73 74 20  n a linked list 
e300: 66 6f 72 6d 65 64 20 62 79 0a 2a 2a 20 74 68 65  formed by.** the
e310: 20 70 4e 65 78 74 20 70 6f 69 6e 74 65 72 2e 20   pNext pointer. 
e320: 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66   The [sqlite3_vf
e330: 73 5f 72 65 67 69 73 74 65 72 28 29 5d 0a 2a 2a  s_register()].**
e340: 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 76 66   and [sqlite3_vf
e350: 73 5f 75 6e 72 65 67 69 73 74 65 72 28 29 5d 20  s_unregister()] 
e360: 69 6e 74 65 72 66 61 63 65 73 20 6d 61 6e 61 67  interfaces manag
e370: 65 20 74 68 69 73 20 6c 69 73 74 0a 2a 2a 20 69  e this list.** i
e380: 6e 20 61 20 74 68 72 65 61 64 2d 73 61 66 65 20  n a thread-safe 
e390: 77 61 79 2e 20 20 54 68 65 20 5b 73 71 6c 69 74  way.  The [sqlit
e3a0: 65 33 5f 76 66 73 5f 66 69 6e 64 28 29 5d 20 69  e3_vfs_find()] i
e3b0: 6e 74 65 72 66 61 63 65 0a 2a 2a 20 73 65 61 72  nterface.** sear
e3c0: 63 68 65 73 20 74 68 65 20 6c 69 73 74 2e 20 20  ches the list.  
e3d0: 4e 65 69 74 68 65 72 20 74 68 65 20 61 70 70 6c  Neither the appl
e3e0: 69 63 61 74 69 6f 6e 20 63 6f 64 65 20 6e 6f 72  ication code nor
e3f0: 20 74 68 65 20 56 46 53 0a 2a 2a 20 69 6d 70 6c   the VFS.** impl
e400: 65 6d 65 6e 74 61 74 69 6f 6e 20 73 68 6f 75 6c  ementation shoul
e410: 64 20 75 73 65 20 74 68 65 20 70 4e 65 78 74 20  d use the pNext 
e420: 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 54  pointer..**.** T
e430: 68 65 20 70 4e 65 78 74 20 66 69 65 6c 64 20 69  he pNext field i
e440: 73 20 74 68 65 20 6f 6e 6c 79 20 66 69 65 6c 64  s the only field
e450: 20 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f   in the sqlite3_
e460: 76 66 73 0a 2a 2a 20 73 74 72 75 63 74 75 72 65  vfs.** structure
e470: 20 74 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c   that SQLite wil
e480: 6c 20 65 76 65 72 20 6d 6f 64 69 66 79 2e 20 20  l ever modify.  
e490: 53 51 4c 69 74 65 20 77 69 6c 6c 20 6f 6e 6c 79  SQLite will only
e4a0: 20 61 63 63 65 73 73 0a 2a 2a 20 6f 72 20 6d 6f   access.** or mo
e4b0: 64 69 66 79 20 74 68 69 73 20 66 69 65 6c 64 20  dify this field 
e4c0: 77 68 69 6c 65 20 68 6f 6c 64 69 6e 67 20 61 20  while holding a 
e4d0: 70 61 72 74 69 63 75 6c 61 72 20 73 74 61 74 69  particular stati
e4e0: 63 20 6d 75 74 65 78 2e 0a 2a 2a 20 54 68 65 20  c mutex..** The 
e4f0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75  application shou
e500: 6c 64 20 6e 65 76 65 72 20 6d 6f 64 69 66 79 20  ld never modify 
e510: 61 6e 79 74 68 69 6e 67 20 77 69 74 68 69 6e 20  anything within 
e520: 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 0a  the sqlite3_vfs.
e530: 2a 2a 20 6f 62 6a 65 63 74 20 6f 6e 63 65 20 74  ** object once t
e540: 68 65 20 6f 62 6a 65 63 74 20 68 61 73 20 62 65  he object has be
e550: 65 6e 20 72 65 67 69 73 74 65 72 65 64 2e 0a 2a  en registered..*
e560: 2a 0a 2a 2a 20 54 68 65 20 7a 4e 61 6d 65 20 66  *.** The zName f
e570: 69 65 6c 64 20 68 6f 6c 64 73 20 74 68 65 20 6e  ield holds the n
e580: 61 6d 65 20 6f 66 20 74 68 65 20 56 46 53 20 6d  ame of the VFS m
e590: 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 6d 65  odule.  The name
e5a0: 20 6d 75 73 74 0a 2a 2a 20 62 65 20 75 6e 69 71   must.** be uniq
e5b0: 75 65 20 61 63 72 6f 73 73 20 61 6c 6c 20 56 46  ue across all VF
e5c0: 53 20 6d 6f 64 75 6c 65 73 2e 0a 2a 2a 0a 2a 2a  S modules..**.**
e5d0: 20 5b 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78   [[sqlite3_vfs.x
e5e0: 4f 70 65 6e 5d 5d 0a 2a 2a 20 5e 53 51 4c 69 74  Open]].** ^SQLit
e5f0: 65 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61  e guarantees tha
e600: 74 20 74 68 65 20 7a 46 69 6c 65 6e 61 6d 65 20  t the zFilename 
e610: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 78 4f 70  parameter to xOp
e620: 65 6e 0a 2a 2a 20 69 73 20 65 69 74 68 65 72 20  en.** is either 
e630: 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 6f  a NULL pointer o
e640: 72 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e 65  r string obtaine
e650: 64 0a 2a 2a 20 66 72 6f 6d 20 78 46 75 6c 6c 50  d.** from xFullP
e660: 61 74 68 6e 61 6d 65 28 29 20 77 69 74 68 20 61  athname() with a
e670: 6e 20 6f 70 74 69 6f 6e 61 6c 20 73 75 66 66 69  n optional suffi
e680: 78 20 61 64 64 65 64 2e 0a 2a 2a 20 5e 49 66 20  x added..** ^If 
e690: 61 20 73 75 66 66 69 78 20 69 73 20 61 64 64 65  a suffix is adde
e6a0: 64 20 74 6f 20 74 68 65 20 7a 46 69 6c 65 6e 61  d to the zFilena
e6b0: 6d 65 20 70 61 72 61 6d 65 74 65 72 2c 20 69 74  me parameter, it
e6c0: 20 77 69 6c 6c 0a 2a 2a 20 63 6f 6e 73 69 73 74   will.** consist
e6d0: 20 6f 66 20 61 20 73 69 6e 67 6c 65 20 22 2d 22   of a single "-"
e6e0: 20 63 68 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f   character follo
e6f0: 77 65 64 20 62 79 20 6e 6f 20 6d 6f 72 65 20 74  wed by no more t
e700: 68 61 6e 0a 2a 2a 20 31 31 20 61 6c 70 68 61 6e  han.** 11 alphan
e710: 75 6d 65 72 69 63 20 61 6e 64 2f 6f 72 20 22 2d  umeric and/or "-
e720: 22 20 63 68 61 72 61 63 74 65 72 73 2e 0a 2a 2a  " characters..**
e730: 20 5e 53 51 4c 69 74 65 20 66 75 72 74 68 65 72   ^SQLite further
e740: 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74   guarantees that
e750: 0a 2a 2a 20 74 68 65 20 73 74 72 69 6e 67 20 77  .** the string w
e760: 69 6c 6c 20 62 65 20 76 61 6c 69 64 20 61 6e 64  ill be valid and
e770: 20 75 6e 63 68 61 6e 67 65 64 20 75 6e 74 69 6c   unchanged until
e780: 20 78 43 6c 6f 73 65 28 29 20 69 73 0a 2a 2a 20   xClose() is.** 
e790: 63 61 6c 6c 65 64 2e 20 42 65 63 61 75 73 65 20  called. Because 
e7a0: 6f 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  of the previous 
e7b0: 73 65 6e 74 65 6e 63 65 2c 0a 2a 2a 20 74 68 65  sentence,.** the
e7c0: 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20   [sqlite3_file] 
e7d0: 63 61 6e 20 73 61 66 65 6c 79 20 73 74 6f 72 65  can safely store
e7e0: 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
e7f0: 65 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20 69 66  e.** filename if
e800: 20 69 74 20 6e 65 65 64 73 20 74 6f 20 72 65 6d   it needs to rem
e810: 65 6d 62 65 72 20 74 68 65 20 66 69 6c 65 6e 61  ember the filena
e820: 6d 65 20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73  me for some reas
e830: 6f 6e 2e 0a 2a 2a 20 49 66 20 74 68 65 20 7a 46  on..** If the zF
e840: 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65  ilename paramete
e850: 72 20 74 6f 20 78 4f 70 65 6e 20 69 73 20 61 20  r to xOpen is a 
e860: 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 65  NULL pointer the
e870: 6e 20 78 4f 70 65 6e 0a 2a 2a 20 6d 75 73 74 20  n xOpen.** must 
e880: 69 6e 76 65 6e 74 20 69 74 73 20 6f 77 6e 20 74  invent its own t
e890: 65 6d 70 6f 72 61 72 79 20 6e 61 6d 65 20 66 6f  emporary name fo
e8a0: 72 20 74 68 65 20 66 69 6c 65 2e 20 20 5e 57 68  r the file.  ^Wh
e8b0: 65 6e 65 76 65 72 20 74 68 65 20 0a 2a 2a 20 78  enever the .** x
e8c0: 46 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74  Filename paramet
e8d0: 65 72 20 69 73 20 4e 55 4c 4c 20 69 74 20 77 69  er is NULL it wi
e8e0: 6c 6c 20 61 6c 73 6f 20 62 65 20 74 68 65 20 63  ll also be the c
e8f0: 61 73 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20  ase that the.** 
e900: 66 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 20  flags parameter 
e910: 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 5b 53 51  will include [SQ
e920: 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45  LITE_OPEN_DELETE
e930: 4f 4e 43 4c 4f 53 45 5d 2e 0a 2a 2a 0a 2a 2a 20  ONCLOSE]..**.** 
e940: 54 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65  The flags argume
e950: 6e 74 20 74 6f 20 78 4f 70 65 6e 28 29 20 69 6e  nt to xOpen() in
e960: 63 6c 75 64 65 73 20 61 6c 6c 20 62 69 74 73 20  cludes all bits 
e970: 73 65 74 20 69 6e 0a 2a 2a 20 74 68 65 20 66 6c  set in.** the fl
e980: 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ags argument to 
e990: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
e9a0: 28 29 5d 2e 20 20 4f 72 20 69 66 20 5b 73 71 6c  ()].  Or if [sql
e9b0: 69 74 65 33 5f 6f 70 65 6e 28 29 5d 0a 2a 2a 20  ite3_open()].** 
e9c0: 6f 72 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  or [sqlite3_open
e9d0: 31 36 28 29 5d 20 69 73 20 75 73 65 64 2c 20 74  16()] is used, t
e9e0: 68 65 6e 20 66 6c 61 67 73 20 69 6e 63 6c 75 64  hen flags includ
e9f0: 65 73 20 61 74 20 6c 65 61 73 74 0a 2a 2a 20 5b  es at least.** [
ea00: 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44  SQLITE_OPEN_READ
ea10: 57 52 49 54 45 5d 20 7c 20 5b 53 51 4c 49 54 45  WRITE] | [SQLITE
ea20: 5f 4f 50 45 4e 5f 43 52 45 41 54 45 5d 2e 20 0a  _OPEN_CREATE]. .
ea30: 2a 2a 20 49 66 20 78 4f 70 65 6e 28 29 20 6f 70  ** If xOpen() op
ea40: 65 6e 73 20 61 20 66 69 6c 65 20 72 65 61 64 2d  ens a file read-
ea50: 6f 6e 6c 79 20 74 68 65 6e 20 69 74 20 73 65 74  only then it set
ea60: 73 20 2a 70 4f 75 74 46 6c 61 67 73 20 74 6f 0a  s *pOutFlags to.
ea70: 2a 2a 20 69 6e 63 6c 75 64 65 20 5b 53 51 4c 49  ** include [SQLI
ea80: 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59  TE_OPEN_READONLY
ea90: 5d 2e 20 20 4f 74 68 65 72 20 62 69 74 73 20 69  ].  Other bits i
eaa0: 6e 20 2a 70 4f 75 74 46 6c 61 67 73 20 6d 61 79  n *pOutFlags may
eab0: 20 62 65 20 73 65 74 2e 0a 2a 2a 0a 2a 2a 20 5e   be set..**.** ^
eac0: 28 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 73  (SQLite will als
ead0: 6f 20 61 64 64 20 6f 6e 65 20 6f 66 20 74 68 65  o add one of the
eae0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6c 61 67 73   following flags
eaf0: 20 74 6f 20 74 68 65 20 78 4f 70 65 6e 28 29 0a   to the xOpen().
eb00: 2a 2a 20 63 61 6c 6c 2c 20 64 65 70 65 6e 64 69  ** call, dependi
eb10: 6e 67 20 6f 6e 20 74 68 65 20 6f 62 6a 65 63 74  ng on the object
eb20: 20 62 65 69 6e 67 20 6f 70 65 6e 65 64 3a 0a 2a   being opened:.*
eb30: 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69  *.** <ul>.** <li
eb40: 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  >  [SQLITE_OPEN_
eb50: 4d 41 49 4e 5f 44 42 5d 0a 2a 2a 20 3c 6c 69 3e  MAIN_DB].** <li>
eb60: 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d    [SQLITE_OPEN_M
eb70: 41 49 4e 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20  AIN_JOURNAL].** 
eb80: 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50  <li>  [SQLITE_OP
eb90: 45 4e 5f 54 45 4d 50 5f 44 42 5d 0a 2a 2a 20 3c  EN_TEMP_DB].** <
eba0: 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
ebb0: 4e 5f 54 45 4d 50 5f 4a 4f 55 52 4e 41 4c 5d 0a  N_TEMP_JOURNAL].
ebc0: 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45  ** <li>  [SQLITE
ebd0: 5f 4f 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54 5f  _OPEN_TRANSIENT_
ebe0: 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51  DB].** <li>  [SQ
ebf0: 4c 49 54 45 5f 4f 50 45 4e 5f 53 55 42 4a 4f 55  LITE_OPEN_SUBJOU
ec00: 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b  RNAL].** <li>  [
ec10: 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 53 54  SQLITE_OPEN_MAST
ec20: 45 52 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c  ER_JOURNAL].** <
ec30: 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
ec40: 4e 5f 57 41 4c 5d 0a 2a 2a 20 3c 2f 75 6c 3e 29  N_WAL].** </ul>)
ec50: 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 6c 65  ^.**.** The file
ec60: 20 49 2f 4f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   I/O implementat
ec70: 69 6f 6e 20 63 61 6e 20 75 73 65 20 74 68 65 20  ion can use the 
ec80: 6f 62 6a 65 63 74 20 74 79 70 65 20 66 6c 61 67  object type flag
ec90: 73 20 74 6f 0a 2a 2a 20 63 68 61 6e 67 65 20 74  s to.** change t
eca0: 68 65 20 77 61 79 20 69 74 20 64 65 61 6c 73 20  he way it deals 
ecb0: 77 69 74 68 20 66 69 6c 65 73 2e 20 20 46 6f 72  with files.  For
ecc0: 20 65 78 61 6d 70 6c 65 2c 20 61 6e 20 61 70 70   example, an app
ecd0: 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 74 68 61 74  lication.** that
ece0: 20 64 6f 65 73 20 6e 6f 74 20 63 61 72 65 20 61   does not care a
ecf0: 62 6f 75 74 20 63 72 61 73 68 20 72 65 63 6f 76  bout crash recov
ed00: 65 72 79 20 6f 72 20 72 6f 6c 6c 62 61 63 6b 20  ery or rollback 
ed10: 6d 69 67 68 74 20 6d 61 6b 65 0a 2a 2a 20 74 68  might make.** th
ed20: 65 20 6f 70 65 6e 20 6f 66 20 61 20 6a 6f 75 72  e open of a jour
ed30: 6e 61 6c 20 66 69 6c 65 20 61 20 6e 6f 2d 6f 70  nal file a no-op
ed40: 2e 20 20 57 72 69 74 65 73 20 74 6f 20 74 68 69  .  Writes to thi
ed50: 73 20 6a 6f 75 72 6e 61 6c 20 77 6f 75 6c 64 0a  s journal would.
ed60: 2a 2a 20 61 6c 73 6f 20 62 65 20 6e 6f 2d 6f 70  ** also be no-op
ed70: 73 2c 20 61 6e 64 20 61 6e 79 20 61 74 74 65 6d  s, and any attem
ed80: 70 74 20 74 6f 20 72 65 61 64 20 74 68 65 20 6a  pt to read the j
ed90: 6f 75 72 6e 61 6c 20 77 6f 75 6c 64 20 72 65 74  ournal would ret
eda0: 75 72 6e 0a 2a 2a 20 53 51 4c 49 54 45 5f 49 4f  urn.** SQLITE_IO
edb0: 45 52 52 2e 20 20 4f 72 20 74 68 65 20 69 6d 70  ERR.  Or the imp
edc0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 69 67 68  lementation migh
edd0: 74 20 72 65 63 6f 67 6e 69 7a 65 20 74 68 61 74  t recognize that
ede0: 20 61 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 66   a database.** f
edf0: 69 6c 65 20 77 69 6c 6c 20 62 65 20 64 6f 69 6e  ile will be doin
ee00: 67 20 70 61 67 65 2d 61 6c 69 67 6e 65 64 20 73  g page-aligned s
ee10: 65 63 74 6f 72 20 72 65 61 64 73 20 61 6e 64 20  ector reads and 
ee20: 77 72 69 74 65 73 20 69 6e 20 61 20 72 61 6e 64  writes in a rand
ee30: 6f 6d 0a 2a 2a 20 6f 72 64 65 72 20 61 6e 64 20  om.** order and 
ee40: 73 65 74 20 75 70 20 69 74 73 20 49 2f 4f 20 73  set up its I/O s
ee50: 75 62 73 79 73 74 65 6d 20 61 63 63 6f 72 64 69  ubsystem accordi
ee60: 6e 67 6c 79 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  ngly..**.** SQLi
ee70: 74 65 20 6d 69 67 68 74 20 61 6c 73 6f 20 61 64  te might also ad
ee80: 64 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c  d one of the fol
ee90: 6c 6f 77 69 6e 67 20 66 6c 61 67 73 20 74 6f 20  lowing flags to 
eea0: 74 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64  the xOpen method
eeb0: 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20  :.**.** <ul>.** 
eec0: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 50 45  <li> [SQLITE_OPE
eed0: 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d  N_DELETEONCLOSE]
eee0: 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
eef0: 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 5d  _OPEN_EXCLUSIVE]
ef00: 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20  .** </ul>.**.** 
ef10: 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  The [SQLITE_OPEN
ef20: 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 20  _DELETEONCLOSE] 
ef30: 66 6c 61 67 20 6d 65 61 6e 73 20 74 68 65 20 66  flag means the f
ef40: 69 6c 65 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a  ile should be.**
ef50: 20 64 65 6c 65 74 65 64 20 77 68 65 6e 20 69 74   deleted when it
ef60: 20 69 73 20 63 6c 6f 73 65 64 2e 20 20 5e 54 68   is closed.  ^Th
ef70: 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44  e [SQLITE_OPEN_D
ef80: 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 0a 2a 2a  ELETEONCLOSE].**
ef90: 20 77 69 6c 6c 20 62 65 20 73 65 74 20 66 6f 72   will be set for
efa0: 20 54 45 4d 50 20 64 61 74 61 62 61 73 65 73 20   TEMP databases 
efb0: 61 6e 64 20 74 68 65 69 72 20 6a 6f 75 72 6e 61  and their journa
efc0: 6c 73 2c 20 74 72 61 6e 73 69 65 6e 74 0a 2a 2a  ls, transient.**
efd0: 20 64 61 74 61 62 61 73 65 73 2c 20 61 6e 64 20   databases, and 
efe0: 73 75 62 6a 6f 75 72 6e 61 6c 73 2e 0a 2a 2a 0a  subjournals..**.
eff0: 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f  ** ^The [SQLITE_
f000: 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 5d 20  OPEN_EXCLUSIVE] 
f010: 66 6c 61 67 20 69 73 20 61 6c 77 61 79 73 20 75  flag is always u
f020: 73 65 64 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69  sed in conjuncti
f030: 6f 6e 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 5b  on.** with the [
f040: 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41  SQLITE_OPEN_CREA
f050: 54 45 5d 20 66 6c 61 67 2c 20 77 68 69 63 68 20  TE] flag, which 
f060: 61 72 65 20 62 6f 74 68 20 64 69 72 65 63 74 6c  are both directl
f070: 79 0a 2a 2a 20 61 6e 61 6c 6f 67 6f 75 73 20 74  y.** analogous t
f080: 6f 20 74 68 65 20 4f 5f 45 58 43 4c 20 61 6e 64  o the O_EXCL and
f090: 20 4f 5f 43 52 45 41 54 20 66 6c 61 67 73 20 6f   O_CREAT flags o
f0a0: 66 20 74 68 65 20 50 4f 53 49 58 20 6f 70 65 6e  f the POSIX open
f0b0: 28 29 0a 2a 2a 20 41 50 49 2e 20 20 54 68 65 20  ().** API.  The 
f0c0: 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c  SQLITE_OPEN_EXCL
f0d0: 55 53 49 56 45 20 66 6c 61 67 2c 20 77 68 65 6e  USIVE flag, when
f0e0: 20 70 61 69 72 65 64 20 77 69 74 68 20 74 68 65   paired with the
f0f0: 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 4f 50 45 4e   .** SQLITE_OPEN
f100: 5f 43 52 45 41 54 45 2c 20 69 73 20 75 73 65 64  _CREATE, is used
f110: 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61   to indicate tha
f120: 74 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 61 6c  t file should al
f130: 77 61 79 73 0a 2a 2a 20 62 65 20 63 72 65 61 74  ways.** be creat
f140: 65 64 2c 20 61 6e 64 20 74 68 61 74 20 69 74 20  ed, and that it 
f150: 69 73 20 61 6e 20 65 72 72 6f 72 20 69 66 20 69  is an error if i
f160: 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73  t already exists
f170: 2e 0a 2a 2a 20 49 74 20 69 73 20 3c 69 3e 6e 6f  ..** It is <i>no
f180: 74 3c 2f 69 3e 20 75 73 65 64 20 74 6f 20 69 6e  t</i> used to in
f190: 64 69 63 61 74 65 20 74 68 65 20 66 69 6c 65 20  dicate the file 
f1a0: 73 68 6f 75 6c 64 20 62 65 20 6f 70 65 6e 65 64  should be opened
f1b0: 20 0a 2a 2a 20 66 6f 72 20 65 78 63 6c 75 73 69   .** for exclusi
f1c0: 76 65 20 61 63 63 65 73 73 2e 0a 2a 2a 0a 2a 2a  ve access..**.**
f1d0: 20 5e 41 74 20 6c 65 61 73 74 20 73 7a 4f 73 46   ^At least szOsF
f1e0: 69 6c 65 20 62 79 74 65 73 20 6f 66 20 6d 65 6d  ile bytes of mem
f1f0: 6f 72 79 20 61 72 65 20 61 6c 6c 6f 63 61 74 65  ory are allocate
f200: 64 20 62 79 20 53 51 4c 69 74 65 0a 2a 2a 20 74  d by SQLite.** t
f210: 6f 20 68 6f 6c 64 20 74 68 65 20 20 5b 73 71 6c  o hold the  [sql
f220: 69 74 65 33 5f 66 69 6c 65 5d 20 73 74 72 75 63  ite3_file] struc
f230: 74 75 72 65 20 70 61 73 73 65 64 20 61 73 20 74  ture passed as t
f240: 68 65 20 74 68 69 72 64 0a 2a 2a 20 61 72 67 75  he third.** argu
f250: 6d 65 6e 74 20 74 6f 20 78 4f 70 65 6e 2e 20 20  ment to xOpen.  
f260: 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64  The xOpen method
f270: 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 74   does not have t
f280: 6f 0a 2a 2a 20 61 6c 6c 6f 63 61 74 65 20 74 68  o.** allocate th
f290: 65 20 73 74 72 75 63 74 75 72 65 3b 20 69 74 20  e structure; it 
f2a0: 73 68 6f 75 6c 64 20 6a 75 73 74 20 66 69 6c 6c  should just fill
f2b0: 20 69 74 20 69 6e 2e 20 20 4e 6f 74 65 20 74 68   it in.  Note th
f2c0: 61 74 0a 2a 2a 20 74 68 65 20 78 4f 70 65 6e 20  at.** the xOpen 
f2d0: 6d 65 74 68 6f 64 20 6d 75 73 74 20 73 65 74 20  method must set 
f2e0: 74 68 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  the sqlite3_file
f2f0: 2e 70 4d 65 74 68 6f 64 73 20 74 6f 20 65 69 74  .pMethods to eit
f300: 68 65 72 0a 2a 2a 20 61 20 76 61 6c 69 64 20 5b  her.** a valid [
f310: 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f  sqlite3_io_metho
f320: 64 73 5d 20 6f 62 6a 65 63 74 20 6f 72 20 74 6f  ds] object or to
f330: 20 4e 55 4c 4c 2e 20 20 78 4f 70 65 6e 20 6d 75   NULL.  xOpen mu
f340: 73 74 20 64 6f 0a 2a 2a 20 74 68 69 73 20 65 76  st do.** this ev
f350: 65 6e 20 69 66 20 74 68 65 20 6f 70 65 6e 20 66  en if the open f
f360: 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20 65 78  ails.  SQLite ex
f370: 70 65 63 74 73 20 74 68 61 74 20 74 68 65 20 73  pects that the s
f380: 71 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74  qlite3_file.pMet
f390: 68 6f 64 73 0a 2a 2a 20 65 6c 65 6d 65 6e 74 20  hods.** element 
f3a0: 77 69 6c 6c 20 62 65 20 76 61 6c 69 64 20 61 66  will be valid af
f3b0: 74 65 72 20 78 4f 70 65 6e 20 72 65 74 75 72 6e  ter xOpen return
f3c0: 73 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  s regardless of 
f3d0: 74 68 65 20 73 75 63 63 65 73 73 0a 2a 2a 20 6f  the success.** o
f3e0: 72 20 66 61 69 6c 75 72 65 20 6f 66 20 74 68 65  r failure of the
f3f0: 20 78 4f 70 65 6e 20 63 61 6c 6c 2e 0a 2a 2a 0a   xOpen call..**.
f400: 2a 2a 20 5b 5b 73 71 6c 69 74 65 33 5f 76 66 73  ** [[sqlite3_vfs
f410: 2e 78 41 63 63 65 73 73 5d 5d 0a 2a 2a 20 5e 54  .xAccess]].** ^T
f420: 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e  he flags argumen
f430: 74 20 74 6f 20 78 41 63 63 65 73 73 28 29 20 6d  t to xAccess() m
f440: 61 79 20 62 65 20 5b 53 51 4c 49 54 45 5f 41 43  ay be [SQLITE_AC
f450: 43 45 53 53 5f 45 58 49 53 54 53 5d 0a 2a 2a 20  CESS_EXISTS].** 
f460: 74 6f 20 74 65 73 74 20 66 6f 72 20 74 68 65 20  to test for the 
f470: 65 78 69 73 74 65 6e 63 65 20 6f 66 20 61 20 66  existence of a f
f480: 69 6c 65 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f  ile, or [SQLITE_
f490: 41 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45  ACCESS_READWRITE
f4a0: 5d 20 74 6f 0a 2a 2a 20 74 65 73 74 20 77 68 65  ] to.** test whe
f4b0: 74 68 65 72 20 61 20 66 69 6c 65 20 69 73 20 72  ther a file is r
f4c0: 65 61 64 61 62 6c 65 20 61 6e 64 20 77 72 69 74  eadable and writ
f4d0: 61 62 6c 65 2c 20 6f 72 20 5b 53 51 4c 49 54 45  able, or [SQLITE
f4e0: 5f 41 43 43 45 53 53 5f 52 45 41 44 5d 0a 2a 2a  _ACCESS_READ].**
f4f0: 20 74 6f 20 74 65 73 74 20 77 68 65 74 68 65 72   to test whether
f500: 20 61 20 66 69 6c 65 20 69 73 20 61 74 20 6c 65   a file is at le
f510: 61 73 74 20 72 65 61 64 61 62 6c 65 2e 20 20 20  ast readable.   
f520: 54 68 65 20 66 69 6c 65 20 63 61 6e 20 62 65 20  The file can be 
f530: 61 0a 2a 2a 20 64 69 72 65 63 74 6f 72 79 2e 0a  a.** directory..
f540: 2a 2a 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69  **.** ^SQLite wi
f550: 6c 6c 20 61 6c 77 61 79 73 20 61 6c 6c 6f 63 61  ll always alloca
f560: 74 65 20 61 74 20 6c 65 61 73 74 20 6d 78 50 61  te at least mxPa
f570: 74 68 6e 61 6d 65 2b 31 20 62 79 74 65 73 20 66  thname+1 bytes f
f580: 6f 72 20 74 68 65 0a 2a 2a 20 6f 75 74 70 75 74  or the.** output
f590: 20 62 75 66 66 65 72 20 78 46 75 6c 6c 50 61 74   buffer xFullPat
f5a0: 68 6e 61 6d 65 2e 20 20 54 68 65 20 65 78 61 63  hname.  The exac
f5b0: 74 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6f 75  t size of the ou
f5c0: 74 70 75 74 20 62 75 66 66 65 72 0a 2a 2a 20 69  tput buffer.** i
f5d0: 73 20 61 6c 73 6f 20 70 61 73 73 65 64 20 61 73  s also passed as
f5e0: 20 61 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20   a parameter to 
f5f0: 62 6f 74 68 20 20 6d 65 74 68 6f 64 73 2e 20 49  both  methods. I
f600: 66 20 74 68 65 20 6f 75 74 70 75 74 20 62 75 66  f the output buf
f610: 66 65 72 0a 2a 2a 20 69 73 20 6e 6f 74 20 6c 61  fer.** is not la
f620: 72 67 65 20 65 6e 6f 75 67 68 2c 20 5b 53 51 4c  rge enough, [SQL
f630: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 73 68  ITE_CANTOPEN] sh
f640: 6f 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64  ould be returned
f650: 2e 20 53 69 6e 63 65 20 74 68 69 73 20 69 73 0a  . Since this is.
f660: 2a 2a 20 68 61 6e 64 6c 65 64 20 61 73 20 61 20  ** handled as a 
f670: 66 61 74 61 6c 20 65 72 72 6f 72 20 62 79 20 53  fatal error by S
f680: 51 4c 69 74 65 2c 20 76 66 73 20 69 6d 70 6c 65  QLite, vfs imple
f690: 6d 65 6e 74 61 74 69 6f 6e 73 20 73 68 6f 75 6c  mentations shoul
f6a0: 64 20 65 6e 64 65 61 76 6f 72 0a 2a 2a 20 74 6f  d endeavor.** to
f6b0: 20 70 72 65 76 65 6e 74 20 74 68 69 73 20 62 79   prevent this by
f6c0: 20 73 65 74 74 69 6e 67 20 6d 78 50 61 74 68 6e   setting mxPathn
f6d0: 61 6d 65 20 74 6f 20 61 20 73 75 66 66 69 63 69  ame to a suffici
f6e0: 65 6e 74 6c 79 20 6c 61 72 67 65 20 76 61 6c 75  ently large valu
f6f0: 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 52 61  e..**.** The xRa
f700: 6e 64 6f 6d 6e 65 73 73 28 29 2c 20 78 53 6c 65  ndomness(), xSle
f710: 65 70 28 29 2c 20 78 43 75 72 72 65 6e 74 54 69  ep(), xCurrentTi
f720: 6d 65 28 29 2c 20 61 6e 64 20 78 43 75 72 72 65  me(), and xCurre
f730: 6e 74 54 69 6d 65 49 6e 74 36 34 28 29 0a 2a 2a  ntTimeInt64().**
f740: 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20   interfaces are 
f750: 6e 6f 74 20 73 74 72 69 63 74 6c 79 20 61 20 70  not strictly a p
f760: 61 72 74 20 6f 66 20 74 68 65 20 66 69 6c 65 73  art of the files
f770: 79 73 74 65 6d 2c 20 62 75 74 20 74 68 65 79 20  ystem, but they 
f780: 61 72 65 0a 2a 2a 20 69 6e 63 6c 75 64 65 64 20  are.** included 
f790: 69 6e 20 74 68 65 20 56 46 53 20 73 74 72 75 63  in the VFS struc
f7a0: 74 75 72 65 20 66 6f 72 20 63 6f 6d 70 6c 65 74  ture for complet
f7b0: 65 6e 65 73 73 2e 0a 2a 2a 20 54 68 65 20 78 52  eness..** The xR
f7c0: 61 6e 64 6f 6d 6e 65 73 73 28 29 20 66 75 6e 63  andomness() func
f7d0: 74 69 6f 6e 20 61 74 74 65 6d 70 74 73 20 74 6f  tion attempts to
f7e0: 20 72 65 74 75 72 6e 20 6e 42 79 74 65 73 20 62   return nBytes b
f7f0: 79 74 65 73 0a 2a 2a 20 6f 66 20 67 6f 6f 64 2d  ytes.** of good-
f800: 71 75 61 6c 69 74 79 20 72 61 6e 64 6f 6d 6e 65  quality randomne
f810: 73 73 20 69 6e 74 6f 20 7a 4f 75 74 2e 20 20 54  ss into zOut.  T
f820: 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  he return value 
f830: 69 73 0a 2a 2a 20 74 68 65 20 61 63 74 75 61 6c  is.** the actual
f840: 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
f850: 20 6f 66 20 72 61 6e 64 6f 6d 6e 65 73 73 20 6f   of randomness o
f860: 62 74 61 69 6e 65 64 2e 0a 2a 2a 20 54 68 65 20  btained..** The 
f870: 78 53 6c 65 65 70 28 29 20 6d 65 74 68 6f 64 20  xSleep() method 
f880: 63 61 75 73 65 73 20 74 68 65 20 63 61 6c 6c 69  causes the calli
f890: 6e 67 20 74 68 72 65 61 64 20 74 6f 20 73 6c 65  ng thread to sle
f8a0: 65 70 20 66 6f 72 20 61 74 0a 2a 2a 20 6c 65 61  ep for at.** lea
f8b0: 73 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  st the number of
f8c0: 20 6d 69 63 72 6f 73 65 63 6f 6e 64 73 20 67 69   microseconds gi
f8d0: 76 65 6e 2e 20 20 5e 54 68 65 20 78 43 75 72 72  ven.  ^The xCurr
f8e0: 65 6e 74 54 69 6d 65 28 29 0a 2a 2a 20 6d 65 74  entTime().** met
f8f0: 68 6f 64 20 72 65 74 75 72 6e 73 20 61 20 4a 75  hod returns a Ju
f900: 6c 69 61 6e 20 44 61 79 20 4e 75 6d 62 65 72 20  lian Day Number 
f910: 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
f920: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 61 73  date and time as
f930: 0a 2a 2a 20 61 20 66 6c 6f 61 74 69 6e 67 20 70  .** a floating p
f940: 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 2a 2a 20 5e  oint value..** ^
f950: 54 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d 65  The xCurrentTime
f960: 49 6e 74 36 34 28 29 20 6d 65 74 68 6f 64 20 72  Int64() method r
f970: 65 74 75 72 6e 73 2c 20 61 73 20 61 6e 20 69 6e  eturns, as an in
f980: 74 65 67 65 72 2c 20 74 68 65 20 4a 75 6c 69 61  teger, the Julia
f990: 6e 0a 2a 2a 20 44 61 79 20 4e 75 6d 62 65 72 20  n.** Day Number 
f9a0: 6d 75 6c 74 69 70 6c 69 65 64 20 62 79 20 38 36  multiplied by 86
f9b0: 34 30 30 30 30 30 20 28 74 68 65 20 6e 75 6d 62  400000 (the numb
f9c0: 65 72 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e  er of millisecon
f9d0: 64 73 20 69 6e 20 0a 2a 2a 20 61 20 32 34 2d 68  ds in .** a 24-h
f9e0: 6f 75 72 20 64 61 79 29 2e 20 20 0a 2a 2a 20 5e  our day).  .** ^
f9f0: 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20  SQLite will use 
fa00: 74 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d 65  the xCurrentTime
fa10: 49 6e 74 36 34 28 29 20 6d 65 74 68 6f 64 20 74  Int64() method t
fa20: 6f 20 67 65 74 20 74 68 65 20 63 75 72 72 65 6e  o get the curren
fa30: 74 0a 2a 2a 20 64 61 74 65 20 61 6e 64 20 74 69  t.** date and ti
fa40: 6d 65 20 69 66 20 74 68 61 74 20 6d 65 74 68 6f  me if that metho
fa50: 64 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 28  d is available (
fa60: 69 66 20 69 56 65 72 73 69 6f 6e 20 69 73 20 32  if iVersion is 2
fa70: 20 6f 72 20 0a 2a 2a 20 67 72 65 61 74 65 72 20   or .** greater 
fa80: 61 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  and the function
fa90: 20 70 6f 69 6e 74 65 72 20 69 73 20 6e 6f 74 20   pointer is not 
faa0: 4e 55 4c 4c 29 20 61 6e 64 20 77 69 6c 6c 20 66  NULL) and will f
fab0: 61 6c 6c 20 62 61 63 6b 0a 2a 2a 20 74 6f 20 78  all back.** to x
fac0: 43 75 72 72 65 6e 74 54 69 6d 65 28 29 20 69 66  CurrentTime() if
fad0: 20 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74   xCurrentTimeInt
fae0: 36 34 28 29 20 69 73 20 75 6e 61 76 61 69 6c 61  64() is unavaila
faf0: 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  ble..**.** ^The 
fb00: 78 53 65 74 53 79 73 74 65 6d 43 61 6c 6c 28 29  xSetSystemCall()
fb10: 2c 20 78 47 65 74 53 79 73 74 65 6d 43 61 6c 6c  , xGetSystemCall
fb20: 28 29 2c 20 61 6e 64 20 78 4e 65 73 74 53 79 73  (), and xNestSys
fb30: 74 65 6d 43 61 6c 6c 28 29 20 69 6e 74 65 72 66  temCall() interf
fb40: 61 63 65 73 0a 2a 2a 20 61 72 65 20 6e 6f 74 20  aces.** are not 
fb50: 75 73 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  used by the SQLi
fb60: 74 65 20 63 6f 72 65 2e 20 20 54 68 65 73 65 20  te core.  These 
fb70: 6f 70 74 69 6f 6e 61 6c 20 69 6e 74 65 72 66 61  optional interfa
fb80: 63 65 73 20 61 72 65 20 70 72 6f 76 69 64 65 64  ces are provided
fb90: 0a 2a 2a 20 62 79 20 73 6f 6d 65 20 56 46 53 65  .** by some VFSe
fba0: 73 20 74 6f 20 66 61 63 69 6c 69 74 61 74 65 20  s to facilitate 
fbb0: 74 65 73 74 69 6e 67 20 6f 66 20 74 68 65 20 56  testing of the V
fbc0: 46 53 20 63 6f 64 65 2e 20 42 79 20 6f 76 65 72  FS code. By over
fbd0: 72 69 64 69 6e 67 20 0a 2a 2a 20 73 79 73 74 65  riding .** syste
fbe0: 6d 20 63 61 6c 6c 73 20 77 69 74 68 20 66 75 6e  m calls with fun
fbf0: 63 74 69 6f 6e 73 20 75 6e 64 65 72 20 69 74 73  ctions under its
fc00: 20 63 6f 6e 74 72 6f 6c 2c 20 61 20 74 65 73 74   control, a test
fc10: 20 70 72 6f 67 72 61 6d 20 63 61 6e 0a 2a 2a 20   program can.** 
fc20: 73 69 6d 75 6c 61 74 65 20 66 61 75 6c 74 73 20  simulate faults 
fc30: 61 6e 64 20 65 72 72 6f 72 20 63 6f 6e 64 69 74  and error condit
fc40: 69 6f 6e 73 20 74 68 61 74 20 77 6f 75 6c 64 20  ions that would 
fc50: 6f 74 68 65 72 77 69 73 65 20 62 65 20 64 69 66  otherwise be dif
fc60: 66 69 63 75 6c 74 0a 2a 2a 20 6f 72 20 69 6d 70  ficult.** or imp
fc70: 6f 73 73 69 62 6c 65 20 74 6f 20 69 6e 64 75 63  ossible to induc
fc80: 65 2e 20 20 54 68 65 20 73 65 74 20 6f 66 20 73  e.  The set of s
fc90: 79 73 74 65 6d 20 63 61 6c 6c 73 20 74 68 61 74  ystem calls that
fca0: 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64   can be overridd
fcb0: 65 6e 0a 2a 2a 20 76 61 72 69 65 73 20 66 72 6f  en.** varies fro
fcc0: 6d 20 6f 6e 65 20 56 46 53 20 74 6f 20 61 6e 6f  m one VFS to ano
fcd0: 74 68 65 72 2c 20 61 6e 64 20 66 72 6f 6d 20 6f  ther, and from o
fce0: 6e 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  ne version of th
fcf0: 65 20 73 61 6d 65 20 56 46 53 20 74 6f 20 74 68  e same VFS to th
fd00: 65 0a 2a 2a 20 6e 65 78 74 2e 20 20 41 70 70 6c  e.** next.  Appl
fd10: 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 75 73  ications that us
fd20: 65 20 74 68 65 73 65 20 69 6e 74 65 72 66 61 63  e these interfac
fd30: 65 73 20 6d 75 73 74 20 62 65 20 70 72 65 70 61  es must be prepa
fd40: 72 65 64 20 66 6f 72 20 61 6e 79 0a 2a 2a 20 6f  red for any.** o
fd50: 72 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 69  r all of these i
fd60: 6e 74 65 72 66 61 63 65 73 20 74 6f 20 62 65 20  nterfaces to be 
fd70: 4e 55 4c 4c 20 6f 72 20 66 6f 72 20 74 68 65 69  NULL or for thei
fd80: 72 20 62 65 68 61 76 69 6f 72 20 74 6f 20 63 68  r behavior to ch
fd90: 61 6e 67 65 0a 2a 2a 20 66 72 6f 6d 20 6f 6e 65  ange.** from one
fda0: 20 72 65 6c 65 61 73 65 20 74 6f 20 74 68 65 20   release to the 
fdb0: 6e 65 78 74 2e 20 20 41 70 70 6c 69 63 61 74 69  next.  Applicati
fdc0: 6f 6e 73 20 6d 75 73 74 20 6e 6f 74 20 61 74 74  ons must not att
fdd0: 65 6d 70 74 20 74 6f 20 61 63 63 65 73 73 0a 2a  empt to access.*
fde0: 2a 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6d  * any of these m
fdf0: 65 74 68 6f 64 73 20 69 66 20 74 68 65 20 69 56  ethods if the iV
fe00: 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 56 46  ersion of the VF
fe10: 53 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 33  S is less than 3
fe20: 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
fe30: 75 63 74 20 73 71 6c 69 74 65 33 5f 76 66 73 20  uct sqlite3_vfs 
fe40: 73 71 6c 69 74 65 33 5f 76 66 73 3b 0a 74 79 70  sqlite3_vfs;.typ
fe50: 65 64 65 66 20 76 6f 69 64 20 28 2a 73 71 6c 69  edef void (*sqli
fe60: 74 65 33 5f 73 79 73 63 61 6c 6c 5f 70 74 72 29  te3_syscall_ptr)
fe70: 28 76 6f 69 64 29 3b 0a 73 74 72 75 63 74 20 73  (void);.struct s
fe80: 71 6c 69 74 65 33 5f 76 66 73 20 7b 0a 20 20 69  qlite3_vfs {.  i
fe90: 6e 74 20 69 56 65 72 73 69 6f 6e 3b 20 20 20 20  nt iVersion;    
fea0: 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 75 63          /* Struc
feb0: 74 75 72 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d  ture version num
fec0: 62 65 72 20 28 63 75 72 72 65 6e 74 6c 79 20 33  ber (currently 3
fed0: 29 20 2a 2f 0a 20 20 69 6e 74 20 73 7a 4f 73 46  ) */.  int szOsF
fee0: 69 6c 65 3b 20 20 20 20 20 20 20 20 20 20 20 20  ile;            
fef0: 2f 2a 20 53 69 7a 65 20 6f 66 20 73 75 62 63 6c  /* Size of subcl
ff00: 61 73 73 65 64 20 73 71 6c 69 74 65 33 5f 66 69  assed sqlite3_fi
ff10: 6c 65 20 2a 2f 0a 20 20 69 6e 74 20 6d 78 50 61  le */.  int mxPa
ff20: 74 68 6e 61 6d 65 3b 20 20 20 20 20 20 20 20 20  thname;         
ff30: 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 66 69 6c 65   /* Maximum file
ff40: 20 70 61 74 68 6e 61 6d 65 20 6c 65 6e 67 74 68   pathname length
ff50: 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 76 66   */.  sqlite3_vf
ff60: 73 20 2a 70 4e 65 78 74 3b 20 20 20 20 20 20 2f  s *pNext;      /
ff70: 2a 20 4e 65 78 74 20 72 65 67 69 73 74 65 72 65  * Next registere
ff80: 64 20 56 46 53 20 2a 2f 0a 20 20 63 6f 6e 73 74  d VFS */.  const
ff90: 20 63 68 61 72 20 2a 7a 4e 61 6d 65 3b 20 20 20   char *zName;   
ffa0: 20 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74      /* Name of t
ffb0: 68 69 73 20 76 69 72 74 75 61 6c 20 66 69 6c 65  his virtual file
ffc0: 20 73 79 73 74 65 6d 20 2a 2f 0a 20 20 76 6f 69   system */.  voi
ffd0: 64 20 2a 70 41 70 70 44 61 74 61 3b 20 20 20 20  d *pAppData;    
ffe0: 20 20 20 20 20 20 2f 2a 20 50 6f 69 6e 74 65 72        /* Pointer
fff0: 20 74 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d   to application-
10000 73 70 65 63 69 66 69 63 20 64 61 74 61 20 2a 2f  specific data */
10010 0a 20 20 69 6e 74 20 28 2a 78 4f 70 65 6e 29 28  .  int (*xOpen)(
10020 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f  sqlite3_vfs*, co
10030 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c  nst char *zName,
10040 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 0a   sqlite3_file*,.
10050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
10060 6e 74 20 66 6c 61 67 73 2c 20 69 6e 74 20 2a 70  nt flags, int *p
10070 4f 75 74 46 6c 61 67 73 29 3b 0a 20 20 69 6e 74  OutFlags);.  int
10080 20 28 2a 78 44 65 6c 65 74 65 29 28 73 71 6c 69   (*xDelete)(sqli
10090 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20  te3_vfs*, const 
100a0 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74  char *zName, int
100b0 20 73 79 6e 63 44 69 72 29 3b 0a 20 20 69 6e 74   syncDir);.  int
100c0 20 28 2a 78 41 63 63 65 73 73 29 28 73 71 6c 69   (*xAccess)(sqli
100d0 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20  te3_vfs*, const 
100e0 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74  char *zName, int
100f0 20 66 6c 61 67 73 2c 20 69 6e 74 20 2a 70 52 65   flags, int *pRe
10100 73 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78  sOut);.  int (*x
10110 46 75 6c 6c 50 61 74 68 6e 61 6d 65 29 28 73 71  FullPathname)(sq
10120 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73  lite3_vfs*, cons
10130 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69  t char *zName, i
10140 6e 74 20 6e 4f 75 74 2c 20 63 68 61 72 20 2a 7a  nt nOut, char *z
10150 4f 75 74 29 3b 0a 20 20 76 6f 69 64 20 2a 28 2a  Out);.  void *(*
10160 78 44 6c 4f 70 65 6e 29 28 73 71 6c 69 74 65 33  xDlOpen)(sqlite3
10170 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61  _vfs*, const cha
10180 72 20 2a 7a 46 69 6c 65 6e 61 6d 65 29 3b 0a 20  r *zFilename);. 
10190 20 76 6f 69 64 20 28 2a 78 44 6c 45 72 72 6f 72   void (*xDlError
101a0 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
101b0 69 6e 74 20 6e 42 79 74 65 2c 20 63 68 61 72 20  int nByte, char 
101c0 2a 7a 45 72 72 4d 73 67 29 3b 0a 20 20 76 6f 69  *zErrMsg);.  voi
101d0 64 20 28 2a 28 2a 78 44 6c 53 79 6d 29 28 73 71  d (*(*xDlSym)(sq
101e0 6c 69 74 65 33 5f 76 66 73 2a 2c 76 6f 69 64 2a  lite3_vfs*,void*
101f0 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53  , const char *zS
10200 79 6d 62 6f 6c 29 29 28 76 6f 69 64 29 3b 0a 20  ymbol))(void);. 
10210 20 76 6f 69 64 20 28 2a 78 44 6c 43 6c 6f 73 65   void (*xDlClose
10220 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
10230 76 6f 69 64 2a 29 3b 0a 20 20 69 6e 74 20 28 2a  void*);.  int (*
10240 78 52 61 6e 64 6f 6d 6e 65 73 73 29 28 73 71 6c  xRandomness)(sql
10250 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74 20 6e  ite3_vfs*, int n
10260 42 79 74 65 2c 20 63 68 61 72 20 2a 7a 4f 75 74  Byte, char *zOut
10270 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 6c 65 65  );.  int (*xSlee
10280 70 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c  p)(sqlite3_vfs*,
10290 20 69 6e 74 20 6d 69 63 72 6f 73 65 63 6f 6e 64   int microsecond
102a0 73 29 3b 0a 20 20 69 6e 74 20 28 2a 78 43 75 72  s);.  int (*xCur
102b0 72 65 6e 74 54 69 6d 65 29 28 73 71 6c 69 74 65  rentTime)(sqlite
102c0 33 5f 76 66 73 2a 2c 20 64 6f 75 62 6c 65 2a 29  3_vfs*, double*)
102d0 3b 0a 20 20 69 6e 74 20 28 2a 78 47 65 74 4c 61  ;.  int (*xGetLa
102e0 73 74 45 72 72 6f 72 29 28 73 71 6c 69 74 65 33  stError)(sqlite3
102f0 5f 76 66 73 2a 2c 20 69 6e 74 2c 20 63 68 61 72  _vfs*, int, char
10300 20 2a 29 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54   *);.  /*.  ** T
10310 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65  he methods above
10320 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20   are in version 
10330 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 5f  1 of the sqlite_
10340 76 66 73 20 6f 62 6a 65 63 74 0a 20 20 2a 2a 20  vfs object.  ** 
10350 64 65 66 69 6e 69 74 69 6f 6e 2e 20 20 54 68 6f  definition.  Tho
10360 73 65 20 74 68 61 74 20 66 6f 6c 6c 6f 77 20 61  se that follow a
10370 72 65 20 61 64 64 65 64 20 69 6e 20 76 65 72 73  re added in vers
10380 69 6f 6e 20 32 20 6f 72 20 6c 61 74 65 72 0a 20  ion 2 or later. 
10390 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 43 75 72   */.  int (*xCur
103a0 72 65 6e 74 54 69 6d 65 49 6e 74 36 34 29 28 73  rentTimeInt64)(s
103b0 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 73 71 6c  qlite3_vfs*, sql
103c0 69 74 65 33 5f 69 6e 74 36 34 2a 29 3b 0a 20 20  ite3_int64*);.  
103d0 2f 2a 0a 20 20 2a 2a 20 54 68 65 20 6d 65 74 68  /*.  ** The meth
103e0 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e  ods above are in
103f0 20 76 65 72 73 69 6f 6e 73 20 31 20 61 6e 64 20   versions 1 and 
10400 32 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 5f  2 of the sqlite_
10410 76 66 73 20 6f 62 6a 65 63 74 2e 0a 20 20 2a 2a  vfs object..  **
10420 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65   Those below are
10430 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 33 20 61   for version 3 a
10440 6e 64 20 67 72 65 61 74 65 72 2e 0a 20 20 2a 2f  nd greater..  */
10450 0a 20 20 69 6e 74 20 28 2a 78 53 65 74 53 79 73  .  int (*xSetSys
10460 74 65 6d 43 61 6c 6c 29 28 73 71 6c 69 74 65 33  temCall)(sqlite3
10470 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61  _vfs*, const cha
10480 72 20 2a 7a 4e 61 6d 65 2c 20 73 71 6c 69 74 65  r *zName, sqlite
10490 33 5f 73 79 73 63 61 6c 6c 5f 70 74 72 29 3b 0a  3_syscall_ptr);.
104a0 20 20 73 71 6c 69 74 65 33 5f 73 79 73 63 61 6c    sqlite3_syscal
104b0 6c 5f 70 74 72 20 28 2a 78 47 65 74 53 79 73 74  l_ptr (*xGetSyst
104c0 65 6d 43 61 6c 6c 29 28 73 71 6c 69 74 65 33 5f  emCall)(sqlite3_
104d0 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72  vfs*, const char
104e0 20 2a 7a 4e 61 6d 65 29 3b 0a 20 20 63 6f 6e 73   *zName);.  cons
104f0 74 20 63 68 61 72 20 2a 28 2a 78 4e 65 78 74 53  t char *(*xNextS
10500 79 73 74 65 6d 43 61 6c 6c 29 28 73 71 6c 69 74  ystemCall)(sqlit
10510 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63  e3_vfs*, const c
10520 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a 20 20 2f  har *zName);.  /
10530 2a 0a 20 20 2a 2a 20 54 68 65 20 6d 65 74 68 6f  *.  ** The metho
10540 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20  ds above are in 
10550 76 65 72 73 69 6f 6e 73 20 31 20 74 68 72 6f 75  versions 1 throu
10560 67 68 20 33 20 6f 66 20 74 68 65 20 73 71 6c 69  gh 3 of the sqli
10570 74 65 5f 76 66 73 20 6f 62 6a 65 63 74 2e 0a 20  te_vfs object.. 
10580 20 2a 2a 20 4e 65 77 20 66 69 65 6c 64 73 20 6d   ** New fields m
10590 61 79 20 62 65 20 61 70 70 65 6e 64 65 64 20 69  ay be appended i
105a0 6e 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e  n future version
105b0 73 2e 20 20 54 68 65 20 69 56 65 72 73 69 6f 6e  s.  The iVersion
105c0 0a 20 20 2a 2a 20 76 61 6c 75 65 20 77 69 6c 6c  .  ** value will
105d0 20 69 6e 63 72 65 6d 65 6e 74 20 77 68 65 6e 65   increment whene
105e0 76 65 72 20 74 68 69 73 20 68 61 70 70 65 6e 73  ver this happens
105f0 2e 20 0a 20 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a  . .  */.};../*.*
10600 2a 20 43 41 50 49 33 52 45 46 3a 20 46 6c 61 67  * CAPI3REF: Flag
10610 73 20 66 6f 72 20 74 68 65 20 78 41 63 63 65 73  s for the xAcces
10620 73 20 56 46 53 20 6d 65 74 68 6f 64 0a 2a 2a 0a  s VFS method.**.
10630 2a 2a 20 54 68 65 73 65 20 69 6e 74 65 67 65 72  ** These integer
10640 20 63 6f 6e 73 74 61 6e 74 73 20 63 61 6e 20 62   constants can b
10650 65 20 75 73 65 64 20 61 73 20 74 68 65 20 74 68  e used as the th
10660 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ird parameter to
10670 0a 2a 2a 20 74 68 65 20 78 41 63 63 65 73 73 20  .** the xAccess 
10680 6d 65 74 68 6f 64 20 6f 66 20 61 6e 20 5b 73 71  method of an [sq
10690 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63  lite3_vfs] objec
106a0 74 2e 20 20 54 68 65 79 20 64 65 74 65 72 6d 69  t.  They determi
106b0 6e 65 0a 2a 2a 20 77 68 61 74 20 6b 69 6e 64 20  ne.** what kind 
106c0 6f 66 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 74  of permissions t
106d0 68 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f  he xAccess metho
106e0 64 20 69 73 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72  d is looking for
106f0 2e 0a 2a 2a 20 57 69 74 68 20 53 51 4c 49 54 45  ..** With SQLITE
10700 5f 41 43 43 45 53 53 5f 45 58 49 53 54 53 2c 20  _ACCESS_EXISTS, 
10710 74 68 65 20 78 41 63 63 65 73 73 20 6d 65 74 68  the xAccess meth
10720 6f 64 0a 2a 2a 20 73 69 6d 70 6c 79 20 63 68 65  od.** simply che
10730 63 6b 73 20 77 68 65 74 68 65 72 20 74 68 65 20  cks whether the 
10740 66 69 6c 65 20 65 78 69 73 74 73 2e 0a 2a 2a 20  file exists..** 
10750 57 69 74 68 20 53 51 4c 49 54 45 5f 41 43 43 45  With SQLITE_ACCE
10760 53 53 5f 52 45 41 44 57 52 49 54 45 2c 20 74 68  SS_READWRITE, th
10770 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64  e xAccess method
10780 0a 2a 2a 20 63 68 65 63 6b 73 20 77 68 65 74 68  .** checks wheth
10790 65 72 20 74 68 65 20 6e 61 6d 65 64 20 64 69 72  er the named dir
107a0 65 63 74 6f 72 79 20 69 73 20 62 6f 74 68 20 72  ectory is both r
107b0 65 61 64 61 62 6c 65 20 61 6e 64 20 77 72 69 74  eadable and writ
107c0 61 62 6c 65 0a 2a 2a 20 28 69 6e 20 6f 74 68 65  able.** (in othe
107d0 72 20 77 6f 72 64 73 2c 20 69 66 20 66 69 6c 65  r words, if file
107e0 73 20 63 61 6e 20 62 65 20 61 64 64 65 64 2c 20  s can be added, 
107f0 72 65 6d 6f 76 65 64 2c 20 61 6e 64 20 72 65 6e  removed, and ren
10800 61 6d 65 64 20 77 69 74 68 69 6e 0a 2a 2a 20 74  amed within.** t
10810 68 65 20 64 69 72 65 63 74 6f 72 79 29 2e 0a 2a  he directory)..*
10820 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 41 43 43  * The SQLITE_ACC
10830 45 53 53 5f 52 45 41 44 57 52 49 54 45 20 63 6f  ESS_READWRITE co
10840 6e 73 74 61 6e 74 20 69 73 20 63 75 72 72 65 6e  nstant is curren
10850 74 6c 79 20 75 73 65 64 20 6f 6e 6c 79 20 62 79  tly used only by
10860 20 74 68 65 0a 2a 2a 20 5b 74 65 6d 70 5f 73 74   the.** [temp_st
10870 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 20 70 72  ore_directory pr
10880 61 67 6d 61 5d 2c 20 74 68 6f 75 67 68 20 74 68  agma], though th
10890 69 73 20 63 6f 75 6c 64 20 63 68 61 6e 67 65 20  is could change 
108a0 69 6e 20 61 20 66 75 74 75 72 65 0a 2a 2a 20 72  in a future.** r
108b0 65 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74 65  elease of SQLite
108c0 2e 0a 2a 2a 20 57 69 74 68 20 53 51 4c 49 54 45  ..** With SQLITE
108d0 5f 41 43 43 45 53 53 5f 52 45 41 44 2c 20 74 68  _ACCESS_READ, th
108e0 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64  e xAccess method
108f0 0a 2a 2a 20 63 68 65 63 6b 73 20 77 68 65 74 68  .** checks wheth
10900 65 72 20 74 68 65 20 66 69 6c 65 20 69 73 20 72  er the file is r
10910 65 61 64 61 62 6c 65 2e 20 20 54 68 65 20 53 51  eadable.  The SQ
10920 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44  LITE_ACCESS_READ
10930 20 63 6f 6e 73 74 61 6e 74 20 69 73 0a 2a 2a 20   constant is.** 
10940 63 75 72 72 65 6e 74 6c 79 20 75 6e 75 73 65 64  currently unused
10950 2c 20 74 68 6f 75 67 68 20 69 74 20 6d 69 67 68  , though it migh
10960 74 20 62 65 20 75 73 65 64 20 69 6e 20 61 20 66  t be used in a f
10970 75 74 75 72 65 20 72 65 6c 65 61 73 65 20 6f 66  uture release of
10980 0a 2a 2a 20 53 51 4c 69 74 65 2e 0a 2a 2f 0a 23  .** SQLite..*/.#
10990 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 43  define SQLITE_AC
109a0 43 45 53 53 5f 45 58 49 53 54 53 20 20 20 20 30  CESS_EXISTS    0
109b0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
109c0 41 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45  ACCESS_READWRITE
109d0 20 31 20 20 20 2f 2a 20 55 73 65 64 20 62 79 20   1   /* Used by 
109e0 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72  PRAGMA temp_stor
109f0 65 5f 64 69 72 65 63 74 6f 72 79 20 2a 2f 0a 23  e_directory */.#
10a00 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 43  define SQLITE_AC
10a10 43 45 53 53 5f 52 45 41 44 20 20 20 20 20 20 32  CESS_READ      2
10a20 20 20 20 2f 2a 20 55 6e 75 73 65 64 20 2a 2f 0a     /* Unused */.
10a30 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
10a40 20 46 6c 61 67 73 20 66 6f 72 20 74 68 65 20 78   Flags for the x
10a50 53 68 6d 4c 6f 63 6b 20 56 46 53 20 6d 65 74 68  ShmLock VFS meth
10a60 6f 64 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69  od.**.** These i
10a70 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73  nteger constants
10a80 20 64 65 66 69 6e 65 20 74 68 65 20 76 61 72 69   define the vari
10a90 6f 75 73 20 6c 6f 63 6b 69 6e 67 20 6f 70 65 72  ous locking oper
10aa0 61 74 69 6f 6e 73 0a 2a 2a 20 61 6c 6c 6f 77 65  ations.** allowe
10ab0 64 20 62 79 20 74 68 65 20 78 53 68 6d 4c 6f 63  d by the xShmLoc
10ac0 6b 20 6d 65 74 68 6f 64 20 6f 66 20 5b 73 71 6c  k method of [sql
10ad0 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d  ite3_io_methods]
10ae0 2e 20 20 54 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77  .  The.** follow
10af0 69 6e 67 20 61 72 65 20 74 68 65 20 6f 6e 6c 79  ing are the only
10b00 20 6c 65 67 61 6c 20 63 6f 6d 62 69 6e 61 74 69   legal combinati
10b10 6f 6e 73 20 6f 66 20 66 6c 61 67 73 20 74 6f 20  ons of flags to 
10b20 74 68 65 0a 2a 2a 20 78 53 68 6d 4c 6f 63 6b 20  the.** xShmLock 
10b30 6d 65 74 68 6f 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75  method:.**.** <u
10b40 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49  l>.** <li>  SQLI
10b50 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 7c 20 53 51  TE_SHM_LOCK | SQ
10b60 4c 49 54 45 5f 53 48 4d 5f 53 48 41 52 45 44 0a  LITE_SHM_SHARED.
10b70 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f  ** <li>  SQLITE_
10b80 53 48 4d 5f 4c 4f 43 4b 20 7c 20 53 51 4c 49 54  SHM_LOCK | SQLIT
10b90 45 5f 53 48 4d 5f 45 58 43 4c 55 53 49 56 45 0a  E_SHM_EXCLUSIVE.
10ba0 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f  ** <li>  SQLITE_
10bb0 53 48 4d 5f 55 4e 4c 4f 43 4b 20 7c 20 53 51 4c  SHM_UNLOCK | SQL
10bc0 49 54 45 5f 53 48 4d 5f 53 48 41 52 45 44 0a 2a  ITE_SHM_SHARED.*
10bd0 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f 53  * <li>  SQLITE_S
10be0 48 4d 5f 55 4e 4c 4f 43 4b 20 7c 20 53 51 4c 49  HM_UNLOCK | SQLI
10bf0 54 45 5f 53 48 4d 5f 45 58 43 4c 55 53 49 56 45  TE_SHM_EXCLUSIVE
10c00 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20  .** </ul>.**.** 
10c10 57 68 65 6e 20 75 6e 6c 6f 63 6b 69 6e 67 2c 20  When unlocking, 
10c20 74 68 65 20 73 61 6d 65 20 53 48 41 52 45 44 20  the same SHARED 
10c30 6f 72 20 45 58 43 4c 55 53 49 56 45 20 66 6c 61  or EXCLUSIVE fla
10c40 67 20 6d 75 73 74 20 62 65 20 73 75 70 70 6c 69  g must be suppli
10c50 65 64 20 61 73 0a 2a 2a 20 77 61 73 20 67 69 76  ed as.** was giv
10c60 65 6e 20 6f 6e 20 74 68 65 20 63 6f 72 72 65 73  en on the corres
10c70 70 6f 6e 64 69 6e 67 20 6c 6f 63 6b 2e 20 20 0a  ponding lock.  .
10c80 2a 2a 0a 2a 2a 20 54 68 65 20 78 53 68 6d 4c 6f  **.** The xShmLo
10c90 63 6b 20 6d 65 74 68 6f 64 20 63 61 6e 20 74 72  ck method can tr
10ca0 61 6e 73 69 74 69 6f 6e 20 62 65 74 77 65 65 6e  ansition between
10cb0 20 75 6e 6c 6f 63 6b 65 64 20 61 6e 64 20 53 48   unlocked and SH
10cc0 41 52 45 44 20 6f 72 0a 2a 2a 20 62 65 74 77 65  ARED or.** betwe
10cd0 65 6e 20 75 6e 6c 6f 63 6b 65 64 20 61 6e 64 20  en unlocked and 
10ce0 45 58 43 4c 55 53 49 56 45 2e 20 20 49 74 20 63  EXCLUSIVE.  It c
10cf0 61 6e 6e 6f 74 20 74 72 61 6e 73 69 74 69 6f 6e  annot transition
10d00 20 62 65 74 77 65 65 6e 20 53 48 41 52 45 44 0a   between SHARED.
10d10 2a 2a 20 61 6e 64 20 45 58 43 4c 55 53 49 56 45  ** and EXCLUSIVE
10d20 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ..*/.#define SQL
10d30 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b 20 20  ITE_SHM_UNLOCK  
10d40 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65 20 53       1.#define S
10d50 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 20  QLITE_SHM_LOCK  
10d60 20 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65         2.#define
10d70 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53 48 41 52   SQLITE_SHM_SHAR
10d80 45 44 20 20 20 20 20 20 20 34 0a 23 64 65 66 69  ED       4.#defi
10d90 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f 45 58  ne SQLITE_SHM_EX
10da0 43 4c 55 53 49 56 45 20 20 20 20 38 0a 0a 2f 2a  CLUSIVE    8../*
10db0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 61  .** CAPI3REF: Ma
10dc0 78 69 6d 75 6d 20 78 53 68 6d 4c 6f 63 6b 20 69  ximum xShmLock i
10dd0 6e 64 65 78 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78  ndex.**.** The x
10de0 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f  ShmLock method o
10df0 6e 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  n [sqlite3_io_me
10e00 74 68 6f 64 73 5d 20 6d 61 79 20 75 73 65 20 76  thods] may use v
10e10 61 6c 75 65 73 0a 2a 2a 20 62 65 74 77 65 65 6e  alues.** between
10e20 20 30 20 61 6e 64 20 74 68 69 73 20 75 70 70 65   0 and this uppe
10e30 72 20 62 6f 75 6e 64 20 61 73 20 69 74 73 20 22  r bound as its "
10e40 6f 66 66 73 65 74 22 20 61 72 67 75 6d 65 6e 74  offset" argument
10e50 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 69 74 65 20  ..** The SQLite 
10e60 63 6f 72 65 20 77 69 6c 6c 20 6e 65 76 65 72 20  core will never 
10e70 61 74 74 65 6d 70 74 20 74 6f 20 61 63 71 75 69  attempt to acqui
10e80 72 65 20 6f 72 20 72 65 6c 65 61 73 65 20 61 0a  re or release a.
10e90 2a 2a 20 6c 6f 63 6b 20 6f 75 74 73 69 64 65 20  ** lock outside 
10ea0 6f 66 20 74 68 69 73 20 72 61 6e 67 65 0a 2a 2f  of this range.*/
10eb0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
10ec0 53 48 4d 5f 4e 4c 4f 43 4b 20 20 20 20 20 20 20  SHM_NLOCK       
10ed0 20 38 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33   8.../*.** CAPI3
10ee0 52 45 46 3a 20 49 6e 69 74 69 61 6c 69 7a 65 20  REF: Initialize 
10ef0 54 68 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61  The SQLite Libra
10f00 72 79 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  ry.**.** ^The sq
10f10 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
10f20 28 29 20 72 6f 75 74 69 6e 65 20 69 6e 69 74 69  () routine initi
10f30 61 6c 69 7a 65 73 20 74 68 65 0a 2a 2a 20 53 51  alizes the.** SQ
10f40 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20 5e  Lite library.  ^
10f50 54 68 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74  The sqlite3_shut
10f60 64 6f 77 6e 28 29 20 72 6f 75 74 69 6e 65 0a 2a  down() routine.*
10f70 2a 20 64 65 61 6c 6c 6f 63 61 74 65 73 20 61 6e  * deallocates an
10f80 79 20 72 65 73 6f 75 72 63 65 73 20 74 68 61 74  y resources that
10f90 20 77 65 72 65 20 61 6c 6c 6f 63 61 74 65 64 20   were allocated 
10fa0 62 79 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  by sqlite3_initi
10fb0 61 6c 69 7a 65 28 29 2e 0a 2a 2a 20 54 68 65 73  alize()..** Thes
10fc0 65 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 64  e routines are d
10fd0 65 73 69 67 6e 65 64 20 74 6f 20 61 69 64 20 69  esigned to aid i
10fe0 6e 20 70 72 6f 63 65 73 73 20 69 6e 69 74 69 61  n process initia
10ff0 6c 69 7a 61 74 69 6f 6e 20 61 6e 64 0a 2a 2a 20  lization and.** 
11000 73 68 75 74 64 6f 77 6e 20 6f 6e 20 65 6d 62 65  shutdown on embe
11010 64 64 65 64 20 73 79 73 74 65 6d 73 2e 20 20 57  dded systems.  W
11020 6f 72 6b 73 74 61 74 69 6f 6e 20 61 70 70 6c 69  orkstation appli
11030 63 61 74 69 6f 6e 73 20 75 73 69 6e 67 0a 2a 2a  cations using.**
11040 20 53 51 4c 69 74 65 20 6e 6f 72 6d 61 6c 6c 79   SQLite normally
11050 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20   do not need to 
11060 69 6e 76 6f 6b 65 20 65 69 74 68 65 72 20 6f 66  invoke either of
11070 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73 2e   these routines.
11080 0a 2a 2a 0a 2a 2a 20 41 20 63 61 6c 6c 20 74 6f  .**.** A call to
11090 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
110a0 69 7a 65 28 29 20 69 73 20 61 6e 20 22 65 66 66  ize() is an "eff
110b0 65 63 74 69 76 65 22 20 63 61 6c 6c 20 69 66 20  ective" call if 
110c0 69 74 20 69 73 0a 2a 2a 20 74 68 65 20 66 69 72  it is.** the fir
110d0 73 74 20 74 69 6d 65 20 73 71 6c 69 74 65 33 5f  st time sqlite3_
110e0 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20  initialize() is 
110f0 69 6e 76 6f 6b 65 64 20 64 75 72 69 6e 67 20 74  invoked during t
11100 68 65 20 6c 69 66 65 74 69 6d 65 20 6f 66 0a 2a  he lifetime of.*
11110 2a 20 74 68 65 20 70 72 6f 63 65 73 73 2c 20 6f  * the process, o
11120 72 20 69 66 20 69 74 20 69 73 20 74 68 65 20 66  r if it is the f
11130 69 72 73 74 20 74 69 6d 65 20 73 71 6c 69 74 65  irst time sqlite
11140 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69  3_initialize() i
11150 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 66 6f 6c  s invoked.** fol
11160 6c 6f 77 69 6e 67 20 61 20 63 61 6c 6c 20 74 6f  lowing a call to
11170 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
11180 6e 28 29 2e 20 20 5e 28 4f 6e 6c 79 20 61 6e 20  n().  ^(Only an 
11190 65 66 66 65 63 74 69 76 65 20 63 61 6c 6c 0a 2a  effective call.*
111a0 2a 20 6f 66 20 73 71 6c 69 74 65 33 5f 69 6e 69  * of sqlite3_ini
111b0 74 69 61 6c 69 7a 65 28 29 20 64 6f 65 73 20 61  tialize() does a
111c0 6e 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  ny initializatio
111d0 6e 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20 63 61  n.  All other ca
111e0 6c 6c 73 0a 2a 2a 20 61 72 65 20 68 61 72 6d 6c  lls.** are harml
111f0 65 73 73 20 6e 6f 2d 6f 70 73 2e 29 5e 0a 2a 2a  ess no-ops.)^.**
11200 0a 2a 2a 20 41 20 63 61 6c 6c 20 74 6f 20 73 71  .** A call to sq
11210 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
11220 20 69 73 20 61 6e 20 22 65 66 66 65 63 74 69 76   is an "effectiv
11230 65 22 20 63 61 6c 6c 20 69 66 20 69 74 20 69 73  e" call if it is
11240 20 74 68 65 20 66 69 72 73 74 0a 2a 2a 20 63 61   the first.** ca
11250 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68  ll to sqlite3_sh
11260 75 74 64 6f 77 6e 28 29 20 73 69 6e 63 65 20 74  utdown() since t
11270 68 65 20 6c 61 73 74 20 73 71 6c 69 74 65 33 5f  he last sqlite3_
11280 69 6e 69 74 69 61 6c 69 7a 65 28 29 2e 20 20 5e  initialize().  ^
11290 28 4f 6e 6c 79 0a 2a 2a 20 61 6e 20 65 66 66 65  (Only.** an effe
112a0 63 74 69 76 65 20 63 61 6c 6c 20 74 6f 20 73 71  ctive call to sq
112b0 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
112c0 20 64 6f 65 73 20 61 6e 79 20 64 65 69 6e 69 74   does any deinit
112d0 69 61 6c 69 7a 61 74 69 6f 6e 2e 0a 2a 2a 20 41  ialization..** A
112e0 6c 6c 20 6f 74 68 65 72 20 76 61 6c 69 64 20 63  ll other valid c
112f0 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f  alls to sqlite3_
11300 73 68 75 74 64 6f 77 6e 28 29 20 61 72 65 20 68  shutdown() are h
11310 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 73 2e 29  armless no-ops.)
11320 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ^.**.** The sqli
11330 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
11340 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 74 68   interface is th
11350 72 65 61 64 73 61 66 65 2c 20 62 75 74 20 73 71  readsafe, but sq
11360 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
11370 0a 2a 2a 20 69 73 20 6e 6f 74 2e 20 20 54 68 65  .** is not.  The
11380 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
11390 6e 28 29 20 69 6e 74 65 72 66 61 63 65 20 6d 75  n() interface mu
113a0 73 74 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65  st only be calle
113b0 64 20 66 72 6f 6d 20 61 0a 2a 2a 20 73 69 6e 67  d from a.** sing
113c0 6c 65 20 74 68 72 65 61 64 2e 20 20 41 6c 6c 20  le thread.  All 
113d0 6f 70 65 6e 20 5b 64 61 74 61 62 61 73 65 20 63  open [database c
113e0 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 6d 75 73 74  onnections] must
113f0 20 62 65 20 63 6c 6f 73 65 64 20 61 6e 64 20 61   be closed and a
11400 6c 6c 0a 2a 2a 20 6f 74 68 65 72 20 53 51 4c 69  ll.** other SQLi
11410 74 65 20 72 65 73 6f 75 72 63 65 73 20 6d 75 73  te resources mus
11420 74 20 62 65 20 64 65 61 6c 6c 6f 63 61 74 65 64  t be deallocated
11430 20 70 72 69 6f 72 20 74 6f 20 69 6e 76 6f 6b 69   prior to invoki
11440 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73 68  ng.** sqlite3_sh
11450 75 74 64 6f 77 6e 28 29 2e 0a 2a 2a 0a 2a 2a 20  utdown()..**.** 
11460 41 6d 6f 6e 67 20 6f 74 68 65 72 20 74 68 69 6e  Among other thin
11470 67 73 2c 20 5e 73 71 6c 69 74 65 33 5f 69 6e 69  gs, ^sqlite3_ini
11480 74 69 61 6c 69 7a 65 28 29 20 77 69 6c 6c 20 69  tialize() will i
11490 6e 76 6f 6b 65 0a 2a 2a 20 73 71 6c 69 74 65 33  nvoke.** sqlite3
114a0 5f 6f 73 5f 69 6e 69 74 28 29 2e 20 20 53 69 6d  _os_init().  Sim
114b0 69 6c 61 72 6c 79 2c 20 5e 73 71 6c 69 74 65 33  ilarly, ^sqlite3
114c0 5f 73 68 75 74 64 6f 77 6e 28 29 0a 2a 2a 20 77  _shutdown().** w
114d0 69 6c 6c 20 69 6e 76 6f 6b 65 20 73 71 6c 69 74  ill invoke sqlit
114e0 65 33 5f 6f 73 5f 65 6e 64 28 29 2e 0a 2a 2a 0a  e3_os_end()..**.
114f0 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
11500 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 72 6f 75  initialize() rou
11510 74 69 6e 65 20 72 65 74 75 72 6e 73 20 5b 53 51  tine returns [SQ
11520 4c 49 54 45 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63  LITE_OK] on succ
11530 65 73 73 2e 0a 2a 2a 20 5e 49 66 20 66 6f 72 20  ess..** ^If for 
11540 73 6f 6d 65 20 72 65 61 73 6f 6e 2c 20 73 71 6c  some reason, sql
11550 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
11560 29 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 69  ) is unable to i
11570 6e 69 74 69 61 6c 69 7a 65 0a 2a 2a 20 74 68 65  nitialize.** the
11580 20 6c 69 62 72 61 72 79 20 28 70 65 72 68 61 70   library (perhap
11590 73 20 69 74 20 69 73 20 75 6e 61 62 6c 65 20 74  s it is unable t
115a0 6f 20 61 6c 6c 6f 63 61 74 65 20 61 20 6e 65 65  o allocate a nee
115b0 64 65 64 20 72 65 73 6f 75 72 63 65 20 73 75 63  ded resource suc
115c0 68 0a 2a 2a 20 61 73 20 61 20 6d 75 74 65 78 29  h.** as a mutex)
115d0 20 69 74 20 72 65 74 75 72 6e 73 20 61 6e 20 5b   it returns an [
115e0 65 72 72 6f 72 20 63 6f 64 65 5d 20 6f 74 68 65  error code] othe
115f0 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4f  r than [SQLITE_O
11600 4b 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  K]..**.** ^The s
11610 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
11620 65 28 29 20 72 6f 75 74 69 6e 65 20 69 73 20 63  e() routine is c
11630 61 6c 6c 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79  alled internally
11640 20 62 79 20 6d 61 6e 79 20 6f 74 68 65 72 0a 2a   by many other.*
11650 2a 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61  * SQLite interfa
11660 63 65 73 20 73 6f 20 74 68 61 74 20 61 6e 20 61  ces so that an a
11670 70 70 6c 69 63 61 74 69 6f 6e 20 75 73 75 61 6c  pplication usual
11680 6c 79 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64  ly does not need
11690 20 74 6f 0a 2a 2a 20 69 6e 76 6f 6b 65 20 73 71   to.** invoke sq
116a0 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
116b0 28 29 20 64 69 72 65 63 74 6c 79 2e 20 20 46 6f  () directly.  Fo
116c0 72 20 65 78 61 6d 70 6c 65 2c 20 5b 73 71 6c 69  r example, [sqli
116d0 74 65 33 5f 6f 70 65 6e 28 29 5d 0a 2a 2a 20 63  te3_open()].** c
116e0 61 6c 6c 73 20 73 71 6c 69 74 65 33 5f 69 6e 69  alls sqlite3_ini
116f0 74 69 61 6c 69 7a 65 28 29 20 73 6f 20 74 68 65  tialize() so the
11700 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
11710 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74 69  will be automati
11720 63 61 6c 6c 79 0a 2a 2a 20 69 6e 69 74 69 61 6c  cally.** initial
11730 69 7a 65 64 20 77 68 65 6e 20 5b 73 71 6c 69 74  ized when [sqlit
11740 65 33 5f 6f 70 65 6e 28 29 5d 20 69 73 20 63 61  e3_open()] is ca
11750 6c 6c 65 64 20 69 66 20 69 74 20 68 61 73 20 6e  lled if it has n
11760 6f 74 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65  ot be initialize
11770 64 0a 2a 2a 20 61 6c 72 65 61 64 79 2e 20 20 5e  d.** already.  ^
11780 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c 69  However, if SQLi
11790 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
117a0 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ith the [SQLITE_
117b0 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 5d 0a 2a  OMIT_AUTOINIT].*
117c0 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  * compile-time o
117d0 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20  ption, then the 
117e0 61 75 74 6f 6d 61 74 69 63 20 63 61 6c 6c 73 20  automatic calls 
117f0 74 6f 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  to sqlite3_initi
11800 61 6c 69 7a 65 28 29 0a 2a 2a 20 61 72 65 20 6f  alize().** are o
11810 6d 69 74 74 65 64 20 61 6e 64 20 74 68 65 20 61  mitted and the a
11820 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20  pplication must 
11830 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 69 6e 69  call sqlite3_ini
11840 74 69 61 6c 69 7a 65 28 29 20 64 69 72 65 63 74  tialize() direct
11850 6c 79 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20 75  ly.** prior to u
11860 73 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 53  sing any other S
11870 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e  QLite interface.
11880 20 20 46 6f 72 20 6d 61 78 69 6d 75 6d 20 70 6f    For maximum po
11890 72 74 61 62 69 6c 69 74 79 2c 0a 2a 2a 20 69 74  rtability,.** it
118a0 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20   is recommended 
118b0 74 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  that application
118c0 73 20 61 6c 77 61 79 73 20 69 6e 76 6f 6b 65 20  s always invoke 
118d0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
118e0 7a 65 28 29 0a 2a 2a 20 64 69 72 65 63 74 6c 79  ze().** directly
118f0 20 70 72 69 6f 72 20 74 6f 20 75 73 69 6e 67 20   prior to using 
11900 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 69 74 65  any other SQLite
11910 20 69 6e 74 65 72 66 61 63 65 2e 20 20 46 75 74   interface.  Fut
11920 75 72 65 20 72 65 6c 65 61 73 65 73 0a 2a 2a 20  ure releases.** 
11930 6f 66 20 53 51 4c 69 74 65 20 6d 61 79 20 72 65  of SQLite may re
11940 71 75 69 72 65 20 74 68 69 73 2e 20 20 49 6e 20  quire this.  In 
11950 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65  other words, the
11960 20 62 65 68 61 76 69 6f 72 20 65 78 68 69 62 69   behavior exhibi
11970 74 65 64 0a 2a 2a 20 77 68 65 6e 20 53 51 4c 69  ted.** when SQLi
11980 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
11990 69 74 68 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  ith [SQLITE_OMIT
119a0 5f 41 55 54 4f 49 4e 49 54 5d 20 6d 69 67 68 74  _AUTOINIT] might
119b0 20 62 65 63 6f 6d 65 20 74 68 65 0a 2a 2a 20 64   become the.** d
119c0 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
119d0 69 6e 20 73 6f 6d 65 20 66 75 74 75 72 65 20 72  in some future r
119e0 65 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74 65  elease of SQLite
119f0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
11a00 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20 72 6f  te3_os_init() ro
11a10 75 74 69 6e 65 20 64 6f 65 73 20 6f 70 65 72 61  utine does opera
11a20 74 69 6e 67 2d 73 79 73 74 65 6d 20 73 70 65 63  ting-system spec
11a30 69 66 69 63 0a 2a 2a 20 69 6e 69 74 69 61 6c 69  ific.** initiali
11a40 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51  zation of the SQ
11a50 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20 54  Lite library.  T
11a60 68 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  he sqlite3_os_en
11a70 64 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 75  d().** routine u
11a80 6e 64 6f 65 73 20 74 68 65 20 65 66 66 65 63 74  ndoes the effect
11a90 20 6f 66 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69   of sqlite3_os_i
11aa0 6e 69 74 28 29 2e 20 20 54 79 70 69 63 61 6c 20  nit().  Typical 
11ab0 74 61 73 6b 73 0a 2a 2a 20 70 65 72 66 6f 72 6d  tasks.** perform
11ac0 65 64 20 62 79 20 74 68 65 73 65 20 72 6f 75 74  ed by these rout
11ad0 69 6e 65 73 20 69 6e 63 6c 75 64 65 20 61 6c 6c  ines include all
11ae0 6f 63 61 74 69 6f 6e 20 6f 72 20 64 65 61 6c 6c  ocation or deall
11af0 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 73 74  ocation.** of st
11b00 61 74 69 63 20 72 65 73 6f 75 72 63 65 73 2c 20  atic resources, 
11b10 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f  initialization o
11b20 66 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c  f global variabl
11b30 65 73 2c 0a 2a 2a 20 73 65 74 74 69 6e 67 20 75  es,.** setting u
11b40 70 20 61 20 64 65 66 61 75 6c 74 20 5b 73 71 6c  p a default [sql
11b50 69 74 65 33 5f 76 66 73 5d 20 6d 6f 64 75 6c 65  ite3_vfs] module
11b60 2c 20 6f 72 20 73 65 74 74 69 6e 67 20 75 70 0a  , or setting up.
11b70 2a 2a 20 61 20 64 65 66 61 75 6c 74 20 63 6f 6e  ** a default con
11b80 66 69 67 75 72 61 74 69 6f 6e 20 75 73 69 6e 67  figuration using
11b90 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
11ba0 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61  ()]..**.** The a
11bb0 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c  pplication shoul
11bc0 64 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20 65  d never invoke e
11bd0 69 74 68 65 72 20 73 71 6c 69 74 65 33 5f 6f 73  ither sqlite3_os
11be0 5f 69 6e 69 74 28 29 0a 2a 2a 20 6f 72 20 73 71  _init().** or sq
11bf0 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 20 64  lite3_os_end() d
11c00 69 72 65 63 74 6c 79 2e 20 20 54 68 65 20 61 70  irectly.  The ap
11c10 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64  plication should
11c20 20 6f 6e 6c 79 20 69 6e 76 6f 6b 65 0a 2a 2a 20   only invoke.** 
11c30 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
11c40 7a 65 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33  ze() and sqlite3
11c50 5f 73 68 75 74 64 6f 77 6e 28 29 2e 20 20 54 68  _shutdown().  Th
11c60 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69  e sqlite3_os_ini
11c70 74 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  t().** interface
11c80 20 69 73 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d   is called autom
11c90 61 74 69 63 61 6c 6c 79 20 62 79 20 73 71 6c 69  atically by sqli
11ca0 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
11cb0 20 61 6e 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f   and.** sqlite3_
11cc0 6f 73 5f 65 6e 64 28 29 20 69 73 20 63 61 6c 6c  os_end() is call
11cd0 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 73 68  ed by sqlite3_sh
11ce0 75 74 64 6f 77 6e 28 29 2e 20 20 41 70 70 72 6f  utdown().  Appro
11cf0 70 72 69 61 74 65 0a 2a 2a 20 69 6d 70 6c 65 6d  priate.** implem
11d00 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20 73 71  entations for sq
11d10 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20  lite3_os_init() 
11d20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65  and sqlite3_os_e
11d30 6e 64 28 29 0a 2a 2a 20 61 72 65 20 62 75 69 6c  nd().** are buil
11d40 74 20 69 6e 74 6f 20 53 51 4c 69 74 65 20 77 68  t into SQLite wh
11d50 65 6e 20 69 74 20 69 73 20 63 6f 6d 70 69 6c 65  en it is compile
11d60 64 20 66 6f 72 20 55 6e 69 78 2c 20 57 69 6e 64  d for Unix, Wind
11d70 6f 77 73 2c 20 6f 72 20 4f 53 2f 32 2e 0a 2a 2a  ows, or OS/2..**
11d80 20 57 68 65 6e 20 5b 63 75 73 74 6f 6d 20 62 75   When [custom bu
11d90 69 6c 64 73 20 7c 20 62 75 69 6c 74 20 66 6f 72  ilds | built for
11da0 20 6f 74 68 65 72 20 70 6c 61 74 66 6f 72 6d 73   other platforms
11db0 5d 0a 2a 2a 20 28 75 73 69 6e 67 20 74 68 65 20  ].** (using the 
11dc0 5b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52  [SQLITE_OS_OTHER
11dd0 3d 31 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  =1] compile-time
11de0 0a 2a 2a 20 6f 70 74 69 6f 6e 29 20 74 68 65 20  .** option) the 
11df0 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74  application must
11e00 20 73 75 70 70 6c 79 20 61 20 73 75 69 74 61 62   supply a suitab
11e10 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
11e20 6e 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33  n for.** sqlite3
11e30 5f 6f 73 5f 69 6e 69 74 28 29 20 61 6e 64 20 73  _os_init() and s
11e40 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 2e  qlite3_os_end().
11e50 20 20 41 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e    An application
11e60 2d 73 75 70 70 6c 69 65 64 0a 2a 2a 20 69 6d 70  -supplied.** imp
11e70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 73  lementation of s
11e80 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
11e90 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65   or sqlite3_os_e
11ea0 6e 64 28 29 0a 2a 2a 20 6d 75 73 74 20 72 65 74  nd().** must ret
11eb0 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  urn [SQLITE_OK] 
11ec0 6f 6e 20 73 75 63 63 65 73 73 20 61 6e 64 20 73  on success and s
11ed0 6f 6d 65 20 6f 74 68 65 72 20 5b 65 72 72 6f 72  ome other [error
11ee0 20 63 6f 64 65 5d 20 75 70 6f 6e 0a 2a 2a 20 66   code] upon.** f
11ef0 61 69 6c 75 72 65 2e 0a 2a 2f 0a 69 6e 74 20 73  ailure..*/.int s
11f00 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
11f10 65 28 76 6f 69 64 29 3b 0a 69 6e 74 20 73 71 6c  e(void);.int sql
11f20 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 76 6f  ite3_shutdown(vo
11f30 69 64 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  id);.int sqlite3
11f40 5f 6f 73 5f 69 6e 69 74 28 76 6f 69 64 29 3b 0a  _os_init(void);.
11f50 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65  int sqlite3_os_e
11f60 6e 64 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a  nd(void);../*.**
11f70 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e 66 69   CAPI3REF: Confi
11f80 67 75 72 69 6e 67 20 54 68 65 20 53 51 4c 69 74  guring The SQLit
11f90 65 20 4c 69 62 72 61 72 79 0a 2a 2a 0a 2a 2a 20  e Library.**.** 
11fa0 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  The sqlite3_conf
11fb0 69 67 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  ig() interface i
11fc0 73 20 75 73 65 64 20 74 6f 20 6d 61 6b 65 20 67  s used to make g
11fd0 6c 6f 62 61 6c 20 63 6f 6e 66 69 67 75 72 61 74  lobal configurat
11fe0 69 6f 6e 0a 2a 2a 20 63 68 61 6e 67 65 73 20 74  ion.** changes t
11ff0 6f 20 53 51 4c 69 74 65 20 69 6e 20 6f 72 64 65  o SQLite in orde
12000 72 20 74 6f 20 74 75 6e 65 20 53 51 4c 69 74 65  r to tune SQLite
12010 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 63   to the specific
12020 20 6e 65 65 64 73 20 6f 66 0a 2a 2a 20 74 68 65   needs of.** the
12030 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20 54   application.  T
12040 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 69  he default confi
12050 67 75 72 61 74 69 6f 6e 20 69 73 20 72 65 63 6f  guration is reco
12060 6d 6d 65 6e 64 65 64 20 66 6f 72 20 6d 6f 73 74  mmended for most
12070 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  .** applications
12080 20 61 6e 64 20 73 6f 20 74 68 69 73 20 72 6f 75   and so this rou
12090 74 69 6e 65 20 69 73 20 75 73 75 61 6c 6c 79 20  tine is usually 
120a0 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 2e 20 20  not necessary.  
120b0 49 74 20 69 73 0a 2a 2a 20 70 72 6f 76 69 64 65  It is.** provide
120c0 64 20 74 6f 20 73 75 70 70 6f 72 74 20 72 61 72  d to support rar
120d0 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77  e applications w
120e0 69 74 68 20 75 6e 75 73 75 61 6c 20 6e 65 65 64  ith unusual need
120f0 73 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 54 68 65 20  s..**.** <b>The 
12100 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
12110 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f   interface is no
12120 74 20 74 68 72 65 61 64 73 61 66 65 2e 20 54 68  t threadsafe. Th
12130 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a  e application.**
12140 20 6d 75 73 74 20 65 6e 73 75 72 65 20 74 68 61   must ensure tha
12150 74 20 6e 6f 20 6f 74 68 65 72 20 53 51 4c 69 74  t no other SQLit
12160 65 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65  e interfaces are
12170 20 69 6e 76 6f 6b 65 64 20 62 79 20 6f 74 68 65   invoked by othe
12180 72 0a 2a 2a 20 74 68 72 65 61 64 73 20 77 68 69  r.** threads whi
12190 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  le sqlite3_confi
121a0 67 28 29 20 69 73 20 72 75 6e 6e 69 6e 67 2e 3c  g() is running.<
121b0 2f 62 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71  /b>.**.** The sq
121c0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 69  lite3_config() i
121d0 6e 74 65 72 66 61 63 65 0a 2a 2a 20 6d 61 79 20  nterface.** may 
121e0 6f 6e 6c 79 20 62 65 20 69 6e 76 6f 6b 65 64 20  only be invoked 
121f0 70 72 69 6f 72 20 74 6f 20 6c 69 62 72 61 72 79  prior to library
12200 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20   initialization 
12210 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65  using.** [sqlite
12220 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
12230 6f 72 20 61 66 74 65 72 20 73 68 75 74 64 6f 77  or after shutdow
12240 6e 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 73 68  n by [sqlite3_sh
12250 75 74 64 6f 77 6e 28 29 5d 2e 0a 2a 2a 20 5e 49  utdown()]..** ^I
12260 66 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  f sqlite3_config
12270 28 29 20 69 73 20 63 61 6c 6c 65 64 20 61 66 74  () is called aft
12280 65 72 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  er [sqlite3_init
12290 69 61 6c 69 7a 65 28 29 5d 20 61 6e 64 20 62 65  ialize()] and be
122a0 66 6f 72 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  fore.** [sqlite3
122b0 5f 73 68 75 74 64 6f 77 6e 28 29 5d 20 74 68 65  _shutdown()] the
122c0 6e 20 69 74 20 77 69 6c 6c 20 72 65 74 75 72 6e  n it will return
122d0 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 2e 0a   SQLITE_MISUSE..
122e0 2a 2a 20 4e 6f 74 65 2c 20 68 6f 77 65 76 65 72  ** Note, however
122f0 2c 20 74 68 61 74 20 5e 73 71 6c 69 74 65 33 5f  , that ^sqlite3_
12300 63 6f 6e 66 69 67 28 29 20 63 61 6e 20 62 65 20  config() can be 
12310 63 61 6c 6c 65 64 20 61 73 20 70 61 72 74 20 6f  called as part o
12320 66 20 74 68 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65  f the.** impleme
12330 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 70  ntation of an ap
12340 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
12350 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e  d [sqlite3_os_in
12360 69 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  it()]..**.** The
12370 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
12380 74 6f 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  to sqlite3_confi
12390 67 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67 65  g() is an intege
123a0 72 0a 2a 2a 20 5b 63 6f 6e 66 69 67 75 72 61 74  r.** [configurat
123b0 69 6f 6e 20 6f 70 74 69 6f 6e 5d 20 74 68 61 74  ion option] that
123c0 20 64 65 74 65 72 6d 69 6e 65 73 0a 2a 2a 20 77   determines.** w
123d0 68 61 74 20 70 72 6f 70 65 72 74 79 20 6f 66 20  hat property of 
123e0 53 51 4c 69 74 65 20 69 73 20 74 6f 20 62 65 20  SQLite is to be 
123f0 63 6f 6e 66 69 67 75 72 65 64 2e 20 20 53 75 62  configured.  Sub
12400 73 65 71 75 65 6e 74 20 61 72 67 75 6d 65 6e 74  sequent argument
12410 73 0a 2a 2a 20 76 61 72 79 20 64 65 70 65 6e 64  s.** vary depend
12420 69 6e 67 20 6f 6e 20 74 68 65 20 5b 63 6f 6e 66  ing on the [conf
12430 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
12440 5d 0a 2a 2a 20 69 6e 20 74 68 65 20 66 69 72 73  ].** in the firs
12450 74 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a  t argument..**.*
12460 2a 20 5e 57 68 65 6e 20 61 20 63 6f 6e 66 69 67  * ^When a config
12470 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69  uration option i
12480 73 20 73 65 74 2c 20 73 71 6c 69 74 65 33 5f 63  s set, sqlite3_c
12490 6f 6e 66 69 67 28 29 20 72 65 74 75 72 6e 73 20  onfig() returns 
124a0 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2e 0a 2a 2a 20  [SQLITE_OK]..** 
124b0 5e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 20 69  ^If the option i
124c0 73 20 75 6e 6b 6e 6f 77 6e 20 6f 72 20 53 51 4c  s unknown or SQL
124d0 69 74 65 20 69 73 20 75 6e 61 62 6c 65 20 74 6f  ite is unable to
124e0 20 73 65 74 20 74 68 65 20 6f 70 74 69 6f 6e 0a   set the option.
124f0 2a 2a 20 74 68 65 6e 20 74 68 69 73 20 72 6f 75  ** then this rou
12500 74 69 6e 65 20 72 65 74 75 72 6e 73 20 61 20 6e  tine returns a n
12510 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72 20 63  on-zero [error c
12520 6f 64 65 5d 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  ode]..*/.int sql
12530 69 74 65 33 5f 63 6f 6e 66 69 67 28 69 6e 74 2c  ite3_config(int,
12540 20 2e 2e 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41   ...);../*.** CA
12550 50 49 33 52 45 46 3a 20 43 6f 6e 66 69 67 75 72  PI3REF: Configur
12560 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
12570 63 74 69 6f 6e 73 0a 2a 2a 20 4d 45 54 48 4f 44  ctions.** METHOD
12580 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
12590 54 68 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  The sqlite3_db_c
125a0 6f 6e 66 69 67 28 29 20 69 6e 74 65 72 66 61 63  onfig() interfac
125b0 65 20 69 73 20 75 73 65 64 20 74 6f 20 6d 61 6b  e is used to mak
125c0 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a  e configuration.
125d0 2a 2a 20 63 68 61 6e 67 65 73 20 74 6f 20 61 20  ** changes to a 
125e0 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
125f0 74 69 6f 6e 5d 2e 20 20 54 68 65 20 69 6e 74 65  tion].  The inte
12600 72 66 61 63 65 20 69 73 20 73 69 6d 69 6c 61 72  rface is similar
12610 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   to.** [sqlite3_
12620 63 6f 6e 66 69 67 28 29 5d 20 65 78 63 65 70 74  config()] except
12630 20 74 68 61 74 20 74 68 65 20 63 68 61 6e 67 65   that the change
12640 73 20 61 70 70 6c 79 20 74 6f 20 61 20 73 69 6e  s apply to a sin
12650 67 6c 65 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65  gle.** [database
12660 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28 73 70   connection] (sp
12670 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 66  ecified in the f
12680 69 72 73 74 20 61 72 67 75 6d 65 6e 74 29 2e 0a  irst argument)..
12690 2a 2a 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64  **.** The second
126a0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c   argument to sql
126b0 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 44  ite3_db_config(D
126c0 2c 56 2c 2e 2e 2e 29 20 20 69 73 20 74 68 65 0a  ,V,...)  is the.
126d0 2a 2a 20 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ** [SQLITE_DBCON
126e0 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 7c 20  FIG_LOOKASIDE | 
126f0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 76 65  configuration ve
12700 72 62 5d 20 2d 20 61 6e 20 69 6e 74 65 67 65 72  rb] - an integer
12710 20 63 6f 64 65 20 0a 2a 2a 20 74 68 61 74 20 69   code .** that i
12720 6e 64 69 63 61 74 65 73 20 77 68 61 74 20 61 73  ndicates what as
12730 70 65 63 74 20 6f 66 20 74 68 65 20 5b 64 61 74  pect of the [dat
12740 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
12750 5d 20 69 73 20 62 65 69 6e 67 20 63 6f 6e 66 69  ] is being confi
12760 67 75 72 65 64 2e 0a 2a 2a 20 53 75 62 73 65 71  gured..** Subseq
12770 75 65 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 76  uent arguments v
12780 61 72 79 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ary depending on
12790 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69   the configurati
127a0 6f 6e 20 76 65 72 62 2e 0a 2a 2a 0a 2a 2a 20 5e  on verb..**.** ^
127b0 43 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33  Calls to sqlite3
127c0 5f 64 62 5f 63 6f 6e 66 69 67 28 29 20 72 65 74  _db_config() ret
127d0 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66  urn SQLITE_OK if
127e0 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 2a 2a 20   and only if.** 
127f0 74 68 65 20 63 61 6c 6c 20 69 73 20 63 6f 6e 73  the call is cons
12800 69 64 65 72 65 64 20 73 75 63 63 65 73 73 66 75  idered successfu
12810 6c 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  l..*/.int sqlite
12820 33 5f 64 62 5f 63 6f 6e 66 69 67 28 73 71 6c 69  3_db_config(sqli
12830 74 65 33 2a 2c 20 69 6e 74 20 6f 70 2c 20 2e 2e  te3*, int op, ..
12840 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  .);../*.** CAPI3
12850 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f  REF: Memory Allo
12860 63 61 74 69 6f 6e 20 52 6f 75 74 69 6e 65 73 0a  cation Routines.
12870 2a 2a 0a 2a 2a 20 41 6e 20 69 6e 73 74 61 6e 63  **.** An instanc
12880 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  e of this object
12890 20 64 65 66 69 6e 65 73 20 74 68 65 20 69 6e 74   defines the int
128a0 65 72 66 61 63 65 20 62 65 74 77 65 65 6e 20 53  erface between S
128b0 51 4c 69 74 65 0a 2a 2a 20 61 6e 64 20 6c 6f 77  QLite.** and low
128c0 2d 6c 65 76 65 6c 20 6d 65 6d 6f 72 79 20 61 6c  -level memory al
128d0 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65  location routine
128e0 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 6f 62  s..**.** This ob
128f0 6a 65 63 74 20 69 73 20 75 73 65 64 20 69 6e 20  ject is used in 
12900 6f 6e 6c 79 20 6f 6e 65 20 70 6c 61 63 65 20 69  only one place i
12910 6e 20 74 68 65 20 53 51 4c 69 74 65 20 69 6e 74  n the SQLite int
12920 65 72 66 61 63 65 2e 0a 2a 2a 20 41 20 70 6f 69  erface..** A poi
12930 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61  nter to an insta
12940 6e 63 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  nce of this obje
12950 63 74 20 69 73 20 74 68 65 20 61 72 67 75 6d 65  ct is the argume
12960 6e 74 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65  nt to.** [sqlite
12970 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 68 65 6e  3_config()] when
12980 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69   the configurati
12990 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 0a 2a 2a 20  on option is.** 
129a0 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
129b0 41 4c 4c 4f 43 5d 20 6f 72 20 5b 53 51 4c 49 54  ALLOC] or [SQLIT
129c0 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c  E_CONFIG_GETMALL
129d0 4f 43 5d 2e 20 20 0a 2a 2a 20 42 79 20 63 72 65  OC].  .** By cre
129e0 61 74 69 6e 67 20 61 6e 20 69 6e 73 74 61 6e 63  ating an instanc
129f0 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  e of this object
12a00 0a 2a 2a 20 61 6e 64 20 70 61 73 73 69 6e 67 20  .** and passing 
12a10 69 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  it to [sqlite3_c
12a20 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43  onfig]([SQLITE_C
12a30 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 29 0a 2a  ONFIG_MALLOC]).*
12a40 2a 20 64 75 72 69 6e 67 20 63 6f 6e 66 69 67 75  * during configu
12a50 72 61 74 69 6f 6e 2c 20 61 6e 20 61 70 70 6c 69  ration, an appli
12a60 63 61 74 69 6f 6e 20 63 61 6e 20 73 70 65 63 69  cation can speci
12a70 66 79 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76  fy an alternativ
12a80 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  e.** memory allo
12a90 63 61 74 69 6f 6e 20 73 75 62 73 79 73 74 65 6d  cation subsystem
12aa0 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 75   for SQLite to u
12ab0 73 65 20 66 6f 72 20 61 6c 6c 20 6f 66 20 69 74  se for all of it
12ac0 73 0a 2a 2a 20 64 79 6e 61 6d 69 63 20 6d 65 6d  s.** dynamic mem
12ad0 6f 72 79 20 6e 65 65 64 73 2e 0a 2a 2a 0a 2a 2a  ory needs..**.**
12ae0 20 4e 6f 74 65 20 74 68 61 74 20 53 51 4c 69 74   Note that SQLit
12af0 65 20 63 6f 6d 65 73 20 77 69 74 68 20 73 65 76  e comes with sev
12b00 65 72 61 6c 20 5b 62 75 69 6c 74 2d 69 6e 20 6d  eral [built-in m
12b10 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 73  emory allocators
12b20 5d 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 70 65  ].** that are pe
12b30 72 66 65 63 74 6c 79 20 61 64 65 71 75 61 74 65  rfectly adequate
12b40 20 66 6f 72 20 74 68 65 20 6f 76 65 72 77 68 65   for the overwhe
12b50 6c 6d 69 6e 67 20 6d 61 6a 6f 72 69 74 79 20 6f  lming majority o
12b60 66 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a  f applications.*
12b70 2a 20 61 6e 64 20 74 68 61 74 20 74 68 69 73 20  * and that this 
12b80 6f 62 6a 65 63 74 20 69 73 20 6f 6e 6c 79 20 75  object is only u
12b90 73 65 66 75 6c 20 74 6f 20 61 20 74 69 6e 79 20  seful to a tiny 
12ba0 6d 69 6e 6f 72 69 74 79 20 6f 66 20 61 70 70 6c  minority of appl
12bb0 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 77 69 74 68  ications.** with
12bc0 20 73 70 65 63 69 61 6c 69 7a 65 64 20 6d 65 6d   specialized mem
12bd0 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72  ory allocation r
12be0 65 71 75 69 72 65 6d 65 6e 74 73 2e 20 20 54 68  equirements.  Th
12bf0 69 73 20 6f 62 6a 65 63 74 20 69 73 0a 2a 2a 20  is object is.** 
12c00 61 6c 73 6f 20 75 73 65 64 20 64 75 72 69 6e 67  also used during
12c10 20 74 65 73 74 69 6e 67 20 6f 66 20 53 51 4c 69   testing of SQLi
12c20 74 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 73  te in order to s
12c30 70 65 63 69 66 79 20 61 6e 20 61 6c 74 65 72 6e  pecify an altern
12c40 61 74 69 76 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20  ative.** memory 
12c50 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61 74 20 73  allocator that s
12c60 69 6d 75 6c 61 74 65 73 20 6d 65 6d 6f 72 79 20  imulates memory 
12c70 6f 75 74 2d 6f 66 2d 6d 65 6d 6f 72 79 20 63 6f  out-of-memory co
12c80 6e 64 69 74 69 6f 6e 73 20 69 6e 0a 2a 2a 20 6f  nditions in.** o
12c90 72 64 65 72 20 74 6f 20 76 65 72 69 66 79 20 74  rder to verify t
12ca0 68 61 74 20 53 51 4c 69 74 65 20 72 65 63 6f 76  hat SQLite recov
12cb0 65 72 73 20 67 72 61 63 65 66 75 6c 6c 79 20 66  ers gracefully f
12cc0 72 6f 6d 20 73 75 63 68 0a 2a 2a 20 63 6f 6e 64  rom such.** cond
12cd0 69 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  itions..**.** Th
12ce0 65 20 78 4d 61 6c 6c 6f 63 2c 20 78 52 65 61 6c  e xMalloc, xReal
12cf0 6c 6f 63 2c 20 61 6e 64 20 78 46 72 65 65 20 6d  loc, and xFree m
12d00 65 74 68 6f 64 73 20 6d 75 73 74 20 77 6f 72 6b  ethods must work
12d10 20 6c 69 6b 65 20 74 68 65 0a 2a 2a 20 6d 61 6c   like the.** mal
12d20 6c 6f 63 28 29 2c 20 72 65 61 6c 6c 6f 63 28 29  loc(), realloc()
12d30 20 61 6e 64 20 66 72 65 65 28 29 20 66 75 6e 63   and free() func
12d40 74 69 6f 6e 73 20 66 72 6f 6d 20 74 68 65 20 73  tions from the s
12d50 74 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72  tandard C librar
12d60 79 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 67 75  y..** ^SQLite gu
12d70 61 72 61 6e 74 65 65 73 20 74 68 61 74 20 74 68  arantees that th
12d80 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
12d90 74 20 74 6f 0a 2a 2a 20 78 52 65 61 6c 6c 6f 63  t to.** xRealloc
12da0 20 69 73 20 61 6c 77 61 79 73 20 61 20 76 61 6c   is always a val
12db0 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 61  ue returned by a
12dc0 20 70 72 69 6f 72 20 63 61 6c 6c 20 74 6f 20 78   prior call to x
12dd0 52 6f 75 6e 64 75 70 2e 0a 2a 2a 0a 2a 2a 20 78  Roundup..**.** x
12de0 53 69 7a 65 20 73 68 6f 75 6c 64 20 72 65 74 75  Size should retu
12df0 72 6e 20 74 68 65 20 61 6c 6c 6f 63 61 74 65 64  rn the allocated
12e00 20 73 69 7a 65 20 6f 66 20 61 20 6d 65 6d 6f 72   size of a memor
12e10 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20  y allocation.** 
12e20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69  previously obtai
12e30 6e 65 64 20 66 72 6f 6d 20 78 4d 61 6c 6c 6f 63  ned from xMalloc
12e40 20 6f 72 20 78 52 65 61 6c 6c 6f 63 2e 20 20 54   or xRealloc.  T
12e50 68 65 20 61 6c 6c 6f 63 61 74 65 64 20 73 69 7a  he allocated siz
12e60 65 0a 2a 2a 20 69 73 20 61 6c 77 61 79 73 20 61  e.** is always a
12e70 74 20 6c 65 61 73 74 20 61 73 20 62 69 67 20 61  t least as big a
12e80 73 20 74 68 65 20 72 65 71 75 65 73 74 65 64 20  s the requested 
12e90 73 69 7a 65 20 62 75 74 20 6d 61 79 20 62 65 20  size but may be 
12ea0 6c 61 72 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 54 68  larger..**.** Th
12eb0 65 20 78 52 6f 75 6e 64 75 70 20 6d 65 74 68 6f  e xRoundup metho
12ec0 64 20 72 65 74 75 72 6e 73 20 77 68 61 74 20 77  d returns what w
12ed0 6f 75 6c 64 20 62 65 20 74 68 65 20 61 6c 6c 6f  ould be the allo
12ee0 63 61 74 65 64 20 73 69 7a 65 20 6f 66 0a 2a 2a  cated size of.**
12ef0 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61   a memory alloca
12f00 74 69 6f 6e 20 67 69 76 65 6e 20 61 20 70 61 72  tion given a par
12f10 74 69 63 75 6c 61 72 20 72 65 71 75 65 73 74 65  ticular requeste
12f20 64 20 73 69 7a 65 2e 20 20 4d 6f 73 74 20 6d 65  d size.  Most me
12f30 6d 6f 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74 6f  mory.** allocato
12f40 72 73 20 72 6f 75 6e 64 20 75 70 20 6d 65 6d 6f  rs round up memo
12f50 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61  ry allocations a
12f60 74 20 6c 65 61 73 74 20 74 6f 20 74 68 65 20 6e  t least to the n
12f70 65 78 74 20 6d 75 6c 74 69 70 6c 65 0a 2a 2a 20  ext multiple.** 
12f80 6f 66 20 38 2e 20 20 53 6f 6d 65 20 61 6c 6c 6f  of 8.  Some allo
12f90 63 61 74 6f 72 73 20 72 6f 75 6e 64 20 75 70 20  cators round up 
12fa0 74 6f 20 61 20 6c 61 72 67 65 72 20 6d 75 6c 74  to a larger mult
12fb0 69 70 6c 65 20 6f 72 20 74 6f 20 61 20 70 6f 77  iple or to a pow
12fc0 65 72 20 6f 66 20 32 2e 0a 2a 2a 20 45 76 65 72  er of 2..** Ever
12fd0 79 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  y memory allocat
12fe0 69 6f 6e 20 72 65 71 75 65 73 74 20 63 6f 6d 69  ion request comi
12ff0 6e 67 20 69 6e 20 74 68 72 6f 75 67 68 20 5b 73  ng in through [s
13000 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d  qlite3_malloc()]
13010 0a 2a 2a 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f  .** or [sqlite3_
13020 72 65 61 6c 6c 6f 63 28 29 5d 20 66 69 72 73 74  realloc()] first
13030 20 63 61 6c 6c 73 20 78 52 6f 75 6e 64 75 70 2e   calls xRoundup.
13040 20 20 49 66 20 78 52 6f 75 6e 64 75 70 20 72 65    If xRoundup re
13050 74 75 72 6e 73 20 30 2c 20 0a 2a 2a 20 74 68 61  turns 0, .** tha
13060 74 20 63 61 75 73 65 73 20 74 68 65 20 63 6f 72  t causes the cor
13070 72 65 73 70 6f 6e 64 69 6e 67 20 6d 65 6d 6f 72  responding memor
13080 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 74 6f 20  y allocation to 
13090 66 61 69 6c 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  fail..**.** The 
130a0 78 49 6e 69 74 20 6d 65 74 68 6f 64 20 69 6e 69  xInit method ini
130b0 74 69 61 6c 69 7a 65 73 20 74 68 65 20 6d 65 6d  tializes the mem
130c0 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20  ory allocator.  
130d0 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 2a 2a 20  For example,.** 
130e0 69 74 20 6d 69 67 68 74 20 61 6c 6c 6f 63 61 74  it might allocat
130f0 65 20 61 6e 79 20 72 65 71 75 69 72 65 20 6d 75  e any require mu
13100 74 65 78 65 73 20 6f 72 20 69 6e 69 74 69 61 6c  texes or initial
13110 69 7a 65 20 69 6e 74 65 72 6e 61 6c 20 64 61 74  ize internal dat
13120 61 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 73 2e  a.** structures.
13130 20 20 54 68 65 20 78 53 68 75 74 64 6f 77 6e 20    The xShutdown 
13140 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65  method is invoke
13150 64 20 28 69 6e 64 69 72 65 63 74 6c 79 29 20 62  d (indirectly) b
13160 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 68  y.** [sqlite3_sh
13170 75 74 64 6f 77 6e 28 29 5d 20 61 6e 64 20 73 68  utdown()] and sh
13180 6f 75 6c 64 20 64 65 61 6c 6c 6f 63 61 74 65 20  ould deallocate 
13190 61 6e 79 20 72 65 73 6f 75 72 63 65 73 20 61 63  any resources ac
131a0 71 75 69 72 65 64 0a 2a 2a 20 62 79 20 78 49 6e  quired.** by xIn
131b0 69 74 2e 20 20 54 68 65 20 70 41 70 70 44 61 74  it.  The pAppDat
131c0 61 20 70 6f 69 6e 74 65 72 20 69 73 20 75 73 65  a pointer is use
131d0 64 20 61 73 20 74 68 65 20 6f 6e 6c 79 20 70 61  d as the only pa
131e0 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 78 49  rameter to.** xI
131f0 6e 69 74 20 61 6e 64 20 78 53 68 75 74 64 6f 77  nit and xShutdow
13200 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20  n..**.** SQLite 
13210 68 6f 6c 64 73 20 74 68 65 20 5b 53 51 4c 49 54  holds the [SQLIT
13220 45 5f 4d 55 54 45 58 5f 53 54 41 54 49 43 5f 4d  E_MUTEX_STATIC_M
13230 41 53 54 45 52 5d 20 6d 75 74 65 78 20 77 68 65  ASTER] mutex whe
13240 6e 20 69 74 20 69 6e 76 6f 6b 65 73 0a 2a 2a 20  n it invokes.** 
13250 74 68 65 20 78 49 6e 69 74 20 6d 65 74 68 6f 64  the xInit method
13260 2c 20 73 6f 20 74 68 65 20 78 49 6e 69 74 20 6d  , so the xInit m
13270 65 74 68 6f 64 20 6e 65 65 64 20 6e 6f 74 20 62  ethod need not b
13280 65 20 74 68 72 65 61 64 73 61 66 65 2e 20 20 54  e threadsafe.  T
13290 68 65 0a 2a 2a 20 78 53 68 75 74 64 6f 77 6e 20  he.** xShutdown 
132a0 6d 65 74 68 6f 64 20 69 73 20 6f 6e 6c 79 20 63  method is only c
132b0 61 6c 6c 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69  alled from [sqli
132c0 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d 20  te3_shutdown()] 
132d0 73 6f 20 69 74 20 64 6f 65 73 0a 2a 2a 20 6e 6f  so it does.** no
132e0 74 20 6e 65 65 64 20 74 6f 20 62 65 20 74 68 72  t need to be thr
132f0 65 61 64 73 61 66 65 20 65 69 74 68 65 72 2e 20  eadsafe either. 
13300 20 46 6f 72 20 61 6c 6c 20 6f 74 68 65 72 20 6d   For all other m
13310 65 74 68 6f 64 73 2c 20 53 51 4c 69 74 65 0a 2a  ethods, SQLite.*
13320 2a 20 68 6f 6c 64 73 20 74 68 65 20 5b 53 51 4c  * holds the [SQL
13330 49 54 45 5f 4d 55 54 45 58 5f 53 54 41 54 49 43  ITE_MUTEX_STATIC
13340 5f 4d 45 4d 5d 20 6d 75 74 65 78 20 61 73 20 6c  _MEM] mutex as l
13350 6f 6e 67 20 61 73 20 74 68 65 0a 2a 2a 20 5b 53  ong as the.** [S
13360 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
13370 53 54 41 54 55 53 5d 20 63 6f 6e 66 69 67 75 72  STATUS] configur
13380 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 20  ation option is 
13390 74 75 72 6e 65 64 20 6f 6e 20 28 77 68 69 63 68  turned on (which
133a0 0a 2a 2a 20 69 74 20 69 73 20 62 79 20 64 65 66  .** it is by def
133b0 61 75 6c 74 29 20 61 6e 64 20 73 6f 20 74 68 65  ault) and so the
133c0 20 6d 65 74 68 6f 64 73 20 61 72 65 20 61 75 74   methods are aut
133d0 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 72 69 61  omatically seria
133e0 6c 69 7a 65 64 2e 0a 2a 2a 20 48 6f 77 65 76 65  lized..** Howeve
133f0 72 2c 20 69 66 20 5b 53 51 4c 49 54 45 5f 43 4f  r, if [SQLITE_CO
13400 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 20  NFIG_MEMSTATUS] 
13410 69 73 20 64 69 73 61 62 6c 65 64 2c 20 74 68 65  is disabled, the
13420 6e 20 74 68 65 20 6f 74 68 65 72 0a 2a 2a 20 6d  n the other.** m
13430 65 74 68 6f 64 73 20 6d 75 73 74 20 62 65 20 74  ethods must be t
13440 68 72 65 61 64 73 61 66 65 20 6f 72 20 65 6c 73  hreadsafe or els
13450 65 20 6d 61 6b 65 20 74 68 65 69 72 20 6f 77 6e  e make their own
13460 20 61 72 72 61 6e 67 65 6d 65 6e 74 73 20 66 6f   arrangements fo
13470 72 0a 2a 2a 20 73 65 72 69 61 6c 69 7a 61 74 69  r.** serializati
13480 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65  on..**.** SQLite
13490 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f   will never invo
134a0 6b 65 20 78 49 6e 69 74 28 29 20 6d 6f 72 65 20  ke xInit() more 
134b0 74 68 61 6e 20 6f 6e 63 65 20 77 69 74 68 6f 75  than once withou
134c0 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67  t an intervening
134d0 0a 2a 2a 20 63 61 6c 6c 20 74 6f 20 78 53 68 75  .** call to xShu
134e0 74 64 6f 77 6e 28 29 2e 0a 2a 2f 0a 74 79 70 65  tdown()..*/.type
134f0 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
13500 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 20 73  e3_mem_methods s
13510 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f  qlite3_mem_metho
13520 64 73 3b 0a 73 74 72 75 63 74 20 73 71 6c 69 74  ds;.struct sqlit
13530 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 20 7b  e3_mem_methods {
13540 0a 20 20 76 6f 69 64 20 2a 28 2a 78 4d 61 6c 6c  .  void *(*xMall
13550 6f 63 29 28 69 6e 74 29 3b 20 20 20 20 20 20 20  oc)(int);       
13560 20 20 2f 2a 20 4d 65 6d 6f 72 79 20 61 6c 6c 6f    /* Memory allo
13570 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 20  cation function 
13580 2a 2f 0a 20 20 76 6f 69 64 20 28 2a 78 46 72 65  */.  void (*xFre
13590 65 29 28 76 6f 69 64 2a 29 3b 20 20 20 20 20 20  e)(void*);      
135a0 20 20 20 20 2f 2a 20 46 72 65 65 20 61 20 70 72      /* Free a pr
135b0 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 2a  ior allocation *
135c0 2f 0a 20 20 76 6f 69 64 20 2a 28 2a 78 52 65 61  /.  void *(*xRea
135d0 6c 6c 6f 63 29 28 76 6f 69 64 2a 2c 69 6e 74 29  lloc)(void*,int)
135e0 3b 20 20 2f 2a 20 52 65 73 69 7a 65 20 61 6e 20  ;  /* Resize an 
135f0 61 6c 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20 20  allocation */.  
13600 69 6e 74 20 28 2a 78 53 69 7a 65 29 28 76 6f 69  int (*xSize)(voi
13610 64 2a 29 3b 20 20 20 20 20 20 20 20 20 20 20 2f  d*);           /
13620 2a 20 52 65 74 75 72 6e 20 74 68 65 20 73 69 7a  * Return the siz
13630 65 20 6f 66 20 61 6e 20 61 6c 6c 6f 63 61 74 69  e of an allocati
13640 6f 6e 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 52  on */.  int (*xR
13650 6f 75 6e 64 75 70 29 28 69 6e 74 29 3b 20 20 20  oundup)(int);   
13660 20 20 20 20 20 20 20 2f 2a 20 52 6f 75 6e 64 20         /* Round 
13670 75 70 20 72 65 71 75 65 73 74 20 73 69 7a 65 20  up request size 
13680 74 6f 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69  to allocation si
13690 7a 65 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 49  ze */.  int (*xI
136a0 6e 69 74 29 28 76 6f 69 64 2a 29 3b 20 20 20 20  nit)(void*);    
136b0 20 20 20 20 20 20 20 2f 2a 20 49 6e 69 74 69 61         /* Initia
136c0 6c 69 7a 65 20 74 68 65 20 6d 65 6d 6f 72 79 20  lize the memory 
136d0 61 6c 6c 6f 63 61 74 6f 72 20 2a 2f 0a 20 20 76  allocator */.  v
136e0 6f 69 64 20 28 2a 78 53 68 75 74 64 6f 77 6e 29  oid (*xShutdown)
136f0 28 76 6f 69 64 2a 29 3b 20 20 20 20 20 20 2f 2a  (void*);      /*
13700 20 44 65 69 6e 69 74 69 61 6c 69 7a 65 20 74 68   Deinitialize th
13710 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
13720 6f 72 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 70 41  or */.  void *pA
13730 70 70 44 61 74 61 3b 20 20 20 20 20 20 20 20 20  ppData;         
13740 20 20 20 20 20 20 20 2f 2a 20 41 72 67 75 6d 65         /* Argume
13750 6e 74 20 74 6f 20 78 49 6e 69 74 28 29 20 61 6e  nt to xInit() an
13760 64 20 78 53 68 75 74 64 6f 77 6e 28 29 20 2a 2f  d xShutdown() */
13770 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  .};../*.** CAPI3
13780 52 45 46 3a 20 43 6f 6e 66 69 67 75 72 61 74 69  REF: Configurati
13790 6f 6e 20 4f 70 74 69 6f 6e 73 0a 2a 2a 20 4b 45  on Options.** KE
137a0 59 57 4f 52 44 53 3a 20 7b 63 6f 6e 66 69 67 75  YWORDS: {configu
137b0 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 7d 0a 2a  ration option}.*
137c0 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73 74  *.** These const
137d0 61 6e 74 73 20 61 72 65 20 74 68 65 20 61 76 61  ants are the ava
137e0 69 6c 61 62 6c 65 20 69 6e 74 65 67 65 72 20 63  ilable integer c
137f0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
13800 69 6f 6e 73 20 74 68 61 74 0a 2a 2a 20 63 61 6e  ions that.** can
13810 20 62 65 20 70 61 73 73 65 64 20 61 73 20 74 68   be passed as th
13820 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
13830 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
13840 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65 72  _config()] inter
13850 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20  face..**.** New 
13860 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
13870 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 61 64 64  tions may be add
13880 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c  ed in future rel
13890 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74 65 2e  eases of SQLite.
138a0 0a 2a 2a 20 45 78 69 73 74 69 6e 67 20 63 6f 6e  .** Existing con
138b0 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
138c0 6e 73 20 6d 69 67 68 74 20 62 65 20 64 69 73 63  ns might be disc
138d0 6f 6e 74 69 6e 75 65 64 2e 20 20 41 70 70 6c 69  ontinued.  Appli
138e0 63 61 74 69 6f 6e 73 0a 2a 2a 20 73 68 6f 75 6c  cations.** shoul
138f0 64 20 63 68 65 63 6b 20 74 68 65 20 72 65 74 75  d check the retu
13900 72 6e 20 63 6f 64 65 20 66 72 6f 6d 20 5b 73 71  rn code from [sq
13910 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
13920 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61  to make sure tha
13930 74 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 20 77 6f  t.** the call wo
13940 72 6b 65 64 2e 20 20 54 68 65 20 5b 73 71 6c 69  rked.  The [sqli
13950 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e  te3_config()] in
13960 74 65 72 66 61 63 65 20 77 69 6c 6c 20 72 65 74  terface will ret
13970 75 72 6e 20 61 0a 2a 2a 20 6e 6f 6e 2d 7a 65 72  urn a.** non-zer
13980 6f 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 69  o [error code] i
13990 66 20 61 20 64 69 73 63 6f 6e 74 69 6e 75 65 64  f a discontinued
139a0 20 6f 72 20 75 6e 73 75 70 70 6f 72 74 65 64 20   or unsupported 
139b0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
139c0 74 69 6f 6e 0a 2a 2a 20 69 73 20 69 6e 76 6f 6b  tion.** is invok
139d0 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a  ed..**.** <dl>.*
139e0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
139f0 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 5d 5d  G_SINGLETHREAD]]
13a00 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
13a10 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 3c  IG_SINGLETHREAD<
13a20 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 72  /dt>.** <dd>Ther
13a30 65 20 61 72 65 20 6e 6f 20 61 72 67 75 6d 65 6e  e are no argumen
13a40 74 73 20 74 6f 20 74 68 69 73 20 6f 70 74 69 6f  ts to this optio
13a50 6e 2e 20 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e  n.  ^This option
13a60 20 73 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74 68   sets the.** [th
13a70 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f  reading mode] to
13a80 20 53 69 6e 67 6c 65 2d 74 68 72 65 61 64 2e 20   Single-thread. 
13a90 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c   In other words,
13aa0 20 69 74 20 64 69 73 61 62 6c 65 73 0a 2a 2a 20   it disables.** 
13ab0 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 61 6e 64  all mutexing and
13ac0 20 70 75 74 73 20 53 51 4c 69 74 65 20 69 6e 74   puts SQLite int
13ad0 6f 20 61 20 6d 6f 64 65 20 77 68 65 72 65 20 69  o a mode where i
13ae0 74 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 75 73  t can only be us
13af0 65 64 0a 2a 2a 20 62 79 20 61 20 73 69 6e 67 6c  ed.** by a singl
13b00 65 20 74 68 72 65 61 64 2e 20 20 20 5e 49 66 20  e thread.   ^If 
13b10 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c  SQLite is compil
13b20 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b  ed with.** the [
13b30 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
13b40 45 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45 41  E | SQLITE_THREA
13b50 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65  DSAFE=0] compile
13b60 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65  -time option the
13b70 6e 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74 20 70  n.** it is not p
13b80 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61 6e 67  ossible to chang
13b90 65 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67  e the [threading
13ba0 20 6d 6f 64 65 5d 20 66 72 6f 6d 20 69 74 73 20   mode] from its 
13bb0 64 65 66 61 75 6c 74 0a 2a 2a 20 76 61 6c 75 65  default.** value
13bc0 20 6f 66 20 53 69 6e 67 6c 65 2d 74 68 72 65 61   of Single-threa
13bd0 64 20 61 6e 64 20 73 6f 20 5b 73 71 6c 69 74 65  d and so [sqlite
13be0 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69 6c 6c  3_config()] will
13bf0 20 72 65 74 75 72 6e 20 0a 2a 2a 20 5b 53 51 4c   return .** [SQL
13c00 49 54 45 5f 45 52 52 4f 52 5d 20 69 66 20 63 61  ITE_ERROR] if ca
13c10 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 53 51  lled with the SQ
13c20 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47  LITE_CONFIG_SING
13c30 4c 45 54 48 52 45 41 44 0a 2a 2a 20 63 6f 6e 66  LETHREAD.** conf
13c40 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
13c50 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  .</dd>.**.** [[S
13c60 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c  QLITE_CONFIG_MUL
13c70 54 49 54 48 52 45 41 44 5d 5d 20 3c 64 74 3e 53  TITHREAD]] <dt>S
13c80 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c  QLITE_CONFIG_MUL
13c90 54 49 54 48 52 45 41 44 3c 2f 64 74 3e 0a 2a 2a  TITHREAD</dt>.**
13ca0 20 3c 64 64 3e 54 68 65 72 65 20 61 72 65 20 6e   <dd>There are n
13cb0 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74  o arguments to t
13cc0 68 69 73 20 6f 70 74 69 6f 6e 2e 20 20 5e 54 68  his option.  ^Th
13cd0 69 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20 74  is option sets t
13ce0 68 65 0a 2a 2a 20 5b 74 68 72 65 61 64 69 6e 67  he.** [threading
13cf0 20 6d 6f 64 65 5d 20 74 6f 20 4d 75 6c 74 69 2d   mode] to Multi-
13d00 74 68 72 65 61 64 2e 20 20 49 6e 20 6f 74 68 65  thread.  In othe
13d10 72 20 77 6f 72 64 73 2c 20 69 74 20 64 69 73 61  r words, it disa
13d20 62 6c 65 73 0a 2a 2a 20 6d 75 74 65 78 69 6e 67  bles.** mutexing
13d30 20 6f 6e 20 5b 64 61 74 61 62 61 73 65 20 63 6f   on [database co
13d40 6e 6e 65 63 74 69 6f 6e 5d 20 61 6e 64 20 5b 70  nnection] and [p
13d50 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
13d60 74 5d 20 6f 62 6a 65 63 74 73 2e 0a 2a 2a 20 54  t] objects..** T
13d70 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69  he application i
13d80 73 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f  s responsible fo
13d90 72 20 73 65 72 69 61 6c 69 7a 69 6e 67 20 61 63  r serializing ac
13da0 63 65 73 73 20 74 6f 0a 2a 2a 20 5b 64 61 74 61  cess to.** [data
13db0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
13dc0 5d 20 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20  ] and [prepared 
13dd0 73 74 61 74 65 6d 65 6e 74 73 5d 2e 20 20 42 75  statements].  Bu
13de0 74 20 6f 74 68 65 72 20 6d 75 74 65 78 65 73 0a  t other mutexes.
13df0 2a 2a 20 61 72 65 20 65 6e 61 62 6c 65 64 20 73  ** are enabled s
13e00 6f 20 74 68 61 74 20 53 51 4c 69 74 65 20 77 69  o that SQLite wi
13e10 6c 6c 20 62 65 20 73 61 66 65 20 74 6f 20 75 73  ll be safe to us
13e20 65 20 69 6e 20 61 20 6d 75 6c 74 69 2d 74 68 72  e in a multi-thr
13e30 65 61 64 65 64 0a 2a 2a 20 65 6e 76 69 72 6f 6e  eaded.** environ
13e40 6d 65 6e 74 20 61 73 20 6c 6f 6e 67 20 61 73 20  ment as long as 
13e50 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20 61  no two threads a
13e60 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68  ttempt to use th
13e70 65 20 73 61 6d 65 0a 2a 2a 20 5b 64 61 74 61 62  e same.** [datab
13e80 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
13e90 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65  at the same time
13ea0 2e 20 20 5e 49 66 20 53 51 4c 69 74 65 20 69 73  .  ^If SQLite is
13eb0 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a   compiled with.*
13ec0 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48  * the [SQLITE_TH
13ed0 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49 54  READSAFE | SQLIT
13ee0 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20  E_THREADSAFE=0] 
13ef0 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
13f00 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20 69  ion then.** it i
13f10 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
13f20 6f 20 73 65 74 20 74 68 65 20 4d 75 6c 74 69 2d  o set the Multi-
13f30 74 68 72 65 61 64 20 5b 74 68 72 65 61 64 69 6e  thread [threadin
13f40 67 20 6d 6f 64 65 5d 20 61 6e 64 0a 2a 2a 20 5b  g mode] and.** [
13f50 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
13f60 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53  ] will return [S
13f70 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 69 66 20  QLITE_ERROR] if 
13f80 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65 0a  called with the.
13f90 2a 2a 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ** SQLITE_CONFIG
13fa0 5f 4d 55 4c 54 49 54 48 52 45 41 44 20 63 6f 6e  _MULTITHREAD con
13fb0 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
13fc0 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  n.</dd>.**.** [[
13fd0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45  SQLITE_CONFIG_SE
13fe0 52 49 41 4c 49 5a 45 44 5d 5d 20 3c 64 74 3e 53  RIALIZED]] <dt>S
13ff0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52  QLITE_CONFIG_SER
14000 49 41 4c 49 5a 45 44 3c 2f 64 74 3e 0a 2a 2a 20  IALIZED</dt>.** 
14010 3c 64 64 3e 54 68 65 72 65 20 61 72 65 20 6e 6f  <dd>There are no
14020 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68   arguments to th
14030 69 73 20 6f 70 74 69 6f 6e 2e 20 20 5e 54 68 69  is option.  ^Thi
14040 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20 74 68  s option sets th
14050 65 0a 2a 2a 20 5b 74 68 72 65 61 64 69 6e 67 20  e.** [threading 
14060 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69 61 6c 69  mode] to Seriali
14070 7a 65 64 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f  zed. In other wo
14080 72 64 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e  rds, this option
14090 20 65 6e 61 62 6c 65 73 0a 2a 2a 20 61 6c 6c 20   enables.** all 
140a0 6d 75 74 65 78 65 73 20 69 6e 63 6c 75 64 69 6e  mutexes includin
140b0 67 20 74 68 65 20 72 65 63 75 72 73 69 76 65 0a  g the recursive.
140c0 2a 2a 20 6d 75 74 65 78 65 73 20 6f 6e 20 5b 64  ** mutexes on [d
140d0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
140e0 6f 6e 5d 20 61 6e 64 20 5b 70 72 65 70 61 72 65  on] and [prepare
140f0 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 6f 62 6a  d statement] obj
14100 65 63 74 73 2e 0a 2a 2a 20 49 6e 20 74 68 69 73  ects..** In this
14110 20 6d 6f 64 65 20 28 77 68 69 63 68 20 69 73 20   mode (which is 
14120 74 68 65 20 64 65 66 61 75 6c 74 20 77 68 65 6e  the default when
14130 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
14140 6c 65 64 20 77 69 74 68 0a 2a 2a 20 5b 53 51 4c  led with.** [SQL
14150 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
14160 5d 29 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  ]) the SQLite li
14170 62 72 61 72 79 20 77 69 6c 6c 20 69 74 73 65 6c  brary will itsel
14180 66 20 73 65 72 69 61 6c 69 7a 65 20 61 63 63 65  f serialize acce
14190 73 73 0a 2a 2a 20 74 6f 20 5b 64 61 74 61 62 61  ss.** to [databa
141a0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20  se connections] 
141b0 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20 73 74  and [prepared st
141c0 61 74 65 6d 65 6e 74 73 5d 20 73 6f 20 74 68 61  atements] so tha
141d0 74 20 74 68 65 0a 2a 2a 20 61 70 70 6c 69 63 61  t the.** applica
141e0 74 69 6f 6e 20 69 73 20 66 72 65 65 20 74 6f 20  tion is free to 
141f0 75 73 65 20 74 68 65 20 73 61 6d 65 20 5b 64 61  use the same [da
14200 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
14210 6e 5d 20 6f 72 20 74 68 65 0a 2a 2a 20 73 61 6d  n] or the.** sam
14220 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  e [prepared stat
14230 65 6d 65 6e 74 5d 20 69 6e 20 64 69 66 66 65 72  ement] in differ
14240 65 6e 74 20 74 68 72 65 61 64 73 20 61 74 20 74  ent threads at t
14250 68 65 20 73 61 6d 65 20 74 69 6d 65 2e 0a 2a 2a  he same time..**
14260 20 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63   ^If SQLite is c
14270 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20  ompiled with.** 
14280 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45  the [SQLITE_THRE
14290 41 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f  ADSAFE | SQLITE_
142a0 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f  THREADSAFE=0] co
142b0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
142c0 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20 69 73 20  n then.** it is 
142d0 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20  not possible to 
142e0 73 65 74 20 74 68 65 20 53 65 72 69 61 6c 69 7a  set the Serializ
142f0 65 64 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  ed [threading mo
14300 64 65 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69  de] and.** [sqli
14310 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69  te3_config()] wi
14320 6c 6c 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  ll return [SQLIT
14330 45 5f 45 52 52 4f 52 5d 20 69 66 20 63 61 6c 6c  E_ERROR] if call
14340 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 53  ed with the.** S
14350 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52  QLITE_CONFIG_SER
14360 49 41 4c 49 5a 45 44 20 63 6f 6e 66 69 67 75 72  IALIZED configur
14370 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 2e 3c 2f 64  ation option.</d
14380 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
14390 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d  E_CONFIG_MALLOC]
143a0 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
143b0 46 49 47 5f 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a  FIG_MALLOC</dt>.
143c0 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51  ** <dd> ^(The SQ
143d0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
143e0 4f 43 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  OC option takes 
143f0 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  a single argumen
14400 74 20 77 68 69 63 68 20 69 73 20 0a 2a 2a 20 61  t which is .** a
14410 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
14420 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 5b  nstance of the [
14430 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68  sqlite3_mem_meth
14440 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65 2e 0a  ods] structure..
14450 2a 2a 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20  ** The argument 
14460 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 61 6c 74  specifies.** alt
14470 65 72 6e 61 74 69 76 65 20 6c 6f 77 2d 6c 65 76  ernative low-lev
14480 65 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  el memory alloca
14490 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20 74 6f  tion routines to
144a0 20 62 65 20 75 73 65 64 20 69 6e 20 70 6c 61 63   be used in plac
144b0 65 20 6f 66 0a 2a 2a 20 74 68 65 20 6d 65 6d 6f  e of.** the memo
144c0 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f  ry allocation ro
144d0 75 74 69 6e 65 73 20 62 75 69 6c 74 20 69 6e 74  utines built int
144e0 6f 20 53 51 4c 69 74 65 2e 29 5e 20 5e 53 51 4c  o SQLite.)^ ^SQL
144f0 69 74 65 20 6d 61 6b 65 73 0a 2a 2a 20 69 74 73  ite makes.** its
14500 20 6f 77 6e 20 70 72 69 76 61 74 65 20 63 6f 70   own private cop
14510 79 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 6e 74  y of the content
14520 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   of the [sqlite3
14530 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74  _mem_methods] st
14540 72 75 63 74 75 72 65 0a 2a 2a 20 62 65 66 6f 72  ructure.** befor
14550 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63  e the [sqlite3_c
14560 6f 6e 66 69 67 28 29 5d 20 63 61 6c 6c 20 72 65  onfig()] call re
14570 74 75 72 6e 73 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a  turns.</dd>.**.*
14580 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
14590 47 5f 47 45 54 4d 41 4c 4c 4f 43 5d 5d 20 3c 64  G_GETMALLOC]] <d
145a0 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
145b0 47 45 54 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a 2a  GETMALLOC</dt>.*
145c0 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c  * <dd> ^(The SQL
145d0 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41  ITE_CONFIG_GETMA
145e0 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20 74 61 6b 65  LLOC option take
145f0 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  s a single argum
14600 65 6e 74 20 77 68 69 63 68 0a 2a 2a 20 69 73 20  ent which.** is 
14610 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  a pointer to an 
14620 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
14630 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74  [sqlite3_mem_met
14640 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65 2e  hods] structure.
14650 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65 33  .** The [sqlite3
14660 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 0a 2a 2a  _mem_methods].**
14670 20 73 74 72 75 63 74 75 72 65 20 69 73 20 66 69   structure is fi
14680 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 63 75  lled with the cu
14690 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65 64 20  rrently defined 
146a0 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
146b0 6e 20 72 6f 75 74 69 6e 65 73 2e 29 5e 0a 2a 2a  n routines.)^.**
146c0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e   This option can
146d0 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72   be used to over
146e0 6c 6f 61 64 20 74 68 65 20 64 65 66 61 75 6c 74  load the default
146f0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
14700 6f 6e 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20 77  on.** routines w
14710 69 74 68 20 61 20 77 72 61 70 70 65 72 20 74 68  ith a wrapper th
14720 61 74 20 73 69 6d 75 6c 61 74 69 6f 6e 73 20 6d  at simulations m
14730 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
14740 20 66 61 69 6c 75 72 65 20 6f 72 0a 2a 2a 20 74   failure or.** t
14750 72 61 63 6b 73 20 6d 65 6d 6f 72 79 20 75 73 61  racks memory usa
14760 67 65 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2e  ge, for example.
14770 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
14780 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41  QLITE_CONFIG_SMA
14790 4c 4c 5f 4d 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e  LL_MALLOC]] <dt>
147a0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d  SQLITE_CONFIG_SM
147b0 41 4c 4c 5f 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a  ALL_MALLOC</dt>.
147c0 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c  ** <dd> ^The SQL
147d0 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c  ITE_CONFIG_SMALL
147e0 5f 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20 74  _MALLOC option t
147f0 61 6b 65 73 20 73 69 6e 67 6c 65 20 61 72 67 75  akes single argu
14800 6d 65 6e 74 20 6f 66 0a 2a 2a 20 74 79 70 65 20  ment of.** type 
14810 69 6e 74 2c 20 69 6e 74 65 72 70 72 65 74 65 64  int, interpreted
14820 20 61 73 20 61 20 62 6f 6f 6c 65 61 6e 2c 20 77   as a boolean, w
14830 68 69 63 68 20 69 66 20 74 72 75 65 20 70 72 6f  hich if true pro
14840 76 69 64 65 73 20 61 20 68 69 6e 74 20 74 6f 0a  vides a hint to.
14850 2a 2a 20 53 51 4c 69 74 65 20 74 68 61 74 20 69  ** SQLite that i
14860 74 20 73 68 6f 75 6c 64 20 61 76 6f 69 64 20 6c  t should avoid l
14870 61 72 67 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  arge memory allo
14880 63 61 74 69 6f 6e 73 20 69 66 20 70 6f 73 73 69  cations if possi
14890 62 6c 65 2e 0a 2a 2a 20 53 51 4c 69 74 65 20 77  ble..** SQLite w
148a0 69 6c 6c 20 72 75 6e 20 66 61 73 74 65 72 20 69  ill run faster i
148b0 66 20 69 74 20 69 73 20 66 72 65 65 20 74 6f 20  f it is free to 
148c0 6d 61 6b 65 20 6c 61 72 67 65 20 6d 65 6d 6f 72  make large memor
148d0 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2c 0a 2a  y allocations,.*
148e0 2a 20 62 75 74 20 73 6f 6d 65 20 61 70 70 6c 69  * but some appli
148f0 63 61 74 69 6f 6e 20 6d 69 67 68 74 20 70 72 65  cation might pre
14900 66 65 72 20 74 6f 20 72 75 6e 20 73 6c 6f 77 65  fer to run slowe
14910 72 20 69 6e 20 65 78 63 68 61 6e 67 65 20 66 6f  r in exchange fo
14920 72 0a 2a 2a 20 67 75 61 72 61 6e 74 65 65 73 20  r.** guarantees 
14930 61 62 6f 75 74 20 6d 65 6d 6f 72 79 20 66 72 61  about memory fra
14940 67 6d 65 6e 74 61 74 69 6f 6e 20 74 68 61 74 20  gmentation that 
14950 61 72 65 20 70 6f 73 73 69 62 6c 65 20 69 66 20  are possible if 
14960 6c 61 72 67 65 0a 2a 2a 20 61 6c 6c 6f 63 61 74  large.** allocat
14970 69 6f 6e 73 20 61 72 65 20 61 76 6f 69 64 65 64  ions are avoided
14980 2e 20 20 54 68 69 73 20 68 69 6e 74 20 69 73 20  .  This hint is 
14990 6e 6f 72 6d 61 6c 6c 79 20 6f 66 66 2e 0a 2a 2a  normally off..**
149a0 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
149b0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
149c0 53 54 41 54 55 53 5d 5d 20 3c 64 74 3e 53 51 4c  STATUS]] <dt>SQL
149d0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54  ITE_CONFIG_MEMST
149e0 41 54 55 53 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  ATUS</dt>.** <dd
149f0 3e 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  > ^The SQLITE_CO
14a00 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 20 6f  NFIG_MEMSTATUS o
14a10 70 74 69 6f 6e 20 74 61 6b 65 73 20 73 69 6e 67  ption takes sing
14a20 6c 65 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74  le argument of t
14a30 79 70 65 20 69 6e 74 2c 0a 2a 2a 20 69 6e 74 65  ype int,.** inte
14a40 72 70 72 65 74 65 64 20 61 73 20 61 20 62 6f 6f  rpreted as a boo
14a50 6c 65 61 6e 2c 20 77 68 69 63 68 20 65 6e 61 62  lean, which enab
14a60 6c 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20  les or disables 
14a70 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f  the collection o
14a80 66 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  f.** memory allo
14a90 63 61 74 69 6f 6e 20 73 74 61 74 69 73 74 69 63  cation statistic
14aa0 73 2e 20 5e 28 57 68 65 6e 20 6d 65 6d 6f 72 79  s. ^(When memory
14ab0 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74   allocation stat
14ac0 69 73 74 69 63 73 20 61 72 65 0a 2a 2a 20 64 69  istics are.** di
14ad0 73 61 62 6c 65 64 2c 20 74 68 65 20 66 6f 6c 6c  sabled, the foll
14ae0 6f 77 69 6e 67 20 53 51 4c 69 74 65 20 69 6e 74  owing SQLite int
14af0 65 72 66 61 63 65 73 20 62 65 63 6f 6d 65 20 6e  erfaces become n
14b00 6f 6e 2d 6f 70 65 72 61 74 69 6f 6e 61 6c 3a 0a  on-operational:.
14b10 2a 2a 20 20 20 3c 75 6c 3e 0a 2a 2a 20 20 20 3c  **   <ul>.**   <
14b20 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d  li> [sqlite3_mem
14b30 6f 72 79 5f 75 73 65 64 28 29 5d 0a 2a 2a 20 20  ory_used()].**  
14b40 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 6d   <li> [sqlite3_m
14b50 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28  emory_highwater(
14b60 29 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71  )].**   <li> [sq
14b70 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f  lite3_soft_heap_
14b80 6c 69 6d 69 74 36 34 28 29 5d 0a 2a 2a 20 20 20  limit64()].**   
14b90 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 73 74  <li> [sqlite3_st
14ba0 61 74 75 73 36 34 28 29 5d 0a 2a 2a 20 20 20 3c  atus64()].**   <
14bb0 2f 75 6c 3e 29 5e 0a 2a 2a 20 5e 4d 65 6d 6f 72  /ul>)^.** ^Memor
14bc0 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61  y allocation sta
14bd0 74 69 73 74 69 63 73 20 61 72 65 20 65 6e 61 62  tistics are enab
14be0 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20 75  led by default u
14bf0 6e 6c 65 73 73 20 53 51 4c 69 74 65 20 69 73 0a  nless SQLite is.
14c00 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  ** compiled with
14c10 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54   [SQLITE_DEFAULT
14c20 5f 4d 45 4d 53 54 41 54 55 53 5d 3d 30 20 69 6e  _MEMSTATUS]=0 in
14c30 20 77 68 69 63 68 20 63 61 73 65 20 6d 65 6d 6f   which case memo
14c40 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f 6e  ry.** allocation
14c50 20 73 74 61 74 69 73 74 69 63 73 20 61 72 65 20   statistics are 
14c60 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61  disabled by defa
14c70 75 6c 74 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a  ult..** </dd>.**
14c80 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
14c90 46 49 47 5f 53 43 52 41 54 43 48 5d 5d 20 3c 64  FIG_SCRATCH]] <d
14ca0 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
14cb0 53 43 52 41 54 43 48 3c 2f 64 74 3e 0a 2a 2a 20  SCRATCH</dt>.** 
14cc0 3c 64 64 3e 20 54 68 65 20 53 51 4c 49 54 45 5f  <dd> The SQLITE_
14cd0 43 4f 4e 46 49 47 5f 53 43 52 41 54 43 48 20 6f  CONFIG_SCRATCH o
14ce0 70 74 69 6f 6e 20 69 73 20 6e 6f 20 6c 6f 6e 67  ption is no long
14cf0 65 72 20 75 73 65 64 2e 0a 2a 2a 20 3c 2f 64 64  er used..** </dd
14d00 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
14d10 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48  _CONFIG_PAGECACH
14d20 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  E]] <dt>SQLITE_C
14d30 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45 3c  ONFIG_PAGECACHE<
14d40 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
14d50 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
14d60 50 41 47 45 43 41 43 48 45 20 6f 70 74 69 6f 6e  PAGECACHE option
14d70 20 73 70 65 63 69 66 69 65 73 20 61 20 6d 65 6d   specifies a mem
14d80 6f 72 79 20 70 6f 6f 6c 0a 2a 2a 20 74 68 61 74  ory pool.** that
14d90 20 53 51 4c 69 74 65 20 63 61 6e 20 75 73 65 20   SQLite can use 
14da0 66 6f 72 20 74 68 65 20 64 61 74 61 62 61 73 65  for the database
14db0 20 70 61 67 65 20 63 61 63 68 65 20 77 69 74 68   page cache with
14dc0 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61 67   the default pag
14dd0 65 0a 2a 2a 20 63 61 63 68 65 20 69 6d 70 6c 65  e.** cache imple
14de0 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 0a 2a 2a 20  mentation.  .** 
14df0 54 68 69 73 20 63 6f 6e 66 69 67 75 72 61 74 69  This configurati
14e00 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 20 61 20 6e  on option is a n
14e10 6f 2d 6f 70 20 69 66 20 61 6e 20 61 70 70 6c 69  o-op if an appli
14e20 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 20 70 61  cation-define pa
14e30 67 65 0a 2a 2a 20 63 61 63 68 65 20 69 6d 70 6c  ge.** cache impl
14e40 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6c 6f  ementation is lo
14e50 61 64 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b  aded using the [
14e60 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
14e70 41 43 48 45 32 5d 2e 0a 2a 2a 20 5e 54 68 65 72  ACHE2]..** ^Ther
14e80 65 20 61 72 65 20 74 68 72 65 65 20 61 72 67 75  e are three argu
14e90 6d 65 6e 74 73 20 74 6f 20 53 51 4c 49 54 45 5f  ments to SQLITE_
14ea0 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45  CONFIG_PAGECACHE
14eb0 3a 20 41 20 70 6f 69 6e 74 65 72 20 74 6f 0a 2a  : A pointer to.*
14ec0 2a 20 38 2d 62 79 74 65 20 61 6c 69 67 6e 65 64  * 8-byte aligned
14ed0 20 6d 65 6d 6f 72 79 20 28 70 4d 65 6d 29 2c 20   memory (pMem), 
14ee0 74 68 65 20 73 69 7a 65 20 6f 66 20 65 61 63 68  the size of each
14ef0 20 70 61 67 65 20 63 61 63 68 65 20 6c 69 6e 65   page cache line
14f00 20 28 73 7a 29 2c 0a 2a 2a 20 61 6e 64 20 74 68   (sz),.** and th
14f10 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 61 63 68  e number of cach
14f20 65 20 6c 69 6e 65 73 20 28 4e 29 2e 0a 2a 2a 20  e lines (N)..** 
14f30 54 68 65 20 73 7a 20 61 72 67 75 6d 65 6e 74 20  The sz argument 
14f40 73 68 6f 75 6c 64 20 62 65 20 74 68 65 20 73 69  should be the si
14f50 7a 65 20 6f 66 20 74 68 65 20 6c 61 72 67 65 73  ze of the larges
14f60 74 20 64 61 74 61 62 61 73 65 20 70 61 67 65 0a  t database page.
14f70 2a 2a 20 28 61 20 70 6f 77 65 72 20 6f 66 20 74  ** (a power of t
14f80 77 6f 20 62 65 74 77 65 65 6e 20 35 31 32 20 61  wo between 512 a
14f90 6e 64 20 36 35 35 33 36 29 20 70 6c 75 73 20 73  nd 65536) plus s
14fa0 6f 6d 65 20 65 78 74 72 61 20 62 79 74 65 73 20  ome extra bytes 
14fb0 66 6f 72 20 65 61 63 68 0a 2a 2a 20 70 61 67 65  for each.** page
14fc0 20 68 65 61 64 65 72 2e 20 20 5e 54 68 65 20 6e   header.  ^The n
14fd0 75 6d 62 65 72 20 6f 66 20 65 78 74 72 61 20 62  umber of extra b
14fe0 79 74 65 73 20 6e 65 65 64 65 64 20 62 79 20 74  ytes needed by t
14ff0 68 65 20 70 61 67 65 20 68 65 61 64 65 72 0a 2a  he page header.*
15000 2a 20 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69  * can be determi
15010 6e 65 64 20 75 73 69 6e 67 20 5b 53 51 4c 49 54  ned using [SQLIT
15020 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f  E_CONFIG_PCACHE_
15030 48 44 52 53 5a 5d 2e 0a 2a 2a 20 5e 49 74 20 69  HDRSZ]..** ^It i
15040 73 20 68 61 72 6d 6c 65 73 73 2c 20 61 70 61 72  s harmless, apar
15050 74 20 66 72 6f 6d 20 74 68 65 20 77 61 73 74 65  t from the waste
15060 64 20 6d 65 6d 6f 72 79 2c 0a 2a 2a 20 66 6f 72  d memory,.** for
15070 20 74 68 65 20 73 7a 20 70 61 72 61 6d 65 74 65   the sz paramete
15080 72 20 74 6f 20 62 65 20 6c 61 72 67 65 72 20 74  r to be larger t
15090 68 61 6e 20 6e 65 63 65 73 73 61 72 79 2e 20 20  han necessary.  
150a0 54 68 65 20 70 4d 65 6d 0a 2a 2a 20 61 72 67 75  The pMem.** argu
150b0 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 65 69 74  ment must be eit
150c0 68 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74  her a NULL point
150d0 65 72 20 6f 72 20 61 20 70 6f 69 6e 74 65 72 20  er or a pointer 
150e0 74 6f 20 61 6e 20 38 2d 62 79 74 65 0a 2a 2a 20  to an 8-byte.** 
150f0 61 6c 69 67 6e 65 64 20 62 6c 6f 63 6b 20 6f 66  aligned block of
15100 20 6d 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65   memory of at le
15110 61 73 74 20 73 7a 2a 4e 20 62 79 74 65 73 2c 20  ast sz*N bytes, 
15120 6f 74 68 65 72 77 69 73 65 0a 2a 2a 20 73 75 62  otherwise.** sub
15130 73 65 71 75 65 6e 74 20 62 65 68 61 76 69 6f 72  sequent behavior
15140 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a   is undefined..*
15150 2a 20 5e 57 68 65 6e 20 70 4d 65 6d 20 69 73 20  * ^When pMem is 
15160 6e 6f 74 20 4e 55 4c 4c 2c 20 53 51 4c 69 74 65  not NULL, SQLite
15170 20 77 69 6c 6c 20 73 74 72 69 76 65 20 74 6f 20   will strive to 
15180 75 73 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 70  use the memory p
15190 72 6f 76 69 64 65 64 0a 2a 2a 20 74 6f 20 73 61  rovided.** to sa
151a0 74 69 73 66 79 20 70 61 67 65 20 63 61 63 68 65  tisfy page cache
151b0 20 6e 65 65 64 73 2c 20 66 61 6c 6c 69 6e 67 20   needs, falling 
151c0 62 61 63 6b 20 74 6f 20 5b 73 71 6c 69 74 65 33  back to [sqlite3
151d0 5f 6d 61 6c 6c 6f 63 28 29 5d 20 69 66 0a 2a 2a  _malloc()] if.**
151e0 20 61 20 70 61 67 65 20 63 61 63 68 65 20 6c 69   a page cache li
151f0 6e 65 20 69 73 20 6c 61 72 67 65 72 20 74 68 61  ne is larger tha
15200 6e 20 73 7a 20 62 79 74 65 73 20 6f 72 20 69 66  n sz bytes or if
15210 20 61 6c 6c 20 6f 66 20 74 68 65 20 70 4d 65 6d   all of the pMem
15220 20 62 75 66 66 65 72 0a 2a 2a 20 69 73 20 65 78   buffer.** is ex
15230 68 61 75 73 74 65 64 2e 0a 2a 2a 20 5e 49 66 20  hausted..** ^If 
15240 70 4d 65 6d 20 69 73 20 4e 55 4c 4c 20 61 6e 64  pMem is NULL and
15250 20 4e 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20   N is non-zero, 
15260 74 68 65 6e 20 65 61 63 68 20 64 61 74 61 62 61  then each databa
15270 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a  se connection.**
15280 20 64 6f 65 73 20 61 6e 20 69 6e 69 74 69 61 6c   does an initial
15290 20 62 75 6c 6b 20 61 6c 6c 6f 63 61 74 69 6f 6e   bulk allocation
152a0 20 66 6f 72 20 70 61 67 65 20 63 61 63 68 65 20   for page cache 
152b0 6d 65 6d 6f 72 79 0a 2a 2a 20 66 72 6f 6d 20 5b  memory.** from [
152c0 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
152d0 5d 20 73 75 66 66 69 63 69 65 6e 74 20 66 6f 72  ] sufficient for
152e0 20 4e 20 63 61 63 68 65 20 6c 69 6e 65 73 20 69   N cache lines i
152f0 66 20 4e 20 69 73 20 70 6f 73 69 74 69 76 65 20  f N is positive 
15300 6f 72 0a 2a 2a 20 6f 66 20 2d 31 30 32 34 2a 4e  or.** of -1024*N
15310 20 62 79 74 65 73 20 69 66 20 4e 20 69 73 20 6e   bytes if N is n
15320 65 67 61 74 69 76 65 2c 20 2e 20 5e 49 66 20 61  egative, . ^If a
15330 64 64 69 74 69 6f 6e 61 6c 0a 2a 2a 20 70 61 67  dditional.** pag
15340 65 20 63 61 63 68 65 20 6d 65 6d 6f 72 79 20 69  e cache memory i
15350 73 20 6e 65 65 64 65 64 20 62 65 79 6f 6e 64 20  s needed beyond 
15360 77 68 61 74 20 69 73 20 70 72 6f 76 69 64 65 64  what is provided
15370 20 62 79 20 74 68 65 20 69 6e 69 74 69 61 6c 0a   by the initial.
15380 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 74  ** allocation, t
15390 68 65 6e 20 53 51 4c 69 74 65 20 67 6f 65 73 20  hen SQLite goes 
153a0 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  to [sqlite3_mall
153b0 6f 63 28 29 5d 20 73 65 70 61 72 61 74 65 6c 79  oc()] separately
153c0 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 61 64 64   for each.** add
153d0 69 74 69 6f 6e 61 6c 20 63 61 63 68 65 20 6c 69  itional cache li
153e0 6e 65 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  ne. </dd>.**.** 
153f0 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
15400 48 45 41 50 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  HEAP]] <dt>SQLIT
15410 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 3c 2f 64  E_CONFIG_HEAP</d
15420 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20  t>.** <dd> ^The 
15430 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
15440 41 50 20 6f 70 74 69 6f 6e 20 73 70 65 63 69 66  AP option specif
15450 69 65 73 20 61 20 73 74 61 74 69 63 20 6d 65 6d  ies a static mem
15460 6f 72 79 20 62 75 66 66 65 72 20 0a 2a 2a 20 74  ory buffer .** t
15470 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  hat SQLite will 
15480 75 73 65 20 66 6f 72 20 61 6c 6c 20 6f 66 20 69  use for all of i
15490 74 73 20 64 79 6e 61 6d 69 63 20 6d 65 6d 6f 72  ts dynamic memor
154a0 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65 65  y allocation nee
154b0 64 73 0a 2a 2a 20 62 65 79 6f 6e 64 20 74 68 6f  ds.** beyond tho
154c0 73 65 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20  se provided for 
154d0 62 79 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  by [SQLITE_CONFI
154e0 47 5f 50 41 47 45 43 41 43 48 45 5d 2e 0a 2a 2a  G_PAGECACHE]..**
154f0 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e   ^The SQLITE_CON
15500 46 49 47 5f 48 45 41 50 20 6f 70 74 69 6f 6e 20  FIG_HEAP option 
15510 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c  is only availabl
15520 65 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 63  e if SQLite is c
15530 6f 6d 70 69 6c 65 64 0a 2a 2a 20 77 69 74 68 20  ompiled.** with 
15540 65 69 74 68 65 72 20 5b 53 51 4c 49 54 45 5f 45  either [SQLITE_E
15550 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 5d 20 6f  NABLE_MEMSYS3] o
15560 72 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  r [SQLITE_ENABLE
15570 5f 4d 45 4d 53 59 53 35 5d 20 61 6e 64 20 72 65  _MEMSYS5] and re
15580 74 75 72 6e 73 0a 2a 2a 20 5b 53 51 4c 49 54 45  turns.** [SQLITE
15590 5f 45 52 52 4f 52 5d 20 69 66 20 69 6e 76 6f 6b  _ERROR] if invok
155a0 65 64 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a 2a  ed otherwise..**
155b0 20 5e 54 68 65 72 65 20 61 72 65 20 74 68 72 65   ^There are thre
155c0 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 53  e arguments to S
155d0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41  QLITE_CONFIG_HEA
155e0 50 3a 0a 2a 2a 20 41 6e 20 38 2d 62 79 74 65 20  P:.** An 8-byte 
155f0 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 20  aligned pointer 
15600 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 2c 0a 2a  to the memory,.*
15610 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  * the number of 
15620 62 79 74 65 73 20 69 6e 20 74 68 65 20 6d 65 6d  bytes in the mem
15630 6f 72 79 20 62 75 66 66 65 72 2c 20 61 6e 64 20  ory buffer, and 
15640 74 68 65 20 6d 69 6e 69 6d 75 6d 20 61 6c 6c 6f  the minimum allo
15650 63 61 74 69 6f 6e 20 73 69 7a 65 2e 0a 2a 2a 20  cation size..** 
15660 5e 49 66 20 74 68 65 20 66 69 72 73 74 20 70 6f  ^If the first po
15670 69 6e 74 65 72 20 28 74 68 65 20 6d 65 6d 6f 72  inter (the memor
15680 79 20 70 6f 69 6e 74 65 72 29 20 69 73 20 4e 55  y pointer) is NU
15690 4c 4c 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  LL, then SQLite 
156a0 72 65 76 65 72 74 73 0a 2a 2a 20 74 6f 20 75 73  reverts.** to us
156b0 69 6e 67 20 69 74 73 20 64 65 66 61 75 6c 74 20  ing its default 
156c0 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
156d0 20 28 74 68 65 20 73 79 73 74 65 6d 20 6d 61 6c   (the system mal
156e0 6c 6f 63 28 29 20 69 6d 70 6c 65 6d 65 6e 74 61  loc() implementa
156f0 74 69 6f 6e 29 2c 0a 2a 2a 20 75 6e 64 6f 69 6e  tion),.** undoin
15700 67 20 61 6e 79 20 70 72 69 6f 72 20 69 6e 76 6f  g any prior invo
15710 63 61 74 69 6f 6e 20 6f 66 20 5b 53 51 4c 49 54  cation of [SQLIT
15720 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d  E_CONFIG_MALLOC]
15730 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20 6d 65  .  ^If the.** me
15740 6d 6f 72 79 20 70 6f 69 6e 74 65 72 20 69 73 20  mory pointer is 
15750 6e 6f 74 20 4e 55 4c 4c 20 74 68 65 6e 20 74 68  not NULL then th
15760 65 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d 65  e alternative me
15770 6d 6f 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74 6f  mory.** allocato
15780 72 20 69 73 20 65 6e 67 61 67 65 64 20 74 6f 20  r is engaged to 
15790 68 61 6e 64 6c 65 20 61 6c 6c 20 6f 66 20 53 51  handle all of SQ
157a0 4c 69 74 65 73 20 6d 65 6d 6f 72 79 20 61 6c 6c  Lites memory all
157b0 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73 2e 0a 2a  ocation needs..*
157c0 2a 20 54 68 65 20 66 69 72 73 74 20 70 6f 69 6e  * The first poin
157d0 74 65 72 20 28 74 68 65 20 6d 65 6d 6f 72 79 20  ter (the memory 
157e0 70 6f 69 6e 74 65 72 29 20 6d 75 73 74 20 62 65  pointer) must be
157f0 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 38   aligned to an 8
15800 2d 62 79 74 65 0a 2a 2a 20 62 6f 75 6e 64 61 72  -byte.** boundar
15810 79 20 6f 72 20 73 75 62 73 65 71 75 65 6e 74 20  y or subsequent 
15820 62 65 68 61 76 69 6f 72 20 6f 66 20 53 51 4c 69  behavior of SQLi
15830 74 65 20 77 69 6c 6c 20 62 65 20 75 6e 64 65 66  te will be undef
15840 69 6e 65 64 2e 0a 2a 2a 20 54 68 65 20 6d 69 6e  ined..** The min
15850 69 6d 75 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  imum allocation 
15860 73 69 7a 65 20 69 73 20 63 61 70 70 65 64 20 61  size is capped a
15870 74 20 32 2a 2a 31 32 2e 20 52 65 61 73 6f 6e 61  t 2**12. Reasona
15880 62 6c 65 20 76 61 6c 75 65 73 0a 2a 2a 20 66 6f  ble values.** fo
15890 72 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 61 6c  r the minimum al
158a0 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65 20 61 72  location size ar
158b0 65 20 32 2a 2a 35 20 74 68 72 6f 75 67 68 20 32  e 2**5 through 2
158c0 2a 2a 38 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  **8.</dd>.**.** 
158d0 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
158e0 4d 55 54 45 58 5d 5d 20 3c 64 74 3e 53 51 4c 49  MUTEX]] <dt>SQLI
158f0 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58 3c  TE_CONFIG_MUTEX<
15900 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54  /dt>.** <dd> ^(T
15910 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
15920 5f 4d 55 54 45 58 20 6f 70 74 69 6f 6e 20 74 61  _MUTEX option ta
15930 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67  kes a single arg
15940 75 6d 65 6e 74 20 77 68 69 63 68 20 69 73 20 61  ument which is a
15950 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  .** pointer to a
15960 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
15970 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  e [sqlite3_mutex
15980 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63 74  _methods] struct
15990 75 72 65 2e 0a 2a 2a 20 54 68 65 20 61 72 67 75  ure..** The argu
159a0 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73 20 61  ment specifies a
159b0 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f 77 2d 6c  lternative low-l
159c0 65 76 65 6c 20 6d 75 74 65 78 20 72 6f 75 74 69  evel mutex routi
159d0 6e 65 73 20 74 6f 20 62 65 20 75 73 65 64 0a 2a  nes to be used.*
159e0 2a 20 69 6e 20 70 6c 61 63 65 20 74 68 65 20 6d  * in place the m
159f0 75 74 65 78 20 72 6f 75 74 69 6e 65 73 20 62 75  utex routines bu
15a00 69 6c 74 20 69 6e 74 6f 20 53 51 4c 69 74 65 2e  ilt into SQLite.
15a10 29 5e 20 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65  )^  ^SQLite make
15a20 73 20 61 20 63 6f 70 79 20 6f 66 0a 2a 2a 20 74  s a copy of.** t
15a30 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68  he content of th
15a40 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  e [sqlite3_mutex
15a50 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63 74  _methods] struct
15a60 75 72 65 20 62 65 66 6f 72 65 20 74 68 65 20 63  ure before the c
15a70 61 6c 6c 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74  all to.** [sqlit
15a80 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 72 65 74  e3_config()] ret
15a90 75 72 6e 73 2e 20 5e 49 66 20 53 51 4c 69 74 65  urns. ^If SQLite
15aa0 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   is compiled wit
15ab0 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45  h.** the [SQLITE
15ac0 5f 54 48 52 45 41 44 53 41 46 45 20 7c 20 53 51  _THREADSAFE | SQ
15ad0 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
15ae0 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  0] compile-time 
15af0 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 74  option then.** t
15b00 68 65 20 65 6e 74 69 72 65 20 6d 75 74 65 78 69  he entire mutexi
15b10 6e 67 20 73 75 62 73 79 73 74 65 6d 20 69 73 20  ng subsystem is 
15b20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65  omitted from the
15b30 20 62 75 69 6c 64 20 61 6e 64 20 68 65 6e 63 65   build and hence
15b40 20 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71   calls to.** [sq
15b50 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
15b60 77 69 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f  with the SQLITE_
15b70 43 4f 4e 46 49 47 5f 4d 55 54 45 58 20 63 6f 6e  CONFIG_MUTEX con
15b80 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
15b90 6e 20 77 69 6c 6c 0a 2a 2a 20 72 65 74 75 72 6e  n will.** return
15ba0 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 2e   [SQLITE_ERROR].
15bb0 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
15bc0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d  LITE_CONFIG_GETM
15bd0 55 54 45 58 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  UTEX]] <dt>SQLIT
15be0 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45  E_CONFIG_GETMUTE
15bf0 58 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  X</dt>.** <dd> ^
15c00 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  (The SQLITE_CONF
15c10 49 47 5f 47 45 54 4d 55 54 45 58 20 6f 70 74 69  IG_GETMUTEX opti
15c20 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c  on takes a singl
15c30 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68  e argument which
15c40 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74 65 72  .** is a pointer
15c50 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20   to an instance 
15c60 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  of the [sqlite3_
15c70 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 5d 20 73  mutex_methods] s
15c80 74 72 75 63 74 75 72 65 2e 20 20 54 68 65 0a 2a  tructure.  The.*
15c90 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  * [sqlite3_mutex
15ca0 5f 6d 65 74 68 6f 64 73 5d 0a 2a 2a 20 73 74 72  _methods].** str
15cb0 75 63 74 75 72 65 20 69 73 20 66 69 6c 6c 65 64  ucture is filled
15cc0 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65 6e   with the curren
15cd0 74 6c 79 20 64 65 66 69 6e 65 64 20 6d 75 74 65  tly defined mute
15ce0 78 20 72 6f 75 74 69 6e 65 73 2e 29 5e 0a 2a 2a  x routines.)^.**
15cf0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e   This option can
15d00 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72   be used to over
15d10 6c 6f 61 64 20 74 68 65 20 64 65 66 61 75 6c 74  load the default
15d20 20 6d 75 74 65 78 20 61 6c 6c 6f 63 61 74 69 6f   mutex allocatio
15d30 6e 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20 77 69  n.** routines wi
15d40 74 68 20 61 20 77 72 61 70 70 65 72 20 75 73 65  th a wrapper use
15d50 64 20 74 6f 20 74 72 61 63 6b 20 6d 75 74 65 78  d to track mutex
15d60 20 75 73 61 67 65 20 66 6f 72 20 70 65 72 66 6f   usage for perfo
15d70 72 6d 61 6e 63 65 0a 2a 2a 20 70 72 6f 66 69 6c  rmance.** profil
15d80 69 6e 67 20 6f 72 20 74 65 73 74 69 6e 67 2c 20  ing or testing, 
15d90 66 6f 72 20 65 78 61 6d 70 6c 65 2e 20 20 20 5e  for example.   ^
15da0 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  If SQLite is com
15db0 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74 68  piled with.** th
15dc0 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44  e [SQLITE_THREAD
15dd0 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f 54 48  SAFE | SQLITE_TH
15de0 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70  READSAFE=0] comp
15df0 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
15e00 74 68 65 6e 0a 2a 2a 20 74 68 65 20 65 6e 74 69  then.** the enti
15e10 72 65 20 6d 75 74 65 78 69 6e 67 20 73 75 62 73  re mutexing subs
15e20 79 73 74 65 6d 20 69 73 20 6f 6d 69 74 74 65 64  ystem is omitted
15e30 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20   from the build 
15e40 61 6e 64 20 68 65 6e 63 65 20 63 61 6c 6c 73 20  and hence calls 
15e50 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63  to.** [sqlite3_c
15e60 6f 6e 66 69 67 28 29 5d 20 77 69 74 68 20 74 68  onfig()] with th
15e70 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
15e80 47 45 54 4d 55 54 45 58 20 63 6f 6e 66 69 67 75  GETMUTEX configu
15e90 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 77 69  ration option wi
15ea0 6c 6c 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53 51  ll.** return [SQ
15eb0 4c 49 54 45 5f 45 52 52 4f 52 5d 2e 3c 2f 64 64  LITE_ERROR].</dd
15ec0 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
15ed0 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44  _CONFIG_LOOKASID
15ee0 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  E]] <dt>SQLITE_C
15ef0 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 3c  ONFIG_LOOKASIDE<
15f00 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54  /dt>.** <dd> ^(T
15f10 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
15f20 5f 4c 4f 4f 4b 41 53 49 44 45 20 6f 70 74 69 6f  _LOOKASIDE optio
15f30 6e 20 74 61 6b 65 73 20 74 77 6f 20 61 72 67 75  n takes two argu
15f40 6d 65 6e 74 73 20 74 68 61 74 20 64 65 74 65 72  ments that deter
15f50 6d 69 6e 65 0a 2a 2a 20 74 68 65 20 64 65 66 61  mine.** the defa
15f60 75 6c 74 20 73 69 7a 65 20 6f 66 20 6c 6f 6f 6b  ult size of look
15f70 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 6f 6e 20  aside memory on 
15f80 65 61 63 68 20 5b 64 61 74 61 62 61 73 65 20 63  each [database c
15f90 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a 20 54  onnection]..** T
15fa0 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
15fb0 74 20 69 73 20 74 68 65 0a 2a 2a 20 73 69 7a 65  t is the.** size
15fc0 20 6f 66 20 65 61 63 68 20 6c 6f 6f 6b 61 73 69   of each lookasi
15fd0 64 65 20 62 75 66 66 65 72 20 73 6c 6f 74 20 61  de buffer slot a
15fe0 6e 64 20 74 68 65 20 73 65 63 6f 6e 64 20 69 73  nd the second is
15ff0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a   the number of.*
16000 2a 20 73 6c 6f 74 73 20 61 6c 6c 6f 63 61 74 65  * slots allocate
16010 64 20 74 6f 20 65 61 63 68 20 64 61 74 61 62 61  d to each databa
16020 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 29 5e  se connection.)^
16030 20 20 5e 28 53 51 4c 49 54 45 5f 43 4f 4e 46 49    ^(SQLITE_CONFI
16040 47 5f 4c 4f 4f 4b 41 53 49 44 45 0a 2a 2a 20 73  G_LOOKASIDE.** s
16050 65 74 73 20 74 68 65 20 3c 69 3e 64 65 66 61 75  ets the <i>defau
16060 6c 74 3c 2f 69 3e 20 6c 6f 6f 6b 61 73 69 64 65  lt</i> lookaside
16070 20 73 69 7a 65 2e 20 54 68 65 20 5b 53 51 4c 49   size. The [SQLI
16080 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b  TE_DBCONFIG_LOOK
16090 41 53 49 44 45 5d 0a 2a 2a 20 6f 70 74 69 6f 6e  ASIDE].** option
160a0 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f   to [sqlite3_db_
160b0 63 6f 6e 66 69 67 28 29 5d 20 63 61 6e 20 62 65  config()] can be
160c0 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20   used to change 
160d0 74 68 65 20 6c 6f 6f 6b 61 73 69 64 65 0a 2a 2a  the lookaside.**
160e0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
160f0 6e 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 6e  n individual con
16100 6e 65 63 74 69 6f 6e 73 2e 29 5e 20 3c 2f 64 64  nections.)^ </dd
16110 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
16120 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 32 5d  _CONFIG_PCACHE2]
16130 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
16140 46 49 47 5f 50 43 41 43 48 45 32 3c 2f 64 74 3e  FIG_PCACHE2</dt>
16150 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53  .** <dd> ^(The S
16160 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41  QLITE_CONFIG_PCA
16170 43 48 45 32 20 6f 70 74 69 6f 6e 20 74 61 6b 65  CHE2 option take
16180 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  s a single argum
16190 65 6e 74 20 77 68 69 63 68 20 69 73 20 0a 2a 2a  ent which is .**
161a0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
161b0 20 5b 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65   [sqlite3_pcache
161c0 5f 6d 65 74 68 6f 64 73 32 5d 20 6f 62 6a 65 63  _methods2] objec
161d0 74 2e 20 20 54 68 69 73 20 6f 62 6a 65 63 74 20  t.  This object 
161e0 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 74 68 65  specifies.** the
161f0 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 61 20   interface to a 
16200 63 75 73 74 6f 6d 20 70 61 67 65 20 63 61 63 68  custom page cach
16210 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
16220 2e 29 5e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 6d  .)^.** ^SQLite m
16230 61 6b 65 73 20 61 20 63 6f 70 79 20 6f 66 20 74  akes a copy of t
16240 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 63 61 63  he [sqlite3_pcac
16250 68 65 5f 6d 65 74 68 6f 64 73 32 5d 20 6f 62 6a  he_methods2] obj
16260 65 63 74 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  ect.</dd>.**.** 
16270 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
16280 47 45 54 50 43 41 43 48 45 32 5d 5d 20 3c 64 74  GETPCACHE2]] <dt
16290 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47  >SQLITE_CONFIG_G
162a0 45 54 50 43 41 43 48 45 32 3c 2f 64 74 3e 0a 2a  ETPCACHE2</dt>.*
162b0 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c  * <dd> ^(The SQL
162c0 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43  ITE_CONFIG_GETPC
162d0 41 43 48 45 32 20 6f 70 74 69 6f 6e 20 74 61 6b  ACHE2 option tak
162e0 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75  es a single argu
162f0 6d 65 6e 74 20 77 68 69 63 68 0a 2a 2a 20 69 73  ment which.** is
16300 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
16310 20 5b 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65   [sqlite3_pcache
16320 5f 6d 65 74 68 6f 64 73 32 5d 20 6f 62 6a 65 63  _methods2] objec
16330 74 2e 20 20 53 51 4c 69 74 65 20 63 6f 70 69 65  t.  SQLite copie
16340 73 20 6f 66 0a 2a 2a 20 74 68 65 20 63 75 72 72  s of.** the curr
16350 65 6e 74 20 70 61 67 65 20 63 61 63 68 65 20 69  ent page cache i
16360 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 6e  mplementation in
16370 74 6f 20 74 68 61 74 20 6f 62 6a 65 63 74 2e 29  to that object.)
16380 5e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  ^ </dd>.**.** [[
16390 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f  SQLITE_CONFIG_LO
163a0 47 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  G]] <dt>SQLITE_C
163b0 4f 4e 46 49 47 5f 4c 4f 47 3c 2f 64 74 3e 0a 2a  ONFIG_LOG</dt>.*
163c0 2a 20 3c 64 64 3e 20 54 68 65 20 53 51 4c 49 54  * <dd> The SQLIT
163d0 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 6f 70 74  E_CONFIG_LOG opt
163e0 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 63  ion is used to c
163f0 6f 6e 66 69 67 75 72 65 20 74 68 65 20 53 51 4c  onfigure the SQL
16400 69 74 65 0a 2a 2a 20 67 6c 6f 62 61 6c 20 5b 65  ite.** global [e
16410 72 72 6f 72 20 6c 6f 67 5d 2e 0a 2a 2a 20 28 5e  rror log]..** (^
16420 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
16430 47 5f 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 61 6b  G_LOG option tak
16440 65 73 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73  es two arguments
16450 3a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  : a pointer to a
16460 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 77 69 74  .** function wit
16470 68 20 61 20 63 61 6c 6c 20 73 69 67 6e 61 74 75  h a call signatu
16480 72 65 20 6f 66 20 76 6f 69 64 28 2a 29 28 76 6f  re of void(*)(vo
16490 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 63 68  id*,int,const ch
164a0 61 72 2a 29 2c 20 0a 2a 2a 20 61 6e 64 20 61 20  ar*), .** and a 
164b0 70 6f 69 6e 74 65 72 20 74 6f 20 76 6f 69 64 2e  pointer to void.
164c0 20 5e 49 66 20 74 68 65 20 66 75 6e 63 74 69 6f   ^If the functio
164d0 6e 20 70 6f 69 6e 74 65 72 20 69 73 20 6e 6f 74  n pointer is not
164e0 20 4e 55 4c 4c 2c 20 69 74 20 69 73 0a 2a 2a 20   NULL, it is.** 
164f0 69 6e 76 6f 6b 65 64 20 62 79 20 5b 73 71 6c 69  invoked by [sqli
16500 74 65 33 5f 6c 6f 67 28 29 5d 20 74 6f 20 70 72  te3_log()] to pr
16510 6f 63 65 73 73 20 65 61 63 68 20 6c 6f 67 67 69  ocess each loggi
16520 6e 67 20 65 76 65 6e 74 2e 20 20 5e 49 66 20 74  ng event.  ^If t
16530 68 65 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 70  he.** function p
16540 6f 69 6e 74 65 72 20 69 73 20 4e 55 4c 4c 2c 20  ointer is NULL, 
16550 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67  the [sqlite3_log
16560 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 62 65  ()] interface be
16570 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 0a 2a  comes a no-op..*
16580 2a 20 5e 54 68 65 20 76 6f 69 64 20 70 6f 69 6e  * ^The void poin
16590 74 65 72 20 74 68 61 74 20 69 73 20 74 68 65 20  ter that is the 
165a0 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20  second argument 
165b0 74 6f 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  to SQLITE_CONFIG
165c0 5f 4c 4f 47 20 69 73 0a 2a 2a 20 70 61 73 73 65  _LOG is.** passe
165d0 64 20 74 68 72 6f 75 67 68 20 61 73 20 74 68 65  d through as the
165e0 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
165f0 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74   to the applicat
16600 69 6f 6e 2d 64 65 66 69 6e 65 64 20 6c 6f 67 67  ion-defined logg
16610 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 77  er.** function w
16620 68 65 6e 65 76 65 72 20 74 68 61 74 20 66 75 6e  henever that fun
16630 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64  ction is invoked
16640 2e 20 20 5e 54 68 65 20 73 65 63 6f 6e 64 20 70  .  ^The second p
16650 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 74  arameter to.** t
16660 68 65 20 6c 6f 67 67 65 72 20 66 75 6e 63 74 69  he logger functi
16670 6f 6e 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20  on is a copy of 
16680 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65  the first parame
16690 74 65 72 20 74 6f 20 74 68 65 20 63 6f 72 72 65  ter to the corre
166a0 73 70 6f 6e 64 69 6e 67 0a 2a 2a 20 5b 73 71 6c  sponding.** [sql
166b0 69 74 65 33 5f 6c 6f 67 28 29 5d 20 63 61 6c 6c  ite3_log()] call
166c0 20 61 6e 64 20 69 73 20 69 6e 74 65 6e 64 65 64   and is intended
166d0 20 74 6f 20 62 65 20 61 20 5b 72 65 73 75 6c 74   to be a [result
166e0 20 63 6f 64 65 5d 20 6f 72 20 61 6e 0a 2a 2a 20   code] or an.** 
166f0 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74  [extended result
16700 20 63 6f 64 65 5d 2e 20 20 5e 54 68 65 20 74 68   code].  ^The th
16710 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 70 61  ird parameter pa
16720 73 73 65 64 20 74 6f 20 74 68 65 20 6c 6f 67 67  ssed to the logg
16730 65 72 20 69 73 0a 2a 2a 20 6c 6f 67 20 6d 65 73  er is.** log mes
16740 73 61 67 65 20 61 66 74 65 72 20 66 6f 72 6d 61  sage after forma
16750 74 74 69 6e 67 20 76 69 61 20 5b 73 71 6c 69 74  tting via [sqlit
16760 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 5d 2e 0a  e3_snprintf()]..
16770 2a 2a 20 54 68 65 20 53 51 4c 69 74 65 20 6c 6f  ** The SQLite lo
16780 67 67 69 6e 67 20 69 6e 74 65 72 66 61 63 65 20  gging interface 
16790 69 73 20 6e 6f 74 20 72 65 65 6e 74 72 61 6e 74  is not reentrant
167a0 3b 20 74 68 65 20 6c 6f 67 67 65 72 20 66 75 6e  ; the logger fun
167b0 63 74 69 6f 6e 0a 2a 2a 20 73 75 70 70 6c 69 65  ction.** supplie
167c0 64 20 62 79 20 74 68 65 20 61 70 70 6c 69 63 61  d by the applica
167d0 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 69 6e  tion must not in
167e0 76 6f 6b 65 20 61 6e 79 20 53 51 4c 69 74 65 20  voke any SQLite 
167f0 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 20 49 6e  interface..** In
16800 20 61 20 6d 75 6c 74 69 2d 74 68 72 65 61 64 65   a multi-threade
16810 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20 74  d application, t
16820 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64  he application-d
16830 65 66 69 6e 65 64 20 6c 6f 67 67 65 72 0a 2a 2a  efined logger.**
16840 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20 62   function must b
16850 65 20 74 68 72 65 61 64 73 61 66 65 2e 20 3c 2f  e threadsafe. </
16860 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
16870 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 5d 5d 20  TE_CONFIG_URI]] 
16880 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
16890 47 5f 55 52 49 0a 2a 2a 20 3c 64 64 3e 5e 28 54  G_URI.** <dd>^(T
168a0 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
168b0 5f 55 52 49 20 6f 70 74 69 6f 6e 20 74 61 6b 65  _URI option take
168c0 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  s a single argum
168d0 65 6e 74 20 6f 66 20 74 79 70 65 20 69 6e 74 2e  ent of type int.
168e0 0a 2a 2a 20 49 66 20 6e 6f 6e 2d 7a 65 72 6f 2c  .** If non-zero,
168f0 20 74 68 65 6e 20 55 52 49 20 68 61 6e 64 6c 69   then URI handli
16900 6e 67 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 65  ng is globally e
16910 6e 61 62 6c 65 64 2e 20 49 66 20 74 68 65 20 70  nabled. If the p
16920 61 72 61 6d 65 74 65 72 20 69 73 20 7a 65 72 6f  arameter is zero
16930 2c 0a 2a 2a 20 74 68 65 6e 20 55 52 49 20 68 61  ,.** then URI ha
16940 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61 6c  ndling is global
16950 6c 79 20 64 69 73 61 62 6c 65 64 2e 29 5e 20 5e  ly disabled.)^ ^
16960 49 66 20 55 52 49 20 68 61 6e 64 6c 69 6e 67 20  If URI handling 
16970 69 73 20 67 6c 6f 62 61 6c 6c 79 0a 2a 2a 20 65  is globally.** e
16980 6e 61 62 6c 65 64 2c 20 61 6c 6c 20 66 69 6c 65  nabled, all file
16990 6e 61 6d 65 73 20 70 61 73 73 65 64 20 74 6f 20  names passed to 
169a0 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
169b0 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  , [sqlite3_open_
169c0 76 32 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74  v2()],.** [sqlit
169d0 65 33 5f 6f 70 65 6e 31 36 28 29 5d 20 6f 72 0a  e3_open16()] or.
169e0 2a 2a 20 73 70 65 63 69 66 69 65 64 20 61 73 20  ** specified as 
169f0 70 61 72 74 20 6f 66 20 5b 41 54 54 41 43 48 5d  part of [ATTACH]
16a00 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 69 6e   commands are in
16a10 74 65 72 70 72 65 74 65 64 20 61 73 20 55 52 49  terpreted as URI
16a20 73 2c 20 72 65 67 61 72 64 6c 65 73 73 0a 2a 2a  s, regardless.**
16a30 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
16a40 6f 74 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f  ot the [SQLITE_O
16a50 50 45 4e 5f 55 52 49 5d 20 66 6c 61 67 20 69 73  PEN_URI] flag is
16a60 20 73 65 74 20 77 68 65 6e 20 74 68 65 20 64 61   set when the da
16a70 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63  tabase.** connec
16a80 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64 2e 20  tion is opened. 
16a90 5e 49 66 20 69 74 20 69 73 20 67 6c 6f 62 61 6c  ^If it is global
16aa0 6c 79 20 64 69 73 61 62 6c 65 64 2c 20 66 69 6c  ly disabled, fil
16ab0 65 6e 61 6d 65 73 20 61 72 65 0a 2a 2a 20 6f 6e  enames are.** on
16ac0 6c 79 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  ly interpreted a
16ad0 73 20 55 52 49 73 20 69 66 20 74 68 65 20 53 51  s URIs if the SQ
16ae0 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 20 66 6c  LITE_OPEN_URI fl
16af0 61 67 20 69 73 20 73 65 74 20 77 68 65 6e 20 74  ag is set when t
16b00 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 63  he.** database c
16b10 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65  onnection is ope
16b20 6e 65 64 2e 20 5e 28 42 79 20 64 65 66 61 75 6c  ned. ^(By defaul
16b30 74 2c 20 55 52 49 20 68 61 6e 64 6c 69 6e 67 20  t, URI handling 
16b40 69 73 20 67 6c 6f 62 61 6c 6c 79 0a 2a 2a 20 64  is globally.** d
16b50 69 73 61 62 6c 65 64 2e 20 54 68 65 20 64 65 66  isabled. The def
16b60 61 75 6c 74 20 76 61 6c 75 65 20 6d 61 79 20 62  ault value may b
16b70 65 20 63 68 61 6e 67 65 64 20 62 79 20 63 6f 6d  e changed by com
16b80 70 69 6c 69 6e 67 20 77 69 74 68 20 74 68 65 0a  piling with the.
16b90 2a 2a 20 5b 53 51 4c 49 54 45 5f 55 53 45 5f 55  ** [SQLITE_USE_U
16ba0 52 49 5d 20 73 79 6d 62 6f 6c 20 64 65 66 69 6e  RI] symbol defin
16bb0 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  ed.)^.**.** [[SQ
16bc0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45  LITE_CONFIG_COVE
16bd0 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d  RING_INDEX_SCAN]
16be0 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
16bf0 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44  FIG_COVERING_IND
16c00 45 58 5f 53 43 41 4e 0a 2a 2a 20 3c 64 64 3e 5e  EX_SCAN.** <dd>^
16c10 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
16c20 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58  G_COVERING_INDEX
16c30 5f 53 43 41 4e 20 6f 70 74 69 6f 6e 20 74 61 6b  _SCAN option tak
16c40 65 73 20 61 20 73 69 6e 67 6c 65 20 69 6e 74 65  es a single inte
16c50 67 65 72 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20  ger.** argument 
16c60 77 68 69 63 68 20 69 73 20 69 6e 74 65 72 70 72  which is interpr
16c70 65 74 65 64 20 61 73 20 61 20 62 6f 6f 6c 65 61  eted as a boolea
16c80 6e 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 65 6e  n in order to en
16c90 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 0a  able or disable.
16ca0 2a 2a 20 74 68 65 20 75 73 65 20 6f 66 20 63 6f  ** the use of co
16cb0 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73 20 66  vering indices f
16cc0 6f 72 20 66 75 6c 6c 20 74 61 62 6c 65 20 73 63  or full table sc
16cd0 61 6e 73 20 69 6e 20 74 68 65 20 71 75 65 72 79  ans in the query
16ce0 20 6f 70 74 69 6d 69 7a 65 72 2e 0a 2a 2a 20 5e   optimizer..** ^
16cf0 54 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74  The default sett
16d00 69 6e 67 20 69 73 20 64 65 74 65 72 6d 69 6e 65  ing is determine
16d10 64 0a 2a 2a 20 62 79 20 74 68 65 20 5b 53 51 4c  d.** by the [SQL
16d20 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45 52 49  ITE_ALLOW_COVERI
16d30 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20 63  NG_INDEX_SCAN] c
16d40 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
16d50 6f 6e 2c 20 6f 72 20 69 73 20 22 6f 6e 22 0a 2a  on, or is "on".*
16d60 2a 20 69 66 20 74 68 61 74 20 63 6f 6d 70 69 6c  * if that compil
16d70 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
16d80 20 6f 6d 69 74 74 65 64 2e 0a 2a 2a 20 54 68 65   omitted..** The
16d90 20 61 62 69 6c 69 74 79 20 74 6f 20 64 69 73 61   ability to disa
16da0 62 6c 65 20 74 68 65 20 75 73 65 20 6f 66 20 63  ble the use of c
16db0 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73 20  overing indices 
16dc0 66 6f 72 20 66 75 6c 6c 20 74 61 62 6c 65 20 73  for full table s
16dd0 63 61 6e 73 0a 2a 2a 20 69 73 20 62 65 63 61 75  cans.** is becau
16de0 73 65 20 73 6f 6d 65 20 69 6e 63 6f 72 72 65 63  se some incorrec
16df0 74 6c 79 20 63 6f 64 65 64 20 6c 65 67 61 63 79  tly coded legacy
16e00 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 69   applications mi
16e10 67 68 74 20 6d 61 6c 66 75 6e 63 74 69 6f 6e 0a  ght malfunction.
16e20 2a 2a 20 77 68 65 6e 20 74 68 65 20 6f 70 74 69  ** when the opti
16e30 6d 69 7a 61 74 69 6f 6e 20 69 73 20 65 6e 61 62  mization is enab
16e40 6c 65 64 2e 20 20 50 72 6f 76 69 64 69 6e 67 20  led.  Providing 
16e50 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 0a 2a  the ability to.*
16e60 2a 20 64 69 73 61 62 6c 65 20 74 68 65 20 6f 70  * disable the op
16e70 74 69 6d 69 7a 61 74 69 6f 6e 20 61 6c 6c 6f 77  timization allow
16e80 73 20 74 68 65 20 6f 6c 64 65 72 2c 20 62 75 67  s the older, bug
16e90 67 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63  gy application c
16ea0 6f 64 65 20 74 6f 20 77 6f 72 6b 0a 2a 2a 20 77  ode to work.** w
16eb0 69 74 68 6f 75 74 20 63 68 61 6e 67 65 20 65 76  ithout change ev
16ec0 65 6e 20 77 69 74 68 20 6e 65 77 65 72 20 76 65  en with newer ve
16ed0 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
16ee0 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ..**.** [[SQLITE
16ef0 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5d 5d  _CONFIG_PCACHE]]
16f00 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
16f10 5f 47 45 54 50 43 41 43 48 45 5d 5d 0a 2a 2a 20  _GETPCACHE]].** 
16f20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
16f30 47 5f 50 43 41 43 48 45 20 61 6e 64 20 53 51 4c  G_PCACHE and SQL
16f40 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43  ITE_CONFIG_GETPC
16f50 41 43 48 45 0a 2a 2a 20 3c 64 64 3e 20 54 68 65  ACHE.** <dd> The
16f60 73 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 6f  se options are o
16f70 62 73 6f 6c 65 74 65 20 61 6e 64 20 73 68 6f 75  bsolete and shou
16f80 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20 62  ld not be used b
16f90 79 20 6e 65 77 20 63 6f 64 65 2e 0a 2a 2a 20 54  y new code..** T
16fa0 68 65 79 20 61 72 65 20 72 65 74 61 69 6e 65 64  hey are retained
16fb0 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63   for backwards c
16fc0 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62 75 74  ompatibility but
16fd0 20 61 72 65 20 6e 6f 77 20 6e 6f 2d 6f 70 73 2e   are now no-ops.
16fe0 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  .** </dd>.**.** 
16ff0 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
17000 53 51 4c 4c 4f 47 5d 5d 0a 2a 2a 20 3c 64 74 3e  SQLLOG]].** <dt>
17010 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51  SQLITE_CONFIG_SQ
17020 4c 4c 4f 47 0a 2a 2a 20 3c 64 64 3e 54 68 69 73  LLOG.** <dd>This
17030 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20   option is only 
17040 61 76 61 69 6c 61 62 6c 65 20 69 66 20 73 71 6c  available if sql
17050 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
17060 77 69 74 68 20 74 68 65 0a 2a 2a 20 5b 53 51 4c  with the.** [SQL
17070 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f  ITE_ENABLE_SQLLO
17080 47 5d 20 70 72 65 2d 70 72 6f 63 65 73 73 6f 72  G] pre-processor
17090 20 6d 61 63 72 6f 20 64 65 66 69 6e 65 64 2e 20   macro defined. 
170a0 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
170b0 6e 74 20 73 68 6f 75 6c 64 0a 2a 2a 20 62 65 20  nt should.** be 
170c0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 66  a pointer to a f
170d0 75 6e 63 74 69 6f 6e 20 6f 66 20 74 79 70 65 20  unction of type 
170e0 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 2c 73 71  void(*)(void*,sq
170f0 6c 69 74 65 33 2a 2c 63 6f 6e 73 74 20 63 68 61  lite3*,const cha
17100 72 2a 2c 20 69 6e 74 29 2e 0a 2a 2a 20 54 68 65  r*, int)..** The
17110 20 73 65 63 6f 6e 64 20 73 68 6f 75 6c 64 20 62   second should b
17120 65 20 6f 66 20 74 79 70 65 20 28 76 6f 69 64 2a  e of type (void*
17130 29 2e 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20  ). The callback 
17140 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20 74 68  is invoked by th
17150 65 20 6c 69 62 72 61 72 79 0a 2a 2a 20 69 6e 20  e library.** in 
17160 74 68 72 65 65 20 73 65 70 61 72 61 74 65 20 63  three separate c
17170 69 72 63 75 6d 73 74 61 6e 63 65 73 2c 20 69 64  ircumstances, id
17180 65 6e 74 69 66 69 65 64 20 62 79 20 74 68 65 20  entified by the 
17190 76 61 6c 75 65 20 70 61 73 73 65 64 20 61 73 20  value passed as 
171a0 74 68 65 0a 2a 2a 20 66 6f 75 72 74 68 20 70 61  the.** fourth pa
171b0 72 61 6d 65 74 65 72 2e 20 49 66 20 74 68 65 20  rameter. If the 
171c0 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72  fourth parameter
171d0 20 69 73 20 30 2c 20 74 68 65 6e 20 74 68 65 20   is 0, then the 
171e0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
171f0 69 6f 6e 0a 2a 2a 20 70 61 73 73 65 64 20 61 73  ion.** passed as
17200 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   the second argu
17210 6d 65 6e 74 20 68 61 73 20 6a 75 73 74 20 62 65  ment has just be
17220 65 6e 20 6f 70 65 6e 65 64 2e 20 54 68 65 20 74  en opened. The t
17230 68 69 72 64 20 61 72 67 75 6d 65 6e 74 0a 2a 2a  hird argument.**
17240 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 75 66   points to a buf
17250 66 65 72 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  fer containing t
17260 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d  he name of the m
17270 61 69 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c  ain database fil
17280 65 2e 20 49 66 20 74 68 65 0a 2a 2a 20 66 6f 75  e. If the.** fou
17290 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69 73  rth parameter is
172a0 20 31 2c 20 74 68 65 6e 20 74 68 65 20 53 51 4c   1, then the SQL
172b0 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
172c0 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  the third parame
172d0 74 65 72 0a 2a 2a 20 70 6f 69 6e 74 73 20 74 6f  ter.** points to
172e0 20 68 61 73 20 6a 75 73 74 20 62 65 65 6e 20 65   has just been e
172f0 78 65 63 75 74 65 64 2e 20 4f 72 2c 20 69 66 20  xecuted. Or, if 
17300 74 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d  the fourth param
17310 65 74 65 72 20 69 73 20 32 2c 20 74 68 65 6e 0a  eter is 2, then.
17320 2a 2a 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f  ** the connectio
17330 6e 20 62 65 69 6e 67 20 70 61 73 73 65 64 20 61  n being passed a
17340 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61 72  s the second par
17350 61 6d 65 74 65 72 20 69 73 20 62 65 69 6e 67 20  ameter is being 
17360 63 6c 6f 73 65 64 2e 20 54 68 65 0a 2a 2a 20 74  closed. The.** t
17370 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 69  hird parameter i
17380 73 20 70 61 73 73 65 64 20 4e 55 4c 4c 20 49 6e  s passed NULL In
17390 20 74 68 69 73 20 63 61 73 65 2e 20 20 41 6e 20   this case.  An 
173a0 65 78 61 6d 70 6c 65 20 6f 66 20 75 73 69 6e 67  example of using
173b0 20 74 68 69 73 0a 2a 2a 20 63 6f 6e 66 69 67 75   this.** configu
173c0 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 63 61  ration option ca
173d0 6e 20 62 65 20 73 65 65 6e 20 69 6e 20 74 68 65  n be seen in the
173e0 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22   "test_sqllog.c"
173f0 20 73 6f 75 72 63 65 20 66 69 6c 65 20 69 6e 0a   source file in.
17400 2a 2a 20 74 68 65 20 63 61 6e 6f 6e 69 63 61 6c  ** the canonical
17410 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20 74   SQLite source t
17420 72 65 65 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  ree.</dd>.**.** 
17430 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
17440 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a 2a 2a 20 3c  MMAP_SIZE]].** <
17450 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
17460 5f 4d 4d 41 50 5f 53 49 5a 45 0a 2a 2a 20 3c 64  _MMAP_SIZE.** <d
17470 64 3e 5e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  d>^SQLITE_CONFIG
17480 5f 4d 4d 41 50 5f 53 49 5a 45 20 74 61 6b 65 73  _MMAP_SIZE takes
17490 20 74 77 6f 20 36 34 2d 62 69 74 20 69 6e 74 65   two 64-bit inte
174a0 67 65 72 20 28 73 71 6c 69 74 65 33 5f 69 6e 74  ger (sqlite3_int
174b0 36 34 29 20 76 61 6c 75 65 73 0a 2a 2a 20 74 68  64) values.** th
174c0 61 74 20 61 72 65 20 74 68 65 20 64 65 66 61 75  at are the defau
174d0 6c 74 20 6d 6d 61 70 20 73 69 7a 65 20 6c 69 6d  lt mmap size lim
174e0 69 74 20 28 74 68 65 20 64 65 66 61 75 6c 74 20  it (the default 
174f0 73 65 74 74 69 6e 67 20 66 6f 72 0a 2a 2a 20 5b  setting for.** [
17500 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69 7a 65  PRAGMA mmap_size
17510 5d 29 20 61 6e 64 20 74 68 65 20 6d 61 78 69 6d  ]) and the maxim
17520 75 6d 20 61 6c 6c 6f 77 65 64 20 6d 6d 61 70 20  um allowed mmap 
17530 73 69 7a 65 20 6c 69 6d 69 74 2e 0a 2a 2a 20 5e  size limit..** ^
17540 54 68 65 20 64 65 66 61 75 6c 74 20 73 65 74 74  The default sett
17550 69 6e 67 20 63 61 6e 20 62 65 20 6f 76 65 72 72  ing can be overr
17560 69 64 64 65 6e 20 62 79 20 65 61 63 68 20 64 61  idden by each da
17570 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
17580 6e 20 75 73 69 6e 67 0a 2a 2a 20 65 69 74 68 65  n using.** eithe
17590 72 20 74 68 65 20 5b 50 52 41 47 4d 41 20 6d 6d  r the [PRAGMA mm
175a0 61 70 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64  ap_size] command
175b0 2c 20 6f 72 20 62 79 20 75 73 69 6e 67 20 74 68  , or by using th
175c0 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e  e.** [SQLITE_FCN
175d0 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 66 69  TL_MMAP_SIZE] fi
175e0 6c 65 20 63 6f 6e 74 72 6f 6c 2e 20 20 5e 28 54  le control.  ^(T
175f0 68 65 20 6d 61 78 69 6d 75 6d 20 61 6c 6c 6f 77  he maximum allow
17600 65 64 20 6d 6d 61 70 20 73 69 7a 65 0a 2a 2a 20  ed mmap size.** 
17610 77 69 6c 6c 20 62 65 20 73 69 6c 65 6e 74 6c 79  will be silently
17620 20 74 72 75 6e 63 61 74 65 64 20 69 66 20 6e 65   truncated if ne
17630 63 65 73 73 61 72 79 20 73 6f 20 74 68 61 74 20  cessary so that 
17640 69 74 20 64 6f 65 73 20 6e 6f 74 20 65 78 63 65  it does not exce
17650 65 64 20 74 68 65 0a 2a 2a 20 63 6f 6d 70 69 6c  ed the.** compil
17660 65 2d 74 69 6d 65 20 6d 61 78 69 6d 75 6d 20 6d  e-time maximum m
17670 6d 61 70 20 73 69 7a 65 20 73 65 74 20 62 79 20  map size set by 
17680 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4d  the.** [SQLITE_M
17690 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 63 6f  AX_MMAP_SIZE] co
176a0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
176b0 6e 2e 29 5e 0a 2a 2a 20 5e 49 66 20 65 69 74 68  n.)^.** ^If eith
176c0 65 72 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  er argument to t
176d0 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 65  his option is ne
176e0 67 61 74 69 76 65 2c 20 74 68 65 6e 20 74 68 61  gative, then tha
176f0 74 20 61 72 67 75 6d 65 6e 74 20 69 73 0a 2a 2a  t argument is.**
17700 20 63 68 61 6e 67 65 64 20 74 6f 20 69 74 73 20   changed to its 
17710 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66  compile-time def
17720 61 75 6c 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  ault..**.** [[SQ
17730 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33  LITE_CONFIG_WIN3
17740 32 5f 48 45 41 50 53 49 5a 45 5d 5d 0a 2a 2a 20  2_HEAPSIZE]].** 
17750 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
17760 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45  G_WIN32_HEAPSIZE
17770 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c  .** <dd>^The SQL
17780 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32  ITE_CONFIG_WIN32
17790 5f 48 45 41 50 53 49 5a 45 20 6f 70 74 69 6f 6e  _HEAPSIZE option
177a0 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62   is only availab
177b0 6c 65 20 69 66 20 53 51 4c 69 74 65 20 69 73 0a  le if SQLite is.
177c0 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20  ** compiled for 
177d0 57 69 6e 64 6f 77 73 20 77 69 74 68 20 74 68 65  Windows with the
177e0 20 5b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d   [SQLITE_WIN32_M
177f0 41 4c 4c 4f 43 5d 20 70 72 65 2d 70 72 6f 63 65  ALLOC] pre-proce
17800 73 73 6f 72 20 6d 61 63 72 6f 0a 2a 2a 20 64 65  ssor macro.** de
17810 66 69 6e 65 64 2e 20 5e 53 51 4c 49 54 45 5f 43  fined. ^SQLITE_C
17820 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50  ONFIG_WIN32_HEAP
17830 53 49 5a 45 20 74 61 6b 65 73 20 61 20 33 32 2d  SIZE takes a 32-
17840 62 69 74 20 75 6e 73 69 67 6e 65 64 20 69 6e 74  bit unsigned int
17850 65 67 65 72 20 76 61 6c 75 65 0a 2a 2a 20 74 68  eger value.** th
17860 61 74 20 73 70 65 63 69 66 69 65 73 20 74 68 65  at specifies the
17870 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66   maximum size of
17880 20 74 68 65 20 63 72 65 61 74 65 64 20 68 65 61   the created hea
17890 70 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  p..**.** [[SQLIT
178a0 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f  E_CONFIG_PCACHE_
178b0 48 44 52 53 5a 5d 5d 0a 2a 2a 20 3c 64 74 3e 53  HDRSZ]].** <dt>S
178c0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41  QLITE_CONFIG_PCA
178d0 43 48 45 5f 48 44 52 53 5a 0a 2a 2a 20 3c 64 64  CHE_HDRSZ.** <dd
178e0 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  >^The SQLITE_CON
178f0 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a  FIG_PCACHE_HDRSZ
17900 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20   option takes a 
17910 73 69 6e 67 6c 65 20 70 61 72 61 6d 65 74 65 72  single parameter
17920 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61 20 70   which.** is a p
17930 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74  ointer to an int
17940 65 67 65 72 20 61 6e 64 20 77 72 69 74 65 73 20  eger and writes 
17950 69 6e 74 6f 20 74 68 61 74 20 69 6e 74 65 67 65  into that intege
17960 72 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  r the number of 
17970 65 78 74 72 61 0a 2a 2a 20 62 79 74 65 73 20 70  extra.** bytes p
17980 65 72 20 70 61 67 65 20 72 65 71 75 69 72 65 64  er page required
17990 20 66 6f 72 20 65 61 63 68 20 70 61 67 65 20 69   for each page i
179a0 6e 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  n [SQLITE_CONFIG
179b0 5f 50 41 47 45 43 41 43 48 45 5d 2e 0a 2a 2a 20  _PAGECACHE]..** 
179c0 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 65 78  The amount of ex
179d0 74 72 61 20 73 70 61 63 65 20 72 65 71 75 69 72  tra space requir
179e0 65 64 20 63 61 6e 20 63 68 61 6e 67 65 20 64 65  ed can change de
179f0 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 63  pending on the c
17a00 6f 6d 70 69 6c 65 72 2c 0a 2a 2a 20 74 61 72 67  ompiler,.** targ
17a10 65 74 20 70 6c 61 74 66 6f 72 6d 2c 20 61 6e 64  et platform, and
17a20 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 2e   SQLite version.
17a30 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
17a40 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d 5d 0a 2a  CONFIG_PMASZ]].*
17a50 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  * <dt>SQLITE_CON
17a60 46 49 47 5f 50 4d 41 53 5a 0a 2a 2a 20 3c 64 64  FIG_PMASZ.** <dd
17a70 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  >^The SQLITE_CON
17a80 46 49 47 5f 50 4d 41 53 5a 20 6f 70 74 69 6f 6e  FIG_PMASZ option
17a90 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20   takes a single 
17aa0 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68 0a  parameter which.
17ab0 2a 2a 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65  ** is an unsigne
17ac0 64 20 69 6e 74 65 67 65 72 20 61 6e 64 20 73 65  d integer and se
17ad0 74 73 20 74 68 65 20 22 4d 69 6e 69 6d 75 6d 20  ts the "Minimum 
17ae0 50 4d 41 20 53 69 7a 65 22 20 66 6f 72 20 74 68  PMA Size" for th
17af0 65 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a  e multithreaded.
17b00 2a 2a 20 73 6f 72 74 65 72 20 74 6f 20 74 68 61  ** sorter to tha
17b10 74 20 69 6e 74 65 67 65 72 2e 20 20 54 68 65 20  t integer.  The 
17b20 64 65 66 61 75 6c 74 20 6d 69 6e 69 6d 75 6d 20  default minimum 
17b30 50 4d 41 20 53 69 7a 65 20 69 73 20 73 65 74 20  PMA Size is set 
17b40 62 79 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  by the.** [SQLIT
17b50 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 5d 20  E_SORTER_PMASZ] 
17b60 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
17b70 69 6f 6e 2e 20 20 4e 65 77 20 74 68 72 65 61 64  ion.  New thread
17b80 73 20 61 72 65 20 6c 61 75 6e 63 68 65 64 0a 2a  s are launched.*
17b90 2a 20 74 6f 20 68 65 6c 70 20 77 69 74 68 20 73  * to help with s
17ba0 6f 72 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 77  ort operations w
17bb0 68 65 6e 20 6d 75 6c 74 69 74 68 72 65 61 64 65  hen multithreade
17bc0 64 20 73 6f 72 74 69 6e 67 0a 2a 2a 20 69 73 20  d sorting.** is 
17bd0 65 6e 61 62 6c 65 64 20 28 75 73 69 6e 67 20 74  enabled (using t
17be0 68 65 20 5b 50 52 41 47 4d 41 20 74 68 72 65 61  he [PRAGMA threa
17bf0 64 73 5d 20 63 6f 6d 6d 61 6e 64 29 20 61 6e 64  ds] command) and
17c00 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 63   the amount of c
17c10 6f 6e 74 65 6e 74 0a 2a 2a 20 74 6f 20 62 65 20  ontent.** to be 
17c20 73 6f 72 74 65 64 20 65 78 63 65 65 64 73 20 74  sorted exceeds t
17c30 68 65 20 70 61 67 65 20 73 69 7a 65 20 74 69 6d  he page size tim
17c40 65 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6f  es the minimum o
17c50 66 20 74 68 65 0a 2a 2a 20 5b 50 52 41 47 4d 41  f the.** [PRAGMA
17c60 20 63 61 63 68 65 5f 73 69 7a 65 5d 20 73 65 74   cache_size] set
17c70 74 69 6e 67 20 61 6e 64 20 74 68 69 73 20 76 61  ting and this va
17c80 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  lue..**.** [[SQL
17c90 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a  ITE_CONFIG_STMTJ
17ca0 52 4e 4c 5f 53 50 49 4c 4c 5d 5d 0a 2a 2a 20 3c  RNL_SPILL]].** <
17cb0 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
17cc0 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 0a  _STMTJRNL_SPILL.
17cd0 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49  ** <dd>^The SQLI
17ce0 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52  TE_CONFIG_STMTJR
17cf0 4e 4c 5f 53 50 49 4c 4c 20 6f 70 74 69 6f 6e 20  NL_SPILL option 
17d00 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 70  takes a single p
17d10 61 72 61 6d 65 74 65 72 20 77 68 69 63 68 0a 2a  arameter which.*
17d20 2a 20 62 65 63 6f 6d 65 73 20 74 68 65 20 5b 73  * becomes the [s
17d30 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c  tatement journal
17d40 5d 20 73 70 69 6c 6c 2d 74 6f 2d 64 69 73 6b 20  ] spill-to-disk 
17d50 74 68 72 65 73 68 6f 6c 64 2e 20 20 0a 2a 2a 20  threshold.  .** 
17d60 5b 53 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e  [Statement journ
17d70 61 6c 73 5d 20 61 72 65 20 68 65 6c 64 20 69 6e  als] are held in
17d80 20 6d 65 6d 6f 72 79 20 75 6e 74 69 6c 20 74 68   memory until th
17d90 65 69 72 20 73 69 7a 65 20 28 69 6e 20 62 79 74  eir size (in byt
17da0 65 73 29 0a 2a 2a 20 65 78 63 65 65 64 73 20 74  es).** exceeds t
17db0 68 69 73 20 74 68 72 65 73 68 6f 6c 64 2c 20 61  his threshold, a
17dc0 74 20 77 68 69 63 68 20 70 6f 69 6e 74 20 74 68  t which point th
17dd0 65 79 20 61 72 65 20 77 72 69 74 74 65 6e 20 74  ey are written t
17de0 6f 20 64 69 73 6b 2e 0a 2a 2a 20 4f 72 20 69 66  o disk..** Or if
17df0 20 74 68 65 20 74 68 72 65 73 68 6f 6c 64 20 69   the threshold i
17e00 73 20 2d 31 2c 20 73 74 61 74 65 6d 65 6e 74 20  s -1, statement 
17e10 6a 6f 75 72 6e 61 6c 73 20 61 72 65 20 61 6c 77  journals are alw
17e20 61 79 73 20 68 65 6c 64 0a 2a 2a 20 65 78 63 6c  ays held.** excl
17e30 75 73 69 76 65 6c 79 20 69 6e 20 6d 65 6d 6f 72  usively in memor
17e40 79 2e 0a 2a 2a 20 53 69 6e 63 65 20 6d 61 6e 79  y..** Since many
17e50 20 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e   statement journ
17e60 61 6c 73 20 6e 65 76 65 72 20 62 65 63 6f 6d 65  als never become
17e70 20 6c 61 72 67 65 2c 20 73 65 74 74 69 6e 67 20   large, setting 
17e80 74 68 65 20 73 70 69 6c 6c 0a 2a 2a 20 74 68 72  the spill.** thr
17e90 65 73 68 6f 6c 64 20 74 6f 20 61 20 76 61 6c 75  eshold to a valu
17ea0 65 20 73 75 63 68 20 61 73 20 36 34 4b 69 42 20  e such as 64KiB 
17eb0 63 61 6e 20 67 72 65 61 74 6c 79 20 72 65 64 75  can greatly redu
17ec0 63 65 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  ce the amount of
17ed0 0a 2a 2a 20 49 2f 4f 20 72 65 71 75 69 72 65 64  .** I/O required
17ee0 20 74 6f 20 73 75 70 70 6f 72 74 20 73 74 61 74   to support stat
17ef0 65 6d 65 6e 74 20 72 6f 6c 6c 62 61 63 6b 2e 0a  ement rollback..
17f00 2a 2a 20 54 68 65 20 64 65 66 61 75 6c 74 20 76  ** The default v
17f10 61 6c 75 65 20 66 6f 72 20 74 68 69 73 20 73 65  alue for this se
17f20 74 74 69 6e 67 20 69 73 20 63 6f 6e 74 72 6f 6c  tting is control
17f30 6c 65 64 20 62 79 20 74 68 65 0a 2a 2a 20 5b 53  led by the.** [S
17f40 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53  QLITE_STMTJRNL_S
17f50 50 49 4c 4c 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  PILL] compile-ti
17f60 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a  me option..**.**
17f70 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
17f80 5f 53 4f 52 54 45 52 52 45 46 5f 53 49 5a 45 5d  _SORTERREF_SIZE]
17f90 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
17fa0 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52 52 45 46  CONFIG_SORTERREF
17fb0 5f 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e 54 68 65  _SIZE.** <dd>The
17fc0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53   SQLITE_CONFIG_S
17fd0 4f 52 54 45 52 52 45 46 5f 53 49 5a 45 20 6f 70  ORTERREF_SIZE op
17fe0 74 69 6f 6e 20 61 63 63 65 70 74 73 20 61 20 73  tion accepts a s
17ff0 69 6e 67 6c 65 20 70 61 72 61 6d 65 74 65 72 0a  ingle parameter.
18000 2a 2a 20 6f 66 20 74 79 70 65 20 28 69 6e 74 29  ** of type (int)
18010 20 2d 20 74 68 65 20 6e 65 77 20 76 61 6c 75 65   - the new value
18020 20 6f 66 20 74 68 65 20 73 6f 72 74 65 72 2d 72   of the sorter-r
18030 65 66 65 72 65 6e 63 65 20 73 69 7a 65 20 74 68  eference size th
18040 72 65 73 68 6f 6c 64 2e 0a 2a 2a 20 55 73 75 61  reshold..** Usua
18050 6c 6c 79 2c 20 77 68 65 6e 20 53 51 4c 69 74 65  lly, when SQLite
18060 20 75 73 65 73 20 61 6e 20 65 78 74 65 72 6e 61   uses an externa
18070 6c 20 73 6f 72 74 20 74 6f 20 6f 72 64 65 72 20  l sort to order 
18080 72 65 63 6f 72 64 73 20 61 63 63 6f 72 64 69 6e  records accordin
18090 67 0a 2a 2a 20 74 6f 20 61 6e 20 4f 52 44 45 52  g.** to an ORDER
180a0 20 42 59 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20   BY clause, all 
180b0 66 69 65 6c 64 73 20 72 65 71 75 69 72 65 64 20  fields required 
180c0 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20 61 72  by the caller ar
180d0 65 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65  e present in the
180e0 0a 2a 2a 20 73 6f 72 74 65 64 20 72 65 63 6f 72  .** sorted recor
180f0 64 73 2e 20 48 6f 77 65 76 65 72 2c 20 69 66 20  ds. However, if 
18100 53 51 4c 69 74 65 20 64 65 74 65 72 6d 69 6e 65  SQLite determine
18110 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 64  s based on the d
18120 65 63 6c 61 72 65 64 20 74 79 70 65 0a 2a 2a 20  eclared type.** 
18130 6f 66 20 61 20 74 61 62 6c 65 20 63 6f 6c 75 6d  of a table colum
18140 6e 20 74 68 61 74 20 69 74 73 20 76 61 6c 75 65  n that its value
18150 73 20 61 72 65 20 6c 69 6b 65 6c 79 20 74 6f 20  s are likely to 
18160 62 65 20 76 65 72 79 20 6c 61 72 67 65 20 2d 20  be very large - 
18170 6c 61 72 67 65 72 0a 2a 2a 20 74 68 61 6e 20 74  larger.** than t
18180 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20 73 6f  he configured so
18190 72 74 65 72 2d 72 65 66 65 72 65 6e 63 65 20 73  rter-reference s
181a0 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20 2d 20  ize threshold - 
181b0 74 68 65 6e 20 61 20 72 65 66 65 72 65 6e 63 65  then a reference
181c0 0a 2a 2a 20 69 73 20 73 74 6f 72 65 64 20 69 6e  .** is stored in
181d0 20 65 61 63 68 20 73 6f 72 74 65 64 20 72 65 63   each sorted rec
181e0 6f 72 64 20 61 6e 64 20 74 68 65 20 72 65 71 75  ord and the requ
181f0 69 72 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75  ired column valu
18200 65 73 20 6c 6f 61 64 65 64 0a 2a 2a 20 66 72 6f  es loaded.** fro
18210 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  m the database a
18220 73 20 72 65 63 6f 72 64 73 20 61 72 65 20 72 65  s records are re
18230 74 75 72 6e 65 64 20 69 6e 20 73 6f 72 74 65 64  turned in sorted
18240 20 6f 72 64 65 72 2e 20 54 68 65 20 64 65 66 61   order. The defa
18250 75 6c 74 0a 2a 2a 20 76 61 6c 75 65 20 66 6f 72  ult.** value for
18260 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
18270 74 6f 20 6e 65 76 65 72 20 75 73 65 20 74 68 69  to never use thi
18280 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 20  s optimization. 
18290 53 70 65 63 69 66 79 69 6e 67 20 61 20 0a 2a 2a  Specifying a .**
182a0 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75 65 20   negative value 
182b0 66 6f 72 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  for this option 
182c0 72 65 73 74 6f 72 65 73 20 74 68 65 20 64 65 66  restores the def
182d0 61 75 6c 74 20 62 65 68 61 76 69 6f 75 72 2e 0a  ault behaviour..
182e0 2a 2a 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  ** This option i
182f0 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
18300 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f   if SQLite is co
18310 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 0a  mpiled with the.
18320 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ** [SQLITE_ENABL
18330 45 5f 53 4f 52 54 45 52 5f 52 45 46 45 52 45 4e  E_SORTER_REFEREN
18340 43 45 53 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  CES] compile-tim
18350 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 20 3c 2f 64  e option..** </d
18360 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  l>.*/.#define SQ
18370 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47  LITE_CONFIG_SING
18380 4c 45 54 48 52 45 41 44 20 20 31 20 20 2f 2a 20  LETHREAD  1  /* 
18390 6e 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nil */.#define S
183a0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c  QLITE_CONFIG_MUL
183b0 54 49 54 48 52 45 41 44 20 20 20 32 20 20 2f 2a  TITHREAD   2  /*
183c0 20 6e 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20   nil */.#define 
183d0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45  SQLITE_CONFIG_SE
183e0 52 49 41 4c 49 5a 45 44 20 20 20 20 33 20 20 2f  RIALIZED    3  /
183f0 2a 20 6e 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65  * nil */.#define
18400 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
18410 41 4c 4c 4f 43 20 20 20 20 20 20 20 20 34 20 20  ALLOC        4  
18420 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  /* sqlite3_mem_m
18430 65 74 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69  ethods* */.#defi
18440 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
18450 5f 47 45 54 4d 41 4c 4c 4f 43 20 20 20 20 20 35  _GETMALLOC     5
18460 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 65 6d    /* sqlite3_mem
18470 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a 23 64 65  _methods* */.#de
18480 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
18490 49 47 5f 53 43 52 41 54 43 48 20 20 20 20 20 20  IG_SCRATCH      
184a0 20 36 20 20 2f 2a 20 4e 6f 20 6c 6f 6e 67 65 72   6  /* No longer
184b0 20 75 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65   used */.#define
184c0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50   SQLITE_CONFIG_P
184d0 41 47 45 43 41 43 48 45 20 20 20 20 20 37 20 20  AGECACHE     7  
184e0 2f 2a 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73 7a  /* void*, int sz
184f0 2c 20 69 6e 74 20 4e 20 2a 2f 0a 23 64 65 66 69  , int N */.#defi
18500 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
18510 5f 48 45 41 50 20 20 20 20 20 20 20 20 20 20 38  _HEAP          8
18520 20 20 2f 2a 20 76 6f 69 64 2a 2c 20 69 6e 74 20    /* void*, int 
18530 6e 42 79 74 65 2c 20 69 6e 74 20 6d 69 6e 20 2a  nByte, int min *
18540 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
18550 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55  _CONFIG_MEMSTATU
18560 53 20 20 20 20 20 39 20 20 2f 2a 20 62 6f 6f 6c  S     9  /* bool
18570 65 61 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ean */.#define S
18580 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54  QLITE_CONFIG_MUT
18590 45 58 20 20 20 20 20 20 20 20 31 30 20 20 2f 2a  EX        10  /*
185a0 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d   sqlite3_mutex_m
185b0 65 74 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69  ethods* */.#defi
185c0 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
185d0 5f 47 45 54 4d 55 54 45 58 20 20 20 20 20 31 31  _GETMUTEX     11
185e0 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 75 74    /* sqlite3_mut
185f0 65 78 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a 2f  ex_methods* */./
18600 2a 20 70 72 65 76 69 6f 75 73 6c 79 20 53 51 4c  * previously SQL
18610 49 54 45 5f 43 4f 4e 46 49 47 5f 43 48 55 4e 4b  ITE_CONFIG_CHUNK
18620 41 4c 4c 4f 43 20 31 32 20 77 68 69 63 68 20 69  ALLOC 12 which i
18630 73 20 6e 6f 77 20 75 6e 75 73 65 64 2e 20 2a 2f  s now unused. */
18640 20 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45   .#define SQLITE
18650 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44  _CONFIG_LOOKASID
18660 45 20 20 20 20 31 33 20 20 2f 2a 20 69 6e 74 20  E    13  /* int 
18670 69 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  int */.#define S
18680 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41  QLITE_CONFIG_PCA
18690 43 48 45 20 20 20 20 20 20 20 31 34 20 20 2f 2a  CHE       14  /*
186a0 20 6e 6f 2d 6f 70 20 2a 2f 0a 23 64 65 66 69 6e   no-op */.#defin
186b0 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
186c0 47 45 54 50 43 41 43 48 45 20 20 20 20 31 35 20  GETPCACHE    15 
186d0 20 2f 2a 20 6e 6f 2d 6f 70 20 2a 2f 0a 23 64 65   /* no-op */.#de
186e0 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
186f0 49 47 5f 4c 4f 47 20 20 20 20 20 20 20 20 20 20  IG_LOG          
18700 31 36 20 20 2f 2a 20 78 46 75 6e 63 2c 20 76 6f  16  /* xFunc, vo
18710 69 64 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  id* */.#define S
18720 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49  QLITE_CONFIG_URI
18730 20 20 20 20 20 20 20 20 20 20 31 37 20 20 2f 2a            17  /*
18740 20 69 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20   int */.#define 
18750 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
18760 41 43 48 45 32 20 20 20 20 20 20 31 38 20 20 2f  ACHE2      18  /
18770 2a 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65  * sqlite3_pcache
18780 5f 6d 65 74 68 6f 64 73 32 2a 20 2a 2f 0a 23 64  _methods2* */.#d
18790 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
187a0 46 49 47 5f 47 45 54 50 43 41 43 48 45 32 20 20  FIG_GETPCACHE2  
187b0 20 31 39 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f   19  /* sqlite3_
187c0 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 2a  pcache_methods2*
187d0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
187e0 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49  TE_CONFIG_COVERI
187f0 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 20 32 30  NG_INDEX_SCAN 20
18800 20 20 2f 2a 20 69 6e 74 20 2a 2f 0a 23 64 65 66    /* int */.#def
18810 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
18820 47 5f 53 51 4c 4c 4f 47 20 20 20 20 20 20 20 32  G_SQLLOG       2
18830 31 20 20 2f 2a 20 78 53 71 6c 6c 6f 67 2c 20 76  1  /* xSqllog, v
18840 6f 69 64 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  oid* */.#define 
18850 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d  SQLITE_CONFIG_MM
18860 41 50 5f 53 49 5a 45 20 20 20 20 32 32 20 20 2f  AP_SIZE    22  /
18870 2a 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 2c  * sqlite3_int64,
18880 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 2a   sqlite3_int64 *
18890 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
188a0 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45  _CONFIG_WIN32_HE
188b0 41 50 53 49 5a 45 20 20 20 20 20 20 32 33 20 20  APSIZE      23  
188c0 2f 2a 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f 0a  /* int nByte */.
188d0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
188e0 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52  ONFIG_PCACHE_HDR
188f0 53 5a 20 20 20 20 20 20 20 20 32 34 20 20 2f 2a  SZ        24  /*
18900 20 69 6e 74 20 2a 70 73 7a 20 2a 2f 0a 23 64 65   int *psz */.#de
18910 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
18920 49 47 5f 50 4d 41 53 5a 20 20 20 20 20 20 20 20  IG_PMASZ        
18930 20 20 20 20 20 20 20 32 35 20 20 2f 2a 20 75 6e         25  /* un
18940 73 69 67 6e 65 64 20 69 6e 74 20 73 7a 50 6d 61  signed int szPma
18950 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
18960 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52  TE_CONFIG_STMTJR
18970 4e 4c 5f 53 50 49 4c 4c 20 20 20 20 20 20 32 36  NL_SPILL      26
18980 20 20 2f 2a 20 69 6e 74 20 6e 42 79 74 65 20 2a    /* int nByte *
18990 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
189a0 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41  _CONFIG_SMALL_MA
189b0 4c 4c 4f 43 20 20 20 20 20 20 20 20 32 37 20 20  LLOC        27  
189c0 2f 2a 20 62 6f 6f 6c 65 61 6e 20 2a 2f 0a 23 64  /* boolean */.#d
189d0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
189e0 46 49 47 5f 53 4f 52 54 45 52 52 45 46 5f 53 49  FIG_SORTERREF_SI
189f0 5a 45 20 20 20 20 20 20 32 38 20 20 2f 2a 20 69  ZE      28  /* i
18a00 6e 74 20 6e 42 79 74 65 20 2a 2f 0a 0a 2f 2a 0a  nt nByte */../*.
18a10 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 61 74  ** CAPI3REF: Dat
18a20 61 62 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e  abase Connection
18a30 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 4f   Configuration O
18a40 70 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65  ptions.**.** The
18a50 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65  se constants are
18a60 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 69   the available i
18a70 6e 74 65 67 65 72 20 63 6f 6e 66 69 67 75 72 61  nteger configura
18a80 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 74 68 61  tion options tha
18a90 74 0a 2a 2a 20 63 61 6e 20 62 65 20 70 61 73 73  t.** can be pass
18aa0 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64  ed as the second
18ab0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65   argument to the
18ac0 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   [sqlite3_db_con
18ad0 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65  fig()] interface
18ae0 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 63 6f 6e 66  ..**.** New conf
18af0 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
18b00 73 20 6d 61 79 20 62 65 20 61 64 64 65 64 20 69  s may be added i
18b10 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  n future release
18b20 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 20  s of SQLite..** 
18b30 45 78 69 73 74 69 6e 67 20 63 6f 6e 66 69 67 75  Existing configu
18b40 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d  ration options m
18b50 69 67 68 74 20 62 65 20 64 69 73 63 6f 6e 74 69  ight be disconti
18b60 6e 75 65 64 2e 20 20 41 70 70 6c 69 63 61 74 69  nued.  Applicati
18b70 6f 6e 73 0a 2a 2a 20 73 68 6f 75 6c 64 20 63 68  ons.** should ch
18b80 65 63 6b 20 74 68 65 20 72 65 74 75 72 6e 20 63  eck the return c
18b90 6f 64 65 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65  ode from [sqlite
18ba0 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 74  3_db_config()] t
18bb0 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74  o make sure that
18bc0 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 20 77 6f 72  .** the call wor
18bd0 6b 65 64 2e 20 20 5e 54 68 65 20 5b 73 71 6c 69  ked.  ^The [sqli
18be0 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d  te3_db_config()]
18bf0 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c 20   interface will 
18c00 72 65 74 75 72 6e 20 61 0a 2a 2a 20 6e 6f 6e 2d  return a.** non-
18c10 7a 65 72 6f 20 5b 65 72 72 6f 72 20 63 6f 64 65  zero [error code
18c20 5d 20 69 66 20 61 20 64 69 73 63 6f 6e 74 69 6e  ] if a discontin
18c30 75 65 64 20 6f 72 20 75 6e 73 75 70 70 6f 72 74  ued or unsupport
18c40 65 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ed configuration
18c50 20 6f 70 74 69 6f 6e 0a 2a 2a 20 69 73 20 69 6e   option.** is in
18c60 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c  voked..**.** <dl
18c70 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42  >.** [[SQLITE_DB
18c80 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
18c90 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  ]].** <dt>SQLITE
18ca0 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  _DBCONFIG_LOOKAS
18cb0 49 44 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  IDE</dt>.** <dd>
18cc0 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 74 61   ^This option ta
18cd0 6b 65 73 20 74 68 72 65 65 20 61 64 64 69 74 69  kes three additi
18ce0 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 20 74  onal arguments t
18cf0 68 61 74 20 64 65 74 65 72 6d 69 6e 65 20 74 68  hat determine th
18d00 65 20 0a 2a 2a 20 5b 6c 6f 6f 6b 61 73 69 64 65  e .** [lookaside
18d10 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
18d20 72 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  r] configuration
18d30 20 66 6f 72 20 74 68 65 20 5b 64 61 74 61 62 61   for the [databa
18d40 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a  se connection]..
18d50 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61 72  ** ^The first ar
18d60 67 75 6d 65 6e 74 20 28 74 68 65 20 74 68 69 72  gument (the thir
18d70 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 5b  d parameter to [
18d80 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
18d90 67 28 29 5d 20 69 73 20 61 0a 2a 2a 20 70 6f 69  g()] is a.** poi
18da0 6e 74 65 72 20 74 6f 20 61 20 6d 65 6d 6f 72 79  nter to a memory
18db0 20 62 75 66 66 65 72 20 74 6f 20 75 73 65 20 66   buffer to use f
18dc0 6f 72 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d  or lookaside mem
18dd0 6f 72 79 2e 0a 2a 2a 20 5e 54 68 65 20 66 69 72  ory..** ^The fir
18de0 73 74 20 61 72 67 75 6d 65 6e 74 20 61 66 74 65  st argument afte
18df0 72 20 74 68 65 20 53 51 4c 49 54 45 5f 44 42 43  r the SQLITE_DBC
18e00 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20  ONFIG_LOOKASIDE 
18e10 76 65 72 62 0a 2a 2a 20 6d 61 79 20 62 65 20 4e  verb.** may be N
18e20 55 4c 4c 20 69 6e 20 77 68 69 63 68 20 63 61 73  ULL in which cas
18e30 65 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c  e SQLite will al
18e40 6c 6f 63 61 74 65 20 74 68 65 0a 2a 2a 20 6c 6f  locate the.** lo
18e50 6f 6b 61 73 69 64 65 20 62 75 66 66 65 72 20 69  okaside buffer i
18e60 74 73 65 6c 66 20 75 73 69 6e 67 20 5b 73 71 6c  tself using [sql
18e70 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2e 20  ite3_malloc()]. 
18e80 5e 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75  ^The second argu
18e90 6d 65 6e 74 20 69 73 20 74 68 65 0a 2a 2a 20 73  ment is the.** s
18ea0 69 7a 65 20 6f 66 20 65 61 63 68 20 6c 6f 6f 6b  ize of each look
18eb0 61 73 69 64 65 20 62 75 66 66 65 72 20 73 6c 6f  aside buffer slo
18ec0 74 2e 20 20 5e 54 68 65 20 74 68 69 72 64 20 61  t.  ^The third a
18ed0 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 6e  rgument is the n
18ee0 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 73 6c 6f 74  umber of.** slot
18ef0 73 2e 20 20 54 68 65 20 73 69 7a 65 20 6f 66 20  s.  The size of 
18f00 74 68 65 20 62 75 66 66 65 72 20 69 6e 20 74 68  the buffer in th
18f10 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
18f20 20 6d 75 73 74 20 62 65 20 67 72 65 61 74 65 72   must be greater
18f30 20 74 68 61 6e 0a 2a 2a 20 6f 72 20 65 71 75 61   than.** or equa
18f40 6c 20 74 6f 20 74 68 65 20 70 72 6f 64 75 63 74  l to the product
18f50 20 6f 66 20 74 68 65 20 73 65 63 6f 6e 64 20 61   of the second a
18f60 6e 64 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e  nd third argumen
18f70 74 73 2e 20 20 54 68 65 20 62 75 66 66 65 72 0a  ts.  The buffer.
18f80 2a 2a 20 6d 75 73 74 20 62 65 20 61 6c 69 67 6e  ** must be align
18f90 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 20  ed to an 8-byte 
18fa0 62 6f 75 6e 64 61 72 79 2e 20 20 5e 49 66 20 74  boundary.  ^If t
18fb0 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
18fc0 6e 74 20 74 6f 0a 2a 2a 20 53 51 4c 49 54 45 5f  nt to.** SQLITE_
18fd0 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49  DBCONFIG_LOOKASI
18fe0 44 45 20 69 73 20 6e 6f 74 20 61 20 6d 75 6c 74  DE is not a mult
18ff0 69 70 6c 65 20 6f 66 20 38 2c 20 69 74 20 69 73  iple of 8, it is
19000 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 2a 2a 20 72   internally.** r
19010 6f 75 6e 64 65 64 20 64 6f 77 6e 20 74 6f 20 74  ounded down to t
19020 68 65 20 6e 65 78 74 20 73 6d 61 6c 6c 65 72 20  he next smaller 
19030 6d 75 6c 74 69 70 6c 65 20 6f 66 20 38 2e 20 20  multiple of 8.  
19040 5e 28 54 68 65 20 6c 6f 6f 6b 61 73 69 64 65 20  ^(The lookaside 
19050 6d 65 6d 6f 72 79 0a 2a 2a 20 63 6f 6e 66 69 67  memory.** config
19060 75 72 61 74 69 6f 6e 20 66 6f 72 20 61 20 64 61  uration for a da
19070 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
19080 6e 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 63 68  n can only be ch
19090 61 6e 67 65 64 20 77 68 65 6e 20 74 68 61 74 0a  anged when that.
190a0 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  ** connection is
190b0 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75   not currently u
190c0 73 69 6e 67 20 6c 6f 6f 6b 61 73 69 64 65 20 6d  sing lookaside m
190d0 65 6d 6f 72 79 2c 20 6f 72 20 69 6e 20 6f 74 68  emory, or in oth
190e0 65 72 20 77 6f 72 64 73 0a 2a 2a 20 77 68 65 6e  er words.** when
190f0 20 74 68 65 20 22 63 75 72 72 65 6e 74 20 76 61   the "current va
19100 6c 75 65 22 20 72 65 74 75 72 6e 65 64 20 62 79  lue" returned by
19110 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f  .** [sqlite3_db_
19120 73 74 61 74 75 73 5d 28 44 2c 5b 53 51 4c 49 54  status](D,[SQLIT
19130 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49  E_CONFIG_LOOKASI
19140 44 45 5d 2c 2e 2e 2e 29 20 69 73 20 7a 65 72 6f  DE],...) is zero
19150 2e 0a 2a 2a 20 41 6e 79 20 61 74 74 65 6d 70 74  ..** Any attempt
19160 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 6c   to change the l
19170 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20  ookaside memory 
19180 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 77 68  configuration wh
19190 65 6e 20 6c 6f 6f 6b 61 73 69 64 65 0a 2a 2a 20  en lookaside.** 
191a0 6d 65 6d 6f 72 79 20 69 73 20 69 6e 20 75 73 65  memory is in use
191b0 20 6c 65 61 76 65 73 20 74 68 65 20 63 6f 6e 66   leaves the conf
191c0 69 67 75 72 61 74 69 6f 6e 20 75 6e 63 68 61 6e  iguration unchan
191d0 67 65 64 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ged and returns 
191e0 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  .** [SQLITE_BUSY
191f0 5d 2e 29 5e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  ].)^</dd>.**.** 
19200 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  [[SQLITE_DBCONFI
19210 47 5f 45 4e 41 42 4c 45 5f 46 4b 45 59 5d 5d 0a  G_ENABLE_FKEY]].
19220 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42  ** <dt>SQLITE_DB
19230 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 4b  CONFIG_ENABLE_FK
19240 45 59 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  EY</dt>.** <dd> 
19250 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20  ^This option is 
19260 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f  used to enable o
19270 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 65 6e  r disable the en
19280 66 6f 72 63 65 6d 65 6e 74 20 6f 66 0a 2a 2a 20  forcement of.** 
19290 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e  [foreign key con
192a0 73 74 72 61 69 6e 74 73 5d 2e 20 20 54 68 65 72  straints].  Ther
192b0 65 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20  e should be two 
192c0 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d  additional argum
192d0 65 6e 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72  ents..** The fir
192e0 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  st argument is a
192f0 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63 68 20  n integer which 
19300 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20  is 0 to disable 
19310 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 2c 0a  FK enforcement,.
19320 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f 20 65  ** positive to e
19330 6e 61 62 6c 65 20 46 4b 20 65 6e 66 6f 72 63 65  nable FK enforce
19340 6d 65 6e 74 20 6f 72 20 6e 65 67 61 74 69 76 65  ment or negative
19350 20 74 6f 20 6c 65 61 76 65 20 46 4b 20 65 6e 66   to leave FK enf
19360 6f 72 63 65 6d 65 6e 74 0a 2a 2a 20 75 6e 63 68  orcement.** unch
19370 61 6e 67 65 64 2e 20 20 54 68 65 20 73 65 63 6f  anged.  The seco
19380 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  nd parameter is 
19390 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  a pointer to an 
193a0 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69  integer into whi
193b0 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e  ch.** is written
193c0 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63   0 or 1 to indic
193d0 61 74 65 20 77 68 65 74 68 65 72 20 46 4b 20 65  ate whether FK e
193e0 6e 66 6f 72 63 65 6d 65 6e 74 20 69 73 20 6f 66  nforcement is of
193f0 66 20 6f 72 20 6f 6e 0a 2a 2a 20 66 6f 6c 6c 6f  f or on.** follo
19400 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20  wing this call. 
19410 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
19420 6d 65 74 65 72 20 6d 61 79 20 62 65 20 61 20 4e  meter may be a N
19430 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a  ULL pointer, in.
19440 2a 2a 20 77 68 69 63 68 20 63 61 73 65 20 74 68  ** which case th
19450 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74  e FK enforcement
19460 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f 74 20   setting is not 
19470 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e 20 3c  reported back. <
19480 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
19490 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41  ITE_DBCONFIG_ENA
194a0 42 4c 45 5f 54 52 49 47 47 45 52 5d 5d 0a 2a 2a  BLE_TRIGGER]].**
194b0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
194c0 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 54 52 49 47  NFIG_ENABLE_TRIG
194d0 47 45 52 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  GER</dt>.** <dd>
194e0 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73   ^This option is
194f0 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
19500 6f 72 20 64 69 73 61 62 6c 65 20 5b 43 52 45 41  or disable [CREA
19510 54 45 20 54 52 49 47 47 45 52 20 7c 20 74 72 69  TE TRIGGER | tri
19520 67 67 65 72 73 5d 2e 0a 2a 2a 20 54 68 65 72 65  ggers]..** There
19530 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61   should be two a
19540 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65  dditional argume
19550 6e 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73  nts..** The firs
19560 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e  t argument is an
19570 20 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69   integer which i
19580 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 74  s 0 to disable t
19590 72 69 67 67 65 72 73 2c 0a 2a 2a 20 70 6f 73 69  riggers,.** posi
195a0 74 69 76 65 20 74 6f 20 65 6e 61 62 6c 65 20 74  tive to enable t
195b0 72 69 67 67 65 72 73 20 6f 72 20 6e 65 67 61 74  riggers or negat
195c0 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68 65  ive to leave the
195d0 20 73 65 74 74 69 6e 67 20 75 6e 63 68 61 6e 67   setting unchang
195e0 65 64 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e  ed..** The secon
195f0 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  d parameter is a
19600 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
19610 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63  nteger into whic
19620 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20  h.** is written 
19630 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61  0 or 1 to indica
19640 74 65 20 77 68 65 74 68 65 72 20 74 72 69 67 67  te whether trigg
19650 65 72 73 20 61 72 65 20 64 69 73 61 62 6c 65 64  ers are disabled
19660 20 6f 72 20 65 6e 61 62 6c 65 64 0a 2a 2a 20 66   or enabled.** f
19670 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61  ollowing this ca
19680 6c 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  ll.  The second 
19690 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65  parameter may be
196a0 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c   a NULL pointer,
196b0 20 69 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61 73   in.** which cas
196c0 65 20 74 68 65 20 74 72 69 67 67 65 72 20 73 65  e the trigger se
196d0 74 74 69 6e 67 20 69 73 20 6e 6f 74 20 72 65 70  tting is not rep
196e0 6f 72 74 65 64 20 62 61 63 6b 2e 20 3c 2f 64 64  orted back. </dd
196f0 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
19700 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
19710 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d  _FTS3_TOKENIZER]
19720 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
19730 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
19740 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 3c 2f  FTS3_TOKENIZER</
19750 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69  dt>.** <dd> ^Thi
19760 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
19770 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69   to enable or di
19780 73 61 62 6c 65 20 74 68 65 20 74 77 6f 2d 61 72  sable the two-ar
19790 67 75 6d 65 6e 74 0a 2a 2a 20 76 65 72 73 69 6f  gument.** versio
197a0 6e 20 6f 66 20 74 68 65 20 5b 66 74 73 33 5f 74  n of the [fts3_t
197b0 6f 6b 65 6e 69 7a 65 72 28 29 5d 20 66 75 6e 63  okenizer()] func
197c0 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61  tion which is pa
197d0 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 46 54  rt of the.** [FT
197e0 53 33 5d 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  S3] full-text se
197f0 61 72 63 68 20 65 6e 67 69 6e 65 20 65 78 74 65  arch engine exte
19800 6e 73 69 6f 6e 2e 0a 2a 2a 20 54 68 65 72 65 20  nsion..** There 
19810 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64  should be two ad
19820 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e  ditional argumen
19830 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ts..** The first
19840 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20   argument is an 
19850 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
19860 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 66 74   0 to disable ft
19870 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 6f  s3_tokenizer() o
19880 72 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f  r.** positive to
19890 20 65 6e 61 62 6c 65 20 66 74 73 33 5f 74 6f 6b   enable fts3_tok
198a0 65 6e 69 7a 65 72 28 29 20 6f 72 20 6e 65 67 61  enizer() or nega
198b0 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68  tive to leave th
198c0 65 20 73 65 74 74 69 6e 67 0a 2a 2a 20 75 6e 63  e setting.** unc
198d0 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73  hanged..** The s
198e0 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
198f0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
19900 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20  an integer into 
19910 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74  which.** is writ
19920 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
19930 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 66  dicate whether f
19940 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 20 69 73  ts3_tokenizer is
19950 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61   disabled or ena
19960 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  bled.** followin
19970 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68  g this call.  Th
19980 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
19990 65 72 20 6d 61 79 20 62 65 20 61 20 4e 55 4c 4c  er may be a NULL
199a0 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20   pointer, in.** 
199b0 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 6e  which case the n
199c0 65 77 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f  ew setting is no
199d0 74 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e  t reported back.
199e0 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
199f0 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
19a00 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e  NABLE_LOAD_EXTEN
19a10 53 49 4f 4e 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  SION]].** <dt>SQ
19a20 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
19a30 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53  ABLE_LOAD_EXTENS
19a40 49 4f 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  ION</dt>.** <dd>
19a50 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73   ^This option is
19a60 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
19a70 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 5b  or disable the [
19a80 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
19a90 65 6e 73 69 6f 6e 28 29 5d 0a 2a 2a 20 69 6e 74  ension()].** int
19aa0 65 72 66 61 63 65 20 69 6e 64 65 70 65 6e 64 65  erface independe
19ab0 6e 74 6c 79 20 6f 66 20 74 68 65 20 5b 6c 6f 61  ntly of the [loa
19ac0 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 53  d_extension()] S
19ad0 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20  QL function..** 
19ae0 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61  The [sqlite3_ena
19af0 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
19b00 6f 6e 28 29 5d 20 41 50 49 20 65 6e 61 62 6c 65  on()] API enable
19b10 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20 62 6f  s or disables bo
19b20 74 68 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20  th the.** C-API 
19b30 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78  [sqlite3_load_ex
19b40 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 20 74  tension()] and t
19b50 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20  he SQL function 
19b60 5b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  [load_extension(
19b70 29 5d 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68 6f  )]..** There sho
19b80 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69 74  uld be two addit
19b90 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e  ional arguments.
19ba0 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 66 69 72  .** When the fir
19bb0 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
19bc0 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 69 73  his interface is
19bd0 20 31 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68   1, then only th
19be0 65 20 43 2d 41 50 49 20 69 73 0a 2a 2a 20 65 6e  e C-API is.** en
19bf0 61 62 6c 65 64 20 61 6e 64 20 74 68 65 20 53 51  abled and the SQ
19c00 4c 20 66 75 6e 63 74 69 6f 6e 20 72 65 6d 61 69  L function remai
19c10 6e 73 20 64 69 73 61 62 6c 65 64 2e 20 20 49 66  ns disabled.  If
19c20 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
19c30 65 6e 74 20 74 6f 0a 2a 2a 20 74 68 69 73 20 69  ent to.** this i
19c40 6e 74 65 72 66 61 63 65 20 69 73 20 30 2c 20 74  nterface is 0, t
19c50 68 65 6e 20 62 6f 74 68 20 74 68 65 20 43 2d 41  hen both the C-A
19c60 50 49 20 61 6e 64 20 74 68 65 20 53 51 4c 20 66  PI and the SQL f
19c70 75 6e 63 74 69 6f 6e 20 61 72 65 20 64 69 73 61  unction are disa
19c80 62 6c 65 64 2e 0a 2a 2a 20 49 66 20 74 68 65 20  bled..** If the 
19c90 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
19ca0 73 20 2d 31 2c 20 74 68 65 6e 20 6e 6f 20 63 68  s -1, then no ch
19cb0 61 6e 67 65 73 20 61 72 65 20 6d 61 64 65 20 74  anges are made t
19cc0 6f 20 73 74 61 74 65 20 6f 66 20 65 69 74 68 65  o state of eithe
19cd0 72 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20 6f  r the.** C-API o
19ce0 72 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69  r the SQL functi
19cf0 6f 6e 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e  on..** The secon
19d00 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  d parameter is a
19d10 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
19d20 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63  nteger into whic
19d30 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20  h.** is written 
19d40 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61  0 or 1 to indica
19d50 74 65 20 77 68 65 74 68 65 72 20 5b 73 71 6c 69  te whether [sqli
19d60 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
19d70 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a  on()] interface.
19d80 2a 2a 20 69 73 20 64 69 73 61 62 6c 65 64 20 6f  ** is disabled o
19d90 72 20 65 6e 61 62 6c 65 64 20 66 6f 6c 6c 6f 77  r enabled follow
19da0 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20  ing this call.  
19db0 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
19dc0 65 74 65 72 20 6d 61 79 0a 2a 2a 20 62 65 20 61  eter may.** be a
19dd0 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69   NULL pointer, i
19de0 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65  n which case the
19df0 20 6e 65 77 20 73 65 74 74 69 6e 67 20 69 73 20   new setting is 
19e00 6e 6f 74 20 72 65 70 6f 72 74 65 64 20 62 61 63  not reported bac
19e10 6b 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  k..** </dd>.**.*
19e20 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  * [[SQLITE_DBCON
19e30 46 49 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 5d 5d  FIG_MAINDBNAME]]
19e40 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
19e50 4e 46 49 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 3c  NFIG_MAINDBNAME<
19e60 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
19e70 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
19e80 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  d to change the 
19e90 6e 61 6d 65 20 6f 66 20 74 68 65 20 22 6d 61 69  name of the "mai
19ea0 6e 22 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 73  n" database.** s
19eb0 63 68 65 6d 61 2e 20 20 5e 54 68 65 20 73 6f 6c  chema.  ^The sol
19ec0 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  e argument is a 
19ed0 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 63 6f 6e  pointer to a con
19ee0 73 74 61 6e 74 20 55 54 46 38 20 73 74 72 69 6e  stant UTF8 strin
19ef0 67 0a 2a 2a 20 77 68 69 63 68 20 77 69 6c 6c 20  g.** which will 
19f00 62 65 63 6f 6d 65 20 74 68 65 20 6e 65 77 20 73  become the new s
19f10 63 68 65 6d 61 20 6e 61 6d 65 20 69 6e 20 70 6c  chema name in pl
19f20 61 63 65 20 6f 66 20 22 6d 61 69 6e 22 2e 20 20  ace of "main".  
19f30 5e 53 51 4c 69 74 65 0a 2a 2a 20 64 6f 65 73 20  ^SQLite.** does 
19f40 6e 6f 74 20 6d 61 6b 65 20 61 20 63 6f 70 79 20  not make a copy 
19f50 6f 66 20 74 68 65 20 6e 65 77 20 6d 61 69 6e 20  of the new main 
19f60 73 63 68 65 6d 61 20 6e 61 6d 65 20 73 74 72 69  schema name stri
19f70 6e 67 2c 20 73 6f 20 74 68 65 20 61 70 70 6c 69  ng, so the appli
19f80 63 61 74 69 6f 6e 0a 2a 2a 20 6d 75 73 74 20 65  cation.** must e
19f90 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20 61  nsure that the a
19fa0 72 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20 69  rgument passed i
19fb0 6e 74 6f 20 74 68 69 73 20 44 42 43 4f 4e 46 49  nto this DBCONFI
19fc0 47 20 6f 70 74 69 6f 6e 20 69 73 20 75 6e 63 68  G option is unch
19fd0 61 6e 67 65 64 0a 2a 2a 20 75 6e 74 69 6c 20 61  anged.** until a
19fe0 66 74 65 72 20 74 68 65 20 64 61 74 61 62 61 73  fter the databas
19ff0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 6f  e connection clo
1a000 73 65 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a  ses..** </dd>.**
1a010 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43  .** [[SQLITE_DBC
1a020 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e  ONFIG_NO_CKPT_ON
1a030 5f 43 4c 4f 53 45 5d 5d 20 0a 2a 2a 20 3c 64 74  _CLOSE]] .** <dt
1a040 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  >SQLITE_DBCONFIG
1a050 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53  _NO_CKPT_ON_CLOS
1a060 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 55  E</dt>.** <dd> U
1a070 73 75 61 6c 6c 79 2c 20 77 68 65 6e 20 61 20 64  sually, when a d
1a080 61 74 61 62 61 73 65 20 69 6e 20 77 61 6c 20 6d  atabase in wal m
1a090 6f 64 65 20 69 73 20 63 6c 6f 73 65 64 20 6f 72  ode is closed or
1a0a0 20 64 65 74 61 63 68 65 64 20 66 72 6f 6d 20 61   detached from a
1a0b0 20 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 68 61   .** database ha
1a0c0 6e 64 6c 65 2c 20 53 51 4c 69 74 65 20 63 68 65  ndle, SQLite che
1a0d0 63 6b 73 20 69 66 20 74 68 69 73 20 77 69 6c 6c  cks if this will
1a0e0 20 6d 65 61 6e 20 74 68 61 74 20 74 68 65 72 65   mean that there
1a0f0 20 61 72 65 20 6e 6f 77 20 6e 6f 20 0a 2a 2a 20   are now no .** 
1a100 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 74 20 61  connections at a
1a110 6c 6c 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  ll to the databa
1a120 73 65 2e 20 49 66 20 73 6f 2c 20 69 74 20 70 65  se. If so, it pe
1a130 72 66 6f 72 6d 73 20 61 20 63 68 65 63 6b 70 6f  rforms a checkpo
1a140 69 6e 74 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f  int .** operatio
1a150 6e 20 62 65 66 6f 72 65 20 63 6c 6f 73 69 6e 67  n before closing
1a160 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
1a170 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79   This option may
1a180 20 62 65 20 75 73 65 64 20 74 6f 0a 2a 2a 20 6f   be used to.** o
1a190 76 65 72 72 69 64 65 20 74 68 69 73 20 62 65 68  verride this beh
1a1a0 61 76 69 6f 75 72 2e 20 54 68 65 20 66 69 72 73  aviour. The firs
1a1b0 74 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73  t parameter pass
1a1c0 65 64 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61  ed to this opera
1a1d0 74 69 6f 6e 0a 2a 2a 20 69 73 20 61 6e 20 69 6e  tion.** is an in
1a1e0 74 65 67 65 72 20 2d 20 70 6f 73 69 74 69 76 65  teger - positive
1a1f0 20 74 6f 20 64 69 73 61 62 6c 65 20 63 68 65 63   to disable chec
1a200 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73 65  kpoints-on-close
1a210 2c 20 6f 72 20 7a 65 72 6f 20 28 74 68 65 0a 2a  , or zero (the.*
1a220 2a 20 64 65 66 61 75 6c 74 29 20 74 6f 20 65 6e  * default) to en
1a230 61 62 6c 65 20 74 68 65 6d 2c 20 61 6e 64 20 6e  able them, and n
1a240 65 67 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65  egative to leave
1a250 20 74 68 65 20 73 65 74 74 69 6e 67 20 75 6e 63   the setting unc
1a260 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73  hanged..** The s
1a270 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
1a280 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
1a290 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 69 6e  an integer.** in
1a2a0 74 6f 20 77 68 69 63 68 20 69 73 20 77 72 69 74  to which is writ
1a2b0 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
1a2c0 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 63  dicate whether c
1a2d0 68 65 63 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c  heckpoints-on-cl
1a2e0 6f 73 65 0a 2a 2a 20 68 61 76 65 20 62 65 65 6e  ose.** have been
1a2f0 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20 69 66   disabled - 0 if
1a300 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20 64 69   they are not di
1a310 73 61 62 6c 65 64 2c 20 31 20 69 66 20 74 68 65  sabled, 1 if the
1a320 79 20 61 72 65 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a  y are..** </dd>.
1a330 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44  **.** [[SQLITE_D
1a340 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
1a350 50 53 47 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  PSG]] <dt>SQLITE
1a360 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
1a370 5f 51 50 53 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  _QPSG</dt>.** <d
1a380 64 3e 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 44  d>^(The SQLITE_D
1a390 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
1a3a0 50 53 47 20 6f 70 74 69 6f 6e 20 61 63 74 69 76  PSG option activ
1a3b0 61 74 65 73 20 6f 72 20 64 65 61 63 74 69 76 61  ates or deactiva
1a3c0 74 65 73 0a 2a 2a 20 74 68 65 20 5b 71 75 65 72  tes.** the [quer
1a3d0 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c  y planner stabil
1a3e0 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20 28  ity guarantee] (
1a3f0 51 50 53 47 29 2e 20 20 57 68 65 6e 20 74 68 65  QPSG).  When the
1a400 20 51 50 53 47 20 69 73 20 61 63 74 69 76 65 2c   QPSG is active,
1a410 0a 2a 2a 20 61 20 73 69 6e 67 6c 65 20 53 51 4c  .** a single SQL
1a420 20 71 75 65 72 79 20 73 74 61 74 65 6d 65 6e 74   query statement
1a430 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65   will always use
1a440 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f 72 69   the same algori
1a450 74 68 6d 20 72 65 67 61 72 64 6c 65 73 73 0a 2a  thm regardless.*
1a460 2a 20 6f 66 20 76 61 6c 75 65 73 20 6f 66 20 5b  * of values of [
1a470 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73  bound parameters
1a480 5d 2e 29 5e 20 54 68 65 20 51 50 53 47 20 64 69  ].)^ The QPSG di
1a490 73 61 62 6c 65 73 20 73 6f 6d 65 20 71 75 65 72  sables some quer
1a4a0 79 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 0a  y optimizations.
1a4b0 2a 2a 20 74 68 61 74 20 6c 6f 6f 6b 20 61 74 20  ** that look at 
1a4c0 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 62 6f  the values of bo
1a4d0 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20  und parameters, 
1a4e0 77 68 69 63 68 20 63 61 6e 20 6d 61 6b 65 20 73  which can make s
1a4f0 6f 6d 65 20 71 75 65 72 69 65 73 0a 2a 2a 20 73  ome queries.** s
1a500 6c 6f 77 65 72 2e 20 20 42 75 74 20 74 68 65 20  lower.  But the 
1a510 51 50 53 47 20 68 61 73 20 74 68 65 20 61 64 76  QPSG has the adv
1a520 61 6e 74 61 67 65 20 6f 66 20 6d 6f 72 65 20 70  antage of more p
1a530 72 65 64 69 63 74 61 62 6c 65 20 62 65 68 61 76  redictable behav
1a540 69 6f 72 2e 20 20 57 69 74 68 0a 2a 2a 20 74 68  ior.  With.** th
1a550 65 20 51 50 53 47 20 61 63 74 69 76 65 2c 20 53  e QPSG active, S
1a560 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 77 61 79  QLite will alway
1a570 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 71  s use the same q
1a580 75 65 72 79 20 70 6c 61 6e 20 69 6e 20 74 68 65  uery plan in the
1a590 20 66 69 65 6c 64 20 61 73 0a 2a 2a 20 77 61 73   field as.** was
1a5a0 20 75 73 65 64 20 64 75 72 69 6e 67 20 74 65 73   used during tes
1a5b0 74 69 6e 67 20 69 6e 20 74 68 65 20 6c 61 62 2e  ting in the lab.
1a5c0 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72  .** The first ar
1a5d0 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 73  gument to this s
1a5e0 65 74 74 69 6e 67 20 69 73 20 61 6e 20 69 6e 74  etting is an int
1a5f0 65 67 65 72 20 77 68 69 63 68 20 69 73 20 30 20  eger which is 0 
1a600 74 6f 20 64 69 73 61 62 6c 65 20 0a 2a 2a 20 74  to disable .** t
1a610 68 65 20 51 50 53 47 2c 20 70 6f 73 69 74 69 76  he QPSG, positiv
1a620 65 20 74 6f 20 65 6e 61 62 6c 65 20 51 50 53 47  e to enable QPSG
1a630 2c 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f  , or negative to
1a640 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69   leave the setti
1a650 6e 67 0a 2a 2a 20 75 6e 63 68 61 6e 67 65 64 2e  ng.** unchanged.
1a660 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
1a670 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
1a680 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
1a690 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69   into which.** i
1a6a0 73 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31  s written 0 or 1
1a6b0 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65   to indicate whe
1a6c0 74 68 65 72 20 74 68 65 20 51 50 53 47 20 69 73  ther the QPSG is
1a6d0 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61   disabled or ena
1a6e0 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  bled.** followin
1a6f0 67 20 74 68 69 73 20 63 61 6c 6c 2e 0a 2a 2a 20  g this call..** 
1a700 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
1a710 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 54 52  LITE_DBCONFIG_TR
1a720 49 47 47 45 52 5f 45 51 50 5d 5d 20 3c 64 74 3e  IGGER_EQP]] <dt>
1a730 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
1a740 54 52 49 47 47 45 52 5f 45 51 50 3c 2f 64 74 3e  TRIGGER_EQP</dt>
1a750 0a 2a 2a 20 3c 64 64 3e 20 42 79 20 64 65 66 61  .** <dd> By defa
1a760 75 6c 74 2c 20 74 68 65 20 6f 75 74 70 75 74 20  ult, the output 
1a770 6f 66 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59  of EXPLAIN QUERY
1a780 20 50 4c 41 4e 20 63 6f 6d 6d 61 6e 64 73 20 64   PLAN commands d
1a790 6f 65 73 20 6e 6f 74 20 0a 2a 2a 20 69 6e 63 6c  oes not .** incl
1a7a0 75 64 65 20 6f 75 74 70 75 74 20 66 6f 72 20 61  ude output for a
1a7b0 6e 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 70 65  ny operations pe
1a7c0 72 66 6f 72 6d 65 64 20 62 79 20 74 72 69 67 67  rformed by trigg
1a7d0 65 72 20 70 72 6f 67 72 61 6d 73 2e 20 54 68 69  er programs. Thi
1a7e0 73 0a 2a 2a 20 6f 70 74 69 6f 6e 20 69 73 20 75  s.** option is u
1a7f0 73 65 64 20 74 6f 20 73 65 74 20 6f 72 20 63 6c  sed to set or cl
1a800 65 61 72 20 28 74 68 65 20 64 65 66 61 75 6c 74  ear (the default
1a810 29 20 61 20 66 6c 61 67 20 74 68 61 74 20 67 6f  ) a flag that go
1a820 76 65 72 6e 73 20 74 68 69 73 0a 2a 2a 20 62 65  verns this.** be
1a830 68 61 76 69 6f 72 2e 20 54 68 65 20 66 69 72 73  havior. The firs
1a840 74 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73  t parameter pass
1a850 65 64 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61  ed to this opera
1a860 74 69 6f 6e 20 69 73 20 61 6e 20 69 6e 74 65 67  tion is an integ
1a870 65 72 20 2d 0a 2a 2a 20 70 6f 73 69 74 69 76 65  er -.** positive
1a880 20 74 6f 20 65 6e 61 62 6c 65 20 6f 75 74 70 75   to enable outpu
1a890 74 20 66 6f 72 20 74 72 69 67 67 65 72 20 70 72  t for trigger pr
1a8a0 6f 67 72 61 6d 73 2c 20 6f 72 20 7a 65 72 6f 20  ograms, or zero 
1a8b0 74 6f 20 64 69 73 61 62 6c 65 20 69 74 2c 0a 2a  to disable it,.*
1a8c0 2a 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f  * or negative to
1a8d0 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69   leave the setti
1a8e0 6e 67 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a  ng unchanged..**
1a8f0 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
1a900 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
1a910 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
1a920 20 69 6e 74 6f 20 77 68 69 63 68 20 69 73 20 77   into which is w
1a930 72 69 74 74 65 6e 20 0a 2a 2a 20 30 20 6f 72 20  ritten .** 0 or 
1a940 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68  1 to indicate wh
1a950 65 74 68 65 72 20 6f 75 74 70 75 74 2d 66 6f 72  ether output-for
1a960 2d 74 72 69 67 67 65 72 73 20 68 61 73 20 62 65  -triggers has be
1a970 65 6e 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20  en disabled - 0 
1a980 69 66 20 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74  if .** it is not
1a990 20 64 69 73 61 62 6c 65 64 2c 20 31 20 69 66 20   disabled, 1 if 
1a9a0 69 74 20 69 73 2e 20 20 0a 2a 2a 20 3c 2f 64 64  it is.  .** </dd
1a9b0 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1a9c0 5f 44 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f  _DBCONFIG_RESET_
1a9d0 44 41 54 41 42 41 53 45 5d 5d 20 3c 64 74 3e 53  DATABASE]] <dt>S
1a9e0 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52  QLITE_DBCONFIG_R
1a9f0 45 53 45 54 5f 44 41 54 41 42 41 53 45 3c 2f 64  ESET_DATABASE</d
1aa00 74 3e 0a 2a 2a 20 3c 64 64 3e 20 53 65 74 20 74  t>.** <dd> Set t
1aa10 68 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  he SQLITE_DBCONF
1aa20 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41 53  IG_RESET_DATABAS
1aa30 45 20 66 6c 61 67 20 61 6e 64 20 74 68 65 6e 20  E flag and then 
1aa40 72 75 6e 0a 2a 2a 20 5b 56 41 43 55 55 4d 5d 20  run.** [VACUUM] 
1aa50 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 73 65  in order to rese
1aa60 74 20 61 20 64 61 74 61 62 61 73 65 20 62 61 63  t a database bac
1aa70 6b 20 74 6f 20 61 6e 20 65 6d 70 74 79 20 64 61  k to an empty da
1aa80 74 61 62 61 73 65 0a 2a 2a 20 77 69 74 68 20 6e  tabase.** with n
1aa90 6f 20 73 63 68 65 6d 61 20 61 6e 64 20 6e 6f 20  o schema and no 
1aaa0 63 6f 6e 74 65 6e 74 2e 20 54 68 65 20 66 6f 6c  content. The fol
1aab0 6c 6f 77 69 6e 67 20 70 72 6f 63 65 73 73 20 77  lowing process w
1aac0 6f 72 6b 73 20 65 76 65 6e 20 66 6f 72 0a 2a 2a  orks even for.**
1aad0 20 61 20 62 61 64 6c 79 20 63 6f 72 72 75 70 74   a badly corrupt
1aae0 65 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ed database file
1aaf0 3a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69  :.** <ol>.** <li
1ab00 3e 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73  > If the databas
1ab10 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
1ab20 6e 65 77 6c 79 20 6f 70 65 6e 65 64 2c 20 6d 61  newly opened, ma
1ab30 6b 65 20 73 75 72 65 20 69 74 20 68 61 73 20 72  ke sure it has r
1ab40 65 61 64 20 74 68 65 0a 2a 2a 20 20 20 20 20 20  ead the.**      
1ab50 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
1ab60 62 79 20 70 72 65 70 61 72 69 6e 67 20 74 68 65  by preparing the
1ab70 6e 20 64 69 73 63 61 72 64 69 6e 67 20 73 6f 6d  n discarding som
1ab80 65 20 71 75 65 72 79 20 61 67 61 69 6e 73 74 20  e query against 
1ab90 74 68 65 0a 2a 2a 20 20 20 20 20 20 64 61 74 61  the.**      data
1aba0 62 61 73 65 2c 20 6f 72 20 63 61 6c 6c 69 6e 67  base, or calling
1abb0 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
1abc0 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 29  olumn_metadata()
1abd0 2c 20 69 67 6e 6f 72 69 6e 67 20 61 6e 79 0a 2a  , ignoring any.*
1abe0 2a 20 20 20 20 20 20 65 72 72 6f 72 73 2e 20 20  *      errors.  
1abf0 54 68 69 73 20 73 74 65 70 20 69 73 20 6f 6e 6c  This step is onl
1ac00 79 20 6e 65 63 65 73 73 61 72 79 20 69 66 20 74  y necessary if t
1ac10 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  he application d
1ac20 65 73 69 72 65 73 20 74 6f 20 6b 65 65 70 0a 2a  esires to keep.*
1ac30 2a 20 20 20 20 20 20 74 68 65 20 64 61 74 61 62  *      the datab
1ac40 61 73 65 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20  ase in WAL mode 
1ac50 61 66 74 65 72 20 74 68 65 20 72 65 73 65 74 20  after the reset 
1ac60 69 66 20 69 74 20 77 61 73 20 69 6e 20 57 41 4c  if it was in WAL
1ac70 20 6d 6f 64 65 20 62 65 66 6f 72 65 0a 2a 2a 20   mode before.** 
1ac80 20 20 20 20 20 74 68 65 20 72 65 73 65 74 2e 20       the reset. 
1ac90 20 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65   .** <li> sqlite
1aca0 33 5f 64 62 5f 63 6f 6e 66 69 67 28 64 62 2c 20  3_db_config(db, 
1acb0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
1acc0 52 45 53 45 54 5f 44 41 54 41 42 41 53 45 2c 20  RESET_DATABASE, 
1acd0 31 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20 5b  1, 0);.** <li> [
1ace0 73 71 6c 69 74 65 33 5f 65 78 65 63 5d 28 64 62  sqlite3_exec](db
1acf0 2c 20 22 5b 56 41 43 55 55 4d 5d 22 2c 20 30 2c  , "[VACUUM]", 0,
1ad00 20 30 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20   0, 0);.** <li> 
1ad10 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
1ad20 67 28 64 62 2c 20 53 51 4c 49 54 45 5f 44 42 43  g(db, SQLITE_DBC
1ad30 4f 4e 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41  ONFIG_RESET_DATA
1ad40 42 41 53 45 2c 20 30 2c 20 30 29 3b 0a 2a 2a 20  BASE, 0, 0);.** 
1ad50 3c 2f 6f 6c 3e 0a 2a 2a 20 42 65 63 61 75 73 65  </ol>.** Because
1ad60 20 72 65 73 65 74 74 69 6e 67 20 61 20 64 61 74   resetting a dat
1ad70 61 62 61 73 65 20 69 73 20 64 65 73 74 72 75 63  abase is destruc
1ad80 74 69 76 65 20 61 6e 64 20 69 72 72 65 76 65 72  tive and irrever
1ad90 73 69 62 6c 65 2c 20 74 68 65 0a 2a 2a 20 70 72  sible, the.** pr
1ada0 6f 63 65 73 73 20 72 65 71 75 69 72 65 73 20 74  ocess requires t
1adb0 68 65 20 75 73 65 20 6f 66 20 74 68 69 73 20 6f  he use of this o
1adc0 62 73 63 75 72 65 20 41 50 49 20 61 6e 64 20 6d  bscure API and m
1add0 75 6c 74 69 70 6c 65 20 73 74 65 70 73 20 74 6f  ultiple steps to
1ade0 20 68 65 6c 70 0a 2a 2a 20 65 6e 73 75 72 65 20   help.** ensure 
1adf0 74 68 61 74 20 69 74 20 64 6f 65 73 20 6e 6f 74  that it does not
1ae00 20 68 61 70 70 65 6e 20 62 79 20 61 63 63 69 64   happen by accid
1ae10 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  ent..**.** [[SQL
1ae20 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46  ITE_DBCONFIG_DEF
1ae30 45 4e 53 49 56 45 5d 5d 20 3c 64 74 3e 53 51 4c  ENSIVE]] <dt>SQL
1ae40 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46  ITE_DBCONFIG_DEF
1ae50 45 4e 53 49 56 45 3c 2f 64 74 3e 0a 2a 2a 20 3c  ENSIVE</dt>.** <
1ae60 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 44 42  dd>The SQLITE_DB
1ae70 43 4f 4e 46 49 47 5f 44 45 46 45 4e 53 49 56 45  CONFIG_DEFENSIVE
1ae80 20 6f 70 74 69 6f 6e 20 61 63 74 69 76 61 74 65   option activate
1ae90 73 20 6f 72 20 64 65 61 63 74 69 76 61 74 65 73  s or deactivates
1aea0 20 74 68 65 0a 2a 2a 20 22 64 65 66 65 6e 73 69   the.** "defensi
1aeb0 76 65 22 20 66 6c 61 67 20 66 6f 72 20 61 20 64  ve" flag for a d
1aec0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1aed0 6f 6e 2e 20 20 57 68 65 6e 20 74 68 65 20 64 65  on.  When the de
1aee0 66 65 6e 73 69 76 65 0a 2a 2a 20 66 6c 61 67 20  fensive.** flag 
1aef0 69 73 20 65 6e 61 62 6c 65 64 2c 20 6c 61 6e 67  is enabled, lang
1af00 75 61 67 65 20 66 65 61 74 75 72 65 73 20 74 68  uage features th
1af10 61 74 20 61 6c 6c 6f 77 20 6f 72 64 69 6e 61 72  at allow ordinar
1af20 79 20 53 51 4c 20 74 6f 20 0a 2a 2a 20 64 65 6c  y SQL to .** del
1af30 69 62 65 72 61 74 65 6c 79 20 63 6f 72 72 75 70  iberately corrup
1af40 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  t the database f
1af50 69 6c 65 20 61 72 65 20 64 69 73 61 62 6c 65 64  ile are disabled
1af60 2e 20 20 54 68 65 20 64 69 73 61 62 6c 65 64 0a  .  The disabled.
1af70 2a 2a 20 66 65 61 74 75 72 65 73 20 69 6e 63 6c  ** features incl
1af80 75 64 65 20 62 75 74 20 61 72 65 20 6e 6f 74 20  ude but are not 
1af90 6c 69 6d 69 74 65 64 20 74 6f 20 74 68 65 20 66  limited to the f
1afa0 6f 6c 6c 6f 77 69 6e 67 3a 0a 2a 2a 20 3c 75 6c  ollowing:.** <ul
1afb0 3e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 5b 50  >.** <li> The [P
1afc0 52 41 47 4d 41 20 77 72 69 74 61 62 6c 65 5f 73  RAGMA writable_s
1afd0 63 68 65 6d 61 3d 4f 4e 5d 20 73 74 61 74 65 6d  chema=ON] statem
1afe0 65 6e 74 2e 0a 2a 2a 20 3c 6c 69 3e 20 57 72 69  ent..** <li> Wri
1aff0 74 65 73 20 74 6f 20 74 68 65 20 5b 73 71 6c 69  tes to the [sqli
1b000 74 65 5f 64 62 70 61 67 65 5d 20 76 69 72 74 75  te_dbpage] virtu
1b010 61 6c 20 74 61 62 6c 65 2e 0a 2a 2a 20 3c 6c 69  al table..** <li
1b020 3e 20 44 69 72 65 63 74 20 77 72 69 74 65 73 20  > Direct writes 
1b030 74 6f 20 5b 73 68 61 64 6f 77 20 74 61 62 6c 65  to [shadow table
1b040 73 5d 2e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 20  s]..** </ul>.** 
1b050 3c 2f 64 64 3e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a  </dd>.** </dl>.*
1b060 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1b070 5f 44 42 43 4f 4e 46 49 47 5f 4d 41 49 4e 44 42  _DBCONFIG_MAINDB
1b080 4e 41 4d 45 20 20 20 20 20 20 20 20 20 20 20 20  NAME            
1b090 31 30 30 30 20 2f 2a 20 63 6f 6e 73 74 20 63 68  1000 /* const ch
1b0a0 61 72 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ar* */.#define S
1b0b0 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c  QLITE_DBCONFIG_L
1b0c0 4f 4f 4b 41 53 49 44 45 20 20 20 20 20 20 20 20  OOKASIDE        
1b0d0 20 20 20 20 20 31 30 30 31 20 2f 2a 20 76 6f 69       1001 /* voi
1b0e0 64 2a 20 69 6e 74 20 69 6e 74 20 2a 2f 0a 23 64  d* int int */.#d
1b0f0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
1b100 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 4b 45  ONFIG_ENABLE_FKE
1b110 59 20 20 20 20 20 20 20 20 20 20 20 31 30 30 32  Y           1002
1b120 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
1b130 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
1b140 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 54  BCONFIG_ENABLE_T
1b150 52 49 47 47 45 52 20 20 20 20 20 20 20 20 31 30  RIGGER        10
1b160 30 33 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  03 /* int int* *
1b170 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1b180 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
1b190 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 20  _FTS3_TOKENIZER 
1b1a0 31 30 30 34 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1004 /* int int*
1b1b0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1b1c0 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
1b1d0 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  LE_LOAD_EXTENSIO
1b1e0 4e 20 31 30 30 35 20 2f 2a 20 69 6e 74 20 69 6e  N 1005 /* int in
1b1f0 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
1b200 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f  LITE_DBCONFIG_NO
1b210 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53 45 20 20  _CKPT_ON_CLOSE  
1b220 20 20 20 20 31 30 30 36 20 2f 2a 20 69 6e 74 20      1006 /* int 
1b230 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
1b240 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
1b250 45 4e 41 42 4c 45 5f 51 50 53 47 20 20 20 20 20  ENABLE_QPSG     
1b260 20 20 20 20 20 20 31 30 30 37 20 2f 2a 20 69 6e        1007 /* in
1b270 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
1b280 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
1b290 47 5f 54 52 49 47 47 45 52 5f 45 51 50 20 20 20  G_TRIGGER_EQP   
1b2a0 20 20 20 20 20 20 20 20 31 30 30 38 20 2f 2a 20          1008 /* 
1b2b0 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
1b2c0 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
1b2d0 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41  FIG_RESET_DATABA
1b2e0 53 45 20 20 20 20 20 20 20 20 31 30 30 39 20 2f  SE        1009 /
1b2f0 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
1b300 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
1b310 4f 4e 46 49 47 5f 44 45 46 45 4e 53 49 56 45 20  ONFIG_DEFENSIVE 
1b320 20 20 20 20 20 20 20 20 20 20 20 20 31 30 31 30              1010
1b330 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
1b340 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
1b350 42 43 4f 4e 46 49 47 5f 4d 41 58 20 20 20 20 20  BCONFIG_MAX     
1b360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 30                10
1b370 31 30 20 2f 2a 20 4c 61 72 67 65 73 74 20 44 42  10 /* Largest DB
1b380 43 4f 4e 46 49 47 20 2a 2f 0a 0a 2f 2a 0a 2a 2a  CONFIG */../*.**
1b390 20 43 41 50 49 33 52 45 46 3a 20 45 6e 61 62 6c   CAPI3REF: Enabl
1b3a0 65 20 4f 72 20 44 69 73 61 62 6c 65 20 45 78 74  e Or Disable Ext
1b3b0 65 6e 64 65 64 20 52 65 73 75 6c 74 20 43 6f 64  ended Result Cod
1b3c0 65 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  es.** METHOD: sq
1b3d0 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  lite3.**.** ^The
1b3e0 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
1b3f0 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 29  d_result_codes()
1b400 20 72 6f 75 74 69 6e 65 20 65 6e 61 62 6c 65 73   routine enables
1b410 20 6f 72 20 64 69 73 61 62 6c 65 73 20 74 68 65   or disables the
1b420 0a 2a 2a 20 5b 65 78 74 65 6e 64 65 64 20 72 65  .** [extended re
1b430 73 75 6c 74 20 63 6f 64 65 73 5d 20 66 65 61 74  sult codes] feat
1b440 75 72 65 20 6f 66 20 53 51 4c 69 74 65 2e 20 5e  ure of SQLite. ^
1b450 54 68 65 20 65 78 74 65 6e 64 65 64 20 72 65 73  The extended res
1b460 75 6c 74 0a 2a 2a 20 63 6f 64 65 73 20 61 72 65  ult.** codes are
1b470 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66   disabled by def
1b480 61 75 6c 74 20 66 6f 72 20 68 69 73 74 6f 72 69  ault for histori
1b490 63 61 6c 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  cal compatibilit
1b4a0 79 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  y..*/.int sqlite
1b4b0 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c  3_extended_resul
1b4c0 74 5f 63 6f 64 65 73 28 73 71 6c 69 74 65 33 2a  t_codes(sqlite3*
1b4d0 2c 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0a 0a 2f  , int onoff);../
1b4e0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4c  *.** CAPI3REF: L
1b4f0 61 73 74 20 49 6e 73 65 72 74 20 52 6f 77 69 64  ast Insert Rowid
1b500 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
1b510 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 45 61 63 68 20  te3.**.** ^Each 
1b520 65 6e 74 72 79 20 69 6e 20 6d 6f 73 74 20 53 51  entry in most SQ
1b530 4c 69 74 65 20 74 61 62 6c 65 73 20 28 65 78 63  Lite tables (exc
1b540 65 70 74 20 66 6f 72 20 5b 57 49 54 48 4f 55 54  ept for [WITHOUT
1b550 20 52 4f 57 49 44 5d 20 74 61 62 6c 65 73 29 0a   ROWID] tables).
1b560 2a 2a 20 68 61 73 20 61 20 75 6e 69 71 75 65 20  ** has a unique 
1b570 36 34 2d 62 69 74 20 73 69 67 6e 65 64 0a 2a 2a  64-bit signed.**
1b580 20 69 6e 74 65 67 65 72 20 6b 65 79 20 63 61 6c   integer key cal
1b590 6c 65 64 20 74 68 65 20 5b 52 4f 57 49 44 20 7c  led the [ROWID |
1b5a0 20 22 72 6f 77 69 64 22 5d 2e 20 5e 54 68 65 20   "rowid"]. ^The 
1b5b0 72 6f 77 69 64 20 69 73 20 61 6c 77 61 79 73 20  rowid is always 
1b5c0 61 76 61 69 6c 61 62 6c 65 0a 2a 2a 20 61 73 20  available.** as 
1b5d0 61 6e 20 75 6e 64 65 63 6c 61 72 65 64 20 63 6f  an undeclared co
1b5e0 6c 75 6d 6e 20 6e 61 6d 65 64 20 52 4f 57 49 44  lumn named ROWID
1b5f0 2c 20 4f 49 44 2c 20 6f 72 20 5f 52 4f 57 49 44  , OID, or _ROWID
1b600 5f 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 6f  _ as long as tho
1b610 73 65 0a 2a 2a 20 6e 61 6d 65 73 20 61 72 65 20  se.** names are 
1b620 6e 6f 74 20 61 6c 73 6f 20 75 73 65 64 20 62 79  not also used by
1b630 20 65 78 70 6c 69 63 69 74 6c 79 20 64 65 63 6c   explicitly decl
1b640 61 72 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 5e 49  ared columns. ^I
1b650 66 0a 2a 2a 20 74 68 65 20 74 61 62 6c 65 20 68  f.** the table h
1b660 61 73 20 61 20 63 6f 6c 75 6d 6e 20 6f 66 20 74  as a column of t
1b670 79 70 65 20 5b 49 4e 54 45 47 45 52 20 50 52 49  ype [INTEGER PRI
1b680 4d 41 52 59 20 4b 45 59 5d 20 74 68 65 6e 20 74  MARY KEY] then t
1b690 68 61 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 69 73  hat column.** is
1b6a0 20 61 6e 6f 74 68 65 72 20 61 6c 69 61 73 20 66   another alias f
1b6b0 6f 72 20 74 68 65 20 72 6f 77 69 64 2e 0a 2a 2a  or the rowid..**
1b6c0 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
1b6d0 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
1b6e0 69 64 28 44 29 20 69 6e 74 65 72 66 61 63 65 20  id(D) interface 
1b6f0 75 73 75 61 6c 6c 79 20 72 65 74 75 72 6e 73 20  usually returns 
1b700 74 68 65 20 5b 72 6f 77 69 64 5d 20 6f 66 0a 2a  the [rowid] of.*
1b710 2a 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  * the most recen
1b720 74 20 73 75 63 63 65 73 73 66 75 6c 20 5b 49 4e  t successful [IN
1b730 53 45 52 54 5d 20 69 6e 74 6f 20 61 20 72 6f 77  SERT] into a row
1b740 69 64 20 74 61 62 6c 65 20 6f 72 20 5b 76 69 72  id table or [vir
1b750 74 75 61 6c 20 74 61 62 6c 65 5d 0a 2a 2a 20 6f  tual table].** o
1b760 6e 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  n database conne
1b770 63 74 69 6f 6e 20 44 2e 20 5e 49 6e 73 65 72 74  ction D. ^Insert
1b780 73 20 69 6e 74 6f 20 5b 57 49 54 48 4f 55 54 20  s into [WITHOUT 
1b790 52 4f 57 49 44 5d 20 74 61 62 6c 65 73 20 61 72  ROWID] tables ar
1b7a0 65 20 6e 6f 74 0a 2a 2a 20 72 65 63 6f 72 64 65  e not.** recorde
1b7b0 64 2e 20 5e 49 66 20 6e 6f 20 73 75 63 63 65 73  d. ^If no succes
1b7c0 73 66 75 6c 20 5b 49 4e 53 45 52 54 5d 73 20 69  sful [INSERT]s i
1b7d0 6e 74 6f 20 72 6f 77 69 64 20 74 61 62 6c 65 73  nto rowid tables
1b7e0 20 68 61 76 65 20 65 76 65 72 20 6f 63 63 75 72   have ever occur
1b7f0 72 65 64 20 0a 2a 2a 20 6f 6e 20 74 68 65 20 64  red .** on the d
1b800 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1b810 6f 6e 20 44 2c 20 74 68 65 6e 20 73 71 6c 69 74  on D, then sqlit
1b820 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  e3_last_insert_r
1b830 6f 77 69 64 28 44 29 20 72 65 74 75 72 6e 73 20  owid(D) returns 
1b840 0a 2a 2a 20 7a 65 72 6f 2e 0a 2a 2a 0a 2a 2a 20  .** zero..**.** 
1b850 41 73 20 77 65 6c 6c 20 61 73 20 62 65 69 6e 67  As well as being
1b860 20 73 65 74 20 61 75 74 6f 6d 61 74 69 63 61 6c   set automatical
1b870 6c 79 20 61 73 20 72 6f 77 73 20 61 72 65 20 69  ly as rows are i
1b880 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 64 61 74  nserted into dat
1b890 61 62 61 73 65 0a 2a 2a 20 74 61 62 6c 65 73 2c  abase.** tables,
1b8a0 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72   the value retur
1b8b0 6e 65 64 20 62 79 20 74 68 69 73 20 66 75 6e 63  ned by this func
1b8c0 74 69 6f 6e 20 6d 61 79 20 62 65 20 73 65 74 20  tion may be set 
1b8d0 65 78 70 6c 69 63 69 74 6c 79 20 62 79 0a 2a 2a  explicitly by.**
1b8e0 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61   [sqlite3_set_la
1b8f0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
1b900 29 5d 0a 2a 2a 0a 2a 2a 20 53 6f 6d 65 20 76 69  )].**.** Some vi
1b910 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c  rtual table impl
1b920 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 61 79 20  ementations may 
1b930 49 4e 53 45 52 54 20 72 6f 77 73 20 69 6e 74 6f  INSERT rows into
1b940 20 72 6f 77 69 64 20 74 61 62 6c 65 73 20 61 73   rowid tables as
1b950 0a 2a 2a 20 70 61 72 74 20 6f 66 20 63 6f 6d 6d  .** part of comm
1b960 69 74 74 69 6e 67 20 61 20 74 72 61 6e 73 61 63  itting a transac
1b970 74 69 6f 6e 20 28 65 2e 67 2e 20 74 6f 20 66 6c  tion (e.g. to fl
1b980 75 73 68 20 64 61 74 61 20 61 63 63 75 6d 75 6c  ush data accumul
1b990 61 74 65 64 20 69 6e 20 6d 65 6d 6f 72 79 0a 2a  ated in memory.*
1b9a0 2a 20 74 6f 20 64 69 73 6b 29 2e 20 49 6e 20 74  * to disk). In t
1b9b0 68 69 73 20 63 61 73 65 20 73 75 62 73 65 71 75  his case subsequ
1b9c0 65 6e 74 20 63 61 6c 6c 73 20 74 6f 20 74 68 69  ent calls to thi
1b9d0 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72  s function retur
1b9e0 6e 20 74 68 65 20 72 6f 77 69 64 0a 2a 2a 20 61  n the rowid.** a
1b9f0 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74  ssociated with t
1ba00 68 65 73 65 20 69 6e 74 65 72 6e 61 6c 20 49 4e  hese internal IN
1ba10 53 45 52 54 20 6f 70 65 72 61 74 69 6f 6e 73 2c  SERT operations,
1ba20 20 77 68 69 63 68 20 6c 65 61 64 73 20 74 6f 20   which leads to 
1ba30 0a 2a 2a 20 75 6e 69 6e 74 75 69 74 69 76 65 20  .** unintuitive 
1ba40 72 65 73 75 6c 74 73 2e 20 56 69 72 74 75 61 6c  results. Virtual
1ba50 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74   table implement
1ba60 61 74 69 6f 6e 73 20 74 68 61 74 20 64 6f 20 77  ations that do w
1ba70 72 69 74 65 20 74 6f 20 72 6f 77 69 64 0a 2a 2a  rite to rowid.**
1ba80 20 74 61 62 6c 65 73 20 69 6e 20 74 68 69 73 20   tables in this 
1ba90 77 61 79 20 63 61 6e 20 61 76 6f 69 64 20 74 68  way can avoid th
1baa0 69 73 20 70 72 6f 62 6c 65 6d 20 62 79 20 72 65  is problem by re
1bab0 73 74 6f 72 69 6e 67 20 74 68 65 20 6f 72 69 67  storing the orig
1bac0 69 6e 61 6c 20 0a 2a 2a 20 72 6f 77 69 64 20 76  inal .** rowid v
1bad0 61 6c 75 65 20 75 73 69 6e 67 20 5b 73 71 6c 69  alue using [sqli
1bae0 74 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73  te3_set_last_ins
1baf0 65 72 74 5f 72 6f 77 69 64 28 29 5d 20 62 65 66  ert_rowid()] bef
1bb00 6f 72 65 20 72 65 74 75 72 6e 69 6e 67 20 0a 2a  ore returning .*
1bb10 2a 20 63 6f 6e 74 72 6f 6c 20 74 6f 20 74 68 65  * control to the
1bb20 20 75 73 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49   user..**.** ^(I
1bb30 66 20 61 6e 20 5b 49 4e 53 45 52 54 5d 20 6f 63  f an [INSERT] oc
1bb40 63 75 72 73 20 77 69 74 68 69 6e 20 61 20 74 72  curs within a tr
1bb50 69 67 67 65 72 20 74 68 65 6e 20 74 68 69 73 20  igger then this 
1bb60 72 6f 75 74 69 6e 65 20 77 69 6c 6c 20 0a 2a 2a  routine will .**
1bb70 20 72 65 74 75 72 6e 20 74 68 65 20 5b 72 6f 77   return the [row
1bb80 69 64 5d 20 6f 66 20 74 68 65 20 69 6e 73 65 72  id] of the inser
1bb90 74 65 64 20 72 6f 77 20 61 73 20 6c 6f 6e 67 20  ted row as long 
1bba0 61 73 20 74 68 65 20 74 72 69 67 67 65 72 20 69  as the trigger i
1bbb0 73 20 0a 2a 2a 20 72 75 6e 6e 69 6e 67 2e 20 4f  s .** running. O
1bbc0 6e 63 65 20 74 68 65 20 74 72 69 67 67 65 72 20  nce the trigger 
1bbd0 70 72 6f 67 72 61 6d 20 65 6e 64 73 2c 20 74 68  program ends, th
1bbe0 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64  e value returned
1bbf0 20 0a 2a 2a 20 62 79 20 74 68 69 73 20 72 6f 75   .** by this rou
1bc00 74 69 6e 65 20 72 65 76 65 72 74 73 20 74 6f 20  tine reverts to 
1bc10 77 68 61 74 20 69 74 20 77 61 73 20 62 65 66 6f  what it was befo
1bc20 72 65 20 74 68 65 20 74 72 69 67 67 65 72 20 77  re the trigger w
1bc30 61 73 20 66 69 72 65 64 2e 29 5e 0a 2a 2a 0a 2a  as fired.)^.**.*
1bc40 2a 20 5e 41 6e 20 5b 49 4e 53 45 52 54 5d 20 74  * ^An [INSERT] t
1bc50 68 61 74 20 66 61 69 6c 73 20 64 75 65 20 74 6f  hat fails due to
1bc60 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
1bc70 6f 6c 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61  olation is not a
1bc80 0a 2a 2a 20 73 75 63 63 65 73 73 66 75 6c 20 5b  .** successful [
1bc90 49 4e 53 45 52 54 5d 20 61 6e 64 20 64 6f 65 73  INSERT] and does
1bca0 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20   not change the 
1bcb0 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62  value returned b
1bcc0 79 20 74 68 69 73 0a 2a 2a 20 72 6f 75 74 69 6e  y this.** routin
1bcd0 65 2e 20 20 5e 54 68 75 73 20 49 4e 53 45 52 54  e.  ^Thus INSERT
1bce0 20 4f 52 20 46 41 49 4c 2c 20 49 4e 53 45 52 54   OR FAIL, INSERT
1bcf0 20 4f 52 20 49 47 4e 4f 52 45 2c 20 49 4e 53 45   OR IGNORE, INSE
1bd00 52 54 20 4f 52 20 52 4f 4c 4c 42 41 43 4b 2c 0a  RT OR ROLLBACK,.
1bd10 2a 2a 20 61 6e 64 20 49 4e 53 45 52 54 20 4f 52  ** and INSERT OR
1bd20 20 41 42 4f 52 54 20 6d 61 6b 65 20 6e 6f 20 63   ABORT make no c
1bd30 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 72 65  hanges to the re
1bd40 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68  turn value of th
1bd50 69 73 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 77 68  is.** routine wh
1bd60 65 6e 20 74 68 65 69 72 20 69 6e 73 65 72 74 69  en their inserti
1bd70 6f 6e 20 66 61 69 6c 73 2e 20 20 5e 28 57 68 65  on fails.  ^(Whe
1bd80 6e 20 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c  n INSERT OR REPL
1bd90 41 43 45 0a 2a 2a 20 65 6e 63 6f 75 6e 74 65 72  ACE.** encounter
1bda0 73 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  s a constraint v
1bdb0 69 6f 6c 61 74 69 6f 6e 2c 20 69 74 20 64 6f 65  iolation, it doe
1bdc0 73 20 6e 6f 74 20 66 61 69 6c 2e 20 20 54 68 65  s not fail.  The
1bdd0 0a 2a 2a 20 49 4e 53 45 52 54 20 63 6f 6e 74 69  .** INSERT conti
1bde0 6e 75 65 73 20 74 6f 20 63 6f 6d 70 6c 65 74 69  nues to completi
1bdf0 6f 6e 20 61 66 74 65 72 20 64 65 6c 65 74 69 6e  on after deletin
1be00 67 20 72 6f 77 73 20 74 68 61 74 20 63 61 75 73  g rows that caus
1be10 65 64 0a 2a 2a 20 74 68 65 20 63 6f 6e 73 74 72  ed.** the constr
1be20 61 69 6e 74 20 70 72 6f 62 6c 65 6d 20 73 6f 20  aint problem so 
1be30 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43  INSERT OR REPLAC
1be40 45 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 63 68  E will always ch
1be50 61 6e 67 65 0a 2a 2a 20 74 68 65 20 72 65 74 75  ange.** the retu
1be60 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73  rn value of this
1be70 20 69 6e 74 65 72 66 61 63 65 2e 29 5e 0a 2a 2a   interface.)^.**
1be80 0a 2a 2a 20 5e 46 6f 72 20 74 68 65 20 70 75 72  .** ^For the pur
1be90 70 6f 73 65 73 20 6f 66 20 74 68 69 73 20 72 6f  poses of this ro
1bea0 75 74 69 6e 65 2c 20 61 6e 20 5b 49 4e 53 45 52  utine, an [INSER
1beb0 54 5d 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64  T] is considered
1bec0 20 74 6f 0a 2a 2a 20 62 65 20 73 75 63 63 65 73   to.** be succes
1bed0 73 66 75 6c 20 65 76 65 6e 20 69 66 20 69 74 20  sful even if it 
1bee0 69 73 20 73 75 62 73 65 71 75 65 6e 74 6c 79 20  is subsequently 
1bef0 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a 2a 0a  rolled back..**.
1bf00 2a 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  ** This function
1bf10 20 69 73 20 61 63 63 65 73 73 69 62 6c 65 20 74   is accessible t
1bf20 6f 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  o SQL statements
1bf30 20 76 69 61 20 74 68 65 0a 2a 2a 20 5b 6c 61 73   via the.** [las
1bf40 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
1bf50 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a   SQL function]..
1bf60 2a 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61 72  **.** If a separ
1bf70 61 74 65 20 74 68 72 65 61 64 20 70 65 72 66 6f  ate thread perfo
1bf80 72 6d 73 20 61 20 6e 65 77 20 5b 49 4e 53 45 52  rms a new [INSER
1bf90 54 5d 20 6f 6e 20 74 68 65 20 73 61 6d 65 0a 2a  T] on the same.*
1bfa0 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  * database conne
1bfb0 63 74 69 6f 6e 20 77 68 69 6c 65 20 74 68 65 20  ction while the 
1bfc0 5b 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e  [sqlite3_last_in
1bfd0 73 65 72 74 5f 72 6f 77 69 64 28 29 5d 0a 2a 2a  sert_rowid()].**
1bfe0 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 72 75 6e   function is run
1bff0 6e 69 6e 67 20 61 6e 64 20 74 68 75 73 20 63 68  ning and thus ch
1c000 61 6e 67 65 73 20 74 68 65 20 6c 61 73 74 20 69  anges the last i
1c010 6e 73 65 72 74 20 5b 72 6f 77 69 64 5d 2c 0a 2a  nsert [rowid],.*
1c020 2a 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65  * then the value
1c030 20 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71   returned by [sq
1c040 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
1c050 74 5f 72 6f 77 69 64 28 29 5d 20 69 73 0a 2a 2a  t_rowid()] is.**
1c060 20 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61   unpredictable a
1c070 6e 64 20 6d 69 67 68 74 20 6e 6f 74 20 65 71 75  nd might not equ
1c080 61 6c 20 65 69 74 68 65 72 20 74 68 65 20 6f 6c  al either the ol
1c090 64 20 6f 72 20 74 68 65 20 6e 65 77 0a 2a 2a 20  d or the new.** 
1c0a0 6c 61 73 74 20 69 6e 73 65 72 74 20 5b 72 6f 77  last insert [row
1c0b0 69 64 5d 2e 0a 2a 2f 0a 73 71 6c 69 74 65 33 5f  id]..*/.sqlite3_
1c0c0 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 6c 61  int64 sqlite3_la
1c0d0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
1c0e0 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a  sqlite3*);../*.*
1c0f0 2a 20 43 41 50 49 33 52 45 46 3a 20 53 65 74 20  * CAPI3REF: Set 
1c100 74 68 65 20 4c 61 73 74 20 49 6e 73 65 72 74 20  the Last Insert 
1c110 52 6f 77 69 64 20 76 61 6c 75 65 2e 0a 2a 2a 20  Rowid value..** 
1c120 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
1c130 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  **.** The sqlite
1c140 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72  3_set_last_inser
1c150 74 5f 72 6f 77 69 64 28 44 2c 20 52 29 20 6d 65  t_rowid(D, R) me
1c160 74 68 6f 64 20 61 6c 6c 6f 77 73 20 74 68 65 20  thod allows the 
1c170 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 0a 2a  application to.*
1c180 2a 20 73 65 74 20 74 68 65 20 76 61 6c 75 65 20  * set the value 
1c190 72 65 74 75 72 6e 65 64 20 62 79 20 63 61 6c 6c  returned by call
1c1a0 69 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  ing sqlite3_last
1c1b0 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 29  _insert_rowid(D)
1c1c0 20 74 6f 20 52 20 0a 2a 2a 20 77 69 74 68 6f 75   to R .** withou
1c1d0 74 20 69 6e 73 65 72 74 69 6e 67 20 61 20 72 6f  t inserting a ro
1c1e0 77 20 69 6e 74 6f 20 74 68 65 20 64 61 74 61 62  w into the datab
1c1f0 61 73 65 2e 0a 2a 2f 0a 76 6f 69 64 20 73 71 6c  ase..*/.void sql
1c200 69 74 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e  ite3_set_last_in
1c210 73 65 72 74 5f 72 6f 77 69 64 28 73 71 6c 69 74  sert_rowid(sqlit
1c220 65 33 2a 2c 73 71 6c 69 74 65 33 5f 69 6e 74 36  e3*,sqlite3_int6
1c230 34 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  4);../*.** CAPI3
1c240 52 45 46 3a 20 43 6f 75 6e 74 20 54 68 65 20 4e  REF: Count The N
1c250 75 6d 62 65 72 20 4f 66 20 52 6f 77 73 20 4d 6f  umber Of Rows Mo
1c260 64 69 66 69 65 64 0a 2a 2a 20 4d 45 54 48 4f 44  dified.** METHOD
1c270 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
1c280 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72  ^This function r
1c290 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65  eturns the numbe
1c2a0 72 20 6f 66 20 72 6f 77 73 20 6d 6f 64 69 66 69  r of rows modifi
1c2b0 65 64 2c 20 69 6e 73 65 72 74 65 64 20 6f 72 0a  ed, inserted or.
1c2c0 2a 2a 20 64 65 6c 65 74 65 64 20 62 79 20 74 68  ** deleted by th
1c2d0 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 6c 79 20  e most recently 
1c2e0 63 6f 6d 70 6c 65 74 65 64 20 49 4e 53 45 52 54  completed INSERT
1c2f0 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45  , UPDATE or DELE
1c300 54 45 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20  TE.** statement 
1c310 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  on the database 
1c320 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 70 65 63 69  connection speci
1c330 66 69 65 64 20 62 79 20 74 68 65 20 6f 6e 6c 79  fied by the only
1c340 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e   parameter..** ^
1c350 45 78 65 63 75 74 69 6e 67 20 61 6e 79 20 6f 74  Executing any ot
1c360 68 65 72 20 74 79 70 65 20 6f 66 20 53 51 4c 20  her type of SQL 
1c370 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e  statement does n
1c380 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 76 61  ot modify the va
1c390 6c 75 65 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20  lue.** returned 
1c3a0 62 79 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  by this function
1c3b0 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c 79 20 63 68  ..**.** ^Only ch
1c3c0 61 6e 67 65 73 20 6d 61 64 65 20 64 69 72 65 63  anges made direc
1c3d0 74 6c 79 20 62 79 20 74 68 65 20 49 4e 53 45 52  tly by the INSER
1c3e0 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c  T, UPDATE or DEL
1c3f0 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 61 72  ETE statement ar
1c400 65 0a 2a 2a 20 63 6f 6e 73 69 64 65 72 65 64 20  e.** considered 
1c410 2d 20 61 75 78 69 6c 69 61 72 79 20 63 68 61 6e  - auxiliary chan
1c420 67 65 73 20 63 61 75 73 65 64 20 62 79 20 5b 43  ges caused by [C
1c430 52 45 41 54 45 20 54 52 49 47 47 45 52 20 7c 20  REATE TRIGGER | 
1c440 74 72 69 67 67 65 72 73 5d 2c 20 0a 2a 2a 20 5b  triggers], .** [
1c450 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69  foreign key acti
1c460 6f 6e 73 5d 20 6f 72 20 5b 52 45 50 4c 41 43 45  ons] or [REPLACE
1c470 5d 20 63 6f 6e 73 74 72 61 69 6e 74 20 72 65 73  ] constraint res
1c480 6f 6c 75 74 69 6f 6e 20 61 72 65 20 6e 6f 74 20  olution are not 
1c490 63 6f 75 6e 74 65 64 2e 0a 2a 2a 20 0a 2a 2a 20  counted..** .** 
1c4a0 43 68 61 6e 67 65 73 20 74 6f 20 61 20 76 69 65  Changes to a vie
1c4b0 77 20 74 68 61 74 20 61 72 65 20 69 6e 74 65 72  w that are inter
1c4c0 63 65 70 74 65 64 20 62 79 20 0a 2a 2a 20 5b 49  cepted by .** [I
1c4d0 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65  NSTEAD OF trigge
1c4e0 72 20 7c 20 49 4e 53 54 45 41 44 20 4f 46 20 74  r | INSTEAD OF t
1c4f0 72 69 67 67 65 72 73 5d 20 61 72 65 20 6e 6f 74  riggers] are not
1c500 20 63 6f 75 6e 74 65 64 2e 20 5e 54 68 65 20 76   counted. ^The v
1c510 61 6c 75 65 20 0a 2a 2a 20 72 65 74 75 72 6e 65  alue .** returne
1c520 64 20 62 79 20 73 71 6c 69 74 65 33 5f 63 68 61  d by sqlite3_cha
1c530 6e 67 65 73 28 29 20 69 6d 6d 65 64 69 61 74 65  nges() immediate
1c540 6c 79 20 61 66 74 65 72 20 61 6e 20 49 4e 53 45  ly after an INSE
1c550 52 54 2c 20 55 50 44 41 54 45 20 6f 72 20 0a 2a  RT, UPDATE or .*
1c560 2a 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65  * DELETE stateme
1c570 6e 74 20 72 75 6e 20 6f 6e 20 61 20 76 69 65 77  nt run on a view
1c580 20 69 73 20 61 6c 77 61 79 73 20 7a 65 72 6f 2e   is always zero.
1c590 20 4f 6e 6c 79 20 63 68 61 6e 67 65 73 20 6d 61   Only changes ma
1c5a0 64 65 20 74 6f 20 72 65 61 6c 20 0a 2a 2a 20 74  de to real .** t
1c5b0 61 62 6c 65 73 20 61 72 65 20 63 6f 75 6e 74 65  ables are counte
1c5c0 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 6e 67 73 20  d..**.** Things 
1c5d0 61 72 65 20 6d 6f 72 65 20 63 6f 6d 70 6c 69 63  are more complic
1c5e0 61 74 65 64 20 69 66 20 74 68 65 20 73 71 6c 69  ated if the sqli
1c5f0 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20 66 75  te3_changes() fu
1c600 6e 63 74 69 6f 6e 20 69 73 0a 2a 2a 20 65 78 65  nction is.** exe
1c610 63 75 74 65 64 20 77 68 69 6c 65 20 61 20 74 72  cuted while a tr
1c620 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 69 73  igger program is
1c630 20 72 75 6e 6e 69 6e 67 2e 20 54 68 69 73 20 6d   running. This m
1c640 61 79 20 68 61 70 70 65 6e 20 69 66 20 74 68 65  ay happen if the
1c650 0a 2a 2a 20 70 72 6f 67 72 61 6d 20 75 73 65 73  .** program uses
1c660 20 74 68 65 20 5b 63 68 61 6e 67 65 73 28 29 20   the [changes() 
1c670 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2c 20 6f  SQL function], o
1c680 72 20 69 66 20 73 6f 6d 65 20 6f 74 68 65 72 20  r if some other 
1c690 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e 63  callback.** func
1c6a0 74 69 6f 6e 20 69 6e 76 6f 6b 65 73 20 73 71 6c  tion invokes sql
1c6b0 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20 64  ite3_changes() d
1c6c0 69 72 65 63 74 6c 79 2e 20 45 73 73 65 6e 74 69  irectly. Essenti
1c6d0 61 6c 6c 79 3a 0a 2a 2a 20 0a 2a 2a 20 3c 75 6c  ally:.** .** <ul
1c6e0 3e 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5e 28 42 65  >.**   <li> ^(Be
1c6f0 66 6f 72 65 20 65 6e 74 65 72 69 6e 67 20 61 20  fore entering a 
1c700 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20  trigger program 
1c710 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
1c720 65 64 20 62 79 0a 2a 2a 20 20 20 20 20 20 20 20  ed by.**        
1c730 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
1c740 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 73 61  ) function is sa
1c750 76 65 64 2e 20 41 66 74 65 72 20 74 68 65 20 74  ved. After the t
1c760 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 0a  rigger program .
1c770 2a 2a 20 20 20 20 20 20 20 20 68 61 73 20 66 69  **        has fi
1c780 6e 69 73 68 65 64 2c 20 74 68 65 20 6f 72 69 67  nished, the orig
1c790 69 6e 61 6c 20 76 61 6c 75 65 20 69 73 20 72 65  inal value is re
1c7a0 73 74 6f 72 65 64 2e 29 5e 0a 2a 2a 20 0a 2a 2a  stored.)^.** .**
1c7b0 20 20 20 3c 6c 69 3e 20 5e 28 57 69 74 68 69 6e     <li> ^(Within
1c7c0 20 61 20 74 72 69 67 67 65 72 20 70 72 6f 67 72   a trigger progr
1c7d0 61 6d 20 65 61 63 68 20 49 4e 53 45 52 54 2c 20  am each INSERT, 
1c7e0 55 50 44 41 54 45 20 61 6e 64 20 44 45 4c 45 54  UPDATE and DELET
1c7f0 45 20 0a 2a 2a 20 20 20 20 20 20 20 20 73 74 61  E .**        sta
1c800 74 65 6d 65 6e 74 20 73 65 74 73 20 74 68 65 20  tement sets the 
1c810 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62  value returned b
1c820 79 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  y sqlite3_change
1c830 73 28 29 20 0a 2a 2a 20 20 20 20 20 20 20 20 75  s() .**        u
1c840 70 6f 6e 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 61  pon completion a
1c850 73 20 6e 6f 72 6d 61 6c 2e 20 4f 66 20 63 6f 75  s normal. Of cou
1c860 72 73 65 2c 20 74 68 69 73 20 76 61 6c 75 65 20  rse, this value 
1c870 77 69 6c 6c 20 6e 6f 74 20 69 6e 63 6c 75 64 65  will not include
1c880 20 0a 2a 2a 20 20 20 20 20 20 20 20 61 6e 79 20   .**        any 
1c890 63 68 61 6e 67 65 73 20 70 65 72 66 6f 72 6d 65  changes performe
1c8a0 64 20 62 79 20 73 75 62 2d 74 72 69 67 67 65 72  d by sub-trigger
1c8b0 73 2c 20 61 73 20 74 68 65 20 73 71 6c 69 74 65  s, as the sqlite
1c8c0 33 5f 63 68 61 6e 67 65 73 28 29 20 0a 2a 2a 20  3_changes() .** 
1c8d0 20 20 20 20 20 20 20 76 61 6c 75 65 20 77 69 6c         value wil
1c8e0 6c 20 62 65 20 73 61 76 65 64 20 61 6e 64 20 72  l be saved and r
1c8f0 65 73 74 6f 72 65 64 20 61 66 74 65 72 20 65 61  estored after ea
1c900 63 68 20 73 75 62 2d 74 72 69 67 67 65 72 20 68  ch sub-trigger h
1c910 61 73 20 72 75 6e 2e 29 5e 0a 2a 2a 20 3c 2f 75  as run.)^.** </u
1c920 6c 3e 0a 2a 2a 20 0a 2a 2a 20 5e 54 68 69 73 20  l>.** .** ^This 
1c930 6d 65 61 6e 73 20 74 68 61 74 20 69 66 20 74 68  means that if th
1c940 65 20 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20  e changes() SQL 
1c950 66 75 6e 63 74 69 6f 6e 20 28 6f 72 20 73 69 6d  function (or sim
1c960 69 6c 61 72 29 20 69 73 20 75 73 65 64 0a 2a 2a  ilar) is used.**
1c970 20 62 79 20 74 68 65 20 66 69 72 73 74 20 49 4e   by the first IN
1c980 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f 72 20  SERT, UPDATE or 
1c990 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74  DELETE statement
1c9a0 20 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65   within a trigge
1c9b0 72 2c 20 69 74 20 0a 2a 2a 20 72 65 74 75 72 6e  r, it .** return
1c9c0 73 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 73  s the value as s
1c9d0 65 74 20 77 68 65 6e 20 74 68 65 20 63 61 6c 6c  et when the call
1c9e0 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 62 65  ing statement be
1c9f0 67 61 6e 20 65 78 65 63 75 74 69 6e 67 2e 0a 2a  gan executing..*
1ca00 2a 20 5e 49 66 20 69 74 20 69 73 20 75 73 65 64  * ^If it is used
1ca10 20 62 79 20 74 68 65 20 73 65 63 6f 6e 64 20 6f   by the second o
1ca20 72 20 73 75 62 73 65 71 75 65 6e 74 20 73 75 63  r subsequent suc
1ca30 68 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68  h statement with
1ca40 69 6e 20 61 20 74 72 69 67 67 65 72 20 0a 2a 2a  in a trigger .**
1ca50 20 70 72 6f 67 72 61 6d 2c 20 74 68 65 20 76 61   program, the va
1ca60 6c 75 65 20 72 65 74 75 72 6e 65 64 20 72 65 66  lue returned ref
1ca70 6c 65 63 74 73 20 74 68 65 20 6e 75 6d 62 65 72  lects the number
1ca80 20 6f 66 20 72 6f 77 73 20 6d 6f 64 69 66 69 65   of rows modifie
1ca90 64 20 62 79 20 74 68 65 20 0a 2a 2a 20 70 72 65  d by the .** pre
1caa0 76 69 6f 75 73 20 49 4e 53 45 52 54 2c 20 55 50  vious INSERT, UP
1cab0 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20 73  DATE or DELETE s
1cac0 74 61 74 65 6d 65 6e 74 20 77 69 74 68 69 6e 20  tatement within 
1cad0 74 68 65 20 73 61 6d 65 20 74 72 69 67 67 65 72  the same trigger
1cae0 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70  ..**.** If a sep
1caf0 61 72 61 74 65 20 74 68 72 65 61 64 20 6d 61 6b  arate thread mak
1cb00 65 73 20 63 68 61 6e 67 65 73 20 6f 6e 20 74 68  es changes on th
1cb10 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  e same database 
1cb20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77 68  connection.** wh
1cb30 69 6c 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61  ile [sqlite3_cha
1cb40 6e 67 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69  nges()] is runni
1cb50 6e 67 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75  ng then the valu
1cb60 65 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 69 73  e returned.** is
1cb70 20 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61   unpredictable a
1cb80 6e 64 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75  nd not meaningfu
1cb90 6c 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73  l..**.** See als
1cba0 6f 3a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c  o:.** <ul>.** <l
1cbb0 69 3e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  i> the [sqlite3_
1cbc0 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d  total_changes()]
1cbd0 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 3c 6c   interface.** <l
1cbe0 69 3e 20 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68  i> the [count_ch
1cbf0 61 6e 67 65 73 20 70 72 61 67 6d 61 5d 0a 2a 2a  anges pragma].**
1cc00 20 3c 6c 69 3e 20 74 68 65 20 5b 63 68 61 6e 67   <li> the [chang
1cc10 65 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  es() SQL functio
1cc20 6e 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b  n].** <li> the [
1cc30 64 61 74 61 5f 76 65 72 73 69 6f 6e 20 70 72 61  data_version pra
1cc40 67 6d 61 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f  gma].** </ul>.*/
1cc50 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61  .int sqlite3_cha
1cc60 6e 67 65 73 28 73 71 6c 69 74 65 33 2a 29 3b 0a  nges(sqlite3*);.
1cc70 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
1cc80 20 54 6f 74 61 6c 20 4e 75 6d 62 65 72 20 4f 66   Total Number Of
1cc90 20 52 6f 77 73 20 4d 6f 64 69 66 69 65 64 0a 2a   Rows Modified.*
1cca0 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
1ccb0 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 66 75  3.**.** ^This fu
1ccc0 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74  nction returns t
1ccd0 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20  he total number 
1cce0 6f 66 20 72 6f 77 73 20 69 6e 73 65 72 74 65 64  of rows inserted
1ccf0 2c 20 6d 6f 64 69 66 69 65 64 20 6f 72 0a 2a 2a  , modified or.**
1cd00 20 64 65 6c 65 74 65 64 20 62 79 20 61 6c 6c 20   deleted by all 
1cd10 5b 49 4e 53 45 52 54 5d 2c 20 5b 55 50 44 41 54  [INSERT], [UPDAT
1cd20 45 5d 20 6f 72 20 5b 44 45 4c 45 54 45 5d 20 73  E] or [DELETE] s
1cd30 74 61 74 65 6d 65 6e 74 73 20 63 6f 6d 70 6c 65  tatements comple
1cd40 74 65 64 0a 2a 2a 20 73 69 6e 63 65 20 74 68 65  ted.** since the
1cd50 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
1cd60 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2c  tion was opened,
1cd70 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 6f 73 65   including those
1cd80 20 65 78 65 63 75 74 65 64 20 61 73 0a 2a 2a 20   executed as.** 
1cd90 70 61 72 74 20 6f 66 20 74 72 69 67 67 65 72 20  part of trigger 
1cda0 70 72 6f 67 72 61 6d 73 2e 20 5e 45 78 65 63 75  programs. ^Execu
1cdb0 74 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 74  ting any other t
1cdc0 79 70 65 20 6f 66 20 53 51 4c 20 73 74 61 74 65  ype of SQL state
1cdd0 6d 65 6e 74 0a 2a 2a 20 64 6f 65 73 20 6e 6f 74  ment.** does not
1cde0 20 61 66 66 65 63 74 20 74 68 65 20 76 61 6c 75   affect the valu
1cdf0 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71  e returned by sq
1ce00 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e  lite3_total_chan
1ce10 67 65 73 28 29 2e 0a 2a 2a 20 0a 2a 2a 20 5e 43  ges()..** .** ^C
1ce20 68 61 6e 67 65 73 20 6d 61 64 65 20 61 73 20 70  hanges made as p
1ce30 61 72 74 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20  art of [foreign 
1ce40 6b 65 79 20 61 63 74 69 6f 6e 73 5d 20 61 72 65  key actions] are
1ce50 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65   included in the
1ce60 0a 2a 2a 20 63 6f 75 6e 74 2c 20 62 75 74 20 74  .** count, but t
1ce70 68 6f 73 65 20 6d 61 64 65 20 61 73 20 70 61 72  hose made as par
1ce80 74 20 6f 66 20 52 45 50 4c 41 43 45 20 63 6f 6e  t of REPLACE con
1ce90 73 74 72 61 69 6e 74 20 72 65 73 6f 6c 75 74 69  straint resoluti
1cea0 6f 6e 20 61 72 65 0a 2a 2a 20 6e 6f 74 2e 20 5e  on are.** not. ^
1ceb0 43 68 61 6e 67 65 73 20 74 6f 20 61 20 76 69 65  Changes to a vie
1cec0 77 20 74 68 61 74 20 61 72 65 20 69 6e 74 65 72  w that are inter
1ced0 63 65 70 74 65 64 20 62 79 20 49 4e 53 54 45 41  cepted by INSTEA
1cee0 44 20 4f 46 20 74 72 69 67 67 65 72 73 20 0a 2a  D OF triggers .*
1cef0 2a 20 61 72 65 20 6e 6f 74 20 63 6f 75 6e 74 65  * are not counte
1cf00 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 74 68  d..**.** This th
1cf10 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c  e [sqlite3_total
1cf20 5f 63 68 61 6e 67 65 73 28 44 29 5d 20 69 6e 74  _changes(D)] int
1cf30 65 72 66 61 63 65 20 6f 6e 6c 79 20 72 65 70 6f  erface only repo
1cf40 72 74 73 20 74 68 65 20 6e 75 6d 62 65 72 0a 2a  rts the number.*
1cf50 2a 20 6f 66 20 72 6f 77 73 20 74 68 61 74 20 63  * of rows that c
1cf60 68 61 6e 67 65 64 20 64 75 65 20 74 6f 20 53 51  hanged due to SQ
1cf70 4c 20 73 74 61 74 65 6d 65 6e 74 20 72 75 6e 20  L statement run 
1cf80 61 67 61 69 6e 73 74 20 64 61 74 61 62 61 73 65  against database
1cf90 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 44  .** connection D
1cfa0 2e 20 20 41 6e 79 20 63 68 61 6e 67 65 73 20 62  .  Any changes b
1cfb0 79 20 6f 74 68 65 72 20 64 61 74 61 62 61 73 65  y other database
1cfc0 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 72 65   connections are
1cfd0 20 69 67 6e 6f 72 65 64 2e 0a 2a 2a 20 54 6f 20   ignored..** To 
1cfe0 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20 61  detect changes a
1cff0 67 61 69 6e 73 74 20 61 20 64 61 74 61 62 61 73  gainst a databas
1d000 65 20 66 69 6c 65 20 66 72 6f 6d 20 6f 74 68 65  e file from othe
1d010 72 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6f  r database.** co
1d020 6e 6e 65 63 74 69 6f 6e 73 20 75 73 65 20 74 68  nnections use th
1d030 65 20 5b 50 52 41 47 4d 41 20 64 61 74 61 5f 76  e [PRAGMA data_v
1d040 65 72 73 69 6f 6e 5d 20 63 6f 6d 6d 61 6e 64 20  ersion] command 
1d050 6f 72 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  or the.** [SQLIT
1d060 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56 45 52  E_FCNTL_DATA_VER
1d070 53 49 4f 4e 5d 20 5b 66 69 6c 65 20 63 6f 6e 74  SION] [file cont
1d080 72 6f 6c 5d 2e 0a 2a 2a 20 0a 2a 2a 20 49 66 20  rol]..** .** If 
1d090 61 20 73 65 70 61 72 61 74 65 20 74 68 72 65 61  a separate threa
1d0a0 64 20 6d 61 6b 65 73 20 63 68 61 6e 67 65 73 20  d makes changes 
1d0b0 6f 6e 20 74 68 65 20 73 61 6d 65 20 64 61 74 61  on the same data
1d0c0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a  base connection.
1d0d0 2a 2a 20 77 68 69 6c 65 20 5b 73 71 6c 69 74 65  ** while [sqlite
1d0e0 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
1d0f0 29 5d 20 69 73 20 72 75 6e 6e 69 6e 67 20 74 68  )] is running th
1d100 65 6e 20 74 68 65 20 76 61 6c 75 65 0a 2a 2a 20  en the value.** 
1d110 72 65 74 75 72 6e 65 64 20 69 73 20 75 6e 70 72  returned is unpr
1d120 65 64 69 63 74 61 62 6c 65 20 61 6e 64 20 6e 6f  edictable and no
1d130 74 20 6d 65 61 6e 69 6e 67 66 75 6c 2e 0a 2a 2a  t meaningful..**
1d140 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 0a 2a 2a  .** See also:.**
1d150 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 74 68   <ul>.** <li> th
1d160 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  e [sqlite3_chang
1d170 65 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a  es()] interface.
1d180 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 63 6f 75  ** <li> the [cou
1d190 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67 6d  nt_changes pragm
1d1a0 61 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b  a].** <li> the [
1d1b0 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66 75  changes() SQL fu
1d1c0 6e 63 74 69 6f 6e 5d 0a 2a 2a 20 3c 6c 69 3e 20  nction].** <li> 
1d1d0 74 68 65 20 5b 64 61 74 61 5f 76 65 72 73 69 6f  the [data_versio
1d1e0 6e 20 70 72 61 67 6d 61 5d 0a 2a 2a 20 3c 6c 69  n pragma].** <li
1d1f0 3e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  > the [SQLITE_FC
1d200 4e 54 4c 5f 44 41 54 41 5f 56 45 52 53 49 4f 4e  NTL_DATA_VERSION
1d210 5d 20 5b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 5d  ] [file control]
1d220 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 69 6e 74  .** </ul>.*/.int
1d230 20 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63   sqlite3_total_c
1d240 68 61 6e 67 65 73 28 73 71 6c 69 74 65 33 2a 29  hanges(sqlite3*)
1d250 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
1d260 46 3a 20 49 6e 74 65 72 72 75 70 74 20 41 20 4c  F: Interrupt A L
1d270 6f 6e 67 2d 52 75 6e 6e 69 6e 67 20 51 75 65 72  ong-Running Quer
1d280 79 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  y.** METHOD: sql
1d290 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73  ite3.**.** ^This
1d2a0 20 66 75 6e 63 74 69 6f 6e 20 63 61 75 73 65 73   function causes
1d2b0 20 61 6e 79 20 70 65 6e 64 69 6e 67 20 64 61 74   any pending dat
1d2c0 61 62 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 20  abase operation 
1d2d0 74 6f 20 61 62 6f 72 74 20 61 6e 64 0a 2a 2a 20  to abort and.** 
1d2e0 72 65 74 75 72 6e 20 61 74 20 69 74 73 20 65 61  return at its ea
1d2f0 72 6c 69 65 73 74 20 6f 70 70 6f 72 74 75 6e 69  rliest opportuni
1d300 74 79 2e 20 54 68 69 73 20 72 6f 75 74 69 6e 65  ty. This routine
1d310 20 69 73 20 74 79 70 69 63 61 6c 6c 79 0a 2a 2a   is typically.**
1d320 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
1d330 6e 73 65 20 74 6f 20 61 20 75 73 65 72 20 61 63  nse to a user ac
1d340 74 69 6f 6e 20 73 75 63 68 20 61 73 20 70 72 65  tion such as pre
1d350 73 73 69 6e 67 20 22 43 61 6e 63 65 6c 22 0a 2a  ssing "Cancel".*
1d360 2a 20 6f 72 20 43 74 72 6c 2d 43 20 77 68 65 72  * or Ctrl-C wher
1d370 65 20 74 68 65 20 75 73 65 72 20 77 61 6e 74 73  e the user wants
1d380 20 61 20 6c 6f 6e 67 20 71 75 65 72 79 20 6f 70   a long query op
1d390 65 72 61 74 69 6f 6e 20 74 6f 20 68 61 6c 74 0a  eration to halt.
1d3a0 2a 2a 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a  ** immediately..
1d3b0 2a 2a 0a 2a 2a 20 5e 49 74 20 69 73 20 73 61 66  **.** ^It is saf
1d3c0 65 20 74 6f 20 63 61 6c 6c 20 74 68 69 73 20 72  e to call this r
1d3d0 6f 75 74 69 6e 65 20 66 72 6f 6d 20 61 20 74 68  outine from a th
1d3e0 72 65 61 64 20 64 69 66 66 65 72 65 6e 74 20 66  read different f
1d3f0 72 6f 6d 20 74 68 65 0a 2a 2a 20 74 68 72 65 61  rom the.** threa
1d400 64 20 74 68 61 74 20 69 73 20 63 75 72 72 65 6e  d that is curren
1d410 74 6c 79 20 72 75 6e 6e 69 6e 67 20 74 68 65 20  tly running the 
1d420 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69  database operati
1d430 6f 6e 2e 20 20 42 75 74 20 69 74 0a 2a 2a 20 69  on.  But it.** i
1d440 73 20 6e 6f 74 20 73 61 66 65 20 74 6f 20 63 61  s not safe to ca
1d450 6c 6c 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  ll this routine 
1d460 77 69 74 68 20 61 20 5b 64 61 74 61 62 61 73 65  with a [database
1d470 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 74 68 61   connection] tha
1d480 74 0a 2a 2a 20 69 73 20 63 6c 6f 73 65 64 20 6f  t.** is closed o
1d490 72 20 6d 69 67 68 74 20 63 6c 6f 73 65 20 62 65  r might close be
1d4a0 66 6f 72 65 20 73 71 6c 69 74 65 33 5f 69 6e 74  fore sqlite3_int
1d4b0 65 72 72 75 70 74 28 29 20 72 65 74 75 72 6e 73  errupt() returns
1d4c0 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 20 53  ..**.** ^If an S
1d4d0 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20  QL operation is 
1d4e0 76 65 72 79 20 6e 65 61 72 6c 79 20 66 69 6e 69  very nearly fini
1d4f0 73 68 65 64 20 61 74 20 74 68 65 20 74 69 6d 65  shed at the time
1d500 20 77 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33   when.** sqlite3
1d510 5f 69 6e 74 65 72 72 75 70 74 28 29 20 69 73 20  _interrupt() is 
1d520 63 61 6c 6c 65 64 2c 20 74 68 65 6e 20 69 74 20  called, then it 
1d530 6d 69 67 68 74 20 6e 6f 74 20 68 61 76 65 20 61  might not have a
1d540 6e 20 6f 70 70 6f 72 74 75 6e 69 74 79 0a 2a 2a  n opportunity.**
1d550 20 74 6f 20 62 65 20 69 6e 74 65 72 72 75 70 74   to be interrupt
1d560 65 64 20 61 6e 64 20 6d 69 67 68 74 20 63 6f 6e  ed and might con
1d570 74 69 6e 75 65 20 74 6f 20 63 6f 6d 70 6c 65 74  tinue to complet
1d580 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 41 6e 20 53  ion..**.** ^An S
1d590 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20 74 68 61  QL operation tha
1d5a0 74 20 69 73 20 69 6e 74 65 72 72 75 70 74 65 64  t is interrupted
1d5b0 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53 51   will return [SQ
1d5c0 4c 49 54 45 5f 49 4e 54 45 52 52 55 50 54 5d 2e  LITE_INTERRUPT].
1d5d0 0a 2a 2a 20 5e 49 66 20 74 68 65 20 69 6e 74 65  .** ^If the inte
1d5e0 72 72 75 70 74 65 64 20 53 51 4c 20 6f 70 65 72  rrupted SQL oper
1d5f0 61 74 69 6f 6e 20 69 73 20 61 6e 20 49 4e 53 45  ation is an INSE
1d600 52 54 2c 20 55 50 44 41 54 45 2c 20 6f 72 20 44  RT, UPDATE, or D
1d610 45 4c 45 54 45 0a 2a 2a 20 74 68 61 74 20 69 73  ELETE.** that is
1d620 20 69 6e 73 69 64 65 20 61 6e 20 65 78 70 6c 69   inside an expli
1d630 63 69 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c  cit transaction,
1d640 20 74 68 65 6e 20 74 68 65 20 65 6e 74 69 72 65   then the entire
1d650 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 2a 2a 20   transaction.** 
1d660 77 69 6c 6c 20 62 65 20 72 6f 6c 6c 65 64 20 62  will be rolled b
1d670 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ack automaticall
1d680 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  y..**.** ^The sq
1d690 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
1d6a0 44 29 20 63 61 6c 6c 20 69 73 20 69 6e 20 65 66  D) call is in ef
1d6b0 66 65 63 74 20 75 6e 74 69 6c 20 61 6c 6c 20 63  fect until all c
1d6c0 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67  urrently running
1d6d0 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  .** SQL statemen
1d6e0 74 73 20 6f 6e 20 5b 64 61 74 61 62 61 73 65 20  ts on [database 
1d6f0 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 20 63 6f  connection] D co
1d700 6d 70 6c 65 74 65 2e 20 20 5e 41 6e 79 20 6e 65  mplete.  ^Any ne
1d710 77 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  w SQL statements
1d720 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 73 74 61  .** that are sta
1d730 72 74 65 64 20 61 66 74 65 72 20 74 68 65 20 73  rted after the s
1d740 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
1d750 28 29 20 63 61 6c 6c 20 61 6e 64 20 62 65 66 6f  () call and befo
1d760 72 65 20 74 68 65 20 0a 2a 2a 20 72 75 6e 6e 69  re the .** runni
1d770 6e 67 20 73 74 61 74 65 6d 65 6e 74 73 20 72 65  ng statements re
1d780 61 63 68 65 73 20 7a 65 72 6f 20 61 72 65 20 69  aches zero are i
1d790 6e 74 65 72 72 75 70 74 65 64 20 61 73 20 69 66  nterrupted as if
1d7a0 20 74 68 65 79 20 68 61 64 20 62 65 65 6e 0a 2a   they had been.*
1d7b0 2a 20 72 75 6e 6e 69 6e 67 20 70 72 69 6f 72 20  * running prior 
1d7c0 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69  to the sqlite3_i
1d7d0 6e 74 65 72 72 75 70 74 28 29 20 63 61 6c 6c 2e  nterrupt() call.
1d7e0 20 20 5e 4e 65 77 20 53 51 4c 20 73 74 61 74 65    ^New SQL state
1d7f0 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74 20 61 72  ments.** that ar
1d800 65 20 73 74 61 72 74 65 64 20 61 66 74 65 72 20  e started after 
1d810 74 68 65 20 72 75 6e 6e 69 6e 67 20 73 74 61 74  the running stat
1d820 65 6d 65 6e 74 20 63 6f 75 6e 74 20 72 65 61 63  ement count reac
1d830 68 65 73 20 7a 65 72 6f 20 61 72 65 0a 2a 2a 20  hes zero are.** 
1d840 6e 6f 74 20 65 66 66 65 63 74 65 64 20 62 79 20  not effected by 
1d850 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  the sqlite3_inte
1d860 72 72 75 70 74 28 29 2e 0a 2a 2a 20 5e 41 20 63  rrupt()..** ^A c
1d870 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 69  all to sqlite3_i
1d880 6e 74 65 72 72 75 70 74 28 44 29 20 74 68 61 74  nterrupt(D) that
1d890 20 6f 63 63 75 72 73 20 77 68 65 6e 20 74 68 65   occurs when the
1d8a0 72 65 20 61 72 65 20 6e 6f 20 72 75 6e 6e 69 6e  re are no runnin
1d8b0 67 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65  g.** SQL stateme
1d8c0 6e 74 73 20 69 73 20 61 20 6e 6f 2d 6f 70 20 61  nts is a no-op a
1d8d0 6e 64 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  nd has no effect
1d8e0 20 6f 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   on SQL statemen
1d8f0 74 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 73  ts.** that are s
1d900 74 61 72 74 65 64 20 61 66 74 65 72 20 74 68 65  tarted after the
1d910 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
1d920 70 74 28 29 20 63 61 6c 6c 20 72 65 74 75 72 6e  pt() call return
1d930 73 2e 0a 2a 2f 0a 76 6f 69 64 20 73 71 6c 69 74  s..*/.void sqlit
1d940 65 33 5f 69 6e 74 65 72 72 75 70 74 28 73 71 6c  e3_interrupt(sql
1d950 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  ite3*);../*.** C
1d960 41 50 49 33 52 45 46 3a 20 44 65 74 65 72 6d 69  API3REF: Determi
1d970 6e 65 20 49 66 20 41 6e 20 53 51 4c 20 53 74 61  ne If An SQL Sta
1d980 74 65 6d 65 6e 74 20 49 73 20 43 6f 6d 70 6c 65  tement Is Comple
1d990 74 65 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72  te.**.** These r
1d9a0 6f 75 74 69 6e 65 73 20 61 72 65 20 75 73 65 66  outines are usef
1d9b0 75 6c 20 64 75 72 69 6e 67 20 63 6f 6d 6d 61 6e  ul during comman
1d9c0 64 2d 6c 69 6e 65 20 69 6e 70 75 74 20 74 6f 20  d-line input to 
1d9d0 64 65 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65  determine if the
1d9e0 0a 2a 2a 20 63 75 72 72 65 6e 74 6c 79 20 65 6e  .** currently en
1d9f0 74 65 72 65 64 20 74 65 78 74 20 73 65 65 6d 73  tered text seems
1da00 20 74 6f 20 66 6f 72 6d 20 61 20 63 6f 6d 70 6c   to form a compl
1da10 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ete SQL statemen
1da20 74 20 6f 72 0a 2a 2a 20 69 66 20 61 64 64 69 74  t or.** if addit
1da30 69 6f 6e 61 6c 20 69 6e 70 75 74 20 69 73 20 6e  ional input is n
1da40 65 65 64 65 64 20 62 65 66 6f 72 65 20 73 65 6e  eeded before sen
1da50 64 69 6e 67 20 74 68 65 20 74 65 78 74 20 69 6e  ding the text in
1da60 74 6f 0a 2a 2a 20 53 51 4c 69 74 65 20 66 6f 72  to.** SQLite for
1da70 20 70 61 72 73 69 6e 67 2e 20 20 5e 54 68 65 73   parsing.  ^Thes
1da80 65 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  e routines retur
1da90 6e 20 31 20 69 66 20 74 68 65 20 69 6e 70 75 74  n 1 if the input
1daa0 20 73 74 72 69 6e 67 0a 2a 2a 20 61 70 70 65 61   string.** appea
1dab0 72 73 20 74 6f 20 62 65 20 61 20 63 6f 6d 70 6c  rs to be a compl
1dac0 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ete SQL statemen
1dad0 74 2e 20 20 5e 41 20 73 74 61 74 65 6d 65 6e 74  t.  ^A statement
1dae0 20 69 73 20 6a 75 64 67 65 64 20 74 6f 20 62 65   is judged to be
1daf0 0a 2a 2a 20 63 6f 6d 70 6c 65 74 65 20 69 66 20  .** complete if 
1db00 69 74 20 65 6e 64 73 20 77 69 74 68 20 61 20 73  it ends with a s
1db10 65 6d 69 63 6f 6c 6f 6e 20 74 6f 6b 65 6e 20 61  emicolon token a
1db20 6e 64 20 69 73 20 6e 6f 74 20 61 20 70 72 65 66  nd is not a pref
1db30 69 78 20 6f 66 20 61 0a 2a 2a 20 77 65 6c 6c 2d  ix of a.** well-
1db40 66 6f 72 6d 65 64 20 43 52 45 41 54 45 20 54 52  formed CREATE TR
1db50 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e  IGGER statement.
1db60 20 20 5e 53 65 6d 69 63 6f 6c 6f 6e 73 20 74 68    ^Semicolons th
1db70 61 74 20 61 72 65 20 65 6d 62 65 64 64 65 64 20  at are embedded 
1db80 77 69 74 68 69 6e 0a 2a 2a 20 73 74 72 69 6e 67  within.** string
1db90 20 6c 69 74 65 72 61 6c 73 20 6f 72 20 71 75 6f   literals or quo
1dba0 74 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 6e  ted identifier n
1dbb0 61 6d 65 73 20 6f 72 20 63 6f 6d 6d 65 6e 74 73  ames or comments
1dbc0 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 69 6e 64 65   are not.** inde
1dbd0 70 65 6e 64 65 6e 74 20 74 6f 6b 65 6e 73 20 28  pendent tokens (
1dbe0 74 68 65 79 20 61 72 65 20 70 61 72 74 20 6f 66  they are part of
1dbf0 20 74 68 65 20 74 6f 6b 65 6e 20 69 6e 20 77 68   the token in wh
1dc00 69 63 68 20 74 68 65 79 20 61 72 65 0a 2a 2a 20  ich they are.** 
1dc10 65 6d 62 65 64 64 65 64 29 20 61 6e 64 20 74 68  embedded) and th
1dc20 75 73 20 64 6f 20 6e 6f 74 20 63 6f 75 6e 74 20  us do not count 
1dc30 61 73 20 61 20 73 74 61 74 65 6d 65 6e 74 20 74  as a statement t
1dc40 65 72 6d 69 6e 61 74 6f 72 2e 20 20 5e 57 68 69  erminator.  ^Whi
1dc50 74 65 73 70 61 63 65 0a 2a 2a 20 61 6e 64 20 63  tespace.** and c
1dc60 6f 6d 6d 65 6e 74 73 20 74 68 61 74 20 66 6f 6c  omments that fol
1dc70 6c 6f 77 20 74 68 65 20 66 69 6e 61 6c 20 73 65  low the final se
1dc80 6d 69 63 6f 6c 6f 6e 20 61 72 65 20 69 67 6e 6f  micolon are igno
1dc90 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73  red..**.** ^Thes
1dca0 65 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  e routines retur
1dcb0 6e 20 30 20 69 66 20 74 68 65 20 73 74 61 74 65  n 0 if the state
1dcc0 6d 65 6e 74 20 69 73 20 69 6e 63 6f 6d 70 6c 65  ment is incomple
1dcd0 74 65 2e 20 20 5e 49 66 20 61 0a 2a 2a 20 6d 65  te.  ^If a.** me
1dce0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
1dcf0 66 61 69 6c 73 2c 20 74 68 65 6e 20 53 51 4c 49  fails, then SQLI
1dd00 54 45 5f 4e 4f 4d 45 4d 20 69 73 20 72 65 74 75  TE_NOMEM is retu
1dd10 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  rned..**.** ^The
1dd20 73 65 20 72 6f 75 74 69 6e 65 73 20 64 6f 20 6e  se routines do n
1dd30 6f 74 20 70 61 72 73 65 20 74 68 65 20 53 51 4c  ot parse the SQL
1dd40 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 75 73   statements thus
1dd50 0a 2a 2a 20 77 69 6c 6c 20 6e 6f 74 20 64 65 74  .** will not det
1dd60 65 63 74 20 73 79 6e 74 61 63 74 69 63 61 6c 6c  ect syntacticall
1dd70 79 20 69 6e 63 6f 72 72 65 63 74 20 53 51 4c 2e  y incorrect SQL.
1dd80 0a 2a 2a 0a 2a 2a 20 5e 28 49 66 20 53 51 4c 69  .**.** ^(If SQLi
1dd90 74 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  te has not been 
1dda0 69 6e 69 74 69 61 6c 69 7a 65 64 20 75 73 69 6e  initialized usin
1ddb0 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  g [sqlite3_initi
1ddc0 61 6c 69 7a 65 28 29 5d 20 70 72 69 6f 72 20 0a  alize()] prior .
1ddd0 2a 2a 20 74 6f 20 69 6e 76 6f 6b 69 6e 67 20 73  ** to invoking s
1dde0 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31  qlite3_complete1
1ddf0 36 28 29 20 74 68 65 6e 20 73 71 6c 69 74 65 33  6() then sqlite3
1de00 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73  _initialize() is
1de10 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 61 75 74 6f   invoked.** auto
1de20 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 73 71 6c  matically by sql
1de30 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28  ite3_complete16(
1de40 29 2e 20 20 49 66 20 74 68 61 74 20 69 6e 69 74  ).  If that init
1de50 69 61 6c 69 7a 61 74 69 6f 6e 20 66 61 69 6c 73  ialization fails
1de60 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 72 65  ,.** then the re
1de70 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20  turn value from 
1de80 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
1de90 31 36 28 29 20 77 69 6c 6c 20 62 65 20 6e 6f 6e  16() will be non
1dea0 2d 7a 65 72 6f 0a 2a 2a 20 72 65 67 61 72 64 6c  -zero.** regardl
1deb0 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f  ess of whether o
1dec0 72 20 6e 6f 74 20 74 68 65 20 69 6e 70 75 74 20  r not the input 
1ded0 53 51 4c 20 69 73 20 63 6f 6d 70 6c 65 74 65 2e  SQL is complete.
1dee0 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 70  )^.**.** The inp
1def0 75 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  ut to [sqlite3_c
1df00 6f 6d 70 6c 65 74 65 28 29 5d 20 6d 75 73 74 20  omplete()] must 
1df10 62 65 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  be a zero-termin
1df20 61 74 65 64 0a 2a 2a 20 55 54 46 2d 38 20 73 74  ated.** UTF-8 st
1df30 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ring..**.** The 
1df40 69 6e 70 75 74 20 74 6f 20 5b 73 71 6c 69 74 65  input to [sqlite
1df50 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d 20  3_complete16()] 
1df60 6d 75 73 74 20 62 65 20 61 20 7a 65 72 6f 2d 74  must be a zero-t
1df70 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 55 54 46  erminated.** UTF
1df80 2d 31 36 20 73 74 72 69 6e 67 20 69 6e 20 6e 61  -16 string in na
1df90 74 69 76 65 20 62 79 74 65 20 6f 72 64 65 72 2e  tive byte order.
1dfa0 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  .*/.int sqlite3_
1dfb0 63 6f 6d 70 6c 65 74 65 28 63 6f 6e 73 74 20 63  complete(const c
1dfc0 68 61 72 20 2a 73 71 6c 29 3b 0a 69 6e 74 20 73  har *sql);.int s
1dfd0 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31  qlite3_complete1
1dfe0 36 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71  6(const void *sq
1dff0 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  l);../*.** CAPI3
1e000 52 45 46 3a 20 52 65 67 69 73 74 65 72 20 41 20  REF: Register A 
1e010 43 61 6c 6c 62 61 63 6b 20 54 6f 20 48 61 6e 64  Callback To Hand
1e020 6c 65 20 53 51 4c 49 54 45 5f 42 55 53 59 20 45  le SQLITE_BUSY E
1e030 72 72 6f 72 73 0a 2a 2a 20 4b 45 59 57 4f 52 44  rrors.** KEYWORD
1e040 53 3a 20 7b 62 75 73 79 2d 68 61 6e 64 6c 65 72  S: {busy-handler
1e050 20 63 61 6c 6c 62 61 63 6b 7d 20 7b 62 75 73 79   callback} {busy
1e060 20 68 61 6e 64 6c 65 72 7d 0a 2a 2a 20 4d 45 54   handler}.** MET
1e070 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  HOD: sqlite3.**.
1e080 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
1e090 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 44 2c 58  busy_handler(D,X
1e0a0 2c 50 29 20 72 6f 75 74 69 6e 65 20 73 65 74 73  ,P) routine sets
1e0b0 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63   a callback func
1e0c0 74 69 6f 6e 20 58 0a 2a 2a 20 74 68 61 74 20 6d  tion X.** that m
1e0d0 69 67 68 74 20 62 65 20 69 6e 76 6f 6b 65 64 20  ight be invoked 
1e0e0 77 69 74 68 20 61 72 67 75 6d 65 6e 74 20 50 20  with argument P 
1e0f0 77 68 65 6e 65 76 65 72 0a 2a 2a 20 61 6e 20 61  whenever.** an a
1e100 74 74 65 6d 70 74 20 69 73 20 6d 61 64 65 20 74  ttempt is made t
1e110 6f 20 61 63 63 65 73 73 20 61 20 64 61 74 61 62  o access a datab
1e120 61 73 65 20 74 61 62 6c 65 20 61 73 73 6f 63 69  ase table associ
1e130 61 74 65 64 20 77 69 74 68 0a 2a 2a 20 5b 64 61  ated with.** [da
1e140 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
1e150 6e 5d 20 44 20 77 68 65 6e 20 61 6e 6f 74 68 65  n] D when anothe
1e160 72 20 74 68 72 65 61 64 0a 2a 2a 20 6f 72 20 70  r thread.** or p
1e170 72 6f 63 65 73 73 20 68 61 73 20 74 68 65 20 74  rocess has the t
1e180 61 62 6c 65 20 6c 6f 63 6b 65 64 2e 0a 2a 2a 20  able locked..** 
1e190 54 68 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79  The sqlite3_busy
1e1a0 5f 68 61 6e 64 6c 65 72 28 29 20 69 6e 74 65 72  _handler() inter
1e1b0 66 61 63 65 20 69 73 20 75 73 65 64 20 74 6f 20  face is used to 
1e1c0 69 6d 70 6c 65 6d 65 6e 74 0a 2a 2a 20 5b 73 71  implement.** [sq
1e1d0 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
1e1e0 75 74 28 29 5d 20 61 6e 64 20 5b 50 52 41 47 4d  ut()] and [PRAGM
1e1f0 41 20 62 75 73 79 5f 74 69 6d 65 6f 75 74 5d 2e  A busy_timeout].
1e200 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 62  .**.** ^If the b
1e210 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  usy callback is 
1e220 4e 55 4c 4c 2c 20 74 68 65 6e 20 5b 53 51 4c 49  NULL, then [SQLI
1e230 54 45 5f 42 55 53 59 5d 0a 2a 2a 20 69 73 20 72  TE_BUSY].** is r
1e240 65 74 75 72 6e 65 64 20 69 6d 6d 65 64 69 61 74  eturned immediat
1e250 65 6c 79 20 75 70 6f 6e 20 65 6e 63 6f 75 6e 74  ely upon encount
1e260 65 72 69 6e 67 20 74 68 65 20 6c 6f 63 6b 2e 20  ering the lock. 
1e270 20 5e 49 66 20 74 68 65 20 62 75 73 79 20 63 61   ^If the busy ca
1e280 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 6e 6f 74  llback.** is not
1e290 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 68 65 20   NULL, then the 
1e2a0 63 61 6c 6c 62 61 63 6b 20 6d 69 67 68 74 20 62  callback might b
1e2b0 65 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74  e invoked with t
1e2c0 77 6f 20 61 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a  wo arguments..**
1e2d0 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61  .** ^The first a
1e2e0 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 62  rgument to the b
1e2f0 75 73 79 20 68 61 6e 64 6c 65 72 20 69 73 20 61  usy handler is a
1e300 20 63 6f 70 79 20 6f 66 20 74 68 65 20 76 6f 69   copy of the voi
1e310 64 2a 20 70 6f 69 6e 74 65 72 20 77 68 69 63 68  d* pointer which
1e320 0a 2a 2a 20 69 73 20 74 68 65 20 74 68 69 72 64  .** is the third
1e330 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c   argument to sql
1e340 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65  ite3_busy_handle
1e350 72 28 29 2e 20 20 5e 54 68 65 20 73 65 63 6f 6e  r().  ^The secon
1e360 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a  d argument to.**
1e370 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65   the busy handle
1e380 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 74 68  r callback is th
1e390 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65  e number of time
1e3a0 73 20 74 68 61 74 20 74 68 65 20 62 75 73 79 20  s that the busy 
1e3b0 68 61 6e 64 6c 65 72 20 68 61 73 0a 2a 2a 20 62  handler has.** b
1e3c0 65 65 6e 20 69 6e 76 6f 6b 65 64 20 70 72 65 76  een invoked prev
1e3d0 69 6f 75 73 6c 79 20 66 6f 72 20 74 68 65 20 73  iously for the s
1e3e0 61 6d 65 20 6c 6f 63 6b 69 6e 67 20 65 76 65 6e  ame locking even
1e3f0 74 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20 62  t.  ^If the.** b
1e400 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 72 65 74  usy callback ret
1e410 75 72 6e 73 20 30 2c 20 74 68 65 6e 20 6e 6f 20  urns 0, then no 
1e420 61 64 64 69 74 69 6f 6e 61 6c 20 61 74 74 65 6d  additional attem
1e430 70 74 73 20 61 72 65 20 6d 61 64 65 20 74 6f 0a  pts are made to.
1e440 2a 2a 20 61 63 63 65 73 73 20 74 68 65 20 64 61  ** access the da
1e450 74 61 62 61 73 65 20 61 6e 64 20 5b 53 51 4c 49  tabase and [SQLI
1e460 54 45 5f 42 55 53 59 5d 20 69 73 20 72 65 74 75  TE_BUSY] is retu
1e470 72 6e 65 64 0a 2a 2a 20 74 6f 20 74 68 65 20 61  rned.** to the a
1e480 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 2a 2a 20 5e  pplication..** ^
1e490 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  If the callback 
1e4a0 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  returns non-zero
1e4b0 2c 20 74 68 65 6e 20 61 6e 6f 74 68 65 72 20 61  , then another a
1e4c0 74 74 65 6d 70 74 0a 2a 2a 20 69 73 20 6d 61 64  ttempt.** is mad
1e4d0 65 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20  e to access the 
1e4e0 64 61 74 61 62 61 73 65 20 61 6e 64 20 74 68 65  database and the
1e4f0 20 63 79 63 6c 65 20 72 65 70 65 61 74 73 2e 0a   cycle repeats..
1e500 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 65 73 65 6e  **.** The presen
1e510 63 65 20 6f 66 20 61 20 62 75 73 79 20 68 61 6e  ce of a busy han
1e520 64 6c 65 72 20 64 6f 65 73 20 6e 6f 74 20 67 75  dler does not gu
1e530 61 72 61 6e 74 65 65 20 74 68 61 74 20 69 74 20  arantee that it 
1e540 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b 65 64 0a  will be invoked.
1e550 2a 2a 20 77 68 65 6e 20 74 68 65 72 65 20 69 73  ** when there is
1e560 20 6c 6f 63 6b 20 63 6f 6e 74 65 6e 74 69 6f 6e   lock contention
1e570 2e 20 5e 49 66 20 53 51 4c 69 74 65 20 64 65 74  . ^If SQLite det
1e580 65 72 6d 69 6e 65 73 20 74 68 61 74 20 69 6e 76  ermines that inv
1e590 6f 6b 69 6e 67 20 74 68 65 20 62 75 73 79 0a 2a  oking the busy.*
1e5a0 2a 20 68 61 6e 64 6c 65 72 20 63 6f 75 6c 64 20  * handler could 
1e5b0 72 65 73 75 6c 74 20 69 6e 20 61 20 64 65 61 64  result in a dead
1e5c0 6c 6f 63 6b 2c 20 69 74 20 77 69 6c 6c 20 67 6f  lock, it will go
1e5d0 20 61 68 65 61 64 20 61 6e 64 20 72 65 74 75 72   ahead and retur
1e5e0 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 0a  n [SQLITE_BUSY].
1e5f0 2a 2a 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63  ** to the applic
1e600 61 74 69 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66  ation instead of
1e610 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 0a 2a   invoking the .*
1e620 2a 20 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a  * busy handler..
1e630 2a 2a 20 43 6f 6e 73 69 64 65 72 20 61 20 73 63  ** Consider a sc
1e640 65 6e 61 72 69 6f 20 77 68 65 72 65 20 6f 6e 65  enario where one
1e650 20 70 72 6f 63 65 73 73 20 69 73 20 68 6f 6c 64   process is hold
1e660 69 6e 67 20 61 20 72 65 61 64 20 6c 6f 63 6b 20  ing a read lock 
1e670 74 68 61 74 0a 2a 2a 20 69 74 20 69 73 20 74 72  that.** it is tr
1e680 79 69 6e 67 20 74 6f 20 70 72 6f 6d 6f 74 65 20  ying to promote 
1e690 74 6f 20 61 20 72 65 73 65 72 76 65 64 20 6c 6f  to a reserved lo
1e6a0 63 6b 20 61 6e 64 0a 2a 2a 20 61 20 73 65 63 6f  ck and.** a seco
1e6b0 6e 64 20 70 72 6f 63 65 73 73 20 69 73 20 68 6f  nd process is ho
1e6c0 6c 64 69 6e 67 20 61 20 72 65 73 65 72 76 65 64  lding a reserved
1e6d0 20 6c 6f 63 6b 20 74 68 61 74 20 69 74 20 69 73   lock that it is
1e6e0 20 74 72 79 69 6e 67 0a 2a 2a 20 74 6f 20 70 72   trying.** to pr
1e6f0 6f 6d 6f 74 65 20 74 6f 20 61 6e 20 65 78 63 6c  omote to an excl
1e700 75 73 69 76 65 20 6c 6f 63 6b 2e 20 20 54 68 65  usive lock.  The
1e710 20 66 69 72 73 74 20 70 72 6f 63 65 73 73 20 63   first process c
1e720 61 6e 6e 6f 74 20 70 72 6f 63 65 65 64 0a 2a 2a  annot proceed.**
1e730 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20 62   because it is b
1e740 6c 6f 63 6b 65 64 20 62 79 20 74 68 65 20 73 65  locked by the se
1e750 63 6f 6e 64 20 61 6e 64 20 74 68 65 20 73 65 63  cond and the sec
1e760 6f 6e 64 20 70 72 6f 63 65 73 73 20 63 61 6e 6e  ond process cann
1e770 6f 74 0a 2a 2a 20 70 72 6f 63 65 65 64 20 62 65  ot.** proceed be
1e780 63 61 75 73 65 20 69 74 20 69 73 20 62 6c 6f 63  cause it is bloc
1e790 6b 65 64 20 62 79 20 74 68 65 20 66 69 72 73 74  ked by the first
1e7a0 2e 20 20 49 66 20 62 6f 74 68 20 70 72 6f 63 65  .  If both proce
1e7b0 73 73 65 73 0a 2a 2a 20 69 6e 76 6f 6b 65 20 74  sses.** invoke t
1e7c0 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 73  he busy handlers
1e7d0 2c 20 6e 65 69 74 68 65 72 20 77 69 6c 6c 20 6d  , neither will m
1e7e0 61 6b 65 20 61 6e 79 20 70 72 6f 67 72 65 73 73  ake any progress
1e7f0 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 0a 2a 2a  .  Therefore,.**
1e800 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 73 20   SQLite returns 
1e810 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 66 6f  [SQLITE_BUSY] fo
1e820 72 20 74 68 65 20 66 69 72 73 74 20 70 72 6f 63  r the first proc
1e830 65 73 73 2c 20 68 6f 70 69 6e 67 20 74 68 61 74  ess, hoping that
1e840 20 74 68 69 73 0a 2a 2a 20 77 69 6c 6c 20 69 6e   this.** will in
1e850 64 75 63 65 20 74 68 65 20 66 69 72 73 74 20 70  duce the first p
1e860 72 6f 63 65 73 73 20 74 6f 20 72 65 6c 65 61 73  rocess to releas
1e870 65 20 69 74 73 20 72 65 61 64 20 6c 6f 63 6b 20  e its read lock 
1e880 61 6e 64 20 61 6c 6c 6f 77 0a 2a 2a 20 74 68 65  and allow.** the
1e890 20 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73 20   second process 
1e8a0 74 6f 20 70 72 6f 63 65 65 64 2e 0a 2a 2a 0a 2a  to proceed..**.*
1e8b0 2a 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 62  * ^The default b
1e8c0 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  usy callback is 
1e8d0 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68  NULL..**.** ^(Th
1e8e0 65 72 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20  ere can only be 
1e8f0 61 20 73 69 6e 67 6c 65 20 62 75 73 79 20 68 61  a single busy ha
1e900 6e 64 6c 65 72 20 64 65 66 69 6e 65 64 20 66 6f  ndler defined fo
1e910 72 20 65 61 63 68 0a 2a 2a 20 5b 64 61 74 61 62  r each.** [datab
1e920 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e  ase connection].
1e930 20 20 53 65 74 74 69 6e 67 20 61 20 6e 65 77 20    Setting a new 
1e940 62 75 73 79 20 68 61 6e 64 6c 65 72 20 63 6c 65  busy handler cle
1e950 61 72 73 20 61 6e 79 0a 2a 2a 20 70 72 65 76 69  ars any.** previ
1e960 6f 75 73 6c 79 20 73 65 74 20 68 61 6e 64 6c 65  ously set handle
1e970 72 2e 29 5e 20 20 5e 4e 6f 74 65 20 74 68 61 74  r.)^  ^Note that
1e980 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65   calling [sqlite
1e990 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29  3_busy_timeout()
1e9a0 5d 0a 2a 2a 20 6f 72 20 65 76 61 6c 75 61 74 69  ].** or evaluati
1e9b0 6e 67 20 5b 50 52 41 47 4d 41 20 62 75 73 79 5f  ng [PRAGMA busy_
1e9c0 74 69 6d 65 6f 75 74 3d 4e 5d 20 77 69 6c 6c 20  timeout=N] will 
1e9d0 63 68 61 6e 67 65 20 74 68 65 0a 2a 2a 20 62 75  change the.** bu
1e9e0 73 79 20 68 61 6e 64 6c 65 72 20 61 6e 64 20 74  sy handler and t
1e9f0 68 75 73 20 63 6c 65 61 72 20 61 6e 79 20 70 72  hus clear any pr
1ea00 65 76 69 6f 75 73 6c 79 20 73 65 74 20 62 75 73  eviously set bus
1ea10 79 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a 0a 2a 2a  y handler..**.**
1ea20 20 54 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61   The busy callba
1ea30 63 6b 20 73 68 6f 75 6c 64 20 6e 6f 74 20 74 61  ck should not ta
1ea40 6b 65 20 61 6e 79 20 61 63 74 69 6f 6e 73 20 77  ke any actions w
1ea50 68 69 63 68 20 6d 6f 64 69 66 79 20 74 68 65 0a  hich modify the.
1ea60 2a 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ** database conn
1ea70 65 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 76 6f  ection that invo
1ea80 6b 65 64 20 74 68 65 20 62 75 73 79 20 68 61 6e  ked the busy han
1ea90 64 6c 65 72 2e 20 20 49 6e 20 6f 74 68 65 72 20  dler.  In other 
1eaa0 77 6f 72 64 73 2c 0a 2a 2a 20 74 68 65 20 62 75  words,.** the bu
1eab0 73 79 20 68 61 6e 64 6c 65 72 20 69 73 20 6e 6f  sy handler is no
1eac0 74 20 72 65 65 6e 74 72 61 6e 74 2e 20 20 41 6e  t reentrant.  An
1ead0 79 20 73 75 63 68 20 61 63 74 69 6f 6e 73 0a 2a  y such actions.*
1eae0 2a 20 72 65 73 75 6c 74 20 69 6e 20 75 6e 64 65  * result in unde
1eaf0 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 0a  fined behavior..
1eb00 2a 2a 20 0a 2a 2a 20 41 20 62 75 73 79 20 68 61  ** .** A busy ha
1eb10 6e 64 6c 65 72 20 6d 75 73 74 20 6e 6f 74 20 63  ndler must not c
1eb20 6c 6f 73 65 20 74 68 65 20 64 61 74 61 62 61 73  lose the databas
1eb30 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20  e connection.** 
1eb40 6f 72 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  or [prepared sta
1eb50 74 65 6d 65 6e 74 5d 20 74 68 61 74 20 69 6e 76  tement] that inv
1eb60 6f 6b 65 64 20 74 68 65 20 62 75 73 79 20 68 61  oked the busy ha
1eb70 6e 64 6c 65 72 2e 0a 2a 2f 0a 69 6e 74 20 73 71  ndler..*/.int sq
1eb80 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c  lite3_busy_handl
1eb90 65 72 28 73 71 6c 69 74 65 33 2a 2c 69 6e 74 28  er(sqlite3*,int(
1eba0 2a 29 28 76 6f 69 64 2a 2c 69 6e 74 29 2c 76 6f  *)(void*,int),vo
1ebb0 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  id*);../*.** CAP
1ebc0 49 33 52 45 46 3a 20 53 65 74 20 41 20 42 75 73  I3REF: Set A Bus
1ebd0 79 20 54 69 6d 65 6f 75 74 0a 2a 2a 20 4d 45 54  y Timeout.** MET
1ebe0 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  HOD: sqlite3.**.
1ebf0 2a 2a 20 5e 54 68 69 73 20 72 6f 75 74 69 6e 65  ** ^This routine
1ec00 20 73 65 74 73 20 61 20 5b 73 71 6c 69 74 65 33   sets a [sqlite3
1ec10 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 20 7c 20  _busy_handler | 
1ec20 62 75 73 79 20 68 61 6e 64 6c 65 72 5d 20 74 68  busy handler] th
1ec30 61 74 20 73 6c 65 65 70 73 0a 2a 2a 20 66 6f 72  at sleeps.** for
1ec40 20 61 20 73 70 65 63 69 66 69 65 64 20 61 6d 6f   a specified amo
1ec50 75 6e 74 20 6f 66 20 74 69 6d 65 20 77 68 65 6e  unt of time when
1ec60 20 61 20 74 61 62 6c 65 20 69 73 20 6c 6f 63 6b   a table is lock
1ec70 65 64 2e 20 20 5e 54 68 65 20 68 61 6e 64 6c 65  ed.  ^The handle
1ec80 72 0a 2a 2a 20 77 69 6c 6c 20 73 6c 65 65 70 20  r.** will sleep 
1ec90 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75  multiple times u
1eca0 6e 74 69 6c 20 61 74 20 6c 65 61 73 74 20 22 6d  ntil at least "m
1ecb0 73 22 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20  s" milliseconds 
1ecc0 6f 66 20 73 6c 65 65 70 69 6e 67 0a 2a 2a 20 68  of sleeping.** h
1ecd0 61 76 65 20 61 63 63 75 6d 75 6c 61 74 65 64 2e  ave accumulated.
1ece0 20 20 5e 41 66 74 65 72 20 61 74 20 6c 65 61 73    ^After at leas
1ecf0 74 20 22 6d 73 22 20 6d 69 6c 6c 69 73 65 63 6f  t "ms" milliseco
1ed00 6e 64 73 20 6f 66 20 73 6c 65 65 70 69 6e 67 2c  nds of sleeping,
1ed10 0a 2a 2a 20 74 68 65 20 68 61 6e 64 6c 65 72 20  .** the handler 
1ed20 72 65 74 75 72 6e 73 20 30 20 77 68 69 63 68 20  returns 0 which 
1ed30 63 61 75 73 65 73 20 5b 73 71 6c 69 74 65 33 5f  causes [sqlite3_
1ed40 73 74 65 70 28 29 5d 20 74 6f 20 72 65 74 75 72  step()] to retur
1ed50 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 42 55 53  n.** [SQLITE_BUS
1ed60 59 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 69  Y]..**.** ^Calli
1ed70 6e 67 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  ng this routine 
1ed80 77 69 74 68 20 61 6e 20 61 72 67 75 6d 65 6e 74  with an argument
1ed90 20 6c 65 73 73 20 74 68 61 6e 20 6f 72 20 65 71   less than or eq
1eda0 75 61 6c 20 74 6f 20 7a 65 72 6f 0a 2a 2a 20 74  ual to zero.** t
1edb0 75 72 6e 73 20 6f 66 66 20 61 6c 6c 20 62 75 73  urns off all bus
1edc0 79 20 68 61 6e 64 6c 65 72 73 2e 0a 2a 2a 0a 2a  y handlers..**.*
1edd0 2a 20 5e 28 54 68 65 72 65 20 63 61 6e 20 6f 6e  * ^(There can on
1ede0 6c 79 20 62 65 20 61 20 73 69 6e 67 6c 65 20 62  ly be a single b
1edf0 75 73 79 20 68 61 6e 64 6c 65 72 20 66 6f 72 20  usy handler for 
1ee00 61 20 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a 20  a particular.** 
1ee10 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
1ee20 74 69 6f 6e 5d 20 61 74 20 61 6e 79 20 67 69 76  tion] at any giv
1ee30 65 6e 20 6d 6f 6d 65 6e 74 2e 20 20 49 66 20 61  en moment.  If a
1ee40 6e 6f 74 68 65 72 20 62 75 73 79 20 68 61 6e 64  nother busy hand
1ee50 6c 65 72 0a 2a 2a 20 77 61 73 20 64 65 66 69 6e  ler.** was defin
1ee60 65 64 20 20 28 75 73 69 6e 67 20 5b 73 71 6c 69  ed  (using [sqli
1ee70 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72  te3_busy_handler
1ee80 28 29 5d 29 20 70 72 69 6f 72 20 74 6f 20 63 61  ()]) prior to ca
1ee90 6c 6c 69 6e 67 0a 2a 2a 20 74 68 69 73 20 72 6f  lling.** this ro
1eea0 75 74 69 6e 65 2c 20 74 68 61 74 20 6f 74 68 65  utine, that othe
1eeb0 72 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 69  r busy handler i
1eec0 73 20 63 6c 65 61 72 65 64 2e 29 5e 0a 2a 2a 0a  s cleared.)^.**.
1eed0 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 20 5b 50  ** See also:  [P
1eee0 52 41 47 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f  RAGMA busy_timeo
1eef0 75 74 5d 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74  ut].*/.int sqlit
1ef00 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28  e3_busy_timeout(
1ef10 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20 6d 73  sqlite3*, int ms
1ef20 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
1ef30 45 46 3a 20 43 6f 6e 76 65 6e 69 65 6e 63 65 20  EF: Convenience 
1ef40 52 6f 75 74 69 6e 65 73 20 46 6f 72 20 52 75 6e  Routines For Run
1ef50 6e 69 6e 67 20 51 75 65 72 69 65 73 0a 2a 2a 20  ning Queries.** 
1ef60 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
1ef70 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 73 20 61 20  **.** This is a 
1ef80 6c 65 67 61 63 79 20 69 6e 74 65 72 66 61 63 65  legacy interface
1ef90 20 74 68 61 74 20 69 73 20 70 72 65 73 65 72 76   that is preserv
1efa0 65 64 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73  ed for backwards
1efb0 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a   compatibility..
1efc0 2a 2a 20 55 73 65 20 6f 66 20 74 68 69 73 20 69  ** Use of this i
1efd0 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f 74 20  nterface is not 
1efe0 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0a 2a 2a 0a  recommended..**.
1eff0 2a 2a 20 44 65 66 69 6e 69 74 69 6f 6e 3a 20 41  ** Definition: A
1f000 20 3c 62 3e 72 65 73 75 6c 74 20 74 61 62 6c 65   <b>result table
1f010 3c 2f 62 3e 20 69 73 20 6d 65 6d 6f 72 79 20 64  </b> is memory d
1f020 61 74 61 20 73 74 72 75 63 74 75 72 65 20 63 72  ata structure cr
1f030 65 61 74 65 64 20 62 79 20 74 68 65 0a 2a 2a 20  eated by the.** 
1f040 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62  [sqlite3_get_tab
1f050 6c 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e  le()] interface.
1f060 20 20 41 20 72 65 73 75 6c 74 20 74 61 62 6c 65    A result table
1f070 20 72 65 63 6f 72 64 73 20 74 68 65 0a 2a 2a 20   records the.** 
1f080 63 6f 6d 70 6c 65 74 65 20 71 75 65 72 79 20 72  complete query r
1f090 65 73 75 6c 74 73 20 66 72 6f 6d 20 6f 6e 65 20  esults from one 
1f0a0 6f 72 20 6d 6f 72 65 20 71 75 65 72 69 65 73 2e  or more queries.
1f0b0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 74 61 62 6c 65  .**.** The table
1f0c0 20 63 6f 6e 63 65 70 74 75 61 6c 6c 79 20 68 61   conceptually ha
1f0d0 73 20 61 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  s a number of ro
1f0e0 77 73 20 61 6e 64 20 63 6f 6c 75 6d 6e 73 2e 20  ws and columns. 
1f0f0 20 42 75 74 0a 2a 2a 20 74 68 65 73 65 20 6e 75   But.** these nu
1f100 6d 62 65 72 73 20 61 72 65 20 6e 6f 74 20 70 61  mbers are not pa
1f110 72 74 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  rt of the result
1f120 20 74 61 62 6c 65 20 69 74 73 65 6c 66 2e 20 20   table itself.  
1f130 54 68 65 73 65 0a 2a 2a 20 6e 75 6d 62 65 72 73  These.** numbers
1f140 20 61 72 65 20 6f 62 74 61 69 6e 65 64 20 73 65   are obtained se
1f150 70 61 72 61 74 65 6c 79 2e 20 20 4c 65 74 20 4e  parately.  Let N
1f160 20 62 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   be the number o
1f170 66 20 72 6f 77 73 0a 2a 2a 20 61 6e 64 20 4d 20  f rows.** and M 
1f180 62 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  be the number of
1f190 20 63 6f 6c 75 6d 6e 73 2e 0a 2a 2a 0a 2a 2a 20   columns..**.** 
1f1a0 41 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 69  A result table i
1f1b0 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 70 6f  s an array of po
1f1c0 69 6e 74 65 72 73 20 74 6f 20 7a 65 72 6f 2d 74  inters to zero-t
1f1d0 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20  erminated UTF-8 
1f1e0 73 74 72 69 6e 67 73 2e 0a 2a 2a 20 54 68 65 72  strings..** Ther
1f1f0 65 20 61 72 65 20 28 4e 2b 31 29 2a 4d 20 65 6c  e are (N+1)*M el
1f200 65 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 61 72  ements in the ar
1f210 72 61 79 2e 20 20 54 68 65 20 66 69 72 73 74 20  ray.  The first 
1f220 4d 20 70 6f 69 6e 74 65 72 73 20 70 6f 69 6e 74  M pointers point
1f230 0a 2a 2a 20 74 6f 20 7a 65 72 6f 2d 74 65 72 6d  .** to zero-term
1f240 69 6e 61 74 65 64 20 73 74 72 69 6e 67 73 20 74  inated strings t
1f250 68 61 74 20 20 63 6f 6e 74 61 69 6e 20 74 68 65  hat  contain the
1f260 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f   names of the co
1f270 6c 75 6d 6e 73 2e 0a 2a 2a 20 54 68 65 20 72 65  lumns..** The re
1f280 6d 61 69 6e 69 6e 67 20 65 6e 74 72 69 65 73 20  maining entries 
1f290 61 6c 6c 20 70 6f 69 6e 74 20 74 6f 20 71 75 65  all point to que
1f2a0 72 79 20 72 65 73 75 6c 74 73 2e 20 20 4e 55 4c  ry results.  NUL
1f2b0 4c 20 76 61 6c 75 65 73 20 72 65 73 75 6c 74 0a  L values result.
1f2c0 2a 2a 20 69 6e 20 4e 55 4c 4c 20 70 6f 69 6e 74  ** in NULL point
1f2d0 65 72 73 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20  ers.  All other 
1f2e0 76 61 6c 75 65 73 20 61 72 65 20 69 6e 20 74 68  values are in th
1f2f0 65 69 72 20 55 54 46 2d 38 20 7a 65 72 6f 2d 74  eir UTF-8 zero-t
1f300 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72  erminated.** str
1f310 69 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69  ing representati
1f320 6f 6e 20 61 73 20 72 65 74 75 72 6e 65 64 20 62  on as returned b
1f330 79 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  y [sqlite3_colum
1f340 6e 5f 74 65 78 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a  n_text()]..**.**
1f350 20 41 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20   A result table 
1f360 6d 69 67 68 74 20 63 6f 6e 73 69 73 74 20 6f 66  might consist of
1f370 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6d 65 6d   one or more mem
1f380 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e  ory allocations.
1f390 0a 2a 2a 20 49 74 20 69 73 20 6e 6f 74 20 73 61  .** It is not sa
1f3a0 66 65 20 74 6f 20 70 61 73 73 20 61 20 72 65 73  fe to pass a res
1f3b0 75 6c 74 20 74 61 62 6c 65 20 64 69 72 65 63 74  ult table direct
1f3c0 6c 79 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66  ly to [sqlite3_f
1f3d0 72 65 65 28 29 5d 2e 0a 2a 2a 20 41 20 72 65 73  ree()]..** A res
1f3e0 75 6c 74 20 74 61 62 6c 65 20 73 68 6f 75 6c 64  ult table should
1f3f0 20 62 65 20 64 65 61 6c 6c 6f 63 61 74 65 64 20   be deallocated 
1f400 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 66  using [sqlite3_f
1f410 72 65 65 5f 74 61 62 6c 65 28 29 5d 2e 0a 2a 2a  ree_table()]..**
1f420 0a 2a 2a 20 5e 28 41 73 20 61 6e 20 65 78 61 6d  .** ^(As an exam
1f430 70 6c 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ple of the resul
1f440 74 20 74 61 62 6c 65 20 66 6f 72 6d 61 74 2c 20  t table format, 
1f450 73 75 70 70 6f 73 65 20 61 20 71 75 65 72 79 20  suppose a query 
1f460 72 65 73 75 6c 74 0a 2a 2a 20 69 73 20 61 73 20  result.** is as 
1f470 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c  follows:.**.** <
1f480 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
1f490 0a 2a 2a 20 20 20 20 20 20 20 20 4e 61 6d 65 20  .**        Name 
1f4a0 20 20 20 20 20 20 20 7c 20 41 67 65 0a 2a 2a 20         | Age.** 
1f4b0 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d         ---------
1f4c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a  --------------.*
1f4d0 2a 20 20 20 20 20 20 20 20 41 6c 69 63 65 20 20  *        Alice  
1f4e0 20 20 20 20 20 7c 20 34 33 0a 2a 2a 20 20 20 20       | 43.**    
1f4f0 20 20 20 20 42 6f 62 20 20 20 20 20 20 20 20 20      Bob         
1f500 7c 20 32 38 0a 2a 2a 20 20 20 20 20 20 20 20 43  | 28.**        C
1f510 69 6e 64 79 20 20 20 20 20 20 20 7c 20 32 31 0a  indy       | 21.
1f520 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  ** </pre></block
1f530 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 54 68 65  quote>.**.** The
1f540 72 65 20 61 72 65 20 74 77 6f 20 63 6f 6c 75 6d  re are two colum
1f550 6e 20 28 4d 3d 3d 32 29 20 61 6e 64 20 74 68 72  n (M==2) and thr
1f560 65 65 20 72 6f 77 73 20 28 4e 3d 3d 33 29 2e 20  ee rows (N==3). 
1f570 20 54 68 75 73 20 74 68 65 0a 2a 2a 20 72 65 73   Thus the.** res
1f580 75 6c 74 20 74 61 62 6c 65 20 68 61 73 20 38 20  ult table has 8 
1f590 65 6e 74 72 69 65 73 2e 20 20 53 75 70 70 6f 73  entries.  Suppos
1f5a0 65 20 74 68 65 20 72 65 73 75 6c 74 20 74 61 62  e the result tab
1f5b0 6c 65 20 69 73 20 73 74 6f 72 65 64 0a 2a 2a 20  le is stored.** 
1f5c0 69 6e 20 61 6e 20 61 72 72 61 79 20 6e 61 6d 65  in an array name
1f5d0 73 20 61 7a 52 65 73 75 6c 74 2e 20 20 54 68 65  s azResult.  The
1f5e0 6e 20 61 7a 52 65 73 75 6c 74 20 68 6f 6c 64 73  n azResult holds
1f5f0 20 74 68 69 73 20 63 6f 6e 74 65 6e 74 3a 0a 2a   this content:.*
1f600 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65  *.** <blockquote
1f610 3e 3c 70 72 65 3e 0a 2a 2a 20 20 20 20 20 20 20  ><pre>.**       
1f620 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 30 5d   azResult&#91;0]
1f630 20 3d 20 22 4e 61 6d 65 22 3b 0a 2a 2a 20 20 20   = "Name";.**   
1f640 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39       azResult&#9
1f650 31 3b 31 5d 20 3d 20 22 41 67 65 22 3b 0a 2a 2a  1;1] = "Age";.**
1f660 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74          azResult
1f670 26 23 39 31 3b 32 5d 20 3d 20 22 41 6c 69 63 65  &#91;2] = "Alice
1f680 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52  ";.**        azR
1f690 65 73 75 6c 74 26 23 39 31 3b 33 5d 20 3d 20 22  esult&#91;3] = "
1f6a0 34 33 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61  43";.**        a
1f6b0 7a 52 65 73 75 6c 74 26 23 39 31 3b 34 5d 20 3d  zResult&#91;4] =
1f6c0 20 22 42 6f 62 22 3b 0a 2a 2a 20 20 20 20 20 20   "Bob";.**      
1f6d0 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 35    azResult&#91;5
1f6e0 5d 20 3d 20 22 32 38 22 3b 0a 2a 2a 20 20 20 20  ] = "28";.**    
1f6f0 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31      azResult&#91
1f700 3b 36 5d 20 3d 20 22 43 69 6e 64 79 22 3b 0a 2a  ;6] = "Cindy";.*
1f710 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c  *        azResul
1f720 74 26 23 39 31 3b 37 5d 20 3d 20 22 32 31 22 3b  t&#91;7] = "21";
1f730 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  .** </pre></bloc
1f740 6b 71 75 6f 74 65 3e 29 5e 0a 2a 2a 0a 2a 2a 20  kquote>)^.**.** 
1f750 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 67 65 74  ^The sqlite3_get
1f760 5f 74 61 62 6c 65 28 29 20 66 75 6e 63 74 69 6f  _table() functio
1f770 6e 20 65 76 61 6c 75 61 74 65 73 20 6f 6e 65 20  n evaluates one 
1f780 6f 72 20 6d 6f 72 65 0a 2a 2a 20 73 65 6d 69 63  or more.** semic
1f790 6f 6c 6f 6e 2d 73 65 70 61 72 61 74 65 64 20 53  olon-separated S
1f7a0 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e  QL statements in
1f7b0 20 74 68 65 20 7a 65 72 6f 2d 74 65 72 6d 69 6e   the zero-termin
1f7c0 61 74 65 64 20 55 54 46 2d 38 0a 2a 2a 20 73 74  ated UTF-8.** st
1f7d0 72 69 6e 67 20 6f 66 20 69 74 73 20 32 6e 64 20  ring of its 2nd 
1f7e0 70 61 72 61 6d 65 74 65 72 20 61 6e 64 20 72 65  parameter and re
1f7f0 74 75 72 6e 73 20 61 20 72 65 73 75 6c 74 20 74  turns a result t
1f800 61 62 6c 65 20 74 6f 20 74 68 65 0a 2a 2a 20 70  able to the.** p
1f810 6f 69 6e 74 65 72 20 67 69 76 65 6e 20 69 6e 20  ointer given in 
1f820 69 74 73 20 33 72 64 20 70 61 72 61 6d 65 74 65  its 3rd paramete
1f830 72 2e 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20 74  r..**.** After t
1f840 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 68  he application h
1f850 61 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68  as finished with
1f860 20 74 68 65 20 72 65 73 75 6c 74 20 66 72 6f 6d   the result from
1f870 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62   sqlite3_get_tab
1f880 6c 65 28 29 2c 0a 2a 2a 20 69 74 20 6d 75 73 74  le(),.** it must
1f890 20 70 61 73 73 20 74 68 65 20 72 65 73 75 6c 74   pass the result
1f8a0 20 74 61 62 6c 65 20 70 6f 69 6e 74 65 72 20 74   table pointer t
1f8b0 6f 20 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74  o sqlite3_free_t
1f8c0 61 62 6c 65 28 29 20 69 6e 20 6f 72 64 65 72 20  able() in order 
1f8d0 74 6f 0a 2a 2a 20 72 65 6c 65 61 73 65 20 74 68  to.** release th
1f8e0 65 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 77 61  e memory that wa
1f8f0 73 20 6d 61 6c 6c 6f 63 65 64 2e 20 20 42 65 63  s malloced.  Bec
1f900 61 75 73 65 20 6f 66 20 74 68 65 20 77 61 79 20  ause of the way 
1f910 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  the.** [sqlite3_
1f920 6d 61 6c 6c 6f 63 28 29 5d 20 68 61 70 70 65 6e  malloc()] happen
1f930 73 20 77 69 74 68 69 6e 20 73 71 6c 69 74 65 33  s within sqlite3
1f940 5f 67 65 74 5f 74 61 62 6c 65 28 29 2c 20 74 68  _get_table(), th
1f950 65 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 66 75 6e  e calling.** fun
1f960 63 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 74  ction must not t
1f970 72 79 20 74 6f 20 63 61 6c 6c 20 5b 73 71 6c 69  ry to call [sqli
1f980 74 65 33 5f 66 72 65 65 28 29 5d 20 64 69 72 65  te3_free()] dire
1f990 63 74 6c 79 2e 20 20 4f 6e 6c 79 0a 2a 2a 20 5b  ctly.  Only.** [
1f9a0 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62  sqlite3_free_tab
1f9b0 6c 65 28 29 5d 20 69 73 20 61 62 6c 65 20 74 6f  le()] is able to
1f9c0 20 72 65 6c 65 61 73 65 20 74 68 65 20 6d 65 6d   release the mem
1f9d0 6f 72 79 20 70 72 6f 70 65 72 6c 79 20 61 6e 64  ory properly and
1f9e0 20 73 61 66 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 54   safely..**.** T
1f9f0 68 65 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  he sqlite3_get_t
1fa00 61 62 6c 65 28 29 20 69 6e 74 65 72 66 61 63 65  able() interface
1fa10 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
1fa20 61 73 20 61 20 77 72 61 70 70 65 72 20 61 72 6f  as a wrapper aro
1fa30 75 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  und.** [sqlite3_
1fa40 65 78 65 63 28 29 5d 2e 20 20 54 68 65 20 73 71  exec()].  The sq
1fa50 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28  lite3_get_table(
1fa60 29 20 72 6f 75 74 69 6e 65 20 64 6f 65 73 20 6e  ) routine does n
1fa70 6f 74 20 68 61 76 65 20 61 63 63 65 73 73 0a 2a  ot have access.*
1fa80 2a 20 74 6f 20 61 6e 79 20 69 6e 74 65 72 6e 61  * to any interna
1fa90 6c 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65  l data structure
1faa0 73 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 49 74  s of SQLite.  It
1fab0 20 75 73 65 73 20 6f 6e 6c 79 20 74 68 65 20 70   uses only the p
1fac0 75 62 6c 69 63 0a 2a 2a 20 69 6e 74 65 72 66 61  ublic.** interfa
1fad0 63 65 20 64 65 66 69 6e 65 64 20 68 65 72 65 2e  ce defined here.
1fae0 20 20 41 73 20 61 20 63 6f 6e 73 65 71 75 65 6e    As a consequen
1faf0 63 65 2c 20 65 72 72 6f 72 73 20 74 68 61 74 20  ce, errors that 
1fb00 6f 63 63 75 72 20 69 6e 20 74 68 65 0a 2a 2a 20  occur in the.** 
1fb10 77 72 61 70 70 65 72 20 6c 61 79 65 72 20 6f 75  wrapper layer ou
1fb20 74 73 69 64 65 20 6f 66 20 74 68 65 20 69 6e 74  tside of the int
1fb30 65 72 6e 61 6c 20 5b 73 71 6c 69 74 65 33 5f 65  ernal [sqlite3_e
1fb40 78 65 63 28 29 5d 20 63 61 6c 6c 20 61 72 65 20  xec()] call are 
1fb50 6e 6f 74 0a 2a 2a 20 72 65 66 6c 65 63 74 65 64  not.** reflected
1fb60 20 69 6e 20 73 75 62 73 65 71 75 65 6e 74 20 63   in subsequent c
1fb70 61 6c 6c 73 20 74 6f 20 5b 73 71 6c 69 74 65 33  alls to [sqlite3
1fb80 5f 65 72 72 63 6f 64 65 28 29 5d 20 6f 72 0a 2a  _errcode()] or.*
1fb90 2a 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  * [sqlite3_errms
1fba0 67 28 29 5d 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  g()]..*/.int sql
1fbb0 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 0a  ite3_get_table(.
1fbc0 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20    sqlite3 *db,  
1fbd0 20 20 20 20 20 20 20 20 2f 2a 20 41 6e 20 6f 70          /* An op
1fbe0 65 6e 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 20  en database */. 
1fbf0 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71   const char *zSq
1fc00 6c 2c 20 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f  l,     /* SQL to
1fc10 20 62 65 20 65 76 61 6c 75 61 74 65 64 20 2a 2f   be evaluated */
1fc20 0a 20 20 63 68 61 72 20 2a 2a 2a 70 61 7a 52 65  .  char ***pazRe
1fc30 73 75 6c 74 2c 20 20 20 20 2f 2a 20 52 65 73 75  sult,    /* Resu
1fc40 6c 74 73 20 6f 66 20 74 68 65 20 71 75 65 72 79  lts of the query
1fc50 20 2a 2f 0a 20 20 69 6e 74 20 2a 70 6e 52 6f 77   */.  int *pnRow
1fc60 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e  ,           /* N
1fc70 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20  umber of result 
1fc80 72 6f 77 73 20 77 72 69 74 74 65 6e 20 68 65 72  rows written her
1fc90 65 20 2a 2f 0a 20 20 69 6e 74 20 2a 70 6e 43 6f  e */.  int *pnCo
1fca0 6c 75 6d 6e 2c 20 20 20 20 20 20 20 20 2f 2a 20  lumn,        /* 
1fcb0 4e 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74  Number of result
1fcc0 20 63 6f 6c 75 6d 6e 73 20 77 72 69 74 74 65 6e   columns written
1fcd0 20 68 65 72 65 20 2a 2f 0a 20 20 63 68 61 72 20   here */.  char 
1fce0 2a 2a 70 7a 45 72 72 6d 73 67 20 20 20 20 20 20  **pzErrmsg      
1fcf0 20 2f 2a 20 45 72 72 6f 72 20 6d 73 67 20 77 72   /* Error msg wr
1fd00 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29 3b  itten here */.);
1fd10 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72  .void sqlite3_fr
1fd20 65 65 5f 74 61 62 6c 65 28 63 68 61 72 20 2a 2a  ee_table(char **
1fd30 72 65 73 75 6c 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20  result);../*.** 
1fd40 43 41 50 49 33 52 45 46 3a 20 46 6f 72 6d 61 74  CAPI3REF: Format
1fd50 74 65 64 20 53 74 72 69 6e 67 20 50 72 69 6e 74  ted String Print
1fd60 69 6e 67 20 46 75 6e 63 74 69 6f 6e 73 0a 2a 2a  ing Functions.**
1fd70 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e  .** These routin
1fd80 65 73 20 61 72 65 20 77 6f 72 6b 2d 61 6c 69 6b  es are work-alik
1fd90 65 73 20 6f 66 20 74 68 65 20 22 70 72 69 6e 74  es of the "print
1fda0 66 28 29 22 20 66 61 6d 69 6c 79 20 6f 66 20 66  f()" family of f
1fdb0 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 66 72 6f 6d  unctions.** from
1fdc0 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 43 20   the standard C 
1fdd0 6c 69 62 72 61 72 79 2e 0a 2a 2a 20 54 68 65 73  library..** Thes
1fde0 65 20 72 6f 75 74 69 6e 65 73 20 75 6e 64 65 72  e routines under
1fdf0 73 74 61 6e 64 20 6d 6f 73 74 20 6f 66 20 74 68  stand most of th
1fe00 65 20 63 6f 6d 6d 6f 6e 20 66 6f 72 6d 61 74 74  e common formatt
1fe10 69 6e 67 20 6f 70 74 69 6f 6e 73 20 66 72 6f 6d  ing options from
1fe20 0a 2a 2a 20 74 68 65 20 73 74 61 6e 64 61 72 64  .** the standard
1fe30 20 6c 69 62 72 61 72 79 20 70 72 69 6e 74 66 28   library printf(
1fe40 29 20 0a 2a 2a 20 70 6c 75 73 20 73 6f 6d 65 20  ) .** plus some 
1fe50 61 64 64 69 74 69 6f 6e 61 6c 20 6e 6f 6e 2d 73  additional non-s
1fe60 74 61 6e 64 61 72 64 20 66 6f 72 6d 61 74 73 20  tandard formats 
1fe70 28 5b 25 71 5d 2c 20 5b 25 51 5d 2c 20 5b 25 77  ([%q], [%Q], [%w
1fe80 5d 2c 20 61 6e 64 20 5b 25 7a 5d 29 2e 0a 2a 2a  ], and [%z])..**
1fe90 20 53 65 65 20 74 68 65 20 5b 62 75 69 6c 74 2d   See the [built-
1fea0 69 6e 20 70 72 69 6e 74 66 28 29 5d 20 64 6f 63  in printf()] doc
1feb0 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 64  umentation for d
1fec0 65 74 61 69 6c 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54  etails..**.** ^T
1fed0 68 65 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  he sqlite3_mprin
1fee0 74 66 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33  tf() and sqlite3
1fef0 5f 76 6d 70 72 69 6e 74 66 28 29 20 72 6f 75 74  _vmprintf() rout
1ff00 69 6e 65 73 20 77 72 69 74 65 20 74 68 65 69 72  ines write their
1ff10 0a 2a 2a 20 72 65 73 75 6c 74 73 20 69 6e 74 6f  .** results into
1ff20 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64   memory obtained
1ff30 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d   from [sqlite3_m
1ff40 61 6c 6c 6f 63 36 34 28 29 5d 2e 0a 2a 2a 20 54  alloc64()]..** T
1ff50 68 65 20 73 74 72 69 6e 67 73 20 72 65 74 75 72  he strings retur
1ff60 6e 65 64 20 62 79 20 74 68 65 73 65 20 74 77 6f  ned by these two
1ff70 20 72 6f 75 74 69 6e 65 73 20 73 68 6f 75 6c 64   routines should
1ff80 20 62 65 0a 2a 2a 20 72 65 6c 65 61 73 65 64 20   be.** released 
1ff90 62 79 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65  by [sqlite3_free
1ffa0 28 29 5d 2e 20 20 5e 42 6f 74 68 20 72 6f 75 74  ()].  ^Both rout
1ffb0 69 6e 65 73 20 72 65 74 75 72 6e 20 61 0a 2a 2a  ines return a.**
1ffc0 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69 66   NULL pointer if
1ffd0 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
1ffe0 36 34 28 29 5d 20 69 73 20 75 6e 61 62 6c 65 20  64()] is unable 
1fff0 74 6f 20 61 6c 6c 6f 63 61 74 65 20 65 6e 6f 75  to allocate enou
20000 67 68 0a 2a 2a 20 6d 65 6d 6f 72 79 20 74 6f 20  gh.** memory to 
20010 68 6f 6c 64 20 74 68 65 20 72 65 73 75 6c 74 69  hold the resulti
20020 6e 67 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a  ng string..**.**
20030 20 5e 28 54 68 65 20 73 71 6c 69 74 65 33 5f 73   ^(The sqlite3_s
20040 6e 70 72 69 6e 74 66 28 29 20 72 6f 75 74 69 6e  nprintf() routin
20050 65 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20  e is similar to 
20060 22 73 6e 70 72 69 6e 74 66 28 29 22 20 66 72 6f  "snprintf()" fro
20070 6d 0a 2a 2a 20 74 68 65 20 73 74 61 6e 64 61 72  m.** the standar
20080 64 20 43 20 6c 69 62 72 61 72 79 2e 20 20 54 68  d C library.  Th
20090 65 20 72 65 73 75 6c 74 20 69 73 20 77 72 69 74  e result is writ
200a0 74 65 6e 20 69 6e 74 6f 20 74 68 65 0a 2a 2a 20  ten into the.** 
200b0 62 75 66 66 65 72 20 73 75 70 70 6c 69 65 64 20  buffer supplied 
200c0 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61  as the second pa
200d0 72 61 6d 65 74 65 72 20 77 68 6f 73 65 20 73 69  rameter whose si
200e0 7a 65 20 69 73 20 67 69 76 65 6e 20 62 79 0a 2a  ze is given by.*
200f0 2a 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61  * the first para
20100 6d 65 74 65 72 2e 20 4e 6f 74 65 20 74 68 61 74  meter. Note that
20110 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20 74 68   the order of th
20120 65 0a 2a 2a 20 66 69 72 73 74 20 74 77 6f 20 70  e.** first two p
20130 61 72 61 6d 65 74 65 72 73 20 69 73 20 72 65 76  arameters is rev
20140 65 72 73 65 64 20 66 72 6f 6d 20 73 6e 70 72 69  ersed from snpri
20150 6e 74 66 28 29 2e 29 5e 20 20 54 68 69 73 20 69  ntf().)^  This i
20160 73 20 61 6e 0a 2a 2a 20 68 69 73 74 6f 72 69 63  s an.** historic
20170 61 6c 20 61 63 63 69 64 65 6e 74 20 74 68 61 74  al accident that
20180 20 63 61 6e 6e 6f 74 20 62 65 20 66 69 78 65 64   cannot be fixed
20190 20 77 69 74 68 6f 75 74 20 62 72 65 61 6b 69 6e   without breakin
201a0 67 0a 2a 2a 20 62 61 63 6b 77 61 72 64 73 20 63  g.** backwards c
201b0 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 20 20 5e  ompatibility.  ^
201c0 28 4e 6f 74 65 20 61 6c 73 6f 20 74 68 61 74 20  (Note also that 
201d0 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66  sqlite3_snprintf
201e0 28 29 0a 2a 2a 20 72 65 74 75 72 6e 73 20 61 20  ().** returns a 
201f0 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 73 20 62  pointer to its b
20200 75 66 66 65 72 20 69 6e 73 74 65 61 64 20 6f 66  uffer instead of
20210 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a   the number of.*
20220 2a 20 63 68 61 72 61 63 74 65 72 73 20 61 63 74  * characters act
20230 75 61 6c 6c 79 20 77 72 69 74 74 65 6e 20 69 6e  ually written in
20240 74 6f 20 74 68 65 20 62 75 66 66 65 72 2e 29 5e  to the buffer.)^
20250 20 20 57 65 20 61 64 6d 69 74 20 74 68 61 74 0a    We admit that.
20260 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ** the number of
20270 20 63 68 61 72 61 63 74 65 72 73 20 77 72 69 74   characters writ
20280 74 65 6e 20 77 6f 75 6c 64 20 62 65 20 61 20 6d  ten would be a m
20290 6f 72 65 20 75 73 65 66 75 6c 20 72 65 74 75 72  ore useful retur
202a0 6e 0a 2a 2a 20 76 61 6c 75 65 20 62 75 74 20 77  n.** value but w
202b0 65 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20  e cannot change 
202c0 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  the implementati
202d0 6f 6e 20 6f 66 20 73 71 6c 69 74 65 33 5f 73 6e  on of sqlite3_sn
202e0 70 72 69 6e 74 66 28 29 0a 2a 2a 20 6e 6f 77 20  printf().** now 
202f0 77 69 74 68 6f 75 74 20 62 72 65 61 6b 69 6e 67  without breaking
20300 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a   compatibility..
20310 2a 2a 0a 2a 2a 20 5e 41 73 20 6c 6f 6e 67 20 61  **.** ^As long a
20320 73 20 74 68 65 20 62 75 66 66 65 72 20 73 69 7a  s the buffer siz
20330 65 20 69 73 20 67 72 65 61 74 65 72 20 74 68 61  e is greater tha
20340 6e 20 7a 65 72 6f 2c 20 73 71 6c 69 74 65 33 5f  n zero, sqlite3_
20350 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a 20 67 75  snprintf().** gu
20360 61 72 61 6e 74 65 65 73 20 74 68 61 74 20 74 68  arantees that th
20370 65 20 62 75 66 66 65 72 20 69 73 20 61 6c 77 61  e buffer is alwa
20380 79 73 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  ys zero-terminat
20390 65 64 2e 20 20 5e 54 68 65 20 66 69 72 73 74 0a  ed.  ^The first.
203a0 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 22 6e 22  ** parameter "n"
203b0 20 69 73 20 74 68 65 20 74 6f 74 61 6c 20 73 69   is the total si
203c0 7a 65 20 6f 66 20 74 68 65 20 62 75 66 66 65 72  ze of the buffer
203d0 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 70 61 63  , including spac
203e0 65 20 66 6f 72 0a 2a 2a 20 74 68 65 20 7a 65 72  e for.** the zer
203f0 6f 20 74 65 72 6d 69 6e 61 74 6f 72 2e 20 20 53  o terminator.  S
20400 6f 20 74 68 65 20 6c 6f 6e 67 65 73 74 20 73 74  o the longest st
20410 72 69 6e 67 20 74 68 61 74 20 63 61 6e 20 62 65  ring that can be
20420 20 63 6f 6d 70 6c 65 74 65 6c 79 0a 2a 2a 20 77   completely.** w
20430 72 69 74 74 65 6e 20 77 69 6c 6c 20 62 65 20 6e  ritten will be n
20440 2d 31 20 63 68 61 72 61 63 74 65 72 73 2e 0a 2a  -1 characters..*
20450 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
20460 33 5f 76 73 6e 70 72 69 6e 74 66 28 29 20 72 6f  3_vsnprintf() ro
20470 75 74 69 6e 65 20 69 73 20 61 20 76 61 72 61 72  utine is a varar
20480 67 73 20 76 65 72 73 69 6f 6e 20 6f 66 20 73 71  gs version of sq
20490 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29  lite3_snprintf()
204a0 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f  ..**.** See also
204b0 3a 20 20 5b 62 75 69 6c 74 2d 69 6e 20 70 72 69  :  [built-in pri
204c0 6e 74 66 28 29 5d 2c 20 5b 70 72 69 6e 74 66 28  ntf()], [printf(
204d0 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 0a  ) SQL function].
204e0 2a 2f 0a 63 68 61 72 20 2a 73 71 6c 69 74 65 33  */.char *sqlite3
204f0 5f 6d 70 72 69 6e 74 66 28 63 6f 6e 73 74 20 63  _mprintf(const c
20500 68 61 72 2a 2c 2e 2e 2e 29 3b 0a 63 68 61 72 20  har*,...);.char 
20510 2a 73 71 6c 69 74 65 33 5f 76 6d 70 72 69 6e 74  *sqlite3_vmprint
20520 66 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 76  f(const char*, v
20530 61 5f 6c 69 73 74 29 3b 0a 63 68 61 72 20 2a 73  a_list);.char *s
20540 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28  qlite3_snprintf(
20550 69 6e 74 2c 63 68 61 72 2a 2c 63 6f 6e 73 74 20  int,char*,const 
20560 63 68 61 72 2a 2c 20 2e 2e 2e 29 3b 0a 63 68 61  char*, ...);.cha
20570 72 20 2a 73 71 6c 69 74 65 33 5f 76 73 6e 70 72  r *sqlite3_vsnpr
20580 69 6e 74 66 28 69 6e 74 2c 63 68 61 72 2a 2c 63  intf(int,char*,c
20590 6f 6e 73 74 20 63 68 61 72 2a 2c 20 76 61 5f 6c  onst char*, va_l
205a0 69 73 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ist);../*.** CAP
205b0 49 33 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41 6c  I3REF: Memory Al
205c0 6c 6f 63 61 74 69 6f 6e 20 53 75 62 73 79 73 74  location Subsyst
205d0 65 6d 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c  em.**.** The SQL
205e0 69 74 65 20 63 6f 72 65 20 75 73 65 73 20 74 68  ite core uses th
205f0 65 73 65 20 74 68 72 65 65 20 72 6f 75 74 69 6e  ese three routin
20600 65 73 20 66 6f 72 20 61 6c 6c 20 6f 66 20 69 74  es for all of it
20610 73 20 6f 77 6e 0a 2a 2a 20 69 6e 74 65 72 6e 61  s own.** interna
20620 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
20630 69 6f 6e 20 6e 65 65 64 73 2e 20 22 43 6f 72 65  ion needs. "Core
20640 22 20 69 6e 20 74 68 65 20 70 72 65 76 69 6f 75  " in the previou
20650 73 20 73 65 6e 74 65 6e 63 65 0a 2a 2a 20 64 6f  s sentence.** do
20660 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 6f  es not include o
20670 70 65 72 61 74 69 6e 67 2d 73 79 73 74 65 6d 20  perating-system 
20680 73 70 65 63 69 66 69 63 20 56 46 53 20 69 6d 70  specific VFS imp
20690 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 54 68  lementation.  Th
206a0 65 0a 2a 2a 20 57 69 6e 64 6f 77 73 20 56 46 53  e.** Windows VFS
206b0 20 75 73 65 73 20 6e 61 74 69 76 65 20 6d 61 6c   uses native mal
206c0 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65 28 29  loc() and free()
206d0 20 66 6f 72 20 73 6f 6d 65 20 6f 70 65 72 61 74   for some operat
206e0 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ions..**.** ^The
206f0 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
20700 29 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  ) routine return
20710 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
20720 20 62 6c 6f 63 6b 0a 2a 2a 20 6f 66 20 6d 65 6d   block.** of mem
20730 6f 72 79 20 61 74 20 6c 65 61 73 74 20 4e 20 62  ory at least N b
20740 79 74 65 73 20 69 6e 20 6c 65 6e 67 74 68 2c 20  ytes in length, 
20750 77 68 65 72 65 20 4e 20 69 73 20 74 68 65 20 70  where N is the p
20760 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e 49 66  arameter..** ^If
20770 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
20780 29 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 6f  ) is unable to o
20790 62 74 61 69 6e 20 73 75 66 66 69 63 69 65 6e 74  btain sufficient
207a0 20 66 72 65 65 0a 2a 2a 20 6d 65 6d 6f 72 79 2c   free.** memory,
207b0 20 69 74 20 72 65 74 75 72 6e 73 20 61 20 4e 55   it returns a NU
207c0 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e 49 66  LL pointer.  ^If
207d0 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 4e   the parameter N
207e0 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d   to.** sqlite3_m
207f0 61 6c 6c 6f 63 28 29 20 69 73 20 7a 65 72 6f 20  alloc() is zero 
20800 6f 72 20 6e 65 67 61 74 69 76 65 20 74 68 65 6e  or negative then
20810 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
20820 29 20 72 65 74 75 72 6e 73 0a 2a 2a 20 61 20 4e  ) returns.** a N
20830 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a  ULL pointer..**.
20840 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
20850 6d 61 6c 6c 6f 63 36 34 28 4e 29 20 72 6f 75 74  malloc64(N) rout
20860 69 6e 65 20 77 6f 72 6b 73 20 6a 75 73 74 20 6c  ine works just l
20870 69 6b 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d  ike.** sqlite3_m
20880 61 6c 6c 6f 63 28 4e 29 20 65 78 63 65 70 74 20  alloc(N) except 
20890 74 68 61 74 20 4e 20 69 73 20 61 6e 20 75 6e 73  that N is an uns
208a0 69 67 6e 65 64 20 36 34 2d 62 69 74 20 69 6e 74  igned 64-bit int
208b0 65 67 65 72 20 69 6e 73 74 65 61 64 0a 2a 2a 20  eger instead.** 
208c0 6f 66 20 61 20 73 69 67 6e 65 64 20 33 32 2d 62  of a signed 32-b
208d0 69 74 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 0a 2a  it integer..**.*
208e0 2a 20 5e 43 61 6c 6c 69 6e 67 20 73 71 6c 69 74  * ^Calling sqlit
208f0 65 33 5f 66 72 65 65 28 29 20 77 69 74 68 20 61  e3_free() with a
20900 20 70 6f 69 6e 74 65 72 20 70 72 65 76 69 6f 75   pointer previou
20910 73 6c 79 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20  sly returned.** 
20920 62 79 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  by sqlite3_mallo
20930 63 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 72  c() or sqlite3_r
20940 65 61 6c 6c 6f 63 28 29 20 72 65 6c 65 61 73 65  ealloc() release
20950 73 20 74 68 61 74 20 6d 65 6d 6f 72 79 20 73 6f  s that memory so
20960 0a 2a 2a 20 74 68 61 74 20 69 74 20 6d 69 67 68  .** that it migh
20970 74 20 62 65 20 72 65 75 73 65 64 2e 20 20 5e 54  t be reused.  ^T
20980 68 65 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  he sqlite3_free(
20990 29 20 72 6f 75 74 69 6e 65 20 69 73 0a 2a 2a 20  ) routine is.** 
209a0 61 20 6e 6f 2d 6f 70 20 69 66 20 69 73 20 63 61  a no-op if is ca
209b0 6c 6c 65 64 20 77 69 74 68 20 61 20 4e 55 4c 4c  lled with a NULL
209c0 20 70 6f 69 6e 74 65 72 2e 20 20 50 61 73 73 69   pointer.  Passi
209d0 6e 67 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  ng a NULL pointe
209e0 72 0a 2a 2a 20 74 6f 20 73 71 6c 69 74 65 33 5f  r.** to sqlite3_
209f0 66 72 65 65 28 29 20 69 73 20 68 61 72 6d 6c 65  free() is harmle
20a00 73 73 2e 20 20 41 66 74 65 72 20 62 65 69 6e 67  ss.  After being
20a10 20 66 72 65 65 64 2c 20 6d 65 6d 6f 72 79 0a 2a   freed, memory.*
20a20 2a 20 73 68 6f 75 6c 64 20 6e 65 69 74 68 65 72  * should neither
20a30 20 62 65 20 72 65 61 64 20 6e 6f 72 20 77 72 69   be read nor wri
20a40 74 74 65 6e 2e 20 20 45 76 65 6e 20 72 65 61 64  tten.  Even read
20a50 69 6e 67 20 70 72 65 76 69 6f 75 73 6c 79 20 66  ing previously f
20a60 72 65 65 64 0a 2a 2a 20 6d 65 6d 6f 72 79 20 6d  reed.** memory m
20a70 69 67 68 74 20 72 65 73 75 6c 74 20 69 6e 20 61  ight result in a
20a80 20 73 65 67 6d 65 6e 74 61 74 69 6f 6e 20 66 61   segmentation fa
20a90 75 6c 74 20 6f 72 20 6f 74 68 65 72 20 73 65 76  ult or other sev
20aa0 65 72 65 20 65 72 72 6f 72 2e 0a 2a 2a 20 4d 65  ere error..** Me
20ab0 6d 6f 72 79 20 63 6f 72 72 75 70 74 69 6f 6e 2c  mory corruption,
20ac0 20 61 20 73 65 67 6d 65 6e 74 61 74 69 6f 6e 20   a segmentation 
20ad0 66 61 75 6c 74 2c 20 6f 72 20 6f 74 68 65 72 20  fault, or other 
20ae0 73 65 76 65 72 65 20 65 72 72 6f 72 0a 2a 2a 20  severe error.** 
20af0 6d 69 67 68 74 20 72 65 73 75 6c 74 20 69 66 20  might result if 
20b00 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69  sqlite3_free() i
20b10 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 61 20  s called with a 
20b20 6e 6f 6e 2d 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  non-NULL pointer
20b30 20 74 68 61 74 0a 2a 2a 20 77 61 73 20 6e 6f 74   that.** was not
20b40 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73   obtained from s
20b50 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
20b60 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  or sqlite3_reall
20b70 6f 63 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  oc()..**.** ^The
20b80 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
20b90 28 58 2c 4e 29 20 69 6e 74 65 72 66 61 63 65 20  (X,N) interface 
20ba0 61 74 74 65 6d 70 74 73 20 74 6f 20 72 65 73 69  attempts to resi
20bb0 7a 65 20 61 0a 2a 2a 20 70 72 69 6f 72 20 6d 65  ze a.** prior me
20bc0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
20bd0 58 20 74 6f 20 62 65 20 61 74 20 6c 65 61 73 74  X to be at least
20be0 20 4e 20 62 79 74 65 73 2e 0a 2a 2a 20 5e 49 66   N bytes..** ^If
20bf0 20 74 68 65 20 58 20 70 61 72 61 6d 65 74 65 72   the X parameter
20c00 20 74 6f 20 73 71 6c 69 74 65 33 5f 72 65 61 6c   to sqlite3_real
20c10 6c 6f 63 28 58 2c 4e 29 0a 2a 2a 20 69 73 20 61  loc(X,N).** is a
20c20 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68   NULL pointer th
20c30 65 6e 20 69 74 73 20 62 65 68 61 76 69 6f 72 20  en its behavior 
20c40 69 73 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20  is identical to 
20c50 63 61 6c 6c 69 6e 67 0a 2a 2a 20 73 71 6c 69 74  calling.** sqlit
20c60 65 33 5f 6d 61 6c 6c 6f 63 28 4e 29 2e 0a 2a 2a  e3_malloc(N)..**
20c70 20 5e 49 66 20 74 68 65 20 4e 20 70 61 72 61 6d   ^If the N param
20c80 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
20c90 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 69 73 20  realloc(X,N) is 
20ca0 7a 65 72 6f 20 6f 72 0a 2a 2a 20 6e 65 67 61 74  zero or.** negat
20cb0 69 76 65 20 74 68 65 6e 20 74 68 65 20 62 65 68  ive then the beh
20cc0 61 76 69 6f 72 20 69 73 20 65 78 61 63 74 6c 79  avior is exactly
20cd0 20 74 68 65 20 73 61 6d 65 20 61 73 20 63 61 6c   the same as cal
20ce0 6c 69 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  ling.** sqlite3_
20cf0 66 72 65 65 28 58 29 2e 0a 2a 2a 20 5e 73 71 6c  free(X)..** ^sql
20d00 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e  ite3_realloc(X,N
20d10 29 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e  ) returns a poin
20d20 74 65 72 20 74 6f 20 61 20 6d 65 6d 6f 72 79 20  ter to a memory 
20d30 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66  allocation.** of
20d40 20 61 74 20 6c 65 61 73 74 20 4e 20 62 79 74 65   at least N byte
20d50 73 20 69 6e 20 73 69 7a 65 20 6f 72 20 4e 55 4c  s in size or NUL
20d60 4c 20 69 66 20 69 6e 73 75 66 66 69 63 69 65 6e  L if insufficien
20d70 74 20 6d 65 6d 6f 72 79 20 69 73 20 61 76 61 69  t memory is avai
20d80 6c 61 62 6c 65 2e 0a 2a 2a 20 5e 49 66 20 4d 20  lable..** ^If M 
20d90 69 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  is the size of t
20da0 68 65 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74  he prior allocat
20db0 69 6f 6e 2c 20 74 68 65 6e 20 6d 69 6e 28 4e 2c  ion, then min(N,
20dc0 4d 29 20 62 79 74 65 73 0a 2a 2a 20 6f 66 20 74  M) bytes.** of t
20dd0 68 65 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74  he prior allocat
20de0 69 6f 6e 20 61 72 65 20 63 6f 70 69 65 64 20 69  ion are copied i
20df0 6e 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e  nto the beginnin
20e00 67 20 6f 66 20 62 75 66 66 65 72 20 72 65 74 75  g of buffer retu
20e10 72 6e 65 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74  rned.** by sqlit
20e20 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20  e3_realloc(X,N) 
20e30 61 6e 64 20 74 68 65 20 70 72 69 6f 72 20 61 6c  and the prior al
20e40 6c 6f 63 61 74 69 6f 6e 20 69 73 20 66 72 65 65  location is free
20e50 64 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65  d..** ^If sqlite
20e60 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 72  3_realloc(X,N) r
20e70 65 74 75 72 6e 73 20 4e 55 4c 4c 20 61 6e 64 20  eturns NULL and 
20e80 4e 20 69 73 20 70 6f 73 69 74 69 76 65 2c 20 74  N is positive, t
20e90 68 65 6e 20 74 68 65 0a 2a 2a 20 70 72 69 6f 72  hen the.** prior
20ea0 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 73 20 6e   allocation is n
20eb0 6f 74 20 66 72 65 65 64 2e 0a 2a 2a 0a 2a 2a 20  ot freed..**.** 
20ec0 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 72 65 61  ^The sqlite3_rea
20ed0 6c 6c 6f 63 36 34 28 58 2c 4e 29 20 69 6e 74 65  lloc64(X,N) inte
20ee0 72 66 61 63 65 73 20 77 6f 72 6b 73 20 74 68 65  rfaces works the
20ef0 20 73 61 6d 65 20 61 73 0a 2a 2a 20 73 71 6c 69   same as.** sqli
20f00 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29  te3_realloc(X,N)
20f10 20 65 78 63 65 70 74 20 74 68 61 74 20 4e 20 69   except that N i
20f20 73 20 61 20 36 34 2d 62 69 74 20 75 6e 73 69 67  s a 64-bit unsig
20f30 6e 65 64 20 69 6e 74 65 67 65 72 20 69 6e 73 74  ned integer inst
20f40 65 61 64 0a 2a 2a 20 6f 66 20 61 20 33 32 2d 62  ead.** of a 32-b
20f50 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65  it signed intege
20f60 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 58 20 69  r..**.** ^If X i
20f70 73 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  s a memory alloc
20f80 61 74 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79  ation previously
20f90 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73   obtained from s
20fa0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2c  qlite3_malloc(),
20fb0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  .** sqlite3_mall
20fc0 6f 63 36 34 28 29 2c 20 73 71 6c 69 74 65 33 5f  oc64(), sqlite3_
20fd0 72 65 61 6c 6c 6f 63 28 29 2c 20 6f 72 20 73 71  realloc(), or sq
20fe0 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28  lite3_realloc64(
20ff0 29 2c 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74  ), then.** sqlit
21000 65 33 5f 6d 73 69 7a 65 28 58 29 20 72 65 74 75  e3_msize(X) retu
21010 72 6e 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20  rns the size of 
21020 74 68 61 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  that memory allo
21030 63 61 74 69 6f 6e 20 69 6e 20 62 79 74 65 73 2e  cation in bytes.
21040 0a 2a 2a 20 5e 54 68 65 20 76 61 6c 75 65 20 72  .** ^The value r
21050 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74  eturned by sqlit
21060 65 33 5f 6d 73 69 7a 65 28 58 29 20 6d 69 67 68  e3_msize(X) migh
21070 74 20 62 65 20 6c 61 72 67 65 72 20 74 68 61 6e  t be larger than
21080 20 74 68 65 20 6e 75 6d 62 65 72 0a 2a 2a 20 6f   the number.** o
21090 66 20 62 79 74 65 73 20 72 65 71 75 65 73 74 65  f bytes requeste
210a0 64 20 77 68 65 6e 20 58 20 77 61 73 20 61 6c 6c  d when X was all
210b0 6f 63 61 74 65 64 2e 20 20 5e 49 66 20 58 20 69  ocated.  ^If X i
210c0 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  s a NULL pointer
210d0 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33   then.** sqlite3
210e0 5f 6d 73 69 7a 65 28 58 29 20 72 65 74 75 72 6e  _msize(X) return
210f0 73 20 7a 65 72 6f 2e 20 20 49 66 20 58 20 70 6f  s zero.  If X po
21100 69 6e 74 73 20 74 6f 20 73 6f 6d 65 74 68 69 6e  ints to somethin
21110 67 20 74 68 61 74 20 69 73 20 6e 6f 74 0a 2a 2a  g that is not.**
21120 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f   the beginning o
21130 66 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  f memory allocat
21140 69 6f 6e 2c 20 6f 72 20 69 66 20 69 74 20 70 6f  ion, or if it po
21150 69 6e 74 73 20 74 6f 20 61 20 66 6f 72 6d 65 72  ints to a former
21160 6c 79 0a 2a 2a 20 76 61 6c 69 64 20 6d 65 6d 6f  ly.** valid memo
21170 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 74 68  ry allocation th
21180 61 74 20 68 61 73 20 6e 6f 77 20 62 65 65 6e 20  at has now been 
21190 66 72 65 65 64 2c 20 74 68 65 6e 20 74 68 65 20  freed, then the 
211a0 62 65 68 61 76 69 6f 72 0a 2a 2a 20 6f 66 20 73  behavior.** of s
211b0 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29 20  qlite3_msize(X) 
211c0 69 73 20 75 6e 64 65 66 69 6e 65 64 20 61 6e 64  is undefined and
211d0 20 70 6f 73 73 69 62 6c 79 20 68 61 72 6d 66 75   possibly harmfu
211e0 6c 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6d 65  l..**.** ^The me
211f0 6d 6f 72 79 20 72 65 74 75 72 6e 65 64 20 62 79  mory returned by
21200 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
21210 29 2c 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  ), sqlite3_reall
21220 6f 63 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33  oc(),.** sqlite3
21230 5f 6d 61 6c 6c 6f 63 36 34 28 29 2c 20 61 6e 64  _malloc64(), and
21240 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
21250 36 34 28 29 0a 2a 2a 20 69 73 20 61 6c 77 61 79  64().** is alway
21260 73 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 74 20  s aligned to at 
21270 6c 65 61 73 74 20 61 6e 20 38 20 62 79 74 65 20  least an 8 byte 
21280 62 6f 75 6e 64 61 72 79 2c 20 6f 72 20 74 6f 20  boundary, or to 
21290 61 0a 2a 2a 20 34 20 62 79 74 65 20 62 6f 75 6e  a.** 4 byte boun
212a0 64 61 72 79 20 69 66 20 74 68 65 20 5b 53 51 4c  dary if the [SQL
212b0 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e  ITE_4_BYTE_ALIGN
212c0 45 44 5f 4d 41 4c 4c 4f 43 5d 20 63 6f 6d 70 69  ED_MALLOC] compi
212d0 6c 65 2d 74 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f  le-time.** optio
212e0 6e 20 69 73 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a  n is used..**.**
212f0 20 49 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69   In SQLite versi
21300 6f 6e 20 33 2e 35 2e 30 20 61 6e 64 20 33 2e 35  on 3.5.0 and 3.5
21310 2e 31 2c 20 69 74 20 77 61 73 20 70 6f 73 73 69  .1, it was possi
21320 62 6c 65 20 74 6f 20 64 65 66 69 6e 65 0a 2a 2a  ble to define.**
21330 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54   the SQLITE_OMIT
21340 5f 4d 45 4d 4f 52 59 5f 41 4c 4c 4f 43 41 54 49  _MEMORY_ALLOCATI
21350 4f 4e 20 77 68 69 63 68 20 77 6f 75 6c 64 20 63  ON which would c
21360 61 75 73 65 20 74 68 65 20 62 75 69 6c 74 2d 69  ause the built-i
21370 6e 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74  n.** implementat
21380 69 6f 6e 20 6f 66 20 74 68 65 73 65 20 72 6f 75  ion of these rou
21390 74 69 6e 65 73 20 74 6f 20 62 65 20 6f 6d 69 74  tines to be omit
213a0 74 65 64 2e 20 20 54 68 61 74 20 63 61 70 61 62  ted.  That capab
213b0 69 6c 69 74 79 0a 2a 2a 20 69 73 20 6e 6f 20 6c  ility.** is no l
213c0 6f 6e 67 65 72 20 70 72 6f 76 69 64 65 64 2e 20  onger provided. 
213d0 20 4f 6e 6c 79 20 62 75 69 6c 74 2d 69 6e 20 6d   Only built-in m
213e0 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 73  emory allocators
213f0 20 63 61 6e 20 62 65 20 75 73 65 64 2e 0a 2a 2a   can be used..**
21400 0a 2a 2a 20 50 72 69 6f 72 20 74 6f 20 53 51 4c  .** Prior to SQL
21410 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  ite version 3.7.
21420 31 30 2c 20 74 68 65 20 57 69 6e 64 6f 77 73 20  10, the Windows 
21430 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79  OS interface lay
21440 65 72 20 63 61 6c 6c 65 64 0a 2a 2a 20 74 68 65  er called.** the
21450 20 73 79 73 74 65 6d 20 6d 61 6c 6c 6f 63 28 29   system malloc()
21460 20 61 6e 64 20 66 72 65 65 28 29 20 64 69 72 65   and free() dire
21470 63 74 6c 79 20 77 68 65 6e 20 63 6f 6e 76 65 72  ctly when conver
21480 74 69 6e 67 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65  ting.** filename
21490 73 20 62 65 74 77 65 65 6e 20 74 68 65 20 55 54  s between the UT
214a0 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 75 73 65  F-8 encoding use
214b0 64 20 62 79 20 53 51 4c 69 74 65 0a 2a 2a 20 61  d by SQLite.** a
214c0 6e 64 20 77 68 61 74 65 76 65 72 20 66 69 6c 65  nd whatever file
214d0 6e 61 6d 65 20 65 6e 63 6f 64 69 6e 67 20 69 73  name encoding is
214e0 20 75 73 65 64 20 62 79 20 74 68 65 20 70 61 72   used by the par
214f0 74 69 63 75 6c 61 72 20 57 69 6e 64 6f 77 73 0a  ticular Windows.
21500 2a 2a 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 2e  ** installation.
21510 20 20 4d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74    Memory allocat
21520 69 6f 6e 20 65 72 72 6f 72 73 20 77 65 72 65 20  ion errors were 
21530 64 65 74 65 63 74 65 64 2c 20 62 75 74 0a 2a 2a  detected, but.**
21540 20 74 68 65 79 20 77 65 72 65 20 72 65 70 6f 72   they were repor
21550 74 65 64 20 62 61 63 6b 20 61 73 20 5b 53 51 4c  ted back as [SQL
21560 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 6f 72  ITE_CANTOPEN] or
21570 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52  .** [SQLITE_IOER
21580 52 5d 20 72 61 74 68 65 72 20 74 68 61 6e 20 5b  R] rather than [
21590 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 2e 0a 2a  SQLITE_NOMEM]..*
215a0 2a 0a 2a 2a 20 54 68 65 20 70 6f 69 6e 74 65 72  *.** The pointer
215b0 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 5b 73   arguments to [s
215c0 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 20 61  qlite3_free()] a
215d0 6e 64 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c  nd [sqlite3_real
215e0 6c 6f 63 28 29 5d 0a 2a 2a 20 6d 75 73 74 20 62  loc()].** must b
215f0 65 20 65 69 74 68 65 72 20 4e 55 4c 4c 20 6f 72  e either NULL or
21600 20 65 6c 73 65 20 70 6f 69 6e 74 65 72 73 20 6f   else pointers o
21610 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 61 20 70  btained from a p
21620 72 69 6f 72 0a 2a 2a 20 69 6e 76 6f 63 61 74 69  rior.** invocati
21630 6f 6e 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 6d  on of [sqlite3_m
21640 61 6c 6c 6f 63 28 29 5d 20 6f 72 20 5b 73 71 6c  alloc()] or [sql
21650 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 20  ite3_realloc()] 
21660 74 68 61 74 20 68 61 76 65 0a 2a 2a 20 6e 6f 74  that have.** not
21670 20 79 65 74 20 62 65 65 6e 20 72 65 6c 65 61 73   yet been releas
21680 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 70  ed..**.** The ap
21690 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e  plication must n
216a0 6f 74 20 72 65 61 64 20 6f 72 20 77 72 69 74 65  ot read or write
216b0 20 61 6e 79 20 70 61 72 74 20 6f 66 0a 2a 2a 20   any part of.** 
216c0 61 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72  a block of memor
216d0 79 20 61 66 74 65 72 20 69 74 20 68 61 73 20 62  y after it has b
216e0 65 65 6e 20 72 65 6c 65 61 73 65 64 20 75 73 69  een released usi
216f0 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66  ng.** [sqlite3_f
21700 72 65 65 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74  ree()] or [sqlit
21710 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 2e 0a 2a  e3_realloc()]..*
21720 2f 0a 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  /.void *sqlite3_
21730 6d 61 6c 6c 6f 63 28 69 6e 74 29 3b 0a 76 6f 69  malloc(int);.voi
21740 64 20 2a 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  d *sqlite3_mallo
21750 63 36 34 28 73 71 6c 69 74 65 33 5f 75 69 6e 74  c64(sqlite3_uint
21760 36 34 29 3b 0a 76 6f 69 64 20 2a 73 71 6c 69 74  64);.void *sqlit
21770 65 33 5f 72 65 61 6c 6c 6f 63 28 76 6f 69 64 2a  e3_realloc(void*
21780 2c 20 69 6e 74 29 3b 0a 76 6f 69 64 20 2a 73 71  , int);.void *sq
21790 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28  lite3_realloc64(
217a0 76 6f 69 64 2a 2c 20 73 71 6c 69 74 65 33 5f 75  void*, sqlite3_u
217b0 69 6e 74 36 34 29 3b 0a 76 6f 69 64 20 73 71 6c  int64);.void sql
217c0 69 74 65 33 5f 66 72 65 65 28 76 6f 69 64 2a 29  ite3_free(void*)
217d0 3b 0a 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34  ;.sqlite3_uint64
217e0 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 76   sqlite3_msize(v
217f0 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  oid*);../*.** CA
21800 50 49 33 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41  PI3REF: Memory A
21810 6c 6c 6f 63 61 74 6f 72 20 53 74 61 74 69 73 74  llocator Statist
21820 69 63 73 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65  ics.**.** SQLite
21830 20 70 72 6f 76 69 64 65 73 20 74 68 65 73 65 20   provides these 
21840 74 77 6f 20 69 6e 74 65 72 66 61 63 65 73 20 66  two interfaces f
21850 6f 72 20 72 65 70 6f 72 74 69 6e 67 20 6f 6e 20  or reporting on 
21860 74 68 65 20 73 74 61 74 75 73 0a 2a 2a 20 6f 66  the status.** of
21870 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 61   the [sqlite3_ma
21880 6c 6c 6f 63 28 29 5d 2c 20 5b 73 71 6c 69 74 65  lloc()], [sqlite
21890 33 5f 66 72 65 65 28 29 5d 2c 20 61 6e 64 20 5b  3_free()], and [
218a0 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
218b0 29 5d 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 2c 20  )].** routines, 
218c0 77 68 69 63 68 20 66 6f 72 6d 20 74 68 65 20 62  which form the b
218d0 75 69 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61  uilt-in memory a
218e0 6c 6c 6f 63 61 74 69 6f 6e 20 73 75 62 73 79 73  llocation subsys
218f0 74 65 6d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  tem..**.** ^The 
21900 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f  [sqlite3_memory_
21910 75 73 65 64 28 29 5d 20 72 6f 75 74 69 6e 65 20  used()] routine 
21920 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62  returns the numb
21930 65 72 20 6f 66 20 62 79 74 65 73 0a 2a 2a 20 6f  er of bytes.** o
21940 66 20 6d 65 6d 6f 72 79 20 63 75 72 72 65 6e 74  f memory current
21950 6c 79 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 28  ly outstanding (
21960 6d 61 6c 6c 6f 63 65 64 20 62 75 74 20 6e 6f 74  malloced but not
21970 20 66 72 65 65 64 29 2e 0a 2a 2a 20 5e 54 68 65   freed)..** ^The
21980 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
21990 5f 68 69 67 68 77 61 74 65 72 28 29 5d 20 72 6f  _highwater()] ro
219a0 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74 68  utine returns th
219b0 65 20 6d 61 78 69 6d 75 6d 0a 2a 2a 20 76 61 6c  e maximum.** val
219c0 75 65 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 6d  ue of [sqlite3_m
219d0 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20 73 69  emory_used()] si
219e0 6e 63 65 20 74 68 65 20 68 69 67 68 2d 77 61 74  nce the high-wat
219f0 65 72 20 6d 61 72 6b 0a 2a 2a 20 77 61 73 20 6c  er mark.** was l
21a00 61 73 74 20 72 65 73 65 74 2e 20 20 5e 54 68 65  ast reset.  ^The
21a10 20 76 61 6c 75 65 73 20 72 65 74 75 72 6e 65 64   values returned
21a20 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d   by [sqlite3_mem
21a30 6f 72 79 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a  ory_used()] and.
21a40 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ** [sqlite3_memo
21a50 72 79 5f 68 69 67 68 77 61 74 65 72 28 29 5d 20  ry_highwater()] 
21a60 69 6e 63 6c 75 64 65 20 61 6e 79 20 6f 76 65 72  include any over
21a70 68 65 61 64 0a 2a 2a 20 61 64 64 65 64 20 62 79  head.** added by
21a80 20 53 51 4c 69 74 65 20 69 6e 20 69 74 73 20 69   SQLite in its i
21a90 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
21aa0 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
21ab0 28 29 5d 2c 0a 2a 2a 20 62 75 74 20 6e 6f 74 20  ()],.** but not 
21ac0 6f 76 65 72 68 65 61 64 20 61 64 64 65 64 20 62  overhead added b
21ad0 79 20 74 68 65 20 61 6e 79 20 75 6e 64 65 72 6c  y the any underl
21ae0 79 69 6e 67 20 73 79 73 74 65 6d 20 6c 69 62 72  ying system libr
21af0 61 72 79 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20  ary.** routines 
21b00 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f 6d 61  that [sqlite3_ma
21b10 6c 6c 6f 63 28 29 5d 20 6d 61 79 20 63 61 6c 6c  lloc()] may call
21b20 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6d 65 6d  ..**.** ^The mem
21b30 6f 72 79 20 68 69 67 68 2d 77 61 74 65 72 20 6d  ory high-water m
21b40 61 72 6b 20 69 73 20 72 65 73 65 74 20 74 6f 20  ark is reset to 
21b50 74 68 65 20 63 75 72 72 65 6e 74 20 76 61 6c 75  the current valu
21b60 65 20 6f 66 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  e of.** [sqlite3
21b70 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20  _memory_used()] 
21b80 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74  if and only if t
21b90 68 65 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a  he parameter to.
21ba0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ** [sqlite3_memo
21bb0 72 79 5f 68 69 67 68 77 61 74 65 72 28 29 5d 20  ry_highwater()] 
21bc0 69 73 20 74 72 75 65 2e 20 20 5e 54 68 65 20 76  is true.  ^The v
21bd0 61 6c 75 65 20 72 65 74 75 72 6e 65 64 0a 2a 2a  alue returned.**
21be0 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d   by [sqlite3_mem
21bf0 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28 31 29  ory_highwater(1)
21c00 5d 20 69 73 20 74 68 65 20 68 69 67 68 2d 77 61  ] is the high-wa
21c10 74 65 72 20 6d 61 72 6b 0a 2a 2a 20 70 72 69 6f  ter mark.** prio
21c20 72 20 74 6f 20 74 68 65 20 72 65 73 65 74 2e 0a  r to the reset..
21c30 2a 2f 0a 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  */.sqlite3_int64
21c40 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f   sqlite3_memory_
21c50 75 73 65 64 28 76 6f 69 64 29 3b 0a 73 71 6c 69  used(void);.sqli
21c60 74 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65  te3_int64 sqlite
21c70 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
21c80 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67  er(int resetFlag
21c90 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
21ca0 45 46 3a 20 50 73 65 75 64 6f 2d 52 61 6e 64 6f  EF: Pseudo-Rando
21cb0 6d 20 4e 75 6d 62 65 72 20 47 65 6e 65 72 61 74  m Number Generat
21cc0 6f 72 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20  or.**.** SQLite 
21cd0 63 6f 6e 74 61 69 6e 73 20 61 20 68 69 67 68 2d  contains a high-
21ce0 71 75 61 6c 69 74 79 20 70 73 65 75 64 6f 2d 72  quality pseudo-r
21cf0 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 67 65 6e  andom number gen
21d00 65 72 61 74 6f 72 20 28 50 52 4e 47 29 20 75 73  erator (PRNG) us
21d10 65 64 20 74 6f 0a 2a 2a 20 73 65 6c 65 63 74 20  ed to.** select 
21d20 72 61 6e 64 6f 6d 20 5b 52 4f 57 49 44 20 7c 20  random [ROWID | 
21d30 52 4f 57 49 44 73 5d 20 77 68 65 6e 20 69 6e 73  ROWIDs] when ins
21d40 65 72 74 69 6e 67 20 6e 65 77 20 72 65 63 6f 72  erting new recor
21d50 64 73 20 69 6e 74 6f 20 61 20 74 61 62 6c 65 20  ds into a table 
21d60 74 68 61 74 0a 2a 2a 20 61 6c 72 65 61 64 79 20  that.** already 
21d70 75 73 65 73 20 74 68 65 20 6c 61 72 67 65 73 74  uses the largest
21d80 20 70 6f 73 73 69 62 6c 65 20 5b 52 4f 57 49 44   possible [ROWID
21d90 5d 2e 20 20 54 68 65 20 50 52 4e 47 20 69 73 20  ].  The PRNG is 
21da0 61 6c 73 6f 20 75 73 65 64 20 66 6f 72 0a 2a 2a  also used for.**
21db0 20 74 68 65 20 62 75 69 6c 64 2d 69 6e 20 72 61   the build-in ra
21dc0 6e 64 6f 6d 28 29 20 61 6e 64 20 72 61 6e 64 6f  ndom() and rando
21dd0 6d 62 6c 6f 62 28 29 20 53 51 4c 20 66 75 6e 63  mblob() SQL func
21de0 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 69 6e 74  tions.  This int
21df0 65 72 66 61 63 65 20 61 6c 6c 6f 77 73 0a 2a 2a  erface allows.**
21e00 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f   applications to
21e10 20 61 63 63 65 73 73 20 74 68 65 20 73 61 6d 65   access the same
21e20 20 50 52 4e 47 20 66 6f 72 20 6f 74 68 65 72 20   PRNG for other 
21e30 70 75 72 70 6f 73 65 73 2e 0a 2a 2a 0a 2a 2a 20  purposes..**.** 
21e40 5e 41 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20  ^A call to this 
21e50 72 6f 75 74 69 6e 65 20 73 74 6f 72 65 73 20 4e  routine stores N
21e60 20 62 79 74 65 73 20 6f 66 20 72 61 6e 64 6f 6d   bytes of random
21e70 6e 65 73 73 20 69 6e 74 6f 20 62 75 66 66 65 72  ness into buffer
21e80 20 50 2e 0a 2a 2a 20 5e 54 68 65 20 50 20 70 61   P..** ^The P pa
21e90 72 61 6d 65 74 65 72 20 63 61 6e 20 62 65 20 61  rameter can be a
21ea0 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a   NULL pointer..*
21eb0 2a 0a 2a 2a 20 5e 49 66 20 74 68 69 73 20 72 6f  *.** ^If this ro
21ec0 75 74 69 6e 65 20 68 61 73 20 6e 6f 74 20 62 65  utine has not be
21ed0 65 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 63 61  en previously ca
21ee0 6c 6c 65 64 20 6f 72 20 69 66 20 74 68 65 20 70  lled or if the p
21ef0 72 65 76 69 6f 75 73 0a 2a 2a 20 63 61 6c 6c 20  revious.** call 
21f00 68 61 64 20 4e 20 6c 65 73 73 20 74 68 61 6e 20  had N less than 
21f10 6f 6e 65 20 6f 72 20 61 20 4e 55 4c 4c 20 70 6f  one or a NULL po
21f20 69 6e 74 65 72 20 66 6f 72 20 50 2c 20 74 68 65  inter for P, the
21f30 6e 20 74 68 65 20 50 52 4e 47 20 69 73 0a 2a 2a  n the PRNG is.**
21f40 20 73 65 65 64 65 64 20 75 73 69 6e 67 20 72 61   seeded using ra
21f50 6e 64 6f 6d 6e 65 73 73 20 6f 62 74 61 69 6e 65  ndomness obtaine
21f60 64 20 66 72 6f 6d 20 74 68 65 20 78 52 61 6e 64  d from the xRand
21f70 6f 6d 6e 65 73 73 20 6d 65 74 68 6f 64 20 6f 66  omness method of
21f80 0a 2a 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20  .** the default 
21f90 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62  [sqlite3_vfs] ob
21fa0 6a 65 63 74 2e 0a 2a 2a 20 5e 49 66 20 74 68 65  ject..** ^If the
21fb0 20 70 72 65 76 69 6f 75 73 20 63 61 6c 6c 20 74   previous call t
21fc0 6f 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 68  o this routine h
21fd0 61 64 20 61 6e 20 4e 20 6f 66 20 31 20 6f 72 20  ad an N of 1 or 
21fe0 6d 6f 72 65 20 61 6e 64 20 61 0a 2a 2a 20 6e 6f  more and a.** no
21ff0 6e 2d 4e 55 4c 4c 20 50 20 74 68 65 6e 20 74 68  n-NULL P then th
22000 65 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 6e  e pseudo-randomn
22010 65 73 73 20 69 73 20 67 65 6e 65 72 61 74 65 64  ess is generated
22020 0a 2a 2a 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61  .** internally a
22030 6e 64 20 77 69 74 68 6f 75 74 20 72 65 63 6f 75  nd without recou
22040 72 73 65 20 74 6f 20 74 68 65 20 5b 73 71 6c 69  rse to the [sqli
22050 74 65 33 5f 76 66 73 5d 20 78 52 61 6e 64 6f 6d  te3_vfs] xRandom
22060 6e 65 73 73 0a 2a 2a 20 6d 65 74 68 6f 64 2e 0a  ness.** method..
22070 2a 2f 0a 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  */.void sqlite3_
22080 72 61 6e 64 6f 6d 6e 65 73 73 28 69 6e 74 20 4e  randomness(int N
22090 2c 20 76 6f 69 64 20 2a 50 29 3b 0a 0a 2f 2a 0a  , void *P);../*.
220a0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6d  ** CAPI3REF: Com
220b0 70 69 6c 65 2d 54 69 6d 65 20 41 75 74 68 6f 72  pile-Time Author
220c0 69 7a 61 74 69 6f 6e 20 43 61 6c 6c 62 61 63 6b  ization Callback
220d0 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  s.** METHOD: sql
220e0 69 74 65 33 0a 2a 2a 20 4b 45 59 57 4f 52 44 53  ite3.** KEYWORDS
220f0 3a 20 7b 61 75 74 68 6f 72 69 7a 65 72 20 63 61  : {authorizer ca
22100 6c 6c 62 61 63 6b 7d 0a 2a 2a 0a 2a 2a 20 5e 54  llback}.**.** ^T
22110 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65 67 69  his routine regi
22120 73 74 65 72 73 20 61 6e 20 61 75 74 68 6f 72 69  sters an authori
22130 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 77 69 74  zer callback wit
22140 68 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 2a  h a particular.*
22150 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  * [database conn
22160 65 63 74 69 6f 6e 5d 2c 20 73 75 70 70 6c 69 65  ection], supplie
22170 64 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 61  d in the first a
22180 72 67 75 6d 65 6e 74 2e 0a 2a 2a 20 5e 54 68 65  rgument..** ^The
22190 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
221a0 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
221b0 61 73 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  as SQL statement
221c0 73 20 61 72 65 20 62 65 69 6e 67 20 63 6f 6d 70  s are being comp
221d0 69 6c 65 64 0a 2a 2a 20 62 79 20 5b 73 71 6c 69  iled.** by [sqli
221e0 74 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20 6f  te3_prepare()] o
221f0 72 20 69 74 73 20 76 61 72 69 61 6e 74 73 20 5b  r its variants [
22200 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
22210 76 32 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74  v2()],.** [sqlit
22220 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 5d  e3_prepare_v3()]
22230 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  , [sqlite3_prepa
22240 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65  re16()], [sqlite
22250 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28 29  3_prepare16_v2()
22260 5d 2c 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74  ],.** and [sqlit
22270 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28  e3_prepare16_v3(
22280 29 5d 2e 20 20 5e 41 74 20 76 61 72 69 6f 75 73  )].  ^At various
22290 0a 2a 2a 20 70 6f 69 6e 74 73 20 64 75 72 69 6e  .** points durin
222a0 67 20 74 68 65 20 63 6f 6d 70 69 6c 61 74 69 6f  g the compilatio
222b0 6e 20 70 72 6f 63 65 73 73 2c 20 61 73 20 6c 6f  n process, as lo
222c0 67 69 63 20 69 73 20 62 65 69 6e 67 20 63 72 65  gic is being cre
222d0 61 74 65 64 0a 2a 2a 20 74 6f 20 70 65 72 66 6f  ated.** to perfo
222e0 72 6d 20 76 61 72 69 6f 75 73 20 61 63 74 69 6f  rm various actio
222f0 6e 73 2c 20 74 68 65 20 61 75 74 68 6f 72 69 7a  ns, the authoriz
22300 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69  er callback is i
22310 6e 76 6f 6b 65 64 20 74 6f 0a 2a 2a 20 73 65 65  nvoked to.** see
22320 20 69 66 20 74 68 6f 73 65 20 61 63 74 69 6f 6e   if those action
22330 73 20 61 72 65 20 61 6c 6c 6f 77 65 64 2e 20 20  s are allowed.  
22340 5e 54 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20  ^The authorizer 
22350 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 0a  callback should.
22360 2a 2a 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  ** return [SQLIT
22370 45 5f 4f 4b 5d 20 74 6f 20 61 6c 6c 6f 77 20 74  E_OK] to allow t
22380 68 65 20 61 63 74 69 6f 6e 2c 20 5b 53 51 4c 49  he action, [SQLI
22390 54 45 5f 49 47 4e 4f 52 45 5d 20 74 6f 20 64 69  TE_IGNORE] to di
223a0 73 61 6c 6c 6f 77 20 74 68 65 0a 2a 2a 20 73 70  sallow the.** sp
223b0 65 63 69 66 69 63 20 61 63 74 69 6f 6e 20 62 75  ecific action bu
223c0 74 20 61 6c 6c 6f 77 20 74 68 65 20 53 51 4c 20  t allow the SQL 
223d0 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 63 6f 6e  statement to con
223e0 74 69 6e 75 65 20 74 6f 20 62 65 0a 2a 2a 20 63  tinue to be.** c
223f0 6f 6d 70 69 6c 65 64 2c 20 6f 72 20 5b 53 51 4c  ompiled, or [SQL
22400 49 54 45 5f 44 45 4e 59 5d 20 74 6f 20 63 61 75  ITE_DENY] to cau
22410 73 65 20 74 68 65 20 65 6e 74 69 72 65 20 53 51  se the entire SQ
22420 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62  L statement to b
22430 65 0a 2a 2a 20 72 65 6a 65 63 74 65 64 20 77 69  e.** rejected wi
22440 74 68 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 49  th an error.  ^I
22450 66 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  f the authorizer
22460 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e   callback return
22470 73 0a 2a 2a 20 61 6e 79 20 76 61 6c 75 65 20 6f  s.** any value o
22480 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54  ther than [SQLIT
22490 45 5f 49 47 4e 4f 52 45 5d 2c 20 5b 53 51 4c 49  E_IGNORE], [SQLI
224a0 54 45 5f 4f 4b 5d 2c 20 6f 72 20 5b 53 51 4c 49  TE_OK], or [SQLI
224b0 54 45 5f 44 45 4e 59 5d 0a 2a 2a 20 74 68 65 6e  TE_DENY].** then
224c0 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72   the [sqlite3_pr
224d0 65 70 61 72 65 5f 76 32 28 29 5d 20 6f 72 20 65  epare_v2()] or e
224e0 71 75 69 76 61 6c 65 6e 74 20 63 61 6c 6c 20 74  quivalent call t
224f0 68 61 74 20 74 72 69 67 67 65 72 65 64 0a 2a 2a  hat triggered.**
22500 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20   the authorizer 
22510 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61  will fail with a
22520 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e  n error message.
22530 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20  .**.** When the 
22540 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73  callback returns
22550 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74 68   [SQLITE_OK], th
22560 61 74 20 6d 65 61 6e 73 20 74 68 65 20 6f 70 65  at means the ope
22570 72 61 74 69 6f 6e 0a 2a 2a 20 72 65 71 75 65 73  ration.** reques
22580 74 65 64 20 69 73 20 6f 6b 2e 20 20 5e 57 68 65  ted is ok.  ^Whe
22590 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72  n the callback r
225a0 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 44  eturns [SQLITE_D
225b0 45 4e 59 5d 2c 20 74 68 65 0a 2a 2a 20 5b 73 71  ENY], the.** [sq
225c0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
225d0 28 29 5d 20 6f 72 20 65 71 75 69 76 61 6c 65 6e  ()] or equivalen
225e0 74 20 63 61 6c 6c 20 74 68 61 74 20 74 72 69 67  t call that trig
225f0 67 65 72 65 64 20 74 68 65 0a 2a 2a 20 61 75 74  gered the.** aut
22600 68 6f 72 69 7a 65 72 20 77 69 6c 6c 20 66 61 69  horizer will fai
22610 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20  l with an error 
22620 6d 65 73 73 61 67 65 20 65 78 70 6c 61 69 6e 69  message explaini
22630 6e 67 20 74 68 61 74 0a 2a 2a 20 61 63 63 65 73  ng that.** acces
22640 73 20 69 73 20 64 65 6e 69 65 64 2e 20 0a 2a 2a  s is denied. .**
22650 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 70  .** ^The first p
22660 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
22670 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
22680 61 63 6b 20 69 73 20 61 20 63 6f 70 79 20 6f 66  ack is a copy of
22690 20 74 68 65 20 74 68 69 72 64 0a 2a 2a 20 70 61   the third.** pa
226a0 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 73  rameter to the s
226b0 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f  qlite3_set_autho
226c0 72 69 7a 65 72 28 29 20 69 6e 74 65 72 66 61 63  rizer() interfac
226d0 65 2e 20 5e 54 68 65 20 73 65 63 6f 6e 64 20 70  e. ^The second p
226e0 61 72 61 6d 65 74 65 72 0a 2a 2a 20 74 6f 20 74  arameter.** to t
226f0 68 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61  he callback is a
22700 6e 20 69 6e 74 65 67 65 72 20 5b 53 51 4c 49 54  n integer [SQLIT
22710 45 5f 43 4f 50 59 20 7c 20 61 63 74 69 6f 6e 20  E_COPY | action 
22720 63 6f 64 65 5d 20 74 68 61 74 20 73 70 65 63 69  code] that speci
22730 66 69 65 73 0a 2a 2a 20 74 68 65 20 70 61 72 74  fies.** the part
22740 69 63 75 6c 61 72 20 61 63 74 69 6f 6e 20 74 6f  icular action to
22750 20 62 65 20 61 75 74 68 6f 72 69 7a 65 64 2e 20   be authorized. 
22760 5e 54 68 65 20 74 68 69 72 64 20 74 68 72 6f 75  ^The third throu
22770 67 68 20 73 69 78 74 68 20 70 61 72 61 6d 65 74  gh sixth paramet
22780 65 72 73 0a 2a 2a 20 74 6f 20 74 68 65 20 63 61  ers.** to the ca
22790 6c 6c 62 61 63 6b 20 61 72 65 20 65 69 74 68 65  llback are eithe
227a0 72 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 73 20  r NULL pointers 
227b0 6f 72 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  or zero-terminat
227c0 65 64 20 73 74 72 69 6e 67 73 0a 2a 2a 20 74 68  ed strings.** th
227d0 61 74 20 63 6f 6e 74 61 69 6e 20 61 64 64 69 74  at contain addit
227e0 69 6f 6e 61 6c 20 64 65 74 61 69 6c 73 20 61 62  ional details ab
227f0 6f 75 74 20 74 68 65 20 61 63 74 69 6f 6e 20 74  out the action t
22800 6f 20 62 65 20 61 75 74 68 6f 72 69 7a 65 64 2e  o be authorized.
22810 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  .** Applications
22820 20 6d 75 73 74 20 61 6c 77 61 79 73 20 62 65 20   must always be 
22830 70 72 65 70 61 72 65 64 20 74 6f 20 65 6e 63 6f  prepared to enco
22840 75 6e 74 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69  unter a NULL poi
22850 6e 74 65 72 20 69 6e 20 61 6e 79 0a 2a 2a 20 6f  nter in any.** o
22860 66 20 74 68 65 20 74 68 69 72 64 20 74 68 72 6f  f the third thro
22870 75 67 68 20 74 68 65 20 73 69 78 74 68 20 70 61  ugh the sixth pa
22880 72 61 6d 65 74 65 72 73 20 6f 66 20 74 68 65 20  rameters of the 
22890 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63 61  authorization ca
228a0 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 5e 49  llback..**.** ^I
228b0 66 20 74 68 65 20 61 63 74 69 6f 6e 20 63 6f 64  f the action cod
228c0 65 20 69 73 20 5b 53 51 4c 49 54 45 5f 52 45 41  e is [SQLITE_REA
228d0 44 5d 0a 2a 2a 20 61 6e 64 20 74 68 65 20 63 61  D].** and the ca
228e0 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 5b  llback returns [
228f0 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20 74  SQLITE_IGNORE] t
22900 68 65 6e 20 74 68 65 0a 2a 2a 20 5b 70 72 65 70  hen the.** [prep
22910 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
22920 73 74 61 74 65 6d 65 6e 74 20 69 73 20 63 6f 6e  statement is con
22930 73 74 72 75 63 74 65 64 20 74 6f 20 73 75 62 73  structed to subs
22940 74 69 74 75 74 65 0a 2a 2a 20 61 20 4e 55 4c 4c  titute.** a NULL
22950 20 76 61 6c 75 65 20 69 6e 20 70 6c 61 63 65 20   value in place 
22960 6f 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6c  of the table col
22970 75 6d 6e 20 74 68 61 74 20 77 6f 75 6c 64 20 68  umn that would h
22980 61 76 65 0a 2a 2a 20 62 65 65 6e 20 72 65 61 64  ave.** been read
22990 20 69 66 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20   if [SQLITE_OK] 
229a0 68 61 64 20 62 65 65 6e 20 72 65 74 75 72 6e 65  had been returne
229b0 64 2e 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  d.  The [SQLITE_
229c0 49 47 4e 4f 52 45 5d 0a 2a 2a 20 72 65 74 75 72  IGNORE].** retur
229d0 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  n can be used to
229e0 20 64 65 6e 79 20 61 6e 20 75 6e 74 72 75 73 74   deny an untrust
229f0 65 64 20 75 73 65 72 20 61 63 63 65 73 73 20 74  ed user access t
22a00 6f 20 69 6e 64 69 76 69 64 75 61 6c 0a 2a 2a 20  o individual.** 
22a10 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61 62  columns of a tab
22a20 6c 65 2e 0a 2a 2a 20 5e 57 68 65 6e 20 61 20 74  le..** ^When a t
22a30 61 62 6c 65 20 69 73 20 72 65 66 65 72 65 6e 63  able is referenc
22a40 65 64 20 62 79 20 61 20 5b 53 45 4c 45 43 54 5d  ed by a [SELECT]
22a50 20 62 75 74 20 6e 6f 20 63 6f 6c 75 6d 6e 20 76   but no column v
22a60 61 6c 75 65 73 20 61 72 65 0a 2a 2a 20 65 78 74  alues are.** ext
22a70 72 61 63 74 65 64 20 66 72 6f 6d 20 74 68 61 74  racted from that
22a80 20 74 61 62 6c 65 20 28 66 6f 72 20 65 78 61 6d   table (for exam
22a90 70 6c 65 20 69 6e 20 61 20 71 75 65 72 79 20 6c  ple in a query l
22aa0 69 6b 65 0a 2a 2a 20 22 53 45 4c 45 43 54 20 63  ike.** "SELECT c
22ab0 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62  ount(*) FROM tab
22ac0 22 29 20 74 68 65 6e 20 74 68 65 20 5b 53 51 4c  ") then the [SQL
22ad0 49 54 45 5f 52 45 41 44 5d 20 61 75 74 68 6f 72  ITE_READ] author
22ae0 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  izer callback.**
22af0 20 69 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 63 65   is invoked once
22b00 20 66 6f 72 20 74 68 61 74 20 74 61 62 6c 65 20   for that table 
22b10 77 69 74 68 20 61 20 63 6f 6c 75 6d 6e 20 6e 61  with a column na
22b20 6d 65 20 74 68 61 74 20 69 73 20 61 6e 20 65 6d  me that is an em
22b30 70 74 79 20 73 74 72 69 6e 67 2e 0a 2a 2a 20 5e  pty string..** ^
22b40 49 66 20 74 68 65 20 61 63 74 69 6f 6e 20 63 6f  If the action co
22b50 64 65 20 69 73 20 5b 53 51 4c 49 54 45 5f 44 45  de is [SQLITE_DE
22b60 4c 45 54 45 5d 20 61 6e 64 20 74 68 65 20 63 61  LETE] and the ca
22b70 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 0a 2a  llback returns.*
22b80 2a 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45  * [SQLITE_IGNORE
22b90 5d 20 74 68 65 6e 20 74 68 65 20 5b 44 45 4c 45  ] then the [DELE
22ba0 54 45 5d 20 6f 70 65 72 61 74 69 6f 6e 20 70 72  TE] operation pr
22bb0 6f 63 65 65 64 73 20 62 75 74 20 74 68 65 0a 2a  oceeds but the.*
22bc0 2a 20 5b 74 72 75 6e 63 61 74 65 20 6f 70 74 69  * [truncate opti
22bd0 6d 69 7a 61 74 69 6f 6e 5d 20 69 73 20 64 69 73  mization] is dis
22be0 61 62 6c 65 64 20 61 6e 64 20 61 6c 6c 20 72 6f  abled and all ro
22bf0 77 73 20 61 72 65 20 64 65 6c 65 74 65 64 20 69  ws are deleted i
22c00 6e 64 69 76 69 64 75 61 6c 6c 79 2e 0a 2a 2a 0a  ndividually..**.
22c10 2a 2a 20 41 6e 20 61 75 74 68 6f 72 69 7a 65 72  ** An authorizer
22c20 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 5b 73   is used when [s
22c30 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20 7c  qlite3_prepare |
22c40 20 70 72 65 70 61 72 69 6e 67 5d 0a 2a 2a 20 53   preparing].** S
22c50 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 66 72  QL statements fr
22c60 6f 6d 20 61 6e 20 75 6e 74 72 75 73 74 65 64 20  om an untrusted 
22c70 73 6f 75 72 63 65 2c 20 74 6f 20 65 6e 73 75 72  source, to ensur
22c80 65 20 74 68 61 74 20 74 68 65 20 53 51 4c 20 73  e that the SQL s
22c90 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 64 6f 20  tatements.** do 
22ca0 6e 6f 74 20 74 72 79 20 74 6f 20 61 63 63 65 73  not try to acces
22cb0 73 20 64 61 74 61 20 74 68 65 79 20 61 72 65 20  s data they are 
22cc0 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 74 6f 20 73  not allowed to s
22cd0 65 65 2c 20 6f 72 20 74 68 61 74 20 74 68 65 79  ee, or that they
22ce0 20 64 6f 20 6e 6f 74 0a 2a 2a 20 74 72 79 20 74   do not.** try t
22cf0 6f 20 65 78 65 63 75 74 65 20 6d 61 6c 69 63 69  o execute malici
22d00 6f 75 73 20 73 74 61 74 65 6d 65 6e 74 73 20 74  ous statements t
22d10 68 61 74 20 64 61 6d 61 67 65 20 74 68 65 20 64  hat damage the d
22d20 61 74 61 62 61 73 65 2e 20 20 46 6f 72 0a 2a 2a  atabase.  For.**
22d30 20 65 78 61 6d 70 6c 65 2c 20 61 6e 20 61 70 70   example, an app
22d40 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20 61 6c 6c  lication may all
22d50 6f 77 20 61 20 75 73 65 72 20 74 6f 20 65 6e 74  ow a user to ent
22d60 65 72 20 61 72 62 69 74 72 61 72 79 0a 2a 2a 20  er arbitrary.** 
22d70 53 51 4c 20 71 75 65 72 69 65 73 20 66 6f 72 20  SQL queries for 
22d80 65 76 61 6c 75 61 74 69 6f 6e 20 62 79 20 61 20  evaluation by a 
22d90 64 61 74 61 62 61 73 65 2e 20 20 42 75 74 20 74  database.  But t
22da0 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  he application d
22db0 6f 65 73 0a 2a 2a 20 6e 6f 74 20 77 61 6e 74 20  oes.** not want 
22dc0 74 68 65 20 75 73 65 72 20 74 6f 20 62 65 20 61  the user to be a
22dd0 62 6c 65 20 74 6f 20 6d 61 6b 65 20 61 72 62 69  ble to make arbi
22de0 74 72 61 72 79 20 63 68 61 6e 67 65 73 20 74 6f  trary changes to
22df0 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65   the.** database
22e00 2e 20 20 41 6e 20 61 75 74 68 6f 72 69 7a 65 72  .  An authorizer
22e10 20 63 6f 75 6c 64 20 74 68 65 6e 20 62 65 20 70   could then be p
22e20 75 74 20 69 6e 20 70 6c 61 63 65 20 77 68 69 6c  ut in place whil
22e30 65 20 74 68 65 0a 2a 2a 20 75 73 65 72 2d 65 6e  e the.** user-en
22e40 74 65 72 65 64 20 53 51 4c 20 69 73 20 62 65 69  tered SQL is bei
22e50 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ng [sqlite3_prep
22e60 61 72 65 20 7c 20 70 72 65 70 61 72 65 64 5d 20  are | prepared] 
22e70 74 68 61 74 0a 2a 2a 20 64 69 73 61 6c 6c 6f 77  that.** disallow
22e80 73 20 65 76 65 72 79 74 68 69 6e 67 20 65 78 63  s everything exc
22e90 65 70 74 20 5b 53 45 4c 45 43 54 5d 20 73 74 61  ept [SELECT] sta
22ea0 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 41  tements..**.** A
22eb0 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
22ec0 20 6e 65 65 64 20 74 6f 20 70 72 6f 63 65 73 73   need to process
22ed0 20 53 51 4c 20 66 72 6f 6d 20 75 6e 74 72 75 73   SQL from untrus
22ee0 74 65 64 20 73 6f 75 72 63 65 73 0a 2a 2a 20 6d  ted sources.** m
22ef0 69 67 68 74 20 61 6c 73 6f 20 63 6f 6e 73 69 64  ight also consid
22f00 65 72 20 6c 6f 77 65 72 69 6e 67 20 72 65 73 6f  er lowering reso
22f10 75 72 63 65 20 6c 69 6d 69 74 73 20 75 73 69 6e  urce limits usin
22f20 67 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74  g [sqlite3_limit
22f30 28 29 5d 0a 2a 2a 20 61 6e 64 20 6c 69 6d 69 74  ()].** and limit
22f40 69 6e 67 20 64 61 74 61 62 61 73 65 20 73 69 7a  ing database siz
22f50 65 20 75 73 69 6e 67 20 74 68 65 20 5b 6d 61 78  e using the [max
22f60 5f 70 61 67 65 5f 63 6f 75 6e 74 5d 20 5b 50 52  _page_count] [PR
22f70 41 47 4d 41 5d 0a 2a 2a 20 69 6e 20 61 64 64 69  AGMA].** in addi
22f80 74 69 6f 6e 20 74 6f 20 75 73 69 6e 67 20 61 6e  tion to using an
22f90 20 61 75 74 68 6f 72 69 7a 65 72 2e 0a 2a 2a 0a   authorizer..**.
22fa0 2a 2a 20 5e 28 4f 6e 6c 79 20 61 20 73 69 6e 67  ** ^(Only a sing
22fb0 6c 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61  le authorizer ca
22fc0 6e 20 62 65 20 69 6e 20 70 6c 61 63 65 20 6f 6e  n be in place on
22fd0 20 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e   a database conn
22fe0 65 63 74 69 6f 6e 0a 2a 2a 20 61 74 20 61 20 74  ection.** at a t
22ff0 69 6d 65 2e 20 20 45 61 63 68 20 63 61 6c 6c 20  ime.  Each call 
23000 74 6f 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  to sqlite3_set_a
23010 75 74 68 6f 72 69 7a 65 72 20 6f 76 65 72 72 69  uthorizer overri
23020 64 65 73 20 74 68 65 0a 2a 2a 20 70 72 65 76 69  des the.** previ
23030 6f 75 73 20 63 61 6c 6c 2e 29 5e 20 20 5e 44 69  ous call.)^  ^Di
23040 73 61 62 6c 65 20 74 68 65 20 61 75 74 68 6f 72  sable the author
23050 69 7a 65 72 20 62 79 20 69 6e 73 74 61 6c 6c 69  izer by installi
23060 6e 67 20 61 20 4e 55 4c 4c 20 63 61 6c 6c 62 61  ng a NULL callba
23070 63 6b 2e 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f  ck..** The autho
23080 72 69 7a 65 72 20 69 73 20 64 69 73 61 62 6c 65  rizer is disable
23090 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 2a 2a  d by default..**
230a0 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72 69 7a  .** The authoriz
230b0 65 72 20 63 61 6c 6c 62 61 63 6b 20 6d 75 73 74  er callback must
230c0 20 6e 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e 67   not do anything
230d0 20 74 68 61 74 20 77 69 6c 6c 20 6d 6f 64 69 66   that will modif
230e0 79 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61 73  y.** the databas
230f0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61  e connection tha
23100 74 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 61 75  t invoked the au
23110 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63  thorizer callbac
23120 6b 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20  k..** Note that 
23130 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
23140 5f 76 32 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  _v2()] and [sqli
23150 74 65 33 5f 73 74 65 70 28 29 5d 20 62 6f 74 68  te3_step()] both
23160 20 6d 6f 64 69 66 79 20 74 68 65 69 72 0a 2a 2a   modify their.**
23170 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
23180 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6d 65  tions for the me
23190 61 6e 69 6e 67 20 6f 66 20 22 6d 6f 64 69 66 79  aning of "modify
231a0 22 20 69 6e 20 74 68 69 73 20 70 61 72 61 67 72  " in this paragr
231b0 61 70 68 2e 0a 2a 2a 0a 2a 2a 20 5e 57 68 65 6e  aph..**.** ^When
231c0 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
231d0 65 5f 76 32 28 29 5d 20 69 73 20 75 73 65 64 20  e_v2()] is used 
231e0 74 6f 20 70 72 65 70 61 72 65 20 61 20 73 74 61  to prepare a sta
231f0 74 65 6d 65 6e 74 2c 20 74 68 65 0a 2a 2a 20 73  tement, the.** s
23200 74 61 74 65 6d 65 6e 74 20 6d 69 67 68 74 20 62  tatement might b
23210 65 20 72 65 2d 70 72 65 70 61 72 65 64 20 64 75  e re-prepared du
23220 72 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 74  ring [sqlite3_st
23230 65 70 28 29 5d 20 64 75 65 20 74 6f 20 61 20 0a  ep()] due to a .
23240 2a 2a 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65  ** schema change
23250 2e 20 20 48 65 6e 63 65 2c 20 74 68 65 20 61 70  .  Hence, the ap
23260 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64  plication should
23270 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65   ensure that the
23280 0a 2a 2a 20 63 6f 72 72 65 63 74 20 61 75 74 68  .** correct auth
23290 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20  orizer callback 
232a0 72 65 6d 61 69 6e 73 20 69 6e 20 70 6c 61 63 65  remains in place
232b0 20 64 75 72 69 6e 67 20 74 68 65 20 5b 73 71 6c   during the [sql
232c0 69 74 65 33 5f 73 74 65 70 28 29 5d 2e 0a 2a 2a  ite3_step()]..**
232d0 0a 2a 2a 20 5e 4e 6f 74 65 20 74 68 61 74 20 74  .** ^Note that t
232e0 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61  he authorizer ca
232f0 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65  llback is invoke
23300 64 20 6f 6e 6c 79 20 64 75 72 69 6e 67 0a 2a 2a  d only during.**
23310 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
23320 65 28 29 5d 20 6f 72 20 69 74 73 20 76 61 72 69  e()] or its vari
23330 61 6e 74 73 2e 20 20 41 75 74 68 6f 72 69 7a 61  ants.  Authoriza
23340 74 69 6f 6e 20 69 73 20 6e 6f 74 0a 2a 2a 20 70  tion is not.** p
23350 65 72 66 6f 72 6d 65 64 20 64 75 72 69 6e 67 20  erformed during 
23360 73 74 61 74 65 6d 65 6e 74 20 65 76 61 6c 75 61  statement evalua
23370 74 69 6f 6e 20 69 6e 20 5b 73 71 6c 69 74 65 33  tion in [sqlite3
23380 5f 73 74 65 70 28 29 5d 2c 20 75 6e 6c 65 73 73  _step()], unless
23390 0a 2a 2a 20 61 73 20 73 74 61 74 65 64 20 69 6e  .** as stated in
233a0 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 70 61   the previous pa
233b0 72 61 67 72 61 70 68 2c 20 73 71 6c 69 74 65 33  ragraph, sqlite3
233c0 5f 73 74 65 70 28 29 20 69 6e 76 6f 6b 65 73 0a  _step() invokes.
233d0 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  ** sqlite3_prepa
233e0 72 65 5f 76 32 28 29 20 74 6f 20 72 65 70 72 65  re_v2() to repre
233f0 70 61 72 65 20 61 20 73 74 61 74 65 6d 65 6e 74  pare a statement
23400 20 61 66 74 65 72 20 61 20 73 63 68 65 6d 61 20   after a schema 
23410 63 68 61 6e 67 65 2e 0a 2a 2f 0a 69 6e 74 20 73  change..*/.int s
23420 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f  qlite3_set_autho
23430 72 69 7a 65 72 28 0a 20 20 73 71 6c 69 74 65 33  rizer(.  sqlite3
23440 2a 2c 0a 20 20 69 6e 74 20 28 2a 78 41 75 74 68  *,.  int (*xAuth
23450 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73  )(void*,int,cons
23460 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68  t char*,const ch
23470 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c  ar*,const char*,
23480 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c 0a 20 20  const char*),.  
23490 76 6f 69 64 20 2a 70 55 73 65 72 44 61 74 61 0a  void *pUserData.
234a0 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
234b0 45 46 3a 20 41 75 74 68 6f 72 69 7a 65 72 20 52  EF: Authorizer R
234c0 65 74 75 72 6e 20 43 6f 64 65 73 0a 2a 2a 0a 2a  eturn Codes.**.*
234d0 2a 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  * The [sqlite3_s
234e0 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 20 7c 20  et_authorizer | 
234f0 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
23500 61 63 6b 20 66 75 6e 63 74 69 6f 6e 5d 20 6d 75  ack function] mu
23510 73 74 0a 2a 2a 20 72 65 74 75 72 6e 20 65 69 74  st.** return eit
23520 68 65 72 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  her [SQLITE_OK] 
23530 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20  or one of these 
23540 74 77 6f 20 63 6f 6e 73 74 61 6e 74 73 20 69 6e  two constants in
23550 20 6f 72 64 65 72 0a 2a 2a 20 74 6f 20 73 69 67   order.** to sig
23560 6e 61 6c 20 53 51 4c 69 74 65 20 77 68 65 74 68  nal SQLite wheth
23570 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 61 63  er or not the ac
23580 74 69 6f 6e 20 69 73 20 70 65 72 6d 69 74 74 65  tion is permitte
23590 64 2e 20 20 53 65 65 20 74 68 65 0a 2a 2a 20 5b  d.  See the.** [
235a0 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68  sqlite3_set_auth
235b0 6f 72 69 7a 65 72 20 7c 20 61 75 74 68 6f 72 69  orizer | authori
235c0 7a 65 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  zer documentatio
235d0 6e 5d 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  n] for additiona
235e0 6c 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  l.** information
235f0 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68 61  ..**.** Note tha
23600 74 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 20  t SQLITE_IGNORE 
23610 69 73 20 61 6c 73 6f 20 75 73 65 64 20 61 73 20  is also used as 
23620 61 20 5b 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  a [conflict reso
23630 6c 75 74 69 6f 6e 20 6d 6f 64 65 5d 0a 2a 2a 20  lution mode].** 
23640 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68  returned from th
23650 65 20 5b 73 71 6c 69 74 65 33 5f 76 74 61 62 5f  e [sqlite3_vtab_
23660 6f 6e 5f 63 6f 6e 66 6c 69 63 74 28 29 5d 20 69  on_conflict()] i
23670 6e 74 65 72 66 61 63 65 2e 0a 2a 2f 0a 23 64 65  nterface..*/.#de
23680 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 45 4e 59  fine SQLITE_DENY
23690 20 20 20 31 20 20 20 2f 2a 20 41 62 6f 72 74 20     1   /* Abort 
236a0 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
236b0 74 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20  t with an error 
236c0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
236d0 45 5f 49 47 4e 4f 52 45 20 32 20 20 20 2f 2a 20  E_IGNORE 2   /* 
236e0 44 6f 6e 27 74 20 61 6c 6c 6f 77 20 61 63 63 65  Don't allow acce
236f0 73 73 2c 20 62 75 74 20 64 6f 6e 27 74 20 67 65  ss, but don't ge
23700 6e 65 72 61 74 65 20 61 6e 20 65 72 72 6f 72 20  nerate an error 
23710 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  */../*.** CAPI3R
23720 45 46 3a 20 41 75 74 68 6f 72 69 7a 65 72 20 41  EF: Authorizer A
23730 63 74 69 6f 6e 20 43 6f 64 65 73 0a 2a 2a 0a 2a  ction Codes.**.*
23740 2a 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  * The [sqlite3_s
23750 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d  et_authorizer()]
23760 20 69 6e 74 65 72 66 61 63 65 20 72 65 67 69 73   interface regis
23770 74 65 72 73 20 61 20 63 61 6c 6c 62 61 63 6b 20  ters a callback 
23780 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 74 68 61 74  function.** that
23790 20 69 73 20 69 6e 76 6f 6b 65 64 20 74 6f 20 61   is invoked to a
237a0 75 74 68 6f 72 69 7a 65 20 63 65 72 74 61 69 6e  uthorize certain
237b0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61   SQL statement a
237c0 63 74 69 6f 6e 73 2e 20 20 54 68 65 0a 2a 2a 20  ctions.  The.** 
237d0 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
237e0 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
237f0 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 63   is an integer c
23800 6f 64 65 20 74 68 61 74 20 73 70 65 63 69 66 69  ode that specifi
23810 65 73 0a 2a 2a 20 77 68 61 74 20 61 63 74 69 6f  es.** what actio
23820 6e 20 69 73 20 62 65 69 6e 67 20 61 75 74 68 6f  n is being autho
23830 72 69 7a 65 64 2e 20 20 54 68 65 73 65 20 61 72  rized.  These ar
23840 65 20 74 68 65 20 69 6e 74 65 67 65 72 20 61 63  e the integer ac
23850 74 69 6f 6e 20 63 6f 64 65 73 20 74 68 61 74 0a  tion codes that.
23860 2a 2a 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65  ** the authorize
23870 72 20 63 61 6c 6c 62 61 63 6b 20 6d 61 79 20 62  r callback may b
23880 65 20 70 61 73 73 65 64 2e 0a 2a 2a 0a 2a 2a 20  e passed..**.** 
23890 54 68 65 73 65 20 61 63 74 69 6f 6e 20 63 6f 64  These action cod
238a0 65 20 76 61 6c 75 65 73 20 73 69 67 6e 69 66 79  e values signify
238b0 20 77 68 61 74 20 6b 69 6e 64 20 6f 66 20 6f 70   what kind of op
238c0 65 72 61 74 69 6f 6e 20 69 73 20 74 6f 20 62 65  eration is to be
238d0 0a 2a 2a 20 61 75 74 68 6f 72 69 7a 65 64 2e 20  .** authorized. 
238e0 20 54 68 65 20 33 72 64 20 61 6e 64 20 34 74 68   The 3rd and 4th
238f0 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74   parameters to t
23900 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e  he authorization
23910 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  .** callback fun
23920 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 70 61  ction will be pa
23930 72 61 6d 65 74 65 72 73 20 6f 72 20 4e 55 4c 4c  rameters or NULL
23940 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68   depending on wh
23950 69 63 68 20 6f 66 20 74 68 65 73 65 0a 2a 2a 20  ich of these.** 
23960 63 6f 64 65 73 20 69 73 20 75 73 65 64 20 61 73  codes is used as
23970 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   the second para
23980 6d 65 74 65 72 2e 20 20 5e 28 54 68 65 20 35 74  meter.  ^(The 5t
23990 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  h parameter to t
239a0 68 65 0a 2a 2a 20 61 75 74 68 6f 72 69 7a 65 72  he.** authorizer
239b0 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 74 68 65   callback is the
239c0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74   name of the dat
239d0 61 62 61 73 65 20 28 22 6d 61 69 6e 22 2c 20 22  abase ("main", "
239e0 74 65 6d 70 22 2c 0a 2a 2a 20 65 74 63 2e 29 20  temp",.** etc.) 
239f0 69 66 20 61 70 70 6c 69 63 61 62 6c 65 2e 29 5e  if applicable.)^
23a00 20 20 5e 54 68 65 20 36 74 68 20 70 61 72 61 6d    ^The 6th param
23a10 65 74 65 72 20 74 6f 20 74 68 65 20 61 75 74 68  eter to the auth
23a20 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 0a  orizer callback.
23a30 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  ** is the name o
23a40 66 20 74 68 65 20 69 6e 6e 65 72 2d 6d 6f 73 74  f the inner-most
23a50 20 74 72 69 67 67 65 72 20 6f 72 20 76 69 65 77   trigger or view
23a60 20 74 68 61 74 20 69 73 20 72 65 73 70 6f 6e 73   that is respons
23a70 69 62 6c 65 20 66 6f 72 0a 2a 2a 20 74 68 65 20  ible for.** the 
23a80 61 63 63 65 73 73 20 61 74 74 65 6d 70 74 20 6f  access attempt o
23a90 72 20 4e 55 4c 4c 20 69 66 20 74 68 69 73 20 61  r NULL if this a
23aa0 63 63 65 73 73 20 61 74 74 65 6d 70 74 20 69 73  ccess attempt is
23ab0 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 0a 2a   directly from.*
23ac0 2a 20 74 6f 70 2d 6c 65 76 65 6c 20 53 51 4c 20  * top-level SQL 
23ad0 63 6f 64 65 2e 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a  code..*/./******
23ae0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
23af0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
23b00 2a 2a 2a 2a 2a 20 33 72 64 20 2a 2a 2a 2a 2a 2a  ***** 3rd ******
23b10 2a 2a 2a 2a 2a 2a 20 34 74 68 20 2a 2a 2a 2a 2a  ****** 4th *****
23b20 2a 2a 2a 2a 2a 2a 2f 0a 23 64 65 66 69 6e 65 20  ******/.#define 
23b30 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 49 4e  SQLITE_CREATE_IN
23b40 44 45 58 20 20 20 20 20 20 20 20 20 20 31 20 20  DEX          1  
23b50 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20   /* Index Name  
23b60 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20      Table Name  
23b70 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
23b80 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 41 42  QLITE_CREATE_TAB
23b90 4c 45 20 20 20 20 20 20 20 20 20 20 32 20 20 20  LE          2   
23ba0 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20  /* Table Name   
23bb0 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
23bc0 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
23bd0 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d 50  LITE_CREATE_TEMP
23be0 5f 49 4e 44 45 58 20 20 20 20 20 33 20 20 20 2f  _INDEX     3   /
23bf0 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20  * Index Name    
23c00 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20    Table Name    
23c10 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
23c20 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f  ITE_CREATE_TEMP_
23c30 54 41 42 4c 45 20 20 20 20 20 34 20 20 20 2f 2a  TABLE     4   /*
23c40 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
23c50 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
23c60 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
23c70 54 45 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f 54  TE_CREATE_TEMP_T
23c80 52 49 47 47 45 52 20 20 20 35 20 20 20 2f 2a 20  RIGGER   5   /* 
23c90 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20  Trigger Name    
23ca0 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
23cb0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
23cc0 45 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f 56 49  E_CREATE_TEMP_VI
23cd0 45 57 20 20 20 20 20 20 36 20 20 20 2f 2a 20 56  EW      6   /* V
23ce0 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e  iew Name       N
23cf0 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
23d00 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
23d10 5f 43 52 45 41 54 45 5f 54 52 49 47 47 45 52 20  _CREATE_TRIGGER 
23d20 20 20 20 20 20 20 20 37 20 20 20 2f 2a 20 54 72         7   /* Tr
23d30 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61  igger Name    Ta
23d40 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
23d50 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
23d60 43 52 45 41 54 45 5f 56 49 45 57 20 20 20 20 20  CREATE_VIEW     
23d70 20 20 20 20 20 20 38 20 20 20 2f 2a 20 56 69 65        8   /* Vie
23d80 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c  w Name       NUL
23d90 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
23da0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
23db0 45 4c 45 54 45 20 20 20 20 20 20 20 20 20 20 20  ELETE           
23dc0 20 20 20 20 20 39 20 20 20 2f 2a 20 54 61 62 6c       9   /* Tabl
23dd0 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c  e Name      NULL
23de0 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
23df0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
23e00 4f 50 5f 49 4e 44 45 58 20 20 20 20 20 20 20 20  OP_INDEX        
23e10 20 20 20 31 30 20 20 20 2f 2a 20 49 6e 64 65 78     10   /* Index
23e20 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c 65   Name      Table
23e30 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64   Name      */.#d
23e40 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
23e50 50 5f 54 41 42 4c 45 20 20 20 20 20 20 20 20 20  P_TABLE         
23e60 20 20 31 31 20 20 20 2f 2a 20 54 61 62 6c 65 20    11   /* Table 
23e70 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20  Name      NULL  
23e80 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
23e90 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50  fine SQLITE_DROP
23ea0 5f 54 45 4d 50 5f 49 4e 44 45 58 20 20 20 20 20  _TEMP_INDEX     
23eb0 20 31 32 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e   12   /* Index N
23ec0 61 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e  ame      Table N
23ed0 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  ame      */.#def
23ee0 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f  ine SQLITE_DROP_
23ef0 54 45 4d 50 5f 54 41 42 4c 45 20 20 20 20 20 20  TEMP_TABLE      
23f00 31 33 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61  13   /* Table Na
23f10 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  me      NULL    
23f20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
23f30 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54  ne SQLITE_DROP_T
23f40 45 4d 50 5f 54 52 49 47 47 45 52 20 20 20 20 31  EMP_TRIGGER    1
23f50 34 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20 4e  4   /* Trigger N
23f60 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61 6d  ame    Table Nam
23f70 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  e      */.#defin
23f80 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45  e SQLITE_DROP_TE
23f90 4d 50 5f 56 49 45 57 20 20 20 20 20 20 20 31 35  MP_VIEW       15
23fa0 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20     /* View Name 
23fb0 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
23fc0 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
23fd0 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 52 49   SQLITE_DROP_TRI
23fe0 47 47 45 52 20 20 20 20 20 20 20 20 20 31 36 20  GGER         16 
23ff0 20 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d    /* Trigger Nam
24000 65 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20  e    Table Name 
24010 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
24020 53 51 4c 49 54 45 5f 44 52 4f 50 5f 56 49 45 57  SQLITE_DROP_VIEW
24030 20 20 20 20 20 20 20 20 20 20 20 20 31 37 20 20              17  
24040 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20   /* View Name   
24050 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
24060 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
24070 51 4c 49 54 45 5f 49 4e 53 45 52 54 20 20 20 20  QLITE_INSERT    
24080 20 20 20 20 20 20 20 20 20 20 20 31 38 20 20 20             18   
24090 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20  /* Table Name   
240a0 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
240b0 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
240c0 4c 49 54 45 5f 50 52 41 47 4d 41 20 20 20 20 20  LITE_PRAGMA     
240d0 20 20 20 20 20 20 20 20 20 20 31 39 20 20 20 2f            19   /
240e0 2a 20 50 72 61 67 6d 61 20 4e 61 6d 65 20 20 20  * Pragma Name   
240f0 20 20 31 73 74 20 61 72 67 20 6f 72 20 4e 55 4c    1st arg or NUL
24100 4c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  L */.#define SQL
24110 49 54 45 5f 52 45 41 44 20 20 20 20 20 20 20 20  ITE_READ        
24120 20 20 20 20 20 20 20 20 20 32 30 20 20 20 2f 2a           20   /*
24130 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
24140 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20 20 20 20   Column Name    
24150 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
24160 54 45 5f 53 45 4c 45 43 54 20 20 20 20 20 20 20  TE_SELECT       
24170 20 20 20 20 20 20 20 20 32 31 20 20 20 2f 2a 20          21   /* 
24180 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
24190 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
241a0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
241b0 45 5f 54 52 41 4e 53 41 43 54 49 4f 4e 20 20 20  E_TRANSACTION   
241c0 20 20 20 20 20 20 20 32 32 20 20 20 2f 2a 20 4f         22   /* O
241d0 70 65 72 61 74 69 6f 6e 20 20 20 20 20 20 20 4e  peration       N
241e0 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
241f0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
24200 5f 55 50 44 41 54 45 20 20 20 20 20 20 20 20 20  _UPDATE         
24210 20 20 20 20 20 20 32 33 20 20 20 2f 2a 20 54 61        23   /* Ta
24220 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 43 6f  ble Name      Co
24230 6c 75 6d 6e 20 4e 61 6d 65 20 20 20 20 20 2a 2f  lumn Name     */
24240 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
24250 41 54 54 41 43 48 20 20 20 20 20 20 20 20 20 20  ATTACH          
24260 20 20 20 20 20 32 34 20 20 20 2f 2a 20 46 69 6c       24   /* Fil
24270 65 6e 61 6d 65 20 20 20 20 20 20 20 20 4e 55 4c  ename        NUL
24280 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
24290 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
242a0 45 54 41 43 48 20 20 20 20 20 20 20 20 20 20 20  ETACH           
242b0 20 20 20 20 32 35 20 20 20 2f 2a 20 44 61 74 61      25   /* Data
242c0 62 61 73 65 20 4e 61 6d 65 20 20 20 4e 55 4c 4c  base Name   NULL
242d0 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
242e0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 4c  define SQLITE_AL
242f0 54 45 52 5f 54 41 42 4c 45 20 20 20 20 20 20 20  TER_TABLE       
24300 20 20 20 32 36 20 20 20 2f 2a 20 44 61 74 61 62     26   /* Datab
24310 61 73 65 20 4e 61 6d 65 20 20 20 54 61 62 6c 65  ase Name   Table
24320 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64   Name      */.#d
24330 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 49  efine SQLITE_REI
24340 4e 44 45 58 20 20 20 20 20 20 20 20 20 20 20 20  NDEX            
24350 20 20 32 37 20 20 20 2f 2a 20 49 6e 64 65 78 20    27   /* Index 
24360 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20  Name      NULL  
24370 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
24380 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 4e 41 4c  fine SQLITE_ANAL
24390 59 5a 45 20 20 20 20 20 20 20 20 20 20 20 20 20  YZE             
243a0 20 32 38 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e   28   /* Table N
243b0 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  ame      NULL   
243c0 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
243d0 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
243e0 45 5f 56 54 41 42 4c 45 20 20 20 20 20 20 20 20  E_VTABLE        
243f0 32 39 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61  29   /* Table Na
24400 6d 65 20 20 20 20 20 20 4d 6f 64 75 6c 65 20 4e  me      Module N
24410 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  ame     */.#defi
24420 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 56  ne SQLITE_DROP_V
24430 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 33  TABLE          3
24440 30 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  0   /* Table Nam
24450 65 20 20 20 20 20 20 4d 6f 64 75 6c 65 20 4e 61  e      Module Na
24460 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  me     */.#defin
24470 65 20 53 51 4c 49 54 45 5f 46 55 4e 43 54 49 4f  e SQLITE_FUNCTIO
24480 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 33 31  N             31
24490 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20     /* NULL      
244a0 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e 20 4e        Function N
244b0 61 6d 65 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65  ame   */.#define
244c0 20 53 51 4c 49 54 45 5f 53 41 56 45 50 4f 49 4e   SQLITE_SAVEPOIN
244d0 54 20 20 20 20 20 20 20 20 20 20 20 20 33 32 20  T            32 
244e0 20 20 2f 2a 20 4f 70 65 72 61 74 69 6f 6e 20 20    /* Operation  
244f0 20 20 20 20 20 53 61 76 65 70 6f 69 6e 74 20 4e       Savepoint N
24500 61 6d 65 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ame  */.#define 
24510 53 51 4c 49 54 45 5f 43 4f 50 59 20 20 20 20 20  SQLITE_COPY     
24520 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 20               0  
24530 20 2f 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 75 73   /* No longer us
24540 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ed */.#define SQ
24550 4c 49 54 45 5f 52 45 43 55 52 53 49 56 45 20 20  LITE_RECURSIVE  
24560 20 20 20 20 20 20 20 20 20 20 33 33 20 20 20 2f            33   /
24570 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20  * NULL          
24580 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
24590 20 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49    */../*.** CAPI
245a0 33 52 45 46 3a 20 54 72 61 63 69 6e 67 20 41 6e  3REF: Tracing An
245b0 64 20 50 72 6f 66 69 6c 69 6e 67 20 46 75 6e 63  d Profiling Func
245c0 74 69 6f 6e 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a  tions.** METHOD:
245d0 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54   sqlite3.**.** T
245e0 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 61 72  hese routines ar
245f0 65 20 64 65 70 72 65 63 61 74 65 64 2e 20 55 73  e deprecated. Us
24600 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74  e the [sqlite3_t
24610 72 61 63 65 5f 76 32 28 29 5d 20 69 6e 74 65 72  race_v2()] inter
24620 66 61 63 65 0a 2a 2a 20 69 6e 73 74 65 61 64 20  face.** instead 
24630 6f 66 20 74 68 65 20 72 6f 75 74 69 6e 65 73 20  of the routines 
24640 64 65 73 63 72 69 62 65 64 20 68 65 72 65 2e 0a  described here..
24650 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74  **.** These rout
24660 69 6e 65 73 20 72 65 67 69 73 74 65 72 20 63 61  ines register ca
24670 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 73  llback functions
24680 20 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65   that can be use
24690 64 20 66 6f 72 0a 2a 2a 20 74 72 61 63 69 6e 67  d for.** tracing
246a0 20 61 6e 64 20 70 72 6f 66 69 6c 69 6e 67 20 74   and profiling t
246b0 68 65 20 65 78 65 63 75 74 69 6f 6e 20 6f 66 20  he execution of 
246c0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  SQL statements..
246d0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 63 61 6c 6c 62  **.** ^The callb
246e0 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 72 65 67  ack function reg
246f0 69 73 74 65 72 65 64 20 62 79 20 73 71 6c 69 74  istered by sqlit
24700 65 33 5f 74 72 61 63 65 28 29 20 69 73 20 69 6e  e3_trace() is in
24710 76 6f 6b 65 64 20 61 74 0a 2a 2a 20 76 61 72 69  voked at.** vari
24720 6f 75 73 20 74 69 6d 65 73 20 77 68 65 6e 20 61  ous times when a
24730 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  n SQL statement 
24740 69 73 20 62 65 69 6e 67 20 72 75 6e 20 62 79 20  is being run by 
24750 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
24760 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  ..** ^The sqlite
24770 33 5f 74 72 61 63 65 28 29 20 63 61 6c 6c 62 61  3_trace() callba
24780 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69  ck is invoked wi
24790 74 68 20 61 20 55 54 46 2d 38 20 72 65 6e 64 65  th a UTF-8 rende
247a0 72 69 6e 67 20 6f 66 20 74 68 65 0a 2a 2a 20 53  ring of the.** S
247b0 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78  QL statement tex
247c0 74 20 61 73 20 74 68 65 20 73 74 61 74 65 6d 65  t as the stateme
247d0 6e 74 20 66 69 72 73 74 20 62 65 67 69 6e 73 20  nt first begins 
247e0 65 78 65 63 75 74 69 6e 67 2e 0a 2a 2a 20 5e 28  executing..** ^(
247f0 41 64 64 69 74 69 6f 6e 61 6c 20 73 71 6c 69 74  Additional sqlit
24800 65 33 5f 74 72 61 63 65 28 29 20 63 61 6c 6c 62  e3_trace() callb
24810 61 63 6b 73 20 6d 69 67 68 74 20 6f 63 63 75 72  acks might occur
24820 0a 2a 2a 20 61 73 20 65 61 63 68 20 74 72 69 67  .** as each trig
24830 67 65 72 65 64 20 73 75 62 70 72 6f 67 72 61 6d  gered subprogram
24840 20 69 73 20 65 6e 74 65 72 65 64 2e 20 20 54 68   is entered.  Th
24850 65 20 63 61 6c 6c 62 61 63 6b 73 20 66 6f 72 20  e callbacks for 
24860 74 72 69 67 67 65 72 73 0a 2a 2a 20 63 6f 6e 74  triggers.** cont
24870 61 69 6e 20 61 20 55 54 46 2d 38 20 53 51 4c 20  ain a UTF-8 SQL 
24880 63 6f 6d 6d 65 6e 74 20 74 68 61 74 20 69 64 65  comment that ide
24890 6e 74 69 66 69 65 73 20 74 68 65 20 74 72 69 67  ntifies the trig
248a0 67 65 72 2e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65  ger.)^.**.** The
248b0 20 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53   [SQLITE_TRACE_S
248c0 49 5a 45 5f 4c 49 4d 49 54 5d 20 63 6f 6d 70 69  IZE_LIMIT] compi
248d0 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63  le-time option c
248e0 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69  an be used to li
248f0 6d 69 74 0a 2a 2a 20 74 68 65 20 6c 65 6e 67 74  mit.** the lengt
24900 68 20 6f 66 20 5b 62 6f 75 6e 64 20 70 61 72 61  h of [bound para
24910 6d 65 74 65 72 5d 20 65 78 70 61 6e 73 69 6f 6e  meter] expansion
24920 20 69 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f   in the output o
24930 66 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28  f sqlite3_trace(
24940 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 63 61  )..**.** ^The ca
24950 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
24960 72 65 67 69 73 74 65 72 65 64 20 62 79 20 73 71  registered by sq
24970 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 20  lite3_profile() 
24980 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 61 73  is invoked.** as
24990 20 65 61 63 68 20 53 51 4c 20 73 74 61 74 65 6d   each SQL statem
249a0 65 6e 74 20 66 69 6e 69 73 68 65 73 2e 20 20 5e  ent finishes.  ^
249b0 54 68 65 20 70 72 6f 66 69 6c 65 20 63 61 6c 6c  The profile call
249c0 62 61 63 6b 20 63 6f 6e 74 61 69 6e 73 0a 2a 2a  back contains.**
249d0 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 74   the original st
249e0 61 74 65 6d 65 6e 74 20 74 65 78 74 20 61 6e 64  atement text and
249f0 20 61 6e 20 65 73 74 69 6d 61 74 65 20 6f 66 20   an estimate of 
24a00 77 61 6c 6c 2d 63 6c 6f 63 6b 20 74 69 6d 65 0a  wall-clock time.
24a10 2a 2a 20 6f 66 20 68 6f 77 20 6c 6f 6e 67 20 74  ** of how long t
24a20 68 61 74 20 73 74 61 74 65 6d 65 6e 74 20 74 6f  hat statement to
24a30 6f 6b 20 74 6f 20 72 75 6e 2e 20 20 5e 54 68 65  ok to run.  ^The
24a40 20 70 72 6f 66 69 6c 65 20 63 61 6c 6c 62 61 63   profile callbac
24a50 6b 0a 2a 2a 20 74 69 6d 65 20 69 73 20 69 6e 20  k.** time is in 
24a60 75 6e 69 74 73 20 6f 66 20 6e 61 6e 6f 73 65 63  units of nanosec
24a70 6f 6e 64 73 2c 20 68 6f 77 65 76 65 72 20 74 68  onds, however th
24a80 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d  e current implem
24a90 65 6e 74 61 74 69 6f 6e 0a 2a 2a 20 69 73 20 6f  entation.** is o
24aa0 6e 6c 79 20 63 61 70 61 62 6c 65 20 6f 66 20 6d  nly capable of m
24ab0 69 6c 6c 69 73 65 63 6f 6e 64 20 72 65 73 6f 6c  illisecond resol
24ac0 75 74 69 6f 6e 20 73 6f 20 74 68 65 20 73 69 78  ution so the six
24ad0 20 6c 65 61 73 74 20 73 69 67 6e 69 66 69 63 61   least significa
24ae0 6e 74 0a 2a 2a 20 64 69 67 69 74 73 20 69 6e 20  nt.** digits in 
24af0 74 68 65 20 74 69 6d 65 20 61 72 65 20 6d 65 61  the time are mea
24b00 6e 69 6e 67 6c 65 73 73 2e 20 20 46 75 74 75 72  ningless.  Futur
24b10 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  e versions of SQ
24b20 4c 69 74 65 0a 2a 2a 20 6d 69 67 68 74 20 70 72  Lite.** might pr
24b30 6f 76 69 64 65 20 67 72 65 61 74 65 72 20 72 65  ovide greater re
24b40 73 6f 6c 75 74 69 6f 6e 20 6f 6e 20 74 68 65 20  solution on the 
24b50 70 72 6f 66 69 6c 65 72 20 63 61 6c 6c 62 61 63  profiler callbac
24b60 6b 2e 20 20 54 68 65 0a 2a 2a 20 73 71 6c 69 74  k.  The.** sqlit
24b70 65 33 5f 70 72 6f 66 69 6c 65 28 29 20 66 75 6e  e3_profile() fun
24b80 63 74 69 6f 6e 20 69 73 20 63 6f 6e 73 69 64 65  ction is conside
24b90 72 65 64 20 65 78 70 65 72 69 6d 65 6e 74 61 6c  red experimental
24ba0 20 61 6e 64 20 69 73 0a 2a 2a 20 73 75 62 6a 65   and is.** subje
24bb0 63 74 20 74 6f 20 63 68 61 6e 67 65 20 69 6e 20  ct to change in 
24bc0 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  future versions 
24bd0 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2f 0a 53 51  of SQLite..*/.SQ
24be0 4c 49 54 45 5f 44 45 50 52 45 43 41 54 45 44 20  LITE_DEPRECATED 
24bf0 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 74 72  void *sqlite3_tr
24c00 61 63 65 28 73 71 6c 69 74 65 33 2a 2c 0a 20 20  ace(sqlite3*,.  
24c10 20 76 6f 69 64 28 2a 78 54 72 61 63 65 29 28 76   void(*xTrace)(v
24c20 6f 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a  oid*,const char*
24c30 29 2c 20 76 6f 69 64 2a 29 3b 0a 53 51 4c 49 54  ), void*);.SQLIT
24c40 45 5f 44 45 50 52 45 43 41 54 45 44 20 76 6f 69  E_DEPRECATED voi
24c50 64 20 2a 73 71 6c 69 74 65 33 5f 70 72 6f 66 69  d *sqlite3_profi
24c60 6c 65 28 73 71 6c 69 74 65 33 2a 2c 0a 20 20 20  le(sqlite3*,.   
24c70 76 6f 69 64 28 2a 78 50 72 6f 66 69 6c 65 29 28  void(*xProfile)(
24c80 76 6f 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72  void*,const char
24c90 2a 2c 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34  *,sqlite3_uint64
24ca0 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a  ), void*);../*.*
24cb0 2a 20 43 41 50 49 33 52 45 46 3a 20 53 51 4c 20  * CAPI3REF: SQL 
24cc0 54 72 61 63 65 20 45 76 65 6e 74 20 43 6f 64 65  Trace Event Code
24cd0 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 53  s.** KEYWORDS: S
24ce0 51 4c 49 54 45 5f 54 52 41 43 45 0a 2a 2a 0a 2a  QLITE_TRACE.**.*
24cf0 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e 74  * These constant
24d00 73 20 69 64 65 6e 74 69 66 79 20 63 6c 61 73 73  s identify class
24d10 65 73 20 6f 66 20 65 76 65 6e 74 73 20 74 68 61  es of events tha
24d20 74 20 63 61 6e 20 62 65 20 6d 6f 6e 69 74 6f 72  t can be monitor
24d30 65 64 0a 2a 2a 20 75 73 69 6e 67 20 74 68 65 20  ed.** using the 
24d40 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76  [sqlite3_trace_v
24d50 32 28 29 5d 20 74 72 61 63 69 6e 67 20 6c 6f 67  2()] tracing log
24d60 69 63 2e 20 20 54 68 65 20 4d 20 61 72 67 75 6d  ic.  The M argum
24d70 65 6e 74 0a 2a 2a 20 74 6f 20 5b 73 71 6c 69 74  ent.** to [sqlit
24d80 65 33 5f 74 72 61 63 65 5f 76 32 28 44 2c 4d 2c  e3_trace_v2(D,M,
24d90 58 2c 50 29 5d 20 69 73 20 61 6e 20 4f 52 2d 65  X,P)] is an OR-e
24da0 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66  d combination of
24db0 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 0a   one or more of.
24dc0 2a 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ** the following
24dd0 20 63 6f 6e 73 74 61 6e 74 73 2e 20 20 5e 54 68   constants.  ^Th
24de0 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
24df0 20 74 6f 20 74 68 65 20 74 72 61 63 65 20 63 61   to the trace ca
24e00 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 6f 6e 65  llback.** is one
24e10 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
24e20 67 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 2a 2a 0a  g constants..**.
24e30 2a 2a 20 4e 65 77 20 74 72 61 63 69 6e 67 20 63  ** New tracing c
24e40 6f 6e 73 74 61 6e 74 73 20 6d 61 79 20 62 65 20  onstants may be 
24e50 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20  added in future 
24e60 72 65 6c 65 61 73 65 73 2e 0a 2a 2a 0a 2a 2a 20  releases..**.** 
24e70 5e 41 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63  ^A trace callbac
24e80 6b 20 68 61 73 20 66 6f 75 72 20 61 72 67 75 6d  k has four argum
24e90 65 6e 74 73 3a 20 78 43 61 6c 6c 62 61 63 6b 28  ents: xCallback(
24ea0 54 2c 43 2c 50 2c 58 29 2e 0a 2a 2a 20 5e 54 68  T,C,P,X)..** ^Th
24eb0 65 20 54 20 61 72 67 75 6d 65 6e 74 20 69 73 20  e T argument is 
24ec0 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e 74 65 67  one of the integ
24ed0 65 72 20 74 79 70 65 20 63 6f 64 65 73 20 61 62  er type codes ab
24ee0 6f 76 65 2e 0a 2a 2a 20 5e 54 68 65 20 43 20 61  ove..** ^The C a
24ef0 72 67 75 6d 65 6e 74 20 69 73 20 61 20 63 6f 70  rgument is a cop
24f00 79 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 78 74  y of the context
24f10 20 70 6f 69 6e 74 65 72 20 70 61 73 73 65 64 20   pointer passed 
24f20 69 6e 20 61 73 20 74 68 65 0a 2a 2a 20 66 6f 75  in as the.** fou
24f30 72 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  rth argument to 
24f40 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76  [sqlite3_trace_v
24f50 32 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 50 20 61  2()]..** The P a
24f60 6e 64 20 58 20 61 72 67 75 6d 65 6e 74 73 20 61  nd X arguments a
24f70 72 65 20 70 6f 69 6e 74 65 72 73 20 77 68 6f 73  re pointers whos
24f80 65 20 6d 65 61 6e 69 6e 67 73 20 64 65 70 65 6e  e meanings depen
24f90 64 20 6f 6e 20 54 2e 0a 2a 2a 0a 2a 2a 20 3c 64  d on T..**.** <d
24fa0 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54  l>.** [[SQLITE_T
24fb0 52 41 43 45 5f 53 54 4d 54 5d 5d 20 3c 64 74 3e  RACE_STMT]] <dt>
24fc0 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d  SQLITE_TRACE_STM
24fd0 54 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41  T</dt>.** <dd>^A
24fe0 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53  n SQLITE_TRACE_S
24ff0 54 4d 54 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  TMT callback is 
25000 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61 20 70  invoked when a p
25010 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
25020 74 0a 2a 2a 20 66 69 72 73 74 20 62 65 67 69 6e  t.** first begin
25030 73 20 72 75 6e 6e 69 6e 67 20 61 6e 64 20 70 6f  s running and po
25040 73 73 69 62 6c 79 20 61 74 20 6f 74 68 65 72 20  ssibly at other 
25050 74 69 6d 65 73 20 64 75 72 69 6e 67 20 74 68 65  times during the
25060 0a 2a 2a 20 65 78 65 63 75 74 69 6f 6e 20 6f 66  .** execution of
25070 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
25080 61 74 65 6d 65 6e 74 2c 20 73 75 63 68 20 61 73  atement, such as
25090 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6f 66   at the start of
250a0 20 65 61 63 68 0a 2a 2a 20 74 72 69 67 67 65 72   each.** trigger
250b0 20 73 75 62 70 72 6f 67 72 61 6d 2e 20 5e 54 68   subprogram. ^Th
250c0 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20  e P argument is 
250d0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
250e0 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74  .** [prepared st
250f0 61 74 65 6d 65 6e 74 5d 2e 20 5e 54 68 65 20 58  atement]. ^The X
25100 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70   argument is a p
25110 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69  ointer to a stri
25120 6e 67 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 74  ng which.** is t
25130 68 65 20 75 6e 65 78 70 61 6e 64 65 64 20 53 51  he unexpanded SQ
25140 4c 20 74 65 78 74 20 6f 66 20 74 68 65 20 70 72  L text of the pr
25150 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
25160 20 6f 72 20 61 6e 20 53 51 4c 20 63 6f 6d 6d 65   or an SQL comme
25170 6e 74 20 0a 2a 2a 20 74 68 61 74 20 69 6e 64 69  nt .** that indi
25180 63 61 74 65 73 20 74 68 65 20 69 6e 76 6f 63 61  cates the invoca
25190 74 69 6f 6e 20 6f 66 20 61 20 74 72 69 67 67 65  tion of a trigge
251a0 72 2e 20 20 5e 54 68 65 20 63 61 6c 6c 62 61 63  r.  ^The callbac
251b0 6b 20 63 61 6e 20 63 6f 6d 70 75 74 65 0a 2a 2a  k can compute.**
251c0 20 74 68 65 20 73 61 6d 65 20 74 65 78 74 20 74   the same text t
251d0 68 61 74 20 77 6f 75 6c 64 20 68 61 76 65 20 62  hat would have b
251e0 65 65 6e 20 72 65 74 75 72 6e 65 64 20 62 79 20  een returned by 
251f0 74 68 65 20 6c 65 67 61 63 79 20 5b 73 71 6c 69  the legacy [sqli
25200 74 65 33 5f 74 72 61 63 65 28 29 5d 0a 2a 2a 20  te3_trace()].** 
25210 69 6e 74 65 72 66 61 63 65 20 62 79 20 75 73 69  interface by usi
25220 6e 67 20 74 68 65 20 58 20 61 72 67 75 6d 65 6e  ng the X argumen
25230 74 20 77 68 65 6e 20 58 20 62 65 67 69 6e 73 20  t when X begins 
25240 77 69 74 68 20 22 2d 2d 22 20 61 6e 64 20 69 6e  with "--" and in
25250 76 6f 6b 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74  voking.** [sqlit
25260 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28  e3_expanded_sql(
25270 50 29 5d 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a  P)] otherwise..*
25280 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54 52  *.** [[SQLITE_TR
25290 41 43 45 5f 50 52 4f 46 49 4c 45 5d 5d 20 3c 64  ACE_PROFILE]] <d
252a0 74 3e 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 50  t>SQLITE_TRACE_P
252b0 52 4f 46 49 4c 45 3c 2f 64 74 3e 0a 2a 2a 20 3c  ROFILE</dt>.** <
252c0 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54 52  dd>^An SQLITE_TR
252d0 41 43 45 5f 50 52 4f 46 49 4c 45 20 63 61 6c 6c  ACE_PROFILE call
252e0 62 61 63 6b 20 70 72 6f 76 69 64 65 73 20 61 70  back provides ap
252f0 70 72 6f 78 69 6d 61 74 65 6c 79 20 74 68 65 20  proximately the 
25300 73 61 6d 65 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74  same.** informat
25310 69 6f 6e 20 61 73 20 69 73 20 70 72 6f 76 69 64  ion as is provid
25320 65 64 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74  ed by the [sqlit
25330 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20 63 61  e3_profile()] ca
25340 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 5e 54 68 65 20  llback..** ^The 
25350 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  P argument is a 
25360 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 5b  pointer to the [
25370 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
25380 6e 74 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 58  nt] and the.** X
25390 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 73   argument points
253a0 20 74 6f 20 61 20 36 34 2d 62 69 74 20 69 6e 74   to a 64-bit int
253b0 65 67 65 72 20 77 68 69 63 68 20 69 73 20 74 68  eger which is th
253c0 65 20 65 73 74 69 6d 61 74 65 64 20 6f 66 0a 2a  e estimated of.*
253d0 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  * the number of 
253e0 6e 61 6e 6f 73 65 63 6f 6e 64 20 74 68 61 74 20  nanosecond that 
253f0 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
25400 74 65 6d 65 6e 74 20 74 6f 6f 6b 20 74 6f 20 72  tement took to r
25410 75 6e 2e 0a 2a 2a 20 5e 54 68 65 20 53 51 4c 49  un..** ^The SQLI
25420 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c 45  TE_TRACE_PROFILE
25430 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
25440 6f 6b 65 64 20 77 68 65 6e 20 74 68 65 20 73 74  oked when the st
25450 61 74 65 6d 65 6e 74 20 66 69 6e 69 73 68 65 73  atement finishes
25460 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ..**.** [[SQLITE
25470 5f 54 52 41 43 45 5f 52 4f 57 5d 5d 20 3c 64 74  _TRACE_ROW]] <dt
25480 3e 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f  >SQLITE_TRACE_RO
25490 57 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41  W</dt>.** <dd>^A
254a0 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52  n SQLITE_TRACE_R
254b0 4f 57 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69  OW callback is i
254c0 6e 76 6f 6b 65 64 20 77 68 65 6e 65 76 65 72 20  nvoked whenever 
254d0 61 20 70 72 65 70 61 72 65 64 0a 2a 2a 20 73 74  a prepared.** st
254e0 61 74 65 6d 65 6e 74 20 67 65 6e 65 72 61 74 65  atement generate
254f0 73 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f  s a single row o
25500 66 20 72 65 73 75 6c 74 2e 20 20 0a 2a 2a 20 5e  f result.  .** ^
25510 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69  The P argument i
25520 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
25530 68 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  he [prepared sta
25540 74 65 6d 65 6e 74 5d 20 61 6e 64 20 74 68 65 0a  tement] and the.
25550 2a 2a 20 58 20 61 72 67 75 6d 65 6e 74 20 69 73  ** X argument is
25560 20 75 6e 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5b   unused..**.** [
25570 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c  [SQLITE_TRACE_CL
25580 4f 53 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  OSE]] <dt>SQLITE
25590 5f 54 52 41 43 45 5f 43 4c 4f 53 45 3c 2f 64 74  _TRACE_CLOSE</dt
255a0 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53 51 4c  >.** <dd>^An SQL
255b0 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53 45 20  ITE_TRACE_CLOSE 
255c0 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
255d0 6b 65 64 20 77 68 65 6e 20 61 20 64 61 74 61 62  ked when a datab
255e0 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  ase.** connectio
255f0 6e 20 63 6c 6f 73 65 73 2e 0a 2a 2a 20 5e 54 68  n closes..** ^Th
25600 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20  e P argument is 
25610 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
25620 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
25630 63 74 69 6f 6e 5d 20 6f 62 6a 65 63 74 0a 2a 2a  ction] object.**
25640 20 61 6e 64 20 74 68 65 20 58 20 61 72 67 75 6d   and the X argum
25650 65 6e 74 20 69 73 20 75 6e 75 73 65 64 2e 0a 2a  ent is unused..*
25660 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69  * </dl>.*/.#defi
25670 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f  ne SQLITE_TRACE_
25680 53 54 4d 54 20 20 20 20 20 20 20 30 78 30 31 0a  STMT       0x01.
25690 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54  #define SQLITE_T
256a0 52 41 43 45 5f 50 52 4f 46 49 4c 45 20 20 20 20  RACE_PROFILE    
256b0 30 78 30 32 0a 23 64 65 66 69 6e 65 20 53 51 4c  0x02.#define SQL
256c0 49 54 45 5f 54 52 41 43 45 5f 52 4f 57 20 20 20  ITE_TRACE_ROW   
256d0 20 20 20 20 20 30 78 30 34 0a 23 64 65 66 69 6e       0x04.#defin
256e0 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43  e SQLITE_TRACE_C
256f0 4c 4f 53 45 20 20 20 20 20 20 30 78 30 38 0a 0a  LOSE      0x08..
25700 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
25710 53 51 4c 20 54 72 61 63 65 20 48 6f 6f 6b 0a 2a  SQL Trace Hook.*
25720 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
25730 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  3.**.** ^The sql
25740 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28 44 2c  ite3_trace_v2(D,
25750 4d 2c 58 2c 50 29 20 69 6e 74 65 72 66 61 63 65  M,X,P) interface
25760 20 72 65 67 69 73 74 65 72 73 20 61 20 74 72 61   registers a tra
25770 63 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66  ce callback.** f
25780 75 6e 63 74 69 6f 6e 20 58 20 61 67 61 69 6e 73  unction X agains
25790 74 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  t [database conn
257a0 65 63 74 69 6f 6e 5d 20 44 2c 20 75 73 69 6e 67  ection] D, using
257b0 20 70 72 6f 70 65 72 74 79 20 6d 61 73 6b 20 4d   property mask M
257c0 0a 2a 2a 20 61 6e 64 20 63 6f 6e 74 65 78 74 20  .** and context 
257d0 70 6f 69 6e 74 65 72 20 50 2e 20 20 5e 49 66 20  pointer P.  ^If 
257e0 74 68 65 20 58 20 63 61 6c 6c 62 61 63 6b 20 69  the X callback i
257f0 73 0a 2a 2a 20 4e 55 4c 4c 20 6f 72 20 69 66 20  s.** NULL or if 
25800 74 68 65 20 4d 20 6d 61 73 6b 20 69 73 20 7a 65  the M mask is ze
25810 72 6f 2c 20 74 68 65 6e 20 74 72 61 63 69 6e 67  ro, then tracing
25820 20 69 73 20 64 69 73 61 62 6c 65 64 2e 20 20 54   is disabled.  T
25830 68 65 0a 2a 2a 20 4d 20 61 72 67 75 6d 65 6e 74  he.** M argument
25840 20 73 68 6f 75 6c 64 20 62 65 20 74 68 65 20 62   should be the b
25850 69 74 77 69 73 65 20 4f 52 2d 65 64 20 63 6f 6d  itwise OR-ed com
25860 62 69 6e 61 74 69 6f 6e 20 6f 66 0a 2a 2a 20 7a  bination of.** z
25870 65 72 6f 20 6f 72 20 6d 6f 72 65 20 5b 53 51 4c  ero or more [SQL
25880 49 54 45 5f 54 52 41 43 45 5d 20 63 6f 6e 73 74  ITE_TRACE] const
25890 61 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 45 61 63  ants..**.** ^Eac
258a0 68 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65 72  h call to either
258b0 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29   sqlite3_trace()
258c0 20 6f 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63   or sqlite3_trac
258d0 65 5f 76 32 28 29 20 6f 76 65 72 72 69 64 65 73  e_v2() overrides
258e0 20 0a 2a 2a 20 28 63 61 6e 63 65 6c 73 29 20 61   .** (cancels) a
258f0 6e 79 20 70 72 69 6f 72 20 63 61 6c 6c 73 20 74  ny prior calls t
25900 6f 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28  o sqlite3_trace(
25910 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 74 72 61  ) or sqlite3_tra
25920 63 65 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e  ce_v2()..**.** ^
25930 54 68 65 20 58 20 63 61 6c 6c 62 61 63 6b 20 69  The X callback i
25940 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 65 76  s invoked whenev
25950 65 72 20 61 6e 79 20 6f 66 20 74 68 65 20 65 76  er any of the ev
25960 65 6e 74 73 20 69 64 65 6e 74 69 66 69 65 64 20  ents identified 
25970 62 79 20 0a 2a 2a 20 6d 61 73 6b 20 4d 20 6f 63  by .** mask M oc
25980 63 75 72 2e 20 20 5e 54 68 65 20 69 6e 74 65 67  cur.  ^The integ
25990 65 72 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  er return value 
259a0 66 72 6f 6d 20 74 68 65 20 63 61 6c 6c 62 61 63  from the callbac
259b0 6b 20 69 73 20 63 75 72 72 65 6e 74 6c 79 0a 2a  k is currently.*
259c0 2a 20 69 67 6e 6f 72 65 64 2c 20 74 68 6f 75 67  * ignored, thoug
259d0 68 20 74 68 69 73 20 6d 61 79 20 63 68 61 6e 67  h this may chang
259e0 65 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65  e in future rele
259f0 61 73 65 73 2e 20 20 43 61 6c 6c 62 61 63 6b 0a  ases.  Callback.
25a00 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ** implementatio
25a10 6e 73 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e  ns should return
25a20 20 7a 65 72 6f 20 74 6f 20 65 6e 73 75 72 65 20   zero to ensure 
25a30 66 75 74 75 72 65 20 63 6f 6d 70 61 74 69 62 69  future compatibi
25a40 6c 69 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 41 20 74  lity..**.** ^A t
25a50 72 61 63 65 20 63 61 6c 6c 62 61 63 6b 20 69 73  race callback is
25a60 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 66 6f   invoked with fo
25a70 75 72 20 61 72 67 75 6d 65 6e 74 73 3a 20 63 61  ur arguments: ca
25a80 6c 6c 62 61 63 6b 28 54 2c 43 2c 50 2c 58 29 2e  llback(T,C,P,X).
25a90 0a 2a 2a 20 5e 54 68 65 20 54 20 61 72 67 75 6d  .** ^The T argum
25aa0 65 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20 74 68  ent is one of th
25ab0 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5d  e [SQLITE_TRACE]
25ac0 0a 2a 2a 20 63 6f 6e 73 74 61 6e 74 73 20 74 6f  .** constants to
25ad0 20 69 6e 64 69 63 61 74 65 20 77 68 79 20 74 68   indicate why th
25ae0 65 20 63 61 6c 6c 62 61 63 6b 20 77 61 73 20 69  e callback was i
25af0 6e 76 6f 6b 65 64 2e 0a 2a 2a 20 5e 54 68 65 20  nvoked..** ^The 
25b00 43 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  C argument is a 
25b10 63 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 6e 74  copy of the cont
25b20 65 78 74 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 20  ext pointer..** 
25b30 54 68 65 20 50 20 61 6e 64 20 58 20 61 72 67 75  The P and X argu
25b40 6d 65 6e 74 73 20 61 72 65 20 70 6f 69 6e 74 65  ments are pointe
25b50 72 73 20 77 68 6f 73 65 20 6d 65 61 6e 69 6e 67  rs whose meaning
25b60 73 20 64 65 70 65 6e 64 20 6f 6e 20 54 2e 0a 2a  s depend on T..*
25b70 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
25b80 5f 74 72 61 63 65 5f 76 32 28 29 20 69 6e 74 65  _trace_v2() inte
25b90 72 66 61 63 65 20 69 73 20 69 6e 74 65 6e 64 65  rface is intende
25ba0 64 20 74 6f 20 72 65 70 6c 61 63 65 20 74 68 65  d to replace the
25bb0 20 6c 65 67 61 63 79 0a 2a 2a 20 69 6e 74 65 72   legacy.** inter
25bc0 66 61 63 65 73 20 5b 73 71 6c 69 74 65 33 5f 74  faces [sqlite3_t
25bd0 72 61 63 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c  race()] and [sql
25be0 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 2c  ite3_profile()],
25bf0 20 62 6f 74 68 20 6f 66 20 77 68 69 63 68 0a 2a   both of which.*
25c00 2a 20 61 72 65 20 64 65 70 72 65 63 61 74 65 64  * are deprecated
25c10 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
25c20 5f 74 72 61 63 65 5f 76 32 28 0a 20 20 73 71 6c  _trace_v2(.  sql
25c30 69 74 65 33 2a 2c 0a 20 20 75 6e 73 69 67 6e 65  ite3*,.  unsigne
25c40 64 20 75 4d 61 73 6b 2c 0a 20 20 69 6e 74 28 2a  d uMask,.  int(*
25c50 78 43 61 6c 6c 62 61 63 6b 29 28 75 6e 73 69 67  xCallback)(unsig
25c60 6e 65 64 2c 76 6f 69 64 2a 2c 76 6f 69 64 2a 2c  ned,void*,void*,
25c70 76 6f 69 64 2a 29 2c 0a 20 20 76 6f 69 64 20 2a  void*),.  void *
25c80 70 43 74 78 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  pCtx.);../*.** C
25c90 41 50 49 33 52 45 46 3a 20 51 75 65 72 79 20 50  API3REF: Query P
25ca0 72 6f 67 72 65 73 73 20 43 61 6c 6c 62 61 63 6b  rogress Callback
25cb0 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  s.** METHOD: sql
25cc0 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  ite3.**.** ^The 
25cd0 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73  sqlite3_progress
25ce0 5f 68 61 6e 64 6c 65 72 28 44 2c 4e 2c 58 2c 50  _handler(D,N,X,P
25cf0 29 20 69 6e 74 65 72 66 61 63 65 20 63 61 75 73  ) interface caus
25d00 65 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 0a  es the callback.
25d10 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 58 20 74 6f  ** function X to
25d20 20 62 65 20 69 6e 76 6f 6b 65 64 20 70 65 72 69   be invoked peri
25d30 6f 64 69 63 61 6c 6c 79 20 64 75 72 69 6e 67 20  odically during 
25d40 6c 6f 6e 67 20 72 75 6e 6e 69 6e 67 20 63 61 6c  long running cal
25d50 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65  ls to.** [sqlite
25d60 33 5f 65 78 65 63 28 29 5d 2c 20 5b 73 71 6c 69  3_exec()], [sqli
25d70 74 65 33 5f 73 74 65 70 28 29 5d 20 61 6e 64 20  te3_step()] and 
25d80 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62  [sqlite3_get_tab
25d90 6c 65 28 29 5d 20 66 6f 72 0a 2a 2a 20 64 61 74  le()] for.** dat
25da0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
25db0 20 44 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 20   D.  An example 
25dc0 75 73 65 20 66 6f 72 20 74 68 69 73 0a 2a 2a 20  use for this.** 
25dd0 69 6e 74 65 72 66 61 63 65 20 69 73 20 74 6f 20  interface is to 
25de0 6b 65 65 70 20 61 20 47 55 49 20 75 70 64 61 74  keep a GUI updat
25df0 65 64 20 64 75 72 69 6e 67 20 61 20 6c 61 72 67  ed during a larg
25e00 65 20 71 75 65 72 79 2e 0a 2a 2a 0a 2a 2a 20 5e  e query..**.** ^
25e10 54 68 65 20 70 61 72 61 6d 65 74 65 72 20 50 20  The parameter P 
25e20 69 73 20 70 61 73 73 65 64 20 74 68 72 6f 75 67  is passed throug
25e30 68 20 61 73 20 74 68 65 20 6f 6e 6c 79 20 70 61  h as the only pa
25e40 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 0a  rameter to the .
25e50 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  ** callback func
25e60 74 69 6f 6e 20 58 2e 20 20 5e 54 68 65 20 70 61  tion X.  ^The pa
25e70 72 61 6d 65 74 65 72 20 4e 20 69 73 20 74 68 65  rameter N is the
25e80 20 61 70 70 72 6f 78 69 6d 61 74 65 20 6e 75 6d   approximate num
25e90 62 65 72 20 6f 66 20 0a 2a 2a 20 5b 76 69 72 74  ber of .** [virt
25ea0 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74  ual machine inst
25eb0 72 75 63 74 69 6f 6e 73 5d 20 74 68 61 74 20 61  ructions] that a
25ec0 72 65 20 65 76 61 6c 75 61 74 65 64 20 62 65 74  re evaluated bet
25ed0 77 65 65 6e 20 73 75 63 63 65 73 73 69 76 65 0a  ween successive.
25ee0 2a 2a 20 69 6e 76 6f 63 61 74 69 6f 6e 73 20 6f  ** invocations o
25ef0 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 58  f the callback X
25f00 2e 20 20 5e 49 66 20 4e 20 69 73 20 6c 65 73 73  .  ^If N is less
25f10 20 74 68 61 6e 20 6f 6e 65 20 74 68 65 6e 20 74   than one then t
25f20 68 65 20 70 72 6f 67 72 65 73 73 0a 2a 2a 20 68  he progress.** h
25f30 61 6e 64 6c 65 72 20 69 73 20 64 69 73 61 62 6c  andler is disabl
25f40 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c 79 20  ed..**.** ^Only 
25f50 61 20 73 69 6e 67 6c 65 20 70 72 6f 67 72 65 73  a single progres
25f60 73 20 68 61 6e 64 6c 65 72 20 6d 61 79 20 62 65  s handler may be
25f70 20 64 65 66 69 6e 65 64 20 61 74 20 6f 6e 65 20   defined at one 
25f80 74 69 6d 65 20 70 65 72 0a 2a 2a 20 5b 64 61 74  time per.** [dat
25f90 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
25fa0 5d 3b 20 73 65 74 74 69 6e 67 20 61 20 6e 65 77  ]; setting a new
25fb0 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65   progress handle
25fc0 72 20 63 61 6e 63 65 6c 73 20 74 68 65 0a 2a 2a  r cancels the.**
25fd0 20 6f 6c 64 20 6f 6e 65 2e 20 20 5e 53 65 74 74   old one.  ^Sett
25fe0 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 58 20  ing parameter X 
25ff0 74 6f 20 4e 55 4c 4c 20 64 69 73 61 62 6c 65 73  to NULL disables
26000 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 68 61   the progress ha
26010 6e 64 6c 65 72 2e 0a 2a 2a 20 5e 54 68 65 20 70  ndler..** ^The p
26020 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20  rogress handler 
26030 69 73 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 64  is also disabled
26040 20 62 79 20 73 65 74 74 69 6e 67 20 4e 20 74 6f   by setting N to
26050 20 61 20 76 61 6c 75 65 20 6c 65 73 73 0a 2a 2a   a value less.**
26060 20 74 68 61 6e 20 31 2e 0a 2a 2a 0a 2a 2a 20 5e   than 1..**.** ^
26070 49 66 20 74 68 65 20 70 72 6f 67 72 65 73 73 20  If the progress 
26080 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73  callback returns
26090 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 20 6f   non-zero, the o
260a0 70 65 72 61 74 69 6f 6e 20 69 73 0a 2a 2a 20 69  peration is.** i
260b0 6e 74 65 72 72 75 70 74 65 64 2e 20 20 54 68 69  nterrupted.  Thi
260c0 73 20 66 65 61 74 75 72 65 20 63 61 6e 20 62 65  s feature can be
260d0 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65   used to impleme
260e0 6e 74 20 61 0a 2a 2a 20 22 43 61 6e 63 65 6c 22  nt a.** "Cancel"
260f0 20 62 75 74 74 6f 6e 20 6f 6e 20 61 20 47 55 49   button on a GUI
26100 20 70 72 6f 67 72 65 73 73 20 64 69 61 6c 6f 67   progress dialog
26110 20 62 6f 78 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20   box..**.** The 
26120 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72  progress handler
26130 20 63 61 6c 6c 62 61 63 6b 20 6d 75 73 74 20 6e   callback must n
26140 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 74  ot do anything t
26150 68 61 74 20 77 69 6c 6c 20 6d 6f 64 69 66 79 0a  hat will modify.
26160 2a 2a 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ** the database 
26170 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20  connection that 
26180 69 6e 76 6f 6b 65 64 20 74 68 65 20 70 72 6f 67  invoked the prog
26190 72 65 73 73 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a  ress handler..**
261a0 20 4e 6f 74 65 20 74 68 61 74 20 5b 73 71 6c 69   Note that [sqli
261b0 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
261c0 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 73  ] and [sqlite3_s
261d0 74 65 70 28 29 5d 20 62 6f 74 68 20 6d 6f 64 69  tep()] both modi
261e0 66 79 20 74 68 65 69 72 0a 2a 2a 20 64 61 74 61  fy their.** data
261f0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
26200 20 66 6f 72 20 74 68 65 20 6d 65 61 6e 69 6e 67   for the meaning
26210 20 6f 66 20 22 6d 6f 64 69 66 79 22 20 69 6e 20   of "modify" in 
26220 74 68 69 73 20 70 61 72 61 67 72 61 70 68 2e 0a  this paragraph..
26230 2a 2a 0a 2a 2f 0a 76 6f 69 64 20 73 71 6c 69 74  **.*/.void sqlit
26240 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64  e3_progress_hand
26250 6c 65 72 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e  ler(sqlite3*, in
26260 74 2c 20 69 6e 74 28 2a 29 28 76 6f 69 64 2a 29  t, int(*)(void*)
26270 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  , void*);../*.**
26280 20 43 41 50 49 33 52 45 46 3a 20 4f 70 65 6e 69   CAPI3REF: Openi
26290 6e 67 20 41 20 4e 65 77 20 44 61 74 61 62 61 73  ng A New Databas
262a0 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20  e Connection.** 
262b0 43 4f 4e 53 54 52 55 43 54 4f 52 3a 20 73 71 6c  CONSTRUCTOR: sql
262c0 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73  ite3.**.** ^Thes
262d0 65 20 72 6f 75 74 69 6e 65 73 20 6f 70 65 6e 20  e routines open 
262e0 61 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62 61  an SQLite databa
262f0 73 65 20 66 69 6c 65 20 61 73 20 73 70 65 63 69  se file as speci
26300 66 69 65 64 20 62 79 20 74 68 65 20 0a 2a 2a 20  fied by the .** 
26310 66 69 6c 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e  filename argumen
26320 74 2e 20 5e 54 68 65 20 66 69 6c 65 6e 61 6d 65  t. ^The filename
26330 20 61 72 67 75 6d 65 6e 74 20 69 73 20 69 6e 74   argument is int
26340 65 72 70 72 65 74 65 64 20 61 73 20 55 54 46 2d  erpreted as UTF-
26350 38 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33  8 for.** sqlite3
26360 5f 6f 70 65 6e 28 29 20 61 6e 64 20 73 71 6c 69  _open() and sqli
26370 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 61 6e  te3_open_v2() an
26380 64 20 61 73 20 55 54 46 2d 31 36 20 69 6e 20 74  d as UTF-16 in t
26390 68 65 20 6e 61 74 69 76 65 20 62 79 74 65 0a 2a  he native byte.*
263a0 2a 20 6f 72 64 65 72 20 66 6f 72 20 73 71 6c 69  * order for sqli
263b0 74 65 33 5f 6f 70 65 6e 31 36 28 29 2e 20 5e 28  te3_open16(). ^(
263c0 41 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  A [database conn
263d0 65 63 74 69 6f 6e 5d 20 68 61 6e 64 6c 65 20 69  ection] handle i
263e0 73 20 75 73 75 61 6c 6c 79 0a 2a 2a 20 72 65 74  s usually.** ret
263f0 75 72 6e 65 64 20 69 6e 20 2a 70 70 44 62 2c 20  urned in *ppDb, 
26400 65 76 65 6e 20 69 66 20 61 6e 20 65 72 72 6f 72  even if an error
26410 20 6f 63 63 75 72 73 2e 20 20 54 68 65 20 6f 6e   occurs.  The on
26420 6c 79 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20  ly exception is 
26430 74 68 61 74 0a 2a 2a 20 69 66 20 53 51 4c 69 74  that.** if SQLit
26440 65 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 61  e is unable to a
26450 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f 72 79 20 74  llocate memory t
26460 6f 20 68 6f 6c 64 20 74 68 65 20 5b 73 71 6c 69  o hold the [sqli
26470 74 65 33 5d 20 6f 62 6a 65 63 74 2c 0a 2a 2a 20  te3] object,.** 
26480 61 20 4e 55 4c 4c 20 77 69 6c 6c 20 62 65 20 77  a NULL will be w
26490 72 69 74 74 65 6e 20 69 6e 74 6f 20 2a 70 70 44  ritten into *ppD
264a0 62 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 70  b instead of a p
264b0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 5b 73  ointer to the [s
264c0 71 6c 69 74 65 33 5d 0a 2a 2a 20 6f 62 6a 65 63  qlite3].** objec
264d0 74 2e 29 5e 20 5e 28 49 66 20 74 68 65 20 64 61  t.)^ ^(If the da
264e0 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64  tabase is opened
264f0 20 28 61 6e 64 2f 6f 72 20 63 72 65 61 74 65 64   (and/or created
26500 29 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2c 20  ) successfully, 
26510 74 68 65 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  then.** [SQLITE_
26520 4f 4b 5d 20 69 73 20 72 65 74 75 72 6e 65 64 2e  OK] is returned.
26530 20 20 4f 74 68 65 72 77 69 73 65 20 61 6e 20 5b    Otherwise an [
26540 65 72 72 6f 72 20 63 6f 64 65 5d 20 69 73 20 72  error code] is r
26550 65 74 75 72 6e 65 64 2e 29 5e 20 5e 54 68 65 0a  eturned.)^ ^The.
26560 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d  ** [sqlite3_errm
26570 73 67 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65  sg()] or [sqlite
26580 33 5f 65 72 72 6d 73 67 31 36 28 29 5d 20 72 6f  3_errmsg16()] ro
26590 75 74 69 6e 65 73 20 63 61 6e 20 62 65 20 75 73  utines can be us
265a0 65 64 20 74 6f 20 6f 62 74 61 69 6e 0a 2a 2a 20  ed to obtain.** 
265b0 61 6e 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75  an English langu
265c0 61 67 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20  age description 
265d0 6f 66 20 74 68 65 20 65 72 72 6f 72 20 66 6f 6c  of the error fol
265e0 6c 6f 77 69 6e 67 20 61 20 66 61 69 6c 75 72 65  lowing a failure
265f0 20 6f 66 20 61 6e 79 0a 2a 2a 20 6f 66 20 74 68   of any.** of th
26600 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29  e sqlite3_open()
26610 20 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a   routines..**.**
26620 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 65 6e   ^The default en
26630 63 6f 64 69 6e 67 20 77 69 6c 6c 20 62 65 20 55  coding will be U
26640 54 46 2d 38 20 66 6f 72 20 64 61 74 61 62 61 73  TF-8 for databas
26650 65 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  es created using
26660 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  .** sqlite3_open
26670 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  () or sqlite3_op
26680 65 6e 5f 76 32 28 29 2e 20 20 5e 54 68 65 20 64  en_v2().  ^The d
26690 65 66 61 75 6c 74 20 65 6e 63 6f 64 69 6e 67 20  efault encoding 
266a0 66 6f 72 20 64 61 74 61 62 61 73 65 73 0a 2a 2a  for databases.**
266b0 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 73   created using s
266c0 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 20  qlite3_open16() 
266d0 77 69 6c 6c 20 62 65 20 55 54 46 2d 31 36 20 69  will be UTF-16 i
266e0 6e 20 74 68 65 20 6e 61 74 69 76 65 20 62 79 74  n the native byt
266f0 65 20 6f 72 64 65 72 2e 0a 2a 2a 0a 2a 2a 20 57  e order..**.** W
26700 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e  hether or not an
26710 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 77 68   error occurs wh
26720 65 6e 20 69 74 20 69 73 20 6f 70 65 6e 65 64 2c  en it is opened,
26730 20 72 65 73 6f 75 72 63 65 73 0a 2a 2a 20 61 73   resources.** as
26740 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
26750 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
26760 65 63 74 69 6f 6e 5d 20 68 61 6e 64 6c 65 20 73  ection] handle s
26770 68 6f 75 6c 64 20 62 65 20 72 65 6c 65 61 73 65  hould be release
26780 64 20 62 79 0a 2a 2a 20 70 61 73 73 69 6e 67 20  d by.** passing 
26790 69 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  it to [sqlite3_c
267a0 6c 6f 73 65 28 29 5d 20 77 68 65 6e 20 69 74 20  lose()] when it 
267b0 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 71  is no longer req
267c0 75 69 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  uired..**.** The
267d0 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
267e0 28 29 20 69 6e 74 65 72 66 61 63 65 20 77 6f 72  () interface wor
267f0 6b 73 20 6c 69 6b 65 20 73 71 6c 69 74 65 33 5f  ks like sqlite3_
26800 6f 70 65 6e 28 29 0a 2a 2a 20 65 78 63 65 70 74  open().** except
26810 20 74 68 61 74 20 69 74 20 61 63 63 65 70 74 73   that it accepts
26820 20 74 77 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20   two additional 
26830 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72 20 61  parameters for a
26840 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 72 6f  dditional contro
26850 6c 0a 2a 2a 20 6f 76 65 72 20 74 68 65 20 6e 65  l.** over the ne
26860 77 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  w database conne
26870 63 74 69 6f 6e 2e 20 20 5e 28 54 68 65 20 66 6c  ction.  ^(The fl
26880 61 67 73 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ags parameter to
26890 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  .** sqlite3_open
268a0 5f 76 32 28 29 20 63 61 6e 20 74 61 6b 65 20 6f  _v2() can take o
268b0 6e 65 20 6f 66 0a 2a 2a 20 74 68 65 20 66 6f 6c  ne of.** the fol
268c0 6c 6f 77 69 6e 67 20 74 68 72 65 65 20 76 61 6c  lowing three val
268d0 75 65 73 2c 20 6f 70 74 69 6f 6e 61 6c 6c 79 20  ues, optionally 
268e0 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 74 68  combined with th
268f0 65 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50  e .** [SQLITE_OP
26900 45 4e 5f 4e 4f 4d 55 54 45 58 5d 2c 20 5b 53 51  EN_NOMUTEX], [SQ
26910 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55  LITE_OPEN_FULLMU
26920 54 45 58 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f 50  TEX], [SQLITE_OP
26930 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 5d 2c  EN_SHAREDCACHE],
26940 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  .** [SQLITE_OPEN
26950 5f 50 52 49 56 41 54 45 43 41 43 48 45 5d 2c 20  _PRIVATECACHE], 
26960 61 6e 64 2f 6f 72 20 5b 53 51 4c 49 54 45 5f 4f  and/or [SQLITE_O
26970 50 45 4e 5f 55 52 49 5d 20 66 6c 61 67 73 3a 29  PEN_URI] flags:)
26980 5e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20  ^.**.** <dl>.** 
26990 5e 28 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50  ^(<dt>[SQLITE_OP
269a0 45 4e 5f 52 45 41 44 4f 4e 4c 59 5d 3c 2f 64 74  EN_READONLY]</dt
269b0 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 64 61 74  >.** <dd>The dat
269c0 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20  abase is opened 
269d0 69 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64  in read-only mod
269e0 65 2e 20 20 49 66 20 74 68 65 20 64 61 74 61 62  e.  If the datab
269f0 61 73 65 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20  ase does not.** 
26a00 61 6c 72 65 61 64 79 20 65 78 69 73 74 2c 20 61  already exist, a
26a10 6e 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72  n error is retur
26a20 6e 65 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a  ned.</dd>)^.**.*
26a30 2a 20 5e 28 3c 64 74 3e 5b 53 51 4c 49 54 45 5f  * ^(<dt>[SQLITE_
26a40 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45 5d 3c  OPEN_READWRITE]<
26a50 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20  /dt>.** <dd>The 
26a60 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e  database is open
26a70 65 64 20 66 6f 72 20 72 65 61 64 69 6e 67 20 61  ed for reading a
26a80 6e 64 20 77 72 69 74 69 6e 67 20 69 66 20 70 6f  nd writing if po
26a90 73 73 69 62 6c 65 2c 20 6f 72 20 72 65 61 64 69  ssible, or readi
26aa0 6e 67 0a 2a 2a 20 6f 6e 6c 79 20 69 66 20 74 68  ng.** only if th
26ab0 65 20 66 69 6c 65 20 69 73 20 77 72 69 74 65 20  e file is write 
26ac0 70 72 6f 74 65 63 74 65 64 20 62 79 20 74 68 65  protected by the
26ad0 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
26ae0 6d 2e 20 20 49 6e 20 65 69 74 68 65 72 0a 2a 2a  m.  In either.**
26af0 20 63 61 73 65 20 74 68 65 20 64 61 74 61 62 61   case the databa
26b00 73 65 20 6d 75 73 74 20 61 6c 72 65 61 64 79 20  se must already 
26b10 65 78 69 73 74 2c 20 6f 74 68 65 72 77 69 73 65  exist, otherwise
26b20 20 61 6e 20 65 72 72 6f 72 20 69 73 20 72 65 74   an error is ret
26b30 75 72 6e 65 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a  urned.</dd>)^.**
26b40 0a 2a 2a 20 5e 28 3c 64 74 3e 5b 53 51 4c 49 54  .** ^(<dt>[SQLIT
26b50 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45  E_OPEN_READWRITE
26b60 5d 20 7c 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  ] | [SQLITE_OPEN
26b70 5f 43 52 45 41 54 45 5d 3c 2f 64 74 3e 0a 2a 2a  _CREATE]</dt>.**
26b80 20 3c 64 64 3e 54 68 65 20 64 61 74 61 62 61 73   <dd>The databas
26b90 65 20 69 73 20 6f 70 65 6e 65 64 20 66 6f 72 20  e is opened for 
26ba0 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74  reading and writ
26bb0 69 6e 67 2c 20 61 6e 64 20 69 73 20 63 72 65 61  ing, and is crea
26bc0 74 65 64 20 69 66 0a 2a 2a 20 69 74 20 64 6f 65  ted if.** it doe
26bd0 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 65 78  s not already ex
26be0 69 73 74 2e 20 54 68 69 73 20 69 73 20 74 68 65  ist. This is the
26bf0 20 62 65 68 61 76 69 6f 72 20 74 68 61 74 20 69   behavior that i
26c00 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 66 6f  s always used fo
26c10 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65  r.** sqlite3_ope
26c20 6e 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  n() and sqlite3_
26c30 6f 70 65 6e 31 36 28 29 2e 3c 2f 64 64 3e 29 5e  open16().</dd>)^
26c40 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2a 0a 2a 2a 20  .** </dl>.**.** 
26c50 49 66 20 74 68 65 20 33 72 64 20 70 61 72 61 6d  If the 3rd param
26c60 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
26c70 6f 70 65 6e 5f 76 32 28 29 20 69 73 20 6e 6f 74  open_v2() is not
26c80 20 6f 6e 65 20 6f 66 20 74 68 65 0a 2a 2a 20 63   one of the.** c
26c90 6f 6d 62 69 6e 61 74 69 6f 6e 73 20 73 68 6f 77  ombinations show
26ca0 6e 20 61 62 6f 76 65 20 6f 70 74 69 6f 6e 61 6c  n above optional
26cb0 6c 79 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68  ly combined with
26cc0 20 6f 74 68 65 72 0a 2a 2a 20 5b 53 51 4c 49 54   other.** [SQLIT
26cd0 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 20  E_OPEN_READONLY 
26ce0 7c 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 2a 20  | SQLITE_OPEN_* 
26cf0 62 69 74 73 5d 0a 2a 2a 20 74 68 65 6e 20 74 68  bits].** then th
26d00 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e  e behavior is un
26d10 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  defined..**.** ^
26d20 49 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f  If the [SQLITE_O
26d30 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d 20 66 6c 61  PEN_NOMUTEX] fla
26d40 67 20 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74  g is set, then t
26d50 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
26d60 65 63 74 69 6f 6e 0a 2a 2a 20 6f 70 65 6e 73 20  ection.** opens 
26d70 69 6e 20 74 68 65 20 6d 75 6c 74 69 2d 74 68 72  in the multi-thr
26d80 65 61 64 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  ead [threading m
26d90 6f 64 65 5d 20 61 73 20 6c 6f 6e 67 20 61 73 20  ode] as long as 
26da0 74 68 65 20 73 69 6e 67 6c 65 2d 74 68 72 65 61  the single-threa
26db0 64 0a 2a 2a 20 6d 6f 64 65 20 68 61 73 20 6e 6f  d.** mode has no
26dc0 74 20 62 65 65 6e 20 73 65 74 20 61 74 20 63 6f  t been set at co
26dd0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20 73 74  mpile-time or st
26de0 61 72 74 2d 74 69 6d 65 2e 20 20 5e 49 66 20 74  art-time.  ^If t
26df0 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50  he.** [SQLITE_OP
26e00 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 20 66 6c  EN_FULLMUTEX] fl
26e10 61 67 20 69 73 20 73 65 74 20 74 68 65 6e 20 74  ag is set then t
26e20 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
26e30 65 63 74 69 6f 6e 20 6f 70 65 6e 73 0a 2a 2a 20  ection opens.** 
26e40 69 6e 20 74 68 65 20 73 65 72 69 61 6c 69 7a 65  in the serialize
26e50 64 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  d [threading mod
26e60 65 5d 20 75 6e 6c 65 73 73 20 73 69 6e 67 6c 65  e] unless single
26e70 2d 74 68 72 65 61 64 20 77 61 73 0a 2a 2a 20 70  -thread was.** p
26e80 72 65 76 69 6f 75 73 6c 79 20 73 65 6c 65 63 74  reviously select
26e90 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  ed at compile-ti
26ea0 6d 65 20 6f 72 20 73 74 61 72 74 2d 74 69 6d 65  me or start-time
26eb0 2e 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54  ..** ^The [SQLIT
26ec0 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43  E_OPEN_SHAREDCAC
26ed0 48 45 5d 20 66 6c 61 67 20 63 61 75 73 65 73 20  HE] flag causes 
26ee0 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
26ef0 6e 65 63 74 69 6f 6e 20 74 6f 20 62 65 0a 2a 2a  nection to be.**
26f00 20 65 6c 69 67 69 62 6c 65 20 74 6f 20 75 73 65   eligible to use
26f10 20 5b 73 68 61 72 65 64 20 63 61 63 68 65 20 6d   [shared cache m
26f20 6f 64 65 5d 2c 20 72 65 67 61 72 64 6c 65 73 73  ode], regardless
26f30 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
26f40 6f 74 20 73 68 61 72 65 64 0a 2a 2a 20 63 61 63  ot shared.** cac
26f50 68 65 20 69 73 20 65 6e 61 62 6c 65 64 20 75 73  he is enabled us
26f60 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61  ing [sqlite3_ena
26f70 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65  ble_shared_cache
26f80 28 29 5d 2e 20 20 5e 54 68 65 0a 2a 2a 20 5b 53  ()].  ^The.** [S
26f90 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41  QLITE_OPEN_PRIVA
26fa0 54 45 43 41 43 48 45 5d 20 66 6c 61 67 20 63 61  TECACHE] flag ca
26fb0 75 73 65 73 20 74 68 65 20 64 61 74 61 62 61 73  uses the databas
26fc0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  e connection to 
26fd0 6e 6f 74 0a 2a 2a 20 70 61 72 74 69 63 69 70 61  not.** participa
26fe0 74 65 20 69 6e 20 5b 73 68 61 72 65 64 20 63 61  te in [shared ca
26ff0 63 68 65 20 6d 6f 64 65 5d 20 65 76 65 6e 20 69  che mode] even i
27000 66 20 69 74 20 69 73 20 65 6e 61 62 6c 65 64 2e  f it is enabled.
27010 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 6f 75 72  .**.** ^The four
27020 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
27030 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
27040 29 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  ) is the name of
27050 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   the.** [sqlite3
27060 5f 76 66 73 5d 20 6f 62 6a 65 63 74 20 74 68 61  _vfs] object tha
27070 74 20 64 65 66 69 6e 65 73 20 74 68 65 20 6f 70  t defines the op
27080 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69  erating system i
27090 6e 74 65 72 66 61 63 65 20 74 68 61 74 0a 2a 2a  nterface that.**
270a0 20 74 68 65 20 6e 65 77 20 64 61 74 61 62 61 73   the new databas
270b0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 68 6f  e connection sho
270c0 75 6c 64 20 75 73 65 2e 20 20 5e 49 66 20 74 68  uld use.  ^If th
270d0 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
270e0 65 72 20 69 73 0a 2a 2a 20 61 20 4e 55 4c 4c 20  er is.** a NULL 
270f0 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 74 68 65  pointer then the
27100 20 64 65 66 61 75 6c 74 20 5b 73 71 6c 69 74 65   default [sqlite
27110 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74 20 69 73  3_vfs] object is
27120 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66   used..**.** ^If
27130 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73   the filename is
27140 20 22 3a 6d 65 6d 6f 72 79 3a 22 2c 20 74 68 65   ":memory:", the
27150 6e 20 61 20 70 72 69 76 61 74 65 2c 20 74 65 6d  n a private, tem
27160 70 6f 72 61 72 79 20 69 6e 2d 6d 65 6d 6f 72 79  porary in-memory
27170 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 69 73 20   database.** is 
27180 63 72 65 61 74 65 64 20 66 6f 72 20 74 68 65 20  created for the 
27190 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 5e 54 68  connection.  ^Th
271a0 69 73 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  is in-memory dat
271b0 61 62 61 73 65 20 77 69 6c 6c 20 76 61 6e 69 73  abase will vanis
271c0 68 20 77 68 65 6e 0a 2a 2a 20 74 68 65 20 64 61  h when.** the da
271d0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
271e0 6e 20 69 73 20 63 6c 6f 73 65 64 2e 20 20 46 75  n is closed.  Fu
271f0 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
27200 20 53 51 4c 69 74 65 20 6d 69 67 68 74 0a 2a 2a   SQLite might.**
27210 20 6d 61 6b 65 20 75 73 65 20 6f 66 20 61 64 64   make use of add
27220 69 74 69 6f 6e 61 6c 20 73 70 65 63 69 61 6c 20  itional special 
27230 66 69 6c 65 6e 61 6d 65 73 20 74 68 61 74 20 62  filenames that b
27240 65 67 69 6e 20 77 69 74 68 20 74 68 65 20 22 3a  egin with the ":
27250 22 20 63 68 61 72 61 63 74 65 72 2e 0a 2a 2a 20  " character..** 
27260 49 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65  It is recommende
27270 64 20 74 68 61 74 20 77 68 65 6e 20 61 20 64 61  d that when a da
27280 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20  tabase filename 
27290 61 63 74 75 61 6c 6c 79 20 64 6f 65 73 20 62 65  actually does be
272a0 67 69 6e 20 77 69 74 68 0a 2a 2a 20 61 20 22 3a  gin with.** a ":
272b0 22 20 63 68 61 72 61 63 74 65 72 20 79 6f 75 20  " character you 
272c0 73 68 6f 75 6c 64 20 70 72 65 66 69 78 20 74 68  should prefix th
272d0 65 20 66 69 6c 65 6e 61 6d 65 20 77 69 74 68 20  e filename with 
272e0 61 20 70 61 74 68 6e 61 6d 65 20 73 75 63 68 20  a pathname such 
272f0 61 73 0a 2a 2a 20 22 2e 2f 22 20 74 6f 20 61 76  as.** "./" to av
27300 6f 69 64 20 61 6d 62 69 67 75 69 74 79 2e 0a 2a  oid ambiguity..*
27310 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 69 6c  *.** ^If the fil
27320 65 6e 61 6d 65 20 69 73 20 61 6e 20 65 6d 70 74  ename is an empt
27330 79 20 73 74 72 69 6e 67 2c 20 74 68 65 6e 20 61  y string, then a
27340 20 70 72 69 76 61 74 65 2c 20 74 65 6d 70 6f 72   private, tempor
27350 61 72 79 0a 2a 2a 20 6f 6e 2d 64 69 73 6b 20 64  ary.** on-disk d
27360 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65 20  atabase will be 
27370 63 72 65 61 74 65 64 2e 20 20 5e 54 68 69 73 20  created.  ^This 
27380 70 72 69 76 61 74 65 20 64 61 74 61 62 61 73 65  private database
27390 20 77 69 6c 6c 20 62 65 0a 2a 2a 20 61 75 74 6f   will be.** auto
273a0 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65  matically delete
273b0 64 20 61 73 20 73 6f 6f 6e 20 61 73 20 74 68 65  d as soon as the
273c0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
273d0 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64 2e 0a  tion is closed..
273e0 2a 2a 0a 2a 2a 20 5b 5b 55 52 49 20 66 69 6c 65  **.** [[URI file
273f0 6e 61 6d 65 73 20 69 6e 20 73 71 6c 69 74 65 33  names in sqlite3
27400 5f 6f 70 65 6e 28 29 5d 5d 20 3c 68 33 3e 55 52  _open()]] <h3>UR
27410 49 20 46 69 6c 65 6e 61 6d 65 73 3c 2f 68 33 3e  I Filenames</h3>
27420 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 5b 55 52 49 20  .**.** ^If [URI 
27430 66 69 6c 65 6e 61 6d 65 5d 20 69 6e 74 65 72 70  filename] interp
27440 72 65 74 61 74 69 6f 6e 20 69 73 20 65 6e 61 62  retation is enab
27450 6c 65 64 2c 20 61 6e 64 20 74 68 65 20 66 69 6c  led, and the fil
27460 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 0a 2a  ename argument.*
27470 2a 20 62 65 67 69 6e 73 20 77 69 74 68 20 22 66  * begins with "f
27480 69 6c 65 3a 22 2c 20 74 68 65 6e 20 74 68 65 20  ile:", then the 
27490 66 69 6c 65 6e 61 6d 65 20 69 73 20 69 6e 74 65  filename is inte
274a0 72 70 72 65 74 65 64 20 61 73 20 61 20 55 52 49  rpreted as a URI
274b0 2e 20 5e 55 52 49 0a 2a 2a 20 66 69 6c 65 6e 61  . ^URI.** filena
274c0 6d 65 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f  me interpretatio
274d0 6e 20 69 73 20 65 6e 61 62 6c 65 64 20 69 66 20  n is enabled if 
274e0 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  the [SQLITE_OPEN
274f0 5f 55 52 49 5d 20 66 6c 61 67 20 69 73 0a 2a 2a  _URI] flag is.**
27500 20 73 65 74 20 69 6e 20 74 68 65 20 74 68 69 72   set in the thir
27510 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71  d argument to sq
27520 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2c  lite3_open_v2(),
27530 20 6f 72 20 69 66 20 69 74 20 68 61 73 0a 2a 2a   or if it has.**
27540 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20 67 6c   been enabled gl
27550 6f 62 61 6c 6c 79 20 75 73 69 6e 67 20 74 68 65  obally using the
27560 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
27570 55 52 49 5d 20 6f 70 74 69 6f 6e 20 77 69 74 68  URI] option with
27580 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   the.** [sqlite3
27590 5f 63 6f 6e 66 69 67 28 29 5d 20 6d 65 74 68 6f  _config()] metho
275a0 64 20 6f 72 20 62 79 20 74 68 65 20 5b 53 51 4c  d or by the [SQL
275b0 49 54 45 5f 55 53 45 5f 55 52 49 5d 20 63 6f 6d  ITE_USE_URI] com
275c0 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
275d0 2e 0a 2a 2a 20 55 52 49 20 66 69 6c 65 6e 61 6d  ..** URI filenam
275e0 65 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e  e interpretation
275f0 20 69 73 20 74 75 72 6e 65 64 20 6f 66 66 0a 2a   is turned off.*
27600 2a 20 62 79 20 64 65 66 61 75 6c 74 2c 20 62 75  * by default, bu
27610 74 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  t future release
27620 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
27630 74 20 65 6e 61 62 6c 65 20 55 52 49 20 66 69 6c  t enable URI fil
27640 65 6e 61 6d 65 0a 2a 2a 20 69 6e 74 65 72 70 72  ename.** interpr
27650 65 74 61 74 69 6f 6e 20 62 79 20 64 65 66 61 75  etation by defau
27660 6c 74 2e 20 20 53 65 65 20 22 5b 55 52 49 20 66  lt.  See "[URI f
27670 69 6c 65 6e 61 6d 65 73 5d 22 20 66 6f 72 20 61  ilenames]" for a
27680 64 64 69 74 69 6f 6e 61 6c 0a 2a 2a 20 69 6e 66  dditional.** inf
27690 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  ormation..**.** 
276a0 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 20 61 72  URI filenames ar
276b0 65 20 70 61 72 73 65 64 20 61 63 63 6f 72 64 69  e parsed accordi
276c0 6e 67 20 74 6f 20 52 46 43 20 33 39 38 36 2e 20  ng to RFC 3986. 
276d0 5e 49 66 20 74 68 65 20 55 52 49 20 63 6f 6e 74  ^If the URI cont
276e0 61 69 6e 73 20 61 6e 0a 2a 2a 20 61 75 74 68 6f  ains an.** autho
276f0 72 69 74 79 2c 20 74 68 65 6e 20 69 74 20 6d 75  rity, then it mu
27700 73 74 20 62 65 20 65 69 74 68 65 72 20 61 6e 20  st be either an 
27710 65 6d 70 74 79 20 73 74 72 69 6e 67 20 6f 72 20  empty string or 
27720 74 68 65 20 73 74 72 69 6e 67 20 0a 2a 2a 20 22  the string .** "
27730 6c 6f 63 61 6c 68 6f 73 74 22 2e 20 5e 49 66 20  localhost". ^If 
27740 74 68 65 20 61 75 74 68 6f 72 69 74 79 20 69 73  the authority is
27750 20 6e 6f 74 20 61 6e 20 65 6d 70 74 79 20 73 74   not an empty st
27760 72 69 6e 67 20 6f 72 20 22 6c 6f 63 61 6c 68 6f  ring or "localho
27770 73 74 22 2c 20 61 6e 20 0a 2a 2a 20 65 72 72 6f  st", an .** erro
27780 72 20 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f  r is returned to
27790 20 74 68 65 20 63 61 6c 6c 65 72 2e 20 5e 54 68   the caller. ^Th
277a0 65 20 66 72 61 67 6d 65 6e 74 20 63 6f 6d 70 6f  e fragment compo
277b0 6e 65 6e 74 20 6f 66 20 61 20 55 52 49 2c 20 69  nent of a URI, i
277c0 66 20 0a 2a 2a 20 70 72 65 73 65 6e 74 2c 20 69  f .** present, i
277d0 73 20 69 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a  s ignored..**.**
277e0 20 5e 53 51 4c 69 74 65 20 75 73 65 73 20 74 68   ^SQLite uses th
277f0 65 20 70 61 74 68 20 63 6f 6d 70 6f 6e 65 6e 74  e path component
27800 20 6f 66 20 74 68 65 20 55 52 49 20 61 73 20 74   of the URI as t
27810 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64  he name of the d
27820 69 73 6b 20 66 69 6c 65 0a 2a 2a 20 77 68 69 63  isk file.** whic
27830 68 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 64  h contains the d
27840 61 74 61 62 61 73 65 2e 20 5e 49 66 20 74 68 65  atabase. ^If the
27850 20 70 61 74 68 20 62 65 67 69 6e 73 20 77 69 74   path begins wit
27860 68 20 61 20 27 2f 27 20 63 68 61 72 61 63 74 65  h a '/' characte
27870 72 2c 20 0a 2a 2a 20 74 68 65 6e 20 69 74 20 69  r, .** then it i
27880 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73  s interpreted as
27890 20 61 6e 20 61 62 73 6f 6c 75 74 65 20 70 61 74   an absolute pat
278a0 68 2e 20 5e 49 66 20 74 68 65 20 70 61 74 68 20  h. ^If the path 
278b0 64 6f 65 73 20 6e 6f 74 20 62 65 67 69 6e 20 0a  does not begin .
278c0 2a 2a 20 77 69 74 68 20 61 20 27 2f 27 20 28 6d  ** with a '/' (m
278d0 65 61 6e 69 6e 67 20 74 68 61 74 20 74 68 65 20  eaning that the 
278e0 61 75 74 68 6f 72 69 74 79 20 73 65 63 74 69 6f  authority sectio
278f0 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f  n is omitted fro
27900 6d 20 74 68 65 20 55 52 49 29 0a 2a 2a 20 74 68  m the URI).** th
27910 65 6e 20 74 68 65 20 70 61 74 68 20 69 73 20 69  en the path is i
27920 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20  nterpreted as a 
27930 72 65 6c 61 74 69 76 65 20 70 61 74 68 2e 20 0a  relative path. .
27940 2a 2a 20 5e 28 4f 6e 20 77 69 6e 64 6f 77 73 2c  ** ^(On windows,
27950 20 74 68 65 20 66 69 72 73 74 20 63 6f 6d 70 6f   the first compo
27960 6e 65 6e 74 20 6f 66 20 61 6e 20 61 62 73 6f 6c  nent of an absol
27970 75 74 65 20 70 61 74 68 20 0a 2a 2a 20 69 73 20  ute path .** is 
27980 61 20 64 72 69 76 65 20 73 70 65 63 69 66 69 63  a drive specific
27990 61 74 69 6f 6e 20 28 65 2e 67 2e 20 22 43 3a 22  ation (e.g. "C:"
279a0 29 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 63 6f 72  ).)^.**.** [[cor
279b0 65 20 55 52 49 20 71 75 65 72 79 20 70 61 72 61  e URI query para
279c0 6d 65 74 65 72 73 5d 5d 0a 2a 2a 20 54 68 65 20  meters]].** The 
279d0 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 20  query component 
279e0 6f 66 20 61 20 55 52 49 20 6d 61 79 20 63 6f 6e  of a URI may con
279f0 74 61 69 6e 20 70 61 72 61 6d 65 74 65 72 73 20  tain parameters 
27a00 74 68 61 74 20 61 72 65 20 69 6e 74 65 72 70 72  that are interpr
27a10 65 74 65 64 0a 2a 2a 20 65 69 74 68 65 72 20 62  eted.** either b
27a20 79 20 53 51 4c 69 74 65 20 69 74 73 65 6c 66 2c  y SQLite itself,
27a30 20 6f 72 20 62 79 20 61 20 5b 56 46 53 20 7c 20   or by a [VFS | 
27a40 63 75 73 74 6f 6d 20 56 46 53 20 69 6d 70 6c 65  custom VFS imple
27a50 6d 65 6e 74 61 74 69 6f 6e 5d 2e 0a 2a 2a 20 53  mentation]..** S
27a60 51 4c 69 74 65 20 61 6e 64 20 69 74 73 20 62 75  QLite and its bu
27a70 69 6c 74 2d 69 6e 20 5b 56 46 53 65 73 5d 20 69  ilt-in [VFSes] i
27a80 6e 74 65 72 70 72 65 74 20 74 68 65 0a 2a 2a 20  nterpret the.** 
27a90 66 6f 6c 6c 6f 77 69 6e 67 20 71 75 65 72 79 20  following query 
27aa0 70 61 72 61 6d 65 74 65 72 73 3a 0a 2a 2a 0a 2a  parameters:.**.*
27ab0 2a 20 3c 75 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e  * <ul>.**   <li>
27ac0 20 3c 62 3e 76 66 73 3c 2f 62 3e 3a 20 5e 54 68   <b>vfs</b>: ^Th
27ad0 65 20 22 76 66 73 22 20 70 61 72 61 6d 65 74 65  e "vfs" paramete
27ae0 72 20 6d 61 79 20 62 65 20 75 73 65 64 20 74 6f  r may be used to
27af0 20 73 70 65 63 69 66 79 20 74 68 65 20 6e 61 6d   specify the nam
27b00 65 20 6f 66 0a 2a 2a 20 20 20 20 20 61 20 56 46  e of.**     a VF
27b10 53 20 6f 62 6a 65 63 74 20 74 68 61 74 20 70 72  S object that pr
27b20 6f 76 69 64 65 73 20 74 68 65 20 6f 70 65 72 61  ovides the opera
27b30 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65  ting system inte
27b40 72 66 61 63 65 20 74 68 61 74 20 73 68 6f 75 6c  rface that shoul
27b50 64 0a 2a 2a 20 20 20 20 20 62 65 20 75 73 65 64  d.**     be used
27b60 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 64   to access the d
27b70 61 74 61 62 61 73 65 20 66 69 6c 65 20 6f 6e 20  atabase file on 
27b80 64 69 73 6b 2e 20 5e 49 66 20 74 68 69 73 20 6f  disk. ^If this o
27b90 70 74 69 6f 6e 20 69 73 20 73 65 74 20 74 6f 0a  ption is set to.
27ba0 2a 2a 20 20 20 20 20 61 6e 20 65 6d 70 74 79 20  **     an empty 
27bb0 73 74 72 69 6e 67 20 74 68 65 20 64 65 66 61 75  string the defau
27bc0 6c 74 20 56 46 53 20 6f 62 6a 65 63 74 20 69 73  lt VFS object is
27bd0 20 75 73 65 64 2e 20 5e 53 70 65 63 69 66 79 69   used. ^Specifyi
27be0 6e 67 20 61 6e 20 75 6e 6b 6e 6f 77 6e 0a 2a 2a  ng an unknown.**
27bf0 20 20 20 20 20 56 46 53 20 69 73 20 61 6e 20 65       VFS is an e
27c00 72 72 6f 72 2e 20 5e 49 66 20 73 71 6c 69 74 65  rror. ^If sqlite
27c10 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69 73 20 75  3_open_v2() is u
27c20 73 65 64 20 61 6e 64 20 74 68 65 20 76 66 73 20  sed and the vfs 
27c30 6f 70 74 69 6f 6e 20 69 73 0a 2a 2a 20 20 20 20  option is.**    
27c40 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74   present, then t
27c50 68 65 20 56 46 53 20 73 70 65 63 69 66 69 65 64  he VFS specified
27c60 20 62 79 20 74 68 65 20 6f 70 74 69 6f 6e 20 74   by the option t
27c70 61 6b 65 73 20 70 72 65 63 65 64 65 6e 63 65 20  akes precedence 
27c80 6f 76 65 72 0a 2a 2a 20 20 20 20 20 74 68 65 20  over.**     the 
27c90 76 61 6c 75 65 20 70 61 73 73 65 64 20 61 73 20  value passed as 
27ca0 74 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d  the fourth param
27cb0 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
27cc0 6f 70 65 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a  open_v2()..**.**
27cd0 20 20 20 3c 6c 69 3e 20 3c 62 3e 6d 6f 64 65 3c     <li> <b>mode<
27ce0 2f 62 3e 3a 20 5e 28 54 68 65 20 6d 6f 64 65 20  /b>: ^(The mode 
27cf0 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65  parameter may be
27d00 20 73 65 74 20 74 6f 20 65 69 74 68 65 72 20 22   set to either "
27d10 72 6f 22 2c 20 22 72 77 22 2c 0a 2a 2a 20 20 20  ro", "rw",.**   
27d20 20 20 22 72 77 63 22 2c 20 6f 72 20 22 6d 65 6d    "rwc", or "mem
27d30 6f 72 79 22 2e 20 41 74 74 65 6d 70 74 69 6e 67  ory". Attempting
27d40 20 74 6f 20 73 65 74 20 69 74 20 74 6f 20 61 6e   to set it to an
27d50 79 20 6f 74 68 65 72 20 76 61 6c 75 65 20 69 73  y other value is
27d60 0a 2a 2a 20 20 20 20 20 61 6e 20 65 72 72 6f 72  .**     an error
27d70 29 5e 2e 20 0a 2a 2a 20 20 20 20 20 5e 49 66 20  )^. .**     ^If 
27d80 22 72 6f 22 20 69 73 20 73 70 65 63 69 66 69 65  "ro" is specifie
27d90 64 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74 61  d, then the data
27da0 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 66  base is opened f
27db0 6f 72 20 72 65 61 64 2d 6f 6e 6c 79 20 0a 2a 2a  or read-only .**
27dc0 20 20 20 20 20 61 63 63 65 73 73 2c 20 6a 75 73       access, jus
27dd0 74 20 61 73 20 69 66 20 74 68 65 20 5b 53 51 4c  t as if the [SQL
27de0 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c  ITE_OPEN_READONL
27df0 59 5d 20 66 6c 61 67 20 68 61 64 20 62 65 65 6e  Y] flag had been
27e00 20 73 65 74 20 69 6e 20 74 68 65 20 0a 2a 2a 20   set in the .** 
27e10 20 20 20 20 74 68 69 72 64 20 61 72 67 75 6d 65      third argume
27e20 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70  nt to sqlite3_op
27e30 65 6e 5f 76 32 28 29 2e 20 5e 49 66 20 74 68 65  en_v2(). ^If the
27e40 20 6d 6f 64 65 20 6f 70 74 69 6f 6e 20 69 73 20   mode option is 
27e50 73 65 74 20 74 6f 20 0a 2a 2a 20 20 20 20 20 22  set to .**     "
27e60 72 77 22 2c 20 74 68 65 6e 20 74 68 65 20 64 61  rw", then the da
27e70 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64  tabase is opened
27e80 20 66 6f 72 20 72 65 61 64 2d 77 72 69 74 65 20   for read-write 
27e90 28 62 75 74 20 6e 6f 74 20 63 72 65 61 74 65 29  (but not create)
27ea0 20 0a 2a 2a 20 20 20 20 20 61 63 63 65 73 73 2c   .**     access,
27eb0 20 61 73 20 69 66 20 53 51 4c 49 54 45 5f 4f 50   as if SQLITE_OP
27ec0 45 4e 5f 52 45 41 44 57 52 49 54 45 20 28 62 75  EN_READWRITE (bu
27ed0 74 20 6e 6f 74 20 53 51 4c 49 54 45 5f 4f 50 45  t not SQLITE_OPE
27ee0 4e 5f 43 52 45 41 54 45 29 20 68 61 64 20 0a 2a  N_CREATE) had .*
27ef0 2a 20 20 20 20 20 62 65 65 6e 20 73 65 74 2e 20  *     been set. 
27f00 5e 56 61 6c 75 65 20 22 72 77 63 22 20 69 73 20  ^Value "rwc" is 
27f10 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 73 65  equivalent to se
27f20 74 74 69 6e 67 20 62 6f 74 68 20 0a 2a 2a 20 20  tting both .**  
27f30 20 20 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52     SQLITE_OPEN_R
27f40 45 41 44 57 52 49 54 45 20 61 6e 64 20 53 51 4c  EADWRITE and SQL
27f50 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 2e  ITE_OPEN_CREATE.
27f60 20 20 5e 49 66 20 74 68 65 20 6d 6f 64 65 20 6f    ^If the mode o
27f70 70 74 69 6f 6e 20 69 73 0a 2a 2a 20 20 20 20 20  ption is.**     
27f80 73 65 74 20 74 6f 20 22 6d 65 6d 6f 72 79 22 20  set to "memory" 
27f90 74 68 65 6e 20 61 20 70 75 72 65 20 5b 69 6e 2d  then a pure [in-
27fa0 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d  memory database]
27fb0 20 74 68 61 74 20 6e 65 76 65 72 20 72 65 61 64   that never read
27fc0 73 0a 2a 2a 20 20 20 20 20 6f 72 20 77 72 69 74  s.**     or writ
27fd0 65 73 20 66 72 6f 6d 20 64 69 73 6b 20 69 73 20  es from disk is 
27fe0 75 73 65 64 2e 20 5e 49 74 20 69 73 20 61 6e 20  used. ^It is an 
27ff0 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79  error to specify
28000 20 61 20 76 61 6c 75 65 20 66 6f 72 0a 2a 2a 20   a value for.** 
28010 20 20 20 20 74 68 65 20 6d 6f 64 65 20 70 61 72      the mode par
28020 61 6d 65 74 65 72 20 74 68 61 74 20 69 73 20 6c  ameter that is l
28030 65 73 73 20 72 65 73 74 72 69 63 74 69 76 65 20  ess restrictive 
28040 74 68 61 6e 20 74 68 61 74 20 73 70 65 63 69 66  than that specif
28050 69 65 64 20 62 79 0a 2a 2a 20 20 20 20 20 74 68  ied by.**     th
28060 65 20 66 6c 61 67 73 20 70 61 73 73 65 64 20 69  e flags passed i
28070 6e 20 74 68 65 20 74 68 69 72 64 20 70 61 72 61  n the third para
28080 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33  meter to sqlite3
28090 5f 6f 70 65 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a  _open_v2()..**.*
280a0 2a 20 20 20 3c 6c 69 3e 20 3c 62 3e 63 61 63 68  *   <li> <b>cach
280b0 65 3c 2f 62 3e 3a 20 5e 54 68 65 20 63 61 63 68  e</b>: ^The cach
280c0 65 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20  e parameter may 
280d0 62 65 20 73 65 74 20 74 6f 20 65 69 74 68 65 72  be set to either
280e0 20 22 73 68 61 72 65 64 22 20 6f 72 0a 2a 2a 20   "shared" or.** 
280f0 20 20 20 20 22 70 72 69 76 61 74 65 22 2e 20 5e      "private". ^
28100 53 65 74 74 69 6e 67 20 69 74 20 74 6f 20 22 73  Setting it to "s
28110 68 61 72 65 64 22 20 69 73 20 65 71 75 69 76 61  hared" is equiva
28120 6c 65 6e 74 20 74 6f 20 73 65 74 74 69 6e 67 20  lent to setting 
28130 74 68 65 0a 2a 2a 20 20 20 20 20 53 51 4c 49 54  the.**     SQLIT
28140 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43  E_OPEN_SHAREDCAC
28150 48 45 20 62 69 74 20 69 6e 20 74 68 65 20 66 6c  HE bit in the fl
28160 61 67 73 20 61 72 67 75 6d 65 6e 74 20 70 61 73  ags argument pas
28170 73 65 64 20 74 6f 0a 2a 2a 20 20 20 20 20 73 71  sed to.**     sq
28180 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e  lite3_open_v2().
28190 20 5e 53 65 74 74 69 6e 67 20 74 68 65 20 63 61   ^Setting the ca
281a0 63 68 65 20 70 61 72 61 6d 65 74 65 72 20 74 6f  che parameter to
281b0 20 22 70 72 69 76 61 74 65 22 20 69 73 20 0a 2a   "private" is .*
281c0 2a 20 20 20 20 20 65 71 75 69 76 61 6c 65 6e 74  *     equivalent
281d0 20 74 6f 20 73 65 74 74 69 6e 67 20 74 68 65 20   to setting the 
281e0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56  SQLITE_OPEN_PRIV
281f0 41 54 45 43 41 43 48 45 20 62 69 74 2e 0a 2a 2a  ATECACHE bit..**
28200 20 20 20 20 20 5e 49 66 20 73 71 6c 69 74 65 33       ^If sqlite3
28210 5f 6f 70 65 6e 5f 76 32 28 29 20 69 73 20 75 73  _open_v2() is us
28220 65 64 20 61 6e 64 20 74 68 65 20 22 63 61 63 68  ed and the "cach
28230 65 22 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  e" parameter is 
28240 70 72 65 73 65 6e 74 20 69 6e 0a 2a 2a 20 20 20  present in.**   
28250 20 20 61 20 55 52 49 20 66 69 6c 65 6e 61 6d 65    a URI filename
28260 2c 20 69 74 73 20 76 61 6c 75 65 20 6f 76 65 72  , its value over
28270 72 69 64 65 73 20 61 6e 79 20 62 65 68 61 76 69  rides any behavi
28280 6f 72 20 72 65 71 75 65 73 74 65 64 20 62 79 20  or requested by 
28290 73 65 74 74 69 6e 67 0a 2a 2a 20 20 20 20 20 53  setting.**     S
282a0 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41  QLITE_OPEN_PRIVA
282b0 54 45 43 41 43 48 45 20 6f 72 20 53 51 4c 49 54  TECACHE or SQLIT
282c0 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43  E_OPEN_SHAREDCAC
282d0 48 45 20 66 6c 61 67 2e 0a 2a 2a 0a 2a 2a 20 20  HE flag..**.**  
282e0 3c 6c 69 3e 20 3c 62 3e 70 73 6f 77 3c 2f 62 3e  <li> <b>psow</b>
282f0 3a 20 5e 54 68 65 20 70 73 6f 77 20 70 61 72 61  : ^The psow para
28300 6d 65 74 65 72 20 69 6e 64 69 63 61 74 65 73 20  meter indicates 
28310 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74  whether or not t
28320 68 65 0a 2a 2a 20 20 20 20 20 5b 70 6f 77 65 72  he.**     [power
28330 73 61 66 65 20 6f 76 65 72 77 72 69 74 65 5d 20  safe overwrite] 
28340 70 72 6f 70 65 72 74 79 20 64 6f 65 73 20 6f 72  property does or
28350 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 6c 79 20   does not apply 
28360 74 6f 20 74 68 65 0a 2a 2a 20 20 20 20 20 73 74  to the.**     st
28370 6f 72 61 67 65 20 6d 65 64 69 61 20 6f 6e 20 77  orage media on w
28380 68 69 63 68 20 74 68 65 20 64 61 74 61 62 61 73  hich the databas
28390 65 20 66 69 6c 65 20 72 65 73 69 64 65 73 2e 0a  e file resides..
283a0 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e 6e  **.**  <li> <b>n
283b0 6f 6c 6f 63 6b 3c 2f 62 3e 3a 20 5e 54 68 65 20  olock</b>: ^The 
283c0 6e 6f 6c 6f 63 6b 20 70 61 72 61 6d 65 74 65 72  nolock parameter
283d0 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 71 75   is a boolean qu
283e0 65 72 79 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a  ery parameter.**
283f0 20 20 20 20 20 77 68 69 63 68 20 69 66 20 73 65       which if se
28400 74 20 64 69 73 61 62 6c 65 73 20 66 69 6c 65 20  t disables file 
28410 6c 6f 63 6b 69 6e 67 20 69 6e 20 72 6f 6c 6c 62  locking in rollb
28420 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65  ack journal mode
28430 73 2e 20 20 54 68 69 73 0a 2a 2a 20 20 20 20 20  s.  This.**     
28440 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 61 63  is useful for ac
28450 63 65 73 73 69 6e 67 20 61 20 64 61 74 61 62 61  cessing a databa
28460 73 65 20 6f 6e 20 61 20 66 69 6c 65 73 79 73 74  se on a filesyst
28470 65 6d 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74  em that does not
28480 0a 2a 2a 20 20 20 20 20 73 75 70 70 6f 72 74 20  .**     support 
28490 6c 6f 63 6b 69 6e 67 2e 20 20 43 61 75 74 69 6f  locking.  Cautio
284a0 6e 3a 20 20 44 61 74 61 62 61 73 65 20 63 6f 72  n:  Database cor
284b0 72 75 70 74 69 6f 6e 20 6d 69 67 68 74 20 72 65  ruption might re
284c0 73 75 6c 74 20 69 66 20 74 77 6f 0a 2a 2a 20 20  sult if two.**  
284d0 20 20 20 6f 72 20 6d 6f 72 65 20 70 72 6f 63 65     or more proce
284e0 73 73 65 73 20 77 72 69 74 65 20 74 6f 20 74 68  sses write to th
284f0 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  e same database 
28500 61 6e 64 20 61 6e 79 20 6f 6e 65 20 6f 66 20 74  and any one of t
28510 68 6f 73 65 0a 2a 2a 20 20 20 20 20 70 72 6f 63  hose.**     proc
28520 65 73 73 65 73 20 75 73 65 73 20 6e 6f 6c 6f 63  esses uses noloc
28530 6b 3d 31 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e  k=1..**.**  <li>
28540 20 3c 62 3e 69 6d 6d 75 74 61 62 6c 65 3c 2f 62   <b>immutable</b
28550 3e 3a 20 5e 54 68 65 20 69 6d 6d 75 74 61 62 6c  >: ^The immutabl
28560 65 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  e parameter is a
28570 20 62 6f 6f 6c 65 61 6e 20 71 75 65 72 79 0a 2a   boolean query.*
28580 2a 20 20 20 20 20 70 61 72 61 6d 65 74 65 72 20  *     parameter 
28590 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74  that indicates t
285a0 68 61 74 20 74 68 65 20 64 61 74 61 62 61 73 65  hat the database
285b0 20 66 69 6c 65 20 69 73 20 73 74 6f 72 65 64 20   file is stored 
285c0 6f 6e 0a 2a 2a 20 20 20 20 20 72 65 61 64 2d 6f  on.**     read-o
285d0 6e 6c 79 20 6d 65 64 69 61 2e 20 20 5e 57 68 65  nly media.  ^Whe
285e0 6e 20 69 6d 6d 75 74 61 62 6c 65 20 69 73 20 73  n immutable is s
285f0 65 74 2c 20 53 51 4c 69 74 65 20 61 73 73 75 6d  et, SQLite assum
28600 65 73 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 20  es that the.**  
28610 20 20 20 64 61 74 61 62 61 73 65 20 66 69 6c 65     database file
28620 20 63 61 6e 6e 6f 74 20 62 65 20 63 68 61 6e 67   cannot be chang
28630 65 64 2c 20 65 76 65 6e 20 62 79 20 61 20 70 72  ed, even by a pr
28640 6f 63 65 73 73 20 77 69 74 68 20 68 69 67 68 65  ocess with highe
28650 72 0a 2a 2a 20 20 20 20 20 70 72 69 76 69 6c 65  r.**     privile
28660 67 65 2c 20 61 6e 64 20 73 6f 20 74 68 65 20 64  ge, and so the d
28670 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
28680 64 20 72 65 61 64 2d 6f 6e 6c 79 20 61 6e 64 20  d read-only and 
28690 61 6c 6c 20 6c 6f 63 6b 69 6e 67 0a 2a 2a 20 20  all locking.**  
286a0 20 20 20 61 6e 64 20 63 68 61 6e 67 65 20 64 65     and change de
286b0 74 65 63 74 69 6f 6e 20 69 73 20 64 69 73 61 62  tection is disab
286c0 6c 65 64 2e 20 20 43 61 75 74 69 6f 6e 3a 20 53  led.  Caution: S
286d0 65 74 74 69 6e 67 20 74 68 65 20 69 6d 6d 75 74  etting the immut
286e0 61 62 6c 65 0a 2a 2a 20 20 20 20 20 70 72 6f 70  able.**     prop
286f0 65 72 74 79 20 6f 6e 20 61 20 64 61 74 61 62 61  erty on a databa
28700 73 65 20 66 69 6c 65 20 74 68 61 74 20 64 6f 65  se file that doe
28710 73 20 69 6e 20 66 61 63 74 20 63 68 61 6e 67 65  s in fact change
28720 20 63 61 6e 20 72 65 73 75 6c 74 0a 2a 2a 20 20   can result.**  
28730 20 20 20 69 6e 20 69 6e 63 6f 72 72 65 63 74 20     in incorrect 
28740 71 75 65 72 79 20 72 65 73 75 6c 74 73 20 61 6e  query results an
28750 64 2f 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 52  d/or [SQLITE_COR
28760 52 55 50 54 5d 20 65 72 72 6f 72 73 2e 0a 2a 2a  RUPT] errors..**
28770 20 20 20 20 20 53 65 65 20 61 6c 73 6f 3a 20 5b       See also: [
28780 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d 4d  SQLITE_IOCAP_IMM
28790 55 54 41 42 4c 45 5d 2e 0a 2a 2a 20 20 20 20 20  UTABLE]..**     
287a0 20 20 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a    .** </ul>.**.*
287b0 2a 20 5e 53 70 65 63 69 66 79 69 6e 67 20 61 6e  * ^Specifying an
287c0 20 75 6e 6b 6e 6f 77 6e 20 70 61 72 61 6d 65 74   unknown paramet
287d0 65 72 20 69 6e 20 74 68 65 20 71 75 65 72 79 20  er in the query 
287e0 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 61 20 55  component of a U
287f0 52 49 20 69 73 20 6e 6f 74 20 61 6e 0a 2a 2a 20  RI is not an.** 
28800 65 72 72 6f 72 2e 20 20 46 75 74 75 72 65 20 76  error.  Future v
28810 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
28820 65 20 6d 69 67 68 74 20 75 6e 64 65 72 73 74 61  e might understa
28830 6e 64 20 61 64 64 69 74 69 6f 6e 61 6c 20 71 75  nd additional qu
28840 65 72 79 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  ery.** parameter
28850 73 2e 20 20 53 65 65 20 22 5b 71 75 65 72 79 20  s.  See "[query 
28860 70 61 72 61 6d 65 74 65 72 73 20 77 69 74 68 20  parameters with 
28870 73 70 65 63 69 61 6c 20 6d 65 61 6e 69 6e 67 20  special meaning 
28880 74 6f 20 53 51 4c 69 74 65 5d 22 20 66 6f 72 0a  to SQLite]" for.
28890 2a 2a 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  ** additional in
288a0 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a  formation..**.**
288b0 20 5b 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 20   [[URI filename 
288c0 65 78 61 6d 70 6c 65 73 5d 5d 20 3c 68 33 3e 55  examples]] <h3>U
288d0 52 49 20 66 69 6c 65 6e 61 6d 65 20 65 78 61 6d  RI filename exam
288e0 70 6c 65 73 3c 2f 68 33 3e 0a 2a 2a 0a 2a 2a 20  ples</h3>.**.** 
288f0 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 22 31  <table border="1
28900 22 20 61 6c 69 67 6e 3d 63 65 6e 74 65 72 20 63  " align=center c
28910 65 6c 6c 70 61 64 64 69 6e 67 3d 35 3e 0a 2a 2a  ellpadding=5>.**
28920 20 3c 74 72 3e 3c 74 68 3e 20 55 52 49 20 66 69   <tr><th> URI fi
28930 6c 65 6e 61 6d 65 73 20 3c 74 68 3e 20 52 65 73  lenames <th> Res
28940 75 6c 74 73 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e  ults.** <tr><td>
28950 20 66 69 6c 65 3a 64 61 74 61 2e 64 62 20 3c 74   file:data.db <t
28960 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  d> .**          
28970 4f 70 65 6e 20 74 68 65 20 66 69 6c 65 20 22 64  Open the file "d
28980 61 74 61 2e 64 62 22 20 69 6e 20 74 68 65 20 63  ata.db" in the c
28990 75 72 72 65 6e 74 20 64 69 72 65 63 74 6f 72 79  urrent directory
289a0 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69  ..** <tr><td> fi
289b0 6c 65 3a 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61  le:/home/fred/da
289c0 74 61 2e 64 62 3c 62 72 3e 0a 2a 2a 20 20 20 20  ta.db<br>.**    
289d0 20 20 20 20 20 20 66 69 6c 65 3a 2f 2f 2f 68 6f        file:///ho
289e0 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 20  me/fred/data.db 
289f0 3c 62 72 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20  <br> .**        
28a00 20 20 66 69 6c 65 3a 2f 2f 6c 6f 63 61 6c 68 6f    file://localho
28a10 73 74 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74  st/home/fred/dat
28a20 61 2e 64 62 20 3c 62 72 3e 20 3c 74 64 3e 20 0a  a.db <br> <td> .
28a30 2a 2a 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e  **          Open
28a40 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
28a50 6c 65 20 22 2f 68 6f 6d 65 2f 66 72 65 64 2f 64  le "/home/fred/d
28a60 61 74 61 2e 64 62 22 2e 0a 2a 2a 20 3c 74 72 3e  ata.db"..** <tr>
28a70 3c 74 64 3e 20 66 69 6c 65 3a 2f 2f 64 61 72 6b  <td> file://dark
28a80 73 74 61 72 2f 68 6f 6d 65 2f 66 72 65 64 2f 64  star/home/fred/d
28a90 61 74 61 2e 64 62 20 3c 74 64 3e 20 0a 2a 2a 20  ata.db <td> .** 
28aa0 20 20 20 20 20 20 20 20 20 41 6e 20 65 72 72 6f           An erro
28ab0 72 2e 20 22 64 61 72 6b 73 74 61 72 22 20 69 73  r. "darkstar" is
28ac0 20 6e 6f 74 20 61 20 72 65 63 6f 67 6e 69 7a 65   not a recognize
28ad0 64 20 61 75 74 68 6f 72 69 74 79 2e 0a 2a 2a 20  d authority..** 
28ae0 3c 74 72 3e 3c 74 64 20 73 74 79 6c 65 3d 22 77  <tr><td style="w
28af0 68 69 74 65 2d 73 70 61 63 65 3a 6e 6f 77 72 61  hite-space:nowra
28b00 70 22 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20  p"> .**         
28b10 20 66 69 6c 65 3a 2f 2f 2f 43 3a 2f 44 6f 63 75   file:///C:/Docu
28b20 6d 65 6e 74 73 25 32 30 61 6e 64 25 32 30 53 65  ments%20and%20Se
28b30 74 74 69 6e 67 73 2f 66 72 65 64 2f 44 65 73 6b  ttings/fred/Desk
28b40 74 6f 70 2f 64 61 74 61 2e 64 62 0a 2a 2a 20 20  top/data.db.**  
28b50 20 20 20 3c 74 64 3e 20 57 69 6e 64 6f 77 73 20     <td> Windows 
28b60 6f 6e 6c 79 3a 20 4f 70 65 6e 20 74 68 65 20 66  only: Open the f
28b70 69 6c 65 20 22 64 61 74 61 2e 64 62 22 20 6f 6e  ile "data.db" on
28b80 20 66 72 65 64 27 73 20 64 65 73 6b 74 6f 70 20   fred's desktop 
28b90 6f 6e 20 64 72 69 76 65 0a 2a 2a 20 20 20 20 20  on drive.**     
28ba0 20 20 20 20 20 43 3a 2e 20 4e 6f 74 65 20 74 68       C:. Note th
28bb0 61 74 20 74 68 65 20 25 32 30 20 65 73 63 61 70  at the %20 escap
28bc0 69 6e 67 20 69 6e 20 74 68 69 73 20 65 78 61 6d  ing in this exam
28bd0 70 6c 65 20 69 73 20 6e 6f 74 20 73 74 72 69 63  ple is not stric
28be0 74 6c 79 20 0a 2a 2a 20 20 20 20 20 20 20 20 20  tly .**         
28bf0 20 6e 65 63 65 73 73 61 72 79 20 2d 20 73 70 61   necessary - spa
28c00 63 65 20 63 68 61 72 61 63 74 65 72 73 20 63 61  ce characters ca
28c10 6e 20 62 65 20 75 73 65 64 20 6c 69 74 65 72 61  n be used litera
28c20 6c 6c 79 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  lly.**          
28c30 69 6e 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 73  in URI filenames
28c40 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69  ..** <tr><td> fi
28c50 6c 65 3a 64 61 74 61 2e 64 62 3f 6d 6f 64 65 3d  le:data.db?mode=
28c60 72 6f 26 63 61 63 68 65 3d 70 72 69 76 61 74 65  ro&cache=private
28c70 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20   <td> .**       
28c80 20 20 20 4f 70 65 6e 20 66 69 6c 65 20 22 64 61     Open file "da
28c90 74 61 2e 64 62 22 20 69 6e 20 74 68 65 20 63 75  ta.db" in the cu
28ca0 72 72 65 6e 74 20 64 69 72 65 63 74 6f 72 79 20  rrent directory 
28cb0 66 6f 72 20 72 65 61 64 2d 6f 6e 6c 79 20 61 63  for read-only ac
28cc0 63 65 73 73 2e 0a 2a 2a 20 20 20 20 20 20 20 20  cess..**        
28cd0 20 20 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20    Regardless of 
28ce0 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 73  whether or not s
28cf0 68 61 72 65 64 2d 63 61 63 68 65 20 6d 6f 64 65  hared-cache mode
28d00 20 69 73 20 65 6e 61 62 6c 65 64 20 62 79 0a 2a   is enabled by.*
28d10 2a 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75  *          defau
28d20 6c 74 2c 20 75 73 65 20 61 20 70 72 69 76 61 74  lt, use a privat
28d30 65 20 63 61 63 68 65 2e 0a 2a 2a 20 3c 74 72 3e  e cache..** <tr>
28d40 3c 74 64 3e 20 66 69 6c 65 3a 2f 68 6f 6d 65 2f  <td> file:/home/
28d50 66 72 65 64 2f 64 61 74 61 2e 64 62 3f 76 66 73  fred/data.db?vfs
28d60 3d 75 6e 69 78 2d 64 6f 74 66 69 6c 65 20 3c 74  =unix-dotfile <t
28d70 64 3e 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 4f  d>.**          O
28d80 70 65 6e 20 66 69 6c 65 20 22 2f 68 6f 6d 65 2f  pen file "/home/
28d90 66 72 65 64 2f 64 61 74 61 2e 64 62 22 2e 20 55  fred/data.db". U
28da0 73 65 20 74 68 65 20 73 70 65 63 69 61 6c 20 56  se the special V
28db0 46 53 20 22 75 6e 69 78 2d 64 6f 74 66 69 6c 65  FS "unix-dotfile
28dc0 22 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 74 68  ".**          th
28dd0 61 74 20 75 73 65 73 20 64 6f 74 2d 66 69 6c 65  at uses dot-file
28de0 73 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 70 6f  s in place of po
28df0 73 69 78 20 61 64 76 69 73 6f 72 79 20 6c 6f 63  six advisory loc
28e00 6b 69 6e 67 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64  king..** <tr><td
28e10 3e 20 66 69 6c 65 3a 64 61 74 61 2e 64 62 3f 6d  > file:data.db?m
28e20 6f 64 65 3d 72 65 61 64 6f 6e 6c 79 20 3c 74 64  ode=readonly <td
28e30 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 41  > .**          A
28e40 6e 20 65 72 72 6f 72 2e 20 22 72 65 61 64 6f 6e  n error. "readon
28e50 6c 79 22 20 69 73 20 6e 6f 74 20 61 20 76 61 6c  ly" is not a val
28e60 69 64 20 6f 70 74 69 6f 6e 20 66 6f 72 20 74 68  id option for th
28e70 65 20 22 6d 6f 64 65 22 20 70 61 72 61 6d 65 74  e "mode" paramet
28e80 65 72 2e 0a 2a 2a 20 3c 2f 74 61 62 6c 65 3e 0a  er..** </table>.
28e90 2a 2a 0a 2a 2a 20 5e 55 52 49 20 68 65 78 61 64  **.** ^URI hexad
28ea0 65 63 69 6d 61 6c 20 65 73 63 61 70 65 20 73 65  ecimal escape se
28eb0 71 75 65 6e 63 65 73 20 28 25 48 48 29 20 61 72  quences (%HH) ar
28ec0 65 20 73 75 70 70 6f 72 74 65 64 20 77 69 74 68  e supported with
28ed0 69 6e 20 74 68 65 20 70 61 74 68 20 61 6e 64 0a  in the path and.
28ee0 2a 2a 20 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65  ** query compone
28ef0 6e 74 73 20 6f 66 20 61 20 55 52 49 2e 20 41 20  nts of a URI. A 
28f00 68 65 78 61 64 65 63 69 6d 61 6c 20 65 73 63 61  hexadecimal esca
28f10 70 65 20 73 65 71 75 65 6e 63 65 20 63 6f 6e 73  pe sequence cons
28f20 69 73 74 73 20 6f 66 20 61 0a 2a 2a 20 70 65 72  ists of a.** per
28f30 63 65 6e 74 20 73 69 67 6e 20 2d 20 22 25 22 20  cent sign - "%" 
28f40 2d 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 65 78  - followed by ex
28f50 61 63 74 6c 79 20 74 77 6f 20 68 65 78 61 64 65  actly two hexade
28f60 63 69 6d 61 6c 20 64 69 67 69 74 73 20 0a 2a 2a  cimal digits .**
28f70 20 73 70 65 63 69 66 79 69 6e 67 20 61 6e 20 6f   specifying an o
28f80 63 74 65 74 20 76 61 6c 75 65 2e 20 5e 42 65 66  ctet value. ^Bef
28f90 6f 72 65 20 74 68 65 20 70 61 74 68 20 6f 72 20  ore the path or 
28fa0 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 73  query components
28fb0 20 6f 66 20 61 0a 2a 2a 20 55 52 49 20 66 69 6c   of a.** URI fil
28fc0 65 6e 61 6d 65 20 61 72 65 20 69 6e 74 65 72 70  ename are interp
28fd0 72 65 74 65 64 2c 20 74 68 65 79 20 61 72 65 20  reted, they are 
28fe0 65 6e 63 6f 64 65 64 20 75 73 69 6e 67 20 55 54  encoded using UT
28ff0 46 2d 38 20 61 6e 64 20 61 6c 6c 20 0a 2a 2a 20  F-8 and all .** 
29000 68 65 78 61 64 65 63 69 6d 61 6c 20 65 73 63 61  hexadecimal esca
29010 70 65 20 73 65 71 75 65 6e 63 65 73 20 72 65 70  pe sequences rep
29020 6c 61 63 65 64 20 62 79 20 61 20 73 69 6e 67 6c  laced by a singl
29030 65 20 62 79 74 65 20 63 6f 6e 74 61 69 6e 69 6e  e byte containin
29040 67 20 74 68 65 0a 2a 2a 20 63 6f 72 72 65 73 70  g the.** corresp
29050 6f 6e 64 69 6e 67 20 6f 63 74 65 74 2e 20 49 66  onding octet. If
29060 20 74 68 69 73 20 70 72 6f 63 65 73 73 20 67 65   this process ge
29070 6e 65 72 61 74 65 73 20 61 6e 20 69 6e 76 61 6c  nerates an inval
29080 69 64 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  id UTF-8 encodin
29090 67 2c 0a 2a 2a 20 74 68 65 20 72 65 73 75 6c 74  g,.** the result
290a0 73 20 61 72 65 20 75 6e 64 65 66 69 6e 65 64 2e  s are undefined.
290b0 0a 2a 2a 0a 2a 2a 20 3c 62 3e 4e 6f 74 65 20 74  .**.** <b>Note t
290c0 6f 20 57 69 6e 64 6f 77 73 20 75 73 65 72 73 3a  o Windows users:
290d0 3c 2f 62 3e 20 20 54 68 65 20 65 6e 63 6f 64 69  </b>  The encodi
290e0 6e 67 20 75 73 65 64 20 66 6f 72 20 74 68 65 20  ng used for the 
290f0 66 69 6c 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e  filename argumen
29100 74 0a 2a 2a 20 6f 66 20 73 71 6c 69 74 65 33 5f  t.** of sqlite3_
29110 6f 70 65 6e 28 29 20 61 6e 64 20 73 71 6c 69 74  open() and sqlit
29120 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 6d 75 73  e3_open_v2() mus
29130 74 20 62 65 20 55 54 46 2d 38 2c 20 6e 6f 74 20  t be UTF-8, not 
29140 77 68 61 74 65 76 65 72 0a 2a 2a 20 63 6f 64 65  whatever.** code
29150 70 61 67 65 20 69 73 20 63 75 72 72 65 6e 74 6c  page is currentl
29160 79 20 64 65 66 69 6e 65 64 2e 20 20 46 69 6c 65  y defined.  File
29170 6e 61 6d 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67  names containing
29180 20 69 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 0a 2a   international.*
29190 2a 20 63 68 61 72 61 63 74 65 72 73 20 6d 75 73  * characters mus
291a0 74 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74  t be converted t
291b0 6f 20 55 54 46 2d 38 20 70 72 69 6f 72 20 74 6f  o UTF-8 prior to
291c0 20 70 61 73 73 69 6e 67 20 74 68 65 6d 20 69 6e   passing them in
291d0 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70  to.** sqlite3_op
291e0 65 6e 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  en() or sqlite3_
291f0 6f 70 65 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a  open_v2()..**.**
29200 20 3c 62 3e 4e 6f 74 65 20 74 6f 20 57 69 6e 64   <b>Note to Wind
29210 6f 77 73 20 52 75 6e 74 69 6d 65 20 75 73 65 72  ows Runtime user
29220 73 3a 3c 2f 62 3e 20 20 54 68 65 20 74 65 6d 70  s:</b>  The temp
29230 6f 72 61 72 79 20 64 69 72 65 63 74 6f 72 79 20  orary directory 
29240 6d 75 73 74 20 62 65 20 73 65 74 0a 2a 2a 20 70  must be set.** p
29250 72 69 6f 72 20 74 6f 20 63 61 6c 6c 69 6e 67 20  rior to calling 
29260 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 6f  sqlite3_open() o
29270 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
29280 32 28 29 2e 20 20 4f 74 68 65 72 77 69 73 65 2c  2().  Otherwise,
29290 20 76 61 72 69 6f 75 73 0a 2a 2a 20 66 65 61 74   various.** feat
292a0 75 72 65 73 20 74 68 61 74 20 72 65 71 75 69 72  ures that requir
292b0 65 20 74 68 65 20 75 73 65 20 6f 66 20 74 65 6d  e the use of tem
292c0 70 6f 72 61 72 79 20 66 69 6c 65 73 20 6d 61 79  porary files may
292d0 20 66 61 69 6c 2e 0a 2a 2a 0a 2a 2a 20 53 65 65   fail..**.** See
292e0 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f   also: [sqlite3_
292f0 74 65 6d 70 5f 64 69 72 65 63 74 6f 72 79 5d 0a  temp_directory].
29300 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f  */.int sqlite3_o
29310 70 65 6e 28 0a 20 20 63 6f 6e 73 74 20 63 68 61  pen(.  const cha
29320 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f  r *filename,   /
29330 2a 20 44 61 74 61 62 61 73 65 20 66 69 6c 65 6e  * Database filen
29340 61 6d 65 20 28 55 54 46 2d 38 29 20 2a 2f 0a 20  ame (UTF-8) */. 
29350 20 73 71 6c 69 74 65 33 20 2a 2a 70 70 44 62 20   sqlite3 **ppDb 
29360 20 20 20 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a           /* OUT:
29370 20 53 51 4c 69 74 65 20 64 62 20 68 61 6e 64 6c   SQLite db handl
29380 65 20 2a 2f 0a 29 3b 0a 69 6e 74 20 73 71 6c 69  e */.);.int sqli
29390 74 65 33 5f 6f 70 65 6e 31 36 28 0a 20 20 63 6f  te3_open16(.  co
293a0 6e 73 74 20 76 6f 69 64 20 2a 66 69 6c 65 6e 61  nst void *filena
293b0 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73  me,   /* Databas
293c0 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d  e filename (UTF-
293d0 31 36 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33  16) */.  sqlite3
293e0 20 2a 2a 70 70 44 62 20 20 20 20 20 20 20 20 20   **ppDb         
293f0 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20   /* OUT: SQLite 
29400 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a  db handle */.);.
29410 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  int sqlite3_open
29420 5f 76 32 28 0a 20 20 63 6f 6e 73 74 20 63 68 61  _v2(.  const cha
29430 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f  r *filename,   /
29440 2a 20 44 61 74 61 62 61 73 65 20 66 69 6c 65 6e  * Database filen
29450 61 6d 65 20 28 55 54 46 2d 38 29 20 2a 2f 0a 20  ame (UTF-8) */. 
29460 20 73 71 6c 69 74 65 33 20 2a 2a 70 70 44 62 2c   sqlite3 **ppDb,
29470 20 20 20 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a           /* OUT:
29480 20 53 51 4c 69 74 65 20 64 62 20 68 61 6e 64 6c   SQLite db handl
29490 65 20 2a 2f 0a 20 20 69 6e 74 20 66 6c 61 67 73  e */.  int flags
294a0 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ,              /
294b0 2a 20 46 6c 61 67 73 20 2a 2f 0a 20 20 63 6f 6e  * Flags */.  con
294c0 73 74 20 63 68 61 72 20 2a 7a 56 66 73 20 20 20  st char *zVfs   
294d0 20 20 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20       /* Name of 
294e0 56 46 53 20 6d 6f 64 75 6c 65 20 74 6f 20 75 73  VFS module to us
294f0 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  e */.);../*.** C
29500 41 50 49 33 52 45 46 3a 20 4f 62 74 61 69 6e 20  API3REF: Obtain 
29510 56 61 6c 75 65 73 20 46 6f 72 20 55 52 49 20 50  Values For URI P
29520 61 72 61 6d 65 74 65 72 73 0a 2a 2a 0a 2a 2a 20  arameters.**.** 
29530 54 68 65 73 65 20 61 72 65 20 75 74 69 6c 69 74  These are utilit
29540 79 20 72 6f 75 74 69 6e 65 73 2c 20 75 73 65 66  y routines, usef
29550 75 6c 20 74 6f 20 56 46 53 20 69 6d 70 6c 65 6d  ul to VFS implem
29560 65 6e 74 61 74 69 6f 6e 73 2c 20 74 68 61 74 20  entations, that 
29570 63 68 65 63 6b 0a 2a 2a 20 74 6f 20 73 65 65 20  check.** to see 
29580 69 66 20 61 20 64 61 74 61 62 61 73 65 20 66 69  if a database fi
29590 6c 65 20 77 61 73 20 61 20 55 52 49 20 74 68 61  le was a URI tha
295a0 74 20 63 6f 6e 74 61 69 6e 65 64 20 61 20 73 70  t contained a sp
295b0 65 63 69 66 69 63 20 71 75 65 72 79 20 0a 2a 2a  ecific query .**
295c0 20 70 61 72 61 6d 65 74 65 72 2c 20 61 6e 64 20   parameter, and 
295d0 69 66 20 73 6f 20 6f 62 74 61 69 6e 73 20 74 68  if so obtains th
295e0 65 20 76 61 6c 75 65 20 6f 66 20 74 68 61 74 20  e value of that 
295f0 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 2e  query parameter.
29600 0a 2a 2a 0a 2a 2a 20 49 66 20 46 20 69 73 20 74  .**.** If F is t
29610 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
29620 6e 61 6d 65 20 70 6f 69 6e 74 65 72 20 70 61 73  name pointer pas
29630 73 65 64 20 69 6e 74 6f 20 74 68 65 20 78 4f 70  sed into the xOp
29640 65 6e 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 0a  en() method of .
29650 2a 2a 20 61 20 56 46 53 20 69 6d 70 6c 65 6d 65  ** a VFS impleme
29660 6e 74 61 74 69 6f 6e 20 77 68 65 6e 20 74 68 65  ntation when the
29670 20 66 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72   flags parameter
29680 20 74 6f 20 78 4f 70 65 6e 28 29 20 68 61 73 20   to xOpen() has 
29690 6f 6e 65 20 6f 72 20 0a 2a 2a 20 6d 6f 72 65 20  one or .** more 
296a0 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f  of the [SQLITE_O
296b0 50 45 4e 5f 55 52 49 5d 20 6f 72 20 5b 53 51 4c  PEN_URI] or [SQL
296c0 49 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 44 42  ITE_OPEN_MAIN_DB
296d0 5d 20 62 69 74 73 20 73 65 74 20 61 6e 64 0a 2a  ] bits set and.*
296e0 2a 20 50 20 69 73 20 74 68 65 20 6e 61 6d 65 20  * P is the name 
296f0 6f 66 20 74 68 65 20 71 75 65 72 79 20 70 61 72  of the query par
29700 61 6d 65 74 65 72 2c 20 74 68 65 6e 0a 2a 2a 20  ameter, then.** 
29710 73 71 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61  sqlite3_uri_para
29720 6d 65 74 65 72 28 46 2c 50 29 20 72 65 74 75 72  meter(F,P) retur
29730 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  ns the value of 
29740 74 68 65 20 50 0a 2a 2a 20 70 61 72 61 6d 65 74  the P.** paramet
29750 65 72 20 69 66 20 69 74 20 65 78 69 73 74 73 20  er if it exists 
29760 6f 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  or a NULL pointe
29770 72 20 69 66 20 50 20 64 6f 65 73 20 6e 6f 74 20  r if P does not 
29780 61 70 70 65 61 72 20 61 73 20 61 20 0a 2a 2a 20  appear as a .** 
29790 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 20  query parameter 
297a0 6f 6e 20 46 2e 20 20 49 66 20 50 20 69 73 20 61  on F.  If P is a
297b0 20 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72   query parameter
297c0 20 6f 66 20 46 0a 2a 2a 20 68 61 73 20 6e 6f 20   of F.** has no 
297d0 65 78 70 6c 69 63 69 74 20 76 61 6c 75 65 2c 20  explicit value, 
297e0 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 75 72 69  then sqlite3_uri
297f0 5f 70 61 72 61 6d 65 74 65 72 28 46 2c 50 29 20  _parameter(F,P) 
29800 72 65 74 75 72 6e 73 0a 2a 2a 20 61 20 70 6f 69  returns.** a poi
29810 6e 74 65 72 20 74 6f 20 61 6e 20 65 6d 70 74 79  nter to an empty
29820 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54   string..**.** T
29830 68 65 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62  he sqlite3_uri_b
29840 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f  oolean(F,P,B) ro
29850 75 74 69 6e 65 20 61 73 73 75 6d 65 73 20 74 68  utine assumes th
29860 61 74 20 50 20 69 73 20 61 20 62 6f 6f 6c 65 61  at P is a boolea
29870 6e 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 61  n.** parameter a
29880 6e 64 20 72 65 74 75 72 6e 73 20 74 72 75 65 20  nd returns true 
29890 28 31 29 20 6f 72 20 66 61 6c 73 65 20 28 30 29  (1) or false (0)
298a0 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68   according to th
298b0 65 20 76 61 6c 75 65 0a 2a 2a 20 6f 66 20 50 2e  e value.** of P.
298c0 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 75 72    The sqlite3_ur
298d0 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29  i_boolean(F,P,B)
298e0 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
298f0 20 74 72 75 65 20 28 31 29 20 69 66 20 74 68 65   true (1) if the
29900 0a 2a 2a 20 76 61 6c 75 65 20 6f 66 20 71 75 65  .** value of que
29910 72 79 20 70 61 72 61 6d 65 74 65 72 20 50 20 69  ry parameter P i
29920 73 20 6f 6e 65 20 6f 66 20 22 79 65 73 22 2c 20  s one of "yes", 
29930 22 74 72 75 65 22 2c 20 6f 72 20 22 6f 6e 22 20  "true", or "on" 
29940 69 6e 20 61 6e 79 0a 2a 2a 20 63 61 73 65 20 6f  in any.** case o
29950 72 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 62  r if the value b
29960 65 67 69 6e 73 20 77 69 74 68 20 61 20 6e 6f 6e  egins with a non
29970 2d 7a 65 72 6f 20 6e 75 6d 62 65 72 2e 20 20 54  -zero number.  T
29980 68 65 20 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75  he .** sqlite3_u
29990 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42  ri_boolean(F,P,B
299a0 29 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  ) routines retur
299b0 6e 73 20 66 61 6c 73 65 20 28 30 29 20 69 66 20  ns false (0) if 
299c0 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 2a 2a 20  the value of.** 
299d0 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 20  query parameter 
299e0 50 20 69 73 20 6f 6e 65 20 6f 66 20 22 6e 6f 22  P is one of "no"
299f0 2c 20 22 66 61 6c 73 65 22 2c 20 6f 72 20 22 6f  , "false", or "o
29a00 66 66 22 20 69 6e 20 61 6e 79 20 63 61 73 65 20  ff" in any case 
29a10 6f 72 0a 2a 2a 20 69 66 20 74 68 65 20 76 61 6c  or.** if the val
29a20 75 65 20 62 65 67 69 6e 73 20 77 69 74 68 20 61  ue begins with a
29a30 20 6e 75 6d 65 72 69 63 20 7a 65 72 6f 2e 20 20   numeric zero.  
29a40 49 66 20 50 20 69 73 20 6e 6f 74 20 61 20 71 75  If P is not a qu
29a50 65 72 79 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  ery.** parameter
29a60 20 6f 6e 20 46 20 6f 72 20 69 66 20 74 68 65 20   on F or if the 
29a70 76 61 6c 75 65 20 6f 66 20 50 20 69 73 20 64 6f  value of P is do
29a80 65 73 20 6e 6f 74 20 6d 61 74 63 68 20 61 6e 79  es not match any
29a90 20 6f 66 20 74 68 65 0a 2a 2a 20 61 62 6f 76 65   of the.** above
29aa0 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 75  , then sqlite3_u
29ab0 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42  ri_boolean(F,P,B
29ac0 29 20 72 65 74 75 72 6e 73 20 28 42 21 3d 30 29  ) returns (B!=0)
29ad0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
29ae0 74 65 33 5f 75 72 69 5f 69 6e 74 36 34 28 46 2c  te3_uri_int64(F,
29af0 50 2c 44 29 20 72 6f 75 74 69 6e 65 20 63 6f 6e  P,D) routine con
29b00 76 65 72 74 73 20 74 68 65 20 76 61 6c 75 65 20  verts the value 
29b10 6f 66 20 50 20 69 6e 74 6f 20 61 0a 2a 2a 20 36  of P into a.** 6
29b20 34 2d 62 69 74 20 73 69 67 6e 65 64 20 69 6e 74  4-bit signed int
29b30 65 67 65 72 20 61 6e 64 20 72 65 74 75 72 6e 73  eger and returns
29b40 20 74 68 61 74 20 69 6e 74 65 67 65 72 2c 20 6f   that integer, o
29b50 72 20 44 20 69 66 20 50 20 64 6f 65 73 20 6e 6f  r D if P does no
29b60 74 0a 2a 2a 20 65 78 69 73 74 2e 20 20 49 66 20  t.** exist.  If 
29b70 74 68 65 20 76 61 6c 75 65 20 6f 66 20 50 20 69  the value of P i
29b80 73 20 73 6f 6d 65 74 68 69 6e 67 20 6f 74 68 65  s something othe
29b90 72 20 74 68 61 6e 20 61 6e 20 69 6e 74 65 67 65  r than an intege
29ba0 72 2c 20 74 68 65 6e 0a 2a 2a 20 7a 65 72 6f 20  r, then.** zero 
29bb0 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 20  is returned..** 
29bc0 0a 2a 2a 20 49 66 20 46 20 69 73 20 61 20 4e 55  .** If F is a NU
29bd0 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 74 68 65 6e  LL pointer, then
29be0 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 70 61 72   sqlite3_uri_par
29bf0 61 6d 65 74 65 72 28 46 2c 50 29 20 72 65 74 75  ameter(F,P) retu
29c00 72 6e 73 20 4e 55 4c 4c 20 61 6e 64 0a 2a 2a 20  rns NULL and.** 
29c10 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c  sqlite3_uri_bool
29c20 65 61 6e 28 46 2c 50 2c 42 29 20 72 65 74 75 72  ean(F,P,B) retur
29c30 6e 73 20 42 2e 20 20 49 66 20 46 20 69 73 20 6e  ns B.  If F is n
29c40 6f 74 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  ot a NULL pointe
29c50 72 20 61 6e 64 0a 2a 2a 20 69 73 20 6e 6f 74 20  r and.** is not 
29c60 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  a database file 
29c70 70 61 74 68 6e 61 6d 65 20 70 6f 69 6e 74 65 72  pathname pointer
29c80 20 74 68 61 74 20 53 51 4c 69 74 65 20 70 61 73   that SQLite pas
29c90 73 65 64 20 69 6e 74 6f 20 74 68 65 20 78 4f 70  sed into the xOp
29ca0 65 6e 0a 2a 2a 20 56 46 53 20 6d 65 74 68 6f 64  en.** VFS method
29cb0 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76  , then the behav
29cc0 69 6f 72 20 6f 66 20 74 68 69 73 20 72 6f 75 74  ior of this rout
29cd0 69 6e 65 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ine is undefined
29ce0 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 0a 2a 2a   and probably.**
29cf0 20 75 6e 64 65 73 69 72 61 62 6c 65 2e 0a 2a 2f   undesirable..*/
29d00 0a 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c  .const char *sql
29d10 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d 65 74  ite3_uri_paramet
29d20 65 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  er(const char *z
29d30 46 69 6c 65 6e 61 6d 65 2c 20 63 6f 6e 73 74 20  Filename, const 
29d40 63 68 61 72 20 2a 7a 50 61 72 61 6d 29 3b 0a 69  char *zParam);.i
29d50 6e 74 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62  nt sqlite3_uri_b
29d60 6f 6f 6c 65 61 6e 28 63 6f 6e 73 74 20 63 68 61  oolean(const cha
29d70 72 20 2a 7a 46 69 6c 65 2c 20 63 6f 6e 73 74 20  r *zFile, const 
29d80 63 68 61 72 20 2a 7a 50 61 72 61 6d 2c 20 69 6e  char *zParam, in
29d90 74 20 62 44 65 66 61 75 6c 74 29 3b 0a 73 71 6c  t bDefault);.sql
29da0 69 74 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74  ite3_int64 sqlit
29db0 65 33 5f 75 72 69 5f 69 6e 74 36 34 28 63 6f 6e  e3_uri_int64(con
29dc0 73 74 20 63 68 61 72 2a 2c 20 63 6f 6e 73 74 20  st char*, const 
29dd0 63 68 61 72 2a 2c 20 73 71 6c 69 74 65 33 5f 69  char*, sqlite3_i
29de0 6e 74 36 34 29 3b 0a 0a 0a 2f 2a 0a 2a 2a 20 43  nt64);.../*.** C
29df0 41 50 49 33 52 45 46 3a 20 45 72 72 6f 72 20 43  API3REF: Error C
29e00 6f 64 65 73 20 41 6e 64 20 4d 65 73 73 61 67 65  odes And Message
29e10 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  s.** METHOD: sql
29e20 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74  ite3.**.** ^If t
29e30 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 73  he most recent s
29e40 71 6c 69 74 65 33 5f 2a 20 41 50 49 20 63 61 6c  qlite3_* API cal
29e50 6c 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  l associated wit
29e60 68 20 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20  h .** [database 
29e70 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 20 66 61  connection] D fa
29e80 69 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73  iled, then the s
29e90 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 44  qlite3_errcode(D
29ea0 29 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 72  ) interface.** r
29eb0 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 65 72  eturns the numer
29ec0 69 63 20 5b 72 65 73 75 6c 74 20 63 6f 64 65 5d  ic [result code]
29ed0 20 6f 72 20 5b 65 78 74 65 6e 64 65 64 20 72 65   or [extended re
29ee0 73 75 6c 74 20 63 6f 64 65 5d 20 66 6f 72 20 74  sult code] for t
29ef0 68 61 74 0a 2a 2a 20 41 50 49 20 63 61 6c 6c 2e  hat.** API call.
29f00 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
29f10 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64  _extended_errcod
29f20 65 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  e().** interface
29f30 20 69 73 20 74 68 65 20 73 61 6d 65 20 65 78 63   is the same exc
29f40 65 70 74 20 74 68 61 74 20 69 74 20 61 6c 77 61  ept that it alwa
29f50 79 73 20 72 65 74 75 72 6e 73 20 74 68 65 20 0a  ys returns the .
29f60 2a 2a 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73  ** [extended res
29f70 75 6c 74 20 63 6f 64 65 5d 20 65 76 65 6e 20 77  ult code] even w
29f80 68 65 6e 20 65 78 74 65 6e 64 65 64 20 72 65 73  hen extended res
29f90 75 6c 74 20 63 6f 64 65 73 20 61 72 65 0a 2a 2a  ult codes are.**
29fa0 20 64 69 73 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a   disabled..**.**
29fb0 20 54 68 65 20 76 61 6c 75 65 73 20 72 65 74 75   The values retu
29fc0 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
29fd0 65 72 72 63 6f 64 65 28 29 20 61 6e 64 2f 6f 72  errcode() and/or
29fe0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78 74 65  .** sqlite3_exte
29ff0 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 29 20 6d  nded_errcode() m
2a000 69 67 68 74 20 63 68 61 6e 67 65 20 77 69 74 68  ight change with
2a010 20 65 61 63 68 20 41 50 49 20 63 61 6c 6c 2e 0a   each API call..
2a020 2a 2a 20 45 78 63 65 70 74 2c 20 74 68 65 72 65  ** Except, there
2a030 20 61 72 65 20 73 6f 6d 65 20 69 6e 74 65 72 66   are some interf
2a040 61 63 65 73 20 74 68 61 74 20 61 72 65 20 67 75  aces that are gu
2a050 61 72 61 6e 74 65 65 64 20 74 6f 20 6e 65 76 65  aranteed to neve
2a060 72 0a 2a 2a 20 63 68 61 6e 67 65 20 74 68 65 20  r.** change the 
2a070 76 61 6c 75 65 20 6f 66 20 74 68 65 20 65 72 72  value of the err
2a080 6f 72 20 63 6f 64 65 2e 20 20 54 68 65 20 65 72  or code.  The er
2a090 72 6f 72 2d 63 6f 64 65 20 70 72 65 73 65 72 76  ror-code preserv
2a0a0 69 6e 67 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  ing.** interface
2a0b0 73 20 61 72 65 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c  s are:.**.** <ul
2a0c0 3e 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65  >.** <li> sqlite
2a0d0 33 5f 65 72 72 63 6f 64 65 28 29 0a 2a 2a 20 3c  3_errcode().** <
2a0e0 6c 69 3e 20 73 71 6c 69 74 65 33 5f 65 78 74 65  li> sqlite3_exte
2a0f0 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 29 0a 2a  nded_errcode().*
2a100 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65 33 5f 65  * <li> sqlite3_e
2a110 72 72 6d 73 67 28 29 0a 2a 2a 20 3c 6c 69 3e 20  rrmsg().** <li> 
2a120 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36  sqlite3_errmsg16
2a130 28 29 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a  ().** </ul>.**.*
2a140 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65  * ^The sqlite3_e
2a150 72 72 6d 73 67 28 29 20 61 6e 64 20 73 71 6c 69  rrmsg() and sqli
2a160 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29 20 72  te3_errmsg16() r
2a170 65 74 75 72 6e 20 45 6e 67 6c 69 73 68 2d 6c 61  eturn English-la
2a180 6e 67 75 61 67 65 0a 2a 2a 20 74 65 78 74 20 74  nguage.** text t
2a190 68 61 74 20 64 65 73 63 72 69 62 65 73 20 74 68  hat describes th
2a1a0 65 20 65 72 72 6f 72 2c 20 61 73 20 65 69 74 68  e error, as eith
2a1b0 65 72 20 55 54 46 2d 38 20 6f 72 20 55 54 46 2d  er UTF-8 or UTF-
2a1c0 31 36 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e  16 respectively.
2a1d0 0a 2a 2a 20 5e 28 4d 65 6d 6f 72 79 20 74 6f 20  .** ^(Memory to 
2a1e0 68 6f 6c 64 20 74 68 65 20 65 72 72 6f 72 20 6d  hold the error m
2a1f0 65 73 73 61 67 65 20 73 74 72 69 6e 67 20 69 73  essage string is
2a200 20 6d 61 6e 61 67 65 64 20 69 6e 74 65 72 6e 61   managed interna
2a210 6c 6c 79 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c  lly..** The appl
2a220 69 63 61 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74  ication does not
2a230 20 6e 65 65 64 20 74 6f 20 77 6f 72 72 79 20 61   need to worry a
2a240 62 6f 75 74 20 66 72 65 65 69 6e 67 20 74 68 65  bout freeing the
2a250 20 72 65 73 75 6c 74 2e 0a 2a 2a 20 48 6f 77 65   result..** Howe
2a260 76 65 72 2c 20 74 68 65 20 65 72 72 6f 72 20 73  ver, the error s
2a270 74 72 69 6e 67 20 6d 69 67 68 74 20 62 65 20 6f  tring might be o
2a280 76 65 72 77 72 69 74 74 65 6e 20 6f 72 20 64 65  verwritten or de
2a290 61 6c 6c 6f 63 61 74 65 64 20 62 79 0a 2a 2a 20  allocated by.** 
2a2a0 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73  subsequent calls
2a2b0 20 74 6f 20 6f 74 68 65 72 20 53 51 4c 69 74 65   to other SQLite
2a2c0 20 69 6e 74 65 72 66 61 63 65 20 66 75 6e 63 74   interface funct
2a2d0 69 6f 6e 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54  ions.)^.**.** ^T
2a2e0 68 65 20 73 71 6c 69 74 65 33 5f 65 72 72 73 74  he sqlite3_errst
2a2f0 72 28 29 20 69 6e 74 65 72 66 61 63 65 20 72 65  r() interface re
2a300 74 75 72 6e 73 20 74 68 65 20 45 6e 67 6c 69 73  turns the Englis
2a310 68 2d 6c 61 6e 67 75 61 67 65 20 74 65 78 74 0a  h-language text.
2a320 2a 2a 20 74 68 61 74 20 64 65 73 63 72 69 62 65  ** that describe
2a330 73 20 74 68 65 20 5b 72 65 73 75 6c 74 20 63 6f  s the [result co
2a340 64 65 5d 2c 20 61 73 20 55 54 46 2d 38 2e 0a 2a  de], as UTF-8..*
2a350 2a 20 5e 28 4d 65 6d 6f 72 79 20 74 6f 20 68 6f  * ^(Memory to ho
2a360 6c 64 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73  ld the error mes
2a370 73 61 67 65 20 73 74 72 69 6e 67 20 69 73 20 6d  sage string is m
2a380 61 6e 61 67 65 64 20 69 6e 74 65 72 6e 61 6c 6c  anaged internall
2a390 79 0a 2a 2a 20 61 6e 64 20 6d 75 73 74 20 6e 6f  y.** and must no
2a3a0 74 20 62 65 20 66 72 65 65 64 20 62 79 20 74 68  t be freed by th
2a3b0 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 29 5e 2e  e application)^.
2a3c0 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20  .**.** When the 
2a3d0 73 65 72 69 61 6c 69 7a 65 64 20 5b 74 68 72 65  serialized [thre
2a3e0 61 64 69 6e 67 20 6d 6f 64 65 5d 20 69 73 20 69  ading mode] is i
2a3f0 6e 20 75 73 65 2c 20 69 74 20 6d 69 67 68 74 20  n use, it might 
2a400 62 65 20 74 68 65 0a 2a 2a 20 63 61 73 65 20 74  be the.** case t
2a410 68 61 74 20 61 20 73 65 63 6f 6e 64 20 65 72 72  hat a second err
2a420 6f 72 20 6f 63 63 75 72 73 20 6f 6e 20 61 20 73  or occurs on a s
2a430 65 70 61 72 61 74 65 20 74 68 72 65 61 64 20 69  eparate thread i
2a440 6e 20 62 65 74 77 65 65 6e 0a 2a 2a 20 74 68 65  n between.** the
2a450 20 74 69 6d 65 20 6f 66 20 74 68 65 20 66 69 72   time of the fir
2a460 73 74 20 65 72 72 6f 72 20 61 6e 64 20 74 68 65  st error and the
2a470 20 63 61 6c 6c 20 74 6f 20 74 68 65 73 65 20 69   call to these i
2a480 6e 74 65 72 66 61 63 65 73 2e 0a 2a 2a 20 57 68  nterfaces..** Wh
2a490 65 6e 20 74 68 61 74 20 68 61 70 70 65 6e 73 2c  en that happens,
2a4a0 20 74 68 65 20 73 65 63 6f 6e 64 20 65 72 72 6f   the second erro
2a4b0 72 20 77 69 6c 6c 20 62 65 20 72 65 70 6f 72 74  r will be report
2a4c0 65 64 20 73 69 6e 63 65 20 74 68 65 73 65 0a 2a  ed since these.*
2a4d0 2a 20 69 6e 74 65 72 66 61 63 65 73 20 61 6c 77  * interfaces alw
2a4e0 61 79 73 20 72 65 70 6f 72 74 20 74 68 65 20 6d  ays report the m
2a4f0 6f 73 74 20 72 65 63 65 6e 74 20 72 65 73 75 6c  ost recent resul
2a500 74 2e 20 20 54 6f 20 61 76 6f 69 64 0a 2a 2a 20  t.  To avoid.** 
2a510 74 68 69 73 2c 20 65 61 63 68 20 74 68 72 65 61  this, each threa
2a520 64 20 63 61 6e 20 6f 62 74 61 69 6e 20 65 78 63  d can obtain exc
2a530 6c 75 73 69 76 65 20 75 73 65 20 6f 66 20 74 68  lusive use of th
2a540 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
2a550 65 63 74 69 6f 6e 5d 20 44 0a 2a 2a 20 62 79 20  ection] D.** by 
2a560 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65  invoking [sqlite
2a570 33 5f 6d 75 74 65 78 5f 65 6e 74 65 72 5d 28 5b  3_mutex_enter]([
2a580 73 71 6c 69 74 65 33 5f 64 62 5f 6d 75 74 65 78  sqlite3_db_mutex
2a590 5d 28 44 29 29 20 62 65 66 6f 72 65 20 62 65 67  ](D)) before beg
2a5a0 69 6e 6e 69 6e 67 0a 2a 2a 20 74 6f 20 75 73 65  inning.** to use
2a5b0 20 44 20 61 6e 64 20 69 6e 76 6f 6b 69 6e 67 20   D and invoking 
2a5c0 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6c  [sqlite3_mutex_l
2a5d0 65 61 76 65 5d 28 5b 73 71 6c 69 74 65 33 5f 64  eave]([sqlite3_d
2a5e0 62 5f 6d 75 74 65 78 5d 28 44 29 29 20 61 66 74  b_mutex](D)) aft
2a5f0 65 72 0a 2a 2a 20 61 6c 6c 20 63 61 6c 6c 73 20  er.** all calls 
2a600 74 6f 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  to the interface
2a610 73 20 6c 69 73 74 65 64 20 68 65 72 65 20 61 72  s listed here ar
2a620 65 20 63 6f 6d 70 6c 65 74 65 64 2e 0a 2a 2a 0a  e completed..**.
2a630 2a 2a 20 49 66 20 61 6e 20 69 6e 74 65 72 66 61  ** If an interfa
2a640 63 65 20 66 61 69 6c 73 20 77 69 74 68 20 53 51  ce fails with SQ
2a650 4c 49 54 45 5f 4d 49 53 55 53 45 2c 20 74 68 61  LITE_MISUSE, tha
2a660 74 20 6d 65 61 6e 73 20 74 68 65 20 69 6e 74 65  t means the inte
2a670 72 66 61 63 65 0a 2a 2a 20 77 61 73 20 69 6e 76  rface.** was inv
2a680 6f 6b 65 64 20 69 6e 63 6f 72 72 65 63 74 6c 79  oked incorrectly
2a690 20 62 79 20 74 68 65 20 61 70 70 6c 69 63 61 74   by the applicat
2a6a0 69 6f 6e 2e 20 20 49 6e 20 74 68 61 74 20 63 61  ion.  In that ca
2a6b0 73 65 2c 20 74 68 65 0a 2a 2a 20 65 72 72 6f 72  se, the.** error
2a6c0 20 63 6f 64 65 20 61 6e 64 20 6d 65 73 73 61 67   code and messag
2a6d0 65 20 6d 61 79 20 6f 72 20 6d 61 79 20 6e 6f 74  e may or may not
2a6e0 20 62 65 20 73 65 74 2e 0a 2a 2f 0a 69 6e 74 20   be set..*/.int 
2a6f0 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28  sqlite3_errcode(
2a700 73 71 6c 69 74 65 33 20 2a 64 62 29 3b 0a 69 6e  sqlite3 *db);.in
2a710 74 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  t sqlite3_extend
2a720 65 64 5f 65 72 72 63 6f 64 65 28 73 71 6c 69 74  ed_errcode(sqlit
2a730 65 33 20 2a 64 62 29 3b 0a 63 6f 6e 73 74 20 63  e3 *db);.const c
2a740 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 65 72 72  har *sqlite3_err
2a750 6d 73 67 28 73 71 6c 69 74 65 33 2a 29 3b 0a 63  msg(sqlite3*);.c
2a760 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74  onst void *sqlit
2a770 65 33 5f 65 72 72 6d 73 67 31 36 28 73 71 6c 69  e3_errmsg16(sqli
2a780 74 65 33 2a 29 3b 0a 63 6f 6e 73 74 20 63 68 61  te3*);.const cha
2a790 72 20 2a 73 71 6c 69 74 65 33 5f 65 72 72 73 74  r *sqlite3_errst
2a7a0 72 28 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  r(int);../*.** C
2a7b0 41 50 49 33 52 45 46 3a 20 50 72 65 70 61 72 65  API3REF: Prepare
2a7c0 64 20 53 74 61 74 65 6d 65 6e 74 20 4f 62 6a 65  d Statement Obje
2a7d0 63 74 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  ct.** KEYWORDS: 
2a7e0 7b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  {prepared statem
2a7f0 65 6e 74 7d 20 7b 70 72 65 70 61 72 65 64 20 73  ent} {prepared s
2a800 74 61 74 65 6d 65 6e 74 73 7d 0a 2a 2a 0a 2a 2a  tatements}.**.**
2a810 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   An instance of 
2a820 74 68 69 73 20 6f 62 6a 65 63 74 20 72 65 70 72  this object repr
2a830 65 73 65 6e 74 73 20 61 20 73 69 6e 67 6c 65 20  esents a single 
2a840 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68  SQL statement th
2a850 61 74 0a 2a 2a 20 68 61 73 20 62 65 65 6e 20 63  at.** has been c
2a860 6f 6d 70 69 6c 65 64 20 69 6e 74 6f 20 62 69 6e  ompiled into bin
2a870 61 72 79 20 66 6f 72 6d 20 61 6e 64 20 69 73 20  ary form and is 
2a880 72 65 61 64 79 20 74 6f 20 62 65 20 65 76 61 6c  ready to be eval
2a890 75 61 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  uated..**.** Thi
2a8a0 6e 6b 20 6f 66 20 65 61 63 68 20 53 51 4c 20 73  nk of each SQL s
2a8b0 74 61 74 65 6d 65 6e 74 20 61 73 20 61 20 73 65  tatement as a se
2a8c0 70 61 72 61 74 65 20 63 6f 6d 70 75 74 65 72 20  parate computer 
2a8d0 70 72 6f 67 72 61 6d 2e 20 20 54 68 65 0a 2a 2a  program.  The.**
2a8e0 20 6f 72 69 67 69 6e 61 6c 20 53 51 4c 20 74 65   original SQL te
2a8f0 78 74 20 69 73 20 73 6f 75 72 63 65 20 63 6f 64  xt is source cod
2a900 65 2e 20 20 41 20 70 72 65 70 61 72 65 64 20 73  e.  A prepared s
2a910 74 61 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74 20  tatement object 
2a920 0a 2a 2a 20 69 73 20 74 68 65 20 63 6f 6d 70 69  .** is the compi
2a930 6c 65 64 20 6f 62 6a 65 63 74 20 63 6f 64 65 2e  led object code.
2a940 20 20 41 6c 6c 20 53 51 4c 20 6d 75 73 74 20 62    All SQL must b
2a950 65 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f  e converted into
2a960 20 61 0a 2a 2a 20 70 72 65 70 61 72 65 64 20 73   a.** prepared s
2a970 74 61 74 65 6d 65 6e 74 20 62 65 66 6f 72 65 20  tatement before 
2a980 69 74 20 63 61 6e 20 62 65 20 72 75 6e 2e 0a 2a  it can be run..*
2a990 2a 0a 2a 2a 20 54 68 65 20 6c 69 66 65 2d 63 79  *.** The life-cy
2a9a0 63 6c 65 20 6f 66 20 61 20 70 72 65 70 61 72 65  cle of a prepare
2a9b0 64 20 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a 65  d statement obje
2a9c0 63 74 20 75 73 75 61 6c 6c 79 20 67 6f 65 73 20  ct usually goes 
2a9d0 6c 69 6b 65 20 74 68 69 73 3a 0a 2a 2a 0a 2a 2a  like this:.**.**
2a9e0 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 43 72   <ol>.** <li> Cr
2a9f0 65 61 74 65 20 74 68 65 20 70 72 65 70 61 72 65  eate the prepare
2aa00 64 20 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a 65  d statement obje
2aa10 63 74 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  ct using [sqlite
2aa20 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2e  3_prepare_v2()].
2aa30 0a 2a 2a 20 3c 6c 69 3e 20 42 69 6e 64 20 76 61  .** <li> Bind va
2aa40 6c 75 65 73 20 74 6f 20 5b 70 61 72 61 6d 65 74  lues to [paramet
2aa50 65 72 73 5d 20 75 73 69 6e 67 20 74 68 65 20 73  ers] using the s
2aa60 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29 0a  qlite3_bind_*().
2aa70 2a 2a 20 20 20 20 20 20 69 6e 74 65 72 66 61 63  **      interfac
2aa80 65 73 2e 0a 2a 2a 20 3c 6c 69 3e 20 52 75 6e 20  es..** <li> Run 
2aa90 74 68 65 20 53 51 4c 20 62 79 20 63 61 6c 6c 69  the SQL by calli
2aaa0 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  ng [sqlite3_step
2aab0 28 29 5d 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  ()] one or more 
2aac0 74 69 6d 65 73 2e 0a 2a 2a 20 3c 6c 69 3e 20 52  times..** <li> R
2aad0 65 73 65 74 20 74 68 65 20 70 72 65 70 61 72 65  eset the prepare
2aae0 64 20 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e  d statement usin
2aaf0 67 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74  g [sqlite3_reset
2ab00 28 29 5d 20 74 68 65 6e 20 67 6f 20 62 61 63 6b  ()] then go back
2ab10 0a 2a 2a 20 20 20 20 20 20 74 6f 20 73 74 65 70  .**      to step
2ab20 20 32 2e 20 20 44 6f 20 74 68 69 73 20 7a 65 72   2.  Do this zer
2ab30 6f 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73 2e  o or more times.
2ab40 0a 2a 2a 20 3c 6c 69 3e 20 44 65 73 74 72 6f 79  .** <li> Destroy
2ab50 20 74 68 65 20 6f 62 6a 65 63 74 20 75 73 69 6e   the object usin
2ab60 67 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  g [sqlite3_final
2ab70 69 7a 65 28 29 5d 2e 0a 2a 2a 20 3c 2f 6f 6c 3e  ize()]..** </ol>
2ab80 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75  .*/.typedef stru
2ab90 63 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  ct sqlite3_stmt 
2aba0 73 71 6c 69 74 65 33 5f 73 74 6d 74 3b 0a 0a 2f  sqlite3_stmt;../
2abb0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52  *.** CAPI3REF: R
2abc0 75 6e 2d 74 69 6d 65 20 4c 69 6d 69 74 73 0a 2a  un-time Limits.*
2abd0 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
2abe0 33 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 69 73 20 69  3.**.** ^(This i
2abf0 6e 74 65 72 66 61 63 65 20 61 6c 6c 6f 77 73 20  nterface allows 
2ac00 74 68 65 20 73 69 7a 65 20 6f 66 20 76 61 72 69  the size of vari
2ac10 6f 75 73 20 63 6f 6e 73 74 72 75 63 74 73 20 74  ous constructs t
2ac20 6f 20 62 65 20 6c 69 6d 69 74 65 64 0a 2a 2a 20  o be limited.** 
2ac30 6f 6e 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  on a connection 
2ac40 62 79 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 61  by connection ba
2ac50 73 69 73 2e 20 20 54 68 65 20 66 69 72 73 74 20  sis.  The first 
2ac60 70 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65  parameter is the
2ac70 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f  .** [database co
2ac80 6e 6e 65 63 74 69 6f 6e 5d 20 77 68 6f 73 65 20  nnection] whose 
2ac90 6c 69 6d 69 74 20 69 73 20 74 6f 20 62 65 20 73  limit is to be s
2aca0 65 74 20 6f 72 20 71 75 65 72 69 65 64 2e 20 20  et or queried.  
2acb0 54 68 65 0a 2a 2a 20 73 65 63 6f 6e 64 20 70 61  The.** second pa
2acc0 72 61 6d 65 74 65 72 20 69 73 20 6f 6e 65 20 6f  rameter is one o
2acd0 66 20 74 68 65 20 5b 6c 69 6d 69 74 20 63 61 74  f the [limit cat
2ace0 65 67 6f 72 69 65 73 5d 20 74 68 61 74 20 64 65  egories] that de
2acf0 66 69 6e 65 20 61 0a 2a 2a 20 63 6c 61 73 73 20  fine a.** class 
2ad00 6f 66 20 63 6f 6e 73 74 72 75 63 74 73 20 74 6f  of constructs to
2ad10 20 62 65 20 73 69 7a 65 20 6c 69 6d 69 74 65 64   be size limited
2ad20 2e 20 20 54 68 65 20 74 68 69 72 64 20 70 61 72  .  The third par
2ad30 61 6d 65 74 65 72 20 69 73 20 74 68 65 0a 2a 2a  ameter is the.**
2ad40 20 6e 65 77 20 6c 69 6d 69 74 20 66 6f 72 20 74   new limit for t
2ad50 68 61 74 20 63 6f 6e 73 74 72 75 63 74 2e 29 5e  hat construct.)^
2ad60 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6e  .**.** ^If the n
2ad70 65 77 20 6c 69 6d 69 74 20 69 73 20 61 20 6e 65  ew limit is a ne
2ad80 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2c 20 74  gative number, t
2ad90 68 65 20 6c 69 6d 69 74 20 69 73 20 75 6e 63 68  he limit is unch
2ada0 61 6e 67 65 64 2e 0a 2a 2a 20 5e 28 46 6f 72 20  anged..** ^(For 
2adb0 65 61 63 68 20 6c 69 6d 69 74 20 63 61 74 65 67  each limit categ
2adc0 6f 72 79 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54  ory SQLITE_LIMIT
2add0 5f 3c 69 3e 4e 41 4d 45 3c 2f 69 3e 20 74 68 65  _<i>NAME</i> the
2ade0 72 65 20 69 73 20 61 20 0a 2a 2a 20 5b 6c 69 6d  re is a .** [lim
2adf0 69 74 73 20 7c 20 68 61 72 64 20 75 70 70 65 72  its | hard upper
2ae00 20 62 6f 75 6e 64 5d 0a 2a 2a 20 73 65 74 20 61   bound].** set a
2ae10 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 62  t compile-time b
2ae20 79 20 61 20 43 20 70 72 65 70 72 6f 63 65 73 73  y a C preprocess
2ae30 6f 72 20 6d 61 63 72 6f 20 63 61 6c 6c 65 64 0a  or macro called.
2ae40 2a 2a 20 5b 6c 69 6d 69 74 73 20 7c 20 53 51 4c  ** [limits | SQL
2ae50 49 54 45 5f 4d 41 58 5f 3c 69 3e 4e 41 4d 45 3c  ITE_MAX_<i>NAME<
2ae60 2f 69 3e 5d 2e 0a 2a 2a 20 28 54 68 65 20 22 5f  /i>]..** (The "_
2ae70 4c 49 4d 49 54 5f 22 20 69 6e 20 74 68 65 20 6e  LIMIT_" in the n
2ae80 61 6d 65 20 69 73 20 63 68 61 6e 67 65 64 20 74  ame is changed t
2ae90 6f 20 22 5f 4d 41 58 5f 22 2e 29 29 5e 0a 2a 2a  o "_MAX_".))^.**
2aea0 20 5e 41 74 74 65 6d 70 74 73 20 74 6f 20 69 6e   ^Attempts to in
2aeb0 63 72 65 61 73 65 20 61 20 6c 69 6d 69 74 20 61  crease a limit a
2aec0 62 6f 76 65 20 69 74 73 20 68 61 72 64 20 75 70  bove its hard up
2aed0 70 65 72 20 62 6f 75 6e 64 20 61 72 65 0a 2a 2a  per bound are.**
2aee0 20 73 69 6c 65 6e 74 6c 79 20 74 72 75 6e 63 61   silently trunca
2aef0 74 65 64 20 74 6f 20 74 68 65 20 68 61 72 64 20  ted to the hard 
2af00 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 2a 2a 0a  upper bound..**.
2af10 2a 2a 20 5e 52 65 67 61 72 64 6c 65 73 73 20 6f  ** ^Regardless o
2af20 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  f whether or not
2af30 20 74 68 65 20 6c 69 6d 69 74 20 77 61 73 20 63   the limit was c
2af40 68 61 6e 67 65 64 2c 20 74 68 65 20 0a 2a 2a 20  hanged, the .** 
2af50 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29  [sqlite3_limit()
2af60 5d 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75  ] interface retu
2af70 72 6e 73 20 74 68 65 20 70 72 69 6f 72 20 76 61  rns the prior va
2af80 6c 75 65 20 6f 66 20 74 68 65 20 6c 69 6d 69 74  lue of the limit
2af90 2e 0a 2a 2a 20 5e 48 65 6e 63 65 2c 20 74 6f 20  ..** ^Hence, to 
2afa0 66 69 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74  find the current
2afb0 20 76 61 6c 75 65 20 6f 66 20 61 20 6c 69 6d 69   value of a limi
2afc0 74 20 77 69 74 68 6f 75 74 20 63 68 61 6e 67 69  t without changi
2afd0 6e 67 20 69 74 2c 0a 2a 2a 20 73 69 6d 70 6c 79  ng it,.** simply
2afe0 20 69 6e 76 6f 6b 65 20 74 68 69 73 20 69 6e 74   invoke this int
2aff0 65 72 66 61 63 65 20 77 69 74 68 20 74 68 65 20  erface with the 
2b000 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20  third parameter 
2b010 73 65 74 20 74 6f 20 2d 31 2e 0a 2a 2a 0a 2a 2a  set to -1..**.**
2b020 20 52 75 6e 2d 74 69 6d 65 20 6c 69 6d 69 74 73   Run-time limits
2b030 20 61 72 65 20 69 6e 74 65 6e 64 65 64 20 66 6f   are intended fo
2b040 72 20 75 73 65 20 69 6e 20 61 70 70 6c 69 63 61  r use in applica
2b050 74 69 6f 6e 73 20 74 68 61 74 20 6d 61 6e 61 67  tions that manag
2b060 65 0a 2a 2a 20 62 6f 74 68 20 74 68 65 69 72 20  e.** both their 
2b070 6f 77 6e 20 69 6e 74 65 72 6e 61 6c 20 64 61 74  own internal dat
2b080 61 62 61 73 65 20 61 6e 64 20 61 6c 73 6f 20 64  abase and also d
2b090 61 74 61 62 61 73 65 73 20 74 68 61 74 20 61 72  atabases that ar
2b0a0 65 20 63 6f 6e 74 72 6f 6c 6c 65 64 0a 2a 2a 20  e controlled.** 
2b0b0 62 79 20 75 6e 74 72 75 73 74 65 64 20 65 78 74  by untrusted ext
2b0c0 65 72 6e 61 6c 20 73 6f 75 72 63 65 73 2e 20 20  ernal sources.  
2b0d0 41 6e 20 65 78 61 6d 70 6c 65 20 61 70 70 6c 69  An example appli
2b0e0 63 61 74 69 6f 6e 20 6d 69 67 68 74 20 62 65 20  cation might be 
2b0f0 61 0a 2a 2a 20 77 65 62 20 62 72 6f 77 73 65 72  a.** web browser
2b100 20 74 68 61 74 20 68 61 73 20 69 74 73 20 6f 77   that has its ow
2b110 6e 20 64 61 74 61 62 61 73 65 73 20 66 6f 72 20  n databases for 
2b120 73 74 6f 72 69 6e 67 20 68 69 73 74 6f 72 79 20  storing history 
2b130 61 6e 64 0a 2a 2a 20 73 65 70 61 72 61 74 65 20  and.** separate 
2b140 64 61 74 61 62 61 73 65 73 20 63 6f 6e 74 72 6f  databases contro
2b150 6c 6c 65 64 20 62 79 20 4a 61 76 61 53 63 72 69  lled by JavaScri
2b160 70 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  pt applications 
2b170 64 6f 77 6e 6c 6f 61 64 65 64 0a 2a 2a 20 6f 66  downloaded.** of
2b180 66 20 74 68 65 20 49 6e 74 65 72 6e 65 74 2e 20  f the Internet. 
2b190 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20 64 61   The internal da
2b1a0 74 61 62 61 73 65 73 20 63 61 6e 20 62 65 20 67  tabases can be g
2b1b0 69 76 65 6e 20 74 68 65 0a 2a 2a 20 6c 61 72 67  iven the.** larg
2b1c0 65 2c 20 64 65 66 61 75 6c 74 20 6c 69 6d 69 74  e, default limit
2b1d0 73 2e 20 20 44 61 74 61 62 61 73 65 73 20 6d 61  s.  Databases ma
2b1e0 6e 61 67 65 64 20 62 79 20 65 78 74 65 72 6e 61  naged by externa
2b1f0 6c 20 73 6f 75 72 63 65 73 20 63 61 6e 0a 2a 2a  l sources can.**
2b200 20 62 65 20 67 69 76 65 6e 20 6d 75 63 68 20 73   be given much s
2b210 6d 61 6c 6c 65 72 20 6c 69 6d 69 74 73 20 64 65  maller limits de
2b220 73 69 67 6e 65 64 20 74 6f 20 70 72 65 76 65 6e  signed to preven
2b230 74 20 61 20 64 65 6e 69 61 6c 20 6f 66 20 73 65  t a denial of se
2b240 72 76 69 63 65 0a 2a 2a 20 61 74 74 61 63 6b 2e  rvice.** attack.
2b250 20 20 44 65 76 65 6c 6f 70 65 72 73 20 6d 69 67    Developers mig
2b260 68 74 20 61 6c 73 6f 20 77 61 6e 74 20 74 6f 20  ht also want to 
2b270 75 73 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33  use the [sqlite3
2b280 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28  _set_authorizer(
2b290 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20  )].** interface 
2b2a0 74 6f 20 66 75 72 74 68 65 72 20 63 6f 6e 74 72  to further contr
2b2b0 6f 6c 20 75 6e 74 72 75 73 74 65 64 20 53 51 4c  ol untrusted SQL
2b2c0 2e 20 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74  .  The size of t
2b2d0 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63  he database.** c
2b2e0 72 65 61 74 65 64 20 62 79 20 61 6e 20 75 6e 74  reated by an unt
2b2f0 72 75 73 74 65 64 20 73 63 72 69 70 74 20 63 61  rusted script ca
2b300 6e 20 62 65 20 63 6f 6e 74 61 69 6e 65 64 20 75  n be contained u
2b310 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 6d 61 78  sing the.** [max
2b320 5f 70 61 67 65 5f 63 6f 75 6e 74 5d 20 5b 50 52  _page_count] [PR
2b330 41 47 4d 41 5d 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77  AGMA]..**.** New
2b340 20 72 75 6e 2d 74 69 6d 65 20 6c 69 6d 69 74 20   run-time limit 
2b350 63 61 74 65 67 6f 72 69 65 73 20 6d 61 79 20 62  categories may b
2b360 65 20 61 64 64 65 64 20 69 6e 20 66 75 74 75 72  e added in futur
2b370 65 20 72 65 6c 65 61 73 65 73 2e 0a 2a 2f 0a 69  e releases..*/.i
2b380 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74  nt sqlite3_limit
2b390 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20 69  (sqlite3*, int i
2b3a0 64 2c 20 69 6e 74 20 6e 65 77 56 61 6c 29 3b 0a  d, int newVal);.
2b3b0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
2b3c0 20 52 75 6e 2d 54 69 6d 65 20 4c 69 6d 69 74 20   Run-Time Limit 
2b3d0 43 61 74 65 67 6f 72 69 65 73 0a 2a 2a 20 4b 45  Categories.** KE
2b3e0 59 57 4f 52 44 53 3a 20 7b 6c 69 6d 69 74 20 63  YWORDS: {limit c
2b3f0 61 74 65 67 6f 72 79 7d 20 7b 2a 6c 69 6d 69 74  ategory} {*limit
2b400 20 63 61 74 65 67 6f 72 69 65 73 7d 0a 2a 2a 0a   categories}.**.
2b410 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e  ** These constan
2b420 74 73 20 64 65 66 69 6e 65 20 76 61 72 69 6f 75  ts define variou
2b430 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6c 69  s performance li
2b440 6d 69 74 73 0a 2a 2a 20 74 68 61 74 20 63 61 6e  mits.** that can
2b450 20 62 65 20 6c 6f 77 65 72 65 64 20 61 74 20 72   be lowered at r
2b460 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 5b 73  un-time using [s
2b470 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 2e  qlite3_limit()].
2b480 0a 2a 2a 20 54 68 65 20 73 79 6e 6f 70 73 69 73  .** The synopsis
2b490 20 6f 66 20 74 68 65 20 6d 65 61 6e 69 6e 67 73   of the meanings
2b4a0 20 6f 66 20 74 68 65 20 76 61 72 69 6f 75 73 20   of the various 
2b4b0 6c 69 6d 69 74 73 20 69 73 20 73 68 6f 77 6e 20  limits is shown 
2b4c0 62 65 6c 6f 77 2e 0a 2a 2a 20 41 64 64 69 74 69  below..** Additi
2b4d0 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
2b4e0 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 61 74   is available at
2b4f0 20 5b 6c 69 6d 69 74 73 20 7c 20 4c 69 6d 69 74   [limits | Limit
2b500 73 20 69 6e 20 53 51 4c 69 74 65 5d 2e 0a 2a 2a  s in SQLite]..**
2b510 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51  .** <dl>.** [[SQ
2b520 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54  LITE_LIMIT_LENGT
2b530 48 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45  H]] ^(<dt>SQLITE
2b540 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 3c 2f 64  _LIMIT_LENGTH</d
2b550 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61  t>.** <dd>The ma
2b560 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66 20 61 6e  ximum size of an
2b570 79 20 73 74 72 69 6e 67 20 6f 72 20 42 4c 4f 42  y string or BLOB
2b580 20 6f 72 20 74 61 62 6c 65 20 72 6f 77 2c 20 69   or table row, i
2b590 6e 20 62 79 74 65 73 2e 3c 64 64 3e 29 5e 0a 2a  n bytes.<dd>)^.*
2b5a0 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  *.** [[SQLITE_LI
2b5b0 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 5d  MIT_SQL_LENGTH]]
2b5c0 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
2b5d0 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48 3c 2f  MIT_SQL_LENGTH</
2b5e0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
2b5f0 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66  aximum length of
2b600 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   an SQL statemen
2b610 74 2c 20 69 6e 20 62 79 74 65 73 2e 3c 2f 64 64  t, in bytes.</dd
2b620 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  >)^.**.** [[SQLI
2b630 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e 5d  TE_LIMIT_COLUMN]
2b640 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c  ] ^(<dt>SQLITE_L
2b650 49 4d 49 54 5f 43 4f 4c 55 4d 4e 3c 2f 64 74 3e  IMIT_COLUMN</dt>
2b660 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
2b670 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  mum number of co
2b680 6c 75 6d 6e 73 20 69 6e 20 61 20 74 61 62 6c 65  lumns in a table
2b690 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 72 20 69   definition or i
2b6a0 6e 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c 74 20  n the.** result 
2b6b0 73 65 74 20 6f 66 20 61 20 5b 53 45 4c 45 43 54  set of a [SELECT
2b6c0 5d 20 6f 72 20 74 68 65 20 6d 61 78 69 6d 75 6d  ] or the maximum
2b6d0 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
2b6e0 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65 78 0a 2a  ns in an index.*
2b6f0 2a 20 6f 72 20 69 6e 20 61 6e 20 4f 52 44 45 52  * or in an ORDER
2b700 20 42 59 20 6f 72 20 47 52 4f 55 50 20 42 59 20   BY or GROUP BY 
2b710 63 6c 61 75 73 65 2e 3c 2f 64 64 3e 29 5e 0a 2a  clause.</dd>)^.*
2b720 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  *.** [[SQLITE_LI
2b730 4d 49 54 5f 45 58 50 52 5f 44 45 50 54 48 5d 5d  MIT_EXPR_DEPTH]]
2b740 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
2b750 4d 49 54 5f 45 58 50 52 5f 44 45 50 54 48 3c 2f  MIT_EXPR_DEPTH</
2b760 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
2b770 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66 20  aximum depth of 
2b780 74 68 65 20 70 61 72 73 65 20 74 72 65 65 20 6f  the parse tree o
2b790 6e 20 61 6e 79 20 65 78 70 72 65 73 73 69 6f 6e  n any expression
2b7a0 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b  .</dd>)^.**.** [
2b7b0 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f  [SQLITE_LIMIT_CO
2b7c0 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d 5d 20  MPOUND_SELECT]] 
2b7d0 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d  ^(<dt>SQLITE_LIM
2b7e0 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45  IT_COMPOUND_SELE
2b7f0 43 54 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  CT</dt>.** <dd>T
2b800 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
2b810 72 20 6f 66 20 74 65 72 6d 73 20 69 6e 20 61 20  r of terms in a 
2b820 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20  compound SELECT 
2b830 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 64 64 3e 29  statement.</dd>)
2b840 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ^.**.** [[SQLITE
2b850 5f 4c 49 4d 49 54 5f 56 44 42 45 5f 4f 50 5d 5d  _LIMIT_VDBE_OP]]
2b860 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
2b870 4d 49 54 5f 56 44 42 45 5f 4f 50 3c 2f 64 74 3e  MIT_VDBE_OP</dt>
2b880 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
2b890 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e  mum number of in
2b8a0 73 74 72 75 63 74 69 6f 6e 73 20 69 6e 20 61 20  structions in a 
2b8b0 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20  virtual machine 
2b8c0 70 72 6f 67 72 61 6d 0a 2a 2a 20 75 73 65 64 20  program.** used 
2b8d0 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 6e 20  to implement an 
2b8e0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  SQL statement.  
2b8f0 49 66 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  If [sqlite3_prep
2b900 61 72 65 5f 76 32 28 29 5d 20 6f 72 0a 2a 2a 20  are_v2()] or.** 
2b910 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74 20 74  the equivalent t
2b920 72 69 65 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65  ries to allocate
2b930 20 73 70 61 63 65 20 66 6f 72 20 6d 6f 72 65 20   space for more 
2b940 74 68 61 6e 20 74 68 69 73 20 6d 61 6e 79 20 6f  than this many o
2b950 70 63 6f 64 65 73 0a 2a 2a 20 69 6e 20 61 20 73  pcodes.** in a s
2b960 69 6e 67 6c 65 20 70 72 65 70 61 72 65 64 20 73  ingle prepared s
2b970 74 61 74 65 6d 65 6e 74 2c 20 61 6e 20 53 51 4c  tatement, an SQL
2b980 49 54 45 5f 4e 4f 4d 45 4d 20 65 72 72 6f 72 20  ITE_NOMEM error 
2b990 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 64 64  is returned.</dd
2b9a0 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  >)^.**.** [[SQLI
2b9b0 54 45 5f 4c 49 4d 49 54 5f 46 55 4e 43 54 49 4f  TE_LIMIT_FUNCTIO
2b9c0 4e 5f 41 52 47 5d 5d 20 5e 28 3c 64 74 3e 53 51  N_ARG]] ^(<dt>SQ
2b9d0 4c 49 54 45 5f 4c 49 4d 49 54 5f 46 55 4e 43 54  LITE_LIMIT_FUNCT
2b9e0 49 4f 4e 5f 41 52 47 3c 2f 64 74 3e 0a 2a 2a 20  ION_ARG</dt>.** 
2b9f0 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
2ba00 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
2ba10 6e 74 73 20 6f 6e 20 61 20 66 75 6e 63 74 69 6f  nts on a functio
2ba20 6e 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20  n.</dd>)^.**.** 
2ba30 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 41  [[SQLITE_LIMIT_A
2ba40 54 54 41 43 48 45 44 5d 5d 20 5e 28 3c 64 74 3e  TTACHED]] ^(<dt>
2ba50 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 41 54 54  SQLITE_LIMIT_ATT
2ba60 41 43 48 45 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  ACHED</dt>.** <d
2ba70 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75  d>The maximum nu
2ba80 6d 62 65 72 20 6f 66 20 5b 41 54 54 41 43 48 20  mber of [ATTACH 
2ba90 7c 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  | attached datab
2baa0 61 73 65 73 5d 2e 29 5e 3c 2f 64 64 3e 0a 2a 2a  ases].)^</dd>.**
2bab0 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d  .** [[SQLITE_LIM
2bac0 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f  IT_LIKE_PATTERN_
2bad0 4c 45 4e 47 54 48 5d 5d 0a 2a 2a 20 5e 28 3c 64  LENGTH]].** ^(<d
2bae0 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c  t>SQLITE_LIMIT_L
2baf0 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47  IKE_PATTERN_LENG
2bb00 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  TH</dt>.** <dd>T
2bb10 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74  he maximum lengt
2bb20 68 20 6f 66 20 74 68 65 20 70 61 74 74 65 72 6e  h of the pattern
2bb30 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65   argument to the
2bb40 20 5b 4c 49 4b 45 5d 20 6f 72 0a 2a 2a 20 5b 47   [LIKE] or.** [G
2bb50 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 73 2e 3c  LOB] operators.<
2bb60 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  /dd>)^.**.** [[S
2bb70 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49  QLITE_LIMIT_VARI
2bb80 41 42 4c 45 5f 4e 55 4d 42 45 52 5d 5d 0a 2a 2a  ABLE_NUMBER]].**
2bb90 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
2bba0 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d  MIT_VARIABLE_NUM
2bbb0 42 45 52 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  BER</dt>.** <dd>
2bbc0 54 68 65 20 6d 61 78 69 6d 75 6d 20 69 6e 64 65  The maximum inde
2bbd0 78 20 6e 75 6d 62 65 72 20 6f 66 20 61 6e 79 20  x number of any 
2bbe0 5b 70 61 72 61 6d 65 74 65 72 5d 20 69 6e 20 61  [parameter] in a
2bbf0 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  n SQL statement.
2bc00 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  )^.**.** [[SQLIT
2bc10 45 5f 4c 49 4d 49 54 5f 54 52 49 47 47 45 52 5f  E_LIMIT_TRIGGER_
2bc20 44 45 50 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51  DEPTH]] ^(<dt>SQ
2bc30 4c 49 54 45 5f 4c 49 4d 49 54 5f 54 52 49 47 47  LITE_LIMIT_TRIGG
2bc40 45 52 5f 44 45 50 54 48 3c 2f 64 74 3e 0a 2a 2a  ER_DEPTH</dt>.**
2bc50 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d   <dd>The maximum
2bc60 20 64 65 70 74 68 20 6f 66 20 72 65 63 75 72 73   depth of recurs
2bc70 69 6f 6e 20 66 6f 72 20 74 72 69 67 67 65 72 73  ion for triggers
2bc80 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b  .</dd>)^.**.** [
2bc90 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f  [SQLITE_LIMIT_WO
2bca0 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 5d 20 5e  RKER_THREADS]] ^
2bcb0 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49  (<dt>SQLITE_LIMI
2bcc0 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53  T_WORKER_THREADS
2bcd0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
2bce0 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
2bcf0 6f 66 20 61 75 78 69 6c 69 61 72 79 20 77 6f 72  of auxiliary wor
2bd00 6b 65 72 20 74 68 72 65 61 64 73 20 74 68 61 74  ker threads that
2bd10 20 61 20 73 69 6e 67 6c 65 0a 2a 2a 20 5b 70 72   a single.** [pr
2bd20 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
2bd30 5d 20 6d 61 79 20 73 74 61 72 74 2e 3c 2f 64 64  ] may start.</dd
2bd40 3e 29 5e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a  >)^.** </dl>.*/.
2bd50 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
2bd60 49 4d 49 54 5f 4c 45 4e 47 54 48 20 20 20 20 20  IMIT_LENGTH     
2bd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30                 0
2bd80 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2bd90 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48  LIMIT_SQL_LENGTH
2bda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bdb0 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
2bdc0 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e 20 20 20  _LIMIT_COLUMN   
2bdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bde0 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   2.#define SQLIT
2bdf0 45 5f 4c 49 4d 49 54 5f 45 58 50 52 5f 44 45 50  E_LIMIT_EXPR_DEP
2be00 54 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20  TH              
2be10 20 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    3.#define SQLI
2be20 54 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e  TE_LIMIT_COMPOUN
2be30 44 5f 53 45 4c 45 43 54 20 20 20 20 20 20 20 20  D_SELECT        
2be40 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53 51 4c     4.#define SQL
2be50 49 54 45 5f 4c 49 4d 49 54 5f 56 44 42 45 5f 4f  ITE_LIMIT_VDBE_O
2be60 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  P               
2be70 20 20 20 20 35 0a 23 64 65 66 69 6e 65 20 53 51      5.#define SQ
2be80 4c 49 54 45 5f 4c 49 4d 49 54 5f 46 55 4e 43 54  LITE_LIMIT_FUNCT
2be90 49 4f 4e 5f 41 52 47 20 20 20 20 20 20 20 20 20  ION_ARG         
2bea0 20 20 20 20 20 36 0a 23 64 65 66 69 6e 65 20 53       6.#define S
2beb0 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 41 54 54 41  QLITE_LIMIT_ATTA
2bec0 43 48 45 44 20 20 20 20 20 20 20 20 20 20 20 20  CHED            
2bed0 20 20 20 20 20 20 37 0a 23 64 65 66 69 6e 65 20        7.#define 
2bee0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b  SQLITE_LIMIT_LIK
2bef0 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48  E_PATTERN_LENGTH
2bf00 20 20 20 20 20 20 20 38 0a 23 64 65 66 69 6e 65         8.#define
2bf10 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41   SQLITE_LIMIT_VA
2bf20 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 20 20 20  RIABLE_NUMBER   
2bf30 20 20 20 20 20 20 20 20 39 0a 23 64 65 66 69 6e          9.#defin
2bf40 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 54  e SQLITE_LIMIT_T
2bf50 52 49 47 47 45 52 5f 44 45 50 54 48 20 20 20 20  RIGGER_DEPTH    
2bf60 20 20 20 20 20 20 20 20 31 30 0a 23 64 65 66 69          10.#defi
2bf70 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  ne SQLITE_LIMIT_
2bf80 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 20 20  WORKER_THREADS  
2bf90 20 20 20 20 20 20 20 20 20 31 31 0a 0a 2f 2a 0a           11../*.
2bfa0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 50 72 65  ** CAPI3REF: Pre
2bfb0 70 61 72 65 20 46 6c 61 67 73 0a 2a 2a 0a 2a 2a  pare Flags.**.**
2bfc0 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e 74 73   These constants
2bfd0 20 64 65 66 69 6e 65 20 76 61 72 69 6f 75 73 20   define various 
2bfe0 66 6c 61 67 73 20 74 68 61 74 20 63 61 6e 20 62  flags that can b
2bff0 65 20 70 61 73 73 65 64 20 69 6e 74 6f 0a 2a 2a  e passed into.**
2c000 20 22 70 72 65 70 46 6c 61 67 73 22 20 70 61 72   "prepFlags" par
2c010 61 6d 65 74 65 72 20 6f 66 20 74 68 65 20 5b 73  ameter of the [s
2c020 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
2c030 33 28 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c  3()] and.** [sql
2c040 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
2c050 33 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e  3()] interfaces.
2c060 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 66 6c 61 67 73  .**.** New flags
2c070 20 6d 61 79 20 62 65 20 61 64 64 65 64 20 69 6e   may be added in
2c080 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   future releases
2c090 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a   of SQLite..**.*
2c0a0 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49  * <dl>.** [[SQLI
2c0b0 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52 53 49  TE_PREPARE_PERSI
2c0c0 53 54 45 4e 54 5d 5d 20 5e 28 3c 64 74 3e 53 51  STENT]] ^(<dt>SQ
2c0d0 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52  LITE_PREPARE_PER
2c0e0 53 49 53 54 45 4e 54 3c 2f 64 74 3e 0a 2a 2a 20  SISTENT</dt>.** 
2c0f0 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 50  <dd>The SQLITE_P
2c100 52 45 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e  REPARE_PERSISTEN
2c110 54 20 66 6c 61 67 20 69 73 20 61 20 68 69 6e 74  T flag is a hint
2c120 20 74 6f 20 74 68 65 20 71 75 65 72 79 20 70 6c   to the query pl
2c130 61 6e 6e 65 72 0a 2a 2a 20 74 68 61 74 20 74 68  anner.** that th
2c140 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  e prepared state
2c150 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 72 65 74  ment will be ret
2c160 61 69 6e 65 64 20 66 6f 72 20 61 20 6c 6f 6e 67  ained for a long
2c170 20 74 69 6d 65 20 61 6e 64 0a 2a 2a 20 70 72 6f   time and.** pro
2c180 62 61 62 6c 79 20 72 65 75 73 65 64 20 6d 61 6e  bably reused man
2c190 79 20 74 69 6d 65 73 2e 29 5e 20 5e 57 69 74 68  y times.)^ ^With
2c1a0 6f 75 74 20 74 68 69 73 20 66 6c 61 67 2c 20 5b  out this flag, [
2c1b0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
2c1c0 76 33 28 29 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71  v3()].** and [sq
2c1d0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f  lite3_prepare16_
2c1e0 76 33 28 29 5d 20 61 73 73 75 6d 65 20 74 68 61  v3()] assume tha
2c1f0 74 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73  t the prepared s
2c200 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 0a 2a  tatement will .*
2c210 2a 20 62 65 20 75 73 65 64 20 6a 75 73 74 20 6f  * be used just o
2c220 6e 63 65 20 6f 72 20 61 74 20 6d 6f 73 74 20 61  nce or at most a
2c230 20 66 65 77 20 74 69 6d 65 73 20 61 6e 64 20 74   few times and t
2c240 68 65 6e 20 64 65 73 74 72 6f 79 65 64 20 75 73  hen destroyed us
2c250 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  ing.** [sqlite3_
2c260 66 69 6e 61 6c 69 7a 65 28 29 5d 20 72 65 6c 61  finalize()] rela
2c270 74 69 76 65 6c 79 20 73 6f 6f 6e 2e 20 54 68 65  tively soon. The
2c280 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65   current impleme
2c290 6e 74 61 74 69 6f 6e 20 61 63 74 73 0a 2a 2a 20  ntation acts.** 
2c2a0 6f 6e 20 74 68 69 73 20 68 69 6e 74 20 62 79 20  on this hint by 
2c2b0 61 76 6f 69 64 69 6e 67 20 74 68 65 20 75 73 65  avoiding the use
2c2c0 20 6f 66 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d   of [lookaside m
2c2d0 65 6d 6f 72 79 5d 20 73 6f 20 61 73 20 6e 6f 74  emory] so as not
2c2e0 20 74 6f 0a 2a 2a 20 64 65 70 6c 65 74 65 20 74   to.** deplete t
2c2f0 68 65 20 6c 69 6d 69 74 65 64 20 73 74 6f 72 65  he limited store
2c300 20 6f 66 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65   of lookaside me
2c310 6d 6f 72 79 2e 20 46 75 74 75 72 65 20 76 65 72  mory. Future ver
2c320 73 69 6f 6e 73 20 6f 66 0a 2a 2a 20 53 51 4c 69  sions of.** SQLi
2c330 74 65 20 6d 61 79 20 61 63 74 20 6f 6e 20 74 68  te may act on th
2c340 69 73 20 68 69 6e 74 20 64 69 66 66 65 72 65 6e  is hint differen
2c350 74 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  tly..**.** [[SQL
2c360 49 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f 52 4d  ITE_PREPARE_NORM
2c370 41 4c 49 5a 45 5d 5d 20 5e 28 3c 64 74 3e 53 51  ALIZE]] ^(<dt>SQ
2c380 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f 52  LITE_PREPARE_NOR
2c390 4d 41 4c 49 5a 45 3c 2f 64 74 3e 0a 2a 2a 20 3c  MALIZE</dt>.** <
2c3a0 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 50 52  dd>The SQLITE_PR
2c3b0 45 50 41 52 45 5f 4e 4f 52 4d 41 4c 49 5a 45 20  EPARE_NORMALIZE 
2c3c0 66 6c 61 67 20 69 6e 64 69 63 61 74 65 73 20 74  flag indicates t
2c3d0 68 61 74 20 61 20 6e 6f 72 6d 61 6c 69 7a 65 64  hat a normalized
2c3e0 0a 2a 2a 20 72 65 70 72 65 73 65 6e 74 61 74 69  .** representati
2c3f0 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 20 73 74  on of the SQL st
2c400 61 74 65 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62  atement should b
2c410 65 20 63 61 6c 63 75 6c 61 74 65 64 20 61 6e 64  e calculated and
2c420 20 74 68 65 6e 0a 2a 2a 20 61 73 73 6f 63 69 61   then.** associa
2c430 74 65 64 20 77 69 74 68 20 74 68 65 20 70 72 65  ted with the pre
2c440 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2c  pared statement,
2c450 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 6f 62   which can be ob
2c460 74 61 69 6e 65 64 20 76 69 61 0a 2a 2a 20 74 68  tained via.** th
2c470 65 20 5b 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61  e [sqlite3_norma
2c480 6c 69 7a 65 64 5f 73 71 6c 28 29 5d 20 69 6e 74  lized_sql()] int
2c490 65 72 66 61 63 65 2e 20 20 54 68 65 20 73 65 6d  erface.  The sem
2c4a0 61 6e 74 69 63 73 20 75 73 65 64 20 74 6f 0a 2a  antics used to.*
2c4b0 2a 20 6e 6f 72 6d 61 6c 69 7a 65 20 61 20 53 51  * normalize a SQ
2c4c0 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 72 65 20  L statement are 
2c4d0 75 6e 73 70 65 63 69 66 69 65 64 20 61 6e 64 20  unspecified and 
2c4e0 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67  subject to chang
2c4f0 65 2e 0a 2a 2a 20 41 74 20 61 20 6d 69 6e 69 6d  e..** At a minim
2c500 75 6d 2c 20 6c 69 74 65 72 61 6c 20 76 61 6c 75  um, literal valu
2c510 65 73 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61  es will be repla
2c520 63 65 64 20 77 69 74 68 20 73 75 69 74 61 62 6c  ced with suitabl
2c530 65 0a 2a 2a 20 70 6c 61 63 65 68 6f 6c 64 65 72  e.** placeholder
2c540 73 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23  s..** </dl>.*/.#
2c550 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52  define SQLITE_PR
2c560 45 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54  EPARE_PERSISTENT
2c570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78                0x
2c580 30 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  01.#define SQLIT
2c590 45 5f 50 52 45 50 41 52 45 5f 4e 4f 52 4d 41 4c  E_PREPARE_NORMAL
2c5a0 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 20 20  IZE             
2c5b0 20 20 30 78 30 32 0a 0a 2f 2a 0a 2a 2a 20 43 41    0x02../*.** CA
2c5c0 50 49 33 52 45 46 3a 20 43 6f 6d 70 69 6c 69 6e  PI3REF: Compilin
2c5d0 67 20 41 6e 20 53 51 4c 20 53 74 61 74 65 6d 65  g An SQL Stateme
2c5e0 6e 74 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  nt.** KEYWORDS: 
2c5f0 7b 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 63  {SQL statement c
2c600 6f 6d 70 69 6c 65 72 7d 0a 2a 2a 20 4d 45 54 48  ompiler}.** METH
2c610 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 20 43  OD: sqlite3.** C
2c620 4f 4e 53 54 52 55 43 54 4f 52 3a 20 73 71 6c 69  ONSTRUCTOR: sqli
2c630 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 54  te3_stmt.**.** T
2c640 6f 20 65 78 65 63 75 74 65 20 61 6e 20 53 51 4c  o execute an SQL
2c650 20 73 74 61 74 65 6d 65 6e 74 2c 20 69 74 20 6d   statement, it m
2c660 75 73 74 20 66 69 72 73 74 20 62 65 20 63 6f 6d  ust first be com
2c670 70 69 6c 65 64 20 69 6e 74 6f 20 61 20 62 79 74  piled into a byt
2c680 65 2d 63 6f 64 65 0a 2a 2a 20 70 72 6f 67 72 61  e-code.** progra
2c690 6d 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74  m using one of t
2c6a0 68 65 73 65 20 72 6f 75 74 69 6e 65 73 2e 20 20  hese routines.  
2c6b0 4f 72 2c 20 69 6e 20 6f 74 68 65 72 20 77 6f 72  Or, in other wor
2c6c0 64 73 2c 20 74 68 65 73 65 20 72 6f 75 74 69 6e  ds, these routin
2c6d0 65 73 0a 2a 2a 20 61 72 65 20 63 6f 6e 73 74 72  es.** are constr
2c6e0 75 63 74 6f 72 73 20 66 6f 72 20 74 68 65 20 5b  uctors for the [
2c6f0 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
2c700 6e 74 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a  nt] object..**.*
2c710 2a 20 54 68 65 20 70 72 65 66 65 72 72 65 64 20  * The preferred 
2c720 72 6f 75 74 69 6e 65 20 74 6f 20 75 73 65 20 69  routine to use i
2c730 73 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  s [sqlite3_prepa
2c740 72 65 5f 76 32 28 29 5d 2e 20 20 54 68 65 0a 2a  re_v2()].  The.*
2c750 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
2c760 72 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  re()] interface 
2c770 69 73 20 6c 65 67 61 63 79 20 61 6e 64 20 73 68  is legacy and sh
2c780 6f 75 6c 64 20 62 65 20 61 76 6f 69 64 65 64 2e  ould be avoided.
2c790 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  .** [sqlite3_pre
2c7a0 70 61 72 65 5f 76 33 28 29 5d 20 68 61 73 20 61  pare_v3()] has a
2c7b0 6e 20 65 78 74 72 61 20 22 70 72 65 70 46 6c 61  n extra "prepFla
2c7c0 67 73 22 20 6f 70 74 69 6f 6e 20 74 68 61 74 20  gs" option that 
2c7d0 69 73 20 75 73 65 64 0a 2a 2a 20 66 6f 72 20 73  is used.** for s
2c7e0 70 65 63 69 61 6c 20 70 75 72 70 6f 73 65 73 2e  pecial purposes.
2c7f0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 75 73 65 20 6f  .**.** The use o
2c800 66 20 74 68 65 20 55 54 46 2d 38 20 69 6e 74 65  f the UTF-8 inte
2c810 72 66 61 63 65 73 20 69 73 20 70 72 65 66 65 72  rfaces is prefer
2c820 72 65 64 2c 20 61 73 20 53 51 4c 69 74 65 20 63  red, as SQLite c
2c830 75 72 72 65 6e 74 6c 79 0a 2a 2a 20 64 6f 65 73  urrently.** does
2c840 20 61 6c 6c 20 70 61 72 73 69 6e 67 20 75 73 69   all parsing usi
2c850 6e 67 20 55 54 46 2d 38 2e 20 20 54 68 65 20 55  ng UTF-8.  The U
2c860 54 46 2d 31 36 20 69 6e 74 65 72 66 61 63 65 73  TF-16 interfaces
2c870 20 61 72 65 20 70 72 6f 76 69 64 65 64 0a 2a 2a   are provided.**
2c880 20 61 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63   as a convenienc
2c890 65 2e 20 20 54 68 65 20 55 54 46 2d 31 36 20 69  e.  The UTF-16 i
2c8a0 6e 74 65 72 66 61 63 65 73 20 77 6f 72 6b 20 62  nterfaces work b
2c8b0 79 20 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65  y converting the
2c8c0 0a 2a 2a 20 69 6e 70 75 74 20 74 65 78 74 20 69  .** input text i
2c8d0 6e 74 6f 20 55 54 46 2d 38 2c 20 74 68 65 6e 20  nto UTF-8, then 
2c8e0 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 63 6f 72  invoking the cor
2c8f0 72 65 73 70 6f 6e 64 69 6e 67 20 55 54 46 2d 38  responding UTF-8
2c900 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a   interface..**.*
2c910 2a 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75  * The first argu
2c920 6d 65 6e 74 2c 20 22 64 62 22 2c 20 69 73 20 61  ment, "db", is a
2c930 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
2c940 63 74 69 6f 6e 5d 20 6f 62 74 61 69 6e 65 64 20  ction] obtained 
2c950 66 72 6f 6d 20 61 0a 2a 2a 20 70 72 69 6f 72 20  from a.** prior 
2c960 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c 20  successful call 
2c970 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  to [sqlite3_open
2c980 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ()], [sqlite3_op
2c990 65 6e 5f 76 32 28 29 5d 20 6f 72 0a 2a 2a 20 5b  en_v2()] or.** [
2c9a0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29  sqlite3_open16()
2c9b0 5d 2e 20 20 54 68 65 20 64 61 74 61 62 61 73 65  ].  The database
2c9c0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 75 73 74   connection must
2c9d0 20 6e 6f 74 20 68 61 76 65 20 62 65 65 6e 20 63   not have been c
2c9e0 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  losed..**.** The
2c9f0 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
2ca00 2c 20 22 7a 53 71 6c 22 2c 20 69 73 20 74 68 65  , "zSql", is the
2ca10 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65   statement to be
2ca20 20 63 6f 6d 70 69 6c 65 64 2c 20 65 6e 63 6f 64   compiled, encod
2ca30 65 64 0a 2a 2a 20 61 73 20 65 69 74 68 65 72 20  ed.** as either 
2ca40 55 54 46 2d 38 20 6f 72 20 55 54 46 2d 31 36 2e  UTF-8 or UTF-16.
2ca50 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 70 72    The sqlite3_pr
2ca60 65 70 61 72 65 28 29 2c 20 73 71 6c 69 74 65 33  epare(), sqlite3
2ca70 5f 70 72 65 70 61 72 65 5f 76 32 28 29 2c 0a 2a  _prepare_v2(),.*
2ca80 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72  * and sqlite3_pr
2ca90 65 70 61 72 65 5f 76 33 28 29 0a 2a 2a 20 69 6e  epare_v3().** in
2caa0 74 65 72 66 61 63 65 73 20 75 73 65 20 55 54 46  terfaces use UTF
2cab0 2d 38 2c 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  -8, and sqlite3_
2cac0 70 72 65 70 61 72 65 31 36 28 29 2c 20 73 71 6c  prepare16(), sql
2cad0 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
2cae0 32 28 29 2c 0a 2a 2a 20 61 6e 64 20 73 71 6c 69  2(),.** and sqli
2caf0 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33  te3_prepare16_v3
2cb00 28 29 20 75 73 65 20 55 54 46 2d 31 36 2e 0a 2a  () use UTF-16..*
2cb10 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6e 42 79  *.** ^If the nBy
2cb20 74 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e  te argument is n
2cb30 65 67 61 74 69 76 65 2c 20 74 68 65 6e 20 7a 53  egative, then zS
2cb40 71 6c 20 69 73 20 72 65 61 64 20 75 70 20 74 6f  ql is read up to
2cb50 20 74 68 65 0a 2a 2a 20 66 69 72 73 74 20 7a 65   the.** first ze
2cb60 72 6f 20 74 65 72 6d 69 6e 61 74 6f 72 2e 20 5e  ro terminator. ^
2cb70 49 66 20 6e 42 79 74 65 20 69 73 20 70 6f 73 69  If nByte is posi
2cb80 74 69 76 65 2c 20 74 68 65 6e 20 69 74 20 69 73  tive, then it is
2cb90 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f   the.** number o
2cba0 66 20 62 79 74 65 73 20 72 65 61 64 20 66 72 6f  f bytes read fro
2cbb0 6d 20 7a 53 71 6c 2e 20 20 5e 49 66 20 6e 42 79  m zSql.  ^If nBy
2cbc0 74 65 20 69 73 20 7a 65 72 6f 2c 20 74 68 65 6e  te is zero, then
2cbd0 20 6e 6f 20 70 72 65 70 61 72 65 64 0a 2a 2a 20   no prepared.** 
2cbe0 73 74 61 74 65 6d 65 6e 74 20 69 73 20 67 65 6e  statement is gen
2cbf0 65 72 61 74 65 64 2e 0a 2a 2a 20 49 66 20 74 68  erated..** If th
2cc00 65 20 63 61 6c 6c 65 72 20 6b 6e 6f 77 73 20 74  e caller knows t
2cc10 68 61 74 20 74 68 65 20 73 75 70 70 6c 69 65 64  hat the supplied
2cc20 20 73 74 72 69 6e 67 20 69 73 20 6e 75 6c 2d 74   string is nul-t
2cc30 65 72 6d 69 6e 61 74 65 64 2c 20 74 68 65 6e 0a  erminated, then.
2cc40 2a 2a 20 74 68 65 72 65 20 69 73 20 61 20 73 6d  ** there is a sm
2cc50 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  all performance 
2cc60 61 64 76 61 6e 74 61 67 65 20 74 6f 20 70 61 73  advantage to pas
2cc70 73 69 6e 67 20 61 6e 20 6e 42 79 74 65 20 70 61  sing an nByte pa
2cc80 72 61 6d 65 74 65 72 20 74 68 61 74 0a 2a 2a 20  rameter that.** 
2cc90 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  is the number of
2cca0 20 62 79 74 65 73 20 69 6e 20 74 68 65 20 69 6e   bytes in the in
2ccb0 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 69 6e  put string <i>in
2ccc0 63 6c 75 64 69 6e 67 3c 2f 69 3e 0a 2a 2a 20 74  cluding</i>.** t
2ccd0 68 65 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74 6f  he nul-terminato
2cce0 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 70 7a 54  r..**.** ^If pzT
2ccf0 61 69 6c 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20  ail is not NULL 
2cd00 74 68 65 6e 20 2a 70 7a 54 61 69 6c 20 69 73 20  then *pzTail is 
2cd10 6d 61 64 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f  made to point to
2cd20 20 74 68 65 20 66 69 72 73 74 20 62 79 74 65 0a   the first byte.
2cd30 2a 2a 20 70 61 73 74 20 74 68 65 20 65 6e 64 20  ** past the end 
2cd40 6f 66 20 74 68 65 20 66 69 72 73 74 20 53 51 4c  of the first SQL
2cd50 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 7a 53   statement in zS
2cd60 71 6c 2e 20 20 54 68 65 73 65 20 72 6f 75 74 69  ql.  These routi
2cd70 6e 65 73 20 6f 6e 6c 79 0a 2a 2a 20 63 6f 6d 70  nes only.** comp
2cd80 69 6c 65 20 74 68 65 20 66 69 72 73 74 20 73 74  ile the first st
2cd90 61 74 65 6d 65 6e 74 20 69 6e 20 7a 53 71 6c 2c  atement in zSql,
2cda0 20 73 6f 20 2a 70 7a 54 61 69 6c 20 69 73 20 6c   so *pzTail is l
2cdb0 65 66 74 20 70 6f 69 6e 74 69 6e 67 20 74 6f 0a  eft pointing to.
2cdc0 2a 2a 20 77 68 61 74 20 72 65 6d 61 69 6e 73 20  ** what remains 
2cdd0 75 6e 63 6f 6d 70 69 6c 65 64 2e 0a 2a 2a 0a 2a  uncompiled..**.*
2cde0 2a 20 5e 2a 70 70 53 74 6d 74 20 69 73 20 6c 65  * ^*ppStmt is le
2cdf0 66 74 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20 61  ft pointing to a
2ce00 20 63 6f 6d 70 69 6c 65 64 20 5b 70 72 65 70 61   compiled [prepa
2ce10 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 74  red statement] t
2ce20 68 61 74 20 63 61 6e 20 62 65 0a 2a 2a 20 65 78  hat can be.** ex
2ce30 65 63 75 74 65 64 20 75 73 69 6e 67 20 5b 73 71  ecuted using [sq
2ce40 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 2e 20 20  lite3_step()].  
2ce50 5e 49 66 20 74 68 65 72 65 20 69 73 20 61 6e 20  ^If there is an 
2ce60 65 72 72 6f 72 2c 20 2a 70 70 53 74 6d 74 20 69  error, *ppStmt i
2ce70 73 20 73 65 74 0a 2a 2a 20 74 6f 20 4e 55 4c 4c  s set.** to NULL
2ce80 2e 20 20 5e 49 66 20 74 68 65 20 69 6e 70 75 74  .  ^If the input
2ce90 20 74 65 78 74 20 63 6f 6e 74 61 69 6e 73 20 6e   text contains n
2cea0 6f 20 53 51 4c 20 28 69 66 20 74 68 65 20 69 6e  o SQL (if the in
2ceb0 70 75 74 20 69 73 20 61 6e 20 65 6d 70 74 79 0a  put is an empty.
2cec0 2a 2a 20 73 74 72 69 6e 67 20 6f 72 20 61 20 63  ** string or a c
2ced0 6f 6d 6d 65 6e 74 29 20 74 68 65 6e 20 2a 70 70  omment) then *pp
2cee0 53 74 6d 74 20 69 73 20 73 65 74 20 74 6f 20 4e  Stmt is set to N
2cef0 55 4c 4c 2e 0a 2a 2a 20 54 68 65 20 63 61 6c 6c  ULL..** The call
2cf00 69 6e 67 20 70 72 6f 63 65 64 75 72 65 20 69 73  ing procedure is
2cf10 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72   responsible for
2cf20 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 63 6f   deleting the co
2cf30 6d 70 69 6c 65 64 0a 2a 2a 20 53 51 4c 20 73 74  mpiled.** SQL st
2cf40 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 5b 73  atement using [s
2cf50 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
2cf60 29 5d 20 61 66 74 65 72 20 69 74 20 68 61 73 20  )] after it has 
2cf70 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 69 74  finished with it
2cf80 2e 0a 2a 2a 20 70 70 53 74 6d 74 20 6d 61 79 20  ..** ppStmt may 
2cf90 6e 6f 74 20 62 65 20 4e 55 4c 4c 2e 0a 2a 2a 0a  not be NULL..**.
2cfa0 2a 2a 20 5e 4f 6e 20 73 75 63 63 65 73 73 2c 20  ** ^On success, 
2cfb0 74 68 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  the sqlite3_prep
2cfc0 61 72 65 28 29 20 66 61 6d 69 6c 79 20 6f 66 20  are() family of 
2cfd0 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20  routines return 
2cfe0 5b 53 51 4c 49 54 45 5f 4f 4b 5d 3b 0a 2a 2a 20  [SQLITE_OK];.** 
2cff0 6f 74 68 65 72 77 69 73 65 20 61 6e 20 5b 65 72  otherwise an [er
2d000 72 6f 72 20 63 6f 64 65 5d 20 69 73 20 72 65 74  ror code] is ret
2d010 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  urned..**.** The
2d020 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
2d030 5f 76 32 28 29 2c 20 73 71 6c 69 74 65 33 5f 70  _v2(), sqlite3_p
2d040 72 65 70 61 72 65 5f 76 33 28 29 2c 20 73 71 6c  repare_v3(), sql
2d050 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
2d060 32 28 29 2c 0a 2a 2a 20 61 6e 64 20 73 71 6c 69  2(),.** and sqli
2d070 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33  te3_prepare16_v3
2d080 28 29 20 69 6e 74 65 72 66 61 63 65 73 20 61 72  () interfaces ar
2d090 65 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f  e recommended fo
2d0a0 72 20 61 6c 6c 20 6e 65 77 20 70 72 6f 67 72 61  r all new progra
2d0b0 6d 73 2e 0a 2a 2a 20 54 68 65 20 6f 6c 64 65 72  ms..** The older
2d0c0 20 69 6e 74 65 72 66 61 63 65 73 20 28 73 71 6c   interfaces (sql
2d0d0 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 61  ite3_prepare() a
2d0e0 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nd sqlite3_prepa
2d0f0 72 65 31 36 28 29 29 0a 2a 2a 20 61 72 65 20 72  re16()).** are r
2d100 65 74 61 69 6e 65 64 20 66 6f 72 20 62 61 63 6b  etained for back
2d110 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c  wards compatibil
2d120 69 74 79 2c 20 62 75 74 20 74 68 65 69 72 20 75  ity, but their u
2d130 73 65 20 69 73 20 64 69 73 63 6f 75 72 61 67 65  se is discourage
2d140 64 2e 0a 2a 2a 20 5e 49 6e 20 74 68 65 20 22 76  d..** ^In the "v
2d150 58 22 20 69 6e 74 65 72 66 61 63 65 73 2c 20 74  X" interfaces, t
2d160 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  he prepared stat
2d170 65 6d 65 6e 74 0a 2a 2a 20 74 68 61 74 20 69 73  ement.** that is
2d180 20 72 65 74 75 72 6e 65 64 20 28 74 68 65 20 5b   returned (the [
2d190 73 71 6c 69 74 65 33 5f 73 74 6d 74 5d 20 6f 62  sqlite3_stmt] ob
2d1a0 6a 65 63 74 29 20 63 6f 6e 74 61 69 6e 73 20 61  ject) contains a
2d1b0 20 63 6f 70 79 20 6f 66 20 74 68 65 0a 2a 2a 20   copy of the.** 
2d1c0 6f 72 69 67 69 6e 61 6c 20 53 51 4c 20 74 65 78  original SQL tex
2d1d0 74 2e 20 54 68 69 73 20 63 61 75 73 65 73 20 74  t. This causes t
2d1e0 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  he [sqlite3_step
2d1f0 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f  ()] interface to
2d200 0a 2a 2a 20 62 65 68 61 76 65 20 64 69 66 66 65  .** behave diffe
2d210 72 65 6e 74 6c 79 20 69 6e 20 74 68 72 65 65 20  rently in three 
2d220 77 61 79 73 3a 0a 2a 2a 0a 2a 2a 20 3c 6f 6c 3e  ways:.**.** <ol>
2d230 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 49 66 20  .** <li>.** ^If 
2d240 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
2d250 65 6d 61 20 63 68 61 6e 67 65 73 2c 20 69 6e 73  ema changes, ins
2d260 74 65 61 64 20 6f 66 20 72 65 74 75 72 6e 69 6e  tead of returnin
2d270 67 20 5b 53 51 4c 49 54 45 5f 53 43 48 45 4d 41  g [SQLITE_SCHEMA
2d280 5d 20 61 73 20 69 74 0a 2a 2a 20 61 6c 77 61 79  ] as it.** alway
2d290 73 20 75 73 65 64 20 74 6f 20 64 6f 2c 20 5b 73  s used to do, [s
2d2a0 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77  qlite3_step()] w
2d2b0 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
2d2c0 79 20 72 65 63 6f 6d 70 69 6c 65 20 74 68 65 20  y recompile the 
2d2d0 53 51 4c 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74  SQL.** statement
2d2e0 20 61 6e 64 20 74 72 79 20 74 6f 20 72 75 6e 20   and try to run 
2d2f0 69 74 20 61 67 61 69 6e 2e 20 41 73 20 6d 61 6e  it again. As man
2d300 79 20 61 73 20 5b 53 51 4c 49 54 45 5f 4d 41 58  y as [SQLITE_MAX
2d310 5f 53 43 48 45 4d 41 5f 52 45 54 52 59 5d 0a 2a  _SCHEMA_RETRY].*
2d320 2a 20 72 65 74 72 69 65 73 20 77 69 6c 6c 20 6f  * retries will o
2d330 63 63 75 72 20 62 65 66 6f 72 65 20 73 71 6c 69  ccur before sqli
2d340 74 65 33 5f 73 74 65 70 28 29 20 67 69 76 65 73  te3_step() gives
2d350 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e 73 20   up and returns 
2d360 61 6e 20 65 72 72 6f 72 2e 0a 2a 2a 20 3c 2f 6c  an error..** </l
2d370 69 3e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a  i>.**.** <li>.**
2d380 20 5e 57 68 65 6e 20 61 6e 20 65 72 72 6f 72 20   ^When an error 
2d390 6f 63 63 75 72 73 2c 20 5b 73 71 6c 69 74 65 33  occurs, [sqlite3
2d3a0 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 20 72 65  _step()] will re
2d3b0 74 75 72 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20  turn one of the 
2d3c0 64 65 74 61 69 6c 65 64 0a 2a 2a 20 5b 65 72 72  detailed.** [err
2d3d0 6f 72 20 63 6f 64 65 73 5d 20 6f 72 20 5b 65 78  or codes] or [ex
2d3e0 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64  tended error cod
2d3f0 65 73 5d 2e 20 20 5e 54 68 65 20 6c 65 67 61 63  es].  ^The legac
2d400 79 20 62 65 68 61 76 69 6f 72 20 77 61 73 20 74  y behavior was t
2d410 68 61 74 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  hat.** [sqlite3_
2d420 73 74 65 70 28 29 5d 20 77 6f 75 6c 64 20 6f 6e  step()] would on
2d430 6c 79 20 72 65 74 75 72 6e 20 61 20 67 65 6e 65  ly return a gene
2d440 72 69 63 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f  ric [SQLITE_ERRO
2d450 52 5d 20 72 65 73 75 6c 74 20 63 6f 64 65 0a 2a  R] result code.*
2d460 2a 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63  * and the applic
2d470 61 74 69 6f 6e 20 77 6f 75 6c 64 20 68 61 76 65  ation would have
2d480 20 74 6f 20 6d 61 6b 65 20 61 20 73 65 63 6f 6e   to make a secon
2d490 64 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74  d call to [sqlit
2d4a0 65 33 5f 72 65 73 65 74 28 29 5d 0a 2a 2a 20 69  e3_reset()].** i
2d4b0 6e 20 6f 72 64 65 72 20 74 6f 20 66 69 6e 64 20  n order to find 
2d4c0 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 63  the underlying c
2d4d0 61 75 73 65 20 6f 66 20 74 68 65 20 70 72 6f 62  ause of the prob
2d4e0 6c 65 6d 2e 20 57 69 74 68 20 74 68 65 20 22 76  lem. With the "v
2d4f0 32 22 20 70 72 65 70 61 72 65 0a 2a 2a 20 69 6e  2" prepare.** in
2d500 74 65 72 66 61 63 65 73 2c 20 74 68 65 20 75 6e  terfaces, the un
2d510 64 65 72 6c 79 69 6e 67 20 72 65 61 73 6f 6e 20  derlying reason 
2d520 66 6f 72 20 74 68 65 20 65 72 72 6f 72 20 69 73  for the error is
2d530 20 72 65 74 75 72 6e 65 64 20 69 6d 6d 65 64 69   returned immedi
2d540 61 74 65 6c 79 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a  ately..** </li>.
2d550 2a 2a 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 49  **.** <li>.** ^I
2d560 66 20 74 68 65 20 73 70 65 63 69 66 69 63 20 76  f the specific v
2d570 61 6c 75 65 20 62 6f 75 6e 64 20 74 6f 20 5b 70  alue bound to [p
2d580 61 72 61 6d 65 74 65 72 20 7c 20 68 6f 73 74 20  arameter | host 
2d590 70 61 72 61 6d 65 74 65 72 5d 20 69 6e 20 74 68  parameter] in th
2d5a0 65 20 0a 2a 2a 20 57 48 45 52 45 20 63 6c 61 75  e .** WHERE clau
2d5b0 73 65 20 6d 69 67 68 74 20 69 6e 66 6c 75 65 6e  se might influen
2d5c0 63 65 20 74 68 65 20 63 68 6f 69 63 65 20 6f 66  ce the choice of
2d5d0 20 71 75 65 72 79 20 70 6c 61 6e 20 66 6f 72 20   query plan for 
2d5e0 61 20 73 74 61 74 65 6d 65 6e 74 2c 0a 2a 2a 20  a statement,.** 
2d5f0 74 68 65 6e 20 74 68 65 20 73 74 61 74 65 6d 65  then the stateme
2d600 6e 74 20 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d  nt will be autom
2d610 61 74 69 63 61 6c 6c 79 20 72 65 63 6f 6d 70 69  atically recompi
2d620 6c 65 64 2c 20 61 73 20 69 66 20 74 68 65 72 65  led, as if there
2d630 20 68 61 64 20 62 65 65 6e 20 0a 2a 2a 20 61 20   had been .** a 
2d640 73 63 68 65 6d 61 20 63 68 61 6e 67 65 2c 20 6f  schema change, o
2d650 6e 20 74 68 65 20 66 69 72 73 74 20 20 5b 73 71  n the first  [sq
2d660 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 63 61  lite3_step()] ca
2d670 6c 6c 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 6e 79  ll following any
2d680 20 63 68 61 6e 67 65 0a 2a 2a 20 74 6f 20 74 68   change.** to th
2d690 65 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  e [sqlite3_bind_
2d6a0 74 65 78 74 20 7c 20 62 69 6e 64 69 6e 67 73 5d  text | bindings]
2d6b0 20 6f 66 20 74 68 61 74 20 5b 70 61 72 61 6d 65   of that [parame
2d6c0 74 65 72 5d 2e 20 0a 2a 2a 20 5e 54 68 65 20 73  ter]. .** ^The s
2d6d0 70 65 63 69 66 69 63 20 76 61 6c 75 65 20 6f 66  pecific value of
2d6e0 20 57 48 45 52 45 2d 63 6c 61 75 73 65 20 5b 70   WHERE-clause [p
2d6f0 61 72 61 6d 65 74 65 72 5d 20 6d 69 67 68 74 20  arameter] might 
2d700 69 6e 66 6c 75 65 6e 63 65 20 74 68 65 20 0a 2a  influence the .*
2d710 2a 20 63 68 6f 69 63 65 20 6f 66 20 71 75 65 72  * choice of quer
2d720 79 20 70 6c 61 6e 20 69 66 20 74 68 65 20 70 61  y plan if the pa
2d730 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20 6c  rameter is the l
2d740 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66  eft-hand side of
2d750 20 61 20 5b 4c 49 4b 45 5d 0a 2a 2a 20 6f 72 20   a [LIKE].** or 
2d760 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 20  [GLOB] operator 
2d770 6f 72 20 69 66 20 74 68 65 20 70 61 72 61 6d 65  or if the parame
2d780 74 65 72 20 69 73 20 63 6f 6d 70 61 72 65 64 20  ter is compared 
2d790 74 6f 20 61 6e 20 69 6e 64 65 78 65 64 20 63 6f  to an indexed co
2d7a0 6c 75 6d 6e 0a 2a 2a 20 61 6e 64 20 74 68 65 20  lumn.** and the 
2d7b0 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  [SQLITE_ENABLE_S
2d7c0 54 41 54 33 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  TAT3] compile-ti
2d7d0 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61  me option is ena
2d7e0 62 6c 65 64 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a  bled..** </li>.*
2d7f0 2a 20 3c 2f 6f 6c 3e 0a 2a 2a 0a 2a 2a 20 3c 70  * </ol>.**.** <p
2d800 3e 5e 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  >^sqlite3_prepar
2d810 65 5f 76 33 28 29 20 64 69 66 66 65 72 73 20 66  e_v3() differs f
2d820 72 6f 6d 20 73 71 6c 69 74 65 33 5f 70 72 65 70  rom sqlite3_prep
2d830 61 72 65 5f 76 32 28 29 20 6f 6e 6c 79 20 69 6e  are_v2() only in
2d840 20 68 61 76 69 6e 67 0a 2a 2a 20 74 68 65 20 65   having.** the e
2d850 78 74 72 61 20 70 72 65 70 46 6c 61 67 73 20 70  xtra prepFlags p
2d860 61 72 61 6d 65 74 65 72 2c 20 77 68 69 63 68 20  arameter, which 
2d870 69 73 20 61 20 62 69 74 20 61 72 72 61 79 20 63  is a bit array c
2d880 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 7a 65 72  onsisting of zer
2d890 6f 20 6f 72 0a 2a 2a 20 6d 6f 72 65 20 6f 66 20  o or.** more of 
2d8a0 74 68 65 20 5b 53 51 4c 49 54 45 5f 50 52 45 50  the [SQLITE_PREP
2d8b0 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54 7c 53  ARE_PERSISTENT|S
2d8c0 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 2a 5d  QLITE_PREPARE_*]
2d8d0 20 66 6c 61 67 73 2e 20 20 5e 54 68 65 0a 2a 2a   flags.  ^The.**
2d8e0 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
2d8f0 5f 76 32 28 29 20 69 6e 74 65 72 66 61 63 65 20  _v2() interface 
2d900 77 6f 72 6b 73 20 65 78 61 63 74 6c 79 20 74 68  works exactly th
2d910 65 20 73 61 6d 65 20 61 73 0a 2a 2a 20 73 71 6c  e same as.** sql
2d920 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28  ite3_prepare_v3(
2d930 29 20 77 69 74 68 20 61 20 7a 65 72 6f 20 70 72  ) with a zero pr
2d940 65 70 46 6c 61 67 73 20 70 61 72 61 6d 65 74 65  epFlags paramete
2d950 72 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65  r..*/.int sqlite
2d960 33 5f 70 72 65 70 61 72 65 28 0a 20 20 73 71 6c  3_prepare(.  sql
2d970 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
2d980 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65       /* Database
2d990 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
2d9a0 73 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20  st char *zSql,  
2d9b0 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74       /* SQL stat
2d9c0 65 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63  ement, UTF-8 enc
2d9d0 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42  oded */.  int nB
2d9e0 79 74 65 2c 20 20 20 20 20 20 20 20 20 20 20 20  yte,            
2d9f0 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e    /* Maximum len
2da00 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62  gth of zSql in b
2da10 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74  ytes. */.  sqlit
2da20 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74  e3_stmt **ppStmt
2da30 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65  ,  /* OUT: State
2da40 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  ment handle */. 
2da50 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70 7a   const char **pz
2da60 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a  Tail     /* OUT:
2da70 20 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73   Pointer to unus
2da80 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53  ed portion of zS
2da90 71 6c 20 2a 2f 0a 29 3b 0a 69 6e 74 20 73 71 6c  ql */.);.int sql
2daa0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
2dab0 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  .  sqlite3 *db, 
2dac0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61             /* Da
2dad0 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f  tabase handle */
2dae0 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  .  const char *z
2daf0 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51  Sql,       /* SQ
2db00 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46  L statement, UTF
2db10 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20  -8 encoded */.  
2db20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20  int nByte,      
2db30 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d          /* Maxim
2db40 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71  um length of zSq
2db50 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20  l in bytes. */. 
2db60 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a   sqlite3_stmt **
2db70 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a  ppStmt,  /* OUT:
2db80 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c   Statement handl
2db90 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61  e */.  const cha
2dba0 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f  r **pzTail     /
2dbb0 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74  * OUT: Pointer t
2dbc0 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e  o unused portion
2dbd0 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 69   of zSql */.);.i
2dbe0 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nt sqlite3_prepa
2dbf0 72 65 5f 76 33 28 0a 20 20 73 71 6c 69 74 65 33  re_v3(.  sqlite3
2dc00 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20   *db,           
2dc10 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e   /* Database han
2dc20 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  dle */.  const c
2dc30 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20  har *zSql,      
2dc40 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   /* SQL statemen
2dc50 74 2c 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64  t, UTF-8 encoded
2dc60 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c   */.  int nByte,
2dc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
2dc80 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20   Maximum length 
2dc90 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73  of zSql in bytes
2dca0 2e 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20  . */.  unsigned 
2dcb0 69 6e 74 20 70 72 65 70 46 6c 61 67 73 2c 20 2f  int prepFlags, /
2dcc0 2a 20 5a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 53  * Zero or more S
2dcd0 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 20 66  QLITE_PREPARE_ f
2dce0 6c 61 67 73 20 2a 2f 0a 20 20 73 71 6c 69 74 65  lags */.  sqlite
2dcf0 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c  3_stmt **ppStmt,
2dd00 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d    /* OUT: Statem
2dd10 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ent handle */.  
2dd20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70 7a 54  const char **pzT
2dd30 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20  ail     /* OUT: 
2dd40 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65  Pointer to unuse
2dd50 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71  d portion of zSq
2dd60 6c 20 2a 2f 0a 29 3b 0a 69 6e 74 20 73 71 6c 69  l */.);.int sqli
2dd70 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 0a 20  te3_prepare16(. 
2dd80 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
2dd90 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61           /* Data
2dda0 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  base handle */. 
2ddb0 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71   const void *zSq
2ddc0 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20  l,       /* SQL 
2ddd0 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31  statement, UTF-1
2dde0 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69  6 encoded */.  i
2ddf0 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20  nt nByte,       
2de00 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75         /* Maximu
2de10 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c  m length of zSql
2de20 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20   in bytes. */.  
2de30 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70  sqlite3_stmt **p
2de40 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20  pStmt,  /* OUT: 
2de50 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65  Statement handle
2de60 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64   */.  const void
2de70 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a   **pzTail     /*
2de80 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f   OUT: Pointer to
2de90 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20   unused portion 
2dea0 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 69 6e  of zSql */.);.in
2deb0 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  t sqlite3_prepar
2dec0 65 31 36 5f 76 32 28 0a 20 20 73 71 6c 69 74 65  e16_v2(.  sqlite
2ded0 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20  3 *db,          
2dee0 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61    /* Database ha
2def0 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  ndle */.  const 
2df00 76 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20  void *zSql,     
2df10 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65    /* SQL stateme
2df20 6e 74 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64  nt, UTF-16 encod
2df30 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74  ed */.  int nByt
2df40 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e,              
2df50 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74  /* Maximum lengt
2df60 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74  h of zSql in byt
2df70 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33  es. */.  sqlite3
2df80 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20  _stmt **ppStmt, 
2df90 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65   /* OUT: Stateme
2dfa0 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63  nt handle */.  c
2dfb0 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54 61  onst void **pzTa
2dfc0 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50  il     /* OUT: P
2dfd0 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64  ointer to unused
2dfe0 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c   portion of zSql
2dff0 20 2a 2f 0a 29 3b 0a 69 6e 74 20 73 71 6c 69 74   */.);.int sqlit
2e000 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28  e3_prepare16_v3(
2e010 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  .  sqlite3 *db, 
2e020 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61             /* Da
2e030 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f  tabase handle */
2e040 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a  .  const void *z
2e050 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51  Sql,       /* SQ
2e060 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46  L statement, UTF
2e070 2d 31 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20  -16 encoded */. 
2e080 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20   int nByte,     
2e090 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69           /* Maxi
2e0a0 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53  mum length of zS
2e0b0 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a  ql in bytes. */.
2e0c0 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 70    unsigned int p
2e0d0 72 65 70 46 6c 61 67 73 2c 20 2f 2a 20 5a 65 72  repFlags, /* Zer
2e0e0 6f 20 6f 72 20 6d 6f 72 65 20 53 51 4c 49 54 45  o or more SQLITE
2e0f0 5f 50 52 45 50 41 52 45 5f 20 66 6c 61 67 73 20  _PREPARE_ flags 
2e100 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d  */.  sqlite3_stm
2e110 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20  t **ppStmt,  /* 
2e120 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68  OUT: Statement h
2e130 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
2e140 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20   void **pzTail  
2e150 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74     /* OUT: Point
2e160 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72  er to unused por
2e170 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a  tion of zSql */.
2e180 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
2e190 45 46 3a 20 52 65 74 72 69 65 76 69 6e 67 20 53  EF: Retrieving S
2e1a0 74 61 74 65 6d 65 6e 74 20 53 51 4c 0a 2a 2a 20  tatement SQL.** 
2e1b0 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f  METHOD: sqlite3_
2e1c0 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  stmt.**.** ^The 
2e1d0 73 71 6c 69 74 65 33 5f 73 71 6c 28 50 29 20 69  sqlite3_sql(P) i
2e1e0 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73  nterface returns
2e1f0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
2e200 63 6f 70 79 20 6f 66 20 74 68 65 20 55 54 46 2d  copy of the UTF-
2e210 38 0a 2a 2a 20 53 51 4c 20 74 65 78 74 20 75 73  8.** SQL text us
2e220 65 64 20 74 6f 20 63 72 65 61 74 65 20 5b 70 72  ed to create [pr
2e230 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
2e240 5d 20 50 20 69 66 20 50 20 77 61 73 0a 2a 2a 20  ] P if P was.** 
2e250 63 72 65 61 74 65 64 20 62 79 20 5b 73 71 6c 69  created by [sqli
2e260 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
2e270 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ], [sqlite3_prep
2e280 61 72 65 5f 76 33 28 29 5d 2c 0a 2a 2a 20 5b 73  are_v3()],.** [s
2e290 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
2e2a0 5f 76 32 28 29 5d 2c 20 6f 72 20 5b 73 71 6c 69  _v2()], or [sqli
2e2b0 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33  te3_prepare16_v3
2e2c0 28 29 5d 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ()]..** ^The sql
2e2d0 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71  ite3_expanded_sq
2e2e0 6c 28 50 29 20 69 6e 74 65 72 66 61 63 65 20 72  l(P) interface r
2e2f0 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72  eturns a pointer
2e300 20 74 6f 20 61 20 55 54 46 2d 38 0a 2a 2a 20 73   to a UTF-8.** s
2e310 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
2e320 20 74 68 65 20 53 51 4c 20 74 65 78 74 20 6f 66   the SQL text of
2e330 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
2e340 65 6e 74 20 50 20 77 69 74 68 0a 2a 2a 20 5b 62  ent P with.** [b
2e350 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 5d  ound parameters]
2e360 20 65 78 70 61 6e 64 65 64 2e 0a 2a 2a 20 5e 54   expanded..** ^T
2e370 68 65 20 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61  he sqlite3_norma
2e380 6c 69 7a 65 64 5f 73 71 6c 28 50 29 20 69 6e 74  lized_sql(P) int
2e390 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 61  erface returns a
2e3a0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 55 54   pointer to a UT
2e3b0 46 2d 38 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f  F-8.** string co
2e3c0 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 6f 72  ntaining the nor
2e3d0 6d 61 6c 69 7a 65 64 20 53 51 4c 20 74 65 78 74  malized SQL text
2e3e0 20 6f 66 20 70 72 65 70 61 72 65 64 20 73 74 61   of prepared sta
2e3f0 74 65 6d 65 6e 74 20 50 2e 20 20 54 68 65 0a 2a  tement P.  The.*
2e400 2a 20 73 65 6d 61 6e 74 69 63 73 20 75 73 65 64  * semantics used
2e410 20 74 6f 20 6e 6f 72 6d 61 6c 69 7a 65 20 61 20   to normalize a 
2e420 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 72  SQL statement ar
2e430 65 20 75 6e 73 70 65 63 69 66 69 65 64 20 61 6e  e unspecified an
2e440 64 20 73 75 62 6a 65 63 74 0a 2a 2a 20 74 6f 20  d subject.** to 
2e450 63 68 61 6e 67 65 2e 20 20 41 74 20 61 20 6d 69  change.  At a mi
2e460 6e 69 6d 75 6d 2c 20 6c 69 74 65 72 61 6c 20 76  nimum, literal v
2e470 61 6c 75 65 73 20 77 69 6c 6c 20 62 65 20 72 65  alues will be re
2e480 70 6c 61 63 65 64 20 77 69 74 68 20 73 75 69 74  placed with suit
2e490 61 62 6c 65 0a 2a 2a 20 70 6c 61 63 65 68 6f 6c  able.** placehol
2e4a0 64 65 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e 28 46 6f  ders..**.** ^(Fo
2e4b0 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 20  r example, if a 
2e4c0 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
2e4d0 6e 74 20 69 73 20 63 72 65 61 74 65 64 20 75 73  nt is created us
2e4e0 69 6e 67 20 74 68 65 20 53 51 4c 0a 2a 2a 20 74  ing the SQL.** t
2e4f0 65 78 74 20 22 53 45 4c 45 43 54 20 24 61 62 63  ext "SELECT $abc
2e500 2c 3a 78 79 7a 22 20 61 6e 64 20 69 66 20 70 61  ,:xyz" and if pa
2e510 72 61 6d 65 74 65 72 20 24 61 62 63 20 69 73 20  rameter $abc is 
2e520 62 6f 75 6e 64 20 74 6f 20 69 6e 74 65 67 65 72  bound to integer
2e530 20 32 33 34 35 0a 2a 2a 20 61 6e 64 20 70 61 72   2345.** and par
2e540 61 6d 65 74 65 72 20 3a 78 79 7a 20 69 73 20 75  ameter :xyz is u
2e550 6e 62 6f 75 6e 64 2c 20 74 68 65 6e 20 73 71 6c  nbound, then sql
2e560 69 74 65 33 5f 73 71 6c 28 29 20 77 69 6c 6c 20  ite3_sql() will 
2e570 72 65 74 75 72 6e 0a 2a 2a 20 74 68 65 20 6f 72  return.** the or
2e580 69 67 69 6e 61 6c 20 73 74 72 69 6e 67 2c 20 22  iginal string, "
2e590 53 45 4c 45 43 54 20 24 61 62 63 2c 3a 78 79 7a  SELECT $abc,:xyz
2e5a0 22 20 62 75 74 20 73 71 6c 69 74 65 33 5f 65 78  " but sqlite3_ex
2e5b0 70 61 6e 64 65 64 5f 73 71 6c 28 29 0a 2a 2a 20  panded_sql().** 
2e5c0 77 69 6c 6c 20 72 65 74 75 72 6e 20 22 53 45 4c  will return "SEL
2e5d0 45 43 54 20 32 33 34 35 2c 4e 55 4c 4c 22 2e 29  ECT 2345,NULL".)
2e5e0 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ^.**.** ^The sql
2e5f0 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71  ite3_expanded_sq
2e600 6c 28 29 20 69 6e 74 65 72 66 61 63 65 20 72 65  l() interface re
2e610 74 75 72 6e 73 20 4e 55 4c 4c 20 69 66 20 69 6e  turns NULL if in
2e620 73 75 66 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72  sufficient memor
2e630 79 0a 2a 2a 20 69 73 20 61 76 61 69 6c 61 62 6c  y.** is availabl
2e640 65 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 72 65  e to hold the re
2e650 73 75 6c 74 2c 20 6f 72 20 69 66 20 74 68 65 20  sult, or if the 
2e660 72 65 73 75 6c 74 20 77 6f 75 6c 64 20 65 78 63  result would exc
2e670 65 65 64 20 74 68 65 0a 2a 2a 20 74 68 65 20 6d  eed the.** the m
2e680 61 78 69 6d 75 6d 20 73 74 72 69 6e 67 20 6c 65  aximum string le
2e690 6e 67 74 68 20 64 65 74 65 72 6d 69 6e 65 64 20  ngth determined 
2e6a0 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c  by the [SQLITE_L
2e6b0 49 4d 49 54 5f 4c 45 4e 47 54 48 5d 2e 0a 2a 2a  IMIT_LENGTH]..**
2e6c0 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45  .** ^The [SQLITE
2e6d0 5f 54 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49  _TRACE_SIZE_LIMI
2e6e0 54 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  T] compile-time 
2e6f0 6f 70 74 69 6f 6e 20 6c 69 6d 69 74 73 20 74 68  option limits th
2e700 65 20 73 69 7a 65 20 6f 66 0a 2a 2a 20 62 6f 75  e size of.** bou
2e710 6e 64 20 70 61 72 61 6d 65 74 65 72 20 65 78 70  nd parameter exp
2e720 61 6e 73 69 6f 6e 73 2e 20 20 5e 54 68 65 20 5b  ansions.  ^The [
2e730 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43  SQLITE_OMIT_TRAC
2e740 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  E] compile-time.
2e750 2a 2a 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  ** option causes
2e760 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65   sqlite3_expande
2e770 64 5f 73 71 6c 28 29 20 74 6f 20 61 6c 77 61 79  d_sql() to alway
2e780 73 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e 0a 2a  s return NULL..*
2e790 2a 0a 2a 2a 20 5e 54 68 65 20 73 74 72 69 6e 67  *.** ^The string
2e7a0 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71  s returned by sq
2e7b0 6c 69 74 65 33 5f 73 71 6c 28 50 29 20 61 6e 64  lite3_sql(P) and
2e7c0 20 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c 69   sqlite3_normali
2e7d0 7a 65 64 5f 73 71 6c 28 50 29 0a 2a 2a 20 61 72  zed_sql(P).** ar
2e7e0 65 20 6d 61 6e 61 67 65 64 20 62 79 20 53 51 4c  e managed by SQL
2e7f0 69 74 65 20 61 6e 64 20 61 72 65 20 61 75 74 6f  ite and are auto
2e800 6d 61 74 69 63 61 6c 6c 79 20 66 72 65 65 64 20  matically freed 
2e810 77 68 65 6e 20 74 68 65 20 70 72 65 70 61 72 65  when the prepare
2e820 64 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 69  d.** statement i
2e830 73 20 66 69 6e 61 6c 69 7a 65 64 2e 0a 2a 2a 20  s finalized..** 
2e840 5e 54 68 65 20 73 74 72 69 6e 67 20 72 65 74 75  ^The string retu
2e850 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
2e860 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 50 29 2c  expanded_sql(P),
2e870 20 6f 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61   on the other ha
2e880 6e 64 2c 0a 2a 2a 20 69 73 20 6f 62 74 61 69 6e  nd,.** is obtain
2e890 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  ed from [sqlite3
2e8a0 5f 6d 61 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 6d  _malloc()] and m
2e8b0 75 73 74 20 62 65 20 66 72 65 65 20 62 79 20 74  ust be free by t
2e8c0 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a  he application.*
2e8d0 2a 20 62 79 20 70 61 73 73 69 6e 67 20 69 74 20  * by passing it 
2e8e0 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65  to [sqlite3_free
2e8f0 28 29 5d 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68  ()]..*/.const ch
2e900 61 72 20 2a 73 71 6c 69 74 65 33 5f 73 71 6c 28  ar *sqlite3_sql(
2e910 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53  sqlite3_stmt *pS
2e920 74 6d 74 29 3b 0a 63 68 61 72 20 2a 73 71 6c 69  tmt);.char *sqli
2e930 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c  te3_expanded_sql
2e940 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70  (sqlite3_stmt *p
2e950 53 74 6d 74 29 3b 0a 63 6f 6e 73 74 20 63 68 61  Stmt);.const cha
2e960 72 20 2a 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61  r *sqlite3_norma
2e970 6c 69 7a 65 64 5f 73 71 6c 28 73 71 6c 69 74 65  lized_sql(sqlite
2e980 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a  3_stmt *pStmt);.
2e990 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
2e9a0 20 44 65 74 65 72 6d 69 6e 65 20 49 66 20 41 6e   Determine If An
2e9b0 20 53 51 4c 20 53 74 61 74 65 6d 65 6e 74 20 57   SQL Statement W
2e9c0 72 69 74 65 73 20 54 68 65 20 44 61 74 61 62 61  rites The Databa
2e9d0 73 65 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  se.** METHOD: sq
2e9e0 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a  lite3_stmt.**.**
2e9f0 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 74   ^The sqlite3_st
2ea00 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 58 29 20 69  mt_readonly(X) i
2ea10 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73  nterface returns
2ea20 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29   true (non-zero)
2ea30 20 69 66 0a 2a 2a 20 61 6e 64 20 6f 6e 6c 79 20   if.** and only 
2ea40 69 66 20 74 68 65 20 5b 70 72 65 70 61 72 65 64  if the [prepared
2ea50 20 73 74 61 74 65 6d 65 6e 74 5d 20 58 20 6d 61   statement] X ma
2ea60 6b 65 73 20 6e 6f 20 64 69 72 65 63 74 20 63 68  kes no direct ch
2ea70 61 6e 67 65 73 20 74 6f 0a 2a 2a 20 74 68 65 20  anges to.** the 
2ea80 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 64  content of the d
2ea90 61 74 61 62 61 73 65 20 66 69 6c 65 2e 0a 2a 2a  atabase file..**
2eaa0 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b 61  .** Note that [a
2eab0 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e  pplication-defin
2eac0 65 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73  ed SQL functions
2ead0 5d 20 6f 72 0a 2a 2a 20 5b 76 69 72 74 75 61 6c  ] or.** [virtual
2eae0 20 74 61 62 6c 65 73 5d 20 6d 69 67 68 74 20 63   tables] might c
2eaf0 68 61 6e 67 65 20 74 68 65 20 64 61 74 61 62 61  hange the databa
2eb00 73 65 20 69 6e 64 69 72 65 63 74 6c 79 20 61 73  se indirectly as
2eb10 20 61 20 73 69 64 65 20 65 66 66 65 63 74 2e 20   a side effect. 
2eb20 20 0a 2a 2a 20 5e 28 46 6f 72 20 65 78 61 6d 70   .** ^(For examp
2eb30 6c 65 2c 20 69 66 20 61 6e 20 61 70 70 6c 69 63  le, if an applic
2eb40 61 74 69 6f 6e 20 64 65 66 69 6e 65 73 20 61 20  ation defines a 
2eb50 66 75 6e 63 74 69 6f 6e 20 22 65 76 61 6c 28 29  function "eval()
2eb60 22 20 74 68 61 74 20 0a 2a 2a 20 63 61 6c 6c 73  " that .** calls
2eb70 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29   [sqlite3_exec()
2eb80 5d 2c 20 74 68 65 6e 20 74 68 65 20 66 6f 6c 6c  ], then the foll
2eb90 6f 77 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d  owing SQL statem
2eba0 65 6e 74 20 77 6f 75 6c 64 0a 2a 2a 20 63 68 61  ent would.** cha
2ebb0 6e 67 65 20 74 68 65 20 64 61 74 61 62 61 73 65  nge the database
2ebc0 20 66 69 6c 65 20 74 68 72 6f 75 67 68 20 73 69   file through si
2ebd0 64 65 2d 65 66 66 65 63 74 73 3a 0a 2a 2a 0a 2a  de-effects:.**.*
2ebe0 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70  * <blockquote><p
2ebf0 72 65 3e 0a 2a 2a 20 20 20 20 53 45 4c 45 43 54  re>.**    SELECT
2ec00 20 65 76 61 6c 28 27 44 45 4c 45 54 45 20 46 52   eval('DELETE FR
2ec10 4f 4d 20 74 31 27 29 20 46 52 4f 4d 20 74 32 3b  OM t1') FROM t2;
2ec20 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  .** </pre></bloc
2ec30 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 42 75  kquote>.**.** Bu
2ec40 74 20 62 65 63 61 75 73 65 20 74 68 65 20 5b 53  t because the [S
2ec50 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
2ec60 20 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67 65   does not change
2ec70 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
2ec80 6c 65 0a 2a 2a 20 64 69 72 65 63 74 6c 79 2c 20  le.** directly, 
2ec90 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61  sqlite3_stmt_rea
2eca0 64 6f 6e 6c 79 28 29 20 77 6f 75 6c 64 20 73 74  donly() would st
2ecb0 69 6c 6c 20 72 65 74 75 72 6e 20 74 72 75 65 2e  ill return true.
2ecc0 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 72 61 6e 73 61  )^.**.** ^Transa
2ecd0 63 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 20 73 74  ction control st
2ece0 61 74 65 6d 65 6e 74 73 20 73 75 63 68 20 61 73  atements such as
2ecf0 20 5b 42 45 47 49 4e 5d 2c 20 5b 43 4f 4d 4d 49   [BEGIN], [COMMI
2ed00 54 5d 2c 20 5b 52 4f 4c 4c 42 41 43 4b 5d 2c 0a  T], [ROLLBACK],.
2ed10 2a 2a 20 5b 53 41 56 45 50 4f 49 4e 54 5d 2c 20  ** [SAVEPOINT], 
2ed20 61 6e 64 20 5b 52 45 4c 45 41 53 45 5d 20 63 61  and [RELEASE] ca
2ed30 75 73 65 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  use sqlite3_stmt
2ed40 5f 72 65 61 64 6f 6e 6c 79 28 29 20 74 6f 20 72  _readonly() to r
2ed50 65 74 75 72 6e 20 74 72 75 65 2c 0a 2a 2a 20 73  eturn true,.** s
2ed60 69 6e 63 65 20 74 68 65 20 73 74 61 74 65 6d 65  ince the stateme
2ed70 6e 74 73 20 74 68 65 6d 73 65 6c 76 65 73 20 64  nts themselves d
2ed80 6f 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 6d  o not actually m
2ed90 6f 64 69 66 79 20 74 68 65 20 64 61 74 61 62 61  odify the databa
2eda0 73 65 20 62 75 74 0a 2a 2a 20 72 61 74 68 65 72  se but.** rather
2edb0 20 74 68 65 79 20 63 6f 6e 74 72 6f 6c 20 74 68   they control th
2edc0 65 20 74 69 6d 69 6e 67 20 6f 66 20 77 68 65 6e  e timing of when
2edd0 20 6f 74 68 65 72 20 73 74 61 74 65 6d 65 6e 74   other statement
2ede0 73 20 6d 6f 64 69 66 79 20 74 68 65 20 0a 2a 2a  s modify the .**
2edf0 20 64 61 74 61 62 61 73 65 2e 20 20 5e 54 68 65   database.  ^The
2ee00 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20 5b 44   [ATTACH] and [D
2ee10 45 54 41 43 48 5d 20 73 74 61 74 65 6d 65 6e 74  ETACH] statement
2ee20 73 20 61 6c 73 6f 20 63 61 75 73 65 0a 2a 2a 20  s also cause.** 
2ee30 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61  sqlite3_stmt_rea
2ee40 64 6f 6e 6c 79 28 29 20 74 6f 20 72 65 74 75 72  donly() to retur
2ee50 6e 20 74 72 75 65 20 73 69 6e 63 65 2c 20 77 68  n true since, wh
2ee60 69 6c 65 20 74 68 6f 73 65 20 73 74 61 74 65 6d  ile those statem
2ee70 65 6e 74 73 0a 2a 2a 20 63 68 61 6e 67 65 20 74  ents.** change t
2ee80 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  he configuration
2ee90 20 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 63   of a database c
2eea0 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74 68 65 79 20  onnection, they 
2eeb0 64 6f 20 6e 6f 74 20 6d 61 6b 65 20 0a 2a 2a 20  do not make .** 
2eec0 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 63  changes to the c
2eed0 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 64 61  ontent of the da
2eee0 74 61 62 61 73 65 20 66 69 6c 65 73 20 6f 6e 20  tabase files on 
2eef0 64 69 73 6b 2e 0a 2a 2a 20 5e 54 68 65 20 73 71  disk..** ^The sq
2ef00 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f  lite3_stmt_reado
2ef10 6e 6c 79 28 29 20 69 6e 74 65 72 66 61 63 65 20  nly() interface 
2ef20 72 65 74 75 72 6e 73 20 74 72 75 65 20 66 6f 72  returns true for
2ef30 20 5b 42 45 47 49 4e 5d 20 73 69 6e 63 65 0a 2a   [BEGIN] since.*
2ef40 2a 20 5b 42 45 47 49 4e 5d 20 6d 65 72 65 6c 79  * [BEGIN] merely
2ef50 20 73 65 74 73 20 69 6e 74 65 72 6e 61 6c 20 66   sets internal f
2ef60 6c 61 67 73 2c 20 62 75 74 20 74 68 65 20 5b 42  lags, but the [B
2ef70 45 47 49 4e 7c 42 45 47 49 4e 20 49 4d 4d 45 44  EGIN|BEGIN IMMED
2ef80 49 41 54 45 5d 20 61 6e 64 0a 2a 2a 20 5b 42 45  IATE] and.** [BE
2ef90 47 49 4e 7c 42 45 47 49 4e 20 45 58 43 4c 55 53  GIN|BEGIN EXCLUS
2efa0 49 56 45 5d 20 63 6f 6d 6d 61 6e 64 73 20 64 6f  IVE] commands do
2efb0 20 74 6f 75 63 68 20 74 68 65 20 64 61 74 61 62   touch the datab
2efc0 61 73 65 20 61 6e 64 20 73 6f 0a 2a 2a 20 73 71  ase and so.** sq
2efd0 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f  lite3_stmt_reado
2efe0 6e 6c 79 28 29 20 72 65 74 75 72 6e 73 20 66 61  nly() returns fa
2eff0 6c 73 65 20 66 6f 72 20 74 68 6f 73 65 20 63 6f  lse for those co
2f000 6d 6d 61 6e 64 73 2e 0a 2a 2f 0a 69 6e 74 20 73  mmands..*/.int s
2f010 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64  qlite3_stmt_read
2f020 6f 6e 6c 79 28 73 71 6c 69 74 65 33 5f 73 74 6d  only(sqlite3_stm
2f030 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a  t *pStmt);../*.*
2f040 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65 74 65  * CAPI3REF: Dete
2f050 72 6d 69 6e 65 20 49 66 20 41 20 50 72 65 70 61  rmine If A Prepa
2f060 72 65 64 20 53 74 61 74 65 6d 65 6e 74 20 48 61  red Statement Ha
2f070 73 20 42 65 65 6e 20 52 65 73 65 74 0a 2a 2a 20  s Been Reset.** 
2f080 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f  METHOD: sqlite3_
2f090 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  stmt.**.** ^The 
2f0a0 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 62 75 73  sqlite3_stmt_bus
2f0b0 79 28 53 29 20 69 6e 74 65 72 66 61 63 65 20 72  y(S) interface r
2f0c0 65 74 75 72 6e 73 20 74 72 75 65 20 28 6e 6f 6e  eturns true (non
2f0d0 2d 7a 65 72 6f 29 20 69 66 20 74 68 65 0a 2a 2a  -zero) if the.**
2f0e0 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
2f0f0 6d 65 6e 74 5d 20 53 20 68 61 73 20 62 65 65 6e  ment] S has been
2f100 20 73 74 65 70 70 65 64 20 61 74 20 6c 65 61 73   stepped at leas
2f110 74 20 6f 6e 63 65 20 75 73 69 6e 67 20 0a 2a 2a  t once using .**
2f120 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 53   [sqlite3_step(S
2f130 29 5d 20 62 75 74 20 68 61 73 20 6e 65 69 74 68  )] but has neith
2f140 65 72 20 72 75 6e 20 74 6f 20 63 6f 6d 70 6c 65  er run to comple
2f150 74 69 6f 6e 20 28 72 65 74 75 72 6e 65 64 0a 2a  tion (returned.*
2f160 2a 20 5b 53 51 4c 49 54 45 5f 44 4f 4e 45 5d 20  * [SQLITE_DONE] 
2f170 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 73 74  from [sqlite3_st
2f180 65 70 28 53 29 5d 29 20 6e 6f 72 0a 2a 2a 20 62  ep(S)]) nor.** b
2f190 65 65 6e 20 72 65 73 65 74 20 75 73 69 6e 67 20  een reset using 
2f1a0 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 53  [sqlite3_reset(S
2f1b0 29 5d 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65  )].  ^The sqlite
2f1c0 33 5f 73 74 6d 74 5f 62 75 73 79 28 53 29 0a 2a  3_stmt_busy(S).*
2f1d0 2a 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75  * interface retu
2f1e0 72 6e 73 20 66 61 6c 73 65 20 69 66 20 53 20 69  rns false if S i
2f1f0 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  s a NULL pointer
2f200 2e 20 20 49 66 20 53 20 69 73 20 6e 6f 74 20 61  .  If S is not a
2f210 20 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69 6e 74 65   .** NULL pointe
2f220 72 20 61 6e 64 20 69 73 20 6e 6f 74 20 61 20 70  r and is not a p
2f230 6f 69 6e 74 65 72 20 74 6f 20 61 20 76 61 6c 69  ointer to a vali
2f240 64 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  d [prepared stat
2f250 65 6d 65 6e 74 5d 0a 2a 2a 20 6f 62 6a 65 63 74  ement].** object
2f260 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76  , then the behav
2f270 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ior is undefined
2f280 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 75 6e   and probably un
2f290 64 65 73 69 72 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a  desirable..**.**
2f2a0 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20   This interface 
2f2b0 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 63  can be used in c
2f2c0 6f 6d 62 69 6e 61 74 69 6f 6e 20 5b 73 71 6c 69  ombination [sqli
2f2d0 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 29 5d  te3_next_stmt()]
2f2e0 0a 2a 2a 20 74 6f 20 6c 6f 63 61 74 65 20 61 6c  .** to locate al
2f2f0 6c 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  l prepared state
2f300 6d 65 6e 74 73 20 61 73 73 6f 63 69 61 74 65 64  ments associated
2f310 20 77 69 74 68 20 61 20 64 61 74 61 62 61 73 65   with a database
2f320 20 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   .** connection 
2f330 74 68 61 74 20 61 72 65 20 69 6e 20 6e 65 65 64  that are in need
2f340 20 6f 66 20 62 65 69 6e 67 20 72 65 73 65 74 2e   of being reset.
2f350 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73    This can be us
2f360 65 64 2c 0a 2a 2a 20 66 6f 72 20 65 78 61 6d 70  ed,.** for examp
2f370 6c 65 2c 20 69 6e 20 64 69 61 67 6e 6f 73 74 69  le, in diagnosti
2f380 63 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 73 65  c routines to se
2f390 61 72 63 68 20 66 6f 72 20 70 72 65 70 61 72 65  arch for prepare
2f3a0 64 20 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 73  d .** statements
2f3b0 20 74 68 61 74 20 61 72 65 20 68 6f 6c 64 69 6e   that are holdin
2f3c0 67 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  g a transaction 
2f3d0 6f 70 65 6e 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c  open..*/.int sql
2f3e0 69 74 65 33 5f 73 74 6d 74 5f 62 75 73 79 28 73  ite3_stmt_busy(s
2f3f0 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a  qlite3_stmt*);..
2f400 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
2f410 44 79 6e 61 6d 69 63 61 6c 6c 79 20 54 79 70 65  Dynamically Type
2f420 64 20 56 61 6c 75 65 20 4f 62 6a 65 63 74 0a 2a  d Value Object.*
2f430 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 70 72 6f  * KEYWORDS: {pro
2f440 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
2f450 61 6c 75 65 7d 20 7b 75 6e 70 72 6f 74 65 63 74  alue} {unprotect
2f460 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ed sqlite3_value
2f470 7d 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 75  }.**.** SQLite u
2f480 73 65 73 20 74 68 65 20 73 71 6c 69 74 65 33 5f  ses the sqlite3_
2f490 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 74 6f 20  value object to 
2f4a0 72 65 70 72 65 73 65 6e 74 20 61 6c 6c 20 76 61  represent all va
2f4b0 6c 75 65 73 0a 2a 2a 20 74 68 61 74 20 63 61 6e  lues.** that can
2f4c0 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 61 20   be stored in a 
2f4d0 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 2e 20  database table. 
2f4e0 53 51 4c 69 74 65 20 75 73 65 73 20 64 79 6e 61  SQLite uses dyna
2f4f0 6d 69 63 20 74 79 70 69 6e 67 0a 2a 2a 20 66 6f  mic typing.** fo
2f500 72 20 74 68 65 20 76 61 6c 75 65 73 20 69 74 20  r the values it 
2f510 73 74 6f 72 65 73 2e 20 20 5e 56 61 6c 75 65 73  stores.  ^Values
2f520 20 73 74 6f 72 65 64 20 69 6e 20 73 71 6c 69 74   stored in sqlit
2f530 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73  e3_value objects
2f540 0a 2a 2a 20 63 61 6e 20 62 65 20 69 6e 74 65 67  .** can be integ
2f550 65 72 73 2c 20 66 6c 6f 61 74 69 6e 67 20 70 6f  ers, floating po
2f560 69 6e 74 20 76 61 6c 75 65 73 2c 20 73 74 72 69  int values, stri
2f570 6e 67 73 2c 20 42 4c 4f 42 73 2c 20 6f 72 20 4e  ngs, BLOBs, or N
2f580 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 41 6e 20 73 71  ULL..**.** An sq
2f590 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65  lite3_value obje
2f5a0 63 74 20 6d 61 79 20 62 65 20 65 69 74 68 65 72  ct may be either
2f5b0 20 22 70 72 6f 74 65 63 74 65 64 22 20 6f 72 20   "protected" or 
2f5c0 22 75 6e 70 72 6f 74 65 63 74 65 64 22 2e 0a 2a  "unprotected"..*
2f5d0 2a 20 53 6f 6d 65 20 69 6e 74 65 72 66 61 63 65  * Some interface
2f5e0 73 20 72 65 71 75 69 72 65 20 61 20 70 72 6f 74  s require a prot
2f5f0 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61  ected sqlite3_va
2f600 6c 75 65 2e 20 20 4f 74 68 65 72 20 69 6e 74 65  lue.  Other inte
2f610 72 66 61 63 65 73 0a 2a 2a 20 77 69 6c 6c 20 61  rfaces.** will a
2f620 63 63 65 70 74 20 65 69 74 68 65 72 20 61 20 70  ccept either a p
2f630 72 6f 74 65 63 74 65 64 20 6f 72 20 61 6e 20 75  rotected or an u
2f640 6e 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74  nprotected sqlit
2f650 65 33 5f 76 61 6c 75 65 2e 0a 2a 2a 20 45 76 65  e3_value..** Eve
2f660 72 79 20 69 6e 74 65 72 66 61 63 65 20 74 68 61  ry interface tha
2f670 74 20 61 63 63 65 70 74 73 20 73 71 6c 69 74 65  t accepts sqlite
2f680 33 5f 76 61 6c 75 65 20 61 72 67 75 6d 65 6e 74  3_value argument
2f690 73 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 77  s specifies.** w
2f6a0 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 69 74  hether or not it
2f6b0 20 72 65 71 75 69 72 65 73 20 61 20 70 72 6f 74   requires a prot
2f6c0 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61  ected sqlite3_va
2f6d0 6c 75 65 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71  lue.  The.** [sq
2f6e0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 75 70 28  lite3_value_dup(
2f6f0 29 5d 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e  )] interface can
2f700 20 62 65 20 75 73 65 64 20 74 6f 20 63 6f 6e 73   be used to cons
2f710 74 72 75 63 74 20 61 20 6e 65 77 20 0a 2a 2a 20  truct a new .** 
2f720 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65  protected sqlite
2f730 33 5f 76 61 6c 75 65 20 66 72 6f 6d 20 61 6e 20  3_value from an 
2f740 75 6e 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69  unprotected sqli
2f750 74 65 33 5f 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a  te3_value..**.**
2f760 20 54 68 65 20 74 65 72 6d 73 20 22 70 72 6f 74   The terms "prot
2f770 65 63 74 65 64 22 20 61 6e 64 20 22 75 6e 70 72  ected" and "unpr
2f780 6f 74 65 63 74 65 64 22 20 72 65 66 65 72 20 74  otected" refer t
2f790 6f 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  o whether or not
2f7a0 0a 2a 2a 20 61 20 6d 75 74 65 78 20 69 73 20 68  .** a mutex is h
2f7b0 65 6c 64 2e 20 20 41 6e 20 69 6e 74 65 72 6e 61  eld.  An interna
2f7c0 6c 20 6d 75 74 65 78 20 69 73 20 68 65 6c 64 20  l mutex is held 
2f7d0 66 6f 72 20 61 20 70 72 6f 74 65 63 74 65 64 0a  for a protected.
2f7e0 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ** sqlite3_value
2f7f0 20 6f 62 6a 65 63 74 20 62 75 74 20 6e 6f 20 6d   object but no m
2f800 75 74 65 78 20 69 73 20 68 65 6c 64 20 66 6f 72  utex is held for
2f810 20 61 6e 20 75 6e 70 72 6f 74 65 63 74 65 64 0a   an unprotected.
2f820 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ** sqlite3_value
2f830 20 6f 62 6a 65 63 74 2e 20 20 49 66 20 53 51 4c   object.  If SQL
2f840 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
2f850 74 6f 20 62 65 20 73 69 6e 67 6c 65 2d 74 68 72  to be single-thr
2f860 65 61 64 65 64 0a 2a 2a 20 28 77 69 74 68 20 5b  eaded.** (with [
2f870 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
2f880 45 3d 30 5d 20 61 6e 64 20 77 69 74 68 20 5b 73  E=0] and with [s
2f890 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61 66  qlite3_threadsaf
2f8a0 65 28 29 5d 20 72 65 74 75 72 6e 69 6e 67 20 30  e()] returning 0
2f8b0 29 0a 2a 2a 20 6f 72 20 69 66 20 53 51 4c 69 74  ).** or if SQLit
2f8c0 65 20 69 73 20 72 75 6e 20 69 6e 20 6f 6e 65 20  e is run in one 
2f8d0 6f 66 20 72 65 64 75 63 65 64 20 6d 75 74 65 78  of reduced mutex
2f8e0 20 6d 6f 64 65 73 20 0a 2a 2a 20 5b 53 51 4c 49   modes .** [SQLI
2f8f0 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
2f900 54 48 52 45 41 44 5d 20 6f 72 20 5b 53 51 4c 49  THREAD] or [SQLI
2f910 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54  TE_CONFIG_MULTIT
2f920 48 52 45 41 44 5d 0a 2a 2a 20 74 68 65 6e 20 74  HREAD].** then t
2f930 68 65 72 65 20 69 73 20 6e 6f 20 64 69 73 74 69  here is no disti
2f940 6e 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 70  nction between p
2f950 72 6f 74 65 63 74 65 64 20 61 6e 64 20 75 6e 70  rotected and unp
2f960 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69  rotected.** sqli
2f970 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74  te3_value object
2f980 73 20 61 6e 64 20 74 68 65 79 20 63 61 6e 20 62  s and they can b
2f990 65 20 75 73 65 64 20 69 6e 74 65 72 63 68 61 6e  e used interchan
2f9a0 67 65 61 62 6c 79 2e 20 20 48 6f 77 65 76 65 72  geably.  However
2f9b0 2c 0a 2a 2a 20 66 6f 72 20 6d 61 78 69 6d 75 6d  ,.** for maximum
2f9c0 20 63 6f 64 65 20 70 6f 72 74 61 62 69 6c 69 74   code portabilit
2f9d0 79 20 69 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e  y it is recommen
2f9e0 64 65 64 20 74 68 61 74 20 61 70 70 6c 69 63 61  ded that applica
2f9f0 74 69 6f 6e 73 0a 2a 2a 20 73 74 69 6c 6c 20 6d  tions.** still m
2fa00 61 6b 65 20 74 68 65 20 64 69 73 74 69 6e 63 74  ake the distinct
2fa10 69 6f 6e 20 62 65 74 77 65 65 6e 20 70 72 6f 74  ion between prot
2fa20 65 63 74 65 64 20 61 6e 64 20 75 6e 70 72 6f 74  ected and unprot
2fa30 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33  ected.** sqlite3
2fa40 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 65  _value objects e
2fa50 76 65 6e 20 77 68 65 6e 20 6e 6f 74 20 73 74 72  ven when not str
2fa60 69 63 74 6c 79 20 72 65 71 75 69 72 65 64 2e 0a  ictly required..
2fa70 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
2fa80 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73  e3_value objects
2fa90 20 74 68 61 74 20 61 72 65 20 70 61 73 73 65 64   that are passed
2faa0 20 61 73 20 70 61 72 61 6d 65 74 65 72 73 20 69   as parameters i
2fab0 6e 74 6f 20 74 68 65 0a 2a 2a 20 69 6d 70 6c 65  nto the.** imple
2fac0 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 61 70  mentation of [ap
2fad0 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
2fae0 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d  d SQL functions]
2faf0 20 61 72 65 20 70 72 6f 74 65 63 74 65 64 2e 0a   are protected..
2fb00 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
2fb10 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 72 65 74  value object ret
2fb20 75 72 6e 65 64 20 62 79 0a 2a 2a 20 5b 73 71 6c  urned by.** [sql
2fb30 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 76 61 6c 75  ite3_column_valu
2fb40 65 28 29 5d 20 69 73 20 75 6e 70 72 6f 74 65 63  e()] is unprotec
2fb50 74 65 64 2e 0a 2a 2a 20 55 6e 70 72 6f 74 65 63  ted..** Unprotec
2fb60 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ted sqlite3_valu
2fb70 65 20 6f 62 6a 65 63 74 73 20 6d 61 79 20 6f 6e  e objects may on
2fb80 6c 79 20 62 65 20 75 73 65 64 20 61 73 20 61 72  ly be used as ar
2fb90 67 75 6d 65 6e 74 73 0a 2a 2a 20 74 6f 20 5b 73  guments.** to [s
2fba0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61  qlite3_result_va
2fbb0 6c 75 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  lue()], [sqlite3
2fbc0 5f 62 69 6e 64 5f 76 61 6c 75 65 28 29 5d 2c 20  _bind_value()], 
2fbd0 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  and.** [sqlite3_
2fbe0 76 61 6c 75 65 5f 64 75 70 28 29 5d 2e 0a 2a 2a  value_dup()]..**
2fbf0 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 61   The [sqlite3_va
2fc00 6c 75 65 5f 62 6c 6f 62 20 7c 20 73 71 6c 69 74  lue_blob | sqlit
2fc10 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 29 5d  e3_value_type()]
2fc20 20 66 61 6d 69 6c 79 20 6f 66 0a 2a 2a 20 69 6e   family of.** in
2fc30 74 65 72 66 61 63 65 73 20 72 65 71 75 69 72 65  terfaces require
2fc40 20 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74   protected sqlit
2fc50 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73  e3_value objects
2fc60 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
2fc70 75 63 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  uct sqlite3_valu
2fc80 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 3b  e sqlite3_value;
2fc90 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
2fca0 3a 20 53 51 4c 20 46 75 6e 63 74 69 6f 6e 20 43  : SQL Function C
2fcb0 6f 6e 74 65 78 74 20 4f 62 6a 65 63 74 0a 2a 2a  ontext Object.**
2fcc0 0a 2a 2a 20 54 68 65 20 63 6f 6e 74 65 78 74 20  .** The context 
2fcd0 69 6e 20 77 68 69 63 68 20 61 6e 20 53 51 4c 20  in which an SQL 
2fce0 66 75 6e 63 74 69 6f 6e 20 65 78 65 63 75 74 65  function execute
2fcf0 73 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 61  s is stored in a
2fd00 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6e  n.** sqlite3_con
2fd10 74 65 78 74 20 6f 62 6a 65 63 74 2e 20 20 5e 41  text object.  ^A
2fd20 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 73   pointer to an s
2fd30 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 6f  qlite3_context o
2fd40 62 6a 65 63 74 0a 2a 2a 20 69 73 20 61 6c 77 61  bject.** is alwa
2fd50 79 73 20 66 69 72 73 74 20 70 61 72 61 6d 65 74  ys first paramet
2fd60 65 72 20 74 6f 20 5b 61 70 70 6c 69 63 61 74 69  er to [applicati
2fd70 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66  on-defined SQL f
2fd80 75 6e 63 74 69 6f 6e 73 5d 2e 0a 2a 2a 20 54 68  unctions]..** Th
2fd90 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65  e application-de
2fda0 66 69 6e 65 64 20 53 51 4c 20 66 75 6e 63 74 69  fined SQL functi
2fdb0 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  on implementatio
2fdc0 6e 20 77 69 6c 6c 20 70 61 73 73 20 74 68 69 73  n will pass this
2fdd0 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 74 68 72 6f  .** pointer thro
2fde0 75 67 68 20 69 6e 74 6f 20 63 61 6c 6c 73 20 74  ugh into calls t
2fdf0 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c  o [sqlite3_resul
2fe00 74 5f 69 6e 74 20 7c 20 73 71 6c 69 74 65 33 5f  t_int | sqlite3_
2fe10 72 65 73 75 6c 74 28 29 5d 2c 0a 2a 2a 20 5b 73  result()],.** [s
2fe20 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74 65  qlite3_aggregate
2fe30 5f 63 6f 6e 74 65 78 74 28 29 5d 2c 20 5b 73 71  _context()], [sq
2fe40 6c 69 74 65 33 5f 75 73 65 72 5f 64 61 74 61 28  lite3_user_data(
2fe50 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  )],.** [sqlite3_
2fe60 63 6f 6e 74 65 78 74 5f 64 62 5f 68 61 6e 64 6c  context_db_handl
2fe70 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 67  e()], [sqlite3_g
2fe80 65 74 5f 61 75 78 64 61 74 61 28 29 5d 2c 0a 2a  et_auxdata()],.*
2fe90 2a 20 61 6e 64 2f 6f 72 20 5b 73 71 6c 69 74 65  * and/or [sqlite
2fea0 33 5f 73 65 74 5f 61 75 78 64 61 74 61 28 29 5d  3_set_auxdata()]
2feb0 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
2fec0 75 63 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74  uct sqlite3_cont
2fed0 65 78 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74  ext sqlite3_cont
2fee0 65 78 74 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  ext;../*.** CAPI
2fef0 33 52 45 46 3a 20 42 69 6e 64 69 6e 67 20 56 61  3REF: Binding Va
2ff00 6c 75 65 73 20 54 6f 20 50 72 65 70 61 72 65 64  lues To Prepared
2ff10 20 53 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 4b   Statements.** K
2ff20 45 59 57 4f 52 44 53 3a 20 7b 68 6f 73 74 20 70  EYWORDS: {host p
2ff30 61 72 61 6d 65 74 65 72 7d 20 7b 68 6f 73 74 20  arameter} {host 
2ff40 70 61 72 61 6d 65 74 65 72 73 7d 20 7b 68 6f 73  parameters} {hos
2ff50 74 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65  t parameter name
2ff60 7d 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b  }.** KEYWORDS: {
2ff70 53 51 4c 20 70 61 72 61 6d 65 74 65 72 7d 20 7b  SQL parameter} {
2ff80 53 51 4c 20 70 61 72 61 6d 65 74 65 72 73 7d 20  SQL parameters} 
2ff90 7b 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69  {parameter bindi
2ffa0 6e 67 7d 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  ng}.** METHOD: s
2ffb0 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a  qlite3_stmt.**.*
2ffc0 2a 20 5e 28 49 6e 20 74 68 65 20 53 51 4c 20 73  * ^(In the SQL s
2ffd0 74 61 74 65 6d 65 6e 74 20 74 65 78 74 20 69 6e  tatement text in
2ffe0 70 75 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  put to [sqlite3_
2fff0 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 61 6e  prepare_v2()] an
30000 64 20 69 74 73 20 76 61 72 69 61 6e 74 73 2c 0a  d its variants,.
30010 2a 2a 20 6c 69 74 65 72 61 6c 73 20 6d 61 79 20  ** literals may 
30020 62 65 20 72 65 70 6c 61 63 65 64 20 62 79 20 61  be replaced by a
30030 20 5b 70 61 72 61 6d 65 74 65 72 5d 20 74 68 61   [parameter] tha
30040 74 20 6d 61 74 63 68 65 73 20 6f 6e 65 20 6f 66  t matches one of
30050 20 66 6f 6c 6c 6f 77 69 6e 67 0a 2a 2a 20 74 65   following.** te
30060 6d 70 6c 61 74 65 73 3a 0a 2a 2a 0a 2a 2a 20 3c  mplates:.**.** <
30070 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 20 3f 0a 2a  ul>.** <li>  ?.*
30080 2a 20 3c 6c 69 3e 20 20 3f 4e 4e 4e 0a 2a 2a 20  * <li>  ?NNN.** 
30090 3c 6c 69 3e 20 20 3a 56 56 56 0a 2a 2a 20 3c 6c  <li>  :VVV.** <l
300a0 69 3e 20 20 40 56 56 56 0a 2a 2a 20 3c 6c 69 3e  i>  @VVV.** <li>
300b0 20 20 24 56 56 56 0a 2a 2a 20 3c 2f 75 6c 3e 0a    $VVV.** </ul>.
300c0 2a 2a 0a 2a 2a 20 49 6e 20 74 68 65 20 74 65 6d  **.** In the tem
300d0 70 6c 61 74 65 73 20 61 62 6f 76 65 2c 20 4e 4e  plates above, NN
300e0 4e 20 72 65 70 72 65 73 65 6e 74 73 20 61 6e 20  N represents an 
300f0 69 6e 74 65 67 65 72 20 6c 69 74 65 72 61 6c 2c  integer literal,
30100 0a 2a 2a 20 61 6e 64 20 56 56 56 20 72 65 70 72  .** and VVV repr
30110 65 73 65 6e 74 73 20 61 6e 20 61 6c 70 68 61 6e  esents an alphan
30120 75 6d 65 72 69 63 20 69 64 65 6e 74 69 66 69 65  umeric identifie
30130 72 2e 29 5e 20 20 5e 54 68 65 20 76 61 6c 75 65  r.)^  ^The value
30140 73 20 6f 66 20 74 68 65 73 65 0a 2a 2a 20 70 61  s of these.** pa
30150 72 61 6d 65 74 65 72 73 20 28 61 6c 73 6f 20 63  rameters (also c
30160 61 6c 6c 65 64 20 22 68 6f 73 74 20 70 61 72 61  alled "host para
30170 6d 65 74 65 72 20 6e 61 6d 65 73 22 20 6f 72 20  meter names" or 
30180 22 53 51 4c 20 70 61 72 61 6d 65 74 65 72 73 22  "SQL parameters"
30190 29 0a 2a 2a 20 63 61 6e 20 62 65 20 73 65 74 20  ).** can be set 
301a0 75 73 69 6e 67 20 74 68 65 20 73 71 6c 69 74 65  using the sqlite
301b0 33 5f 62 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69  3_bind_*() routi
301c0 6e 65 73 20 64 65 66 69 6e 65 64 20 68 65 72 65  nes defined here
301d0 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 72  ..**.** ^The fir
301e0 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
301f0 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  he sqlite3_bind_
30200 2a 28 29 20 72 6f 75 74 69 6e 65 73 20 69 73 20  *() routines is 
30210 61 6c 77 61 79 73 0a 2a 2a 20 61 20 70 6f 69 6e  always.** a poin
30220 74 65 72 20 74 6f 20 74 68 65 20 5b 73 71 6c 69  ter to the [sqli
30230 74 65 33 5f 73 74 6d 74 5d 20 6f 62 6a 65 63 74  te3_stmt] object
30240 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 0a 2a   returned from.*
30250 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
30260 72 65 5f 76 32 28 29 5d 20 6f 72 20 69 74 73 20  re_v2()] or its 
30270 76 61 72 69 61 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20  variants..**.** 
30280 5e 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75  ^The second argu
30290 6d 65 6e 74 20 69 73 20 74 68 65 20 69 6e 64 65  ment is the inde
302a0 78 20 6f 66 20 74 68 65 20 53 51 4c 20 70 61 72  x of the SQL par
302b0 61 6d 65 74 65 72 20 74 6f 20 62 65 20 73 65 74  ameter to be set
302c0 2e 0a 2a 2a 20 5e 54 68 65 20 6c 65 66 74 6d 6f  ..** ^The leftmo
302d0 73 74 20 53 51 4c 20 70 61 72 61 6d 65 74 65 72  st SQL parameter
302e0 20 68 61 73 20 61 6e 20 69 6e 64 65 78 20 6f 66   has an index of
302f0 20 31 2e 20 20 5e 57 68 65 6e 20 74 68 65 20 73   1.  ^When the s
30300 61 6d 65 20 6e 61 6d 65 64 0a 2a 2a 20 53 51 4c  ame named.** SQL
30310 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 75 73   parameter is us
30320 65 64 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63  ed more than onc
30330 65 2c 20 73 65 63 6f 6e 64 20 61 6e 64 20 73 75  e, second and su
30340 62 73 65 71 75 65 6e 74 0a 2a 2a 20 6f 63 63 75  bsequent.** occu
30350 72 72 65 6e 63 65 73 20 68 61 76 65 20 74 68 65  rrences have the
30360 20 73 61 6d 65 20 69 6e 64 65 78 20 61 73 20 74   same index as t
30370 68 65 20 66 69 72 73 74 20 6f 63 63 75 72 72 65  he first occurre
30380 6e 63 65 2e 0a 2a 2a 20 5e 54 68 65 20 69 6e 64  nce..** ^The ind
30390 65 78 20 66 6f 72 20 6e 61 6d 65 64 20 70 61 72  ex for named par
303a0 61 6d 65 74 65 72 73 20 63 61 6e 20 62 65 20 6c  ameters can be l
303b0 6f 6f 6b 65 64 20 75 70 20 75 73 69 6e 67 20 74  ooked up using t
303c0 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62  he.** [sqlite3_b
303d0 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
303e0 64 65 78 28 29 5d 20 41 50 49 20 69 66 20 64 65  dex()] API if de
303f0 73 69 72 65 64 2e 20 20 5e 54 68 65 20 69 6e 64  sired.  ^The ind
30400 65 78 0a 2a 2a 20 66 6f 72 20 22 3f 4e 4e 4e 22  ex.** for "?NNN"
30410 20 70 61 72 61 6d 65 74 65 72 73 20 69 73 20 74   parameters is t
30420 68 65 20 76 61 6c 75 65 20 6f 66 20 4e 4e 4e 2e  he value of NNN.
30430 0a 2a 2a 20 5e 54 68 65 20 4e 4e 4e 20 76 61 6c  .** ^The NNN val
30440 75 65 20 6d 75 73 74 20 62 65 20 62 65 74 77 65  ue must be betwe
30450 65 6e 20 31 20 61 6e 64 20 74 68 65 20 5b 73 71  en 1 and the [sq
30460 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 0a 2a  lite3_limit()].*
30470 2a 20 70 61 72 61 6d 65 74 65 72 20 5b 53 51 4c  * parameter [SQL
30480 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49 41 42  ITE_LIMIT_VARIAB
30490 4c 45 5f 4e 55 4d 42 45 52 5d 20 28 64 65 66 61  LE_NUMBER] (defa
304a0 75 6c 74 20 76 61 6c 75 65 3a 20 39 39 39 29 2e  ult value: 999).
304b0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 74 68 69 72  .**.** ^The thir
304c0 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68  d argument is th
304d0 65 20 76 61 6c 75 65 20 74 6f 20 62 69 6e 64 20  e value to bind 
304e0 74 6f 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  to the parameter
304f0 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 74 68 69  ..** ^If the thi
30500 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  rd parameter to 
30510 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
30520 74 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 62  t() or sqlite3_b
30530 69 6e 64 5f 74 65 78 74 31 36 28 29 0a 2a 2a 20  ind_text16().** 
30540 6f 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  or sqlite3_bind_
30550 62 6c 6f 62 28 29 20 69 73 20 61 20 4e 55 4c 4c  blob() is a NULL
30560 20 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 74 68   pointer then th
30570 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
30580 65 72 0a 2a 2a 20 69 73 20 69 67 6e 6f 72 65 64  er.** is ignored
30590 20 61 6e 64 20 74 68 65 20 65 6e 64 20 72 65 73   and the end res
305a0 75 6c 74 20 69 73 20 74 68 65 20 73 61 6d 65 20  ult is the same 
305b0 61 73 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  as sqlite3_bind_
305c0 6e 75 6c 6c 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 28  null()..**.** ^(
305d0 49 6e 20 74 68 6f 73 65 20 72 6f 75 74 69 6e 65  In those routine
305e0 73 20 74 68 61 74 20 68 61 76 65 20 61 20 66 6f  s that have a fo
305f0 75 72 74 68 20 61 72 67 75 6d 65 6e 74 2c 20 69  urth argument, i
30600 74 73 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a  ts value is the.
30610 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  ** number of byt
30620 65 73 20 69 6e 20 74 68 65 20 70 61 72 61 6d 65  es in the parame
30630 74 65 72 2e 20 20 54 6f 20 62 65 20 63 6c 65 61  ter.  To be clea
30640 72 3a 20 74 68 65 20 76 61 6c 75 65 20 69 73 20  r: the value is 
30650 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f 66  the.** number of
30660 20 3c 75 3e 62 79 74 65 73 3c 2f 75 3e 20 69 6e   <u>bytes</u> in
30670 20 74 68 65 20 76 61 6c 75 65 2c 20 6e 6f 74 20   the value, not 
30680 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 68  the number of ch
30690 61 72 61 63 74 65 72 73 2e 29 5e 0a 2a 2a 20 5e  aracters.)^.** ^
306a0 49 66 20 74 68 65 20 66 6f 75 72 74 68 20 70 61  If the fourth pa
306b0 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74  rameter to sqlit
306c0 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 29 20 6f  e3_bind_text() o
306d0 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  r sqlite3_bind_t
306e0 65 78 74 31 36 28 29 0a 2a 2a 20 69 73 20 6e 65  ext16().** is ne
306f0 67 61 74 69 76 65 2c 20 74 68 65 6e 20 74 68 65  gative, then the
30700 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 73   length of the s
30710 74 72 69 6e 67 20 69 73 0a 2a 2a 20 74 68 65 20  tring is.** the 
30720 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
30730 75 70 20 74 6f 20 74 68 65 20 66 69 72 73 74 20  up to the first 
30740 7a 65 72 6f 20 74 65 72 6d 69 6e 61 74 6f 72 2e  zero terminator.
30750 0a 2a 2a 20 49 66 20 74 68 65 20 66 6f 75 72 74  .** If the fourt
30760 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  h parameter to s
30770 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
30780 28 29 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20  () is negative, 
30790 74 68 65 6e 0a 2a 2a 20 74 68 65 20 62 65 68 61  then.** the beha
307a0 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65  vior is undefine
307b0 64 2e 0a 2a 2a 20 49 66 20 61 20 6e 6f 6e 2d 6e  d..** If a non-n
307c0 65 67 61 74 69 76 65 20 66 6f 75 72 74 68 20 70  egative fourth p
307d0 61 72 61 6d 65 74 65 72 20 69 73 20 70 72 6f 76  arameter is prov
307e0 69 64 65 64 20 74 6f 20 73 71 6c 69 74 65 33 5f  ided to sqlite3_
307f0 62 69 6e 64 5f 74 65 78 74 28 29 0a 2a 2a 20 6f  bind_text().** o
30800 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  r sqlite3_bind_t
30810 65 78 74 31 36 28 29 20 6f 72 20 73 71 6c 69 74  ext16() or sqlit
30820 65 33 5f 62 69 6e 64 5f 74 65 78 74 36 34 28 29  e3_bind_text64()
30830 20 74 68 65 6e 0a 2a 2a 20 74 68 61 74 20 70 61   then.** that pa
30840 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20  rameter must be 
30850 74 68 65 20 62 79 74 65 20 6f 66 66 73 65 74 0a  the byte offset.
30860 2a 2a 20 77 68 65 72 65 20 74 68 65 20 4e 55 4c  ** where the NUL
30870 20 74 65 72 6d 69 6e 61 74 6f 72 20 77 6f 75 6c   terminator woul
30880 64 20 6f 63 63 75 72 20 61 73 73 75 6d 69 6e 67  d occur assuming
30890 20 74 68 65 20 73 74 72 69 6e 67 20 77 65 72 65   the string were
308a0 20 4e 55 4c 0a 2a 2a 20 74 65 72 6d 69 6e 61 74   NUL.** terminat
308b0 65 64 2e 20 20 49 66 20 61 6e 79 20 4e 55 4c 20  ed.  If any NUL 
308c0 63 68 61 72 61 63 74 65 72 73 20 6f 63 63 75 72  characters occur
308d0 20 61 74 20 62 79 74 65 20 6f 66 66 73 65 74 73   at byte offsets
308e0 20 6c 65 73 73 20 74 68 61 6e 20 0a 2a 2a 20 74   less than .** t
308f0 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
30900 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72  fourth parameter
30910 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74   then the result
30920 69 6e 67 20 73 74 72 69 6e 67 20 76 61 6c 75 65  ing string value
30930 20 77 69 6c 6c 0a 2a 2a 20 63 6f 6e 74 61 69 6e   will.** contain
30940 20 65 6d 62 65 64 64 65 64 20 4e 55 4c 73 2e 20   embedded NULs. 
30950 20 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 65   The result of e
30960 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 76 6f 6c  xpressions invol
30970 76 69 6e 67 20 73 74 72 69 6e 67 73 0a 2a 2a 20  ving strings.** 
30980 77 69 74 68 20 65 6d 62 65 64 64 65 64 20 4e 55  with embedded NU
30990 4c 73 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e  Ls is undefined.
309a0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 66 74  .**.** ^The fift
309b0 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68  h argument to th
309c0 65 20 42 4c 4f 42 20 61 6e 64 20 73 74 72 69 6e  e BLOB and strin
309d0 67 20 62 69 6e 64 69 6e 67 20 69 6e 74 65 72 66  g binding interf
309e0 61 63 65 73 0a 2a 2a 20 69 73 20 61 20 64 65 73  aces.** is a des
309f0 74 72 75 63 74 6f 72 20 75 73 65 64 20 74 6f 20  tructor used to 
30a00 64 69 73 70 6f 73 65 20 6f 66 20 74 68 65 20 42  dispose of the B
30a10 4c 4f 42 20 6f 72 0a 2a 2a 20 73 74 72 69 6e 67  LOB or.** string
30a20 20 61 66 74 65 72 20 53 51 4c 69 74 65 20 68 61   after SQLite ha
30a30 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68 20  s finished with 
30a40 69 74 2e 20 20 5e 54 68 65 20 64 65 73 74 72 75  it.  ^The destru
30a50 63 74 6f 72 20 69 73 20 63 61 6c 6c 65 64 0a 2a  ctor is called.*
30a60 2a 20 74 6f 20 64 69 73 70 6f 73 65 20 6f 66 20  * to dispose of 
30a70 74 68 65 20 42 4c 4f 42 20 6f 72 20 73 74 72 69  the BLOB or stri
30a80 6e 67 20 65 76 65 6e 20 69 66 20 74 68 65 20 63  ng even if the c
30a90 61 6c 6c 20 74 6f 20 62 69 6e 64 20 41 50 49 20  all to bind API 
30aa0 66 61 69 6c 73 2e 0a 2a 2a 20 5e 49 66 20 74 68  fails..** ^If th
30ab0 65 20 66 69 66 74 68 20 61 72 67 75 6d 65 6e 74  e fifth argument
30ac0 20 69 73 0a 2a 2a 20 74 68 65 20 73 70 65 63 69   is.** the speci
30ad0 61 6c 20 76 61 6c 75 65 20 5b 53 51 4c 49 54 45  al value [SQLITE
30ae0 5f 53 54 41 54 49 43 5d 2c 20 74 68 65 6e 20 53  _STATIC], then S
30af0 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74 68  QLite assumes th
30b00 61 74 20 74 68 65 0a 2a 2a 20 69 6e 66 6f 72 6d  at the.** inform
30b10 61 74 69 6f 6e 20 69 73 20 69 6e 20 73 74 61 74  ation is in stat
30b20 69 63 2c 20 75 6e 6d 61 6e 61 67 65 64 20 73 70  ic, unmanaged sp
30b30 61 63 65 20 61 6e 64 20 64 6f 65 73 20 6e 6f 74  ace and does not
30b40 20 6e 65 65 64 20 74 6f 20 62 65 20 66 72 65 65   need to be free
30b50 64 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 69  d..** ^If the fi
30b60 66 74 68 20 61 72 67 75 6d 65 6e 74 20 68 61 73  fth argument has
30b70 20 74 68 65 20 76 61 6c 75 65 20 5b 53 51 4c 49   the value [SQLI
30b80 54 45 5f 54 52 41 4e 53 49 45 4e 54 5d 2c 20 74  TE_TRANSIENT], t
30b90 68 65 6e 0a 2a 2a 20 53 51 4c 69 74 65 20 6d 61  hen.** SQLite ma
30ba0 6b 65 73 20 69 74 73 20 6f 77 6e 20 70 72 69 76  kes its own priv
30bb0 61 74 65 20 63 6f 70 79 20 6f 66 20 74 68 65 20  ate copy of the 
30bc0 64 61 74 61 20 69 6d 6d 65 64 69 61 74 65 6c 79  data immediately
30bd0 2c 20 62 65 66 6f 72 65 0a 2a 2a 20 74 68 65 20  , before.** the 
30be0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29  sqlite3_bind_*()
30bf0 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
30c00 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 69 78  ..**.** ^The six
30c10 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73  th argument to s
30c20 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
30c30 36 34 28 29 20 6d 75 73 74 20 62 65 20 6f 6e 65  64() must be one
30c40 20 6f 66 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 55   of.** [SQLITE_U
30c50 54 46 38 5d 2c 20 5b 53 51 4c 49 54 45 5f 55 54  TF8], [SQLITE_UT
30c60 46 31 36 5d 2c 20 5b 53 51 4c 49 54 45 5f 55 54  F16], [SQLITE_UT
30c70 46 31 36 42 45 5d 2c 20 6f 72 20 5b 53 51 4c 49  F16BE], or [SQLI
30c80 54 45 5f 55 54 46 31 36 4c 45 5d 0a 2a 2a 20 74  TE_UTF16LE].** t
30c90 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 65 6e  o specify the en
30ca0 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 74 65  coding of the te
30cb0 78 74 20 69 6e 20 74 68 65 20 74 68 69 72 64 20  xt in the third 
30cc0 70 61 72 61 6d 65 74 65 72 2e 20 20 49 66 0a 2a  parameter.  If.*
30cd0 2a 20 74 68 65 20 73 69 78 74 68 20 61 72 67 75  * the sixth argu
30ce0 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f  ment to sqlite3_
30cf0 62 69 6e 64 5f 74 65 78 74 36 34 28 29 20 69 73  bind_text64() is
30d00 20 6e 6f 74 20 6f 6e 65 20 6f 66 20 74 68 65 0a   not one of the.
30d10 2a 2a 20 61 6c 6c 6f 77 65 64 20 76 61 6c 75 65  ** allowed value
30d20 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 2c 20 6f  s shown above, o
30d30 72 20 69 66 20 74 68 65 20 74 65 78 74 20 65 6e  r if the text en
30d40 63 6f 64 69 6e 67 20 69 73 20 64 69 66 66 65 72  coding is differ
30d50 65 6e 74 0a 2a 2a 20 66 72 6f 6d 20 74 68 65 20  ent.** from the 
30d60 65 6e 63 6f 64 69 6e 67 20 73 70 65 63 69 66 69  encoding specifi
30d70 65 64 20 62 79 20 74 68 65 20 73 69 78 74 68 20  ed by the sixth 
30d80 70 61 72 61 6d 65 74 65 72 2c 20 74 68 65 6e 20  parameter, then 
30d90 74 68 65 20 62 65 68 61 76 69 6f 72 0a 2a 2a 20  the behavior.** 
30da0 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a  is undefined..**
30db0 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
30dc0 5f 62 69 6e 64 5f 7a 65 72 6f 62 6c 6f 62 28 29  _bind_zeroblob()
30dd0 20 72 6f 75 74 69 6e 65 20 62 69 6e 64 73 20 61   routine binds a
30de0 20 42 4c 4f 42 20 6f 66 20 6c 65 6e 67 74 68 20   BLOB of length 
30df0 4e 20 74 68 61 74 0a 2a 2a 20 69 73 20 66 69 6c  N that.** is fil
30e00 6c 65 64 20 77 69 74 68 20 7a 65 72 6f 65 73 2e  led with zeroes.
30e10 20 20 5e 41 20 7a 65 72 6f 62 6c 6f 62 20 75 73    ^A zeroblob us
30e20 65 73 20 61 20 66 69 78 65 64 20 61 6d 6f 75 6e  es a fixed amoun
30e30 74 20 6f 66 20 6d 65 6d 6f 72 79 0a 2a 2a 20 28  t of memory.** (
30e40 6a 75 73 74 20 61 6e 20 69 6e 74 65 67 65 72 20  just an integer 
30e50 74 6f 20 68 6f 6c 64 20 69 74 73 20 73 69 7a 65  to hold its size
30e60 29 20 77 68 69 6c 65 20 69 74 20 69 73 20 62 65  ) while it is be
30e70 69 6e 67 20 70 72 6f 63 65 73 73 65 64 2e 0a 2a  ing processed..*
30e80 2a 20 5a 65 72 6f 62 6c 6f 62 73 20 61 72 65 20  * Zeroblobs are 
30e90 69 6e 74 65 6e 64 65 64 20 74 6f 20 73 65 72 76  intended to serv
30ea0 65 20 61 73 20 70 6c 61 63 65 68 6f 6c 64 65 72  e as placeholder
30eb0 73 20 66 6f 72 20 42 4c 4f 42 73 20 77 68 6f 73  s for BLOBs whos
30ec0 65 0a 2a 2a 20 63 6f 6e 74 65 6e 74 20 69 73 20  e.** content is 
30ed0 6c 61 74 65 72 20 77 72 69 74 74 65 6e 20 75 73  later written us
30ee0 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  ing.** [sqlite3_
30ef0 62 6c 6f 62 5f 6f 70 65 6e 20 7c 20 69 6e 63 72  blob_open | incr
30f00 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f 4f  emental BLOB I/O
30f10 5d 20 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 20 5e  ] routines..** ^
30f20 41 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75 65  A negative value
30f30 20 66 6f 72 20 74 68 65 20 7a 65 72 6f 62 6c 6f   for the zeroblo
30f40 62 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20 7a  b results in a z
30f50 65 72 6f 2d 6c 65 6e 67 74 68 20 42 4c 4f 42 2e  ero-length BLOB.
30f60 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
30f70 74 65 33 5f 62 69 6e 64 5f 70 6f 69 6e 74 65 72  te3_bind_pointer
30f80 28 53 2c 49 2c 50 2c 54 2c 44 29 20 72 6f 75 74  (S,I,P,T,D) rout
30f90 69 6e 65 20 63 61 75 73 65 73 20 74 68 65 20 49  ine causes the I
30fa0 2d 74 68 20 70 61 72 61 6d 65 74 65 72 20 69 6e  -th parameter in
30fb0 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74  .** [prepared st
30fc0 61 74 65 6d 65 6e 74 5d 20 53 20 74 6f 20 68 61  atement] S to ha
30fd0 76 65 20 61 6e 20 53 51 4c 20 76 61 6c 75 65 20  ve an SQL value 
30fe0 6f 66 20 4e 55 4c 4c 2c 20 62 75 74 20 74 6f 20  of NULL, but to 
30ff0 61 6c 73 6f 20 62 65 0a 2a 2a 20 61 73 73 6f 63  also be.** assoc
31000 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 70  iated with the p
31010 6f 69 6e 74 65 72 20 50 20 6f 66 20 74 79 70 65  ointer P of type
31020 20 54 2e 20 20 5e 44 20 69 73 20 65 69 74 68 65   T.  ^D is eithe
31030 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  r a NULL pointer
31040 20 6f 72 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72   or.** a pointer
31050 20 74 6f 20 61 20 64 65 73 74 72 75 63 74 6f 72   to a destructor
31060 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 50 2e   function for P.
31070 20 5e 53 51 4c 69 74 65 20 77 69 6c 6c 20 69 6e   ^SQLite will in
31080 76 6f 6b 65 20 74 68 65 0a 2a 2a 20 64 65 73 74  voke the.** dest
31090 72 75 63 74 6f 72 20 44 20 77 69 74 68 20 61 20  ructor D with a 
310a0 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20  single argument 
310b0 6f 66 20 50 20 77 68 65 6e 20 69 74 20 69 73 20  of P when it is 
310c0 66 69 6e 69 73 68 65 64 20 75 73 69 6e 67 0a 2a  finished using.*
310d0 2a 20 50 2e 20 20 54 68 65 20 54 20 70 61 72 61  * P.  The T para
310e0 6d 65 74 65 72 20 73 68 6f 75 6c 64 20 62 65 20  meter should be 
310f0 61 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 2c  a static string,
31100 20 70 72 65 66 65 72 61 62 6c 79 20 61 20 73 74   preferably a st
31110 72 69 6e 67 0a 2a 2a 20 6c 69 74 65 72 61 6c 2e  ring.** literal.
31120 20 54 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e   The sqlite3_bin
31130 64 5f 70 6f 69 6e 74 65 72 28 29 20 72 6f 75 74  d_pointer() rout
31140 69 6e 65 20 69 73 20 70 61 72 74 20 6f 66 20 74  ine is part of t
31150 68 65 0a 2a 2a 20 5b 70 6f 69 6e 74 65 72 20 70  he.** [pointer p
31160 61 73 73 69 6e 67 20 69 6e 74 65 72 66 61 63 65  assing interface
31170 5d 20 61 64 64 65 64 20 66 6f 72 20 53 51 4c 69  ] added for SQLi
31180 74 65 20 33 2e 32 30 2e 30 2e 0a 2a 2a 0a 2a 2a  te 3.20.0..**.**
31190 20 5e 49 66 20 61 6e 79 20 6f 66 20 74 68 65 20   ^If any of the 
311a0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29  sqlite3_bind_*()
311b0 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 63 61   routines are ca
311c0 6c 6c 65 64 20 77 69 74 68 20 61 20 4e 55 4c 4c  lled with a NULL
311d0 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 66 6f 72 20   pointer.** for 
311e0 74 68 65 20 5b 70 72 65 70 61 72 65 64 20 73 74  the [prepared st
311f0 61 74 65 6d 65 6e 74 5d 20 6f 72 20 77 69 74 68  atement] or with
31200 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74   a prepared stat
31210 65 6d 65 6e 74 20 66 6f 72 20 77 68 69 63 68 0a  ement for which.
31220 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  ** [sqlite3_step
31230 28 29 5d 20 68 61 73 20 62 65 65 6e 20 63 61 6c  ()] has been cal
31240 6c 65 64 20 6d 6f 72 65 20 72 65 63 65 6e 74 6c  led more recentl
31250 79 20 74 68 61 6e 20 5b 73 71 6c 69 74 65 33 5f  y than [sqlite3_
31260 72 65 73 65 74 28 29 5d 2c 0a 2a 2a 20 74 68 65  reset()],.** the
31270 6e 20 74 68 65 20 63 61 6c 6c 20 77 69 6c 6c 20  n the call will 
31280 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4d  return [SQLITE_M
31290 49 53 55 53 45 5d 2e 20 20 49 66 20 61 6e 79 20  ISUSE].  If any 
312a0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 28 29 0a  sqlite3_bind_().
312b0 2a 2a 20 72 6f 75 74 69 6e 65 20 69 73 20 70 61  ** routine is pa
312c0 73 73 65 64 20 61 20 5b 70 72 65 70 61 72 65 64  ssed a [prepared
312d0 20 73 74 61 74 65 6d 65 6e 74 5d 20 74 68 61 74   statement] that
312e0 20 68 61 73 20 62 65 65 6e 20 66 69 6e 61 6c 69   has been finali
312f0 7a 65 64 2c 20 74 68 65 0a 2a 2a 20 72 65 73 75  zed, the.** resu
31300 6c 74 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20  lt is undefined 
31310 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 68 61 72  and probably har
31320 6d 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 5e 42 69 6e  mful..**.** ^Bin
31330 64 69 6e 67 73 20 61 72 65 20 6e 6f 74 20 63 6c  dings are not cl
31340 65 61 72 65 64 20 62 79 20 74 68 65 20 5b 73 71  eared by the [sq
31350 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20 72  lite3_reset()] r
31360 6f 75 74 69 6e 65 2e 0a 2a 2a 20 5e 55 6e 62 6f  outine..** ^Unbo
31370 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 20 61  und parameters a
31380 72 65 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  re interpreted a
31390 73 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 54  s NULL..**.** ^T
313a0 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  he sqlite3_bind_
313b0 2a 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  * routines retur
313c0 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 6e  n [SQLITE_OK] on
313d0 20 73 75 63 63 65 73 73 20 6f 72 20 61 6e 0a 2a   success or an.*
313e0 2a 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 69  * [error code] i
313f0 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 73 20  f anything goes 
31400 77 72 6f 6e 67 2e 0a 2a 2a 20 5e 5b 53 51 4c 49  wrong..** ^[SQLI
31410 54 45 5f 54 4f 4f 42 49 47 5d 20 6d 69 67 68 74  TE_TOOBIG] might
31420 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66 20   be returned if 
31430 74 68 65 20 73 69 7a 65 20 6f 66 20 61 20 73 74  the size of a st
31440 72 69 6e 67 20 6f 72 20 42 4c 4f 42 0a 2a 2a 20  ring or BLOB.** 
31450 65 78 63 65 65 64 73 20 6c 69 6d 69 74 73 20 69  exceeds limits i
31460 6d 70 6f 73 65 64 20 62 79 20 5b 73 71 6c 69 74  mposed by [sqlit
31470 65 33 5f 6c 69 6d 69 74 5d 28 5b 53 51 4c 49 54  e3_limit]([SQLIT
31480 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 5d 29  E_LIMIT_LENGTH])
31490 20 6f 72 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4d   or.** [SQLITE_M
314a0 41 58 5f 4c 45 4e 47 54 48 5d 2e 0a 2a 2a 20 5e  AX_LENGTH]..** ^
314b0 5b 53 51 4c 49 54 45 5f 52 41 4e 47 45 5d 20 69  [SQLITE_RANGE] i
314c0 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68  s returned if th
314d0 65 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 69  e parameter.** i
314e0 6e 64 65 78 20 69 73 20 6f 75 74 20 6f 66 20 72  ndex is out of r
314f0 61 6e 67 65 2e 20 20 5e 5b 53 51 4c 49 54 45 5f  ange.  ^[SQLITE_
31500 4e 4f 4d 45 4d 5d 20 69 73 20 72 65 74 75 72 6e  NOMEM] is return
31510 65 64 20 69 66 20 6d 61 6c 6c 6f 63 28 29 20 66  ed if malloc() f
31520 61 69 6c 73 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20  ails..**.** See 
31530 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 62  also: [sqlite3_b
31540 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f  ind_parameter_co
31550 75 6e 74 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69  unt()],.** [sqli
31560 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
31570 65 72 5f 6e 61 6d 65 28 29 5d 2c 20 61 6e 64 20  er_name()], and 
31580 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61  [sqlite3_bind_pa
31590 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 29 5d  rameter_index()]
315a0 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33  ..*/.int sqlite3
315b0 5f 62 69 6e 64 5f 62 6c 6f 62 28 73 71 6c 69 74  _bind_blob(sqlit
315c0 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63  e3_stmt*, int, c
315d0 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 20  onst void*, int 
315e0 6e 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a  n, void(*)(void*
315f0 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f  ));.int sqlite3_
31600 62 69 6e 64 5f 62 6c 6f 62 36 34 28 73 71 6c 69  bind_blob64(sqli
31610 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20  te3_stmt*, int, 
31620 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 73 71 6c  const void*, sql
31630 69 74 65 33 5f 75 69 6e 74 36 34 2c 0a 20 20 20  ite3_uint64,.   
31640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31650 20 20 20 20 20 76 6f 69 64 28 2a 29 28 76 6f 69       void(*)(voi
31660 64 2a 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  d*));.int sqlite
31670 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28 73 71  3_bind_double(sq
31680 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
31690 2c 20 64 6f 75 62 6c 65 29 3b 0a 69 6e 74 20 73  , double);.int s
316a0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28  qlite3_bind_int(
316b0 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
316c0 6e 74 2c 20 69 6e 74 29 3b 0a 69 6e 74 20 73 71  nt, int);.int sq
316d0 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34  lite3_bind_int64
316e0 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
316f0 69 6e 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  int, sqlite3_int
31700 36 34 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  64);.int sqlite3
31710 5f 62 69 6e 64 5f 6e 75 6c 6c 28 73 71 6c 69 74  _bind_null(sqlit
31720 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 29 3b 0a  e3_stmt*, int);.
31730 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
31740 5f 74 65 78 74 28 73 71 6c 69 74 65 33 5f 73 74  _text(sqlite3_st
31750 6d 74 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 63 68  mt*,int,const ch
31760 61 72 2a 2c 69 6e 74 2c 76 6f 69 64 28 2a 29 28  ar*,int,void(*)(
31770 76 6f 69 64 2a 29 29 3b 0a 69 6e 74 20 73 71 6c  void*));.int sql
31780 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36  ite3_bind_text16
31790 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
317a0 69 6e 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a  int, const void*
317b0 2c 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76  , int, void(*)(v
317c0 6f 69 64 2a 29 29 3b 0a 69 6e 74 20 73 71 6c 69  oid*));.int sqli
317d0 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 36 34 28  te3_bind_text64(
317e0 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
317f0 6e 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c  nt, const char*,
31800 20 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 2c   sqlite3_uint64,
31810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31820 20 20 20 20 20 20 20 20 20 20 76 6f 69 64 28 2a            void(*
31830 29 28 76 6f 69 64 2a 29 2c 20 75 6e 73 69 67 6e  )(void*), unsign
31840 65 64 20 63 68 61 72 20 65 6e 63 6f 64 69 6e 67  ed char encoding
31850 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  );.int sqlite3_b
31860 69 6e 64 5f 76 61 6c 75 65 28 73 71 6c 69 74 65  ind_value(sqlite
31870 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f  3_stmt*, int, co
31880 6e 73 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  nst sqlite3_valu
31890 65 2a 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33  e*);.int sqlite3
318a0 5f 62 69 6e 64 5f 70 6f 69 6e 74 65 72 28 73 71  _bind_pointer(sq
318b0 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
318c0 2c 20 76 6f 69 64 2a 2c 20 63 6f 6e 73 74 20 63  , void*, const c
318d0 68 61 72 2a 2c 76 6f 69 64 28 2a 29 28 76 6f 69  har*,void(*)(voi
318e0 64 2a 29 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  d*));.int sqlite
318f0 33 5f 62 69 6e 64 5f 7a 65 72 6f 62 6c 6f 62 28  3_bind_zeroblob(
31900 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
31910 6e 74 2c 20 69 6e 74 20 6e 29 3b 0a 69 6e 74 20  nt, int n);.int 
31920 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 7a 65 72  sqlite3_bind_zer
31930 6f 62 6c 6f 62 36 34 28 73 71 6c 69 74 65 33 5f  oblob64(sqlite3_
31940 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 73 71 6c 69  stmt*, int, sqli
31950 74 65 33 5f 75 69 6e 74 36 34 29 3b 0a 0a 2f 2a  te3_uint64);../*
31960 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4e 75  .** CAPI3REF: Nu
31970 6d 62 65 72 20 4f 66 20 53 51 4c 20 50 61 72 61  mber Of SQL Para
31980 6d 65 74 65 72 73 0a 2a 2a 20 4d 45 54 48 4f 44  meters.** METHOD
31990 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a  : sqlite3_stmt.*
319a0 2a 0a 2a 2a 20 5e 54 68 69 73 20 72 6f 75 74 69  *.** ^This routi
319b0 6e 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  ne can be used t
319c0 6f 20 66 69 6e 64 20 74 68 65 20 6e 75 6d 62 65  o find the numbe
319d0 72 20 6f 66 20 5b 53 51 4c 20 70 61 72 61 6d 65  r of [SQL parame
319e0 74 65 72 73 5d 0a 2a 2a 20 69 6e 20 61 20 5b 70  ters].** in a [p
319f0 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
31a00 74 5d 2e 20 20 53 51 4c 20 70 61 72 61 6d 65 74  t].  SQL paramet
31a10 65 72 73 20 61 72 65 20 74 6f 6b 65 6e 73 20 6f  ers are tokens o
31a20 66 20 74 68 65 0a 2a 2a 20 66 6f 72 6d 20 22 3f  f the.** form "?
31a30 22 2c 20 22 3f 4e 4e 4e 22 2c 20 22 3a 41 41 41  ", "?NNN", ":AAA
31a40 22 2c 20 22 24 41 41 41 22 2c 20 6f 72 20 22 40  ", "$AAA", or "@
31a50 41 41 41 22 20 74 68 61 74 20 73 65 72 76 65 20  AAA" that serve 
31a60 61 73 0a 2a 2a 20 70 6c 61 63 65 68 6f 6c 64 65  as.** placeholde
31a70 72 73 20 66 6f 72 20 76 61 6c 75 65 73 20 74 68  rs for values th
31a80 61 74 20 61 72 65 20 5b 73 71 6c 69 74 65 33 5f  at are [sqlite3_
31a90 62 69 6e 64 5f 62 6c 6f 62 20 7c 20 62 6f 75 6e  bind_blob | boun
31aa0 64 5d 0a 2a 2a 20 74 6f 20 74 68 65 20 70 61 72  d].** to the par
31ab0 61 6d 65 74 65 72 73 20 61 74 20 61 20 6c 61 74  ameters at a lat
31ac0 65 72 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20 5e  er time..**.** ^
31ad0 28 54 68 69 73 20 72 6f 75 74 69 6e 65 20 61 63  (This routine ac
31ae0 74 75 61 6c 6c 79 20 72 65 74 75 72 6e 73 20 74  tually returns t
31af0 68 65 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20  he index of the 
31b00 6c 61 72 67 65 73 74 20 28 72 69 67 68 74 6d 6f  largest (rightmo
31b10 73 74 29 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  st).** parameter
31b20 2e 20 46 6f 72 20 61 6c 6c 20 66 6f 72 6d 73 20  . For all forms 
31b30 65 78 63 65 70 74 20 3f 4e 4e 4e 2c 20 74 68 69  except ?NNN, thi
31b40 73 20 77 69 6c 6c 20 63 6f 72 72 65 73 70 6f 6e  s will correspon
31b50 64 20 74 6f 20 74 68 65 0a 2a 2a 20 6e 75 6d 62  d to the.** numb
31b60 65 72 20 6f 66 20 75 6e 69 71 75 65 20 70 61 72  er of unique par
31b70 61 6d 65 74 65 72 73 2e 20 20 49 66 20 70 61 72  ameters.  If par
31b80 61 6d 65 74 65 72 73 20 6f 66 20 74 68 65 20 3f  ameters of the ?
31b90 4e 4e 4e 20 66 6f 72 6d 20 61 72 65 20 75 73 65  NNN form are use
31ba0 64 2c 0a 2a 2a 20 74 68 65 72 65 20 6d 61 79 20  d,.** there may 
31bb0 62 65 20 67 61 70 73 20 69 6e 20 74 68 65 20 6c  be gaps in the l
31bc0 69 73 74 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65 65  ist.)^.**.** See
31bd0 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f   also: [sqlite3_
31be0 62 69 6e 64 5f 62 6c 6f 62 7c 73 71 6c 69 74 65  bind_blob|sqlite
31bf0 33 5f 62 69 6e 64 28 29 5d 2c 0a 2a 2a 20 5b 73  3_bind()],.** [s
31c00 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
31c10 6d 65 74 65 72 5f 6e 61 6d 65 28 29 5d 2c 20 61  meter_name()], a
31c20 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62  nd.** [sqlite3_b
31c30 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
31c40 64 65 78 28 29 5d 2e 0a 2a 2f 0a 69 6e 74 20 73  dex()]..*/.int s
31c50 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
31c60 6d 65 74 65 72 5f 63 6f 75 6e 74 28 73 71 6c 69  meter_count(sqli
31c70 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a  te3_stmt*);../*.
31c80 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4e 61 6d  ** CAPI3REF: Nam
31c90 65 20 4f 66 20 41 20 48 6f 73 74 20 50 61 72 61  e Of A Host Para
31ca0 6d 65 74 65 72 0a 2a 2a 20 4d 45 54 48 4f 44 3a  meter.** METHOD:
31cb0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a   sqlite3_stmt.**
31cc0 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
31cd0 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
31ce0 6e 61 6d 65 28 50 2c 4e 29 20 69 6e 74 65 72 66  name(P,N) interf
31cf0 61 63 65 20 72 65 74 75 72 6e 73 0a 2a 2a 20 74  ace returns.** t
31d00 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 4e  he name of the N
31d10 2d 74 68 20 5b 53 51 4c 20 70 61 72 61 6d 65 74  -th [SQL paramet
31d20 65 72 5d 20 69 6e 20 74 68 65 20 5b 70 72 65 70  er] in the [prep
31d30 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
31d40 50 2e 0a 2a 2a 20 5e 28 53 51 4c 20 70 61 72 61  P..** ^(SQL para
31d50 6d 65 74 65 72 73 20 6f 66 20 74 68 65 20 66 6f  meters of the fo
31d60 72 6d 20 22 3f 4e 4e 4e 22 20 6f 72 20 22 3a 41  rm "?NNN" or ":A
31d70 41 41 22 20 6f 72 20 22 40 41 41 41 22 20 6f 72  AA" or "@AAA" or
31d80 20 22 24 41 41 41 22 0a 2a 2a 20 68 61 76 65 20   "$AAA".** have 
31d90 61 20 6e 61 6d 65 20 77 68 69 63 68 20 69 73 20  a name which is 
31da0 74 68 65 20 73 74 72 69 6e 67 20 22 3f 4e 4e 4e  the string "?NNN
31db0 22 20 6f 72 20 22 3a 41 41 41 22 20 6f 72 20 22  " or ":AAA" or "
31dc0 40 41 41 41 22 20 6f 72 20 22 24 41 41 41 22 0a  @AAA" or "$AAA".
31dd0 2a 2a 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e  ** respectively.
31de0 0a 2a 2a 20 49 6e 20 6f 74 68 65 72 20 77 6f 72  .** In other wor
31df0 64 73 2c 20 74 68 65 20 69 6e 69 74 69 61 6c 20  ds, the initial 
31e00 22 3a 22 20 6f 72 20 22 24 22 20 6f 72 20 22 40  ":" or "$" or "@
31e10 22 20 6f 72 20 22 3f 22 0a 2a 2a 20 69 73 20 69  " or "?".** is i
31e20 6e 63 6c 75 64 65 64 20 61 73 20 70 61 72 74 20  ncluded as part 
31e30 6f 66 20 74 68 65 20 6e 61 6d 65 2e 29 5e 0a 2a  of the name.)^.*
31e40 2a 20 5e 50 61 72 61 6d 65 74 65 72 73 20 6f 66  * ^Parameters of
31e50 20 74 68 65 20 66 6f 72 6d 20 22 3f 22 20 77 69   the form "?" wi
31e60 74 68 6f 75 74 20 61 20 66 6f 6c 6c 6f 77 69 6e  thout a followin
31e70 67 20 69 6e 74 65 67 65 72 20 68 61 76 65 20 6e  g integer have n
31e80 6f 20 6e 61 6d 65 0a 2a 2a 20 61 6e 64 20 61 72  o name.** and ar
31e90 65 20 72 65 66 65 72 72 65 64 20 74 6f 20 61 73  e referred to as
31ea0 20 22 6e 61 6d 65 6c 65 73 73 22 20 6f 72 20 22   "nameless" or "
31eb0 61 6e 6f 6e 79 6d 6f 75 73 20 70 61 72 61 6d 65  anonymous parame
31ec0 74 65 72 73 22 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  ters"..**.** ^Th
31ed0 65 20 66 69 72 73 74 20 68 6f 73 74 20 70 61 72  e first host par
31ee0 61 6d 65 74 65 72 20 68 61 73 20 61 6e 20 69 6e  ameter has an in
31ef0 64 65 78 20 6f 66 20 31 2c 20 6e 6f 74 20 30 2e  dex of 1, not 0.
31f00 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 76  .**.** ^If the v
31f10 61 6c 75 65 20 4e 20 69 73 20 6f 75 74 20 6f 66  alue N is out of
31f20 20 72 61 6e 67 65 20 6f 72 20 69 66 20 74 68 65   range or if the
31f30 20 4e 2d 74 68 20 70 61 72 61 6d 65 74 65 72 20   N-th parameter 
31f40 69 73 0a 2a 2a 20 6e 61 6d 65 6c 65 73 73 2c 20  is.** nameless, 
31f50 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74  then NULL is ret
31f60 75 72 6e 65 64 2e 20 20 5e 54 68 65 20 72 65 74  urned.  ^The ret
31f70 75 72 6e 65 64 20 73 74 72 69 6e 67 20 69 73 0a  urned string is.
31f80 2a 2a 20 61 6c 77 61 79 73 20 69 6e 20 55 54 46  ** always in UTF
31f90 2d 38 20 65 6e 63 6f 64 69 6e 67 20 65 76 65 6e  -8 encoding even
31fa0 20 69 66 20 74 68 65 20 6e 61 6d 65 64 20 70 61   if the named pa
31fb0 72 61 6d 65 74 65 72 20 77 61 73 0a 2a 2a 20 6f  rameter was.** o
31fc0 72 69 67 69 6e 61 6c 6c 79 20 73 70 65 63 69 66  riginally specif
31fd0 69 65 64 20 61 73 20 55 54 46 2d 31 36 20 69 6e  ied as UTF-16 in
31fe0 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
31ff0 65 31 36 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69  e16()],.** [sqli
32000 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32  te3_prepare16_v2
32010 28 29 5d 2c 20 6f 72 20 5b 73 71 6c 69 74 65 33  ()], or [sqlite3
32020 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d  _prepare16_v3()]
32030 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f  ..**.** See also
32040 3a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  : [sqlite3_bind_
32050 62 6c 6f 62 7c 73 71 6c 69 74 65 33 5f 62 69 6e  blob|sqlite3_bin
32060 64 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65  d()],.** [sqlite
32070 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
32080 5f 63 6f 75 6e 74 28 29 5d 2c 20 61 6e 64 0a 2a  _count()], and.*
32090 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  * [sqlite3_bind_
320a0 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28  parameter_index(
320b0 29 5d 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63 68 61  )]..*/.const cha
320c0 72 20 2a 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  r *sqlite3_bind_
320d0 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 73  parameter_name(s
320e0 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
320f0 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  t);../*.** CAPI3
32100 52 45 46 3a 20 49 6e 64 65 78 20 4f 66 20 41 20  REF: Index Of A 
32110 50 61 72 61 6d 65 74 65 72 20 57 69 74 68 20 41  Parameter With A
32120 20 47 69 76 65 6e 20 4e 61 6d 65 0a 2a 2a 20 4d   Given Name.** M
32130 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73  ETHOD: sqlite3_s
32140 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 52 65 74 75 72  tmt.**.** ^Retur
32150 6e 20 74 68 65 20 69 6e 64 65 78 20 6f 66 20 61  n the index of a
32160 6e 20 53 51 4c 20 70 61 72 61 6d 65 74 65 72 20  n SQL parameter 
32170 67 69 76 65 6e 20 69 74 73 20 6e 61 6d 65 2e 20  given its name. 
32180 20 5e 54 68 65 0a 2a 2a 20 69 6e 64 65 78 20 76   ^The.** index v
32190 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 69 73  alue returned is
321a0 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 75 73   suitable for us
321b0 65 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 0a  e as the second.
321c0 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  ** parameter to 
321d0 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c  [sqlite3_bind_bl
321e0 6f 62 7c 73 71 6c 69 74 65 33 5f 62 69 6e 64 28  ob|sqlite3_bind(
321f0 29 5d 2e 20 20 5e 41 20 7a 65 72 6f 0a 2a 2a 20  )].  ^A zero.** 
32200 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 6e  is returned if n
32210 6f 20 6d 61 74 63 68 69 6e 67 20 70 61 72 61 6d  o matching param
32220 65 74 65 72 20 69 73 20 66 6f 75 6e 64 2e 20 20  eter is found.  
32230 5e 54 68 65 20 70 61 72 61 6d 65 74 65 72 0a 2a  ^The parameter.*
32240 2a 20 6e 61 6d 65 20 6d 75 73 74 20 62 65 20 67  * name must be g
32250 69 76 65 6e 20 69 6e 20 55 54 46 2d 38 20 65 76  iven in UTF-8 ev
32260 65 6e 20 69 66 20 74 68 65 20 6f 72 69 67 69 6e  en if the origin
32270 61 6c 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20  al statement.** 
32280 77 61 73 20 70 72 65 70 61 72 65 64 20 66 72 6f  was prepared fro
32290 6d 20 55 54 46 2d 31 36 20 74 65 78 74 20 75 73  m UTF-16 text us
322a0 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  ing [sqlite3_pre
322b0 70 61 72 65 31 36 5f 76 32 28 29 5d 20 6f 72 0a  pare16_v2()] or.
322c0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ** [sqlite3_prep
322d0 61 72 65 31 36 5f 76 33 28 29 5d 2e 0a 2a 2a 0a  are16_v3()]..**.
322e0 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71  ** See also: [sq
322f0 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 7c  lite3_bind_blob|
32300 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 2c  sqlite3_bind()],
32310 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e  .** [sqlite3_bin
32320 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e  d_parameter_coun
32330 74 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73 71  t()], and.** [sq
32340 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
32350 65 74 65 72 5f 6e 61 6d 65 28 29 5d 2e 0a 2a 2f  eter_name()]..*/
32360 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e  .int sqlite3_bin
32370 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65  d_parameter_inde
32380 78 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  x(sqlite3_stmt*,
32390 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61   const char *zNa
323a0 6d 65 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  me);../*.** CAPI
323b0 33 52 45 46 3a 20 52 65 73 65 74 20 41 6c 6c 20  3REF: Reset All 
323c0 42 69 6e 64 69 6e 67 73 20 4f 6e 20 41 20 50 72  Bindings On A Pr
323d0 65 70 61 72 65 64 20 53 74 61 74 65 6d 65 6e 74  epared Statement
323e0 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
323f0 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e  te3_stmt.**.** ^
32400 43 6f 6e 74 72 61 72 79 20 74 6f 20 74 68 65 20  Contrary to the 
32410 69 6e 74 75 69 74 69 6f 6e 20 6f 66 20 6d 61 6e  intuition of man
32420 79 2c 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65  y, [sqlite3_rese
32430 74 28 29 5d 20 64 6f 65 73 20 6e 6f 74 20 72 65  t()] does not re
32440 73 65 74 0a 2a 2a 20 74 68 65 20 5b 73 71 6c 69  set.** the [sqli
32450 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 20 7c 20  te3_bind_blob | 
32460 62 69 6e 64 69 6e 67 73 5d 20 6f 6e 20 61 20 5b  bindings] on a [
32470 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
32480 6e 74 5d 2e 0a 2a 2a 20 5e 55 73 65 20 74 68 69  nt]..** ^Use thi
32490 73 20 72 6f 75 74 69 6e 65 20 74 6f 20 72 65 73  s routine to res
324a0 65 74 20 61 6c 6c 20 68 6f 73 74 20 70 61 72 61  et all host para
324b0 6d 65 74 65 72 73 20 74 6f 20 4e 55 4c 4c 2e 0a  meters to NULL..
324c0 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  */.int sqlite3_c
324d0 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28 73 71  lear_bindings(sq
324e0 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f  lite3_stmt*);../
324f0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4e  *.** CAPI3REF: N
32500 75 6d 62 65 72 20 4f 66 20 43 6f 6c 75 6d 6e 73  umber Of Columns
32510 20 49 6e 20 41 20 52 65 73 75 6c 74 20 53 65 74   In A Result Set
32520 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
32530 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e  te3_stmt.**.** ^
32540 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65  Return the numbe
32550 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
32560 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 72  the result set r
32570 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 0a 2a  eturned by the.*
32580 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  * [prepared stat
32590 65 6d 65 6e 74 5d 2e 20 5e 49 66 20 74 68 69 73  ement]. ^If this
325a0 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
325b0 20 30 2c 20 74 68 61 74 20 6d 65 61 6e 73 20 74   0, that means t
325c0 68 65 20 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64  he .** [prepared
325d0 20 73 74 61 74 65 6d 65 6e 74 5d 20 72 65 74 75   statement] retu
325e0 72 6e 73 20 6e 6f 20 64 61 74 61 20 28 66 6f 72  rns no data (for
325f0 20 65 78 61 6d 70 6c 65 20 61 6e 20 5b 55 50 44   example an [UPD
32600 41 54 45 5d 29 2e 0a 2a 2a 20 5e 48 6f 77 65 76  ATE])..** ^Howev
32610 65 72 2c 20 6a 75 73 74 20 62 65 63 61 75 73 65  er, just because
32620 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65   this routine re
32630 74 75 72 6e 73 20 61 20 70 6f 73 69 74 69 76 65  turns a positive
32640 20 6e 75 6d 62 65 72 20 64 6f 65 73 20 6e 6f 74   number does not
32650 0a 2a 2a 20 6d 65 61 6e 20 74 68 61 74 20 6f 6e  .** mean that on
32660 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f  e or more rows o
32670 66 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20 72  f data will be r
32680 65 74 75 72 6e 65 64 2e 20 20 5e 41 20 53 45 4c  eturned.  ^A SEL
32690 45 43 54 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  ECT statement.**
326a0 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 68 61 76   will always hav
326b0 65 20 61 20 70 6f 73 69 74 69 76 65 20 73 71 6c  e a positive sql
326c0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e  ite3_column_coun
326d0 74 28 29 20 62 75 74 20 64 65 70 65 6e 64 69 6e  t() but dependin
326e0 67 20 6f 6e 20 74 68 65 0a 2a 2a 20 57 48 45 52  g on the.** WHER
326f0 45 20 63 6c 61 75 73 65 20 63 6f 6e 73 74 72 61  E clause constra
32700 69 6e 74 73 20 61 6e 64 20 74 68 65 20 74 61 62  ints and the tab
32710 6c 65 20 63 6f 6e 74 65 6e 74 2c 20 69 74 20 6d  le content, it m
32720 69 67 68 74 20 72 65 74 75 72 6e 20 6e 6f 20 72  ight return no r
32730 6f 77 73 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61  ows..**.** See a
32740 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 64 61  lso: [sqlite3_da
32750 74 61 5f 63 6f 75 6e 74 28 29 5d 0a 2a 2f 0a 69  ta_count()].*/.i
32760 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nt sqlite3_colum
32770 6e 5f 63 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f  n_count(sqlite3_
32780 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f  stmt *pStmt);../
32790 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43  *.** CAPI3REF: C
327a0 6f 6c 75 6d 6e 20 4e 61 6d 65 73 20 49 6e 20 41  olumn Names In A
327b0 20 52 65 73 75 6c 74 20 53 65 74 0a 2a 2a 20 4d   Result Set.** M
327c0 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73  ETHOD: sqlite3_s
327d0 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65  tmt.**.** ^These
327e0 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e   routines return
327f0 20 74 68 65 20 6e 61 6d 65 20 61 73 73 69 67 6e   the name assign
32800 65 64 20 74 6f 20 61 20 70 61 72 74 69 63 75 6c  ed to a particul
32810 61 72 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 69 6e 20  ar column.** in 
32820 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 6f  the result set o
32830 66 20 61 20 5b 53 45 4c 45 43 54 5d 20 73 74 61  f a [SELECT] sta
32840 74 65 6d 65 6e 74 2e 20 20 5e 54 68 65 20 73 71  tement.  ^The sq
32850 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d  lite3_column_nam
32860 65 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  e().** interface
32870 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74   returns a point
32880 65 72 20 74 6f 20 61 20 7a 65 72 6f 2d 74 65 72  er to a zero-ter
32890 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
328a0 72 69 6e 67 0a 2a 2a 20 61 6e 64 20 73 71 6c 69  ring.** and sqli
328b0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
328c0 36 28 29 20 72 65 74 75 72 6e 73 20 61 20 70 6f  6() returns a po
328d0 69 6e 74 65 72 20 74 6f 20 61 20 7a 65 72 6f 2d  inter to a zero-
328e0 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 55 54  terminated.** UT
328f0 46 2d 31 36 20 73 74 72 69 6e 67 2e 20 20 5e 54  F-16 string.  ^T
32900 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74  he first paramet
32910 65 72 20 69 73 20 74 68 65 20 5b 70 72 65 70 61  er is the [prepa
32920 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 0a 2a  red statement].*
32930 2a 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74  * that implement
32940 73 20 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 73  s the [SELECT] s
32950 74 61 74 65 6d 65 6e 74 2e 20 5e 54 68 65 20 73  tatement. ^The s
32960 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
32970 69 73 20 74 68 65 0a 2a 2a 20 63 6f 6c 75 6d 6e  is the.** column
32980 20 6e 75 6d 62 65 72 2e 20 20 5e 54 68 65 20 6c   number.  ^The l
32990 65 66 74 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 69  eftmost column i
329a0 73 20 6e 75 6d 62 65 72 20 30 2e 0a 2a 2a 0a 2a  s number 0..**.*
329b0 2a 20 5e 54 68 65 20 72 65 74 75 72 6e 65 64 20  * ^The returned 
329c0 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 69  string pointer i
329d0 73 20 76 61 6c 69 64 20 75 6e 74 69 6c 20 65 69  s valid until ei
329e0 74 68 65 72 20 74 68 65 20 5b 70 72 65 70 61 72  ther the [prepar
329f0 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 0a 2a 2a  ed statement].**
32a00 20 69 73 20 64 65 73 74 72 6f 79 65 64 20 62 79   is destroyed by
32a10 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69   [sqlite3_finali
32a20 7a 65 28 29 5d 20 6f 72 20 75 6e 74 69 6c 20 74  ze()] or until t
32a30 68 65 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  he statement is 
32a40 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 2a 2a  automatically.**
32a50 20 72 65 70 72 65 70 61 72 65 64 20 62 79 20 74   reprepared by t
32a60 68 65 20 66 69 72 73 74 20 63 61 6c 6c 20 74 6f  he first call to
32a70 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
32a80 5d 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c  ] for a particul
32a90 61 72 20 72 75 6e 0a 2a 2a 20 6f 72 20 75 6e 74  ar run.** or unt
32aa0 69 6c 20 74 68 65 20 6e 65 78 74 20 63 61 6c 6c  il the next call
32ab0 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63   to.** sqlite3_c
32ac0 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 29 20 6f 72 20  olumn_name() or 
32ad0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
32ae0 61 6d 65 31 36 28 29 20 6f 6e 20 74 68 65 20 73  ame16() on the s
32af0 61 6d 65 20 63 6f 6c 75 6d 6e 2e 0a 2a 2a 0a 2a  ame column..**.*
32b00 2a 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6d 61  * ^If sqlite3_ma
32b10 6c 6c 6f 63 28 29 20 66 61 69 6c 73 20 64 75 72  lloc() fails dur
32b20 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 69  ing the processi
32b30 6e 67 20 6f 66 20 65 69 74 68 65 72 20 72 6f 75  ng of either rou
32b40 74 69 6e 65 0a 2a 2a 20 28 66 6f 72 20 65 78 61  tine.** (for exa
32b50 6d 70 6c 65 20 64 75 72 69 6e 67 20 61 20 63 6f  mple during a co
32b60 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 55 54  nversion from UT
32b70 46 2d 38 20 74 6f 20 55 54 46 2d 31 36 29 20 74  F-8 to UTF-16) t
32b80 68 65 6e 20 61 0a 2a 2a 20 4e 55 4c 4c 20 70 6f  hen a.** NULL po
32b90 69 6e 74 65 72 20 69 73 20 72 65 74 75 72 6e 65  inter is returne
32ba0 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6e 61  d..**.** ^The na
32bb0 6d 65 20 6f 66 20 61 20 72 65 73 75 6c 74 20 63  me of a result c
32bc0 6f 6c 75 6d 6e 20 69 73 20 74 68 65 20 76 61 6c  olumn is the val
32bd0 75 65 20 6f 66 20 74 68 65 20 22 41 53 22 20 63  ue of the "AS" c
32be0 6c 61 75 73 65 20 66 6f 72 0a 2a 2a 20 74 68 61  lause for.** tha
32bf0 74 20 63 6f 6c 75 6d 6e 2c 20 69 66 20 74 68 65  t column, if the
32c00 72 65 20 69 73 20 61 6e 20 41 53 20 63 6c 61 75  re is an AS clau
32c10 73 65 2e 20 20 49 66 20 74 68 65 72 65 20 69 73  se.  If there is
32c20 20 6e 6f 20 41 53 20 63 6c 61 75 73 65 0a 2a 2a   no AS clause.**
32c30 20 74 68 65 6e 20 74 68 65 20 6e 61 6d 65 20 6f   then the name o
32c40 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73 20  f the column is 
32c50 75 6e 73 70 65 63 69 66 69 65 64 20 61 6e 64 20  unspecified and 
32c60 6d 61 79 20 63 68 61 6e 67 65 20 66 72 6f 6d 0a  may change from.
32c70 2a 2a 20 6f 6e 65 20 72 65 6c 65 61 73 65 20 6f  ** one release o
32c80 66 20 53 51 4c 69 74 65 20 74 6f 20 74 68 65 20  f SQLite to the 
32c90 6e 65 78 74 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 63  next..*/.const c
32ca0 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c  har *sqlite3_col
32cb0 75 6d 6e 5f 6e 61 6d 65 28 73 71 6c 69 74 65 33  umn_name(sqlite3
32cc0 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 4e 29 3b 0a  _stmt*, int N);.
32cd0 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69  const void *sqli
32ce0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
32cf0 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  6(sqlite3_stmt*,
32d00 20 69 6e 74 20 4e 29 3b 0a 0a 2f 2a 0a 2a 2a 20   int N);../*.** 
32d10 43 41 50 49 33 52 45 46 3a 20 53 6f 75 72 63 65  CAPI3REF: Source
32d20 20 4f 66 20 44 61 74 61 20 49 6e 20 41 20 51 75   Of Data In A Qu
32d30 65 72 79 20 52 65 73 75 6c 74 0a 2a 2a 20 4d 45  ery Result.** ME
32d40 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74  THOD: sqlite3_st
32d50 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20  mt.**.** ^These 
32d60 72 6f 75 74 69 6e 65 73 20 70 72 6f 76 69 64 65  routines provide
32d70 20 61 20 6d 65 61 6e 73 20 74 6f 20 64 65 74 65   a means to dete
32d80 72 6d 69 6e 65 20 74 68 65 20 64 61 74 61 62 61  rmine the databa
32d90 73 65 2c 20 74 61 62 6c 65 2c 20 61 6e 64 0a 2a  se, table, and.*
32da0 2a 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 74  * table column t
32db0 68 61 74 20 69 73 20 74 68 65 20 6f 72 69 67 69  hat is the origi
32dc0 6e 20 6f 66 20 61 20 70 61 72 74 69 63 75 6c 61  n of a particula
32dd0 72 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 20  r result column 
32de0 69 6e 0a 2a 2a 20 5b 53 45 4c 45 43 54 5d 20 73  in.** [SELECT] s
32df0 74 61 74 65 6d 65 6e 74 2e 0a 2a 2a 20 5e 54 68  tatement..** ^Th
32e00 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 61  e name of the da
32e10 74 61 62 61 73 65 20 6f 72 20 74 61 62 6c 65 20  tabase or table 
32e20 6f 72 20 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65  or column can be
32e30 20 72 65 74 75 72 6e 65 64 20 61 73 0a 2a 2a 20   returned as.** 
32e40 65 69 74 68 65 72 20 61 20 55 54 46 2d 38 20 6f  either a UTF-8 o
32e50 72 20 55 54 46 2d 31 36 20 73 74 72 69 6e 67 2e  r UTF-16 string.
32e60 20 20 5e 54 68 65 20 5f 64 61 74 61 62 61 73 65    ^The _database
32e70 5f 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  _ routines retur
32e80 6e 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61 73  n.** the databas
32e90 65 20 6e 61 6d 65 2c 20 74 68 65 20 5f 74 61 62  e name, the _tab
32ea0 6c 65 5f 20 72 6f 75 74 69 6e 65 73 20 72 65 74  le_ routines ret
32eb0 75 72 6e 20 74 68 65 20 74 61 62 6c 65 20 6e 61  urn the table na
32ec0 6d 65 2c 20 61 6e 64 0a 2a 2a 20 74 68 65 20 6f  me, and.** the o
32ed0 72 69 67 69 6e 5f 20 72 6f 75 74 69 6e 65 73 20  rigin_ routines 
32ee0 72 65 74 75 72 6e 20 74 68 65 20 63 6f 6c 75 6d  return the colum
32ef0 6e 20 6e 61 6d 65 2e 0a 2a 2a 20 5e 54 68 65 20  n name..** ^The 
32f00 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e 67 20  returned string 
32f10 69 73 20 76 61 6c 69 64 20 75 6e 74 69 6c 20 74  is valid until t
32f20 68 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  he [prepared sta
32f30 74 65 6d 65 6e 74 5d 20 69 73 20 64 65 73 74 72  tement] is destr
32f40 6f 79 65 64 0a 2a 2a 20 75 73 69 6e 67 20 5b 73  oyed.** using [s
32f50 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
32f60 29 5d 20 6f 72 20 75 6e 74 69 6c 20 74 68 65 20  )] or until the 
32f70 73 74 61 74 65 6d 65 6e 74 20 69 73 20 61 75 74  statement is aut
32f80 6f 6d 61 74 69 63 61 6c 6c 79 0a 2a 2a 20 72 65  omatically.** re
32f90 70 72 65 70 61 72 65 64 20 62 79 20 74 68 65 20  prepared by the 
32fa0 66 69 72 73 74 20 63 61 6c 6c 20 74 6f 20 5b 73  first call to [s
32fb0 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 66  qlite3_step()] f
32fc0 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 20  or a particular 
32fd0 72 75 6e 0a 2a 2a 20 6f 72 20 75 6e 74 69 6c 20  run.** or until 
32fe0 74 68 65 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61  the same informa
32ff0 74 69 6f 6e 20 69 73 20 72 65 71 75 65 73 74 65  tion is requeste
33000 64 0a 2a 2a 20 61 67 61 69 6e 20 69 6e 20 61 20  d.** again in a 
33010 64 69 66 66 65 72 65 6e 74 20 65 6e 63 6f 64 69  different encodi
33020 6e 67 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6e  ng..**.** ^The n
33030 61 6d 65 73 20 72 65 74 75 72 6e 65 64 20 61 72  ames returned ar
33040 65 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 75  e the original u
33050 6e 2d 61 6c 69 61 73 65 64 20 6e 61 6d 65 73 20  n-aliased names 
33060 6f 66 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61  of the.** databa
33070 73 65 2c 20 74 61 62 6c 65 2c 20 61 6e 64 20 63  se, table, and c
33080 6f 6c 75 6d 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  olumn..**.** ^Th
33090 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
330a0 20 74 6f 20 74 68 65 73 65 20 69 6e 74 65 72 66   to these interf
330b0 61 63 65 73 20 69 73 20 61 20 5b 70 72 65 70 61  aces is a [prepa
330c0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e 0a  red statement]..
330d0 2a 2a 20 5e 54 68 65 73 65 20 66 75 6e 63 74 69  ** ^These functi
330e0 6f 6e 73 20 72 65 74 75 72 6e 20 69 6e 66 6f 72  ons return infor
330f0 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65  mation about the
33100 20 4e 74 68 20 72 65 73 75 6c 74 20 63 6f 6c 75   Nth result colu
33110 6d 6e 20 72 65 74 75 72 6e 65 64 20 62 79 0a 2a  mn returned by.*
33120 2a 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 2c  * the statement,
33130 20 77 68 65 72 65 20 4e 20 69 73 20 74 68 65 20   where N is the 
33140 73 65 63 6f 6e 64 20 66 75 6e 63 74 69 6f 6e 20  second function 
33150 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 20 5e 54 68  argument..** ^Th
33160 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 6f 6c 75  e left-most colu
33170 6d 6e 20 69 73 20 63 6f 6c 75 6d 6e 20 30 20 66  mn is column 0 f
33180 6f 72 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65  or these routine
33190 73 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  s..**.** ^If the
331a0 20 4e 74 68 20 63 6f 6c 75 6d 6e 20 72 65 74 75   Nth column retu
331b0 72 6e 65 64 20 62 79 20 74 68 65 20 73 74 61 74  rned by the stat
331c0 65 6d 65 6e 74 20 69 73 20 61 6e 20 65 78 70 72  ement is an expr
331d0 65 73 73 69 6f 6e 20 6f 72 0a 2a 2a 20 73 75 62  ession or.** sub
331e0 71 75 65 72 79 20 61 6e 64 20 69 73 20 6e 6f 74  query and is not
331f0 20 61 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 2c   a column value,
33200 20 74 68 65 6e 20 61 6c 6c 20 6f 66 20 74 68 65   then all of the
33210 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74  se functions ret
33220 75 72 6e 0a 2a 2a 20 4e 55 4c 4c 2e 20 20 5e 54  urn.** NULL.  ^T
33230 68 65 73 65 20 72 6f 75 74 69 6e 65 20 6d 69 67  hese routine mig
33240 68 74 20 61 6c 73 6f 20 72 65 74 75 72 6e 20 4e  ht also return N
33250 55 4c 4c 20 69 66 20 61 20 6d 65 6d 6f 72 79 20  ULL if a memory 
33260 61 6c 6c 6f 63 61 74 69 6f 6e 20 65 72 72 6f 72  allocation error
33270 0a 2a 2a 20 6f 63 63 75 72 73 2e 20 20 5e 4f 74  .** occurs.  ^Ot
33280 68 65 72 77 69 73 65 2c 20 74 68 65 79 20 72 65  herwise, they re
33290 74 75 72 6e 20 74 68 65 20 6e 61 6d 65 20 6f 66  turn the name of
332a0 20 74 68 65 20 61 74 74 61 63 68 65 64 20 64 61   the attached da
332b0 74 61 62 61 73 65 2c 20 74 61 62 6c 65 2c 0a 2a  tabase, table,.*
332c0 2a 20 6f 72 20 63 6f 6c 75 6d 6e 20 74 68 61 74  * or column that
332d0 20 71 75 65 72 79 20 72 65 73 75 6c 74 20 63 6f   query result co
332e0 6c 75 6d 6e 20 77 61 73 20 65 78 74 72 61 63 74  lumn was extract
332f0 65 64 20 66 72 6f 6d 2e 0a 2a 2a 0a 2a 2a 20 5e  ed from..**.** ^
33300 41 73 20 77 69 74 68 20 61 6c 6c 20 6f 74 68 65  As with all othe
33310 72 20 53 51 4c 69 74 65 20 41 50 49 73 2c 20 74  r SQLite APIs, t
33320 68 6f 73 65 20 77 68 6f 73 65 20 6e 61 6d 65 73  hose whose names
33330 20 65 6e 64 20 77 69 74 68 20 22 31 36 22 20 72   end with "16" r
33340 65 74 75 72 6e 0a 2a 2a 20 55 54 46 2d 31 36 20  eturn.** UTF-16 
33350 65 6e 63 6f 64 65 64 20 73 74 72 69 6e 67 73 20  encoded strings 
33360 61 6e 64 20 74 68 65 20 6f 74 68 65 72 20 66 75  and the other fu
33370 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e 20 55  nctions return U
33380 54 46 2d 38 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  TF-8..**.** ^The
33390 73 65 20 41 50 49 73 20 61 72 65 20 6f 6e 6c 79  se APIs are only
333a0 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20 74 68   available if th
333b0 65 20 6c 69 62 72 61 72 79 20 77 61 73 20 63 6f  e library was co
333c0 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 0a  mpiled with the.
333d0 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ** [SQLITE_ENABL
333e0 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54  E_COLUMN_METADAT
333f0 41 5d 20 43 2d 70 72 65 70 72 6f 63 65 73 73 6f  A] C-preprocesso
33400 72 20 73 79 6d 62 6f 6c 2e 0a 2a 2a 0a 2a 2a 20  r symbol..**.** 
33410 49 66 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 74  If two or more t
33420 68 72 65 61 64 73 20 63 61 6c 6c 20 6f 6e 65 20  hreads call one 
33430 6f 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 73 65  or more of these
33440 20 72 6f 75 74 69 6e 65 73 20 61 67 61 69 6e 73   routines agains
33450 74 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20 70 72  t the same.** pr
33460 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
33470 20 61 6e 64 20 63 6f 6c 75 6d 6e 20 61 74 20 74   and column at t
33480 68 65 20 73 61 6d 65 20 74 69 6d 65 20 74 68 65  he same time the
33490 6e 20 74 68 65 20 72 65 73 75 6c 74 73 20 61 72  n the results ar
334a0 65 0a 2a 2a 20 75 6e 64 65 66 69 6e 65 64 2e 0a  e.** undefined..
334b0 2a 2a 0a 2a 2a 20 49 66 20 74 77 6f 20 6f 72 20  **.** If two or 
334c0 6d 6f 72 65 20 74 68 72 65 61 64 73 20 63 61 6c  more threads cal
334d0 6c 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 2a 2a  l one or more.**
334e0 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
334f0 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 20 7c  _database_name |
33500 20 63 6f 6c 75 6d 6e 20 6d 65 74 61 64 61 74 61   column metadata
33510 20 69 6e 74 65 72 66 61 63 65 73 5d 0a 2a 2a 20   interfaces].** 
33520 66 6f 72 20 74 68 65 20 73 61 6d 65 20 5b 70 72  for the same [pr
33530 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
33540 5d 20 61 6e 64 20 72 65 73 75 6c 74 20 63 6f 6c  ] and result col
33550 75 6d 6e 0a 2a 2a 20 61 74 20 74 68 65 20 73 61  umn.** at the sa
33560 6d 65 20 74 69 6d 65 20 74 68 65 6e 20 74 68 65  me time then the
33570 20 72 65 73 75 6c 74 73 20 61 72 65 20 75 6e 64   results are und
33580 65 66 69 6e 65 64 2e 0a 2a 2f 0a 63 6f 6e 73 74  efined..*/.const
33590 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63   char *sqlite3_c
335a0 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e  olumn_database_n
335b0 61 6d 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ame(sqlite3_stmt
335c0 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20 76 6f  *,int);.const vo
335d0 69 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75  id *sqlite3_colu
335e0 6d 6e 5f 64 61 74 61 62 61 73 65 5f 6e 61 6d 65  mn_database_name
335f0 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  16(sqlite3_stmt*
33600 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20 63 68 61  ,int);.const cha
33610 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  r *sqlite3_colum
33620 6e 5f 74 61 62 6c 65 5f 6e 61 6d 65 28 73 71 6c  n_table_name(sql
33630 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b  ite3_stmt*,int);
33640 0a 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  .const void *sql
33650 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 61 62 6c  ite3_column_tabl
33660 65 5f 6e 61 6d 65 31 36 28 73 71 6c 69 74 65 33  e_name16(sqlite3
33670 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a 63 6f 6e  _stmt*,int);.con
33680 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
33690 5f 63 6f 6c 75 6d 6e 5f 6f 72 69 67 69 6e 5f 6e  _column_origin_n
336a0 61 6d 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ame(sqlite3_stmt
336b0 2a 2c 69 6e 74 29 3b 0a 63 6f 6e 73 74 20 76 6f  *,int);.const vo
336c0 69 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75  id *sqlite3_colu
336d0 6d 6e 5f 6f 72 69 67 69 6e 5f 6e 61 6d 65 31 36  mn_origin_name16
336e0 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69  (sqlite3_stmt*,i
336f0 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  nt);../*.** CAPI
33700 33 52 45 46 3a 20 44 65 63 6c 61 72 65 64 20 44  3REF: Declared D
33710 61 74 61 74 79 70 65 20 4f 66 20 41 20 51 75 65  atatype Of A Que
33720 72 79 20 52 65 73 75 6c 74 0a 2a 2a 20 4d 45 54  ry Result.** MET
33730 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d  HOD: sqlite3_stm
33740 74 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65 20 66 69  t.**.** ^(The fi
33750 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69 73  rst parameter is
33760 20 61 20 5b 70 72 65 70 61 72 65 64 20 73 74 61   a [prepared sta
33770 74 65 6d 65 6e 74 5d 2e 0a 2a 2a 20 49 66 20 74  tement]..** If t
33780 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 69 73  his statement is
33790 20 61 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74   a [SELECT] stat
337a0 65 6d 65 6e 74 20 61 6e 64 20 74 68 65 20 4e 74  ement and the Nt
337b0 68 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 0a  h column of the.
337c0 2a 2a 20 72 65 74 75 72 6e 65 64 20 72 65 73 75  ** returned resu
337d0 6c 74 20 73 65 74 20 6f 66 20 74 68 61 74 20 5b  lt set of that [
337e0 53 45 4c 45 43 54 5d 20 69 73 20 61 20 74 61 62  SELECT] is a tab
337f0 6c 65 20 63 6f 6c 75 6d 6e 20 28 6e 6f 74 20 61  le column (not a
33800 6e 0a 2a 2a 20 65 78 70 72 65 73 73 69 6f 6e 20  n.** expression 
33810 6f 72 20 73 75 62 71 75 65 72 79 29 20 74 68 65  or subquery) the
33820 6e 20 74 68 65 20 64 65 63 6c 61 72 65 64 20 74  n the declared t
33830 79 70 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65  ype of the table
33840 0a 2a 2a 20 63 6f 6c 75 6d 6e 20 69 73 20 72 65  .** column is re
33850 74 75 72 6e 65 64 2e 29 5e 20 20 5e 49 66 20 74  turned.)^  ^If t
33860 68 65 20 4e 74 68 20 63 6f 6c 75 6d 6e 20 6f 66  he Nth column of
33870 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20   the result set 
33880 69 73 20 61 6e 0a 2a 2a 20 65 78 70 72 65 73 73  is an.** express
33890 69 6f 6e 20 6f 72 20 73 75 62 71 75 65 72 79 2c  ion or subquery,
338a0 20 74 68 65 6e 20 61 20 4e 55 4c 4c 20 70 6f 69   then a NULL poi
338b0 6e 74 65 72 20 69 73 20 72 65 74 75 72 6e 65 64  nter is returned
338c0 2e 0a 2a 2a 20 5e 54 68 65 20 72 65 74 75 72 6e  ..** ^The return
338d0 65 64 20 73 74 72 69 6e 67 20 69 73 20 61 6c 77  ed string is alw
338e0 61 79 73 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  ays UTF-8 encode
338f0 64 2e 0a 2a 2a 0a 2a 2a 20 5e 28 46 6f 72 20 65  d..**.** ^(For e
33900 78 61 6d 70 6c 65 2c 20 67 69 76 65 6e 20 74 68  xample, given th
33910 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
33920 61 3a 0a 2a 2a 0a 2a 2a 20 43 52 45 41 54 45 20  a:.**.** CREATE 
33930 54 41 42 4c 45 20 74 31 28 63 31 20 56 41 52 49  TABLE t1(c1 VARI
33940 41 4e 54 29 3b 0a 2a 2a 0a 2a 2a 20 61 6e 64 20  ANT);.**.** and 
33950 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 74  the following st
33960 61 74 65 6d 65 6e 74 20 74 6f 20 62 65 20 63 6f  atement to be co
33970 6d 70 69 6c 65 64 3a 0a 2a 2a 0a 2a 2a 20 53 45  mpiled:.**.** SE
33980 4c 45 43 54 20 63 31 20 2b 20 31 2c 20 63 31 20  LECT c1 + 1, c1 
33990 46 52 4f 4d 20 74 31 3b 0a 2a 2a 0a 2a 2a 20 74  FROM t1;.**.** t
339a0 68 69 73 20 72 6f 75 74 69 6e 65 20 77 6f 75 6c  his routine woul
339b0 64 20 72 65 74 75 72 6e 20 74 68 65 20 73 74 72  d return the str
339c0 69 6e 67 20 22 56 41 52 49 41 4e 54 22 20 66 6f  ing "VARIANT" fo
339d0 72 20 74 68 65 20 73 65 63 6f 6e 64 20 72 65 73  r the second res
339e0 75 6c 74 0a 2a 2a 20 63 6f 6c 75 6d 6e 20 28 69  ult.** column (i
339f0 3d 3d 31 29 2c 20 61 6e 64 20 61 20 4e 55 4c 4c  ==1), and a NULL
33a00 20 70 6f 69 6e 74 65 72 20 66 6f 72 20 74 68 65   pointer for the
33a10 20 66 69 72 73 74 20 72 65 73 75 6c 74 20 63 6f   first result co
33a20 6c 75 6d 6e 20 28 69 3d 3d 30 29 2e 29 5e 0a 2a  lumn (i==0).)^.*
33a30 2a 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 75 73 65  *.** ^SQLite use
33a40 73 20 64 79 6e 61 6d 69 63 20 72 75 6e 2d 74 69  s dynamic run-ti
33a50 6d 65 20 74 79 70 69 6e 67 2e 20 20 5e 53 6f 20  me typing.  ^So 
33a60 6a 75 73 74 20 62 65 63 61 75 73 65 20 61 20 63  just because a c
33a70 6f 6c 75 6d 6e 0a 2a 2a 20 69 73 20 64 65 63 6c  olumn.** is decl
33a80 61 72 65 64 20 74 6f 20 63 6f 6e 74 61 69 6e 20  ared to contain 
33a90 61 20 70 61 72 74 69 63 75 6c 61 72 20 74 79 70  a particular typ
33aa0 65 20 64 6f 65 73 20 6e 6f 74 20 6d 65 61 6e 20  e does not mean 
33ab0 74 68 61 74 20 74 68 65 0a 2a 2a 20 64 61 74 61  that the.** data
33ac0 20 73 74 6f 72 65 64 20 69 6e 20 74 68 61 74 20   stored in that 
33ad0 63 6f 6c 75 6d 6e 20 69 73 20 6f 66 20 74 68 65  column is of the
33ae0 20 64 65 63 6c 61 72 65 64 20 74 79 70 65 2e 20   declared type. 
33af0 20 53 51 4c 69 74 65 20 69 73 0a 2a 2a 20 73 74   SQLite is.** st
33b00 72 6f 6e 67 6c 79 20 74 79 70 65 64 2c 20 62 75  rongly typed, bu
33b10 74 20 74 68 65 20 74 79 70 69 6e 67 20 69 73 20  t the typing is 
33b20 64 79 6e 61 6d 69 63 20 6e 6f 74 20 73 74 61 74  dynamic not stat
33b30 69 63 2e 20 20 5e 54 79 70 65 0a 2a 2a 20 69 73  ic.  ^Type.** is
33b40 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
33b50 20 69 6e 64 69 76 69 64 75 61 6c 20 76 61 6c 75   individual valu
33b60 65 73 2c 20 6e 6f 74 20 77 69 74 68 20 74 68 65  es, not with the
33b70 20 63 6f 6e 74 61 69 6e 65 72 73 0a 2a 2a 20 75   containers.** u
33b80 73 65 64 20 74 6f 20 68 6f 6c 64 20 74 68 6f 73  sed to hold thos
33b90 65 20 76 61 6c 75 65 73 2e 0a 2a 2f 0a 63 6f 6e  e values..*/.con
33ba0 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
33bb0 5f 63 6f 6c 75 6d 6e 5f 64 65 63 6c 74 79 70 65  _column_decltype
33bc0 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69  (sqlite3_stmt*,i
33bd0 6e 74 29 3b 0a 63 6f 6e 73 74 20 76 6f 69 64 20  nt);.const void 
33be0 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  *sqlite3_column_
33bf0 64 65 63 6c 74 79 70 65 31 36 28 73 71 6c 69 74  decltype16(sqlit
33c00 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 29 3b 0a 0a  e3_stmt*,int);..
33c10 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
33c20 45 76 61 6c 75 61 74 65 20 41 6e 20 53 51 4c 20  Evaluate An SQL 
33c30 53 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 4d 45 54  Statement.** MET
33c40 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d  HOD: sqlite3_stm
33c50 74 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20 61 20  t.**.** After a 
33c60 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
33c70 65 6e 74 5d 20 68 61 73 20 62 65 65 6e 20 70 72  ent] has been pr
33c80 65 70 61 72 65 64 20 75 73 69 6e 67 20 61 6e 79  epared using any
33c90 20 6f 66 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   of.** [sqlite3_
33ca0 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c 20 5b  prepare_v2()], [
33cb0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
33cc0 76 33 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  v3()], [sqlite3_
33cd0 70 72 65 70 61 72 65 31 36 5f 76 32 28 29 5d 2c  prepare16_v2()],
33ce0 0a 2a 2a 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f  .** or [sqlite3_
33cf0 70 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d 20  prepare16_v3()] 
33d00 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65 20 6c 65  or one of the le
33d10 67 61 63 79 0a 2a 2a 20 69 6e 74 65 72 66 61 63  gacy.** interfac
33d20 65 73 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  es [sqlite3_prep
33d30 61 72 65 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74  are()] or [sqlit
33d40 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d 2c  e3_prepare16()],
33d50 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 2a   this function.*
33d60 2a 20 6d 75 73 74 20 62 65 20 63 61 6c 6c 65 64  * must be called
33d70 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d   one or more tim
33d80 65 73 20 74 6f 20 65 76 61 6c 75 61 74 65 20 74  es to evaluate t
33d90 68 65 20 73 74 61 74 65 6d 65 6e 74 2e 0a 2a 2a  he statement..**
33da0 0a 2a 2a 20 54 68 65 20 64 65 74 61 69 6c 73 20  .** The details 
33db0 6f 66 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  of the behavior 
33dc0 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 73  of the sqlite3_s
33dd0 74 65 70 28 29 20 69 6e 74 65 72 66 61 63 65 20  tep() interface 
33de0 64 65 70 65 6e 64 0a 2a 2a 20 6f 6e 20 77 68 65  depend.** on whe
33df0 74 68 65 72 20 74 68 65 20 73 74 61 74 65 6d 65  ther the stateme
33e00 6e 74 20 77 61 73 20 70 72 65 70 61 72 65 64 20  nt was prepared 
33e10 75 73 69 6e 67 20 74 68 65 20 6e 65 77 65 72 20  using the newer 
33e20 22 76 58 22 20 69 6e 74 65 72 66 61 63 65 73 0a  "vX" interfaces.
33e30 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ** [sqlite3_prep
33e40 61 72 65 5f 76 33 28 29 5d 2c 20 5b 73 71 6c 69  are_v3()], [sqli
33e50 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
33e60 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ], [sqlite3_prep
33e70 61 72 65 31 36 5f 76 33 28 29 5d 2c 0a 2a 2a 20  are16_v3()],.** 
33e80 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
33e90 31 36 5f 76 32 28 29 5d 20 6f 72 20 74 68 65 20  16_v2()] or the 
33ea0 6f 6c 64 65 72 20 6c 65 67 61 63 79 0a 2a 2a 20  older legacy.** 
33eb0 69 6e 74 65 72 66 61 63 65 73 20 5b 73 71 6c 69  interfaces [sqli
33ec0 74 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20 61  te3_prepare()] a
33ed0 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  nd [sqlite3_prep
33ee0 61 72 65 31 36 28 29 5d 2e 20 20 54 68 65 20 75  are16()].  The u
33ef0 73 65 20 6f 66 20 74 68 65 0a 2a 2a 20 6e 65 77  se of the.** new
33f00 20 22 76 58 22 20 69 6e 74 65 72 66 61 63 65 20   "vX" interface 
33f10 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66  is recommended f
33f20 6f 72 20 6e 65 77 20 61 70 70 6c 69 63 61 74 69  or new applicati
33f30 6f 6e 73 20 62 75 74 20 74 68 65 20 6c 65 67 61  ons but the lega
33f40 63 79 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20  cy.** interface 
33f50 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 20 74 6f  will continue to
33f60 20 62 65 20 73 75 70 70 6f 72 74 65 64 2e 0a 2a   be supported..*
33f70 2a 0a 2a 2a 20 5e 49 6e 20 74 68 65 20 6c 65 67  *.** ^In the leg
33f80 61 63 79 20 69 6e 74 65 72 66 61 63 65 2c 20 74  acy interface, t
33f90 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  he return value 
33fa0 77 69 6c 6c 20 62 65 20 65 69 74 68 65 72 20 5b  will be either [
33fb0 53 51 4c 49 54 45 5f 42 55 53 59 5d 2c 0a 2a 2a  SQLITE_BUSY],.**
33fc0 20 5b 53 51 4c 49 54 45 5f 44 4f 4e 45 5d 2c 20   [SQLITE_DONE], 
33fd0 5b 53 51 4c 49 54 45 5f 52 4f 57 5d 2c 20 5b 53  [SQLITE_ROW], [S
33fe0 51 4c 49 54 45 5f 45 52 52 4f 52 5d 2c 20 6f 72  QLITE_ERROR], or
33ff0 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d   [SQLITE_MISUSE]
34000 2e 0a 2a 2a 20 5e 57 69 74 68 20 74 68 65 20 22  ..** ^With the "
34010 76 32 22 20 69 6e 74 65 72 66 61 63 65 2c 20 61  v2" interface, a
34020 6e 79 20 6f 66 20 74 68 65 20 6f 74 68 65 72 20  ny of the other 
34030 5b 72 65 73 75 6c 74 20 63 6f 64 65 73 5d 20 6f  [result codes] o
34040 72 0a 2a 2a 20 5b 65 78 74 65 6e 64 65 64 20 72  r.** [extended r
34050 65 73 75 6c 74 20 63 6f 64 65 73 5d 20 6d 69 67  esult codes] mig
34060 68 74 20 62 65 20 72 65 74 75 72 6e 65 64 20 61  ht be returned a
34070 73 20 77 65 6c 6c 2e 0a 2a 2a 0a 2a 2a 20 5e 5b  s well..**.** ^[
34080 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 6d 65 61  SQLITE_BUSY] mea
34090 6e 73 20 74 68 61 74 20 74 68 65 20 64 61 74 61  ns that the data
340a0 62 61 73 65 20 65 6e 67 69 6e 65 20 77 61 73 20  base engine was 
340b0 75 6e 61 62 6c 65 20 74 6f 20 61 63 71 75 69 72  unable to acquir
340c0 65 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73  e the.** databas
340d0 65 20 6c 6f 63 6b 73 20 69 74 20 6e 65 65 64 73  e locks it needs
340e0 20 74 6f 20 64 6f 20 69 74 73 20 6a 6f 62 2e 20   to do its job. 
340f0 20 5e 49 66 20 74 68 65 20 73 74 61 74 65 6d 65   ^If the stateme
34100 6e 74 20 69 73 20 61 20 5b 43 4f 4d 4d 49 54 5d  nt is a [COMMIT]
34110 0a 2a 2a 20 6f 72 20 6f 63 63 75 72 73 20 6f 75  .** or occurs ou
34120 74 73 69 64 65 20 6f 66 20 61 6e 20 65 78 70 6c  tside of an expl
34130 69 63 69 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  icit transaction
34140 2c 20 74 68 65 6e 20 79 6f 75 20 63 61 6e 20 72  , then you can r
34150 65 74 72 79 20 74 68 65 0a 2a 2a 20 73 74 61 74  etry the.** stat
34160 65 6d 65 6e 74 2e 20 20 49 66 20 74 68 65 20 73  ement.  If the s
34170 74 61 74 65 6d 65 6e 74 20 69 73 20 6e 6f 74 20  tatement is not 
34180 61 20 5b 43 4f 4d 4d 49 54 5d 20 61 6e 64 20 6f  a [COMMIT] and o
34190 63 63 75 72 73 20 77 69 74 68 69 6e 20 61 6e 0a  ccurs within an.
341a0 2a 2a 20 65 78 70 6c 69 63 69 74 20 74 72 61 6e  ** explicit tran
341b0 73 61 63 74 69 6f 6e 20 74 68 65 6e 20 79 6f 75  saction then you
341c0 20 73 68 6f 75 6c 64 20 72 6f 6c 6c 62 61 63 6b   should rollback
341d0 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
341e0 20 62 65 66 6f 72 65 0a 2a 2a 20 63 6f 6e 74 69   before.** conti
341f0 6e 75 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 5e 5b 53  nuing..**.** ^[S
34200 51 4c 49 54 45 5f 44 4f 4e 45 5d 20 6d 65 61 6e  QLITE_DONE] mean
34210 73 20 74 68 61 74 20 74 68 65 20 73 74 61 74 65  s that the state
34220 6d 65 6e 74 20 68 61 73 20 66 69 6e 69 73 68 65  ment has finishe
34230 64 20 65 78 65 63 75 74 69 6e 67 0a 2a 2a 20 73  d executing.** s
34240 75 63 63 65 73 73 66 75 6c 6c 79 2e 20 20 73 71  uccessfully.  sq
34250 6c 69 74 65 33 5f 73 74 65 70 28 29 20 73 68 6f  lite3_step() sho
34260 75 6c 64 20 6e 6f 74 20 62 65 20 63 61 6c 6c 65  uld not be calle
34270 64 20 61 67 61 69 6e 20 6f 6e 20 74 68 69 73 20  d again on this 
34280 76 69 72 74 75 61 6c 0a 2a 2a 20 6d 61 63 68 69  virtual.** machi
34290 6e 65 20 77 69 74 68 6f 75 74 20 66 69 72 73 74  ne without first
342a0 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65   calling [sqlite
342b0 33 5f 72 65 73 65 74 28 29 5d 20 74 6f 20 72 65  3_reset()] to re
342c0 73 65 74 20 74 68 65 20 76 69 72 74 75 61 6c 0a  set the virtual.
342d0 2a 2a 20 6d 61 63 68 69 6e 65 20 62 61 63 6b 20  ** machine back 
342e0 74 6f 20 69 74 73 20 69 6e 69 74 69 61 6c 20 73  to its initial s
342f0 74 61 74 65 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20  tate..**.** ^If 
34300 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
34310 74 20 62 65 69 6e 67 20 65 78 65 63 75 74 65 64  t being executed
34320 20 72 65 74 75 72 6e 73 20 61 6e 79 20 64 61 74   returns any dat
34330 61 2c 20 74 68 65 6e 20 5b 53 51 4c 49 54 45 5f  a, then [SQLITE_
34340 52 4f 57 5d 0a 2a 2a 20 69 73 20 72 65 74 75 72  ROW].** is retur
34350 6e 65 64 20 65 61 63 68 20 74 69 6d 65 20 61 20  ned each time a 
34360 6e 65 77 20 72 6f 77 20 6f 66 20 64 61 74 61 20  new row of data 
34370 69 73 20 72 65 61 64 79 20 66 6f 72 20 70 72 6f  is ready for pro
34380 63 65 73 73 69 6e 67 20 62 79 20 74 68 65 0a 2a  cessing by the.*
34390 2a 20 63 61 6c 6c 65 72 2e 20 54 68 65 20 76 61  * caller. The va
343a0 6c 75 65 73 20 6d 61 79 20 62 65 20 61 63 63 65  lues may be acce
343b0 73 73 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b  ssed using the [
343c0 63 6f 6c 75 6d 6e 20 61 63 63 65 73 73 20 66 75  column access fu
343d0 6e 63 74 69 6f 6e 73 5d 2e 0a 2a 2a 20 73 71 6c  nctions]..** sql
343e0 69 74 65 33 5f 73 74 65 70 28 29 20 69 73 20 63  ite3_step() is c
343f0 61 6c 6c 65 64 20 61 67 61 69 6e 20 74 6f 20 72  alled again to r
34400 65 74 72 69 65 76 65 20 74 68 65 20 6e 65 78 74  etrieve the next
34410 20 72 6f 77 20 6f 66 20 64 61 74 61 2e 0a 2a 2a   row of data..**
34420 0a 2a 2a 20 5e 5b 53 51 4c 49 54 45 5f 45 52 52  .** ^[SQLITE_ERR
34430 4f 52 5d 20 6d 65 61 6e 73 20 74 68 61 74 20 61  OR] means that a
34440 20 72 75 6e 2d 74 69 6d 65 20 65 72 72 6f 72 20   run-time error 
34450 28 73 75 63 68 20 61 73 20 61 20 63 6f 6e 73 74  (such as a const
34460 72 61 69 6e 74 0a 2a 2a 20 76 69 6f 6c 61 74 69  raint.** violati
34470 6f 6e 29 20 68 61 73 20 6f 63 63 75 72 72 65 64  on) has occurred
34480 2e 20 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  .  sqlite3_step(
34490 29 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20  ) should not be 
344a0 63 61 6c 6c 65 64 20 61 67 61 69 6e 20 6f 6e 0a  called again on.
344b0 2a 2a 20 74 68 65 20 56 4d 2e 20 4d 6f 72 65 20  ** the VM. More 
344c0 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6d 61 79 20  information may 
344d0 62 65 20 66 6f 75 6e 64 20 62 79 20 63 61 6c 6c  be found by call
344e0 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65 72 72  ing [sqlite3_err
344f0 6d 73 67 28 29 5d 2e 0a 2a 2a 20 5e 57 69 74 68  msg()]..** ^With
34500 20 74 68 65 20 6c 65 67 61 63 79 20 69 6e 74 65   the legacy inte
34510 72 66 61 63 65 2c 20 61 20 6d 6f 72 65 20 73 70  rface, a more sp
34520 65 63 69 66 69 63 20 65 72 72 6f 72 20 63 6f 64  ecific error cod
34530 65 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 2c 0a  e (for example,.
34540 2a 2a 20 5b 53 51 4c 49 54 45 5f 49 4e 54 45 52  ** [SQLITE_INTER
34550 52 55 50 54 5d 2c 20 5b 53 51 4c 49 54 45 5f 53  RUPT], [SQLITE_S
34560 43 48 45 4d 41 5d 2c 20 5b 53 51 4c 49 54 45 5f  CHEMA], [SQLITE_
34570 43 4f 52 52 55 50 54 5d 2c 20 61 6e 64 20 73 6f  CORRUPT], and so
34580 20 66 6f 72 74 68 29 0a 2a 2a 20 63 61 6e 20 62   forth).** can b
34590 65 20 6f 62 74 61 69 6e 65 64 20 62 79 20 63 61  e obtained by ca
345a0 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 72  lling [sqlite3_r
345b0 65 73 65 74 28 29 5d 20 6f 6e 20 74 68 65 0a 2a  eset()] on the.*
345c0 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  * [prepared stat
345d0 65 6d 65 6e 74 5d 2e 20 20 5e 49 6e 20 74 68 65  ement].  ^In the
345e0 20 22 76 32 22 20 69 6e 74 65 72 66 61 63 65 2c   "v2" interface,
345f0 0a 2a 2a 20 74 68 65 20 6d 6f 72 65 20 73 70 65  .** the more spe
34600 63 69 66 69 63 20 65 72 72 6f 72 20 63 6f 64 65  cific error code
34610 20 69 73 20 72 65 74 75 72 6e 65 64 20 64 69 72   is returned dir
34620 65 63 74 6c 79 20 62 79 20 73 71 6c 69 74 65 33  ectly by sqlite3
34630 5f 73 74 65 70 28 29 2e 0a 2a 2a 0a 2a 2a 20 5b  _step()..**.** [
34640 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 20 6d  SQLITE_MISUSE] m
34650 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 74 68  eans that the th
34660 69 73 20 72 6f 75 74 69 6e 65 20 77 61 73 20 63  is routine was c
34670 61 6c 6c 65 64 20 69 6e 61 70 70 72 6f 70 72 69  alled inappropri
34680 61 74 65 6c 79 2e 0a 2a 2a 20 50 65 72 68 61 70  ately..** Perhap
34690 73 20 69 74 20 77 61 73 20 63 61 6c 6c 65 64 20  s it was called 
346a0 6f 6e 20 61 20 5b 70 72 65 70 61 72 65 64 20 73  on a [prepared s
346b0 74 61 74 65 6d 65 6e 74 5d 20 74 68 61 74 20 68  tatement] that h
346c0 61 73 0a 2a 2a 20 61 6c 72 65 61 64 79 20 62 65  as.** already be
346d0 65 6e 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61  en [sqlite3_fina
346e0 6c 69 7a 65 20 7c 20 66 69 6e 61 6c 69 7a 65 64  lize | finalized
346f0 5d 20 6f 72 20 6f 6e 20 6f 6e 65 20 74 68 61 74  ] or on one that
34700 20 68 61 64 0a 2a 2a 20 70 72 65 76 69 6f 75 73   had.** previous
34710 6c 79 20 72 65 74 75 72 6e 65 64 20 5b 53 51 4c  ly returned [SQL
34720 49 54 45 5f 45 52 52 4f 52 5d 20 6f 72 20 5b 53  ITE_ERROR] or [S
34730 51 4c 49 54 45 5f 44 4f 4e 45 5d 2e 20 20 4f 72  QLITE_DONE].  Or
34740 20 69 74 20 63 6f 75 6c 64 0a 2a 2a 20 62 65 20   it could.** be 
34750 74 68 65 20 63 61 73 65 20 74 68 61 74 20 74 68  the case that th
34760 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  e same database 
34770 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 62 65  connection is be
34780 69 6e 67 20 75 73 65 64 20 62 79 20 74 77 6f 20  ing used by two 
34790 6f 72 0a 2a 2a 20 6d 6f 72 65 20 74 68 72 65 61  or.** more threa
347a0 64 73 20 61 74 20 74 68 65 20 73 61 6d 65 20 6d  ds at the same m
347b0 6f 6d 65 6e 74 20 69 6e 20 74 69 6d 65 2e 0a 2a  oment in time..*
347c0 2a 0a 2a 2a 20 46 6f 72 20 61 6c 6c 20 76 65 72  *.** For all ver
347d0 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
347e0 75 70 20 74 6f 20 61 6e 64 20 69 6e 63 6c 75 64  up to and includ
347f0 69 6e 67 20 33 2e 36 2e 32 33 2e 31 2c 20 61 20  ing 3.6.23.1, a 
34800 63 61 6c 6c 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69  call to.** [sqli
34810 74 65 33 5f 72 65 73 65 74 28 29 5d 20 77 61 73  te3_reset()] was
34820 20 72 65 71 75 69 72 65 64 20 61 66 74 65 72 20   required after 
34830 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 72  sqlite3_step() r
34840 65 74 75 72 6e 65 64 20 61 6e 79 74 68 69 6e 67  eturned anything
34850 0a 2a 2a 20 6f 74 68 65 72 20 74 68 61 6e 20 5b  .** other than [
34860 53 51 4c 49 54 45 5f 52 4f 57 5d 20 62 65 66 6f  SQLITE_ROW] befo
34870 72 65 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e  re any subsequen
34880 74 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 0a  t invocation of.
34890 2a 2a 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  ** sqlite3_step(
348a0 29 2e 20 20 46 61 69 6c 75 72 65 20 74 6f 20 72  ).  Failure to r
348b0 65 73 65 74 20 74 68 65 20 70 72 65 70 61 72 65  eset the prepare
348c0 64 20 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e  d statement usin
348d0 67 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 72  g .** [sqlite3_r
348e0 65 73 65 74 28 29 5d 20 77 6f 75 6c 64 20 72 65  eset()] would re
348f0 73 75 6c 74 20 69 6e 20 61 6e 20 5b 53 51 4c 49  sult in an [SQLI
34900 54 45 5f 4d 49 53 55 53 45 5d 20 72 65 74 75 72  TE_MISUSE] retur
34910 6e 20 66 72 6f 6d 0a 2a 2a 20 73 71 6c 69 74 65  n from.** sqlite
34920 33 5f 73 74 65 70 28 29 2e 20 20 42 75 74 20 61  3_step().  But a
34930 66 74 65 72 20 5b 76 65 72 73 69 6f 6e 20 33 2e  fter [version 3.
34940 36 2e 32 33 2e 31 5d 20 28 5b 64 61 74 65 6f 66  6.23.1] ([dateof
34950 3a 33 2e 36 2e 32 33 2e 31 5d 2c 0a 2a 2a 20 73  :3.6.23.1],.** s
34960 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 62 65  qlite3_step() be
34970 67 61 6e 0a 2a 2a 20 63 61 6c 6c 69 6e 67 20 5b  gan.** calling [
34980 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d  sqlite3_reset()]
34990 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 69   automatically i
349a0 6e 20 74 68 69 73 20 63 69 72 63 75 6d 73 74 61  n this circumsta
349b0 6e 63 65 20 72 61 74 68 65 72 0a 2a 2a 20 74 68  nce rather.** th
349c0 61 6e 20 72 65 74 75 72 6e 69 6e 67 20 5b 53 51  an returning [SQ
349d0 4c 49 54 45 5f 4d 49 53 55 53 45 5d 2e 20 20 54  LITE_MISUSE].  T
349e0 68 69 73 20 69 73 20 6e 6f 74 20 63 6f 6e 73 69  his is not consi
349f0 64 65 72 65 64 20 61 20 63 6f 6d 70 61 74 69 62  dered a compatib
34a00 69 6c 69 74 79 0a 2a 2a 20 62 72 65 61 6b 20 62  ility.** break b
34a10 65 63 61 75 73 65 20 61 6e 79 20 61 70 70 6c 69  ecause any appli
34a20 63 61 74 69 6f 6e 20 74 68 61 74 20 65 76 65 72  cation that ever
34a30 20 72 65 63 65 69 76 65 73 20 61 6e 20 53 51 4c   receives an SQL
34a40 49 54 45 5f 4d 49 53 55 53 45 20 65 72 72 6f 72  ITE_MISUSE error
34a50 0a 2a 2a 20 69 73 20 62 72 6f 6b 65 6e 20 62 79  .** is broken by
34a60 20 64 65 66 69 6e 69 74 69 6f 6e 2e 20 20 54 68   definition.  Th
34a70 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  e [SQLITE_OMIT_A
34a80 55 54 4f 52 45 53 45 54 5d 20 63 6f 6d 70 69 6c  UTORESET] compil
34a90 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 0a 2a 2a  e-time option.**
34aa0 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
34ab0 72 65 73 74 6f 72 65 20 74 68 65 20 6c 65 67 61  restore the lega
34ac0 63 79 20 62 65 68 61 76 69 6f 72 2e 0a 2a 2a 0a  cy behavior..**.
34ad0 2a 2a 20 3c 62 3e 47 6f 6f 66 79 20 49 6e 74 65  ** <b>Goofy Inte
34ae0 72 66 61 63 65 20 41 6c 65 72 74 3a 3c 2f 62 3e  rface Alert:</b>
34af0 20 49 6e 20 74 68 65 20 6c 65 67 61 63 79 20 69   In the legacy i
34b00 6e 74 65 72 66 61 63 65 2c 20 74 68 65 20 73 71  nterface, the sq
34b10 6c 69 74 65 33 5f 73 74 65 70 28 29 0a 2a 2a 20  lite3_step().** 
34b20 41 50 49 20 61 6c 77 61 79 73 20 72 65 74 75 72  API always retur
34b30 6e 73 20 61 20 67 65 6e 65 72 69 63 20 65 72 72  ns a generic err
34b40 6f 72 20 63 6f 64 65 2c 20 5b 53 51 4c 49 54 45  or code, [SQLITE
34b50 5f 45 52 52 4f 52 5d 2c 20 66 6f 6c 6c 6f 77 69  _ERROR], followi
34b60 6e 67 20 61 6e 79 0a 2a 2a 20 65 72 72 6f 72 20  ng any.** error 
34b70 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49  other than [SQLI
34b80 54 45 5f 42 55 53 59 5d 20 61 6e 64 20 5b 53 51  TE_BUSY] and [SQ
34b90 4c 49 54 45 5f 4d 49 53 55 53 45 5d 2e 20 20 59  LITE_MISUSE].  Y
34ba0 6f 75 20 6d 75 73 74 20 63 61 6c 6c 0a 2a 2a 20  ou must call.** 
34bb0 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
34bc0 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 66 69  ] or [sqlite3_fi
34bd0 6e 61 6c 69 7a 65 28 29 5d 20 69 6e 20 6f 72 64  nalize()] in ord
34be0 65 72 20 74 6f 20 66 69 6e 64 20 6f 6e 65 20 6f  er to find one o
34bf0 66 20 74 68 65 0a 2a 2a 20 73 70 65 63 69 66 69  f the.** specifi
34c00 63 20 5b 65 72 72 6f 72 20 63 6f 64 65 73 5d 20  c [error codes] 
34c10 74 68 61 74 20 62 65 74 74 65 72 20 64 65 73 63  that better desc
34c20 72 69 62 65 73 20 74 68 65 20 65 72 72 6f 72 2e  ribes the error.
34c30 0a 2a 2a 20 57 65 20 61 64 6d 69 74 20 74 68 61  .** We admit tha
34c40 74 20 74 68 69 73 20 69 73 20 61 20 67 6f 6f 66  t this is a goof
34c50 79 20 64 65 73 69 67 6e 2e 20 20 54 68 65 20 70  y design.  The p
34c60 72 6f 62 6c 65 6d 20 68 61 73 20 62 65 65 6e 20  roblem has been 
34c70 66 69 78 65 64 0a 2a 2a 20 77 69 74 68 20 74 68  fixed.** with th
34c80 65 20 22 76 32 22 20 69 6e 74 65 72 66 61 63 65  e "v2" interface
34c90 2e 20 20 49 66 20 79 6f 75 20 70 72 65 70 61 72  .  If you prepar
34ca0 65 20 61 6c 6c 20 6f 66 20 79 6f 75 72 20 53 51  e all of your SQ
34cb0 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20  L statements.** 
34cc0 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70  using [sqlite3_p
34cd0 72 65 70 61 72 65 5f 76 33 28 29 5d 20 6f 72 20  repare_v3()] or 
34ce0 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
34cf0 5f 76 32 28 29 5d 0a 2a 2a 20 6f 72 20 5b 73 71  _v2()].** or [sq
34d00 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f  lite3_prepare16_
34d10 76 32 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65  v2()] or [sqlite
34d20 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29  3_prepare16_v3()
34d30 5d 20 69 6e 73 74 65 61 64 0a 2a 2a 20 6f 66 20  ] instead.** of 
34d40 74 68 65 20 6c 65 67 61 63 79 20 5b 73 71 6c 69  the legacy [sqli
34d50 74 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20 61  te3_prepare()] a
34d60 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  nd [sqlite3_prep
34d70 61 72 65 31 36 28 29 5d 20 69 6e 74 65 72 66 61  are16()] interfa
34d80 63 65 73 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65  ces,.** then the
34d90 20 6d 6f 72 65 20 73 70 65 63 69 66 69 63 20 5b   more specific [
34da0 65 72 72 6f 72 20 63 6f 64 65 73 5d 20 61 72 65  error codes] are
34db0 20 72 65 74 75 72 6e 65 64 20 64 69 72 65 63 74   returned direct
34dc0 6c 79 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65 33  ly.** by sqlite3
34dd0 5f 73 74 65 70 28 29 2e 20 20 54 68 65 20 75 73  _step().  The us
34de0 65 20 6f 66 20 74 68 65 20 22 76 58 22 20 69 6e  e of the "vX" in
34df0 74 65 72 66 61 63 65 73 20 69 73 20 72 65 63 6f  terfaces is reco
34e00 6d 6d 65 6e 64 65 64 2e 0a 2a 2f 0a 69 6e 74 20  mmended..*/.int 
34e10 73 71 6c 69 74 65 33 5f 73 74 65 70 28 73 71 6c  sqlite3_step(sql
34e20 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a  ite3_stmt*);../*
34e30 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4e 75  .** CAPI3REF: Nu
34e40 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
34e50 69 6e 20 61 20 72 65 73 75 6c 74 20 73 65 74 0a  in a result set.
34e60 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
34e70 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54  e3_stmt.**.** ^T
34e80 68 65 20 73 71 6c 69 74 65 33 5f 64 61 74 61 5f  he sqlite3_data_
34e90 63 6f 75 6e 74 28 50 29 20 69 6e 74 65 72 66 61  count(P) interfa
34ea0 63 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  ce returns the n
34eb0 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
34ec0 20 69 6e 20 74 68 65 0a 2a 2a 20 63 75 72 72 65   in the.** curre
34ed0 6e 74 20 72 6f 77 20 6f 66 20 74 68 65 20 72 65  nt row of the re
34ee0 73 75 6c 74 20 73 65 74 20 6f 66 20 5b 70 72 65  sult set of [pre
34ef0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
34f00 20 50 2e 0a 2a 2a 20 5e 49 66 20 70 72 65 70 61   P..** ^If prepa
34f10 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 50 20  red statement P 
34f20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 72 65  does not have re
34f30 73 75 6c 74 73 20 72 65 61 64 79 20 74 6f 20 72  sults ready to r
34f40 65 74 75 72 6e 0a 2a 2a 20 28 76 69 61 20 63 61  eturn.** (via ca
34f50 6c 6c 73 20 74 6f 20 74 68 65 20 5b 73 71 6c 69  lls to the [sqli
34f60 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 20 7c  te3_column_int |
34f70 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
34f80 2a 28 29 5d 20 6f 66 0a 2a 2a 20 69 6e 74 65 72  *()] of.** inter
34f90 66 61 63 65 73 29 20 74 68 65 6e 20 73 71 6c 69  faces) then sqli
34fa0 74 65 33 5f 64 61 74 61 5f 63 6f 75 6e 74 28 50  te3_data_count(P
34fb0 29 20 72 65 74 75 72 6e 73 20 30 2e 0a 2a 2a 20  ) returns 0..** 
34fc0 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 64 61 74  ^The sqlite3_dat
34fd0 61 5f 63 6f 75 6e 74 28 50 29 20 72 6f 75 74 69  a_count(P) routi
34fe0 6e 65 20 61 6c 73 6f 20 72 65 74 75 72 6e 73 20  ne also returns 
34ff0 30 20 69 66 20 50 20 69 73 20 61 20 4e 55 4c 4c  0 if P is a NULL
35000 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 20 5e 54 68   pointer..** ^Th
35010 65 20 73 71 6c 69 74 65 33 5f 64 61 74 61 5f 63  e sqlite3_data_c
35020 6f 75 6e 74 28 50 29 20 72 6f 75 74 69 6e 65 20  ount(P) routine 
35030 72 65 74 75 72 6e 73 20 30 20 69 66 20 74 68 65  returns 0 if the
35040 20 70 72 65 76 69 6f 75 73 20 63 61 6c 6c 20 74   previous call t
35050 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74  o.** [sqlite3_st
35060 65 70 5d 28 50 29 20 72 65 74 75 72 6e 65 64 20  ep](P) returned 
35070 5b 53 51 4c 49 54 45 5f 44 4f 4e 45 5d 2e 20 20  [SQLITE_DONE].  
35080 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 64 61 74  ^The sqlite3_dat
35090 61 5f 63 6f 75 6e 74 28 50 29 0a 2a 2a 20 77 69  a_count(P).** wi
350a0 6c 6c 20 72 65 74 75 72 6e 20 6e 6f 6e 2d 7a 65  ll return non-ze
350b0 72 6f 20 69 66 20 70 72 65 76 69 6f 75 73 20 63  ro if previous c
350c0 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  all to [sqlite3_
350d0 73 74 65 70 5d 28 50 29 20 72 65 74 75 72 6e 65  step](P) returne
350e0 64 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 52 4f 57  d.** [SQLITE_ROW
350f0 5d 2c 20 65 78 63 65 70 74 20 69 6e 20 74 68 65  ], except in the
35100 20 63 61 73 65 20 6f 66 20 74 68 65 20 5b 50 52   case of the [PR
35110 41 47 4d 41 20 69 6e 63 72 65 6d 65 6e 74 61 6c  AGMA incremental
35120 5f 76 61 63 75 75 6d 5d 0a 2a 2a 20 77 68 65 72  _vacuum].** wher
35130 65 20 69 74 20 61 6c 77 61 79 73 20 72 65 74 75  e it always retu
35140 72 6e 73 20 7a 65 72 6f 20 73 69 6e 63 65 20 65  rns zero since e
35150 61 63 68 20 73 74 65 70 20 6f 66 20 74 68 61 74  ach step of that
35160 20 6d 75 6c 74 69 2d 73 74 65 70 0a 2a 2a 20 70   multi-step.** p
35170 72 61 67 6d 61 20 72 65 74 75 72 6e 73 20 30 20  ragma returns 0 
35180 63 6f 6c 75 6d 6e 73 20 6f 66 20 64 61 74 61 2e  columns of data.
35190 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a  .**.** See also:
351a0 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
351b0 5f 63 6f 75 6e 74 28 29 5d 0a 2a 2f 0a 69 6e 74  _count()].*/.int
351c0 20 73 71 6c 69 74 65 33 5f 64 61 74 61 5f 63 6f   sqlite3_data_co
351d0 75 6e 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  unt(sqlite3_stmt
351e0 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a   *pStmt);../*.**
351f0 20 43 41 50 49 33 52 45 46 3a 20 46 75 6e 64 61   CAPI3REF: Funda
35200 6d 65 6e 74 61 6c 20 44 61 74 61 74 79 70 65 73  mental Datatypes
35210 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 53 51  .** KEYWORDS: SQ
35220 4c 49 54 45 5f 54 45 58 54 0a 2a 2a 0a 2a 2a 20  LITE_TEXT.**.** 
35230 5e 28 45 76 65 72 79 20 76 61 6c 75 65 20 69 6e  ^(Every value in
35240 20 53 51 4c 69 74 65 20 68 61 73 20 6f 6e 65 20   SQLite has one 
35250 6f 66 20 66 69 76 65 20 66 75 6e 64 61 6d 65 6e  of five fundamen
35260 74 61 6c 20 64 61 74 61 74 79 70 65 73 3a 0a 2a  tal datatypes:.*
35270 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69  *.** <ul>.** <li
35280 3e 20 36 34 2d 62 69 74 20 73 69 67 6e 65 64 20  > 64-bit signed 
35290 69 6e 74 65 67 65 72 0a 2a 2a 20 3c 6c 69 3e 20  integer.** <li> 
352a0 36 34 2d 62 69 74 20 49 45 45 45 20 66 6c 6f 61  64-bit IEEE floa
352b0 74 69 6e 67 20 70 6f 69 6e 74 20 6e 75 6d 62 65  ting point numbe
352c0 72 0a 2a 2a 20 3c 6c 69 3e 20 73 74 72 69 6e 67  r.** <li> string
352d0 0a 2a 2a 20 3c 6c 69 3e 20 42 4c 4f 42 0a 2a 2a  .** <li> BLOB.**
352e0 20 3c 6c 69 3e 20 4e 55 4c 4c 0a 2a 2a 20 3c 2f   <li> NULL.** </
352f0 75 6c 3e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 73  ul>)^.**.** Thes
35300 65 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65 20  e constants are 
35310 63 6f 64 65 73 20 66 6f 72 20 65 61 63 68 20 6f  codes for each o
35320 66 20 74 68 6f 73 65 20 74 79 70 65 73 2e 0a 2a  f those types..*
35330 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 74  *.** Note that t
35340 68 65 20 53 51 4c 49 54 45 5f 54 45 58 54 20 63  he SQLITE_TEXT c
35350 6f 6e 73 74 61 6e 74 20 77 61 73 20 61 6c 73 6f  onstant was also
35360 20 75 73 65 64 20 69 6e 20 53 51 4c 69 74 65 20   used in SQLite 
35370 76 65 72 73 69 6f 6e 20 32 0a 2a 2a 20 66 6f 72  version 2.** for
35380 20 61 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64 69   a completely di
35390 66 66 65 72 65 6e 74 20 6d 65 61 6e 69 6e 67 2e  fferent meaning.
353a0 20 20 53 6f 66 74 77 61 72 65 20 74 68 61 74 20    Software that 
353b0 6c 69 6e 6b 73 20 61 67 61 69 6e 73 74 20 62 6f  links against bo
353c0 74 68 0a 2a 2a 20 53 51 4c 69 74 65 20 76 65 72  th.** SQLite ver
353d0 73 69 6f 6e 20 32 20 61 6e 64 20 53 51 4c 69 74  sion 2 and SQLit
353e0 65 20 76 65 72 73 69 6f 6e 20 33 20 73 68 6f 75  e version 3 shou
353f0 6c 64 20 75 73 65 20 53 51 4c 49 54 45 33 5f 54  ld use SQLITE3_T
35400 45 58 54 2c 20 6e 6f 74 0a 2a 2a 20 53 51 4c 49  EXT, not.** SQLI
35410 54 45 5f 54 45 58 54 2e 0a 2a 2f 0a 23 64 65 66  TE_TEXT..*/.#def
35420 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45 47  ine SQLITE_INTEG
35430 45 52 20 20 31 0a 23 64 65 66 69 6e 65 20 53 51  ER  1.#define SQ
35440 4c 49 54 45 5f 46 4c 4f 41 54 20 20 20 20 32 0a  LITE_FLOAT    2.
35450 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42  #define SQLITE_B
35460 4c 4f 42 20 20 20 20 20 34 0a 23 64 65 66 69 6e  LOB     4.#defin
35470 65 20 53 51 4c 49 54 45 5f 4e 55 4c 4c 20 20 20  e SQLITE_NULL   
35480 20 20 35 0a 23 69 66 64 65 66 20 53 51 4c 49 54    5.#ifdef SQLIT
35490 45 5f 54 45 58 54 0a 23 20 75 6e 64 65 66 20 53  E_TEXT.# undef S
354a0 51 4c 49 54 45 5f 54 45 58 54 0a 23 65 6c 73 65  QLITE_TEXT.#else
354b0 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45  .# define SQLITE
354c0 5f 54 45 58 54 20 20 20 20 20 33 0a 23 65 6e 64  _TEXT     3.#end
354d0 69 66 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  if.#define SQLIT
354e0 45 33 5f 54 45 58 54 20 20 20 20 20 33 0a 0a 2f  E3_TEXT     3../
354f0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52  *.** CAPI3REF: R
35500 65 73 75 6c 74 20 56 61 6c 75 65 73 20 46 72 6f  esult Values Fro
35510 6d 20 41 20 51 75 65 72 79 0a 2a 2a 20 4b 45 59  m A Query.** KEY
35520 57 4f 52 44 53 3a 20 7b 63 6f 6c 75 6d 6e 20 61  WORDS: {column a
35530 63 63 65 73 73 20 66 75 6e 63 74 69 6f 6e 73 7d  ccess functions}
35540 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
35550 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 3c  te3_stmt.**.** <
35560 62 3e 53 75 6d 6d 61 72 79 3a 3c 2f 62 3e 0a 2a  b>Summary:</b>.*
35570 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 74  * <blockquote><t
35580 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63 65  able border=0 ce
35590 6c 6c 70 61 64 64 69 6e 67 3d 30 20 63 65 6c 6c  llpadding=0 cell
355a0 73 70 61 63 69 6e 67 3d 30 3e 0a 2a 2a 20 3c 74  spacing=0>.** <t
355b0 72 3e 3c 74 64 3e 3c 62 3e 73 71 6c 69 74 65 33  r><td><b>sqlite3
355c0 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 3c 2f 62 3e  _column_blob</b>
355d0 3c 74 64 3e 26 72 61 72 72 3b 3c 74 64 3e 42 4c  <td>&rarr;<td>BL
355e0 4f 42 20 72 65 73 75 6c 74 0a 2a 2a 20 3c 74 72  OB result.** <tr
355f0 3e 3c 74 64 3e 3c 62 3e 73 71 6c 69 74 65 33 5f  ><td><b>sqlite3_
35600 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 3c 2f 62  column_double</b
35610 3e 3c 74 64 3e 26 72 61 72 72 3b 3c 74 64 3e 52  ><td>&rarr;<td>R
35620 45 41 4c 20 72 65 73 75 6c 74 0a 2a 2a 20 3c 74  EAL result.** <t
35630 72 3e 3c 74 64 3e 3c 62 3e 73 71 6c 69 74 65 33  r><td><b>sqlite3
35640 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 3c 2f 62 3e 3c  _column_int</b><
35650 74 64 3e 26 72 61 72 72 3b 3c 74 64 3e 33 32 2d  td>&rarr;<td>32-
35660 62 69 74 20 49 4e 54 45 47 45 52 20 72 65 73 75  bit INTEGER resu
35670 6c 74 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 3c 62  lt.** <tr><td><b
35680 3e 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  >sqlite3_column_
35690 69 6e 74 36 34 3c 2f 62 3e 3c 74 64 3e 26 72 61  int64</b><td>&ra
356a0 72 72 3b 3c 74 64 3e 36 34 2d 62 69 74 20 49 4e  rr;<td>64-bit IN
356b0 54 45 47 45 52 20 72 65 73 75 6c 74 0a 2a 2a 20  TEGER result.** 
356c0 3c 74 72 3e 3c 74 64 3e 3c 62 3e 73 71 6c 69 74  <tr><td><b>sqlit
356d0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 3c 2f  e3_column_text</
356e0 62 3e 3c 74 64 3e 26 72 61 72 72 3b 3c 74 64 3e  b><td>&rarr;<td>
356f0 55 54 46 2d 38 20 54 45 58 54 20 72 65 73 75 6c  UTF-8 TEXT resul
35700 74 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 3c 62 3e  t.** <tr><td><b>
35710 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
35720 65 78 74 31 36 3c 2f 62 3e 3c 74 64 3e 26 72 61  ext16</b><td>&ra
35730 72 72 3b 3c 74 64 3e 55 54 46 2d 31 36 20 54 45  rr;<td>UTF-16 TE
35740 58 54 20 72 65 73 75 6c 74 0a 2a 2a 20 3c 74 72  XT result.** <tr
35750 3e 3c 74 64 3e 3c 62 3e 73 71 6c 69 74 65 33 5f  ><td><b>sqlite3_
35760 63 6f 6c 75 6d 6e 5f 76 61 6c 75 65 3c 2f 62 3e  column_value</b>
35770 3c 74 64 3e 26 72 61 72 72 3b 3c 74 64 3e 54 68  <td>&rarr;<td>Th
35780 65 20 72 65 73 75 6c 74 20 61 73 20 61 6e 20 0a  e result as an .
35790 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75  ** [sqlite3_valu
357a0 65 7c 75 6e 70 72 6f 74 65 63 74 65 64 20 73 71  e|unprotected sq
357b0 6c 69 74 65 33 5f 76 61 6c 75 65 5d 20 6f 62 6a  lite3_value] obj
357c0 65 63 74 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e  ect..** <tr><td>
357d0 26 6e 62 73 70 3b 3c 74 64 3e 26 6e 62 73 70 3b  &nbsp;<td>&nbsp;
357e0 3c 74 64 3e 26 6e 62 73 70 3b 0a 2a 2a 20 3c 74  <td>&nbsp;.** <t
357f0 72 3e 3c 74 64 3e 3c 62 3e 73 71 6c 69 74 65 33  r><td><b>sqlite3
35800 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 3c 2f 62  _column_bytes</b
35810 3e 3c 74 64 3e 26 72 61 72 72 3b 3c 74 64 3e 53  ><td>&rarr;<td>S
35820 69 7a 65 20 6f 66 20 61 20 42 4c 4f 42 0a 2a 2a  ize of a BLOB.**
35830 20 6f 72 20 61 20 55 54 46 2d 38 20 54 45 58 54   or a UTF-8 TEXT
35840 20 72 65 73 75 6c 74 20 69 6e 20 62 79 74 65 73   result in bytes
35850 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 3c 62 3e 73  .** <tr><td><b>s
35860 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
35870 74 65 73 31 36 26 6e 62 73 70 3b 26 6e 62 73 70  tes16&nbsp;&nbsp
35880 3b 3c 2f 62 3e 0a 2a 2a 20 3c 74 64 3e 26 72 61  ;</b>.** <td>&ra
35890 72 72 3b 26 6e 62 73 70 3b 26 6e 62 73 70 3b 3c  rr;&nbsp;&nbsp;<
358a0 74 64 3e 53 69 7a 65 20 6f 66 20 55 54 46 2d 31  td>Size of UTF-1
358b0 36 0a 2a 2a 20 54 45 58 54 20 69 6e 20 62 79 74  6.** TEXT in byt
358c0 65 73 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 3c 62  es.** <tr><td><b
358d0 3e 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  >sqlite3_column_
358e0 74 79 70 65 3c 2f 62 3e 3c 74 64 3e 26 72 61 72  type</b><td>&rar
358f0 72 3b 3c 74 64 3e 44 65 66 61 75 6c 74 0a 2a 2a  r;<td>Default.**
35900 20 64 61 74 61 74 79 70 65 20 6f 66 20 74 68 65   datatype of the
35910 20 72 65 73 75 6c 74 0a 2a 2a 20 3c 2f 74 61 62   result.** </tab
35920 6c 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  le></blockquote>
35930 0a 2a 2a 0a 2a 2a 20 3c 62 3e 44 65 74 61 69 6c  .**.** <b>Detail
35940 73 3a 3c 2f 62 3e 0a 2a 2a 0a 2a 2a 20 5e 54 68  s:</b>.**.** ^Th
35950 65 73 65 20 72 6f 75 74 69 6e 65 73 20 72 65 74  ese routines ret
35960 75 72 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  urn information 
35970 61 62 6f 75 74 20 61 20 73 69 6e 67 6c 65 20 63  about a single c
35980 6f 6c 75 6d 6e 20 6f 66 20 74 68 65 20 63 75 72  olumn of the cur
35990 72 65 6e 74 0a 2a 2a 20 72 65 73 75 6c 74 20 72  rent.** result r
359a0 6f 77 20 6f 66 20 61 20 71 75 65 72 79 2e 20 20  ow of a query.  
359b0 5e 49 6e 20 65 76 65 72 79 20 63 61 73 65 20 74  ^In every case t
359c0 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
359d0 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 0a 2a  t is a pointer.*
359e0 2a 20 74 6f 20 74 68 65 20 5b 70 72 65 70 61 72  * to the [prepar
359f0 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 74 68  ed statement] th
35a00 61 74 20 69 73 20 62 65 69 6e 67 20 65 76 61 6c  at is being eval
35a10 75 61 74 65 64 20 28 74 68 65 20 5b 73 71 6c 69  uated (the [sqli
35a20 74 65 33 5f 73 74 6d 74 2a 5d 0a 2a 2a 20 74 68  te3_stmt*].** th
35a30 61 74 20 77 61 73 20 72 65 74 75 72 6e 65 64 20  at was returned 
35a40 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 70 72  from [sqlite3_pr
35a50 65 70 61 72 65 5f 76 32 28 29 5d 20 6f 72 20 6f  epare_v2()] or o
35a60 6e 65 20 6f 66 20 69 74 73 20 76 61 72 69 61 6e  ne of its varian
35a70 74 73 29 0a 2a 2a 20 61 6e 64 20 74 68 65 20 73  ts).** and the s
35a80 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 69  econd argument i
35a90 73 20 74 68 65 20 69 6e 64 65 78 20 6f 66 20 74  s the index of t
35aa0 68 65 20 63 6f 6c 75 6d 6e 20 66 6f 72 20 77 68  he column for wh
35ab0 69 63 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a  ich information.
35ac0 2a 2a 20 73 68 6f 75 6c 64 20 62 65 20 72 65 74  ** should be ret
35ad0 75 72 6e 65 64 2e 20 5e 54 68 65 20 6c 65 66 74  urned. ^The left
35ae0 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20 6f 66 20 74  most column of t
35af0 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 68 61  he result set ha
35b00 73 20 74 68 65 20 69 6e 64 65 78 20 30 2e 0a 2a  s the index 0..*
35b10 2a 20 5e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66  * ^The number of
35b20 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
35b30 72 65 73 75 6c 74 20 63 61 6e 20 62 65 20 64 65  result can be de
35b40 74 65 72 6d 69 6e 65 64 20 75 73 69 6e 67 0a 2a  termined using.*
35b50 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  * [sqlite3_colum
35b60 6e 5f 63 6f 75 6e 74 28 29 5d 2e 0a 2a 2a 0a 2a  n_count()]..**.*
35b70 2a 20 49 66 20 74 68 65 20 53 51 4c 20 73 74 61  * If the SQL sta
35b80 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20  tement does not 
35b90 63 75 72 72 65 6e 74 6c 79 20 70 6f 69 6e 74 20  currently point 
35ba0 74 6f 20 61 20 76 61 6c 69 64 20 72 6f 77 2c 20  to a valid row, 
35bb0 6f 72 20 69 66 20 74 68 65 0a 2a 2a 20 63 6f 6c  or if the.** col
35bc0 75 6d 6e 20 69 6e 64 65 78 20 69 73 20 6f 75 74  umn index is out
35bd0 20 6f 66 20 72 61 6e 67 65 2c 20 74 68 65 20 72   of range, the r
35be0 65 73 75 6c 74 20 69 73 20 75 6e 64 65 66 69 6e  esult is undefin
35bf0 65 64 2e 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75  ed..** These rou
35c00 74 69 6e 65 73 20 6d 61 79 20 6f 6e 6c 79 20 62  tines may only b
35c10 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 74 68  e called when th
35c20 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 63 61  e most recent ca
35c30 6c 6c 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65  ll to.** [sqlite
35c40 33 5f 73 74 65 70 28 29 5d 20 68 61 73 20 72 65  3_step()] has re
35c50 74 75 72 6e 65 64 20 5b 53 51 4c 49 54 45 5f 52  turned [SQLITE_R
35c60 4f 57 5d 20 61 6e 64 20 6e 65 69 74 68 65 72 0a  OW] and neither.
35c70 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65  ** [sqlite3_rese
35c80 74 28 29 5d 20 6e 6f 72 20 5b 73 71 6c 69 74 65  t()] nor [sqlite
35c90 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d 20 68 61  3_finalize()] ha
35ca0 76 65 20 62 65 65 6e 20 63 61 6c 6c 65 64 20 73  ve been called s
35cb0 75 62 73 65 71 75 65 6e 74 6c 79 2e 0a 2a 2a 20  ubsequently..** 
35cc0 49 66 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20  If any of these 
35cd0 72 6f 75 74 69 6e 65 73 20 61 72 65 20 63 61 6c  routines are cal
35ce0 6c 65 64 20 61 66 74 65 72 20 5b 73 71 6c 69 74  led after [sqlit
35cf0 65 33 5f 72 65 73 65 74 28 29 5d 20 6f 72 0a 2a  e3_reset()] or.*
35d00 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  * [sqlite3_final
35d10 69 7a 65 28 29 5d 20 6f 72 20 61 66 74 65 72 20  ize()] or after 
35d20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
35d30 20 68 61 73 20 72 65 74 75 72 6e 65 64 0a 2a 2a   has returned.**
35d40 20 73 6f 6d 65 74 68 69 6e 67 20 6f 74 68 65 72   something other
35d50 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 52 4f   than [SQLITE_RO
35d60 57 5d 2c 20 74 68 65 20 72 65 73 75 6c 74 73 20  W], the results 
35d70 61 72 65 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a  are undefined..*
35d80 2a 20 49 66 20 5b 73 71 6c 69 74 65 33 5f 73 74  * If [sqlite3_st
35d90 65 70 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65  ep()] or [sqlite
35da0 33 5f 72 65 73 65 74 28 29 5d 20 6f 72 20 5b 73  3_reset()] or [s
35db0 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
35dc0 29 5d 0a 2a 2a 20 61 72 65 20 63 61 6c 6c 65 64  )].** are called
35dd0 20 66 72 6f 6d 20 61 20 64 69 66 66 65 72 65 6e   from a differen
35de0 74 20 74 68 72 65 61 64 20 77 68 69 6c 65 20 61  t thread while a
35df0 6e 79 20 6f 66 20 74 68 65 73 65 20 72 6f 75 74  ny of these rout
35e00 69 6e 65 73 0a 2a 2a 20 61 72 65 20 70 65 6e 64  ines.** are pend
35e10 69 6e 67 2c 20 74 68 65 6e 20 74 68 65 20 72 65  ing, then the re
35e20 73 75 6c 74 73 20 61 72 65 20 75 6e 64 65 66 69  sults are undefi
35e30 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66  ned..**.** The f
35e40 69 72 73 74 20 73 69 78 20 69 6e 74 65 72 66 61  irst six interfa
35e50 63 65 73 20 28 5f 62 6c 6f 62 2c 20 5f 64 6f 75  ces (_blob, _dou
35e60 62 6c 65 2c 20 5f 69 6e 74 2c 20 5f 69 6e 74 36  ble, _int, _int6
35e70 34 2c 20 5f 74 65 78 74 2c 20 61 6e 64 20 5f 74  4, _text, and _t
35e80 65 78 74 31 36 29 0a 2a 2a 20 65 61 63 68 20 72  ext16).** each r
35e90 65 74 75 72 6e 20 74 68 65 20 76 61 6c 75 65 20  eturn the value 
35ea0 6f 66 20 61 20 72 65 73 75 6c 74 20 63 6f 6c 75  of a result colu
35eb0 6d 6e 20 69 6e 20 61 20 73 70 65 63 69 66 69 63  mn in a specific
35ec0 20 64 61 74 61 20 66 6f 72 6d 61 74 2e 20 20 49   data format.  I
35ed0 66 0a 2a 2a 20 74 68 65 20 72 65 73 75 6c 74 20  f.** the result 
35ee0 63 6f 6c 75 6d 6e 20 69 73 20 6e 6f 74 20 69 6e  column is not in
35ef0 69 74 69 61 6c 6c 79 20 69 6e 20 74 68 65 20 72  itially in the r
35f00 65 71 75 65 73 74 65 64 20 66 6f 72 6d 61 74 20  equested format 
35f10 28 66 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 2a 2a  (for example,.**
35f20 20 69 66 20 74 68 65 20 71 75 65 72 79 20 72 65   if the query re
35f30 74 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72  turns an integer
35f40 20 62 75 74 20 74 68 65 20 73 71 6c 69 74 65 33   but the sqlite3
35f50 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 29 20 69  _column_text() i
35f60 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69 73 20 75  nterface.** is u
35f70 73 65 64 20 74 6f 20 65 78 74 72 61 63 74 20 74  sed to extract t
35f80 68 65 20 76 61 6c 75 65 29 20 74 68 65 6e 20 61  he value) then a
35f90 6e 20 61 75 74 6f 6d 61 74 69 63 20 74 79 70 65  n automatic type
35fa0 20 63 6f 6e 76 65 72 73 69 6f 6e 20 69 73 20 70   conversion is p
35fb0 65 72 66 6f 72 6d 65 64 2e 0a 2a 2a 0a 2a 2a 20  erformed..**.** 
35fc0 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c  ^The sqlite3_col
35fd0 75 6d 6e 5f 74 79 70 65 28 29 20 72 6f 75 74 69  umn_type() routi
35fe0 6e 65 20 72 65 74 75 72 6e 73 20 74 68 65 0a 2a  ne returns the.*
35ff0 2a 20 5b 53 51 4c 49 54 45 5f 49 4e 54 45 47 45  * [SQLITE_INTEGE
36000 52 20 7c 20 64 61 74 61 74 79 70 65 20 63 6f 64  R | datatype cod
36010 65 5d 20 66 6f 72 20 74 68 65 20 69 6e 69 74 69  e] for the initi
36020 61 6c 20 64 61 74 61 20 74 79 70 65 0a 2a 2a 20  al data type.** 
36030 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 63 6f  of the result co
36040 6c 75 6d 6e 2e 20 20 5e 54 68 65 20 72 65 74 75  lumn.  ^The retu
36050 72 6e 65 64 20 76 61 6c 75 65 20 69 73 20 6f 6e  rned value is on
36060 65 20 6f 66 20 5b 53 51 4c 49 54 45 5f 49 4e 54  e of [SQLITE_INT
36070 45 47 45 52 5d 2c 0a 2a 2a 20 5b 53 51 4c 49 54  EGER],.** [SQLIT
36080 45 5f 46 4c 4f 41 54 5d 2c 20 5b 53 51 4c 49 54  E_FLOAT], [SQLIT
36090 45 5f 54 45 58 54 5d 2c 20 5b 53 51 4c 49 54 45  E_TEXT], [SQLITE
360a0 5f 42 4c 4f 42 5d 2c 20 6f 72 20 5b 53 51 4c 49  _BLOB], or [SQLI
360b0 54 45 5f 4e 55 4c 4c 5d 2e 0a 2a 2a 20 54 68 65  TE_NULL]..** The
360c0 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66   return value of
360d0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
360e0 74 79 70 65 28 29 20 63 61 6e 20 62 65 20 75 73  type() can be us
360f0 65 64 20 74 6f 20 64 65 63 69 64 65 20 77 68 69  ed to decide whi
36100 63 68 0a 2a 2a 20 6f 66 20 74 68 65 20 66 69 72  ch.** of the fir
36110 73 74 20 73 69 78 20 69 6e 74 65 72 66 61 63 65  st six interface
36120 20 73 68 6f 75 6c 64 20 62 65 20 75 73 65 64 20   should be used 
36130 74 6f 20 65 78 74 72 61 63 74 20 74 68 65 20 63  to extract the c
36140 6f 6c 75 6d 6e 20 76 61 6c 75 65 2e 0a 2a 2a 20  olumn value..** 
36150 54 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  The value return
36160 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 63 6f  ed by sqlite3_co
36170 6c 75 6d 6e 5f 74 79 70 65 28 29 20 69 73 20 6f  lumn_type() is o
36180 6e 6c 79 20 6d 65 61 6e 69 6e 67 66 75 6c 20 69  nly meaningful i
36190 66 20 6e 6f 0a 2a 2a 20 61 75 74 6f 6d 61 74 69  f no.** automati
361a0 63 20 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f  c type conversio
361b0 6e 73 20 68 61 76 65 20 6f 63 63 75 72 72 65 64  ns have occurred
361c0 20 66 6f 72 20 74 68 65 20 76 61 6c 75 65 20 69   for the value i
361d0 6e 20 71 75 65 73 74 69 6f 6e 2e 20 20 0a 2a 2a  n question.  .**
361e0 20 41 66 74 65 72 20 61 20 74 79 70 65 20 63 6f   After a type co
361f0 6e 76 65 72 73 69 6f 6e 2c 20 74 68 65 20 72 65  nversion, the re
36200 73 75 6c 74 20 6f 66 20 63 61 6c 6c 69 6e 67 20  sult of calling 
36210 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
36220 79 70 65 28 29 0a 2a 2a 20 69 73 20 75 6e 64 65  ype().** is unde
36230 66 69 6e 65 64 2c 20 74 68 6f 75 67 68 20 68 61  fined, though ha
36240 72 6d 6c 65 73 73 2e 20 20 46 75 74 75 72 65 0a  rmless.  Future.
36250 2a 2a 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  ** versions of S
36260 51 4c 69 74 65 20 6d 61 79 20 63 68 61 6e 67 65  QLite may change
36270 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66   the behavior of
36280 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
36290 74 79 70 65 28 29 0a 2a 2a 20 66 6f 6c 6c 6f 77  type().** follow
362a0 69 6e 67 20 61 20 74 79 70 65 20 63 6f 6e 76 65  ing a type conve
362b0 72 73 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 49 66 20  rsion..**.** If 
362c0 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20  the result is a 
362d0 42 4c 4f 42 20 6f 72 20 61 20 54 45 58 54 20 73  BLOB or a TEXT s
362e0 74 72 69 6e 67 2c 20 74 68 65 6e 20 74 68 65 20  tring, then the 
362f0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
36300 79 74 65 73 28 29 0a 2a 2a 20 6f 72 20 73 71 6c  ytes().** or sql
36310 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
36320 73 31 36 28 29 20 69 6e 74 65 72 66 61 63 65 73  s16() interfaces
36330 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
36340 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 73 69  determine the si
36350 7a 65 0a 2a 2a 20 6f 66 20 74 68 61 74 20 42 4c  ze.** of that BL
36360 4f 42 20 6f 72 20 73 74 72 69 6e 67 2e 0a 2a 2a  OB or string..**
36370 0a 2a 2a 20 5e 49 66 20 74 68 65 20 72 65 73 75  .** ^If the resu
36380 6c 74 20 69 73 20 61 20 42 4c 4f 42 20 6f 72 20  lt is a BLOB or 
36390 55 54 46 2d 38 20 73 74 72 69 6e 67 20 74 68 65  UTF-8 string the
363a0 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 6f  n the sqlite3_co
363b0 6c 75 6d 6e 5f 62 79 74 65 73 28 29 0a 2a 2a 20  lumn_bytes().** 
363c0 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20  routine returns 
363d0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  the number of by
363e0 74 65 73 20 69 6e 20 74 68 61 74 20 42 4c 4f 42  tes in that BLOB
363f0 20 6f 72 20 73 74 72 69 6e 67 2e 0a 2a 2a 20 5e   or string..** ^
36400 49 66 20 74 68 65 20 72 65 73 75 6c 74 20 69 73  If the result is
36410 20 61 20 55 54 46 2d 31 36 20 73 74 72 69 6e 67   a UTF-16 string
36420 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 63  , then sqlite3_c
36430 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 29 20 63 6f  olumn_bytes() co
36440 6e 76 65 72 74 73 0a 2a 2a 20 74 68 65 20 73 74  nverts.** the st
36450 72 69 6e 67 20 74 6f 20 55 54 46 2d 38 20 61 6e  ring to UTF-8 an
36460 64 20 74 68 65 6e 20 72 65 74 75 72 6e 73 20 74  d then returns t
36470 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
36480 65 73 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 72  es..** ^If the r
36490 65 73 75 6c 74 20 69 73 20 61 20 6e 75 6d 65 72  esult is a numer
364a0 69 63 20 76 61 6c 75 65 20 74 68 65 6e 20 73 71  ic value then sq
364b0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
364c0 65 73 28 29 20 75 73 65 73 0a 2a 2a 20 5b 73 71  es() uses.** [sq
364d0 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29  lite3_snprintf()
364e0 5d 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 61  ] to convert tha
364f0 74 20 76 61 6c 75 65 20 74 6f 20 61 20 55 54 46  t value to a UTF
36500 2d 38 20 73 74 72 69 6e 67 20 61 6e 64 20 72 65  -8 string and re
36510 74 75 72 6e 73 0a 2a 2a 20 74 68 65 20 6e 75 6d  turns.** the num
36520 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20  ber of bytes in 
36530 74 68 61 74 20 73 74 72 69 6e 67 2e 0a 2a 2a 20  that string..** 
36540 5e 49 66 20 74 68 65 20 72 65 73 75 6c 74 20 69  ^If the result i
36550 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 73 71 6c  s NULL, then sql
36560 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
36570 73 28 29 20 72 65 74 75 72 6e 73 20 7a 65 72 6f  s() returns zero
36580 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20  ..**.** ^If the 
36590 72 65 73 75 6c 74 20 69 73 20 61 20 42 4c 4f 42  result is a BLOB
365a0 20 6f 72 20 55 54 46 2d 31 36 20 73 74 72 69 6e   or UTF-16 strin
365b0 67 20 74 68 65 6e 20 74 68 65 20 73 71 6c 69 74  g then the sqlit
365c0 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31  e3_column_bytes1
365d0 36 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 72  6().** routine r
365e0 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65  eturns the numbe
365f0 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68  r of bytes in th
36600 61 74 20 42 4c 4f 42 20 6f 72 20 73 74 72 69 6e  at BLOB or strin
36610 67 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 72 65  g..** ^If the re
36620 73 75 6c 74 20 69 73 20 61 20 55 54 46 2d 38 20  sult is a UTF-8 
36630 73 74 72 69 6e 67 2c 20 74 68 65 6e 20 73 71 6c  string, then sql
36640 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65  ite3_column_byte
36650 73 31 36 28 29 20 63 6f 6e 76 65 72 74 73 0a 2a  s16() converts.*
36660 2a 20 74 68 65 20 73 74 72 69 6e 67 20 74 6f 20  * the string to 
36670 55 54 46 2d 31 36 20 61 6e 64 20 74 68 65 6e 20  UTF-16 and then 
36680 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62  returns the numb
36690 65 72 20 6f 66 20 62 79 74 65 73 2e 0a 2a 2a 20  er of bytes..** 
366a0 5e 49 66 20 74 68 65 20 72 65 73 75 6c 74 20 69  ^If the result i
366b0 73 20 61 20 6e 75 6d 65 72 69 63 20 76 61 6c 75  s a numeric valu
366c0 65 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 63  e then sqlite3_c
366d0 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 29 20  olumn_bytes16() 
366e0 75 73 65 73 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  uses.** [sqlite3
366f0 5f 73 6e 70 72 69 6e 74 66 28 29 5d 20 74 6f 20  _snprintf()] to 
36700 63 6f 6e 76 65 72 74 20 74 68 61 74 20 76 61 6c  convert that val
36710 75 65 20 74 6f 20 61 20 55 54 46 2d 31 36 20 73  ue to a UTF-16 s
36720 74 72 69 6e 67 20 61 6e 64 20 72 65 74 75 72 6e  tring and return
36730 73 0a 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72 20  s.** the number 
36740 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 61 74  of bytes in that
36750 20 73 74 72 69 6e 67 2e 0a 2a 2a 20 5e 49 66 20   string..** ^If 
36760 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 4e 55  the result is NU
36770 4c 4c 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33  LL, then sqlite3
36780 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28  _column_bytes16(
36790 29 20 72 65 74 75 72 6e 73 20 7a 65 72 6f 2e 0a  ) returns zero..
367a0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 76 61 6c 75 65  **.** ^The value
367b0 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73  s returned by [s
367c0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
367d0 74 65 73 28 29 5d 20 61 6e 64 20 0a 2a 2a 20 5b  tes()] and .** [
367e0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
367f0 79 74 65 73 31 36 28 29 5d 20 64 6f 20 6e 6f 74  ytes16()] do not
36800 20 69 6e 63 6c 75 64 65 20 74 68 65 20 7a 65 72   include the zer
36810 6f 20 74 65 72 6d 69 6e 61 74 6f 72 73 20 61 74  o terminators at
36820 20 74 68 65 20 65 6e 64 0a 2a 2a 20 6f 66 20 74   the end.** of t
36830 68 65 20 73 74 72 69 6e 67 2e 20 20 5e 46 6f 72  he string.  ^For
36840 20 63 6c 61 72 69 74 79 3a 20 74 68 65 20 76 61   clarity: the va
36850 6c 75 65 73 20 72 65 74 75 72 6e 65 64 20 62 79  lues returned by
36860 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  .** [sqlite3_col
36870 75 6d 6e 5f 62 79 74 65 73 28 29 5d 20 61 6e 64  umn_bytes()] and
36880 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
36890 5f 62 79 74 65 73 31 36 28 29 5d 20 61 72 65 20  _bytes16()] are 
368a0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a  the number of.**
368b0 20 62 79 74 65 73 20 69 6e 20 74 68 65 20 73 74   bytes in the st
368c0 72 69 6e 67 2c 20 6e 6f 74 20 74 68 65 20 6e 75  ring, not the nu
368d0 6d 62 65 72 20 6f 66 20 63 68 61 72 61 63 74 65  mber of characte
368e0 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e 53 74 72 69 6e  rs..**.** ^Strin
368f0 67 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 73  gs returned by s
36900 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
36910 78 74 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33  xt() and sqlite3
36920 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29  _column_text16()
36930 2c 0a 2a 2a 20 65 76 65 6e 20 65 6d 70 74 79 20  ,.** even empty 
36940 73 74 72 69 6e 67 73 2c 20 61 72 65 20 61 6c 77  strings, are alw
36950 61 79 73 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61  ays zero-termina
36960 74 65 64 2e 20 20 5e 54 68 65 20 72 65 74 75 72  ted.  ^The retur
36970 6e 0a 2a 2a 20 76 61 6c 75 65 20 66 72 6f 6d 20  n.** value from 
36980 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
36990 6c 6f 62 28 29 20 66 6f 72 20 61 20 7a 65 72 6f  lob() for a zero
369a0 2d 6c 65 6e 67 74 68 20 42 4c 4f 42 20 69 73 20  -length BLOB is 
369b0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a  a NULL pointer..
369c0 2a 2a 0a 2a 2a 20 3c 62 3e 57 61 72 6e 69 6e 67  **.** <b>Warning
369d0 3a 3c 2f 62 3e 20 5e 54 68 65 20 6f 62 6a 65 63  :</b> ^The objec
369e0 74 20 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73  t returned by [s
369f0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 76 61  qlite3_column_va
36a00 6c 75 65 28 29 5d 20 69 73 20 61 6e 0a 2a 2a 20  lue()] is an.** 
36a10 5b 75 6e 70 72 6f 74 65 63 74 65 64 20 73 71 6c  [unprotected sql
36a20 69 74 65 33 5f 76 61 6c 75 65 5d 20 6f 62 6a 65  ite3_value] obje
36a30 63 74 2e 20 20 49 6e 20 61 20 6d 75 6c 74 69 74  ct.  In a multit
36a40 68 72 65 61 64 65 64 20 65 6e 76 69 72 6f 6e 6d  hreaded environm
36a50 65 6e 74 2c 0a 2a 2a 20 61 6e 20 75 6e 70 72 6f  ent,.** an unpro
36a60 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
36a70 61 6c 75 65 20 6f 62 6a 65 63 74 20 6d 61 79 20  alue object may 
36a80 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 73 61 66  only be used saf
36a90 65 6c 79 20 77 69 74 68 0a 2a 2a 20 5b 73 71 6c  ely with.** [sql
36aa0 69 74 65 33 5f 62 69 6e 64 5f 76 61 6c 75 65 28  ite3_bind_value(
36ab0 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
36ac0 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 29 5d 2e  result_value()].
36ad0 0a 2a 2a 20 49 66 20 74 68 65 20 5b 75 6e 70 72  .** If the [unpr
36ae0 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f  otected sqlite3_
36af0 76 61 6c 75 65 5d 20 6f 62 6a 65 63 74 20 72 65  value] object re
36b00 74 75 72 6e 65 64 20 62 79 0a 2a 2a 20 5b 73 71  turned by.** [sq
36b10 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 76 61 6c  lite3_column_val
36b20 75 65 28 29 5d 20 69 73 20 75 73 65 64 20 69 6e  ue()] is used in
36b30 20 61 6e 79 20 6f 74 68 65 72 20 77 61 79 2c 20   any other way, 
36b40 69 6e 63 6c 75 64 69 6e 67 20 63 61 6c 6c 73 0a  including calls.
36b50 2a 2a 20 74 6f 20 72 6f 75 74 69 6e 65 73 20 6c  ** to routines l
36b60 69 6b 65 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c  ike [sqlite3_val
36b70 75 65 5f 69 6e 74 28 29 5d 2c 20 5b 73 71 6c 69  ue_int()], [sqli
36b80 74 65 33 5f 76 61 6c 75 65 5f 74 65 78 74 28 29  te3_value_text()
36b90 5d 2c 0a 2a 2a 20 6f 72 20 5b 73 71 6c 69 74 65  ],.** or [sqlite
36ba0 33 5f 76 61 6c 75 65 5f 62 79 74 65 73 28 29 5d  3_value_bytes()]
36bb0 2c 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 69  , the behavior i
36bc0 73 20 6e 6f 74 20 74 68 72 65 61 64 73 61 66 65  s not threadsafe
36bd0 2e 0a 2a 2a 20 48 65 6e 63 65 2c 20 74 68 65 20  ..** Hence, the 
36be0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 76  sqlite3_column_v
36bf0 61 6c 75 65 28 29 20 69 6e 74 65 72 66 61 63 65  alue() interface
36c00 0a 2a 2a 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20  .** is normally 
36c10 6f 6e 6c 79 20 75 73 65 66 75 6c 20 77 69 74 68  only useful with
36c20 69 6e 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74  in the implement
36c30 61 74 69 6f 6e 20 6f 66 20 0a 2a 2a 20 5b 61 70  ation of .** [ap
36c40 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
36c50 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d  d SQL functions]
36c60 20 6f 72 20 5b 76 69 72 74 75 61 6c 20 74 61 62   or [virtual tab
36c70 6c 65 73 5d 2c 20 6e 6f 74 20 77 69 74 68 69 6e  les], not within
36c80 0a 2a 2a 20 74 6f 70 2d 6c 65 76 65 6c 20 61 70  .** top-level ap
36c90 70 6c 69 63 61 74 69 6f 6e 20 63 6f 64 65 2e 0a  plication code..
36ca0 2a 2a 0a 2a 2a 20 54 68 65 20 74 68 65 73 65 20  **.** The these 
36cb0 72 6f 75 74 69 6e 65 73 20 6d 61 79 20 61 74 74  routines may att
36cc0 65 6d 70 74 20 74 6f 20 63 6f 6e 76 65 72 74 20  empt to convert 
36cd0 74 68 65 20 64 61 74 61 74 79 70 65 20 6f 66 20  the datatype of 
36ce0 74 68 65 20 72 65 73 75 6c 74 2e 0a 2a 2a 20 5e  the result..** ^
36cf0 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20  For example, if 
36d00 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 72 65 70  the internal rep
36d10 72 65 73 65 6e 74 61 74 69 6f 6e 20 69 73 20 46  resentation is F
36d20 4c 4f 41 54 20 61 6e 64 20 61 20 74 65 78 74 20  LOAT and a text 
36d30 72 65 73 75 6c 74 0a 2a 2a 20 69 73 20 72 65 71  result.** is req
36d40 75 65 73 74 65 64 2c 20 5b 73 71 6c 69 74 65 33  uested, [sqlite3
36d50 5f 73 6e 70 72 69 6e 74 66 28 29 5d 20 69 73 20  _snprintf()] is 
36d60 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  used internally 
36d70 74 6f 20 70 65 72 66 6f 72 6d 20 74 68 65 0a 2a  to perform the.*
36d80 2a 20 63 6f 6e 76 65 72 73 69 6f 6e 20 61 75 74  * conversion aut
36d90 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 5e 28 54  omatically.  ^(T
36da0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 61 62  he following tab
36db0 6c 65 20 64 65 74 61 69 6c 73 20 74 68 65 20 63  le details the c
36dc0 6f 6e 76 65 72 73 69 6f 6e 73 0a 2a 2a 20 74 68  onversions.** th
36dd0 61 74 20 61 72 65 20 61 70 70 6c 69 65 64 3a 0a  at are applied:.
36de0 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74  **.** <blockquot
36df0 65 3e 0a 2a 2a 20 3c 74 61 62 6c 65 20 62 6f 72  e>.** <table bor
36e00 64 65 72 3d 22 31 22 3e 0a 2a 2a 20 3c 74 72 3e  der="1">.** <tr>
36e10 3c 74 68 3e 20 49 6e 74 65 72 6e 61 6c 3c 62 72  <th> Internal<br
36e20 3e 54 79 70 65 20 3c 74 68 3e 20 52 65 71 75 65  >Type <th> Reque
36e30 73 74 65 64 3c 62 72 3e 54 79 70 65 20 3c 74 68  sted<br>Type <th
36e40 3e 20 20 43 6f 6e 76 65 72 73 69 6f 6e 0a 2a 2a  >  Conversion.**
36e50 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 20 4e 55  .** <tr><td>  NU
36e60 4c 4c 20 20 20 20 3c 74 64 3e 20 49 4e 54 45 47  LL    <td> INTEG
36e70 45 52 20 20 20 3c 74 64 3e 20 52 65 73 75 6c 74  ER   <td> Result
36e80 20 69 73 20 30 0a 2a 2a 20 3c 74 72 3e 3c 74 64   is 0.** <tr><td
36e90 3e 20 20 4e 55 4c 4c 20 20 20 20 3c 74 64 3e 20  >  NULL    <td> 
36ea0 20 46 4c 4f 41 54 20 20 20 20 3c 74 64 3e 20 52   FLOAT    <td> R
36eb0 65 73 75 6c 74 20 69 73 20 30 2e 30 0a 2a 2a 20  esult is 0.0.** 
36ec0 3c 74 72 3e 3c 74 64 3e 20 20 4e 55 4c 4c 20 20  <tr><td>  NULL  
36ed0 20 20 3c 74 64 3e 20 20 20 54 45 58 54 20 20 20    <td>   TEXT   
36ee0 20 3c 74 64 3e 20 52 65 73 75 6c 74 20 69 73 20   <td> Result is 
36ef0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a 2a  a NULL pointer.*
36f00 2a 20 3c 74 72 3e 3c 74 64 3e 20 20 4e 55 4c 4c  * <tr><td>  NULL
36f10 20 20 20 20 3c 74 64 3e 20 20 20 42 4c 4f 42 20      <td>   BLOB 
36f20 20 20 20 3c 74 64 3e 20 52 65 73 75 6c 74 20 69     <td> Result i
36f30 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  s a NULL pointer
36f40 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 49 4e 54  .** <tr><td> INT
36f50 45 47 45 52 20 20 3c 74 64 3e 20 20 46 4c 4f 41  EGER  <td>  FLOA
36f60 54 20 20 20 20 3c 74 64 3e 20 43 6f 6e 76 65 72  T    <td> Conver
36f70 74 20 66 72 6f 6d 20 69 6e 74 65 67 65 72 20 74  t from integer t
36f80 6f 20 66 6c 6f 61 74 0a 2a 2a 20 3c 74 72 3e 3c  o float.** <tr><
36f90 74 64 3e 20 49 4e 54 45 47 45 52 20 20 3c 74 64  td> INTEGER  <td
36fa0 3e 20 20 20 54 45 58 54 20 20 20 20 3c 74 64 3e  >   TEXT    <td>
36fb0 20 41 53 43 49 49 20 72 65 6e 64 65 72 69 6e 67   ASCII rendering
36fc0 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65 72 0a   of the integer.
36fd0 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 49 4e 54 45  ** <tr><td> INTE
36fe0 47 45 52 20 20 3c 74 64 3e 20 20 20 42 4c 4f 42  GER  <td>   BLOB
36ff0 20 20 20 20 3c 74 64 3e 20 53 61 6d 65 20 61 73      <td> Same as
37000 20 49 4e 54 45 47 45 52 2d 3e 54 45 58 54 0a 2a   INTEGER->TEXT.*
37010 2a 20 3c 74 72 3e 3c 74 64 3e 20 20 46 4c 4f 41  * <tr><td>  FLOA
37020 54 20 20 20 3c 74 64 3e 20 49 4e 54 45 47 45 52  T   <td> INTEGER
37030 20 20 20 3c 74 64 3e 20 5b 43 41 53 54 5d 20 74     <td> [CAST] t
37040 6f 20 49 4e 54 45 47 45 52 0a 2a 2a 20 3c 74 72  o INTEGER.** <tr
37050 3e 3c 74 64 3e 20 20 46 4c 4f 41 54 20 20 20 3c  ><td>  FLOAT   <
37060 74 64 3e 20 20 20 54 45 58 54 20 20 20 20 3c 74  td>   TEXT    <t
37070 64 3e 20 41 53 43 49 49 20 72 65 6e 64 65 72 69  d> ASCII renderi
37080 6e 67 20 6f 66 20 74 68 65 20 66 6c 6f 61 74 0a  ng of the float.
37090 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 20 46 4c 4f  ** <tr><td>  FLO
370a0 41 54 20 20 20 3c 74 64 3e 20 20 20 42 4c 4f 42  AT   <td>   BLOB
370b0 20 20 20 20 3c 74 64 3e 20 5b 43 41 53 54 5d 20      <td> [CAST] 
370c0 74 6f 20 42 4c 4f 42 0a 2a 2a 20 3c 74 72 3e 3c  to BLOB.** <tr><
370d0 74 64 3e 20 20 54 45 58 54 20 20 20 20 3c 74 64  td>  TEXT    <td
370e0 3e 20 49 4e 54 45 47 45 52 20 20 20 3c 74 64 3e  > INTEGER   <td>
370f0 20 5b 43 41 53 54 5d 20 74 6f 20 49 4e 54 45 47   [CAST] to INTEG
37100 45 52 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 20  ER.** <tr><td>  
37110 54 45 58 54 20 20 20 20 3c 74 64 3e 20 20 46 4c  TEXT    <td>  FL
37120 4f 41 54 20 20 20 20 3c 74 64 3e 20 5b 43 41 53  OAT    <td> [CAS
37130 54 5d 20 74 6f 20 52 45 41 4c 0a 2a 2a 20 3c 74  T] to REAL.** <t
37140 72 3e 3c 74 64 3e 20 20 54 45 58 54 20 20 20 20  r><td>  TEXT    
37150 3c 74 64 3e 20 20 20 42 4c 4f 42 20 20 20 20 3c  <td>   BLOB    <
37160 74 64 3e 20 4e 6f 20 63 68 61 6e 67 65 0a 2a 2a  td> No change.**
37170 20 3c 74 72 3e 3c 74 64 3e 20 20 42 4c 4f 42 20   <tr><td>  BLOB 
37180 20 20 20 3c 74 64 3e 20 49 4e 54 45 47 45 52 20     <td> INTEGER 
37190 20 20 3c 74 64 3e 20 5b 43 41 53 54 5d 20 74 6f    <td> [CAST] to
371a0 20 49 4e 54 45 47 45 52 0a 2a 2a 20 3c 74 72 3e   INTEGER.** <tr>
371b0 3c 74 64 3e 20 20 42 4c 4f 42 20 20 20 20 3c 74  <td>  BLOB    <t
371c0 64 3e 20 20 46 4c 4f 41 54 20 20 20 20 3c 74 64  d>  FLOAT    <td
371d0 3e 20 5b 43 41 53 54 5d 20 74 6f 20 52 45 41 4c  > [CAST] to REAL
371e0 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 20 42 4c  .** <tr><td>  BL
371f0 4f 42 20 20 20 20 3c 74 64 3e 20 20 20 54 45 58  OB    <td>   TEX
37200 54 20 20 20 20 3c 74 64 3e 20 41 64 64 20 61 20  T    <td> Add a 
37210 7a 65 72 6f 20 74 65 72 6d 69 6e 61 74 6f 72 20  zero terminator 
37220 69 66 20 6e 65 65 64 65 64 0a 2a 2a 20 3c 2f 74  if needed.** </t
37230 61 62 6c 65 3e 0a 2a 2a 20 3c 2f 62 6c 6f 63 6b  able>.** </block
37240 71 75 6f 74 65 3e 29 5e 0a 2a 2a 0a 2a 2a 20 4e  quote>)^.**.** N
37250 6f 74 65 20 74 68 61 74 20 77 68 65 6e 20 74 79  ote that when ty
37260 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 6f  pe conversions o
37270 63 63 75 72 2c 20 70 6f 69 6e 74 65 72 73 20 72  ccur, pointers r
37280 65 74 75 72 6e 65 64 20 62 79 20 70 72 69 6f 72  eturned by prior
37290 0a 2a 2a 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c  .** calls to sql
372a0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62  ite3_column_blob
372b0 28 29 2c 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  (), sqlite3_colu
372c0 6d 6e 5f 74 65 78 74 28 29 2c 20 61 6e 64 2f 6f  mn_text(), and/o
372d0 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c  r.** sqlite3_col
372e0 75 6d 6e 5f 74 65 78 74 31 36 28 29 20 6d 61 79  umn_text16() may
372f0 20 62 65 20 69 6e 76 61 6c 69 64 61 74 65 64 2e   be invalidated.
37300 0a 2a 2a 20 54 79 70 65 20 63 6f 6e 76 65 72 73  .** Type convers
37310 69 6f 6e 73 20 61 6e 64 20 70 6f 69 6e 74 65 72  ions and pointer
37320 20 69 6e 76 61 6c 69 64 61 74 69 6f 6e 73 20 6d   invalidations m
37330 69 67 68 74 20 6f 63 63 75 72 0a 2a 2a 20 69 6e  ight occur.** in
37340 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63   the following c
37350 61 73 65 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e  ases:.**.** <ul>
37360 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 69 6e 69  .** <li> The ini
37370 74 69 61 6c 20 63 6f 6e 74 65 6e 74 20 69 73 20  tial content is 
37380 61 20 42 4c 4f 42 20 61 6e 64 20 73 71 6c 69 74  a BLOB and sqlit
37390 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 29  e3_column_text()
373a0 20 6f 72 0a 2a 2a 20 20 20 20 20 20 73 71 6c 69   or.**      sqli
373b0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 31  te3_column_text1
373c0 36 28 29 20 69 73 20 63 61 6c 6c 65 64 2e 20 20  6() is called.  
373d0 41 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 6f  A zero-terminato
373e0 72 20 6d 69 67 68 74 0a 2a 2a 20 20 20 20 20 20  r might.**      
373f0 6e 65 65 64 20 74 6f 20 62 65 20 61 64 64 65 64  need to be added
37400 20 74 6f 20 74 68 65 20 73 74 72 69 6e 67 2e 3c   to the string.<
37410 2f 6c 69 3e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65  /li>.** <li> The
37420 20 69 6e 69 74 69 61 6c 20 63 6f 6e 74 65 6e 74   initial content
37430 20 69 73 20 55 54 46 2d 38 20 74 65 78 74 20 61   is UTF-8 text a
37440 6e 64 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  nd sqlite3_colum
37450 6e 5f 62 79 74 65 73 31 36 28 29 20 6f 72 0a 2a  n_bytes16() or.*
37460 2a 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f 63  *      sqlite3_c
37470 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29 20 69  olumn_text16() i
37480 73 20 63 61 6c 6c 65 64 2e 20 20 54 68 65 20 63  s called.  The c
37490 6f 6e 74 65 6e 74 20 6d 75 73 74 20 62 65 20 63  ontent must be c
374a0 6f 6e 76 65 72 74 65 64 0a 2a 2a 20 20 20 20 20  onverted.**     
374b0 20 74 6f 20 55 54 46 2d 31 36 2e 3c 2f 6c 69 3e   to UTF-16.</li>
374c0 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 69 6e 69  .** <li> The ini
374d0 74 69 61 6c 20 63 6f 6e 74 65 6e 74 20 69 73 20  tial content is 
374e0 55 54 46 2d 31 36 20 74 65 78 74 20 61 6e 64 20  UTF-16 text and 
374f0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
37500 79 74 65 73 28 29 20 6f 72 0a 2a 2a 20 20 20 20  ytes() or.**    
37510 20 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e    sqlite3_column
37520 5f 74 65 78 74 28 29 20 69 73 20 63 61 6c 6c 65  _text() is calle
37530 64 2e 20 20 54 68 65 20 63 6f 6e 74 65 6e 74 20  d.  The content 
37540 6d 75 73 74 20 62 65 20 63 6f 6e 76 65 72 74 65  must be converte
37550 64 0a 2a 2a 20 20 20 20 20 20 74 6f 20 55 54 46  d.**      to UTF
37560 2d 38 2e 3c 2f 6c 69 3e 0a 2a 2a 20 3c 2f 75 6c  -8.</li>.** </ul
37570 3e 0a 2a 2a 0a 2a 2a 20 5e 43 6f 6e 76 65 72 73  >.**.** ^Convers
37580 69 6f 6e 73 20 62 65 74 77 65 65 6e 20 55 54 46  ions between UTF
37590 2d 31 36 62 65 20 61 6e 64 20 55 54 46 2d 31 36  -16be and UTF-16
375a0 6c 65 20 61 72 65 20 61 6c 77 61 79 73 20 64 6f  le are always do
375b0 6e 65 20 69 6e 20 70 6c 61 63 65 20 61 6e 64 20  ne in place and 
375c0 64 6f 0a 2a 2a 20 6e 6f 74 20 69 6e 76 61 6c 69  do.** not invali
375d0 64 61 74 65 20 61 20 70 72 69 6f 72 20 70 6f 69  date a prior poi
375e0 6e 74 65 72 2c 20 74 68 6f 75 67 68 20 6f 66 20  nter, though of 
375f0 63 6f 75 72 73 65 20 74 68 65 20 63 6f 6e 74 65  course the conte
37600 6e 74 20 6f 66 20 74 68 65 20 62 75 66 66 65 72  nt of the buffer
37610 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 70 72 69  .** that the pri
37620 6f 72 20 70 6f 69 6e 74 65 72 20 72 65 66 65 72  or pointer refer
37630 65 6e 63 65 73 20 77 69 6c 6c 20 68 61 76 65 20  ences will have 
37640 62 65 65 6e 20 6d 6f 64 69 66 69 65 64 2e 20 20  been modified.  
37650 4f 74 68 65 72 20 6b 69 6e 64 73 0a 2a 2a 20 6f  Other kinds.** o
37660 66 20 63 6f 6e 76 65 72 73 69 6f 6e 20 61 72 65  f conversion are
37670 20 64 6f 6e 65 20 69 6e 20 70 6c 61 63 65 20 77   done in place w
37680 68 65 6e 20 69 74 20 69 73 20 70 6f 73 73 69 62  hen it is possib
37690 6c 65 2c 20 62 75 74 20 73 6f 6d 65 74 69 6d 65  le, but sometime
376a0 73 20 74 68 65 79 0a 2a 2a 20 61 72 65 20 6e 6f  s they.** are no
376b0 74 20 70 6f 73 73 69 62 6c 65 20 61 6e 64 20 69  t possible and i
376c0 6e 20 74 68 6f 73 65 20 63 61 73 65 73 20 70 72  n those cases pr
376d0 69 6f 72 20 70 6f 69 6e 74 65 72 73 20 61 72 65  ior pointers are
376e0 20 69 6e 76 61 6c 69 64 61 74 65 64 2e 0a 2a 2a   invalidated..**
376f0 0a 2a 2a 20 54 68 65 20 73 61 66 65 73 74 20 70  .** The safest p
37700 6f 6c 69 63 79 20 69 73 20 74 6f 20 69 6e 76 6f  olicy is to invo
37710 6b 65 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65  ke these routine
37720 73 0a 2a 2a 20 69 6e 20 6f 6e 65 20 6f 66 20 74  s.** in one of t
37730 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 77 61 79  he following way
37740 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a  s:.**.** <ul>.**
37750 20 20 3c 6c 69 3e 73 71 6c 69 74 65 33 5f 63 6f    <li>sqlite3_co
37760 6c 75 6d 6e 5f 74 65 78 74 28 29 20 66 6f 6c 6c  lumn_text() foll
37770 6f 77 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  owed by sqlite3_
37780 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 29 3c 2f  column_bytes()</
37790 6c 69 3e 0a 2a 2a 20 20 3c 6c 69 3e 73 71 6c 69  li>.**  <li>sqli
377a0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28  te3_column_blob(
377b0 29 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 73 71  ) followed by sq
377c0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
377d0 65 73 28 29 3c 2f 6c 69 3e 0a 2a 2a 20 20 3c 6c  es()</li>.**  <l
377e0 69 3e 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  i>sqlite3_column
377f0 5f 74 65 78 74 31 36 28 29 20 66 6f 6c 6c 6f 77  _text16() follow
37800 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 63 6f  ed by sqlite3_co
37810 6c 75 6d 6e 5f 62 79 74 65 73 31 36 28 29 3c 2f  lumn_bytes16()</
37820 6c 69 3e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a  li>.** </ul>.**.
37830 2a 2a 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  ** In other word
37840 73 2c 20 79 6f 75 20 73 68 6f 75 6c 64 20 63 61  s, you should ca
37850 6c 6c 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ll sqlite3_colum
37860 6e 5f 74 65 78 74 28 29 2c 0a 2a 2a 20 73 71 6c  n_text(),.** sql
37870 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62  ite3_column_blob
37880 28 29 2c 20 6f 72 20 73 71 6c 69 74 65 33 5f 63  (), or sqlite3_c
37890 6f 6c 75 6d 6e 5f 74 65 78 74 31 36 28 29 20 66  olumn_text16() f
378a0 69 72 73 74 20 74 6f 20 66 6f 72 63 65 20 74 68  irst to force th
378b0 65 20 72 65 73 75 6c 74 0a 2a 2a 20 69 6e 74 6f  e result.** into
378c0 20 74 68 65 20 64 65 73 69 72 65 64 20 66 6f 72   the desired for
378d0 6d 61 74 2c 20 74 68 65 6e 20 69 6e 76 6f 6b 65  mat, then invoke
378e0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
378f0 62 79 74 65 73 28 29 20 6f 72 0a 2a 2a 20 73 71  bytes() or.** sq
37900 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74  lite3_column_byt
37910 65 73 31 36 28 29 20 74 6f 20 66 69 6e 64 20 74  es16() to find t
37920 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72  he size of the r
37930 65 73 75 6c 74 2e 20 20 44 6f 20 6e 6f 74 20 6d  esult.  Do not m
37940 69 78 20 63 61 6c 6c 73 0a 2a 2a 20 74 6f 20 73  ix calls.** to s
37950 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
37960 78 74 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  xt() or sqlite3_
37970 63 6f 6c 75 6d 6e 5f 62 6c 6f 62 28 29 20 77 69  column_blob() wi
37980 74 68 20 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20 73  th calls to.** s
37990 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
379a0 74 65 73 31 36 28 29 2c 20 61 6e 64 20 64 6f 20  tes16(), and do 
379b0 6e 6f 74 20 6d 69 78 20 63 61 6c 6c 73 20 74 6f  not mix calls to
379c0 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
379d0 74 65 78 74 31 36 28 29 0a 2a 2a 20 77 69 74 68  text16().** with
379e0 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65   calls to sqlite
379f0 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 29  3_column_bytes()
37a00 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 70 6f 69  ..**.** ^The poi
37a10 6e 74 65 72 73 20 72 65 74 75 72 6e 65 64 20 61  nters returned a
37a20 72 65 20 76 61 6c 69 64 20 75 6e 74 69 6c 20 61  re valid until a
37a30 20 74 79 70 65 20 63 6f 6e 76 65 72 73 69 6f 6e   type conversion
37a40 20 6f 63 63 75 72 73 20 61 73 0a 2a 2a 20 64 65   occurs as.** de
37a50 73 63 72 69 62 65 64 20 61 62 6f 76 65 2c 20 6f  scribed above, o
37a60 72 20 75 6e 74 69 6c 20 5b 73 71 6c 69 74 65 33  r until [sqlite3
37a70 5f 73 74 65 70 28 29 5d 20 6f 72 20 5b 73 71 6c  _step()] or [sql
37a80 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20 6f 72  ite3_reset()] or
37a90 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e  .** [sqlite3_fin
37aa0 61 6c 69 7a 65 28 29 5d 20 69 73 20 63 61 6c 6c  alize()] is call
37ab0 65 64 2e 20 20 5e 54 68 65 20 6d 65 6d 6f 72 79  ed.  ^The memory
37ac0 20 73 70 61 63 65 20 75 73 65 64 20 74 6f 20 68   space used to h
37ad0 6f 6c 64 20 73 74 72 69 6e 67 73 0a 2a 2a 20 61  old strings.** a
37ae0 6e 64 20 42 4c 4f 42 73 20 69 73 20 66 72 65 65  nd BLOBs is free
37af0 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  d automatically.
37b00 20 20 44 6f 20 6e 6f 74 20 70 61 73 73 20 74 68    Do not pass th
37b10 65 20 70 6f 69 6e 74 65 72 73 20 72 65 74 75 72  e pointers retur
37b20 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c  ned.** from [sql
37b30 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 6c 6f 62  ite3_column_blob
37b40 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 6f  ()], [sqlite3_co
37b50 6c 75 6d 6e 5f 74 65 78 74 28 29 5d 2c 20 65 74  lumn_text()], et
37b60 63 2e 20 69 6e 74 6f 0a 2a 2a 20 5b 73 71 6c 69  c. into.** [sqli
37b70 74 65 33 5f 66 72 65 65 28 29 5d 2e 0a 2a 2a 0a  te3_free()]..**.
37b80 2a 2a 20 41 73 20 6c 6f 6e 67 20 61 73 20 74 68  ** As long as th
37b90 65 20 69 6e 70 75 74 20 70 61 72 61 6d 65 74 65  e input paramete
37ba0 72 73 20 61 72 65 20 63 6f 72 72 65 63 74 2c 20  rs are correct, 
37bb0 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 77  these routines w
37bc0 69 6c 6c 20 6f 6e 6c 79 0a 2a 2a 20 66 61 69 6c  ill only.** fail
37bd0 20 69 66 20 61 6e 20 6f 75 74 2d 6f 66 2d 6d 65   if an out-of-me
37be0 6d 6f 72 79 20 65 72 72 6f 72 20 6f 63 63 75 72  mory error occur
37bf0 73 20 64 75 72 69 6e 67 20 61 20 66 6f 72 6d 61  s during a forma
37c00 74 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0a 2a 2a  t conversion..**
37c10 20 4f 6e 6c 79 20 74 68 65 20 66 6f 6c 6c 6f 77   Only the follow
37c20 69 6e 67 20 73 75 62 73 65 74 20 6f 66 20 69 6e  ing subset of in
37c30 74 65 72 66 61 63 65 73 20 61 72 65 20 73 75 62  terfaces are sub
37c40 6a 65 63 74 20 74 6f 20 6f 75 74 2d 6f 66 2d 6d  ject to out-of-m
37c50 65 6d 6f 72 79 0a 2a 2a 20 65 72 72 6f 72 73 3a  emory.** errors:
37c60 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c  .**.** <ul>.** <
37c70 6c 69 3e 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  li> sqlite3_colu
37c80 6d 6e 5f 62 6c 6f 62 28 29 0a 2a 2a 20 3c 6c 69  mn_blob().** <li
37c90 3e 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e  > sqlite3_column
37ca0 5f 74 65 78 74 28 29 0a 2a 2a 20 3c 6c 69 3e 20  _text().** <li> 
37cb0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
37cc0 65 78 74 31 36 28 29 0a 2a 2a 20 3c 6c 69 3e 20  ext16().** <li> 
37cd0 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62  sqlite3_column_b
37ce0 79 74 65 73 28 29 0a 2a 2a 20 3c 6c 69 3e 20 73  ytes().** <li> s
37cf0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 62 79  qlite3_column_by
37d00 74 65 73 31 36 28 29 0a 2a 2a 20 3c 2f 75 6c 3e  tes16().** </ul>
37d10 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 20 6f 75 74  .**.** If an out
37d20 2d 6f 66 2d 6d 65 6d 6f 72 79 20 65 72 72 6f 72  -of-memory error
37d30 20 6f 63 63 75 72 73 2c 20 74 68 65 6e 20 74 68   occurs, then th
37d40 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 66  e return value f
37d50 72 6f 6d 20 74 68 65 73 65 0a 2a 2a 20 72 6f 75  rom these.** rou
37d60 74 69 6e 65 73 20 69 73 20 74 68 65 20 73 61 6d  tines is the sam
37d70 65 20 61 73 20 69 66 20 74 68 65 20 63 6f 6c 75  e as if the colu
37d80 6d 6e 20 68 61 64 20 63 6f 6e 74 61 69 6e 65 64  mn had contained
37d90 20 61 6e 20 53 51 4c 20 4e 55 4c 4c 20 76 61 6c   an SQL NULL val
37da0 75 65 2e 0a 2a 2a 20 56 61 6c 69 64 20 53 51 4c  ue..** Valid SQL
37db0 20 4e 55 4c 4c 20 72 65 74 75 72 6e 73 20 63 61   NULL returns ca
37dc0 6e 20 62 65 20 64 69 73 74 69 6e 67 75 69 73 68  n be distinguish
37dd0 65 64 20 66 72 6f 6d 20 6f 75 74 2d 6f 66 2d 6d  ed from out-of-m
37de0 65 6d 6f 72 79 20 65 72 72 6f 72 73 0a 2a 2a 20  emory errors.** 
37df0 62 79 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20  by invoking the 
37e00 5b 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65  [sqlite3_errcode
37e10 28 29 5d 20 69 6d 6d 65 64 69 61 74 65 6c 79 20  ()] immediately 
37e20 61 66 74 65 72 20 74 68 65 20 73 75 73 70 65 63  after the suspec
37e30 74 0a 2a 2a 20 72 65 74 75 72 6e 20 76 61 6c 75  t.** return valu
37e40 65 20 69 73 20 6f 62 74 61 69 6e 65 64 20 61 6e  e is obtained an
37e50 64 20 62 65 66 6f 72 65 20 61 6e 79 0a 2a 2a 20  d before any.** 
37e60 6f 74 68 65 72 20 53 51 4c 69 74 65 20 69 6e 74  other SQLite int
37e70 65 72 66 61 63 65 20 69 73 20 63 61 6c 6c 65 64  erface is called
37e80 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b 64 61   on the same [da
37e90 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
37ea0 6e 5d 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 76 6f 69  n]..*/.const voi
37eb0 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  d *sqlite3_colum
37ec0 6e 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f 73  n_blob(sqlite3_s
37ed0 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c 29 3b  tmt*, int iCol);
37ee0 0a 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f  .double sqlite3_
37ef0 63 6f 6c 75 6d 6e 5f 64 6f 75 62 6c 65 28 73 71  column_double(sq
37f00 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
37f10 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69   iCol);.int sqli
37f20 74 65 33 5f 63 6f 6c 75 6d 6e 5f 69 6e 74 28 73  te3_column_int(s
37f30 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
37f40 74 20 69 43 6f 6c 29 3b 0a 73 71 6c 69 74 65 33  t iCol);.sqlite3
37f50 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 63  _int64 sqlite3_c
37f60 6f 6c 75 6d 6e 5f 69 6e 74 36 34 28 73 71 6c 69  olumn_int64(sqli
37f70 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69  te3_stmt*, int i
37f80 43 6f 6c 29 3b 0a 63 6f 6e 73 74 20 75 6e 73 69  Col);.const unsi
37f90 67 6e 65 64 20 63 68 61 72 20 2a 73 71 6c 69 74  gned char *sqlit
37fa0 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 73  e3_column_text(s
37fb0 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
37fc0 74 20 69 43 6f 6c 29 3b 0a 63 6f 6e 73 74 20 76  t iCol);.const v
37fd0 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c  oid *sqlite3_col
37fe0 75 6d 6e 5f 74 65 78 74 31 36 28 73 71 6c 69 74  umn_text16(sqlit
37ff0 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43  e3_stmt*, int iC
38000 6f 6c 29 3b 0a 73 71 6c 69 74 65 33 5f 76 61 6c  ol);.sqlite3_val
38010 75 65 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ue *sqlite3_colu
38020 6d 6e 5f 76 61 6c 75 65 28 73 71 6c 69 74 65 33  mn_value(sqlite3
38030 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69 43 6f 6c  _stmt*, int iCol
38040 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  );.int sqlite3_c
38050 6f 6c 75 6d 6e 5f 62 79 74 65 73 28 73 71 6c 69  olumn_bytes(sqli
38060 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 69  te3_stmt*, int i
38070 43 6f 6c 29 3b 0a 69 6e 74 20 73 71 6c 69 74 65  Col);.int sqlite
38080 33 5f 63 6f 6c 75 6d 6e 5f 62 79 74 65 73 31 36  3_column_bytes16
38090 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
380a0 69 6e 74 20 69 43 6f 6c 29 3b 0a 69 6e 74 20 73  int iCol);.int s
380b0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79  qlite3_column_ty
380c0 70 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  pe(sqlite3_stmt*
380d0 2c 20 69 6e 74 20 69 43 6f 6c 29 3b 0a 0a 2f 2a  , int iCol);../*
380e0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65  .** CAPI3REF: De
380f0 73 74 72 6f 79 20 41 20 50 72 65 70 61 72 65 64  stroy A Prepared
38100 20 53 74 61 74 65 6d 65 6e 74 20 4f 62 6a 65 63   Statement Objec
38110 74 0a 2a 2a 20 44 45 53 54 52 55 43 54 4f 52 3a  t.** DESTRUCTOR:
38120 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a   sqlite3_stmt.**
38130 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
38140 5f 66 69 6e 61 6c 69 7a 65 28 29 20 66 75 6e 63  _finalize() func
38150 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 74  tion is called t
38160 6f 20 64 65 6c 65 74 65 20 61 20 5b 70 72 65 70  o delete a [prep
38170 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e  ared statement].
38180 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6d 6f 73 74  .** ^If the most
38190 20 72 65 63 65 6e 74 20 65 76 61 6c 75 61 74 69   recent evaluati
381a0 6f 6e 20 6f 66 20 74 68 65 20 73 74 61 74 65 6d  on of the statem
381b0 65 6e 74 20 65 6e 63 6f 75 6e 74 65 72 65 64 20  ent encountered 
381c0 6e 6f 20 65 72 72 6f 72 73 0a 2a 2a 20 6f 72 20  no errors.** or 
381d0 69 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  if the statement
381e0 20 69 73 20 6e 65 76 65 72 20 62 65 65 6e 20 65   is never been e
381f0 76 61 6c 75 61 74 65 64 2c 20 74 68 65 6e 20 73  valuated, then s
38200 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
38210 29 20 72 65 74 75 72 6e 73 0a 2a 2a 20 53 51 4c  ) returns.** SQL
38220 49 54 45 5f 4f 4b 2e 20 20 5e 49 66 20 74 68 65  ITE_OK.  ^If the
38230 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 65 76 61   most recent eva
38240 6c 75 61 74 69 6f 6e 20 6f 66 20 73 74 61 74 65  luation of state
38250 6d 65 6e 74 20 53 20 66 61 69 6c 65 64 2c 20 74  ment S failed, t
38260 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 66  hen.** sqlite3_f
38270 69 6e 61 6c 69 7a 65 28 53 29 20 72 65 74 75 72  inalize(S) retur
38280 6e 73 20 74 68 65 20 61 70 70 72 6f 70 72 69 61  ns the appropria
38290 74 65 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20  te [error code] 
382a0 6f 72 0a 2a 2a 20 5b 65 78 74 65 6e 64 65 64 20  or.** [extended 
382b0 65 72 72 6f 72 20 63 6f 64 65 5d 2e 0a 2a 2a 0a  error code]..**.
382c0 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
382d0 66 69 6e 61 6c 69 7a 65 28 53 29 20 72 6f 75 74  finalize(S) rout
382e0 69 6e 65 20 63 61 6e 20 62 65 20 63 61 6c 6c 65  ine can be calle
382f0 64 20 61 74 20 61 6e 79 20 70 6f 69 6e 74 20 64  d at any point d
38300 75 72 69 6e 67 0a 2a 2a 20 74 68 65 20 6c 69 66  uring.** the lif
38310 65 20 63 79 63 6c 65 20 6f 66 20 5b 70 72 65 70  e cycle of [prep
38320 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
38330 53 3a 0a 2a 2a 20 62 65 66 6f 72 65 20 73 74 61  S:.** before sta
38340 74 65 6d 65 6e 74 20 53 20 69 73 20 65 76 65 72  tement S is ever
38350 20 65 76 61 6c 75 61 74 65 64 2c 20 61 66 74 65   evaluated, afte
38360 72 0a 2a 2a 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  r.** one or more
38370 20 63 61 6c 6c 73 20 74 6f 20 5b 73 71 6c 69 74   calls to [sqlit
38380 65 33 5f 72 65 73 65 74 28 29 5d 2c 20 6f 72 20  e3_reset()], or 
38390 61 66 74 65 72 20 61 6e 79 20 63 61 6c 6c 0a 2a  after any call.*
383a0 2a 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 73 74  * to [sqlite3_st
383b0 65 70 28 29 5d 20 72 65 67 61 72 64 6c 65 73 73  ep()] regardless
383c0 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
383d0 6f 74 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  ot the statement
383e0 20 68 61 73 0a 2a 2a 20 63 6f 6d 70 6c 65 74 65   has.** complete
383f0 64 20 65 78 65 63 75 74 69 6f 6e 2e 0a 2a 2a 0a  d execution..**.
38400 2a 2a 20 5e 49 6e 76 6f 6b 69 6e 67 20 73 71 6c  ** ^Invoking sql
38410 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 20  ite3_finalize() 
38420 6f 6e 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  on a NULL pointe
38430 72 20 69 73 20 61 20 68 61 72 6d 6c 65 73 73 20  r is a harmless 
38440 6e 6f 2d 6f 70 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  no-op..**.** The
38450 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73   application mus
38460 74 20 66 69 6e 61 6c 69 7a 65 20 65 76 65 72 79  t finalize every
38470 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
38480 6d 65 6e 74 5d 20 69 6e 20 6f 72 64 65 72 20 74  ment] in order t
38490 6f 20 61 76 6f 69 64 0a 2a 2a 20 72 65 73 6f 75  o avoid.** resou
384a0 72 63 65 20 6c 65 61 6b 73 2e 20 20 49 74 20 69  rce leaks.  It i
384b0 73 20 61 20 67 72 69 65 76 6f 75 73 20 65 72 72  s a grievous err
384c0 6f 72 20 66 6f 72 20 74 68 65 20 61 70 70 6c 69  or for the appli
384d0 63 61 74 69 6f 6e 20 74 6f 20 74 72 79 20 74 6f  cation to try to
384e0 20 75 73 65 0a 2a 2a 20 61 20 70 72 65 70 61 72   use.** a prepar
384f0 65 64 20 73 74 61 74 65 6d 65 6e 74 20 61 66 74  ed statement aft
38500 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20 66  er it has been f
38510 69 6e 61 6c 69 7a 65 64 2e 20 20 41 6e 79 20 75  inalized.  Any u
38520 73 65 20 6f 66 20 61 20 70 72 65 70 61 72 65 64  se of a prepared
38530 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 61 66  .** statement af
38540 74 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20  ter it has been 
38550 66 69 6e 61 6c 69 7a 65 64 20 63 61 6e 20 72 65  finalized can re
38560 73 75 6c 74 20 69 6e 20 75 6e 64 65 66 69 6e 65  sult in undefine
38570 64 20 61 6e 64 0a 2a 2a 20 75 6e 64 65 73 69 72  d and.** undesir
38580 61 62 6c 65 20 62 65 68 61 76 69 6f 72 20 73 75  able behavior su
38590 63 68 20 61 73 20 73 65 67 66 61 75 6c 74 73 20  ch as segfaults 
385a0 61 6e 64 20 68 65 61 70 20 63 6f 72 72 75 70 74  and heap corrupt
385b0 69 6f 6e 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ion..*/.int sqli
385c0 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 73 71 6c  te3_finalize(sql
385d0 69 74 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74  ite3_stmt *pStmt
385e0 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
385f0 45 46 3a 20 52 65 73 65 74 20 41 20 50 72 65 70  EF: Reset A Prep
38600 61 72 65 64 20 53 74 61 74 65 6d 65 6e 74 20 4f  ared Statement O
38610 62 6a 65 63 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a  bject.** METHOD:
38620 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a   sqlite3_stmt.**
38630 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
38640 72 65 73 65 74 28 29 20 66 75 6e 63 74 69 6f 6e  reset() function
38650 20 69 73 20 63 61 6c 6c 65 64 20 74 6f 20 72 65   is called to re
38660 73 65 74 20 61 20 5b 70 72 65 70 61 72 65 64 20  set a [prepared 
38670 73 74 61 74 65 6d 65 6e 74 5d 0a 2a 2a 20 6f 62  statement].** ob
38680 6a 65 63 74 20 62 61 63 6b 20 74 6f 20 69 74 73  ject back to its
38690 20 69 6e 69 74 69 61 6c 20 73 74 61 74 65 2c 20   initial state, 
386a0 72 65 61 64 79 20 74 6f 20 62 65 20 72 65 2d 65  ready to be re-e
386b0 78 65 63 75 74 65 64 2e 0a 2a 2a 20 5e 41 6e 79  xecuted..** ^Any
386c0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 76   SQL statement v
386d0 61 72 69 61 62 6c 65 73 20 74 68 61 74 20 68 61  ariables that ha
386e0 64 20 76 61 6c 75 65 73 20 62 6f 75 6e 64 20 74  d values bound t
386f0 6f 20 74 68 65 6d 20 75 73 69 6e 67 0a 2a 2a 20  o them using.** 
38700 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e  the [sqlite3_bin
38710 64 5f 62 6c 6f 62 20 7c 20 73 71 6c 69 74 65 33  d_blob | sqlite3
38720 5f 62 69 6e 64 5f 2a 28 29 20 41 50 49 5d 20 72  _bind_*() API] r
38730 65 74 61 69 6e 20 74 68 65 69 72 20 76 61 6c 75  etain their valu
38740 65 73 2e 0a 2a 2a 20 55 73 65 20 5b 73 71 6c 69  es..** Use [sqli
38750 74 65 33 5f 63 6c 65 61 72 5f 62 69