System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact b7cee05db44573b8d9567b5aa0ce8e08ed3b5c6b:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a  ***************.
0050: 2a 2a 20 54 68 69 73 20 66 69 6c 65 20 69 73 20  ** This file is 
0060: 61 6e 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20  an amalgamation 
0070: 6f 66 20 6d 61 6e 79 20 73 65 70 61 72 61 74 65  of many separate
0080: 20 43 20 73 6f 75 72 63 65 20 66 69 6c 65 73 20   C source files 
0090: 66 72 6f 6d 20 53 51 4c 69 74 65 0a 2a 2a 20 76  from SQLite.** v
00a0: 65 72 73 69 6f 6e 20 33 2e 32 39 2e 30 2e 20 20  ersion 3.29.0.  
00b0: 42 79 20 63 6f 6d 62 69 6e 69 6e 67 20 61 6c 6c  By combining all
00c0: 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20   the individual 
00d0: 43 20 63 6f 64 65 20 66 69 6c 65 73 20 69 6e 74  C code files int
00e0: 6f 20 74 68 69 73 0a 2a 2a 20 73 69 6e 67 6c 65  o this.** single
00f0: 20 6c 61 72 67 65 20 66 69 6c 65 2c 20 74 68 65   large file, the
0100: 20 65 6e 74 69 72 65 20 63 6f 64 65 20 63 61 6e   entire code can
0110: 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 61 73 20   be compiled as 
0120: 61 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 6c 61  a single transla
0130: 74 69 6f 6e 0a 2a 2a 20 75 6e 69 74 2e 20 20 54  tion.** unit.  T
0140: 68 69 73 20 61 6c 6c 6f 77 73 20 6d 61 6e 79 20  his allows many 
0150: 63 6f 6d 70 69 6c 65 72 73 20 74 6f 20 64 6f 20  compilers to do 
0160: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68  optimizations th
0170: 61 74 20 77 6f 75 6c 64 20 6e 6f 74 20 62 65 0a  at would not be.
0180: 2a 2a 20 70 6f 73 73 69 62 6c 65 20 69 66 20 74  ** possible if t
0190: 68 65 20 66 69 6c 65 73 20 77 65 72 65 20 63 6f  he files were co
01a0: 6d 70 69 6c 65 64 20 73 65 70 61 72 61 74 65 6c  mpiled separatel
01b0: 79 2e 20 20 50 65 72 66 6f 72 6d 61 6e 63 65 20  y.  Performance 
01c0: 69 6d 70 72 6f 76 65 6d 65 6e 74 73 0a 2a 2a 20  improvements.** 
01d0: 6f 66 20 35 25 20 6f 72 20 6d 6f 72 65 20 61 72  of 5% or more ar
01e0: 65 20 63 6f 6d 6d 6f 6e 6c 79 20 73 65 65 6e 20  e commonly seen 
01f0: 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 63  when SQLite is c
0200: 6f 6d 70 69 6c 65 64 20 61 73 20 61 20 73 69 6e  ompiled as a sin
0210: 67 6c 65 0a 2a 2a 20 74 72 61 6e 73 6c 61 74 69  gle.** translati
0220: 6f 6e 20 75 6e 69 74 2e 0a 2a 2a 0a 2a 2a 20 54  on unit..**.** T
0230: 68 69 73 20 66 69 6c 65 20 69 73 20 61 6c 6c 20  his file is all 
0240: 79 6f 75 20 6e 65 65 64 20 74 6f 20 63 6f 6d 70  you need to comp
0250: 69 6c 65 20 53 51 4c 69 74 65 2e 20 20 54 6f 20  ile SQLite.  To 
0260: 75 73 65 20 53 51 4c 69 74 65 20 69 6e 20 6f 74  use SQLite in ot
0270: 68 65 72 0a 2a 2a 20 70 72 6f 67 72 61 6d 73 2c  her.** programs,
0280: 20 79 6f 75 20 6e 65 65 64 20 74 68 69 73 20 66   you need this f
0290: 69 6c 65 20 61 6e 64 20 74 68 65 20 22 73 71 6c  ile and the "sql
02a0: 69 74 65 33 2e 68 22 20 68 65 61 64 65 72 20 66  ite3.h" header f
02b0: 69 6c 65 20 74 68 61 74 20 64 65 66 69 6e 65 73  ile that defines
02c0: 0a 2a 2a 20 74 68 65 20 70 72 6f 67 72 61 6d 6d  .** the programm
02d0: 69 6e 67 20 69 6e 74 65 72 66 61 63 65 20 74 6f  ing interface to
02e0: 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
02f0: 61 72 79 2e 20 20 28 49 66 20 79 6f 75 20 64 6f  ary.  (If you do
0300: 20 6e 6f 74 20 68 61 76 65 0a 2a 2a 20 74 68 65   not have.** the
0310: 20 22 73 71 6c 69 74 65 33 2e 68 22 20 68 65 61   "sqlite3.h" hea
0320: 64 65 72 20 66 69 6c 65 20 61 74 20 68 61 6e 64  der file at hand
0330: 2c 20 79 6f 75 20 77 69 6c 6c 20 66 69 6e 64 20  , you will find 
0340: 61 20 63 6f 70 79 20 65 6d 62 65 64 64 65 64 20  a copy embedded 
0350: 77 69 74 68 69 6e 0a 2a 2a 20 74 68 65 20 74 65  within.** the te
0360: 78 74 20 6f 66 20 74 68 69 73 20 66 69 6c 65 2e  xt of this file.
0370: 20 20 53 65 61 72 63 68 20 66 6f 72 20 22 42 65    Search for "Be
0380: 67 69 6e 20 66 69 6c 65 20 73 71 6c 69 74 65 33  gin file sqlite3
0390: 2e 68 22 20 74 6f 20 66 69 6e 64 20 74 68 65 20  .h" to find the 
03a0: 73 74 61 72 74 0a 2a 2a 20 6f 66 20 74 68 65 20  start.** of the 
03b0: 65 6d 62 65 64 64 65 64 20 73 71 6c 69 74 65 33  embedded sqlite3
03c0: 2e 68 20 68 65 61 64 65 72 20 66 69 6c 65 2e 29  .h header file.)
03d0: 20 41 64 64 69 74 69 6f 6e 61 6c 20 63 6f 64 65   Additional code
03e0: 20 66 69 6c 65 73 20 6d 61 79 20 62 65 20 6e 65   files may be ne
03f0: 65 64 65 64 0a 2a 2a 20 69 66 20 79 6f 75 20 77  eded.** if you w
0400: 61 6e 74 20 61 20 77 72 61 70 70 65 72 20 74 6f  ant a wrapper to
0410: 20 69 6e 74 65 72 66 61 63 65 20 53 51 4c 69 74   interface SQLit
0420: 65 20 77 69 74 68 20 79 6f 75 72 20 63 68 6f 69  e with your choi
0430: 63 65 20 6f 66 20 70 72 6f 67 72 61 6d 6d 69 6e  ce of programmin
0440: 67 0a 2a 2a 20 6c 61 6e 67 75 61 67 65 2e 20 54  g.** language. T
0450: 68 65 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20  he code for the 
0460: 22 73 71 6c 69 74 65 33 22 20 63 6f 6d 6d 61 6e  "sqlite3" comman
0470: 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 20 69 73 20  d-line shell is 
0480: 61 6c 73 6f 20 69 6e 20 61 0a 2a 2a 20 73 65 70  also in a.** sep
0490: 61 72 61 74 65 20 66 69 6c 65 2e 20 54 68 69 73  arate file. This
04a0: 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 6f   file contains o
04b0: 6e 6c 79 20 63 6f 64 65 20 66 6f 72 20 74 68 65  nly code for the
04c0: 20 63 6f 72 65 20 53 51 4c 69 74 65 20 6c 69 62   core SQLite lib
04d0: 72 61 72 79 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65  rary..*/.#define
04e0: 20 53 51 4c 49 54 45 5f 43 4f 52 45 20 31 0a 23   SQLITE_CORE 1.#
04f0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 4d  define SQLITE_AM
0500: 41 4c 47 41 4d 41 54 49 4f 4e 20 31 0a 23 69 66  ALGAMATION 1.#if
0510: 6e 64 65 66 20 53 51 4c 49 54 45 5f 50 52 49 56  ndef SQLITE_PRIV
0520: 41 54 45 0a 23 20 64 65 66 69 6e 65 20 53 51 4c  ATE.# define SQL
0530: 49 54 45 5f 50 52 49 56 41 54 45 20 73 74 61 74  ITE_PRIVATE stat
0540: 69 63 0a 23 65 6e 64 69 66 0a 2f 2a 2a 2a 2a 2a  ic.#endif./*****
0550: 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20  ********* Begin 
0560: 66 69 6c 65 20 63 74 69 6d 65 2e 63 20 2a 2a 2a  file ctime.c ***
0570: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0580: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0590: 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20  ********/./*.** 
05a0: 32 30 31 30 20 46 65 62 72 75 61 72 79 20 32 33  2010 February 23
05b0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f  .**.** The autho
05c0: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
05d0: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
05e0: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
05f0: 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67  lace of.** a leg
0600: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0610: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a  is a blessing:.*
0620: 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20  *.**    May you 
0630: 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20  do good and not 
0640: 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  evil..**    May 
0650: 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65  you find forgive
0660: 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c  ness for yoursel
0670: 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74  f and forgive ot
0680: 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  hers..**    May 
0690: 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c 79  you share freely
06a0: 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d  , never taking m
06b0: 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76  ore than you giv
06c0: 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  e..**.**********
06d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
06e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
06f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0700: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a  ***************.
0710: 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 69 6c 65 20  **.** This file 
0720: 69 6d 70 6c 65 6d 65 6e 74 73 20 72 6f 75 74 69  implements routi
0730: 6e 65 73 20 75 73 65 64 20 74 6f 20 72 65 70 6f  nes used to repo
0740: 72 74 20 77 68 61 74 20 63 6f 6d 70 69 6c 65 2d  rt what compile-
0750: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 0a 2a 2a 20  time options.** 
0760: 53 51 4c 69 74 65 20 77 61 73 20 62 75 69 6c 74  SQLite was built
0770: 20 77 69 74 68 2e 0a 2a 2f 0a 0a 23 69 66 6e 64   with..*/..#ifnd
0780: 65 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  ef SQLITE_OMIT_C
0790: 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41  OMPILEOPTION_DIA
07a0: 47 53 20 2f 2a 20 49 4d 50 3a 20 52 2d 31 36 38  GS /* IMP: R-168
07b0: 32 34 2d 30 37 35 33 38 20 2a 2f 0a 0a 2f 2a 0a  24-07538 */../*.
07c0: 2a 2a 20 49 6e 63 6c 75 64 65 20 74 68 65 20 63  ** Include the c
07d0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 68 65 61  onfiguration hea
07e0: 64 65 72 20 6f 75 74 70 75 74 20 62 79 20 27 63  der output by 'c
07f0: 6f 6e 66 69 67 75 72 65 27 20 69 66 20 77 65 27  onfigure' if we'
0800: 72 65 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20  re using the.** 
0810: 61 75 74 6f 63 6f 6e 66 2d 62 61 73 65 64 20 62  autoconf-based b
0820: 75 69 6c 64 0a 2a 2f 0a 23 69 66 20 64 65 66 69  uild.*/.#if defi
0830: 6e 65 64 28 5f 48 41 56 45 5f 53 51 4c 49 54 45  ned(_HAVE_SQLITE
0840: 5f 43 4f 4e 46 49 47 5f 48 29 20 26 26 20 21 64  _CONFIG_H) && !d
0850: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 43 4f 4e  efined(SQLITECON
0860: 46 49 47 5f 48 29 0a 23 69 6e 63 6c 75 64 65 20  FIG_H).#include 
0870: 22 63 6f 6e 66 69 67 2e 68 22 0a 23 64 65 66 69  "config.h".#defi
0880: 6e 65 20 53 51 4c 49 54 45 43 4f 4e 46 49 47 5f  ne SQLITECONFIG_
0890: 48 20 31 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 54  H 1.#endif../* T
08a0: 68 65 73 65 20 6d 61 63 72 6f 73 20 61 72 65 20  hese macros are 
08b0: 70 72 6f 76 69 64 65 64 20 74 6f 20 22 73 74 72  provided to "str
08c0: 69 6e 67 69 66 79 22 20 74 68 65 20 76 61 6c 75  ingify" the valu
08d0: 65 20 6f 66 20 74 68 65 20 64 65 66 69 6e 65 0a  e of the define.
08e0: 2a 2a 20 66 6f 72 20 74 68 6f 73 65 20 6f 70 74  ** for those opt
08f0: 69 6f 6e 73 20 69 6e 20 77 68 69 63 68 20 74 68  ions in which th
0900: 65 20 76 61 6c 75 65 20 69 73 20 6d 65 61 6e 69  e value is meani
0910: 6e 67 66 75 6c 2e 20 2a 2f 0a 23 64 65 66 69 6e  ngful. */.#defin
0920: 65 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 5f 28  e CTIMEOPT_VAL_(
0930: 6f 70 74 29 20 23 6f 70 74 0a 23 64 65 66 69 6e  opt) #opt.#defin
0940: 65 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 6f  e CTIMEOPT_VAL(o
0950: 70 74 29 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  pt) CTIMEOPT_VAL
0960: 5f 28 6f 70 74 29 0a 0a 2f 2a 20 4c 69 6b 65 20  _(opt)../* Like 
0970: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 2c 20 62 75  CTIMEOPT_VAL, bu
0980: 74 20 65 73 70 65 63 69 61 6c 6c 79 20 66 6f 72  t especially for
0990: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
09a0: 4c 4f 4f 4b 41 53 49 44 45 2e 20 54 68 69 73 0a  LOOKASIDE. This.
09b0: 2a 2a 20 6f 70 74 69 6f 6e 20 72 65 71 75 69 72  ** option requir
09c0: 65 73 20 61 20 73 65 70 61 72 61 74 65 20 6d 61  es a separate ma
09d0: 63 72 6f 20 62 65 63 61 75 73 65 20 6c 65 67 61  cro because lega
09e0: 6c 20 76 61 6c 75 65 73 20 63 6f 6e 74 61 69 6e  l values contain
09f0: 20 61 20 73 69 6e 67 6c 65 0a 2a 2a 20 63 6f 6d   a single.** com
0a00: 6d 61 2e 20 65 2e 67 2e 20 28 2d 44 53 51 4c 49  ma. e.g. (-DSQLI
0a10: 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b 41  TE_DEFAULT_LOOKA
0a20: 53 49 44 45 3d 22 31 30 30 2c 31 30 30 22 29 20  SIDE="100,100") 
0a30: 2a 2f 0a 23 64 65 66 69 6e 65 20 43 54 49 4d 45  */.#define CTIME
0a40: 4f 50 54 5f 56 41 4c 32 5f 28 6f 70 74 31 2c 6f  OPT_VAL2_(opt1,o
0a50: 70 74 32 29 20 23 6f 70 74 31 20 22 2c 22 20 23  pt2) #opt1 "," #
0a60: 6f 70 74 32 0a 23 64 65 66 69 6e 65 20 43 54 49  opt2.#define CTI
0a70: 4d 45 4f 50 54 5f 56 41 4c 32 28 6f 70 74 29 20  MEOPT_VAL2(opt) 
0a80: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 32 5f 28 6f  CTIMEOPT_VAL2_(o
0a90: 70 74 29 0a 0a 2f 2a 0a 2a 2a 20 41 6e 20 61 72  pt)../*.** An ar
0aa0: 72 61 79 20 6f 66 20 6e 61 6d 65 73 20 6f 66 20  ray of names of 
0ab0: 61 6c 6c 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  all compile-time
0ac0: 20 6f 70 74 69 6f 6e 73 2e 20 20 54 68 69 73 20   options.  This 
0ad0: 61 72 72 61 79 20 73 68 6f 75 6c 64 20 0a 2a 2a  array should .**
0ae0: 20 62 65 20 73 6f 72 74 65 64 20 41 2d 5a 2e 0a   be sorted A-Z..
0af0: 2a 2a 0a 2a 2a 20 54 68 69 73 20 61 72 72 61 79  **.** This array
0b00: 20 6c 6f 6f 6b 73 20 6c 61 72 67 65 2c 20 62 75   looks large, bu
0b10: 74 20 69 6e 20 61 20 74 79 70 69 63 61 6c 20 69  t in a typical i
0b20: 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 61 63 74 75  nstallation actu
0b30: 61 6c 6c 79 20 75 73 65 73 0a 2a 2a 20 6f 6e 6c  ally uses.** onl
0b40: 79 20 61 20 68 61 6e 64 66 75 6c 20 6f 66 20 63  y a handful of c
0b50: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
0b60: 6f 6e 73 2c 20 73 6f 20 6d 6f 73 74 20 74 69 6d  ons, so most tim
0b70: 65 73 20 74 68 69 73 20 61 72 72 61 79 20 69 73  es this array is
0b80: 20 75 73 75 61 6c 6c 79 0a 2a 2a 20 72 61 74 68   usually.** rath
0b90: 65 72 20 73 68 6f 72 74 20 61 6e 64 20 75 73 65  er short and use
0ba0: 73 20 6c 69 74 74 6c 65 20 6d 65 6d 6f 72 79 20  s little memory 
0bb0: 73 70 61 63 65 2e 0a 2a 2f 0a 73 74 61 74 69 63  space..*/.static
0bc0: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 20 63 6f   const char * co
0bd0: 6e 73 74 20 73 71 6c 69 74 65 33 61 7a 43 6f 6d  nst sqlite3azCom
0be0: 70 69 6c 65 4f 70 74 5b 5d 20 3d 20 7b 0a 0a 2f  pileOpt[] = {../
0bf0: 2a 20 0a 2a 2a 20 42 45 47 49 4e 20 43 4f 44 45  * .** BEGIN CODE
0c00: 20 47 45 4e 45 52 41 54 45 44 20 42 59 20 74 6f   GENERATED BY to
0c10: 6f 6c 2f 6d 6b 63 74 69 6d 65 2e 74 63 6c 20 0a  ol/mkctime.tcl .
0c20: 2a 2f 0a 23 69 66 20 53 51 4c 49 54 45 5f 33 32  */.#if SQLITE_32
0c30: 42 49 54 5f 52 4f 57 49 44 0a 20 20 22 33 32 42  BIT_ROWID.  "32B
0c40: 49 54 5f 52 4f 57 49 44 22 2c 0a 23 65 6e 64 69  IT_ROWID",.#endi
0c50: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 34 5f 42  f.#if SQLITE_4_B
0c60: 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c  YTE_ALIGNED_MALL
0c70: 4f 43 0a 20 20 22 34 5f 42 59 54 45 5f 41 4c 49  OC.  "4_BYTE_ALI
0c80: 47 4e 45 44 5f 4d 41 4c 4c 4f 43 22 2c 0a 23 65  GNED_MALLOC",.#e
0c90: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
0ca0: 36 34 42 49 54 5f 53 54 41 54 53 0a 20 20 22 36  64BIT_STATS.  "6
0cb0: 34 42 49 54 5f 53 54 41 54 53 22 2c 0a 23 65 6e  4BIT_STATS",.#en
0cc0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 41  dif.#if SQLITE_A
0cd0: 4c 4c 4f 57 5f 43 4f 56 45 52 49 4e 47 5f 49 4e  LLOW_COVERING_IN
0ce0: 44 45 58 5f 53 43 41 4e 0a 20 20 22 41 4c 4c 4f  DEX_SCAN.  "ALLO
0cf0: 57 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58  W_COVERING_INDEX
0d00: 5f 53 43 41 4e 22 2c 0a 23 65 6e 64 69 66 0a 23  _SCAN",.#endif.#
0d10: 69 66 20 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f  if SQLITE_ALLOW_
0d20: 55 52 49 5f 41 55 54 48 4f 52 49 54 59 0a 20 20  URI_AUTHORITY.  
0d30: 22 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f  "ALLOW_URI_AUTHO
0d40: 52 49 54 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RITY",.#endif.#i
0d50: 66 64 65 66 20 53 51 4c 49 54 45 5f 42 49 54 4d  fdef SQLITE_BITM
0d60: 41 53 4b 5f 54 59 50 45 0a 20 20 22 42 49 54 4d  ASK_TYPE.  "BITM
0d70: 41 53 4b 5f 54 59 50 45 3d 22 20 43 54 49 4d 45  ASK_TYPE=" CTIME
0d80: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 42  OPT_VAL(SQLITE_B
0d90: 49 54 4d 41 53 4b 5f 54 59 50 45 29 2c 0a 23 65  ITMASK_TYPE),.#e
0da0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
0db0: 42 55 47 5f 43 4f 4d 50 41 54 49 42 4c 45 5f 32  BUG_COMPATIBLE_2
0dc0: 30 31 36 30 38 31 39 0a 20 20 22 42 55 47 5f 43  0160819.  "BUG_C
0dd0: 4f 4d 50 41 54 49 42 4c 45 5f 32 30 31 36 30 38  OMPATIBLE_201608
0de0: 31 39 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  19",.#endif.#if 
0df0: 53 51 4c 49 54 45 5f 43 41 53 45 5f 53 45 4e 53  SQLITE_CASE_SENS
0e00: 49 54 49 56 45 5f 4c 49 4b 45 0a 20 20 22 43 41  ITIVE_LIKE.  "CA
0e10: 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 4c 49 4b  SE_SENSITIVE_LIK
0e20: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  E",.#endif.#if S
0e30: 51 4c 49 54 45 5f 43 48 45 43 4b 5f 50 41 47 45  QLITE_CHECK_PAGE
0e40: 53 0a 20 20 22 43 48 45 43 4b 5f 50 41 47 45 53  S.  "CHECK_PAGES
0e50: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  ",.#endif.#if de
0e60: 66 69 6e 65 64 28 5f 5f 63 6c 61 6e 67 5f 5f 29  fined(__clang__)
0e70: 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 63 6c   && defined(__cl
0e80: 61 6e 67 5f 6d 61 6a 6f 72 5f 5f 29 0a 20 20 22  ang_major__).  "
0e90: 43 4f 4d 50 49 4c 45 52 3d 63 6c 61 6e 67 2d 22  COMPILER=clang-"
0ea0: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 5f 5f   CTIMEOPT_VAL(__
0eb0: 63 6c 61 6e 67 5f 6d 61 6a 6f 72 5f 5f 29 20 22  clang_major__) "
0ec0: 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  .".             
0ed0: 20 20 20 20 20 20 20 43 54 49 4d 45 4f 50 54 5f         CTIMEOPT_
0ee0: 56 41 4c 28 5f 5f 63 6c 61 6e 67 5f 6d 69 6e 6f  VAL(__clang_mino
0ef0: 72 5f 5f 29 20 22 2e 22 0a 20 20 20 20 20 20 20  r__) ".".       
0f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 54 49               CTI
0f10: 4d 45 4f 50 54 5f 56 41 4c 28 5f 5f 63 6c 61 6e  MEOPT_VAL(__clan
0f20: 67 5f 70 61 74 63 68 6c 65 76 65 6c 5f 5f 29 2c  g_patchlevel__),
0f30: 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28 5f  .#elif defined(_
0f40: 4d 53 43 5f 56 45 52 29 0a 20 20 22 43 4f 4d 50  MSC_VER).  "COMP
0f50: 49 4c 45 52 3d 6d 73 76 63 2d 22 20 43 54 49 4d  ILER=msvc-" CTIM
0f60: 45 4f 50 54 5f 56 41 4c 28 5f 4d 53 43 5f 56 45  EOPT_VAL(_MSC_VE
0f70: 52 29 2c 0a 23 65 6c 69 66 20 64 65 66 69 6e 65  R),.#elif define
0f80: 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20 64  d(__GNUC__) && d
0f90: 65 66 69 6e 65 64 28 5f 5f 56 45 52 53 49 4f 4e  efined(__VERSION
0fa0: 5f 5f 29 0a 20 20 22 43 4f 4d 50 49 4c 45 52 3d  __).  "COMPILER=
0fb0: 67 63 63 2d 22 20 5f 5f 56 45 52 53 49 4f 4e 5f  gcc-" __VERSION_
0fc0: 5f 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  _,.#endif.#if SQ
0fd0: 4c 49 54 45 5f 43 4f 56 45 52 41 47 45 5f 54 45  LITE_COVERAGE_TE
0fe0: 53 54 0a 20 20 22 43 4f 56 45 52 41 47 45 5f 54  ST.  "COVERAGE_T
0ff0: 45 53 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  EST",.#endif.#if
1000: 20 53 51 4c 49 54 45 5f 44 45 42 55 47 0a 20 20   SQLITE_DEBUG.  
1010: 22 44 45 42 55 47 22 2c 0a 23 65 6e 64 69 66 0a  "DEBUG",.#endif.
1020: 23 69 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55  #if SQLITE_DEFAU
1030: 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44  LT_AUTOMATIC_IND
1040: 45 58 0a 20 20 22 44 45 46 41 55 4c 54 5f 41 55  EX.  "DEFAULT_AU
1050: 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 22 2c 0a  TOMATIC_INDEX",.
1060: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1070: 45 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 56 41  E_DEFAULT_AUTOVA
1080: 43 55 55 4d 0a 20 20 22 44 45 46 41 55 4c 54 5f  CUUM.  "DEFAULT_
1090: 41 55 54 4f 56 41 43 55 55 4d 22 2c 0a 23 65 6e  AUTOVACUUM",.#en
10a0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
10b0: 45 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f  E_DEFAULT_CACHE_
10c0: 53 49 5a 45 0a 20 20 22 44 45 46 41 55 4c 54 5f  SIZE.  "DEFAULT_
10d0: 43 41 43 48 45 5f 53 49 5a 45 3d 22 20 43 54 49  CACHE_SIZE=" CTI
10e0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
10f0: 5f 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53  _DEFAULT_CACHE_S
1100: 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  IZE),.#endif.#if
1110: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
1120: 43 4b 50 54 46 55 4c 4c 46 53 59 4e 43 0a 20 20  CKPTFULLFSYNC.  
1130: 22 44 45 46 41 55 4c 54 5f 43 4b 50 54 46 55 4c  "DEFAULT_CKPTFUL
1140: 4c 46 53 59 4e 43 22 2c 0a 23 65 6e 64 69 66 0a  LFSYNC",.#endif.
1150: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45  #ifdef SQLITE_DE
1160: 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41  FAULT_FILE_FORMA
1170: 54 0a 20 20 22 44 45 46 41 55 4c 54 5f 46 49 4c  T.  "DEFAULT_FIL
1180: 45 5f 46 4f 52 4d 41 54 3d 22 20 43 54 49 4d 45  E_FORMAT=" CTIME
1190: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44  OPT_VAL(SQLITE_D
11a0: 45 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d  EFAULT_FILE_FORM
11b0: 41 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  AT),.#endif.#ifd
11c0: 65 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  ef SQLITE_DEFAUL
11d0: 54 5f 46 49 4c 45 5f 50 45 52 4d 49 53 53 49 4f  T_FILE_PERMISSIO
11e0: 4e 53 0a 20 20 22 44 45 46 41 55 4c 54 5f 46 49  NS.  "DEFAULT_FI
11f0: 4c 45 5f 50 45 52 4d 49 53 53 49 4f 4e 53 3d 22  LE_PERMISSIONS="
1200: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
1210: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c  LITE_DEFAULT_FIL
1220: 45 5f 50 45 52 4d 49 53 53 49 4f 4e 53 29 2c 0a  E_PERMISSIONS),.
1230: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1240: 45 5f 44 45 46 41 55 4c 54 5f 46 4f 52 45 49 47  E_DEFAULT_FOREIG
1250: 4e 5f 4b 45 59 53 0a 20 20 22 44 45 46 41 55 4c  N_KEYS.  "DEFAUL
1260: 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 53 22 2c  T_FOREIGN_KEYS",
1270: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
1280: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4a 4f  QLITE_DEFAULT_JO
1290: 55 52 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54  URNAL_SIZE_LIMIT
12a0: 0a 20 20 22 44 45 46 41 55 4c 54 5f 4a 4f 55 52  .  "DEFAULT_JOUR
12b0: 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 3d 22  NAL_SIZE_LIMIT="
12c0: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
12d0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4a 4f 55  LITE_DEFAULT_JOU
12e0: 52 4e 41 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 29  RNAL_SIZE_LIMIT)
12f0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
1300: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c  SQLITE_DEFAULT_L
1310: 4f 43 4b 49 4e 47 5f 4d 4f 44 45 0a 20 20 22 44  OCKING_MODE.  "D
1320: 45 46 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47 5f 4d  EFAULT_LOCKING_M
1330: 4f 44 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  ODE=" CTIMEOPT_V
1340: 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  AL(SQLITE_DEFAUL
1350: 54 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f 44 45 29 2c  T_LOCKING_MODE),
1360: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
1370: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f  QLITE_DEFAULT_LO
1380: 4f 4b 41 53 49 44 45 0a 20 20 22 44 45 46 41 55  OKASIDE.  "DEFAU
1390: 4c 54 5f 4c 4f 4f 4b 41 53 49 44 45 3d 22 20 43  LT_LOOKASIDE=" C
13a0: 54 49 4d 45 4f 50 54 5f 56 41 4c 32 28 53 51 4c  TIMEOPT_VAL2(SQL
13b0: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b  ITE_DEFAULT_LOOK
13c0: 41 53 49 44 45 29 2c 0a 23 65 6e 64 69 66 0a 23  ASIDE),.#endif.#
13d0: 69 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  if SQLITE_DEFAUL
13e0: 54 5f 4d 45 4d 53 54 41 54 55 53 0a 20 20 22 44  T_MEMSTATUS.  "D
13f0: 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53  EFAULT_MEMSTATUS
1400: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ",.#endif.#ifdef
1410: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
1420: 4d 4d 41 50 5f 53 49 5a 45 0a 20 20 22 44 45 46  MMAP_SIZE.  "DEF
1430: 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 3d 22  AULT_MMAP_SIZE="
1440: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
1450: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 4d 41  LITE_DEFAULT_MMA
1460: 50 5f 53 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a  P_SIZE),.#endif.
1470: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45  #ifdef SQLITE_DE
1480: 46 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 0a  FAULT_PAGE_SIZE.
1490: 20 20 22 44 45 46 41 55 4c 54 5f 50 41 47 45 5f    "DEFAULT_PAGE_
14a0: 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f  SIZE=" CTIMEOPT_
14b0: 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55  VAL(SQLITE_DEFAU
14c0: 4c 54 5f 50 41 47 45 5f 53 49 5a 45 29 2c 0a 23  LT_PAGE_SIZE),.#
14d0: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
14e0: 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 43 41 43  ITE_DEFAULT_PCAC
14f0: 48 45 5f 49 4e 49 54 53 5a 0a 20 20 22 44 45 46  HE_INITSZ.  "DEF
1500: 41 55 4c 54 5f 50 43 41 43 48 45 5f 49 4e 49 54  AULT_PCACHE_INIT
1510: 53 5a 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  SZ=" CTIMEOPT_VA
1520: 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  L(SQLITE_DEFAULT
1530: 5f 50 43 41 43 48 45 5f 49 4e 49 54 53 5a 29 2c  _PCACHE_INITSZ),
1540: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
1550: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 52  QLITE_DEFAULT_PR
1560: 4f 58 59 44 49 52 5f 50 45 52 4d 49 53 53 49 4f  OXYDIR_PERMISSIO
1570: 4e 53 0a 20 20 22 44 45 46 41 55 4c 54 5f 50 52  NS.  "DEFAULT_PR
1580: 4f 58 59 44 49 52 5f 50 45 52 4d 49 53 53 49 4f  OXYDIR_PERMISSIO
1590: 4e 53 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  NS=" CTIMEOPT_VA
15a0: 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  L(SQLITE_DEFAULT
15b0: 5f 50 52 4f 58 59 44 49 52 5f 50 45 52 4d 49 53  _PROXYDIR_PERMIS
15c0: 53 49 4f 4e 53 29 2c 0a 23 65 6e 64 69 66 0a 23  SIONS),.#endif.#
15d0: 69 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  if SQLITE_DEFAUL
15e0: 54 5f 52 45 43 55 52 53 49 56 45 5f 54 52 49 47  T_RECURSIVE_TRIG
15f0: 47 45 52 53 0a 20 20 22 44 45 46 41 55 4c 54 5f  GERS.  "DEFAULT_
1600: 52 45 43 55 52 53 49 56 45 5f 54 52 49 47 47 45  RECURSIVE_TRIGGE
1610: 52 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  RS",.#endif.#ifd
1620: 65 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  ef SQLITE_DEFAUL
1630: 54 5f 52 4f 57 45 53 54 0a 20 20 22 44 45 46 41  T_ROWEST.  "DEFA
1640: 55 4c 54 5f 52 4f 57 45 53 54 3d 22 20 43 54 49  ULT_ROWEST=" CTI
1650: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
1660: 5f 44 45 46 41 55 4c 54 5f 52 4f 57 45 53 54 29  _DEFAULT_ROWEST)
1670: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
1680: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 53  SQLITE_DEFAULT_S
1690: 45 43 54 4f 52 5f 53 49 5a 45 0a 20 20 22 44 45  ECTOR_SIZE.  "DE
16a0: 46 41 55 4c 54 5f 53 45 43 54 4f 52 5f 53 49 5a  FAULT_SECTOR_SIZ
16b0: 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  E=" CTIMEOPT_VAL
16c0: 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  (SQLITE_DEFAULT_
16d0: 53 45 43 54 4f 52 5f 53 49 5a 45 29 2c 0a 23 65  SECTOR_SIZE),.#e
16e0: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
16f0: 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43 48  TE_DEFAULT_SYNCH
1700: 52 4f 4e 4f 55 53 0a 20 20 22 44 45 46 41 55 4c  RONOUS.  "DEFAUL
1710: 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 22 20  T_SYNCHRONOUS=" 
1720: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
1730: 49 54 45 5f 44 45 46 41 55 4c 54 5f 53 59 4e 43  ITE_DEFAULT_SYNC
1740: 48 52 4f 4e 4f 55 53 29 2c 0a 23 65 6e 64 69 66  HRONOUS),.#endif
1750: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44  .#ifdef SQLITE_D
1760: 45 46 41 55 4c 54 5f 57 41 4c 5f 41 55 54 4f 43  EFAULT_WAL_AUTOC
1770: 48 45 43 4b 50 4f 49 4e 54 0a 20 20 22 44 45 46  HECKPOINT.  "DEF
1780: 41 55 4c 54 5f 57 41 4c 5f 41 55 54 4f 43 48 45  AULT_WAL_AUTOCHE
1790: 43 4b 50 4f 49 4e 54 3d 22 20 43 54 49 4d 45 4f  CKPOINT=" CTIMEO
17a0: 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45  PT_VAL(SQLITE_DE
17b0: 46 41 55 4c 54 5f 57 41 4c 5f 41 55 54 4f 43 48  FAULT_WAL_AUTOCH
17c0: 45 43 4b 50 4f 49 4e 54 29 2c 0a 23 65 6e 64 69  ECKPOINT),.#endi
17d0: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
17e0: 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53 59 4e 43  DEFAULT_WAL_SYNC
17f0: 48 52 4f 4e 4f 55 53 0a 20 20 22 44 45 46 41 55  HRONOUS.  "DEFAU
1800: 4c 54 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f  LT_WAL_SYNCHRONO
1810: 55 53 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  US=" CTIMEOPT_VA
1820: 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  L(SQLITE_DEFAULT
1830: 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  _WAL_SYNCHRONOUS
1840: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
1850: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
1860: 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 0a 20  WORKER_THREADS. 
1870: 20 22 44 45 46 41 55 4c 54 5f 57 4f 52 4b 45 52   "DEFAULT_WORKER
1880: 5f 54 48 52 45 41 44 53 3d 22 20 43 54 49 4d 45  _THREADS=" CTIME
1890: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44  OPT_VAL(SQLITE_D
18a0: 45 46 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48  EFAULT_WORKER_TH
18b0: 52 45 41 44 53 29 2c 0a 23 65 6e 64 69 66 0a 23  READS),.#endif.#
18c0: 69 66 20 53 51 4c 49 54 45 5f 44 49 52 45 43 54  if SQLITE_DIRECT
18d0: 5f 4f 56 45 52 46 4c 4f 57 5f 52 45 41 44 0a 20  _OVERFLOW_READ. 
18e0: 20 22 44 49 52 45 43 54 5f 4f 56 45 52 46 4c 4f   "DIRECT_OVERFLO
18f0: 57 5f 52 45 41 44 22 2c 0a 23 65 6e 64 69 66 0a  W_READ",.#endif.
1900: 23 69 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42  #if SQLITE_DISAB
1910: 4c 45 5f 44 49 52 53 59 4e 43 0a 20 20 22 44 49  LE_DIRSYNC.  "DI
1920: 53 41 42 4c 45 5f 44 49 52 53 59 4e 43 22 2c 0a  SABLE_DIRSYNC",.
1930: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1940: 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 33 5f 55  E_DISABLE_FTS3_U
1950: 4e 49 43 4f 44 45 0a 20 20 22 44 49 53 41 42 4c  NICODE.  "DISABL
1960: 45 5f 46 54 53 33 5f 55 4e 49 43 4f 44 45 22 2c  E_FTS3_UNICODE",
1970: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1980: 54 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 34 5f  TE_DISABLE_FTS4_
1990: 44 45 46 45 52 52 45 44 0a 20 20 22 44 49 53 41  DEFERRED.  "DISA
19a0: 42 4c 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45  BLE_FTS4_DEFERRE
19b0: 44 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  D",.#endif.#if S
19c0: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 49 4e  QLITE_DISABLE_IN
19d0: 54 52 49 4e 53 49 43 0a 20 20 22 44 49 53 41 42  TRINSIC.  "DISAB
19e0: 4c 45 5f 49 4e 54 52 49 4e 53 49 43 22 2c 0a 23  LE_INTRINSIC",.#
19f0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
1a00: 5f 44 49 53 41 42 4c 45 5f 4c 46 53 0a 20 20 22  _DISABLE_LFS.  "
1a10: 44 49 53 41 42 4c 45 5f 4c 46 53 22 2c 0a 23 65  DISABLE_LFS",.#e
1a20: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1a30: 44 49 53 41 42 4c 45 5f 50 41 47 45 43 41 43 48  DISABLE_PAGECACH
1a40: 45 5f 4f 56 45 52 46 4c 4f 57 5f 53 54 41 54 53  E_OVERFLOW_STATS
1a50: 0a 20 20 22 44 49 53 41 42 4c 45 5f 50 41 47 45  .  "DISABLE_PAGE
1a60: 43 41 43 48 45 5f 4f 56 45 52 46 4c 4f 57 5f 53  CACHE_OVERFLOW_S
1a70: 54 41 54 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  TATS",.#endif.#i
1a80: 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  f SQLITE_DISABLE
1a90: 5f 53 4b 49 50 41 48 45 41 44 5f 44 49 53 54 49  _SKIPAHEAD_DISTI
1aa0: 4e 43 54 0a 20 20 22 44 49 53 41 42 4c 45 5f 53  NCT.  "DISABLE_S
1ab0: 4b 49 50 41 48 45 41 44 5f 44 49 53 54 49 4e 43  KIPAHEAD_DISTINC
1ac0: 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  T",.#endif.#ifde
1ad0: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1ae0: 38 5f 33 5f 4e 41 4d 45 53 0a 20 20 22 45 4e 41  8_3_NAMES.  "ENA
1af0: 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53 3d 22 20  BLE_8_3_NAMES=" 
1b00: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
1b10: 49 54 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e  ITE_ENABLE_8_3_N
1b20: 41 4d 45 53 29 2c 0a 23 65 6e 64 69 66 0a 23 69  AMES),.#endif.#i
1b30: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1b40: 41 50 49 5f 41 52 4d 4f 52 0a 20 20 22 45 4e 41  API_ARMOR.  "ENA
1b50: 42 4c 45 5f 41 50 49 5f 41 52 4d 4f 52 22 2c 0a  BLE_API_ARMOR",.
1b60: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1b70: 45 5f 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43 5f  E_ENABLE_ATOMIC_
1b80: 57 52 49 54 45 0a 20 20 22 45 4e 41 42 4c 45 5f  WRITE.  "ENABLE_
1b90: 41 54 4f 4d 49 43 5f 57 52 49 54 45 22 2c 0a 23  ATOMIC_WRITE",.#
1ba0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
1bb0: 5f 45 4e 41 42 4c 45 5f 42 41 54 43 48 5f 41 54  _ENABLE_BATCH_AT
1bc0: 4f 4d 49 43 5f 57 52 49 54 45 0a 20 20 22 45 4e  OMIC_WRITE.  "EN
1bd0: 41 42 4c 45 5f 42 41 54 43 48 5f 41 54 4f 4d 49  ABLE_BATCH_ATOMI
1be0: 43 5f 57 52 49 54 45 22 2c 0a 23 65 6e 64 69 66  C_WRITE",.#endif
1bf0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1c00: 4c 45 5f 43 45 52 4f 44 0a 20 20 22 45 4e 41 42  LE_CEROD.  "ENAB
1c10: 4c 45 5f 43 45 52 4f 44 3d 22 20 43 54 49 4d 45  LE_CEROD=" CTIME
1c20: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 45  OPT_VAL(SQLITE_E
1c30: 4e 41 42 4c 45 5f 43 45 52 4f 44 29 2c 0a 23 65  NABLE_CEROD),.#e
1c40: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1c50: 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45  ENABLE_COLUMN_ME
1c60: 54 41 44 41 54 41 0a 20 20 22 45 4e 41 42 4c 45  TADATA.  "ENABLE
1c70: 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41  _COLUMN_METADATA
1c80: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1c90: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55  LITE_ENABLE_COLU
1ca0: 4d 4e 5f 55 53 45 44 5f 4d 41 53 4b 0a 20 20 22  MN_USED_MASK.  "
1cb0: 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 55 53  ENABLE_COLUMN_US
1cc0: 45 44 5f 4d 41 53 4b 22 2c 0a 23 65 6e 64 69 66  ED_MASK",.#endif
1cd0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1ce0: 4c 45 5f 43 4f 53 54 4d 55 4c 54 0a 20 20 22 45  LE_COSTMULT.  "E
1cf0: 4e 41 42 4c 45 5f 43 4f 53 54 4d 55 4c 54 22 2c  NABLE_COSTMULT",
1d00: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1d10: 54 45 5f 45 4e 41 42 4c 45 5f 43 55 52 53 4f 52  TE_ENABLE_CURSOR
1d20: 5f 48 49 4e 54 53 0a 20 20 22 45 4e 41 42 4c 45  _HINTS.  "ENABLE
1d30: 5f 43 55 52 53 4f 52 5f 48 49 4e 54 53 22 2c 0a  _CURSOR_HINTS",.
1d40: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1d50: 45 5f 45 4e 41 42 4c 45 5f 44 42 53 54 41 54 5f  E_ENABLE_DBSTAT_
1d60: 56 54 41 42 0a 20 20 22 45 4e 41 42 4c 45 5f 44  VTAB.  "ENABLE_D
1d70: 42 53 54 41 54 5f 56 54 41 42 22 2c 0a 23 65 6e  BSTAT_VTAB",.#en
1d80: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
1d90: 4e 41 42 4c 45 5f 45 58 50 45 4e 53 49 56 45 5f  NABLE_EXPENSIVE_
1da0: 41 53 53 45 52 54 0a 20 20 22 45 4e 41 42 4c 45  ASSERT.  "ENABLE
1db0: 5f 45 58 50 45 4e 53 49 56 45 5f 41 53 53 45 52  _EXPENSIVE_ASSER
1dc0: 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  T",.#endif.#if S
1dd0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53  QLITE_ENABLE_FTS
1de0: 31 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 31  1.  "ENABLE_FTS1
1df0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1e00: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 32  LITE_ENABLE_FTS2
1e10: 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 32 22  .  "ENABLE_FTS2"
1e20: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
1e30: 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 0a  ITE_ENABLE_FTS3.
1e40: 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 33 22 2c    "ENABLE_FTS3",
1e50: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1e60: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 50  TE_ENABLE_FTS3_P
1e70: 41 52 45 4e 54 48 45 53 49 53 0a 20 20 22 45 4e  ARENTHESIS.  "EN
1e80: 41 42 4c 45 5f 46 54 53 33 5f 50 41 52 45 4e 54  ABLE_FTS3_PARENT
1e90: 48 45 53 49 53 22 2c 0a 23 65 6e 64 69 66 0a 23  HESIS",.#endif.#
1ea0: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1eb0: 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 0a  _FTS3_TOKENIZER.
1ec0: 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54    "ENABLE_FTS3_T
1ed0: 4f 4b 45 4e 49 5a 45 52 22 2c 0a 23 65 6e 64 69  OKENIZER",.#endi
1ee0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
1ef0: 42 4c 45 5f 46 54 53 34 0a 20 20 22 45 4e 41 42  BLE_FTS4.  "ENAB
1f00: 4c 45 5f 46 54 53 34 22 2c 0a 23 65 6e 64 69 66  LE_FTS4",.#endif
1f10: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1f20: 4c 45 5f 46 54 53 35 0a 20 20 22 45 4e 41 42 4c  LE_FTS5.  "ENABL
1f30: 45 5f 46 54 53 35 22 2c 0a 23 65 6e 64 69 66 0a  E_FTS5",.#endif.
1f40: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1f50: 45 5f 47 45 4f 50 4f 4c 59 0a 20 20 22 45 4e 41  E_GEOPOLY.  "ENA
1f60: 42 4c 45 5f 47 45 4f 50 4f 4c 59 22 2c 0a 23 65  BLE_GEOPOLY",.#e
1f70: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1f80: 45 4e 41 42 4c 45 5f 48 49 44 44 45 4e 5f 43 4f  ENABLE_HIDDEN_CO
1f90: 4c 55 4d 4e 53 0a 20 20 22 45 4e 41 42 4c 45 5f  LUMNS.  "ENABLE_
1fa0: 48 49 44 44 45 4e 5f 43 4f 4c 55 4d 4e 53 22 2c  HIDDEN_COLUMNS",
1fb0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1fc0: 54 45 5f 45 4e 41 42 4c 45 5f 49 43 55 0a 20 20  TE_ENABLE_ICU.  
1fd0: 22 45 4e 41 42 4c 45 5f 49 43 55 22 2c 0a 23 65  "ENABLE_ICU",.#e
1fe0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1ff0: 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 0a 20  ENABLE_IOTRACE. 
2000: 20 22 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45   "ENABLE_IOTRACE
2010: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
2020: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4a 53 4f 4e  LITE_ENABLE_JSON
2030: 31 0a 20 20 22 45 4e 41 42 4c 45 5f 4a 53 4f 4e  1.  "ENABLE_JSON
2040: 31 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  1",.#endif.#if S
2050: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 41  QLITE_ENABLE_LOA
2060: 44 5f 45 58 54 45 4e 53 49 4f 4e 0a 20 20 22 45  D_EXTENSION.  "E
2070: 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e  NABLE_LOAD_EXTEN
2080: 53 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69  SION",.#endif.#i
2090: 66 64 65 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  fdef SQLITE_ENAB
20a0: 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45  LE_LOCKING_STYLE
20b0: 0a 20 20 22 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49  .  "ENABLE_LOCKI
20c0: 4e 47 5f 53 54 59 4c 45 3d 22 20 43 54 49 4d 45  NG_STYLE=" CTIME
20d0: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 45  OPT_VAL(SQLITE_E
20e0: 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54  NABLE_LOCKING_ST
20f0: 59 4c 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  YLE),.#endif.#if
2100: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d   SQLITE_ENABLE_M
2110: 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54  EMORY_MANAGEMENT
2120: 0a 20 20 22 45 4e 41 42 4c 45 5f 4d 45 4d 4f 52  .  "ENABLE_MEMOR
2130: 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 22 2c 0a 23  Y_MANAGEMENT",.#
2140: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
2150: 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 0a  _ENABLE_MEMSYS3.
2160: 20 20 22 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53    "ENABLE_MEMSYS
2170: 33 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  3",.#endif.#if S
2180: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d  QLITE_ENABLE_MEM
2190: 53 59 53 35 0a 20 20 22 45 4e 41 42 4c 45 5f 4d  SYS5.  "ENABLE_M
21a0: 45 4d 53 59 53 35 22 2c 0a 23 65 6e 64 69 66 0a  EMSYS5",.#endif.
21b0: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
21c0: 45 5f 4d 55 4c 54 49 50 4c 45 58 0a 20 20 22 45  E_MULTIPLEX.  "E
21d0: 4e 41 42 4c 45 5f 4d 55 4c 54 49 50 4c 45 58 22  NABLE_MULTIPLEX"
21e0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
21f0: 49 54 45 5f 45 4e 41 42 4c 45 5f 4e 4f 52 4d 41  ITE_ENABLE_NORMA
2200: 4c 49 5a 45 0a 20 20 22 45 4e 41 42 4c 45 5f 4e  LIZE.  "ENABLE_N
2210: 4f 52 4d 41 4c 49 5a 45 22 2c 0a 23 65 6e 64 69  ORMALIZE",.#endi
2220: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2230: 42 4c 45 5f 4e 55 4c 4c 5f 54 52 49 4d 0a 20 20  BLE_NULL_TRIM.  
2240: 22 45 4e 41 42 4c 45 5f 4e 55 4c 4c 5f 54 52 49  "ENABLE_NULL_TRI
2250: 4d 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  M",.#endif.#if S
2260: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4f 56 45  QLITE_ENABLE_OVE
2270: 52 53 49 5a 45 5f 43 45 4c 4c 5f 43 48 45 43 4b  RSIZE_CELL_CHECK
2280: 0a 20 20 22 45 4e 41 42 4c 45 5f 4f 56 45 52 53  .  "ENABLE_OVERS
2290: 49 5a 45 5f 43 45 4c 4c 5f 43 48 45 43 4b 22 2c  IZE_CELL_CHECK",
22a0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
22b0: 54 45 5f 45 4e 41 42 4c 45 5f 50 52 45 55 50 44  TE_ENABLE_PREUPD
22c0: 41 54 45 5f 48 4f 4f 4b 0a 20 20 22 45 4e 41 42  ATE_HOOK.  "ENAB
22d0: 4c 45 5f 50 52 45 55 50 44 41 54 45 5f 48 4f 4f  LE_PREUPDATE_HOO
22e0: 4b 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  K",.#endif.#if S
22f0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 51 50 53  QLITE_ENABLE_QPS
2300: 47 0a 20 20 22 45 4e 41 42 4c 45 5f 51 50 53 47  G.  "ENABLE_QPSG
2310: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
2320: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 52 42 55 0a  LITE_ENABLE_RBU.
2330: 20 20 22 45 4e 41 42 4c 45 5f 52 42 55 22 2c 0a    "ENABLE_RBU",.
2340: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2350: 45 5f 45 4e 41 42 4c 45 5f 52 54 52 45 45 0a 20  E_ENABLE_RTREE. 
2360: 20 22 45 4e 41 42 4c 45 5f 52 54 52 45 45 22 2c   "ENABLE_RTREE",
2370: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
2380: 54 45 5f 45 4e 41 42 4c 45 5f 53 45 4c 45 43 54  TE_ENABLE_SELECT
2390: 54 52 41 43 45 0a 20 20 22 45 4e 41 42 4c 45 5f  TRACE.  "ENABLE_
23a0: 53 45 4c 45 43 54 54 52 41 43 45 22 2c 0a 23 65  SELECTTRACE",.#e
23b0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
23c0: 45 4e 41 42 4c 45 5f 53 45 53 53 49 4f 4e 0a 20  ENABLE_SESSION. 
23d0: 20 22 45 4e 41 42 4c 45 5f 53 45 53 53 49 4f 4e   "ENABLE_SESSION
23e0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
23f0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 4e 41 50  LITE_ENABLE_SNAP
2400: 53 48 4f 54 0a 20 20 22 45 4e 41 42 4c 45 5f 53  SHOT.  "ENABLE_S
2410: 4e 41 50 53 48 4f 54 22 2c 0a 23 65 6e 64 69 66  NAPSHOT",.#endif
2420: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
2430: 4c 45 5f 53 4f 52 54 45 52 5f 52 45 46 45 52 45  LE_SORTER_REFERE
2440: 4e 43 45 53 0a 20 20 22 45 4e 41 42 4c 45 5f 53  NCES.  "ENABLE_S
2450: 4f 52 54 45 52 5f 52 45 46 45 52 45 4e 43 45 53  ORTER_REFERENCES
2460: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
2470: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c  LITE_ENABLE_SQLL
2480: 4f 47 0a 20 20 22 45 4e 41 42 4c 45 5f 53 51 4c  OG.  "ENABLE_SQL
2490: 4c 4f 47 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  LOG",.#endif.#if
24a0: 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f   defined(SQLITE_
24b0: 45 4e 41 42 4c 45 5f 53 54 41 54 34 29 0a 20 20  ENABLE_STAT4).  
24c0: 22 45 4e 41 42 4c 45 5f 53 54 41 54 34 22 2c 0a  "ENABLE_STAT4",.
24d0: 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28 53 51  #elif defined(SQ
24e0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54  LITE_ENABLE_STAT
24f0: 33 29 0a 20 20 22 45 4e 41 42 4c 45 5f 53 54 41  3).  "ENABLE_STA
2500: 54 33 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  T3",.#endif.#if 
2510: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
2520: 4d 54 56 54 41 42 0a 20 20 22 45 4e 41 42 4c 45  MTVTAB.  "ENABLE
2530: 5f 53 54 4d 54 56 54 41 42 22 2c 0a 23 65 6e 64  _STMTVTAB",.#end
2540: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2550: 41 42 4c 45 5f 53 54 4d 54 5f 53 43 41 4e 53 54  ABLE_STMT_SCANST
2560: 41 54 55 53 0a 20 20 22 45 4e 41 42 4c 45 5f 53  ATUS.  "ENABLE_S
2570: 54 4d 54 5f 53 43 41 4e 53 54 41 54 55 53 22 2c  TMT_SCANSTATUS",
2580: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
2590: 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57  TE_ENABLE_UNKNOW
25a0: 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 0a 20  N_SQL_FUNCTION. 
25b0: 20 22 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e   "ENABLE_UNKNOWN
25c0: 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 22 2c 0a  _SQL_FUNCTION",.
25d0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
25e0: 45 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f  E_ENABLE_UNLOCK_
25f0: 4e 4f 54 49 46 59 0a 20 20 22 45 4e 41 42 4c 45  NOTIFY.  "ENABLE
2600: 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 22 2c  _UNLOCK_NOTIFY",
2610: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
2620: 54 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45  TE_ENABLE_UPDATE
2630: 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 0a 20 20  _DELETE_LIMIT.  
2640: 22 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44  "ENABLE_UPDATE_D
2650: 45 4c 45 54 45 5f 4c 49 4d 49 54 22 2c 0a 23 65  ELETE_LIMIT",.#e
2660: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2670: 45 4e 41 42 4c 45 5f 55 52 49 5f 30 30 5f 45 52  ENABLE_URI_00_ER
2680: 52 4f 52 0a 20 20 22 45 4e 41 42 4c 45 5f 55 52  ROR.  "ENABLE_UR
2690: 49 5f 30 30 5f 45 52 52 4f 52 22 2c 0a 23 65 6e  I_00_ERROR",.#en
26a0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
26b0: 4e 41 42 4c 45 5f 56 46 53 54 52 41 43 45 0a 20  NABLE_VFSTRACE. 
26c0: 20 22 45 4e 41 42 4c 45 5f 56 46 53 54 52 41 43   "ENABLE_VFSTRAC
26d0: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  E",.#endif.#if S
26e0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 57 48 45  QLITE_ENABLE_WHE
26f0: 52 45 54 52 41 43 45 0a 20 20 22 45 4e 41 42 4c  RETRACE.  "ENABL
2700: 45 5f 57 48 45 52 45 54 52 41 43 45 22 2c 0a 23  E_WHERETRACE",.#
2710: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
2720: 5f 45 4e 41 42 4c 45 5f 5a 49 50 56 46 53 0a 20  _ENABLE_ZIPVFS. 
2730: 20 22 45 4e 41 42 4c 45 5f 5a 49 50 56 46 53 22   "ENABLE_ZIPVFS"
2740: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2750: 49 54 45 5f 45 58 50 4c 41 49 4e 5f 45 53 54 49  ITE_EXPLAIN_ESTI
2760: 4d 41 54 45 44 5f 52 4f 57 53 0a 20 20 22 45 58  MATED_ROWS.  "EX
2770: 50 4c 41 49 4e 5f 45 53 54 49 4d 41 54 45 44 5f  PLAIN_ESTIMATED_
2780: 52 4f 57 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ROWS",.#endif.#i
2790: 66 20 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 49  f SQLITE_EXTRA_I
27a0: 46 4e 55 4c 4c 52 4f 57 0a 20 20 22 45 58 54 52  FNULLROW.  "EXTR
27b0: 41 5f 49 46 4e 55 4c 4c 52 4f 57 22 2c 0a 23 65  A_IFNULLROW",.#e
27c0: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
27d0: 54 45 5f 45 58 54 52 41 5f 49 4e 49 54 0a 20 20  TE_EXTRA_INIT.  
27e0: 22 45 58 54 52 41 5f 49 4e 49 54 3d 22 20 43 54  "EXTRA_INIT=" CT
27f0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
2800: 45 5f 45 58 54 52 41 5f 49 4e 49 54 29 2c 0a 23  E_EXTRA_INIT),.#
2810: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
2820: 49 54 45 5f 45 58 54 52 41 5f 53 48 55 54 44 4f  ITE_EXTRA_SHUTDO
2830: 57 4e 0a 20 20 22 45 58 54 52 41 5f 53 48 55 54  WN.  "EXTRA_SHUT
2840: 44 4f 57 4e 3d 22 20 43 54 49 4d 45 4f 50 54 5f  DOWN=" CTIMEOPT_
2850: 56 41 4c 28 53 51 4c 49 54 45 5f 45 58 54 52 41  VAL(SQLITE_EXTRA
2860: 5f 53 48 55 54 44 4f 57 4e 29 2c 0a 23 65 6e 64  _SHUTDOWN),.#end
2870: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
2880: 5f 46 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44  _FTS3_MAX_EXPR_D
2890: 45 50 54 48 0a 20 20 22 46 54 53 33 5f 4d 41 58  EPTH.  "FTS3_MAX
28a0: 5f 45 58 50 52 5f 44 45 50 54 48 3d 22 20 43 54  _EXPR_DEPTH=" CT
28b0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
28c0: 45 5f 46 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f  E_FTS3_MAX_EXPR_
28d0: 44 45 50 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23  DEPTH),.#endif.#
28e0: 69 66 20 53 51 4c 49 54 45 5f 46 54 53 35 5f 45  if SQLITE_FTS5_E
28f0: 4e 41 42 4c 45 5f 54 45 53 54 5f 4d 49 0a 20 20  NABLE_TEST_MI.  
2900: 22 46 54 53 35 5f 45 4e 41 42 4c 45 5f 54 45 53  "FTS5_ENABLE_TES
2910: 54 5f 4d 49 22 2c 0a 23 65 6e 64 69 66 0a 23 69  T_MI",.#endif.#i
2920: 66 20 53 51 4c 49 54 45 5f 46 54 53 35 5f 4e 4f  f SQLITE_FTS5_NO
2930: 5f 57 49 54 48 4f 55 54 5f 52 4f 57 49 44 0a 20  _WITHOUT_ROWID. 
2940: 20 22 46 54 53 35 5f 4e 4f 5f 57 49 54 48 4f 55   "FTS5_NO_WITHOU
2950: 54 5f 52 4f 57 49 44 22 2c 0a 23 65 6e 64 69 66  T_ROWID",.#endif
2960: 0a 23 69 66 20 53 51 4c 49 54 45 5f 48 41 53 5f  .#if SQLITE_HAS_
2970: 43 4f 44 45 43 0a 20 20 22 48 41 53 5f 43 4f 44  CODEC.  "HAS_COD
2980: 45 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  EC",.#endif.#if 
2990: 48 41 56 45 5f 49 53 4e 41 4e 20 7c 7c 20 53 51  HAVE_ISNAN || SQ
29a0: 4c 49 54 45 5f 48 41 56 45 5f 49 53 4e 41 4e 0a  LITE_HAVE_ISNAN.
29b0: 20 20 22 48 41 56 45 5f 49 53 4e 41 4e 22 2c 0a    "HAVE_ISNAN",.
29c0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
29d0: 45 5f 48 4f 4d 45 47 52 4f 57 4e 5f 52 45 43 55  E_HOMEGROWN_RECU
29e0: 52 53 49 56 45 5f 4d 55 54 45 58 0a 20 20 22 48  RSIVE_MUTEX.  "H
29f0: 4f 4d 45 47 52 4f 57 4e 5f 52 45 43 55 52 53 49  OMEGROWN_RECURSI
2a00: 56 45 5f 4d 55 54 45 58 22 2c 0a 23 65 6e 64 69  VE_MUTEX",.#endi
2a10: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 49 47 4e  f.#if SQLITE_IGN
2a20: 4f 52 45 5f 41 46 50 5f 4c 4f 43 4b 5f 45 52 52  ORE_AFP_LOCK_ERR
2a30: 4f 52 53 0a 20 20 22 49 47 4e 4f 52 45 5f 41 46  ORS.  "IGNORE_AF
2a40: 50 5f 4c 4f 43 4b 5f 45 52 52 4f 52 53 22 2c 0a  P_LOCK_ERRORS",.
2a50: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2a60: 45 5f 49 47 4e 4f 52 45 5f 46 4c 4f 43 4b 5f 4c  E_IGNORE_FLOCK_L
2a70: 4f 43 4b 5f 45 52 52 4f 52 53 0a 20 20 22 49 47  OCK_ERRORS.  "IG
2a80: 4e 4f 52 45 5f 46 4c 4f 43 4b 5f 4c 4f 43 4b 5f  NORE_FLOCK_LOCK_
2a90: 45 52 52 4f 52 53 22 2c 0a 23 65 6e 64 69 66 0a  ERRORS",.#endif.
2aa0: 23 69 66 20 53 51 4c 49 54 45 5f 49 4e 4c 49 4e  #if SQLITE_INLIN
2ab0: 45 5f 4d 45 4d 43 50 59 0a 20 20 22 49 4e 4c 49  E_MEMCPY.  "INLI
2ac0: 4e 45 5f 4d 45 4d 43 50 59 22 2c 0a 23 65 6e 64  NE_MEMCPY",.#end
2ad0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 49 4e  if.#if SQLITE_IN
2ae0: 54 36 34 5f 54 59 50 45 0a 20 20 22 49 4e 54 36  T64_TYPE.  "INT6
2af0: 34 5f 54 59 50 45 22 2c 0a 23 65 6e 64 69 66 0a  4_TYPE",.#endif.
2b00: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 49 4e  #ifdef SQLITE_IN
2b10: 54 45 47 52 49 54 59 5f 43 48 45 43 4b 5f 45 52  TEGRITY_CHECK_ER
2b20: 52 4f 52 5f 4d 41 58 0a 20 20 22 49 4e 54 45 47  ROR_MAX.  "INTEG
2b30: 52 49 54 59 5f 43 48 45 43 4b 5f 45 52 52 4f 52  RITY_CHECK_ERROR
2b40: 5f 4d 41 58 3d 22 20 43 54 49 4d 45 4f 50 54 5f  _MAX=" CTIMEOPT_
2b50: 56 41 4c 28 53 51 4c 49 54 45 5f 49 4e 54 45 47  VAL(SQLITE_INTEG
2b60: 52 49 54 59 5f 43 48 45 43 4b 5f 45 52 52 4f 52  RITY_CHECK_ERROR
2b70: 5f 4d 41 58 29 2c 0a 23 65 6e 64 69 66 0a 23 69  _MAX),.#endif.#i
2b80: 66 20 53 51 4c 49 54 45 5f 4c 49 4b 45 5f 44 4f  f SQLITE_LIKE_DO
2b90: 45 53 4e 54 5f 4d 41 54 43 48 5f 42 4c 4f 42 53  ESNT_MATCH_BLOBS
2ba0: 0a 20 20 22 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f  .  "LIKE_DOESNT_
2bb0: 4d 41 54 43 48 5f 42 4c 4f 42 53 22 2c 0a 23 65  MATCH_BLOBS",.#e
2bc0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2bd0: 4c 4f 43 4b 5f 54 52 41 43 45 0a 20 20 22 4c 4f  LOCK_TRACE.  "LO
2be0: 43 4b 5f 54 52 41 43 45 22 2c 0a 23 65 6e 64 69  CK_TRACE",.#endi
2bf0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4c 4f 47  f.#if SQLITE_LOG
2c00: 5f 43 41 43 48 45 5f 53 50 49 4c 4c 0a 20 20 22  _CACHE_SPILL.  "
2c10: 4c 4f 47 5f 43 41 43 48 45 5f 53 50 49 4c 4c 22  LOG_CACHE_SPILL"
2c20: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
2c30: 53 51 4c 49 54 45 5f 4d 41 4c 4c 4f 43 5f 53 4f  SQLITE_MALLOC_SO
2c40: 46 54 5f 4c 49 4d 49 54 0a 20 20 22 4d 41 4c 4c  FT_LIMIT.  "MALL
2c50: 4f 43 5f 53 4f 46 54 5f 4c 49 4d 49 54 3d 22 20  OC_SOFT_LIMIT=" 
2c60: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
2c70: 49 54 45 5f 4d 41 4c 4c 4f 43 5f 53 4f 46 54 5f  ITE_MALLOC_SOFT_
2c80: 4c 49 4d 49 54 29 2c 0a 23 65 6e 64 69 66 0a 23  LIMIT),.#endif.#
2c90: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58  ifdef SQLITE_MAX
2ca0: 5f 41 54 54 41 43 48 45 44 0a 20 20 22 4d 41 58  _ATTACHED.  "MAX
2cb0: 5f 41 54 54 41 43 48 45 44 3d 22 20 43 54 49 4d  _ATTACHED=" CTIM
2cc0: 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f  EOPT_VAL(SQLITE_
2cd0: 4d 41 58 5f 41 54 54 41 43 48 45 44 29 2c 0a 23  MAX_ATTACHED),.#
2ce0: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
2cf0: 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 0a 20  ITE_MAX_COLUMN. 
2d00: 20 22 4d 41 58 5f 43 4f 4c 55 4d 4e 3d 22 20 43   "MAX_COLUMN=" C
2d10: 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49  TIMEOPT_VAL(SQLI
2d20: 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 29 2c 0a  TE_MAX_COLUMN),.
2d30: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
2d40: 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e  LITE_MAX_COMPOUN
2d50: 44 5f 53 45 4c 45 43 54 0a 20 20 22 4d 41 58 5f  D_SELECT.  "MAX_
2d60: 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 3d  COMPOUND_SELECT=
2d70: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2d80: 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55  QLITE_MAX_COMPOU
2d90: 4e 44 5f 53 45 4c 45 43 54 29 2c 0a 23 65 6e 64  ND_SELECT),.#end
2da0: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
2db0: 5f 4d 41 58 5f 44 45 46 41 55 4c 54 5f 50 41 47  _MAX_DEFAULT_PAG
2dc0: 45 5f 53 49 5a 45 0a 20 20 22 4d 41 58 5f 44 45  E_SIZE.  "MAX_DE
2dd0: 46 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 3d  FAULT_PAGE_SIZE=
2de0: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2df0: 51 4c 49 54 45 5f 4d 41 58 5f 44 45 46 41 55 4c  QLITE_MAX_DEFAUL
2e00: 54 5f 50 41 47 45 5f 53 49 5a 45 29 2c 0a 23 65  T_PAGE_SIZE),.#e
2e10: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2e20: 54 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54  TE_MAX_EXPR_DEPT
2e30: 48 0a 20 20 22 4d 41 58 5f 45 58 50 52 5f 44 45  H.  "MAX_EXPR_DE
2e40: 50 54 48 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  PTH=" CTIMEOPT_V
2e50: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58  AL(SQLITE_MAX_EX
2e60: 50 52 5f 44 45 50 54 48 29 2c 0a 23 65 6e 64 69  PR_DEPTH),.#endi
2e70: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
2e80: 4d 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47  MAX_FUNCTION_ARG
2e90: 0a 20 20 22 4d 41 58 5f 46 55 4e 43 54 49 4f 4e  .  "MAX_FUNCTION
2ea0: 5f 41 52 47 3d 22 20 43 54 49 4d 45 4f 50 54 5f  _ARG=" CTIMEOPT_
2eb0: 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 46  VAL(SQLITE_MAX_F
2ec0: 55 4e 43 54 49 4f 4e 5f 41 52 47 29 2c 0a 23 65  UNCTION_ARG),.#e
2ed0: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2ee0: 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 0a 20 20  TE_MAX_LENGTH.  
2ef0: 22 4d 41 58 5f 4c 45 4e 47 54 48 3d 22 20 43 54  "MAX_LENGTH=" CT
2f00: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
2f10: 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 29 2c 0a 23  E_MAX_LENGTH),.#
2f20: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
2f30: 49 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54  ITE_MAX_LIKE_PAT
2f40: 54 45 52 4e 5f 4c 45 4e 47 54 48 0a 20 20 22 4d  TERN_LENGTH.  "M
2f50: 41 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f  AX_LIKE_PATTERN_
2f60: 4c 45 4e 47 54 48 3d 22 20 43 54 49 4d 45 4f 50  LENGTH=" CTIMEOP
2f70: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
2f80: 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45  _LIKE_PATTERN_LE
2f90: 4e 47 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69  NGTH),.#endif.#i
2fa0: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
2fb0: 4d 45 4d 4f 52 59 0a 20 20 22 4d 41 58 5f 4d 45  MEMORY.  "MAX_ME
2fc0: 4d 4f 52 59 3d 22 20 43 54 49 4d 45 4f 50 54 5f  MORY=" CTIMEOPT_
2fd0: 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 4d  VAL(SQLITE_MAX_M
2fe0: 45 4d 4f 52 59 29 2c 0a 23 65 6e 64 69 66 0a 23  EMORY),.#endif.#
2ff0: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58  ifdef SQLITE_MAX
3000: 5f 4d 4d 41 50 5f 53 49 5a 45 0a 20 20 22 4d 41  _MMAP_SIZE.  "MA
3010: 58 5f 4d 4d 41 50 5f 53 49 5a 45 3d 22 20 43 54  X_MMAP_SIZE=" CT
3020: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
3030: 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 29  E_MAX_MMAP_SIZE)
3040: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
3050: 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f  SQLITE_MAX_MMAP_
3060: 53 49 5a 45 5f 0a 20 20 22 4d 41 58 5f 4d 4d 41  SIZE_.  "MAX_MMA
3070: 50 5f 53 49 5a 45 5f 3d 22 20 43 54 49 4d 45 4f  P_SIZE_=" CTIMEO
3080: 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41  PT_VAL(SQLITE_MA
3090: 58 5f 4d 4d 41 50 5f 53 49 5a 45 5f 29 2c 0a 23  X_MMAP_SIZE_),.#
30a0: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
30b0: 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55  ITE_MAX_PAGE_COU
30c0: 4e 54 0a 20 20 22 4d 41 58 5f 50 41 47 45 5f 43  NT.  "MAX_PAGE_C
30d0: 4f 55 4e 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f  OUNT=" CTIMEOPT_
30e0: 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 50  VAL(SQLITE_MAX_P
30f0: 41 47 45 5f 43 4f 55 4e 54 29 2c 0a 23 65 6e 64  AGE_COUNT),.#end
3100: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
3110: 5f 4d 41 58 5f 50 41 47 45 5f 53 49 5a 45 0a 20  _MAX_PAGE_SIZE. 
3120: 20 22 4d 41 58 5f 50 41 47 45 5f 53 49 5a 45 3d   "MAX_PAGE_SIZE=
3130: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
3140: 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 53  QLITE_MAX_PAGE_S
3150: 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  IZE),.#endif.#if
3160: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 53  def SQLITE_MAX_S
3170: 43 48 45 4d 41 5f 52 45 54 52 59 0a 20 20 22 4d  CHEMA_RETRY.  "M
3180: 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59 3d  AX_SCHEMA_RETRY=
3190: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
31a0: 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41  QLITE_MAX_SCHEMA
31b0: 5f 52 45 54 52 59 29 2c 0a 23 65 6e 64 69 66 0a  _RETRY),.#endif.
31c0: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41  #ifdef SQLITE_MA
31d0: 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 0a 20 20 22  X_SQL_LENGTH.  "
31e0: 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 3d 22  MAX_SQL_LENGTH="
31f0: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
3200: 4c 49 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e  LITE_MAX_SQL_LEN
3210: 47 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  GTH),.#endif.#if
3220: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 54  def SQLITE_MAX_T
3230: 52 49 47 47 45 52 5f 44 45 50 54 48 0a 20 20 22  RIGGER_DEPTH.  "
3240: 4d 41 58 5f 54 52 49 47 47 45 52 5f 44 45 50 54  MAX_TRIGGER_DEPT
3250: 48 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  H=" CTIMEOPT_VAL
3260: 28 53 51 4c 49 54 45 5f 4d 41 58 5f 54 52 49 47  (SQLITE_MAX_TRIG
3270: 47 45 52 5f 44 45 50 54 48 29 2c 0a 23 65 6e 64  GER_DEPTH),.#end
3280: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
3290: 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55  _MAX_VARIABLE_NU
32a0: 4d 42 45 52 0a 20 20 22 4d 41 58 5f 56 41 52 49  MBER.  "MAX_VARI
32b0: 41 42 4c 45 5f 4e 55 4d 42 45 52 3d 22 20 43 54  ABLE_NUMBER=" CT
32c0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
32d0: 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e  E_MAX_VARIABLE_N
32e0: 55 4d 42 45 52 29 2c 0a 23 65 6e 64 69 66 0a 23  UMBER),.#endif.#
32f0: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58  ifdef SQLITE_MAX
3300: 5f 56 44 42 45 5f 4f 50 0a 20 20 22 4d 41 58 5f  _VDBE_OP.  "MAX_
3310: 56 44 42 45 5f 4f 50 3d 22 20 43 54 49 4d 45 4f  VDBE_OP=" CTIMEO
3320: 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41  PT_VAL(SQLITE_MA
3330: 58 5f 56 44 42 45 5f 4f 50 29 2c 0a 23 65 6e 64  X_VDBE_OP),.#end
3340: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
3350: 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45  _MAX_WORKER_THRE
3360: 41 44 53 0a 20 20 22 4d 41 58 5f 57 4f 52 4b 45  ADS.  "MAX_WORKE
3370: 52 5f 54 48 52 45 41 44 53 3d 22 20 43 54 49 4d  R_THREADS=" CTIM
3380: 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f  EOPT_VAL(SQLITE_
3390: 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41  MAX_WORKER_THREA
33a0: 44 53 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  DS),.#endif.#if 
33b0: 53 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 0a  SQLITE_MEMDEBUG.
33c0: 20 20 22 4d 45 4d 44 45 42 55 47 22 2c 0a 23 65    "MEMDEBUG",.#e
33d0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
33e0: 4d 49 58 45 44 5f 45 4e 44 49 41 4e 5f 36 34 42  MIXED_ENDIAN_64B
33f0: 49 54 5f 46 4c 4f 41 54 0a 20 20 22 4d 49 58 45  IT_FLOAT.  "MIXE
3400: 44 5f 45 4e 44 49 41 4e 5f 36 34 42 49 54 5f 46  D_ENDIAN_64BIT_F
3410: 4c 4f 41 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  LOAT",.#endif.#i
3420: 66 20 53 51 4c 49 54 45 5f 4d 4d 41 50 5f 52 45  f SQLITE_MMAP_RE
3430: 41 44 57 52 49 54 45 0a 20 20 22 4d 4d 41 50 5f  ADWRITE.  "MMAP_
3440: 52 45 41 44 57 52 49 54 45 22 2c 0a 23 65 6e 64  READWRITE",.#end
3450: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d 55  if.#if SQLITE_MU
3460: 54 45 58 5f 4e 4f 4f 50 0a 20 20 22 4d 55 54 45  TEX_NOOP.  "MUTE
3470: 58 5f 4e 4f 4f 50 22 2c 0a 23 65 6e 64 69 66 0a  X_NOOP",.#endif.
3480: 23 69 66 20 53 51 4c 49 54 45 5f 4d 55 54 45 58  #if SQLITE_MUTEX
3490: 5f 4e 52 45 46 0a 20 20 22 4d 55 54 45 58 5f 4e  _NREF.  "MUTEX_N
34a0: 52 45 46 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  REF",.#endif.#if
34b0: 20 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 4f 4d   SQLITE_MUTEX_OM
34c0: 49 54 0a 20 20 22 4d 55 54 45 58 5f 4f 4d 49 54  IT.  "MUTEX_OMIT
34d0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
34e0: 4c 49 54 45 5f 4d 55 54 45 58 5f 50 54 48 52 45  LITE_MUTEX_PTHRE
34f0: 41 44 53 0a 20 20 22 4d 55 54 45 58 5f 50 54 48  ADS.  "MUTEX_PTH
3500: 52 45 41 44 53 22 2c 0a 23 65 6e 64 69 66 0a 23  READS",.#endif.#
3510: 69 66 20 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f  if SQLITE_MUTEX_
3520: 57 33 32 0a 20 20 22 4d 55 54 45 58 5f 57 33 32  W32.  "MUTEX_W32
3530: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3540: 4c 49 54 45 5f 4e 45 45 44 5f 45 52 52 5f 4e 41  LITE_NEED_ERR_NA
3550: 4d 45 0a 20 20 22 4e 45 45 44 5f 45 52 52 5f 4e  ME.  "NEED_ERR_N
3560: 41 4d 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  AME",.#endif.#if
3570: 20 53 51 4c 49 54 45 5f 4e 4f 49 4e 4c 49 4e 45   SQLITE_NOINLINE
3580: 0a 20 20 22 4e 4f 49 4e 4c 49 4e 45 22 2c 0a 23  .  "NOINLINE",.#
3590: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
35a0: 5f 4e 4f 5f 53 59 4e 43 0a 20 20 22 4e 4f 5f 53  _NO_SYNC.  "NO_S
35b0: 59 4e 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  YNC",.#endif.#if
35c0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54   SQLITE_OMIT_ALT
35d0: 45 52 54 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f  ERTABLE.  "OMIT_
35e0: 41 4c 54 45 52 54 41 42 4c 45 22 2c 0a 23 65 6e  ALTERTABLE",.#en
35f0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3600: 4d 49 54 5f 41 4e 41 4c 59 5a 45 0a 20 20 22 4f  MIT_ANALYZE.  "O
3610: 4d 49 54 5f 41 4e 41 4c 59 5a 45 22 2c 0a 23 65  MIT_ANALYZE",.#e
3620: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3630: 4f 4d 49 54 5f 41 54 54 41 43 48 0a 20 20 22 4f  OMIT_ATTACH.  "O
3640: 4d 49 54 5f 41 54 54 41 43 48 22 2c 0a 23 65 6e  MIT_ATTACH",.#en
3650: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3660: 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f  MIT_AUTHORIZATIO
3670: 4e 0a 20 20 22 4f 4d 49 54 5f 41 55 54 48 4f 52  N.  "OMIT_AUTHOR
3680: 49 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66  IZATION",.#endif
3690: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
36a0: 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20  _AUTOINCREMENT. 
36b0: 20 22 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45   "OMIT_AUTOINCRE
36c0: 4d 45 4e 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  MENT",.#endif.#i
36d0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55  f SQLITE_OMIT_AU
36e0: 54 4f 49 4e 49 54 0a 20 20 22 4f 4d 49 54 5f 41  TOINIT.  "OMIT_A
36f0: 55 54 4f 49 4e 49 54 22 2c 0a 23 65 6e 64 69 66  UTOINIT",.#endif
3700: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3710: 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58  _AUTOMATIC_INDEX
3720: 0a 20 20 22 4f 4d 49 54 5f 41 55 54 4f 4d 41 54  .  "OMIT_AUTOMAT
3730: 49 43 5f 49 4e 44 45 58 22 2c 0a 23 65 6e 64 69  IC_INDEX",.#endi
3740: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3750: 54 5f 41 55 54 4f 52 45 53 45 54 0a 20 20 22 4f  T_AUTORESET.  "O
3760: 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 22 2c 0a  MIT_AUTORESET",.
3770: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3780: 45 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55  E_OMIT_AUTOVACUU
3790: 4d 0a 20 20 22 4f 4d 49 54 5f 41 55 54 4f 56 41  M.  "OMIT_AUTOVA
37a0: 43 55 55 4d 22 2c 0a 23 65 6e 64 69 66 0a 23 69  CUUM",.#endif.#i
37b0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 45  f SQLITE_OMIT_BE
37c0: 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49  TWEEN_OPTIMIZATI
37d0: 4f 4e 0a 20 20 22 4f 4d 49 54 5f 42 45 54 57 45  ON.  "OMIT_BETWE
37e0: 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 22  EN_OPTIMIZATION"
37f0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3800: 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49  ITE_OMIT_BLOB_LI
3810: 54 45 52 41 4c 0a 20 20 22 4f 4d 49 54 5f 42 4c  TERAL.  "OMIT_BL
3820: 4f 42 5f 4c 49 54 45 52 41 4c 22 2c 0a 23 65 6e  OB_LITERAL",.#en
3830: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3840: 4d 49 54 5f 42 54 52 45 45 43 4f 55 4e 54 0a 20  MIT_BTREECOUNT. 
3850: 20 22 4f 4d 49 54 5f 42 54 52 45 45 43 4f 55 4e   "OMIT_BTREECOUN
3860: 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  T",.#endif.#if S
3870: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 0a  QLITE_OMIT_CAST.
3880: 20 20 22 4f 4d 49 54 5f 43 41 53 54 22 2c 0a 23    "OMIT_CAST",.#
3890: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
38a0: 5f 4f 4d 49 54 5f 43 48 45 43 4b 0a 20 20 22 4f  _OMIT_CHECK.  "O
38b0: 4d 49 54 5f 43 48 45 43 4b 22 2c 0a 23 65 6e 64  MIT_CHECK",.#end
38c0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
38d0: 49 54 5f 43 4f 4d 50 4c 45 54 45 0a 20 20 22 4f  IT_COMPLETE.  "O
38e0: 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 22 2c 0a 23  MIT_COMPLETE",.#
38f0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3900: 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53  _OMIT_COMPOUND_S
3910: 45 4c 45 43 54 0a 20 20 22 4f 4d 49 54 5f 43 4f  ELECT.  "OMIT_CO
3920: 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 22 2c 0a  MPOUND_SELECT",.
3930: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3940: 45 5f 4f 4d 49 54 5f 43 4f 4e 46 4c 49 43 54 5f  E_OMIT_CONFLICT_
3950: 43 4c 41 55 53 45 0a 20 20 22 4f 4d 49 54 5f 43  CLAUSE.  "OMIT_C
3960: 4f 4e 46 4c 49 43 54 5f 43 4c 41 55 53 45 22 2c  ONFLICT_CLAUSE",
3970: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3980: 54 45 5f 4f 4d 49 54 5f 43 54 45 0a 20 20 22 4f  TE_OMIT_CTE.  "O
3990: 4d 49 54 5f 43 54 45 22 2c 0a 23 65 6e 64 69 66  MIT_CTE",.#endif
39a0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
39b0: 5f 44 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 0a  _DATETIME_FUNCS.
39c0: 20 20 22 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45    "OMIT_DATETIME
39d0: 5f 46 55 4e 43 53 22 2c 0a 23 65 6e 64 69 66 0a  _FUNCS",.#endif.
39e0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
39f0: 44 45 43 4c 54 59 50 45 0a 20 20 22 4f 4d 49 54  DECLTYPE.  "OMIT
3a00: 5f 44 45 43 4c 54 59 50 45 22 2c 0a 23 65 6e 64  _DECLTYPE",.#end
3a10: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3a20: 49 54 5f 44 45 50 52 45 43 41 54 45 44 0a 20 20  IT_DEPRECATED.  
3a30: 22 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44  "OMIT_DEPRECATED
3a40: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3a50: 4c 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f  LITE_OMIT_DISKIO
3a60: 0a 20 20 22 4f 4d 49 54 5f 44 49 53 4b 49 4f 22  .  "OMIT_DISKIO"
3a70: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3a80: 49 54 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49 4e  ITE_OMIT_EXPLAIN
3a90: 0a 20 20 22 4f 4d 49 54 5f 45 58 50 4c 41 49 4e  .  "OMIT_EXPLAIN
3aa0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3ab0: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50  LITE_OMIT_FLAG_P
3ac0: 52 41 47 4d 41 53 0a 20 20 22 4f 4d 49 54 5f 46  RAGMAS.  "OMIT_F
3ad0: 4c 41 47 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65  LAG_PRAGMAS",.#e
3ae0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3af0: 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f  OMIT_FLOATING_PO
3b00: 49 4e 54 0a 20 20 22 4f 4d 49 54 5f 46 4c 4f 41  INT.  "OMIT_FLOA
3b10: 54 49 4e 47 5f 50 4f 49 4e 54 22 2c 0a 23 65 6e  TING_POINT",.#en
3b20: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3b30: 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 0a  MIT_FOREIGN_KEY.
3b40: 20 20 22 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f    "OMIT_FOREIGN_
3b50: 4b 45 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  KEY",.#endif.#if
3b60: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54   SQLITE_OMIT_GET
3b70: 5f 54 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f 47  _TABLE.  "OMIT_G
3b80: 45 54 5f 54 41 42 4c 45 22 2c 0a 23 65 6e 64 69  ET_TABLE",.#endi
3b90: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3ba0: 54 5f 48 45 58 5f 49 4e 54 45 47 45 52 0a 20 20  T_HEX_INTEGER.  
3bb0: 22 4f 4d 49 54 5f 48 45 58 5f 49 4e 54 45 47 45  "OMIT_HEX_INTEGE
3bc0: 52 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  R",.#endif.#if S
3bd0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42  QLITE_OMIT_INCRB
3be0: 4c 4f 42 0a 20 20 22 4f 4d 49 54 5f 49 4e 43 52  LOB.  "OMIT_INCR
3bf0: 42 4c 4f 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69  BLOB",.#endif.#i
3c00: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e  f SQLITE_OMIT_IN
3c10: 54 45 47 52 49 54 59 5f 43 48 45 43 4b 0a 20 20  TEGRITY_CHECK.  
3c20: 22 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f  "OMIT_INTEGRITY_
3c30: 43 48 45 43 4b 22 2c 0a 23 65 6e 64 69 66 0a 23  CHECK",.#endif.#
3c40: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  if SQLITE_OMIT_L
3c50: 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  IKE_OPTIMIZATION
3c60: 0a 20 20 22 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50  .  "OMIT_LIKE_OP
3c70: 54 49 4d 49 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e  TIMIZATION",.#en
3c80: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3c90: 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49  MIT_LOAD_EXTENSI
3ca0: 4f 4e 0a 20 20 22 4f 4d 49 54 5f 4c 4f 41 44 5f  ON.  "OMIT_LOAD_
3cb0: 45 58 54 45 4e 53 49 4f 4e 22 2c 0a 23 65 6e 64  EXTENSION",.#end
3cc0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3cd0: 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 0a 20 20 22  IT_LOCALTIME.  "
3ce0: 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 22 2c  OMIT_LOCALTIME",
3cf0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3d00: 54 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44  TE_OMIT_LOOKASID
3d10: 45 0a 20 20 22 4f 4d 49 54 5f 4c 4f 4f 4b 41 53  E.  "OMIT_LOOKAS
3d20: 49 44 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  IDE",.#endif.#if
3d30: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d   SQLITE_OMIT_MEM
3d40: 4f 52 59 44 42 0a 20 20 22 4f 4d 49 54 5f 4d 45  ORYDB.  "OMIT_ME
3d50: 4d 4f 52 59 44 42 22 2c 0a 23 65 6e 64 69 66 0a  MORYDB",.#endif.
3d60: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3d70: 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 0a  OR_OPTIMIZATION.
3d80: 20 20 22 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d    "OMIT_OR_OPTIM
3d90: 49 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66  IZATION",.#endif
3da0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3db0: 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 0a 20  _PAGER_PRAGMAS. 
3dc0: 20 22 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41   "OMIT_PAGER_PRA
3dd0: 47 4d 41 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  GMAS",.#endif.#i
3de0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41  f SQLITE_OMIT_PA
3df0: 52 53 45 52 5f 54 52 41 43 45 0a 20 20 22 4f 4d  RSER_TRACE.  "OM
3e00: 49 54 5f 50 41 52 53 45 52 5f 54 52 41 43 45 22  IT_PARSER_TRACE"
3e10: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3e20: 49 54 45 5f 4f 4d 49 54 5f 50 4f 50 45 4e 0a 20  ITE_OMIT_POPEN. 
3e30: 20 22 4f 4d 49 54 5f 50 4f 50 45 4e 22 2c 0a 23   "OMIT_POPEN",.#
3e40: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3e50: 5f 4f 4d 49 54 5f 50 52 41 47 4d 41 0a 20 20 22  _OMIT_PRAGMA.  "
3e60: 4f 4d 49 54 5f 50 52 41 47 4d 41 22 2c 0a 23 65  OMIT_PRAGMA",.#e
3e70: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3e80: 4f 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41  OMIT_PROGRESS_CA
3e90: 4c 4c 42 41 43 4b 0a 20 20 22 4f 4d 49 54 5f 50  LLBACK.  "OMIT_P
3ea0: 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b  ROGRESS_CALLBACK
3eb0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3ec0: 4c 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42  LITE_OMIT_QUICKB
3ed0: 41 4c 41 4e 43 45 0a 20 20 22 4f 4d 49 54 5f 51  ALANCE.  "OMIT_Q
3ee0: 55 49 43 4b 42 41 4c 41 4e 43 45 22 2c 0a 23 65  UICKBALANCE",.#e
3ef0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3f00: 4f 4d 49 54 5f 52 45 49 4e 44 45 58 0a 20 20 22  OMIT_REINDEX.  "
3f10: 4f 4d 49 54 5f 52 45 49 4e 44 45 58 22 2c 0a 23  OMIT_REINDEX",.#
3f20: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3f30: 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41  _OMIT_SCHEMA_PRA
3f40: 47 4d 41 53 0a 20 20 22 4f 4d 49 54 5f 53 43 48  GMAS.  "OMIT_SCH
3f50: 45 4d 41 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65  EMA_PRAGMAS",.#e
3f60: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3f70: 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53  OMIT_SCHEMA_VERS
3f80: 49 4f 4e 5f 50 52 41 47 4d 41 53 0a 20 20 22 4f  ION_PRAGMAS.  "O
3f90: 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49  MIT_SCHEMA_VERSI
3fa0: 4f 4e 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65 6e  ON_PRAGMAS",.#en
3fb0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3fc0: 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45  MIT_SHARED_CACHE
3fd0: 0a 20 20 22 4f 4d 49 54 5f 53 48 41 52 45 44 5f  .  "OMIT_SHARED_
3fe0: 43 41 43 48 45 22 2c 0a 23 65 6e 64 69 66 0a 23  CACHE",.#endif.#
3ff0: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  if SQLITE_OMIT_S
4000: 48 55 54 44 4f 57 4e 5f 44 49 52 45 43 54 4f 52  HUTDOWN_DIRECTOR
4010: 49 45 53 0a 20 20 22 4f 4d 49 54 5f 53 48 55 54  IES.  "OMIT_SHUT
4020: 44 4f 57 4e 5f 44 49 52 45 43 54 4f 52 49 45 53  DOWN_DIRECTORIES
4030: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4040: 4c 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45  LITE_OMIT_SUBQUE
4050: 52 59 0a 20 20 22 4f 4d 49 54 5f 53 55 42 51 55  RY.  "OMIT_SUBQU
4060: 45 52 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ERY",.#endif.#if
4070: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 43 4c   SQLITE_OMIT_TCL
4080: 5f 56 41 52 49 41 42 4c 45 0a 20 20 22 4f 4d 49  _VARIABLE.  "OMI
4090: 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 22 2c  T_TCL_VARIABLE",
40a0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
40b0: 54 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 0a 20  TE_OMIT_TEMPDB. 
40c0: 20 22 4f 4d 49 54 5f 54 45 4d 50 44 42 22 2c 0a   "OMIT_TEMPDB",.
40d0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
40e0: 45 5f 4f 4d 49 54 5f 54 45 53 54 5f 43 4f 4e 54  E_OMIT_TEST_CONT
40f0: 52 4f 4c 0a 20 20 22 4f 4d 49 54 5f 54 45 53 54  ROL.  "OMIT_TEST
4100: 5f 43 4f 4e 54 52 4f 4c 22 2c 0a 23 65 6e 64 69  _CONTROL",.#endi
4110: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
4120: 54 5f 54 52 41 43 45 0a 20 20 22 4f 4d 49 54 5f  T_TRACE.  "OMIT_
4130: 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23  TRACE",.#endif.#
4140: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  if SQLITE_OMIT_T
4150: 52 49 47 47 45 52 0a 20 20 22 4f 4d 49 54 5f 54  RIGGER.  "OMIT_T
4160: 52 49 47 47 45 52 22 2c 0a 23 65 6e 64 69 66 0a  RIGGER",.#endif.
4170: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
4180: 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a  TRUNCATE_OPTIMIZ
4190: 41 54 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f 54 52  ATION.  "OMIT_TR
41a0: 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54  UNCATE_OPTIMIZAT
41b0: 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ION",.#endif.#if
41c0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54 46   SQLITE_OMIT_UTF
41d0: 31 36 0a 20 20 22 4f 4d 49 54 5f 55 54 46 31 36  16.  "OMIT_UTF16
41e0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
41f0: 4c 49 54 45 5f 4f 4d 49 54 5f 56 41 43 55 55 4d  LITE_OMIT_VACUUM
4200: 0a 20 20 22 4f 4d 49 54 5f 56 41 43 55 55 4d 22  .  "OMIT_VACUUM"
4210: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4220: 49 54 45 5f 4f 4d 49 54 5f 56 49 45 57 0a 20 20  ITE_OMIT_VIEW.  
4230: 22 4f 4d 49 54 5f 56 49 45 57 22 2c 0a 23 65 6e  "OMIT_VIEW",.#en
4240: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
4250: 4d 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45  MIT_VIRTUALTABLE
4260: 0a 20 20 22 4f 4d 49 54 5f 56 49 52 54 55 41 4c  .  "OMIT_VIRTUAL
4270: 54 41 42 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23  TABLE",.#endif.#
4280: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57  if SQLITE_OMIT_W
4290: 41 4c 0a 20 20 22 4f 4d 49 54 5f 57 41 4c 22 2c  AL.  "OMIT_WAL",
42a0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
42b0: 54 45 5f 4f 4d 49 54 5f 57 53 44 0a 20 20 22 4f  TE_OMIT_WSD.  "O
42c0: 4d 49 54 5f 57 53 44 22 2c 0a 23 65 6e 64 69 66  MIT_WSD",.#endif
42d0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
42e0: 5f 58 46 45 52 5f 4f 50 54 0a 20 20 22 4f 4d 49  _XFER_OPT.  "OMI
42f0: 54 5f 58 46 45 52 5f 4f 50 54 22 2c 0a 23 65 6e  T_XFER_OPT",.#en
4300: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50  dif.#if SQLITE_P
4310: 43 41 43 48 45 5f 53 45 50 41 52 41 54 45 5f 48  CACHE_SEPARATE_H
4320: 45 41 44 45 52 0a 20 20 22 50 43 41 43 48 45 5f  EADER.  "PCACHE_
4330: 53 45 50 41 52 41 54 45 5f 48 45 41 44 45 52 22  SEPARATE_HEADER"
4340: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4350: 49 54 45 5f 50 45 52 46 4f 52 4d 41 4e 43 45 5f  ITE_PERFORMANCE_
4360: 54 52 41 43 45 0a 20 20 22 50 45 52 46 4f 52 4d  TRACE.  "PERFORM
4370: 41 4e 43 45 5f 54 52 41 43 45 22 2c 0a 23 65 6e  ANCE_TRACE",.#en
4380: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50  dif.#if SQLITE_P
4390: 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49  OWERSAFE_OVERWRI
43a0: 54 45 0a 20 20 22 50 4f 57 45 52 53 41 46 45 5f  TE.  "POWERSAFE_
43b0: 4f 56 45 52 57 52 49 54 45 22 2c 0a 23 65 6e 64  OVERWRITE",.#end
43c0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50 52  if.#if SQLITE_PR
43d0: 45 46 45 52 5f 50 52 4f 58 59 5f 4c 4f 43 4b 49  EFER_PROXY_LOCKI
43e0: 4e 47 0a 20 20 22 50 52 45 46 45 52 5f 50 52 4f  NG.  "PREFER_PRO
43f0: 58 59 5f 4c 4f 43 4b 49 4e 47 22 2c 0a 23 65 6e  XY_LOCKING",.#en
4400: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50  dif.#if SQLITE_P
4410: 52 4f 58 59 5f 44 45 42 55 47 0a 20 20 22 50 52  ROXY_DEBUG.  "PR
4420: 4f 58 59 5f 44 45 42 55 47 22 2c 0a 23 65 6e 64  OXY_DEBUG",.#end
4430: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 52 45  if.#if SQLITE_RE
4440: 56 45 52 53 45 5f 55 4e 4f 52 44 45 52 45 44 5f  VERSE_UNORDERED_
4450: 53 45 4c 45 43 54 53 0a 20 20 22 52 45 56 45 52  SELECTS.  "REVER
4460: 53 45 5f 55 4e 4f 52 44 45 52 45 44 5f 53 45 4c  SE_UNORDERED_SEL
4470: 45 43 54 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ECTS",.#endif.#i
4480: 66 20 53 51 4c 49 54 45 5f 52 54 52 45 45 5f 49  f SQLITE_RTREE_I
4490: 4e 54 5f 4f 4e 4c 59 0a 20 20 22 52 54 52 45 45  NT_ONLY.  "RTREE
44a0: 5f 49 4e 54 5f 4f 4e 4c 59 22 2c 0a 23 65 6e 64  _INT_ONLY",.#end
44b0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 45  if.#if SQLITE_SE
44c0: 43 55 52 45 5f 44 45 4c 45 54 45 0a 20 20 22 53  CURE_DELETE.  "S
44d0: 45 43 55 52 45 5f 44 45 4c 45 54 45 22 2c 0a 23  ECURE_DELETE",.#
44e0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
44f0: 5f 53 4d 41 4c 4c 5f 53 54 41 43 4b 0a 20 20 22  _SMALL_STACK.  "
4500: 53 4d 41 4c 4c 5f 53 54 41 43 4b 22 2c 0a 23 65  SMALL_STACK",.#e
4510: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
4520: 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 0a  TE_SORTER_PMASZ.
4530: 20 20 22 53 4f 52 54 45 52 5f 50 4d 41 53 5a 3d    "SORTER_PMASZ=
4540: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
4550: 51 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41  QLITE_SORTER_PMA
4560: 53 5a 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  SZ),.#endif.#if 
4570: 53 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 0a 20  SQLITE_SOUNDEX. 
4580: 20 22 53 4f 55 4e 44 45 58 22 2c 0a 23 65 6e 64   "SOUNDEX",.#end
4590: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
45a0: 5f 53 54 41 54 34 5f 53 41 4d 50 4c 45 53 0a 20  _STAT4_SAMPLES. 
45b0: 20 22 53 54 41 54 34 5f 53 41 4d 50 4c 45 53 3d   "STAT4_SAMPLES=
45c0: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
45d0: 51 4c 49 54 45 5f 53 54 41 54 34 5f 53 41 4d 50  QLITE_STAT4_SAMP
45e0: 4c 45 53 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  LES),.#endif.#if
45f0: 64 65 66 20 53 51 4c 49 54 45 5f 53 54 4d 54 4a  def SQLITE_STMTJ
4600: 52 4e 4c 5f 53 50 49 4c 4c 0a 20 20 22 53 54 4d  RNL_SPILL.  "STM
4610: 54 4a 52 4e 4c 5f 53 50 49 4c 4c 3d 22 20 43 54  TJRNL_SPILL=" CT
4620: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
4630: 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c  E_STMTJRNL_SPILL
4640: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ),.#endif.#if SQ
4650: 4c 49 54 45 5f 53 55 42 53 54 52 5f 43 4f 4d 50  LITE_SUBSTR_COMP
4660: 41 54 49 42 49 4c 49 54 59 0a 20 20 22 53 55 42  ATIBILITY.  "SUB
4670: 53 54 52 5f 43 4f 4d 50 41 54 49 42 49 4c 49 54  STR_COMPATIBILIT
4680: 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  Y",.#endif.#if S
4690: 51 4c 49 54 45 5f 53 59 53 54 45 4d 5f 4d 41 4c  QLITE_SYSTEM_MAL
46a0: 4c 4f 43 0a 20 20 22 53 59 53 54 45 4d 5f 4d 41  LOC.  "SYSTEM_MA
46b0: 4c 4c 4f 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69  LLOC",.#endif.#i
46c0: 66 20 53 51 4c 49 54 45 5f 54 43 4c 0a 20 20 22  f SQLITE_TCL.  "
46d0: 54 43 4c 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  TCL",.#endif.#if
46e0: 64 65 66 20 53 51 4c 49 54 45 5f 54 45 4d 50 5f  def SQLITE_TEMP_
46f0: 53 54 4f 52 45 0a 20 20 22 54 45 4d 50 5f 53 54  STORE.  "TEMP_ST
4700: 4f 52 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  ORE=" CTIMEOPT_V
4710: 41 4c 28 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53  AL(SQLITE_TEMP_S
4720: 54 4f 52 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69  TORE),.#endif.#i
4730: 66 20 53 51 4c 49 54 45 5f 54 45 53 54 0a 20 20  f SQLITE_TEST.  
4740: 22 54 45 53 54 22 2c 0a 23 65 6e 64 69 66 0a 23  "TEST",.#endif.#
4750: 69 66 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54  if defined(SQLIT
4760: 45 5f 54 48 52 45 41 44 53 41 46 45 29 0a 20 20  E_THREADSAFE).  
4770: 22 54 48 52 45 41 44 53 41 46 45 3d 22 20 43 54  "THREADSAFE=" CT
4780: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
4790: 45 5f 54 48 52 45 41 44 53 41 46 45 29 2c 0a 23  E_THREADSAFE),.#
47a0: 65 6c 69 66 20 64 65 66 69 6e 65 64 28 54 48 52  elif defined(THR
47b0: 45 41 44 53 41 46 45 29 0a 20 20 22 54 48 52 45  EADSAFE).  "THRE
47c0: 41 44 53 41 46 45 3d 22 20 43 54 49 4d 45 4f 50  ADSAFE=" CTIMEOP
47d0: 54 5f 56 41 4c 28 54 48 52 45 41 44 53 41 46 45  T_VAL(THREADSAFE
47e0: 29 2c 0a 23 65 6c 73 65 0a 20 20 22 54 48 52 45  ),.#else.  "THRE
47f0: 41 44 53 41 46 45 3d 31 22 2c 0a 23 65 6e 64 69  ADSAFE=1",.#endi
4800: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 55 4e 4c  f.#if SQLITE_UNL
4810: 49 4e 4b 5f 41 46 54 45 52 5f 43 4c 4f 53 45 0a  INK_AFTER_CLOSE.
4820: 20 20 22 55 4e 4c 49 4e 4b 5f 41 46 54 45 52 5f    "UNLINK_AFTER_
4830: 43 4c 4f 53 45 22 2c 0a 23 65 6e 64 69 66 0a 23  CLOSE",.#endif.#
4840: 69 66 20 53 51 4c 49 54 45 5f 55 4e 54 45 53 54  if SQLITE_UNTEST
4850: 41 42 4c 45 0a 20 20 22 55 4e 54 45 53 54 41 42  ABLE.  "UNTESTAB
4860: 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  LE",.#endif.#if 
4870: 53 51 4c 49 54 45 5f 55 53 45 52 5f 41 55 54 48  SQLITE_USER_AUTH
4880: 45 4e 54 49 43 41 54 49 4f 4e 0a 20 20 22 55 53  ENTICATION.  "US
4890: 45 52 5f 41 55 54 48 45 4e 54 49 43 41 54 49 4f  ER_AUTHENTICATIO
48a0: 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  N",.#endif.#if S
48b0: 51 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f 43 41  QLITE_USE_ALLOCA
48c0: 0a 20 20 22 55 53 45 5f 41 4c 4c 4f 43 41 22 2c  .  "USE_ALLOCA",
48d0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
48e0: 54 45 5f 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41  TE_USE_FCNTL_TRA
48f0: 43 45 0a 20 20 22 55 53 45 5f 46 43 4e 54 4c 5f  CE.  "USE_FCNTL_
4900: 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23  TRACE",.#endif.#
4910: 69 66 20 53 51 4c 49 54 45 5f 55 53 45 5f 55 52  if SQLITE_USE_UR
4920: 49 0a 20 20 22 55 53 45 5f 55 52 49 22 2c 0a 23  I.  "USE_URI",.#
4930: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
4940: 5f 56 44 42 45 5f 43 4f 56 45 52 41 47 45 0a 20  _VDBE_COVERAGE. 
4950: 20 22 56 44 42 45 5f 43 4f 56 45 52 41 47 45 22   "VDBE_COVERAGE"
4960: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4970: 49 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43  ITE_WIN32_MALLOC
4980: 0a 20 20 22 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43  .  "WIN32_MALLOC
4990: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
49a0: 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f 43  LITE_ZERO_MALLOC
49b0: 0a 20 20 22 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 22  .  "ZERO_MALLOC"
49c0: 2c 0a 23 65 6e 64 69 66 0a 2f 2a 20 0a 2a 2a 20  ,.#endif./* .** 
49d0: 45 4e 44 20 43 4f 44 45 20 47 45 4e 45 52 41 54  END CODE GENERAT
49e0: 45 44 20 42 59 20 74 6f 6f 6c 2f 6d 6b 63 74 69  ED BY tool/mkcti
49f0: 6d 65 2e 74 63 6c 20 0a 2a 2f 0a 7d 3b 0a 0a 53  me.tcl .*/.};..S
4a00: 51 4c 49 54 45 5f 50 52 49 56 41 54 45 20 63 6f  QLITE_PRIVATE co
4a10: 6e 73 74 20 63 68 61 72 20 2a 2a 73 71 6c 69 74  nst char **sqlit
4a20: 65 33 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73  e3CompileOptions
4a30: 28 69 6e 74 20 2a 70 6e 4f 70 74 29 7b 0a 20 20  (int *pnOpt){.  
4a40: 2a 70 6e 4f 70 74 20 3d 20 73 69 7a 65 6f 66 28  *pnOpt = sizeof(
4a50: 73 71 6c 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65  sqlite3azCompile
4a60: 4f 70 74 29 20 2f 20 73 69 7a 65 6f 66 28 73 71  Opt) / sizeof(sq
4a70: 6c 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70  lite3azCompileOp
4a80: 74 5b 30 5d 29 3b 0a 20 20 72 65 74 75 72 6e 20  t[0]);.  return 
4a90: 28 63 6f 6e 73 74 20 63 68 61 72 2a 2a 29 73 71  (const char**)sq
4aa0: 6c 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70  lite3azCompileOp
4ab0: 74 3b 0a 7d 0a 0a 23 65 6e 64 69 66 20 2f 2a 20  t;.}..#endif /* 
4ac0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50  SQLITE_OMIT_COMP
4ad0: 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 20  ILEOPTION_DIAGS 
4ae0: 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  */../***********
4af0: 2a 2a 2a 20 45 6e 64 20 6f 66 20 63 74 69 6d 65  *** End of ctime
4b00: 2e 63 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .c *************
4b10: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b30: 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  **/./***********
4b40: 2a 2a 2a 20 42 65 67 69 6e 20 66 69 6c 65 20 73  *** Begin file s
4b50: 71 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a  qliteInt.h *****
4b60: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b80: 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30 30 31 20 53  **/./*.** 2001 S
4b90: 65 70 74 65 6d 62 65 72 20 31 35 0a 2a 2a 0a 2a  eptember 15.**.*
4ba0: 2a 20 54 68 65 20 61 75 74 68 6f 72 20 64 69 73  * The author dis
4bb0: 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74  claims copyright
4bc0: 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20   to this source 
4bd0: 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20  code.  In place 
4be0: 6f 66 0a 2a 2a 20 61 20 6c 65 67 61 6c 20 6e 6f  of.** a legal no
4bf0: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
4c00: 62 6c 65 73 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20  blessing:.**.** 
4c10: 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f     May you do go
4c20: 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e  od and not evil.
4c30: 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 66  .**    May you f
4c40: 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20  ind forgiveness 
4c50: 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64  for yourself and
4c60: 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e   forgive others.
4c70: 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 73  .**    May you s
4c80: 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76  hare freely, nev
4c90: 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74  er taking more t
4ca0: 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 2a 2a  han you give..**
4cb0: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .***************
4cc0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4cd0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ce0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4cf0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 49 6e  **********.** In
4d00: 74 65 72 6e 61 6c 20 69 6e 74 65 72 66 61 63 65  ternal interface
4d10: 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 66 6f 72   definitions for
4d20: 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2f 0a 23   SQLite..**.*/.#
4d30: 69 66 6e 64 65 66 20 53 51 4c 49 54 45 49 4e 54  ifndef SQLITEINT
4d40: 5f 48 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  _H.#define SQLIT
4d50: 45 49 4e 54 5f 48 0a 0a 2f 2a 20 53 70 65 63 69  EINT_H../* Speci
4d60: 61 6c 20 43 6f 6d 6d 65 6e 74 73 3a 0a 2a 2a 0a  al Comments:.**.
4d70: 2a 2a 20 53 6f 6d 65 20 63 6f 6d 6d 65 6e 74 73  ** Some comments
4d80: 20 68 61 76 65 20 73 70 65 63 69 61 6c 20 6d 65   have special me
4d90: 61 6e 69 6e 67 20 74 6f 20 74 68 65 20 74 6f 6f  aning to the too
4da0: 6c 73 20 74 68 61 74 20 6d 65 61 73 75 72 65 20  ls that measure 
4db0: 74 65 73 74 0a 2a 2a 20 63 6f 76 65 72 61 67 65  test.** coverage
4dc0: 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4e 4f 5f 54 45  :.**.**    NO_TE
4dd0: 53 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ST              
4de0: 20 20 20 20 20 20 20 2d 20 54 68 65 20 62 72 61         - The bra
4df0: 6e 63 68 65 73 20 6f 6e 20 74 68 69 73 20 6c 69  nches on this li
4e00: 6e 65 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 20 20  ne are not.**   
4e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
4e30: 65 61 73 75 72 65 64 20 62 79 20 62 72 61 6e 63  easured by branc
4e40: 68 20 63 6f 76 65 72 61 67 65 2e 20 20 54 68 69  h coverage.  Thi
4e50: 73 20 69 73 0a 2a 2a 20 20 20 20 20 20 20 20 20  s is.**         
4e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e70: 20 20 20 20 20 20 20 20 20 75 73 65 64 20 6f 6e           used on
4e80: 20 6c 69 6e 65 73 20 6f 66 20 63 6f 64 65 20 74   lines of code t
4e90: 68 61 74 20 61 63 74 75 61 6c 6c 79 0a 2a 2a 20  hat actually.** 
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ec0: 20 69 6d 70 6c 65 6d 65 6e 74 20 70 61 72 74 73   implement parts
4ed0: 20 6f 66 20 63 6f 76 65 72 61 67 65 20 74 65 73   of coverage tes
4ee0: 74 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 4f  ting..**.**    O
4ef0: 50 54 49 4d 49 5a 41 54 49 4f 4e 2d 49 46 2d 54  PTIMIZATION-IF-T
4f00: 52 55 45 20 20 20 20 20 20 20 20 2d 20 54 68 69  RUE        - Thi
4f10: 73 20 62 72 61 6e 63 68 20 69 73 20 61 6c 6c 6f  s branch is allo
4f20: 77 65 64 20 74 6f 20 61 6c 77 61 79 20 62 65 20  wed to alway be 
4f30: 66 61 6c 73 65 0a 2a 2a 20 20 20 20 20 20 20 20  false.**        
4f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f50: 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 74 68            and th
4f60: 65 20 63 6f 72 72 65 63 74 20 61 6e 73 77 65 72  e correct answer
4f70: 20 69 73 20 73 74 69 6c 6c 20 6f 62 74 61 69 6e   is still obtain
4f80: 65 64 2c 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  ed,.**          
4f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4fa0: 20 20 20 20 20 20 20 20 74 68 6f 75 67 68 20 70          though p
4fb0: 65 72 68 61 70 73 20 6d 6f 72 65 20 73 6c 6f 77  erhaps more slow
4fc0: 6c 79 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 4f 50 54  ly..**.**    OPT
4fd0: 49 4d 49 5a 41 54 49 4f 4e 2d 49 46 2d 46 41 4c  IMIZATION-IF-FAL
4fe0: 53 45 20 20 20 20 20 20 20 2d 20 54 68 69 73 20  SE       - This 
4ff0: 62 72 61 6e 63 68 20 69 73 20 61 6c 6c 6f 77 65  branch is allowe
5000: 64 20 74 6f 20 61 6c 77 61 79 20 62 65 20 74 72  d to alway be tr
5010: 75 65 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20  ue.**           
5020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5030: 20 20 20 20 20 20 20 61 6e 64 20 74 68 65 20 63         and the c
5040: 6f 72 72 65 63 74 20 61 6e 73 77 65 72 20 69 73  orrect answer is
5050: 20 73 74 69 6c 6c 20 6f 62 74 61 69 6e 65 64 2c   still obtained,
5060: 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  .**             
5070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5080: 20 20 20 20 20 74 68 6f 75 67 68 20 70 65 72 68       though perh
5090: 61 70 73 20 6d 6f 72 65 20 73 6c 6f 77 6c 79 2e  aps more slowly.
50a0: 0a 2a 2a 0a 2a 2a 20 20 20 20 50 52 45 56 45 4e  .**.**    PREVEN
50b0: 54 53 2d 48 41 52 4d 4c 45 53 53 2d 4f 56 45 52  TS-HARMLESS-OVER
50c0: 52 45 41 44 20 20 2d 20 54 68 69 73 20 62 72 61  READ  - This bra
50d0: 6e 63 68 20 70 72 65 76 65 6e 74 73 20 61 20 62  nch prevents a b
50e0: 75 66 66 65 72 20 6f 76 65 72 72 65 61 64 0a 2a  uffer overread.*
50f0: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
5100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5110: 20 20 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65     that would be
5120: 20 68 61 72 6d 6c 65 73 73 20 61 6e 64 20 75 6e   harmless and un
5130: 64 65 74 65 63 74 61 62 6c 65 0a 2a 2a 20 20 20  detectable.**   
5140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
5160: 66 20 69 74 20 64 69 64 20 6f 63 63 75 72 2e 20  f it did occur. 
5170: 20 0a 2a 2a 0a 2a 2a 20 49 6e 20 61 6c 6c 20 63   .**.** In all c
5180: 61 73 65 73 2c 20 74 68 65 20 73 70 65 63 69 61  ases, the specia
5190: 6c 20 63 6f 6d 6d 65 6e 74 20 6d 75 73 74 20 62  l comment must b
51a0: 65 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 74 68  e enclosed in th
51b0: 65 20 75 73 75 61 6c 0a 2a 2a 20 73 6c 61 73 68  e usual.** slash
51c0: 2d 61 73 74 65 72 69 73 6b 2e 2e 2e 61 73 74 65  -asterisk...aste
51d0: 72 69 73 6b 2d 73 6c 61 73 68 20 63 6f 6d 6d 65  risk-slash comme
51e0: 6e 74 20 6d 61 72 6b 73 2c 20 77 69 74 68 20 6e  nt marks, with n
51f0: 6f 20 73 70 61 63 65 73 20 62 65 74 77 65 65 6e  o spaces between
5200: 20 74 68 65 20 0a 2a 2a 20 61 73 74 65 72 69 73   the .** asteris
5210: 6b 73 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 65  ks and the comme
5220: 6e 74 20 74 65 78 74 2e 0a 2a 2f 0a 0a 2f 2a 0a  nt text..*/../*.
5230: 2a 2a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65  ** Make sure the
5240: 20 54 63 6c 20 63 61 6c 6c 69 6e 67 20 63 6f 6e   Tcl calling con
5250: 76 65 6e 74 69 6f 6e 20 6d 61 63 72 6f 20 69 73  vention macro is
5260: 20 64 65 66 69 6e 65 64 2e 20 20 54 68 69 73 20   defined.  This 
5270: 6d 61 63 72 6f 20 69 73 0a 2a 2a 20 6f 6e 6c 79  macro is.** only
5280: 20 75 73 65 64 20 62 79 20 74 65 73 74 20 63 6f   used by test co
5290: 64 65 20 61 6e 64 20 54 63 6c 20 69 6e 74 65 67  de and Tcl integ
52a0: 72 61 74 69 6f 6e 20 63 6f 64 65 2e 0a 2a 2f 0a  ration code..*/.
52b0: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 54  #ifndef SQLITE_T
52c0: 43 4c 41 50 49 0a 23 20 20 64 65 66 69 6e 65 20  CLAPI.#  define 
52d0: 53 51 4c 49 54 45 5f 54 43 4c 41 50 49 0a 23 65  SQLITE_TCLAPI.#e
52e0: 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 49 6e 63 6c  ndif../*.** Incl
52f0: 75 64 65 20 74 68 65 20 68 65 61 64 65 72 20 66  ude the header f
5300: 69 6c 65 20 75 73 65 64 20 74 6f 20 63 75 73 74  ile used to cust
5310: 6f 6d 69 7a 65 20 74 68 65 20 63 6f 6d 70 69 6c  omize the compil
5320: 65 72 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 4d  er options for M
5330: 53 56 43 2e 0a 2a 2a 20 54 68 69 73 20 73 68 6f  SVC..** This sho
5340: 75 6c 64 20 62 65 20 64 6f 6e 65 20 66 69 72 73  uld be done firs
5350: 74 20 73 6f 20 74 68 61 74 20 69 74 20 63 61 6e  t so that it can
5360: 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 70 72   successfully pr
5370: 65 76 65 6e 74 20 73 70 75 72 69 6f 75 73 0a 2a  event spurious.*
5380: 2a 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69  * compiler warni
5390: 6e 67 73 20 64 75 65 20 74 6f 20 73 75 62 73 65  ngs due to subse
53a0: 71 75 65 6e 74 20 63 6f 6e 74 65 6e 74 20 69 6e  quent content in
53b0: 20 74 68 69 73 20 66 69 6c 65 20 61 6e 64 20 6f   this file and o
53c0: 74 68 65 72 20 66 69 6c 65 73 0a 2a 2a 20 74 68  ther files.** th
53d0: 61 74 20 61 72 65 20 69 6e 63 6c 75 64 65 64 20  at are included 
53e0: 62 79 20 74 68 69 73 20 66 69 6c 65 2e 0a 2a 2f  by this file..*/
53f0: 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ./**************
5400: 20 49 6e 63 6c 75 64 65 20 6d 73 76 63 2e 68 20   Include msvc.h 
5410: 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
5420: 20 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a   sqliteInt.h ***
5430: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f  ***************/
5440: 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ./**************
5450: 20 42 65 67 69 6e 20 66 69 6c 65 20 6d 73 76 63   Begin file msvc
5460: 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .h *************
5470: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5480: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f  ***************/
5490: 0a 2f 2a 0a 2a 2a 20 32 30 31 35 20 4a 61 6e 75  ./*.** 2015 Janu
54a0: 61 72 79 20 31 32 0a 2a 2a 0a 2a 2a 20 54 68 65  ary 12.**.** The
54b0: 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d   author disclaim
54c0: 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74  s copyright to t
54d0: 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e  his source code.
54e0: 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a    In place of.**
54f0: 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c   a legal notice,
5500: 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73 73   here is a bless
5510: 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61  ing:.**.**    Ma
5520: 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e  y you do good an
5530: 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20  d not evil..**  
5540: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
5550: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
5560: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
5570: 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20  ive others..**  
5580: 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20    May you share 
5590: 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61  freely, never ta
55a0: 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79  king more than y
55b0: 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a  ou give..**.****
55c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5600: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a  **********.**.**
5610: 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61   This file conta
5620: 69 6e 73 20 63 6f 64 65 20 74 68 61 74 20 69 73  ins code that is
5630: 20 73 70 65 63 69 66 69 63 20 74 6f 20 4d 53 56   specific to MSV
5640: 43 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51  C..*/.#ifndef SQ
5650: 4c 49 54 45 5f 4d 53 56 43 5f 48 0a 23 64 65 66  LITE_MSVC_H.#def
5660: 69 6e 65 20 53 51 4c 49 54 45 5f 4d 53 56 43 5f  ine SQLITE_MSVC_
5670: 48 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  H..#if defined(_
5680: 4d 53 43 5f 56 45 52 29 0a 23 70 72 61 67 6d 61  MSC_VER).#pragma
5690: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
56a0: 20 3a 20 34 30 35 34 29 0a 23 70 72 61 67 6d 61   : 4054).#pragma
56b0: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
56c0: 20 3a 20 34 30 35 35 29 0a 23 70 72 61 67 6d 61   : 4055).#pragma
56d0: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
56e0: 20 3a 20 34 31 30 30 29 0a 23 70 72 61 67 6d 61   : 4100).#pragma
56f0: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
5700: 20 3a 20 34 31 32 37 29 0a 23 70 72 61 67 6d 61   : 4127).#pragma
5710: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
5720: 20 3a 20 34 31 33 30 29 0a 23 70 72 61 67 6d 61   : 4130).#pragma
5730: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
5740: 20 3a 20 34 31 35 32 29 0a 23 70 72 61 67 6d 61   : 4152).#pragma
5750: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
5760: 20 3a 20 34 31 38 39 29 0a 23 70 72 61 67 6d 61   : 4189).#pragma
5770: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
5780: 20 3a 20 34 32 30 36 29 0a 23 70 72 61 67 6d 61   : 4206).#pragma
5790: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
57a0: 20 3a 20 34 32 31 30 29 0a 23 70 72 61 67 6d 61   : 4210).#pragma
57b0: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
57c0: 20 3a 20 34 32 33 32 29 0a 23 70 72 61 67 6d 61   : 4232).#pragma
57d0: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
57e0: 20 3a 20 34 32 34 34 29 0a 23 70 72 61 67 6d 61   : 4244).#pragma
57f0: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
5800: 20 3a 20 34 33 30 35 29 0a 23 70 72 61 67 6d 61   : 4305).#pragma
5810: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
5820: 20 3a 20 34 33 30 36 29 0a 23 70 72 61 67 6d 61   : 4306).#pragma
5830: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
5840: 20 3a 20 34 37 30 32 29 0a 23 70 72 61 67 6d 61   : 4702).#pragma
5850: 20 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65   warning(disable
5860: 20 3a 20 34 37 30 36 29 0a 23 65 6e 64 69 66 20   : 4706).#endif 
5870: 2f 2a 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f  /* defined(_MSC_
5880: 56 45 52 29 20 2a 2f 0a 0a 23 69 66 20 64 65 66  VER) */..#if def
5890: 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 26  ined(_MSC_VER) &
58a0: 26 20 21 64 65 66 69 6e 65 64 28 5f 57 49 4e 36  & !defined(_WIN6
58b0: 34 29 0a 23 75 6e 64 65 66 20 53 51 4c 49 54 45  4).#undef SQLITE
58c0: 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44 5f  _4_BYTE_ALIGNED_
58d0: 4d 41 4c 4c 4f 43 0a 23 64 65 66 69 6e 65 20 53  MALLOC.#define S
58e0: 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49  QLITE_4_BYTE_ALI
58f0: 47 4e 45 44 5f 4d 41 4c 4c 4f 43 0a 23 65 6e 64  GNED_MALLOC.#end
5900: 69 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 5f 4d  if /* defined(_M
5910: 53 43 5f 56 45 52 29 20 26 26 20 21 64 65 66 69  SC_VER) && !defi
5920: 6e 65 64 28 5f 57 49 4e 36 34 29 20 2a 2f 0a 0a  ned(_WIN64) */..
5930: 23 65 6e 64 69 66 20 2f 2a 20 53 51 4c 49 54 45  #endif /* SQLITE
5940: 5f 4d 53 56 43 5f 48 20 2a 2f 0a 0a 2f 2a 2a 2a  _MSVC_H */../***
5950: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 45 6e 64 20  *********** End 
5960: 6f 66 20 6d 73 76 63 2e 68 20 2a 2a 2a 2a 2a 2a  of msvc.h ******
5970: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5980: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5990: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a  **********/./***
59a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 43 6f 6e 74  *********** Cont
59b0: 69 6e 75 69 6e 67 20 77 68 65 72 65 20 77 65 20  inuing where we 
59c0: 6c 65 66 74 20 6f 66 66 20 69 6e 20 73 71 6c 69  left off in sqli
59d0: 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a  teInt.h ********
59e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a  **********/../*.
59f0: 2a 2a 20 53 70 65 63 69 61 6c 20 73 65 74 75 70  ** Special setup
5a00: 20 66 6f 72 20 56 78 57 6f 72 6b 73 0a 2a 2f 0a   for VxWorks.*/.
5a10: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
5a20: 49 6e 63 6c 75 64 65 20 76 78 77 6f 72 6b 73 2e  Include vxworks.
5a30: 68 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  h in the middle 
5a40: 6f 66 20 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a  of sqliteInt.h *
5a50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
5a60: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
5a70: 42 65 67 69 6e 20 66 69 6c 65 20 76 78 77 6f 72  Begin file vxwor
5a80: 6b 73 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ks.h ***********
5a90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5aa0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
5ab0: 2f 2a 0a 2a 2a 20 32 30 31 35 2d 30 33 2d 30 32  /*.** 2015-03-02
5ac0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f  .**.** The autho
5ad0: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
5ae0: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
5af0: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
5b00: 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67  lace of.** a leg
5b10: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
5b20: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a  is a blessing:.*
5b30: 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20  *.**    May you 
5b40: 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20  do good and not 
5b50: 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  evil..**    May 
5b60: 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65  you find forgive
5b70: 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c  ness for yoursel
5b80: 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74  f and forgive ot
5b90: 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  hers..**    May 
5ba0: 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c 79  you share freely
5bb0: 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d  , never taking m
5bc0: 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76  ore than you giv
5bd0: 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  e..**.**********
5be0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5bf0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5c00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5c10: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5c20: 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20  ****.**.** This 
5c30: 66 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 63 6f  file contains co
5c40: 64 65 20 74 68 61 74 20 69 73 20 73 70 65 63 69  de that is speci
5c50: 66 69 63 20 74 6f 20 57 69 6e 64 20 52 69 76 65  fic to Wind Rive
5c60: 72 27 73 20 56 78 57 6f 72 6b 73 0a 2a 2f 0a 23  r's VxWorks.*/.#
5c70: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 52 54 50  if defined(__RTP
5c80: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
5c90: 57 52 53 5f 4b 45 52 4e 45 4c 29 0a 2f 2a 20 54  WRS_KERNEL)./* T
5ca0: 68 69 73 20 69 73 20 56 78 57 6f 72 6b 73 2e 20  his is VxWorks. 
5cb0: 20 53 65 74 20 75 70 20 74 68 69 6e 67 73 20 73   Set up things s
5cc0: 70 65 63 69 61 6c 6c 79 20 66 6f 72 20 74 68 61  pecially for tha
5cd0: 74 20 4f 53 0a 2a 2f 0a 23 69 6e 63 6c 75 64 65  t OS.*/.#include
5ce0: 20 3c 76 78 57 6f 72 6b 73 2e 68 3e 0a 23 69 6e   <vxWorks.h>.#in
5cf0: 63 6c 75 64 65 20 3c 70 74 68 72 65 61 64 2e 68  clude <pthread.h
5d00: 3e 20 20 2f 2a 20 61 6d 61 6c 67 61 6d 61 74 6f  >  /* amalgamato
5d10: 72 3a 20 64 6f 6e 74 63 61 63 68 65 20 2a 2f 0a  r: dontcache */.
5d20: 23 64 65 66 69 6e 65 20 4f 53 5f 56 58 57 4f 52  #define OS_VXWOR
5d30: 4b 53 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c  KS 1.#define SQL
5d40: 49 54 45 5f 4f 53 5f 4f 54 48 45 52 20 30 0a 23  ITE_OS_OTHER 0.#
5d50: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 48 4f  define SQLITE_HO
5d60: 4d 45 47 52 4f 57 4e 5f 52 45 43 55 52 53 49 56  MEGROWN_RECURSIV
5d70: 45 5f 4d 55 54 45 58 20 31 0a 23 64 65 66 69 6e  E_MUTEX 1.#defin
5d80: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f  e SQLITE_OMIT_LO
5d90: 41 44 5f 45 58 54 45 4e 53 49 4f 4e 20 31 0a 23  AD_EXTENSION 1.#
5da0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 4e  define SQLITE_EN
5db0: 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59  ABLE_LOCKING_STY
5dc0: 4c 45 20 30 0a 23 64 65 66 69 6e 65 20 48 41 56  LE 0.#define HAV
5dd0: 45 5f 55 54 49 4d 45 20 31 0a 23 65 6c 73 65 0a  E_UTIME 1.#else.
5de0: 2f 2a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 56  /* This is not V
5df0: 78 57 6f 72 6b 73 2e 20 2a 2f 0a 23 64 65 66 69  xWorks. */.#defi
5e00: 6e 65 20 4f 53 5f 56 58 57 4f 52 4b 53 20 30 0a  ne OS_VXWORKS 0.
5e10: 23 64 65 66 69 6e 65 20 48 41 56 45 5f 46 43 48  #define HAVE_FCH
5e20: 4f 57 4e 20 31 0a 23 64 65 66 69 6e 65 20 48 41  OWN 1.#define HA
5e30: 56 45 5f 52 45 41 44 4c 49 4e 4b 20 31 0a 23 64  VE_READLINK 1.#d
5e40: 65 66 69 6e 65 20 48 41 56 45 5f 4c 53 54 41 54  efine HAVE_LSTAT
5e50: 20 31 0a 23 65 6e 64 69 66 20 2f 2a 20 64 65 66   1.#endif /* def
5e60: 69 6e 65 64 28 5f 57 52 53 5f 4b 45 52 4e 45 4c  ined(_WRS_KERNEL
5e70: 29 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a  ) */../*********
5e80: 2a 2a 2a 2a 2a 20 45 6e 64 20 6f 66 20 76 78 77  ***** End of vxw
5e90: 6f 72 6b 73 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  orks.h *********
5ea0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5eb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5ec0: 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****/./*********
5ed0: 2a 2a 2a 2a 2a 20 43 6f 6e 74 69 6e 75 69 6e 67  ***** Continuing
5ee0: 20 77 68 65 72 65 20 77 65 20 6c 65 66 74 20 6f   where we left o
5ef0: 66 66 20 69 6e 20 73 71 6c 69 74 65 49 6e 74 2e  ff in sqliteInt.
5f00: 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  h **************
5f10: 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  ****/../*.** The
5f20: 73 65 20 23 64 65 66 69 6e 65 73 20 73 68 6f 75  se #defines shou
5f30: 6c 64 20 65 6e 61 62 6c 65 20 3e 32 47 42 20 66  ld enable >2GB f
5f40: 69 6c 65 20 73 75 70 70 6f 72 74 20 6f 6e 20 50  ile support on P
5f50: 4f 53 49 58 20 69 66 20 74 68 65 0a 2a 2a 20 75  OSIX if the.** u
5f60: 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61 74  nderlying operat
5f70: 69 6e 67 20 73 79 73 74 65 6d 20 73 75 70 70 6f  ing system suppo
5f80: 72 74 73 20 69 74 2e 20 20 49 66 20 74 68 65 20  rts it.  If the 
5f90: 4f 53 20 6c 61 63 6b 73 0a 2a 2a 20 6c 61 72 67  OS lacks.** larg
5fa0: 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74 2c 20  e file support, 
5fb0: 6f 72 20 69 66 20 74 68 65 20 4f 53 20 69 73 20  or if the OS is 
5fc0: 77 69 6e 64 6f 77 73 2c 20 74 68 65 73 65 20 73  windows, these s
5fd0: 68 6f 75 6c 64 20 62 65 20 6e 6f 2d 6f 70 73 2e  hould be no-ops.
5fe0: 0a 2a 2a 0a 2a 2a 20 54 69 63 6b 65 74 20 23 32  .**.** Ticket #2
5ff0: 37 33 39 3a 20 20 54 68 65 20 5f 4c 41 52 47 45  739:  The _LARGE
6000: 46 49 4c 45 5f 53 4f 55 52 43 45 20 6d 61 63 72  FILE_SOURCE macr
6010: 6f 20 6d 75 73 74 20 61 70 70 65 61 72 20 62 65  o must appear be
6020: 66 6f 72 65 20 61 6e 79 0a 2a 2a 20 73 79 73 74  fore any.** syst
6030: 65 6d 20 23 69 6e 63 6c 75 64 65 73 2e 20 20 48  em #includes.  H
6040: 65 6e 63 65 2c 20 74 68 69 73 20 62 6c 6f 63 6b  ence, this block
6050: 20 6f 66 20 63 6f 64 65 20 6d 75 73 74 20 62 65   of code must be
6060: 20 74 68 65 20 76 65 72 79 20 66 69 72 73 74 0a   the very first.
6070: 2a 2a 20 63 6f 64 65 20 69 6e 20 61 6c 6c 20 73  ** code in all s
6080: 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 2a 2a 0a  ource files..**.
6090: 2a 2a 20 4c 61 72 67 65 20 66 69 6c 65 20 73 75  ** Large file su
60a0: 70 70 6f 72 74 20 63 61 6e 20 62 65 20 64 69 73  pport can be dis
60b0: 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20  abled using the 
60c0: 2d 44 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  -DSQLITE_DISABLE
60d0: 5f 4c 46 53 20 73 77 69 74 63 68 0a 2a 2a 20 6f  _LFS switch.** o
60e0: 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 63  n the compiler c
60f0: 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 20 20 54 68  ommand line.  Th
6100: 69 73 20 69 73 20 6e 65 63 65 73 73 61 72 79 20  is is necessary 
6110: 69 66 20 79 6f 75 20 61 72 65 20 63 6f 6d 70 69  if you are compi
6120: 6c 69 6e 67 0a 2a 2a 20 6f 6e 20 61 20 72 65 63  ling.** on a rec
6130: 65 6e 74 20 6d 61 63 68 69 6e 65 20 28 65 78 3a  ent machine (ex:
6140: 20 52 65 64 20 48 61 74 20 37 2e 32 29 20 62 75   Red Hat 7.2) bu
6150: 74 20 79 6f 75 20 77 61 6e 74 20 79 6f 75 72 20  t you want your 
6160: 63 6f 64 65 20 74 6f 20 77 6f 72 6b 0a 2a 2a 20  code to work.** 
6170: 6f 6e 20 61 6e 20 6f 6c 64 65 72 20 6d 61 63 68  on an older mach
6180: 69 6e 65 20 28 65 78 3a 20 52 65 64 20 48 61 74  ine (ex: Red Hat
6190: 20 36 2e 30 29 2e 20 20 49 66 20 79 6f 75 20 63   6.0).  If you c
61a0: 6f 6d 70 69 6c 65 20 6f 6e 20 52 65 64 20 48 61  ompile on Red Ha
61b0: 74 20 37 2e 32 0a 2a 2a 20 77 69 74 68 6f 75 74  t 7.2.** without
61c0: 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 4c 46   this option, LF
61d0: 53 20 69 73 20 65 6e 61 62 6c 65 2e 20 20 42 75  S is enable.  Bu
61e0: 74 20 4c 46 53 20 64 6f 65 73 20 6e 6f 74 20 65  t LFS does not e
61f0: 78 69 73 74 20 69 6e 20 74 68 65 20 6b 65 72 6e  xist in the kern
6200: 65 6c 0a 2a 2a 20 69 6e 20 52 65 64 20 48 61 74  el.** in Red Hat
6210: 20 36 2e 30 2c 20 73 6f 20 74 68 65 20 63 6f 64   6.0, so the cod
6220: 65 20 77 6f 6e 27 74 20 77 6f 72 6b 2e 20 20 48  e won't work.  H
6230: 65 6e 63 65 2c 20 66 6f 72 20 6d 61 78 69 6d 75  ence, for maximu
6240: 6d 20 62 69 6e 61 72 79 0a 2a 2a 20 70 6f 72 74  m binary.** port
6250: 61 62 69 6c 69 74 79 20 79 6f 75 20 73 68 6f 75  ability you shou
6260: 6c 64 20 6f 6d 69 74 20 4c 46 53 2e 0a 2a 2a 0a  ld omit LFS..**.
6270: 2a 2a 20 54 68 65 20 70 72 65 76 69 6f 75 73 20  ** The previous 
6280: 70 61 72 61 67 72 61 70 68 20 77 61 73 20 77 72  paragraph was wr
6290: 69 74 74 65 6e 20 69 6e 20 32 30 30 35 2e 20 20  itten in 2005.  
62a0: 28 54 68 69 73 20 70 61 72 61 67 72 61 70 68 20  (This paragraph 
62b0: 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20 6f 6e  is written.** on
62c0: 20 32 30 30 38 2d 31 31 2d 32 38 2e 29 20 54 68   2008-11-28.) Th
62d0: 65 73 65 20 64 61 79 73 2c 20 61 6c 6c 20 4c 69  ese days, all Li
62e0: 6e 75 78 20 6b 65 72 6e 65 6c 73 20 73 75 70 70  nux kernels supp
62f0: 6f 72 74 20 6c 61 72 67 65 20 66 69 6c 65 73 2c  ort large files,
6300: 20 73 6f 0a 2a 2a 20 79 6f 75 20 73 68 6f 75 6c   so.** you shoul
6310: 64 20 70 72 6f 62 61 62 6c 79 20 6c 65 61 76 65  d probably leave
6320: 20 4c 46 53 20 65 6e 61 62 6c 65 64 2e 20 20 42   LFS enabled.  B
6330: 75 74 20 73 6f 6d 65 20 65 6d 62 65 64 64 65 64  ut some embedded
6340: 20 70 6c 61 74 66 6f 72 6d 73 20 6d 69 67 68 74   platforms might
6350: 0a 2a 2a 20 6c 61 63 6b 20 4c 46 53 20 69 6e 20  .** lack LFS in 
6360: 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 53  which case the S
6370: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46  QLITE_DISABLE_LF
6380: 53 20 6d 61 63 72 6f 20 6d 69 67 68 74 20 73 74  S macro might st
6390: 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2e 0a 2a  ill be useful..*
63a0: 2a 0a 2a 2a 20 53 69 6d 69 6c 61 72 20 69 73 20  *.** Similar is 
63b0: 74 72 75 65 20 66 6f 72 20 4d 61 63 20 4f 53 20  true for Mac OS 
63c0: 58 2e 20 20 4c 46 53 20 69 73 20 6f 6e 6c 79 20  X.  LFS is only 
63d0: 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 4d 61 63  supported on Mac
63e0: 20 4f 53 20 58 20 39 20 61 6e 64 20 6c 61 74 65   OS X 9 and late
63f0: 72 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51  r..*/.#ifndef SQ
6400: 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53  LITE_DISABLE_LFS
6410: 0a 23 20 64 65 66 69 6e 65 20 5f 4c 41 52 47 45  .# define _LARGE
6420: 5f 46 49 4c 45 20 20 20 20 20 20 20 31 0a 23 20  _FILE       1.# 
6430: 69 66 6e 64 65 66 20 5f 46 49 4c 45 5f 4f 46 46  ifndef _FILE_OFF
6440: 53 45 54 5f 42 49 54 53 0a 23 20 20 20 64 65 66  SET_BITS.#   def
6450: 69 6e 65 20 5f 46 49 4c 45 5f 4f 46 46 53 45 54  ine _FILE_OFFSET
6460: 5f 42 49 54 53 20 36 34 0a 23 20 65 6e 64 69 66  _BITS 64.# endif
6470: 0a 23 20 64 65 66 69 6e 65 20 5f 4c 41 52 47 45  .# define _LARGE
6480: 46 49 4c 45 5f 53 4f 55 52 43 45 20 31 0a 23 65  FILE_SOURCE 1.#e
6490: 6e 64 69 66 0a 0a 2f 2a 20 54 68 65 20 47 43 43  ndif../* The GCC
64a0: 5f 56 45 52 53 49 4f 4e 20 61 6e 64 20 4d 53 56  _VERSION and MSV
64b0: 43 5f 56 45 52 53 49 4f 4e 20 6d 61 63 72 6f 73  C_VERSION macros
64c0: 20 61 72 65 20 75 73 65 64 20 74 6f 0a 2a 2a 20   are used to.** 
64d0: 63 6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 20 69 6e  conditionally in
64e0: 63 6c 75 64 65 20 6f 70 74 69 6d 69 7a 61 74 69  clude optimizati
64f0: 6f 6e 73 20 66 6f 72 20 65 61 63 68 20 6f 66 20  ons for each of 
6500: 74 68 65 73 65 20 63 6f 6d 70 69 6c 65 72 73 2e  these compilers.
6510: 20 20 41 0a 2a 2a 20 76 61 6c 75 65 20 6f 66 20    A.** value of 
6520: 30 20 6d 65 61 6e 73 20 74 68 61 74 20 63 6f 6d  0 means that com
6530: 70 69 6c 65 72 20 69 73 20 6e 6f 74 20 62 65 69  piler is not bei
6540: 6e 67 20 75 73 65 64 2e 20 20 54 68 65 0a 2a 2a  ng used.  The.**
6550: 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f   SQLITE_DISABLE_
6560: 49 4e 54 52 49 4e 53 49 43 20 6d 61 63 72 6f 20  INTRINSIC macro 
6570: 6d 65 61 6e 73 20 64 6f 20 6e 6f 74 20 75 73 65  means do not use
6580: 20 61 6e 79 20 63 6f 6d 70 69 6c 65 72 2d 73 70   any compiler-sp
6590: 65 63 69 66 69 63 0a 2a 2a 20 6f 70 74 69 6d 69  ecific.** optimi
65a0: 7a 61 74 69 6f 6e 73 2c 20 61 6e 64 20 68 65 6e  zations, and hen
65b0: 63 65 20 73 65 74 20 61 6c 6c 20 63 6f 6d 70 69  ce set all compi
65c0: 6c 65 72 20 6d 61 63 72 6f 73 20 74 6f 20 30 0a  ler macros to 0.
65d0: 2a 2a 0a 2a 2a 20 54 68 65 72 65 20 77 61 73 20  **.** There was 
65e0: 6f 6e 63 65 20 61 6c 73 6f 20 61 20 43 4c 41 4e  once also a CLAN
65f0: 47 5f 56 45 52 53 49 4f 4e 20 6d 61 63 72 6f 2e  G_VERSION macro.
6600: 20 20 48 6f 77 65 76 65 72 2c 20 77 65 20 6c 65    However, we le
6610: 61 72 6e 20 74 68 61 74 20 74 68 65 0a 2a 2a 20  arn that the.** 
6620: 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73 20  version numbers 
6630: 69 6e 20 63 6c 61 6e 67 20 61 72 65 20 66 6f 72  in clang are for
6640: 20 22 6d 61 72 6b 65 74 69 6e 67 22 20 6f 6e 6c   "marketing" onl
6650: 79 20 61 6e 64 20 61 72 65 20 69 6e 63 6f 6e 73  y and are incons
6660: 69 73 74 65 6e 74 0a 2a 2a 20 61 6e 64 20 75 6e  istent.** and un
6670: 72 65 6c 69 61 62 6c 65 2e 20 20 46 6f 72 74 75  reliable.  Fortu
6680: 6e 61 74 65 6c 79 2c 20 61 6c 6c 20 76 65 72 73  nately, all vers
6690: 69 6f 6e 73 20 6f 66 20 63 6c 61 6e 67 20 61 6c  ions of clang al
66a0: 73 6f 20 72 65 63 6f 67 6e 69 7a 65 20 74 68 65  so recognize the
66b0: 0a 2a 2a 20 67 63 63 20 76 65 72 73 69 6f 6e 20  .** gcc version 
66c0: 6e 75 6d 62 65 72 73 20 61 6e 64 20 68 61 76 65  numbers and have
66d0: 20 72 65 61 73 6f 6e 61 62 6c 65 20 73 65 74 74   reasonable sett
66e0: 69 6e 67 73 20 66 6f 72 20 67 63 63 20 76 65 72  ings for gcc ver
66f0: 73 69 6f 6e 20 6e 75 6d 62 65 72 73 2c 0a 2a 2a  sion numbers,.**
6700: 20 73 6f 20 74 68 65 20 47 43 43 5f 56 45 52 53   so the GCC_VERS
6710: 49 4f 4e 20 6d 61 63 72 6f 20 77 69 6c 6c 20 62  ION macro will b
6720: 65 20 73 65 74 20 74 6f 20 61 20 63 6f 72 72 65  e set to a corre
6730: 63 74 20 6e 6f 6e 2d 7a 65 72 6f 20 76 61 6c 75  ct non-zero valu
6740: 65 20 65 76 65 6e 0a 2a 2a 20 77 68 65 6e 20 63  e even.** when c
6750: 6f 6d 70 69 6c 69 6e 67 20 77 69 74 68 20 63 6c  ompiling with cl
6760: 61 6e 67 2e 0a 2a 2f 0a 23 69 66 20 64 65 66 69  ang..*/.#if defi
6770: 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26  ned(__GNUC__) &&
6780: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
6790: 5f 44 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53  _DISABLE_INTRINS
67a0: 49 43 29 0a 23 20 64 65 66 69 6e 65 20 47 43 43  IC).# define GCC
67b0: 5f 56 45 52 53 49 4f 4e 20 28 5f 5f 47 4e 55 43  _VERSION (__GNUC
67c0: 5f 5f 2a 31 30 30 30 30 30 30 2b 5f 5f 47 4e 55  __*1000000+__GNU
67d0: 43 5f 4d 49 4e 4f 52 5f 5f 2a 31 30 30 30 2b 5f  C_MINOR__*1000+_
67e0: 5f 47 4e 55 43 5f 50 41 54 43 48 4c 45 56 45 4c  _GNUC_PATCHLEVEL
67f0: 5f 5f 29 0a 23 65 6c 73 65 0a 23 20 64 65 66 69  __).#else.# defi
6800: 6e 65 20 47 43 43 5f 56 45 52 53 49 4f 4e 20 30  ne GCC_VERSION 0
6810: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
6820: 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 26 26  ned(_MSC_VER) &&
6830: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
6840: 5f 44 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53  _DISABLE_INTRINS
6850: 49 43 29 0a 23 20 64 65 66 69 6e 65 20 4d 53 56  IC).# define MSV
6860: 43 5f 56 45 52 53 49 4f 4e 20 5f 4d 53 43 5f 56  C_VERSION _MSC_V
6870: 45 52 0a 23 65 6c 73 65 0a 23 20 64 65 66 69 6e  ER.#else.# defin
6880: 65 20 4d 53 56 43 5f 56 45 52 53 49 4f 4e 20 30  e MSVC_VERSION 0
6890: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 4e 65 65 64  .#endif../* Need
68a0: 65 64 20 66 6f 72 20 76 61 72 69 6f 75 73 20 64  ed for various d
68b0: 65 66 69 6e 69 74 69 6f 6e 73 2e 2e 2e 20 2a 2f  efinitions... */
68c0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 47  .#if defined(__G
68d0: 4e 55 43 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  NUC__) && !defin
68e0: 65 64 28 5f 47 4e 55 5f 53 4f 55 52 43 45 29 0a  ed(_GNU_SOURCE).
68f0: 23 20 64 65 66 69 6e 65 20 5f 47 4e 55 5f 53 4f  # define _GNU_SO
6900: 55 52 43 45 0a 23 65 6e 64 69 66 0a 0a 23 69 66  URCE.#endif..#if
6910: 20 64 65 66 69 6e 65 64 28 5f 5f 4f 70 65 6e 42   defined(__OpenB
6920: 53 44 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  SD__) && !define
6930: 64 28 5f 42 53 44 5f 53 4f 55 52 43 45 29 0a 23  d(_BSD_SOURCE).#
6940: 20 64 65 66 69 6e 65 20 5f 42 53 44 5f 53 4f 55   define _BSD_SOU
6950: 52 43 45 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a  RCE.#endif../*.*
6960: 2a 20 46 6f 72 20 4d 69 6e 47 57 2c 20 63 68 65  * For MinGW, che
6970: 63 6b 20 74 6f 20 73 65 65 20 69 66 20 77 65 20  ck to see if we 
6980: 63 61 6e 20 69 6e 63 6c 75 64 65 20 74 68 65 20  can include the 
6990: 68 65 61 64 65 72 20 66 69 6c 65 20 63 6f 6e 74  header file cont
69a0: 61 69 6e 69 6e 67 20 69 74 73 0a 2a 2a 20 76 65  aining its.** ve
69b0: 72 73 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f  rsion informatio
69c0: 6e 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 20 74  n, among other t
69d0: 68 69 6e 67 73 2e 20 20 4e 6f 72 6d 61 6c 6c 79  hings.  Normally
69e0: 2c 20 74 68 69 73 20 69 6e 74 65 72 6e 61 6c 20  , this internal 
69f0: 4d 69 6e 47 57 0a 2a 2a 20 68 65 61 64 65 72 20  MinGW.** header 
6a00: 66 69 6c 65 20 77 6f 75 6c 64 20 5b 6f 6e 6c 79  file would [only
6a10: 5d 20 62 65 20 69 6e 63 6c 75 64 65 64 20 61 75  ] be included au
6a20: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 6f  tomatically by o
6a30: 74 68 65 72 20 4d 69 6e 47 57 20 68 65 61 64 65  ther MinGW heade
6a40: 72 0a 2a 2a 20 66 69 6c 65 73 3b 20 68 6f 77 65  r.** files; howe
6a50: 76 65 72 2c 20 74 68 65 20 63 6f 6e 74 61 69 6e  ver, the contain
6a60: 65 64 20 76 65 72 73 69 6f 6e 20 69 6e 66 6f 72  ed version infor
6a70: 6d 61 74 69 6f 6e 20 69 73 20 6e 6f 77 20 72 65  mation is now re
6a80: 71 75 69 72 65 64 20 62 79 20 74 68 69 73 0a 2a  quired by this.*
6a90: 2a 20 68 65 61 64 65 72 20 66 69 6c 65 20 74 6f  * header file to
6aa0: 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20 62 69 6e   work around bin
6ab0: 61 72 79 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  ary compatibilit
6ac0: 79 20 69 73 73 75 65 73 20 28 73 65 65 20 62 65  y issues (see be
6ad0: 6c 6f 77 29 20 61 6e 64 0a 2a 2a 20 74 68 69 73  low) and.** this
6ae0: 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 6b 6e 6f   is the only kno
6af0: 77 6e 20 77 61 79 20 74 6f 20 72 65 6c 69 61 62  wn way to reliab
6b00: 6c 79 20 6f 62 74 61 69 6e 20 69 74 2e 20 20 54  ly obtain it.  T
6b10: 68 69 73 20 65 6e 74 69 72 65 20 23 69 66 20 62  his entire #if b
6b20: 6c 6f 63 6b 0a 2a 2a 20 77 6f 75 6c 64 20 62 65  lock.** would be
6b30: 20 63 6f 6d 70 6c 65 74 65 6c 79 20 75 6e 6e 65   completely unne
6b40: 63 65 73 73 61 72 79 20 69 66 20 74 68 65 72 65  cessary if there
6b50: 20 77 61 73 20 61 6e 79 20 6f 74 68 65 72 20 77   was any other w
6b60: 61 79 20 6f 66 20 64 65 74 65 63 74 69 6e 67 0a  ay of detecting.
6b70: 2a 2a 20 4d 69 6e 47 57 20 76 69 61 20 74 68 65  ** MinGW via the
6b80: 69 72 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20  ir preprocessor 
6b90: 28 65 2e 67 2e 20 69 66 20 74 68 65 79 20 63 75  (e.g. if they cu
6ba0: 73 74 6f 6d 69 7a 65 64 20 74 68 65 69 72 20 47  stomized their G
6bb0: 43 43 20 74 6f 20 64 65 66 69 6e 65 0a 2a 2a 20  CC to define.** 
6bc0: 73 6f 6d 65 20 4d 69 6e 47 57 2d 73 70 65 63 69  some MinGW-speci
6bd0: 66 69 63 20 6d 61 63 72 6f 73 29 2e 20 20 57 68  fic macros).  Wh
6be0: 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72  en compiling for
6bf0: 20 4d 69 6e 47 57 2c 20 65 69 74 68 65 72 20 74   MinGW, either t
6c00: 68 65 0a 2a 2a 20 5f 48 41 56 45 5f 4d 49 4e 47  he.** _HAVE_MING
6c10: 57 5f 48 20 6f 72 20 5f 48 41 56 45 5f 5f 4d 49  W_H or _HAVE__MI
6c20: 4e 47 57 5f 48 20 28 6e 6f 74 65 20 74 68 65 20  NGW_H (note the 
6c30: 65 78 74 72 61 20 75 6e 64 65 72 73 63 6f 72 65  extra underscore
6c40: 29 20 6d 61 63 72 6f 20 6d 75 73 74 20 62 65 0a  ) macro must be.
6c50: 2a 2a 20 64 65 66 69 6e 65 64 3b 20 6f 74 68 65  ** defined; othe
6c60: 72 77 69 73 65 2c 20 64 65 74 65 63 74 69 6f 6e  rwise, detection
6c70: 20 6f 66 20 63 6f 6e 64 69 74 69 6f 6e 73 20 73   of conditions s
6c80: 70 65 63 69 66 69 63 20 74 6f 20 4d 69 6e 47 57  pecific to MinGW
6c90: 20 77 69 6c 6c 20 62 65 0a 2a 2a 20 64 69 73 61   will be.** disa
6ca0: 62 6c 65 64 2e 0a 2a 2f 0a 23 69 66 20 64 65 66  bled..*/.#if def
6cb0: 69 6e 65 64 28 5f 48 41 56 45 5f 4d 49 4e 47 57  ined(_HAVE_MINGW
6cc0: 5f 48 29 0a 23 20 69 6e 63 6c 75 64 65 20 22 6d  _H).# include "m
6cd0: 69 6e 67 77 2e 68 22 0a 23 65 6c 69 66 20 64 65  ingw.h".#elif de
6ce0: 66 69 6e 65 64 28 5f 48 41 56 45 5f 5f 4d 49 4e  fined(_HAVE__MIN
6cf0: 47 57 5f 48 29 0a 23 20 69 6e 63 6c 75 64 65 20  GW_H).# include 
6d00: 22 5f 6d 69 6e 67 77 2e 68 22 0a 23 65 6e 64 69  "_mingw.h".#endi
6d10: 66 0a 0a 2f 2a 0a 2a 2a 20 46 6f 72 20 4d 69 6e  f../*.** For Min
6d20: 47 57 20 76 65 72 73 69 6f 6e 20 34 2e 78 20 28  GW version 4.x (
6d30: 61 6e 64 20 68 69 67 68 65 72 29 2c 20 63 68 65  and higher), che
6d40: 63 6b 20 74 6f 20 73 65 65 20 69 66 20 74 68 65  ck to see if the
6d50: 20 5f 55 53 45 5f 33 32 42 49 54 5f 54 49 4d 45   _USE_32BIT_TIME
6d60: 5f 54 0a 2a 2a 20 64 65 66 69 6e 65 20 69 73 20  _T.** define is 
6d70: 72 65 71 75 69 72 65 64 20 74 6f 20 6d 61 69 6e  required to main
6d80: 74 61 69 6e 20 62 69 6e 61 72 79 20 63 6f 6d 70  tain binary comp
6d90: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 74  atibility with t
6da0: 68 65 20 4d 53 56 43 20 72 75 6e 74 69 6d 65 0a  he MSVC runtime.
6db0: 2a 2a 20 6c 69 62 72 61 72 79 20 69 6e 20 75 73  ** library in us
6dc0: 65 20 28 65 2e 67 2e 20 66 6f 72 20 57 69 6e 64  e (e.g. for Wind
6dd0: 6f 77 73 20 58 50 29 2e 0a 2a 2f 0a 23 69 66 20  ows XP)..*/.#if 
6de0: 21 64 65 66 69 6e 65 64 28 5f 55 53 45 5f 33 32  !defined(_USE_32
6df0: 42 49 54 5f 54 49 4d 45 5f 54 29 20 26 26 20 21  BIT_TIME_T) && !
6e00: 64 65 66 69 6e 65 64 28 5f 55 53 45 5f 36 34 42  defined(_USE_64B
6e10: 49 54 5f 54 49 4d 45 5f 54 29 20 26 26 20 5c 0a  IT_TIME_T) && \.
6e20: 20 20 20 20 64 65 66 69 6e 65 64 28 5f 57 49 4e      defined(_WIN
6e30: 33 32 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  32) && !defined(
6e40: 5f 57 49 4e 36 34 29 20 26 26 20 5c 0a 20 20 20  _WIN64) && \.   
6e50: 20 64 65 66 69 6e 65 64 28 5f 5f 4d 49 4e 47 57   defined(__MINGW
6e60: 5f 4d 41 4a 4f 52 5f 56 45 52 53 49 4f 4e 29 20  _MAJOR_VERSION) 
6e70: 26 26 20 5f 5f 4d 49 4e 47 57 5f 4d 41 4a 4f 52  && __MINGW_MAJOR
6e80: 5f 56 45 52 53 49 4f 4e 20 3e 3d 20 34 20 26 26  _VERSION >= 4 &&
6e90: 20 5c 0a 20 20 20 20 64 65 66 69 6e 65 64 28 5f   \.    defined(_
6ea0: 5f 4d 53 56 43 52 54 5f 5f 29 0a 23 20 64 65 66  _MSVCRT__).# def
6eb0: 69 6e 65 20 5f 55 53 45 5f 33 32 42 49 54 5f 54  ine _USE_32BIT_T
6ec0: 49 4d 45 5f 54 0a 23 65 6e 64 69 66 0a 0a 2f 2a  IME_T.#endif../*
6ed0: 20 54 68 65 20 70 75 62 6c 69 63 20 53 51 4c 69   The public SQLi
6ee0: 74 65 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54  te interface.  T
6ef0: 68 65 20 5f 46 49 4c 45 5f 4f 46 46 53 45 54 5f  he _FILE_OFFSET_
6f00: 42 49 54 53 20 6d 61 63 72 6f 20 6d 75 73 74 20  BITS macro must 
6f10: 61 70 70 65 61 72 0a 2a 2a 20 66 69 72 73 74 20  appear.** first 
6f20: 69 6e 20 51 4e 58 2e 20 20 41 6c 73 6f 2c 20 74  in QNX.  Also, t
6f30: 68 65 20 5f 55 53 45 5f 33 32 42 49 54 5f 54 49  he _USE_32BIT_TI
6f40: 4d 45 5f 54 20 6d 61 63 72 6f 20 6d 75 73 74 20  ME_T macro must 
6f50: 61 70 70 65 61 72 20 66 69 72 73 74 20 66 6f 72  appear first for
6f60: 0a 2a 2a 20 4d 69 6e 47 57 2e 0a 2a 2f 0a 2f 2a  .** MinGW..*/./*
6f70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 49 6e  ************* In
6f80: 63 6c 75 64 65 20 73 71 6c 69 74 65 33 2e 68 20  clude sqlite3.h 
6f90: 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
6fa0: 20 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a   sqliteInt.h ***
6fb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a  ************/./*
6fc0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65  ************* Be
6fd0: 67 69 6e 20 66 69 6c 65 20 73 71 6c 69 74 65 33  gin file sqlite3
6fe0: 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .h *************
6ff0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
7000: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a  ************/./*
7010: 0a 2a 2a 20 32 30 30 31 2d 30 39 2d 31 35 0a 2a  .** 2001-09-15.*
7020: 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72 20  *.** The author 
7030: 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69  disclaims copyri
7040: 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72  ght to this sour
7050: 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61  ce code.  In pla
7060: 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67 61 6c  ce of.** a legal
7070: 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73   notice, here is
7080: 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a 2a 0a   a blessing:.**.
7090: 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  **    May you do
70a0: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
70b0: 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f  il..**    May yo
70c0: 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65  u find forgivene
70d0: 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20  ss for yourself 
70e0: 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65  and forgive othe
70f0: 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f  rs..**    May yo
7100: 75 20 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20  u share freely, 
7110: 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72  never taking mor
7120: 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e  e than you give.
7130: 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .**.************
7140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
7150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
7160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
7170: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a  *************.**
7180: 20 54 68 69 73 20 68 65 61 64 65 72 20 66 69 6c   This header fil
7190: 65 20 64 65 66 69 6e 65 73 20 74 68 65 20 69 6e  e defines the in
71a0: 74 65 72 66 61 63 65 20 74 68 61 74 20 74 68 65  terface that the
71b0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 0a   SQLite library.
71c0: 2a 2a 20 70 72 65 73 65 6e 74 73 20 74 6f 20 63  ** presents to c
71d0: 6c 69 65 6e 74 20 70 72 6f 67 72 61 6d 73 2e 20  lient programs. 
71e0: 20 49 66 20 61 20 43 2d 66 75 6e 63 74 69 6f 6e   If a C-function
71f0: 2c 20 73 74 72 75 63 74 75 72 65 2c 20 64 61 74  , structure, dat
7200: 61 74 79 70 65 2c 0a 2a 2a 20 6f 72 20 63 6f 6e  atype,.** or con
7210: 73 74 61 6e 74 20 64 65 66 69 6e 69 74 69 6f 6e  stant definition
7220: 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 65 61 72   does not appear
7230: 20 69 6e 20 74 68 69 73 20 66 69 6c 65 2c 20 74   in this file, t
7240: 68 65 6e 20 69 74 20 69 73 0a 2a 2a 20 6e 6f 74  hen it is.** not
7250: 20 61 20 70 75 62 6c 69 73 68 65 64 20 41 50 49   a published API
7260: 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 73 20 73   of SQLite, is s
7270: 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65  ubject to change
7280: 20 77 69 74 68 6f 75 74 0a 2a 2a 20 6e 6f 74 69   without.** noti
7290: 63 65 2c 20 61 6e 64 20 73 68 6f 75 6c 64 20 6e  ce, and should n
72a0: 6f 74 20 62 65 20 72 65 66 65 72 65 6e 63 65 64  ot be referenced
72b0: 20 62 79 20 70 72 6f 67 72 61 6d 73 20 74 68 61   by programs tha
72c0: 74 20 75 73 65 20 53 51 4c 69 74 65 2e 0a 2a 2a  t use SQLite..**
72d0: 0a 2a 2a 20 53 6f 6d 65 20 6f 66 20 74 68 65 20  .** Some of the 
72e0: 64 65 66 69 6e 69 74 69 6f 6e 73 20 74 68 61 74  definitions that
72f0: 20 61 72 65 20 69 6e 20 74 68 69 73 20 66 69 6c   are in this fil
7300: 65 20 61 72 65 20 6d 61 72 6b 65 64 20 61 73 0a  e are marked as.
7310: 2a 2a 20 22 65 78 70 65 72 69 6d 65 6e 74 61 6c  ** "experimental
7320: 22 2e 20 20 45 78 70 65 72 69 6d 65 6e 74 61 6c  ".  Experimental
7330: 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20   interfaces are 
7340: 6e 6f 72 6d 61 6c 6c 79 20 6e 65 77 0a 2a 2a 20  normally new.** 
7350: 66 65 61 74 75 72 65 73 20 72 65 63 65 6e 74 6c  features recentl
7360: 79 20 61 64 64 65 64 20 74 6f 20 53 51 4c 69 74  y added to SQLit
7370: 65 2e 20 20 57 65 20 64 6f 20 6e 6f 74 20 61 6e  e.  We do not an
7380: 74 69 63 69 70 61 74 65 20 63 68 61 6e 67 65 73  ticipate changes
7390: 0a 2a 2a 20 74 6f 20 65 78 70 65 72 69 6d 65 6e  .** to experimen
73a0: 74 61 6c 20 69 6e 74 65 72 66 61 63 65 73 20 62  tal interfaces b
73b0: 75 74 20 72 65 73 65 72 76 65 20 74 68 65 20 72  ut reserve the r
73c0: 69 67 68 74 20 74 6f 20 6d 61 6b 65 20 6d 69 6e  ight to make min
73d0: 6f 72 20 63 68 61 6e 67 65 73 0a 2a 2a 20 69 66  or changes.** if
73e0: 20 65 78 70 65 72 69 65 6e 63 65 20 66 72 6f 6d   experience from
73f0: 20 75 73 65 20 22 69 6e 20 74 68 65 20 77 69 6c   use "in the wil
7400: 64 22 20 73 75 67 67 65 73 74 20 73 75 63 68 20  d" suggest such 
7410: 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 75 64  changes are prud
7420: 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6f  ent..**.** The o
7430: 66 66 69 63 69 61 6c 20 43 2d 6c 61 6e 67 75 61  fficial C-langua
7440: 67 65 20 41 50 49 20 64 6f 63 75 6d 65 6e 74 61  ge API documenta
7450: 74 69 6f 6e 20 66 6f 72 20 53 51 4c 69 74 65 20  tion for SQLite 
7460: 69 73 20 64 65 72 69 76 65 64 0a 2a 2a 20 66 72  is derived.** fr
7470: 6f 6d 20 63 6f 6d 6d 65 6e 74 73 20 69 6e 20 74  om comments in t
7480: 68 69 73 20 66 69 6c 65 2e 20 20 54 68 69 73 20  his file.  This 
7490: 66 69 6c 65 20 69 73 20 74 68 65 20 61 75 74 68  file is the auth
74a0: 6f 72 69 74 61 74 69 76 65 20 73 6f 75 72 63 65  oritative source
74b0: 0a 2a 2a 20 6f 6e 20 68 6f 77 20 53 51 4c 69 74  .** on how SQLit
74c0: 65 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65  e interfaces are
74d0: 20 73 75 70 70 6f 73 65 64 20 74 6f 20 6f 70 65   supposed to ope
74e0: 72 61 74 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  rate..**.** The 
74f0: 6e 61 6d 65 20 6f 66 20 74 68 69 73 20 66 69 6c  name of this fil
7500: 65 20 75 6e 64 65 72 20 63 6f 6e 66 69 67 75 72  e under configur
7510: 61 74 69 6f 6e 20 6d 61 6e 61 67 65 6d 65 6e 74  ation management
7520: 20 69 73 20 22 73 71 6c 69 74 65 2e 68 2e 69 6e   is "sqlite.h.in
7530: 22 2e 0a 2a 2a 20 54 68 65 20 6d 61 6b 65 66 69  "..** The makefi
7540: 6c 65 20 6d 61 6b 65 73 20 73 6f 6d 65 20 6d 69  le makes some mi
7550: 6e 6f 72 20 63 68 61 6e 67 65 73 20 74 6f 20 74  nor changes to t
7560: 68 69 73 20 66 69 6c 65 20 28 73 75 63 68 20 61  his file (such a
7570: 73 20 69 6e 73 65 72 74 69 6e 67 0a 2a 2a 20 74  s inserting.** t
7580: 68 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65  he version numbe
7590: 72 29 20 61 6e 64 20 63 68 61 6e 67 65 73 20 69  r) and changes i
75a0: 74 73 20 6e 61 6d 65 20 74 6f 20 22 73 71 6c 69  ts name to "sqli
75b0: 74 65 33 2e 68 22 20 61 73 0a 2a 2a 20 70 61 72  te3.h" as.** par
75c0: 74 20 6f 66 20 74 68 65 20 62 75 69 6c 64 20 70  t of the build p
75d0: 72 6f 63 65 73 73 2e 0a 2a 2f 0a 23 69 66 6e 64  rocess..*/.#ifnd
75e0: 65 66 20 53 51 4c 49 54 45 33 5f 48 0a 23 64 65  ef SQLITE3_H.#de
75f0: 66 69 6e 65 20 53 51 4c 49 54 45 33 5f 48 0a 23  fine SQLITE3_H.#
7600: 69 6e 63 6c 75 64 65 20 3c 73 74 64 61 72 67 2e  include <stdarg.
7610: 68 3e 20 20 20 20 20 2f 2a 20 4e 65 65 64 65 64  h>     /* Needed
7620: 20 66 6f 72 20 74 68 65 20 64 65 66 69 6e 69 74   for the definit
7630: 69 6f 6e 20 6f 66 20 76 61 5f 6c 69 73 74 20 2a  ion of va_list *
7640: 2f 0a 0a 2f 2a 0a 2a 2a 20 4d 61 6b 65 20 73 75  /../*.** Make su
7650: 72 65 20 77 65 20 63 61 6e 20 63 61 6c 6c 20 74  re we can call t
7660: 68 69 73 20 73 74 75 66 66 20 66 72 6f 6d 20 43  his stuff from C
7670: 2b 2b 2e 0a 2a 2f 0a 23 69 66 20 30 0a 65 78 74  ++..*/.#if 0.ext
7680: 65 72 6e 20 22 43 22 20 7b 0a 23 65 6e 64 69 66  ern "C" {.#endif
7690: 0a 0a 0a 2f 2a 0a 2a 2a 20 50 72 6f 76 69 64 65  .../*.** Provide
76a0: 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20   the ability to 
76b0: 6f 76 65 72 72 69 64 65 20 6c 69 6e 6b 61 67 65  override linkage
76c0: 20 66 65 61 74 75 72 65 73 20 6f 66 20 74 68 65   features of the
76d0: 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2f 0a 23   interface..*/.#
76e0: 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 45 58  ifndef SQLITE_EX
76f0: 54 45 52 4e 0a 23 20 64 65 66 69 6e 65 20 53 51  TERN.# define SQ
7700: 4c 49 54 45 5f 45 58 54 45 52 4e 20 65 78 74 65  LITE_EXTERN exte
7710: 72 6e 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  rn.#endif.#ifnde
7720: 66 20 53 51 4c 49 54 45 5f 41 50 49 0a 23 20 64  f SQLITE_API.# d
7730: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 50 49  efine SQLITE_API
7740: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
7750: 53 51 4c 49 54 45 5f 43 44 45 43 4c 0a 23 20 64  SQLITE_CDECL.# d
7760: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 44 45  efine SQLITE_CDE
7770: 43 4c 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  CL.#endif.#ifnde
7780: 66 20 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c  f SQLITE_APICALL
7790: 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45  .# define SQLITE
77a0: 5f 41 50 49 43 41 4c 4c 0a 23 65 6e 64 69 66 0a  _APICALL.#endif.
77b0: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 53  #ifndef SQLITE_S
77c0: 54 44 43 41 4c 4c 0a 23 20 64 65 66 69 6e 65 20  TDCALL.# define 
77d0: 53 51 4c 49 54 45 5f 53 54 44 43 41 4c 4c 20 53  SQLITE_STDCALL S
77e0: 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 0a 23 65  QLITE_APICALL.#e
77f0: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 53 51 4c  ndif.#ifndef SQL
7800: 49 54 45 5f 43 41 4c 4c 42 41 43 4b 0a 23 20 64  ITE_CALLBACK.# d
7810: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4c  efine SQLITE_CAL
7820: 4c 42 41 43 4b 0a 23 65 6e 64 69 66 0a 23 69 66  LBACK.#endif.#if
7830: 6e 64 65 66 20 53 51 4c 49 54 45 5f 53 59 53 41  ndef SQLITE_SYSA
7840: 50 49 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49  PI.# define SQLI
7850: 54 45 5f 53 59 53 41 50 49 0a 23 65 6e 64 69 66  TE_SYSAPI.#endif
7860: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 6e 6f  ../*.** These no
7870: 2d 6f 70 20 6d 61 63 72 6f 73 20 61 72 65 20 75  -op macros are u
7880: 73 65 64 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20  sed in front of 
7890: 69 6e 74 65 72 66 61 63 65 73 20 74 6f 20 6d 61  interfaces to ma
78a0: 72 6b 20 74 68 6f 73 65 0a 2a 2a 20 69 6e 74 65  rk those.** inte
78b0: 72 66 61 63 65 73 20 61 73 20 65 69 74 68 65 72  rfaces as either
78c0: 20 64 65 70 72 65 63 61 74 65 64 20 6f 72 20 65   deprecated or e
78d0: 78 70 65 72 69 6d 65 6e 74 61 6c 2e 20 20 4e 65  xperimental.  Ne
78e0: 77 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a  w applications.*
78f0: 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75 73 65  * should not use
7900: 20 64 65 70 72 65 63 61 74 65 64 20 69 6e 74 65   deprecated inte
7910: 72 66 61 63 65 73 20 2d 20 74 68 65 79 20 61 72  rfaces - they ar
7920: 65 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20  e supported for 
7930: 62 61 63 6b 77 61 72 64 73 0a 2a 2a 20 63 6f 6d  backwards.** com
7940: 70 61 74 69 62 69 6c 69 74 79 20 6f 6e 6c 79 2e  patibility only.
7950: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 77 72    Application wr
7960: 69 74 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20  iters should be 
7970: 61 77 61 72 65 20 74 68 61 74 0a 2a 2a 20 65 78  aware that.** ex
7980: 70 65 72 69 6d 65 6e 74 61 6c 20 69 6e 74 65 72  perimental inter
7990: 66 61 63 65 73 20 61 72 65 20 73 75 62 6a 65 63  faces are subjec
79a0: 74 20 74 6f 20 63 68 61 6e 67 65 20 69 6e 20 70  t to change in p
79b0: 6f 69 6e 74 20 72 65 6c 65 61 73 65 73 2e 0a 2a  oint releases..*
79c0: 2a 0a 2a 2a 20 54 68 65 73 65 20 6d 61 63 72 6f  *.** These macro
79d0: 73 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76  s used to resolv
79e0: 65 20 74 6f 20 76 61 72 69 6f 75 73 20 6b 69 6e  e to various kin
79f0: 64 73 20 6f 66 20 63 6f 6d 70 69 6c 65 72 20 6d  ds of compiler m
7a00: 61 67 69 63 20 74 68 61 74 0a 2a 2a 20 77 6f 75  agic that.** wou
7a10: 6c 64 20 67 65 6e 65 72 61 74 65 20 77 61 72 6e  ld generate warn
7a20: 69 6e 67 20 6d 65 73 73 61 67 65 73 20 77 68 65  ing messages whe
7a30: 6e 20 74 68 65 79 20 77 65 72 65 20 75 73 65 64  n they were used
7a40: 2e 20 20 42 75 74 20 74 68 61 74 0a 2a 2a 20 63  .  But that.** c
7a50: 6f 6d 70 69 6c 65 72 20 6d 61 67 69 63 20 65 6e  ompiler magic en
7a60: 64 65 64 20 75 70 20 67 65 6e 65 72 61 74 69 6e  ded up generatin
7a70: 67 20 73 75 63 68 20 61 20 66 6c 75 72 72 79 20  g such a flurry 
7a80: 6f 66 20 62 75 67 20 72 65 70 6f 72 74 73 0a 2a  of bug reports.*
7a90: 2a 20 74 68 61 74 20 77 65 20 68 61 76 65 20 74  * that we have t
7aa0: 61 6b 65 6e 20 69 74 20 61 6c 6c 20 6f 75 74 20  aken it all out 
7ab0: 61 6e 64 20 67 6f 6e 65 20 62 61 63 6b 20 74 6f  and gone back to
7ac0: 20 75 73 69 6e 67 20 73 69 6d 70 6c 65 0a 2a 2a   using simple.**
7ad0: 20 6e 6f 6f 70 20 6d 61 63 72 6f 73 2e 0a 2a 2f   noop macros..*/
7ae0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
7af0: 44 45 50 52 45 43 41 54 45 44 0a 23 64 65 66 69  DEPRECATED.#defi
7b00: 6e 65 20 53 51 4c 49 54 45 5f 45 58 50 45 52 49  ne SQLITE_EXPERI
7b10: 4d 45 4e 54 41 4c 0a 0a 2f 2a 0a 2a 2a 20 45 6e  MENTAL../*.** En
7b20: 73 75 72 65 20 74 68 65 73 65 20 73 79 6d 62 6f  sure these symbo
7b30: 6c 73 20 77 65 72 65 20 6e 6f 74 20 64 65 66 69  ls were not defi
7b40: 6e 65 64 20 62 79 20 73 6f 6d 65 20 70 72 65 76  ned by some prev
7b50: 69 6f 75 73 20 68 65 61 64 65 72 20 66 69 6c 65  ious header file
7b60: 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49  ..*/.#ifdef SQLI
7b70: 54 45 5f 56 45 52 53 49 4f 4e 0a 23 20 75 6e 64  TE_VERSION.# und
7b80: 65 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f  ef SQLITE_VERSIO
7b90: 4e 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  N.#endif.#ifdef 
7ba0: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e  SQLITE_VERSION_N
7bb0: 55 4d 42 45 52 0a 23 20 75 6e 64 65 66 20 53 51  UMBER.# undef SQ
7bc0: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d  LITE_VERSION_NUM
7bd0: 42 45 52 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a  BER.#endif../*.*
7be0: 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6d 70  * CAPI3REF: Comp
7bf0: 69 6c 65 2d 54 69 6d 65 20 4c 69 62 72 61 72 79  ile-Time Library
7c00: 20 56 65 72 73 69 6f 6e 20 4e 75 6d 62 65 72 73   Version Numbers
7c10: 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65 20 5b 53 51  .**.** ^(The [SQ
7c20: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d 20 43 20  LITE_VERSION] C 
7c30: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
7c40: 72 6f 20 69 6e 20 74 68 65 20 73 71 6c 69 74 65  ro in the sqlite
7c50: 33 2e 68 20 68 65 61 64 65 72 0a 2a 2a 20 65 76  3.h header.** ev
7c60: 61 6c 75 61 74 65 73 20 74 6f 20 61 20 73 74 72  aluates to a str
7c70: 69 6e 67 20 6c 69 74 65 72 61 6c 20 74 68 61 74  ing literal that
7c80: 20 69 73 20 74 68 65 20 53 51 4c 69 74 65 20 76   is the SQLite v
7c90: 65 72 73 69 6f 6e 20 69 6e 20 74 68 65 0a 2a 2a  ersion in the.**
7ca0: 20 66 6f 72 6d 61 74 20 22 58 2e 59 2e 5a 22 20   format "X.Y.Z" 
7cb0: 77 68 65 72 65 20 58 20 69 73 20 74 68 65 20 6d  where X is the m
7cc0: 61 6a 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d  ajor version num
7cd0: 62 65 72 20 28 61 6c 77 61 79 73 20 33 20 66 6f  ber (always 3 fo
7ce0: 72 0a 2a 2a 20 53 51 4c 69 74 65 33 29 20 61 6e  r.** SQLite3) an
7cf0: 64 20 59 20 69 73 20 74 68 65 20 6d 69 6e 6f 72  d Y is the minor
7d00: 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20   version number 
7d10: 61 6e 64 20 5a 20 69 73 20 74 68 65 20 72 65 6c  and Z is the rel
7d20: 65 61 73 65 20 6e 75 6d 62 65 72 2e 29 5e 0a 2a  ease number.)^.*
7d30: 2a 20 5e 28 54 68 65 20 5b 53 51 4c 49 54 45 5f  * ^(The [SQLITE_
7d40: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 5d 20  VERSION_NUMBER] 
7d50: 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C preprocessor m
7d60: 61 63 72 6f 20 72 65 73 6f 6c 76 65 73 20 74 6f  acro resolves to
7d70: 20 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 77   an integer.** w
7d80: 69 74 68 20 74 68 65 20 76 61 6c 75 65 20 28 58  ith the value (X
7d90: 2a 31 30 30 30 30 30 30 20 2b 20 59 2a 31 30 30  *1000000 + Y*100
7da0: 30 20 2b 20 5a 29 20 77 68 65 72 65 20 58 2c 20  0 + Z) where X, 
7db0: 59 2c 20 61 6e 64 20 5a 20 61 72 65 20 74 68 65  Y, and Z are the
7dc0: 20 73 61 6d 65 0a 2a 2a 20 6e 75 6d 62 65 72 73   same.** numbers
7dd0: 20 75 73 65 64 20 69 6e 20 5b 53 51 4c 49 54 45   used in [SQLITE
7de0: 5f 56 45 52 53 49 4f 4e 5d 2e 29 5e 0a 2a 2a 20  _VERSION].)^.** 
7df0: 54 68 65 20 53 51 4c 49 54 45 5f 56 45 52 53 49  The SQLITE_VERSI
7e00: 4f 4e 5f 4e 55 4d 42 45 52 20 66 6f 72 20 61 6e  ON_NUMBER for an
7e10: 79 20 67 69 76 65 6e 20 72 65 6c 65 61 73 65 20  y given release 
7e20: 6f 66 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61  of SQLite will a
7e30: 6c 73 6f 0a 2a 2a 20 62 65 20 6c 61 72 67 65 72  lso.** be larger
7e40: 20 74 68 61 6e 20 74 68 65 20 72 65 6c 65 61 73   than the releas
7e50: 65 20 66 72 6f 6d 20 77 68 69 63 68 20 69 74 20  e from which it 
7e60: 69 73 20 64 65 72 69 76 65 64 2e 20 20 45 69 74  is derived.  Eit
7e70: 68 65 72 20 59 20 77 69 6c 6c 0a 2a 2a 20 62 65  her Y will.** be
7e80: 20 68 65 6c 64 20 63 6f 6e 73 74 61 6e 74 20 61   held constant a
7e90: 6e 64 20 5a 20 77 69 6c 6c 20 62 65 20 69 6e 63  nd Z will be inc
7ea0: 72 65 6d 65 6e 74 65 64 20 6f 72 20 65 6c 73 65  remented or else
7eb0: 20 59 20 77 69 6c 6c 20 62 65 20 69 6e 63 72 65   Y will be incre
7ec0: 6d 65 6e 74 65 64 0a 2a 2a 20 61 6e 64 20 5a 20  mented.** and Z 
7ed0: 77 69 6c 6c 20 62 65 20 72 65 73 65 74 20 74 6f  will be reset to
7ee0: 20 7a 65 72 6f 2e 0a 2a 2a 0a 2a 2a 20 53 69 6e   zero..**.** Sin
7ef0: 63 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e  ce [version 3.6.
7f00: 31 38 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 36  18] ([dateof:3.6
7f10: 2e 31 38 5d 29 2c 20 0a 2a 2a 20 53 51 4c 69 74  .18]), .** SQLit
7f20: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 68 61  e source code ha
7f30: 73 20 62 65 65 6e 20 73 74 6f 72 65 64 20 69 6e  s been stored in
7f40: 20 74 68 65 0a 2a 2a 20 3c 61 20 68 72 65 66 3d   the.** <a href=
7f50: 22 68 74 74 70 3a 2f 2f 77 77 77 2e 66 6f 73 73  "http://www.foss
7f60: 69 6c 2d 73 63 6d 2e 6f 72 67 2f 22 3e 46 6f 73  il-scm.org/">Fos
7f70: 73 69 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  sil configuratio
7f80: 6e 20 6d 61 6e 61 67 65 6d 65 6e 74 0a 2a 2a 20  n management.** 
7f90: 73 79 73 74 65 6d 3c 2f 61 3e 2e 20 20 5e 54 68  system</a>.  ^Th
7fa0: 65 20 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f  e SQLITE_SOURCE_
7fb0: 49 44 20 6d 61 63 72 6f 20 65 76 61 6c 75 61 74  ID macro evaluat
7fc0: 65 73 20 74 6f 0a 2a 2a 20 61 20 73 74 72 69 6e  es to.** a strin
7fd0: 67 20 77 68 69 63 68 20 69 64 65 6e 74 69 66 69  g which identifi
7fe0: 65 73 20 61 20 70 61 72 74 69 63 75 6c 61 72 20  es a particular 
7ff0: 63 68 65 63 6b 2d 69 6e 20 6f 66 20 53 51 4c 69  check-in of SQLi
8000: 74 65 0a 2a 2a 20 77 69 74 68 69 6e 20 69 74 73  te.** within its
8010: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6d   configuration m
8020: 61 6e 61 67 65 6d 65 6e 74 20 73 79 73 74 65 6d  anagement system
8030: 2e 20 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 53  .  ^The SQLITE_S
8040: 4f 55 52 43 45 5f 49 44 0a 2a 2a 20 73 74 72 69  OURCE_ID.** stri
8050: 6e 67 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20  ng contains the 
8060: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6f 66  date and time of
8070: 20 74 68 65 20 63 68 65 63 6b 2d 69 6e 20 28 55   the check-in (U
8080: 54 43 29 20 61 6e 64 20 61 20 53 48 41 31 0a 2a  TC) and a SHA1.*
8090: 2a 20 6f 72 20 53 48 41 33 2d 32 35 36 20 68 61  * or SHA3-256 ha
80a0: 73 68 20 6f 66 20 74 68 65 20 65 6e 74 69 72 65  sh of the entire
80b0: 20 73 6f 75 72 63 65 20 74 72 65 65 2e 20 20 49   source tree.  I
80c0: 66 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64  f the source cod
80d0: 65 20 68 61 73 0a 2a 2a 20 62 65 65 6e 20 65 64  e has.** been ed
80e0: 69 74 65 64 20 69 6e 20 61 6e 79 20 77 61 79 20  ited in any way 
80f0: 73 69 6e 63 65 20 69 74 20 77 61 73 20 6c 61 73  since it was las
8100: 74 20 63 68 65 63 6b 65 64 20 69 6e 2c 20 74 68  t checked in, th
8110: 65 6e 20 74 68 65 20 6c 61 73 74 0a 2a 2a 20 66  en the last.** f
8120: 6f 75 72 20 68 65 78 61 64 65 63 69 6d 61 6c 20  our hexadecimal 
8130: 64 69 67 69 74 73 20 6f 66 20 74 68 65 20 68 61  digits of the ha
8140: 73 68 20 6d 61 79 20 62 65 20 6d 6f 64 69 66 69  sh may be modifi
8150: 65 64 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c  ed..**.** See al
8160: 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 6c 69 62  so: [sqlite3_lib
8170: 76 65 72 73 69 6f 6e 28 29 5d 2c 0a 2a 2a 20 5b  version()],.** [
8180: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
8190: 6f 6e 5f 6e 75 6d 62 65 72 28 29 5d 2c 20 5b 73  on_number()], [s
81a0: 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28  qlite3_sourceid(
81b0: 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 5f 76  )],.** [sqlite_v
81c0: 65 72 73 69 6f 6e 28 29 5d 20 61 6e 64 20 5b 73  ersion()] and [s
81d0: 71 6c 69 74 65 5f 73 6f 75 72 63 65 5f 69 64 28  qlite_source_id(
81e0: 29 5d 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  )]..*/.#define S
81f0: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 20 20 20  QLITE_VERSION   
8200: 20 20 20 20 20 22 33 2e 32 39 2e 30 22 0a 23 64       "3.29.0".#d
8210: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 56 45 52  efine SQLITE_VER
8220: 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 33 30 32 39  SION_NUMBER 3029
8230: 30 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  000.#define SQLI
8240: 54 45 5f 53 4f 55 52 43 45 5f 49 44 20 20 20 20  TE_SOURCE_ID    
8250: 20 20 22 32 30 31 39 2d 30 37 2d 31 30 20 31 37    "2019-07-10 17
8260: 3a 33 32 3a 30 33 20 66 63 38 32 62 37 33 65 61  :32:03 fc82b73ea
8270: 61 63 38 62 33 36 39 35 30 65 35 32 37 66 31 32  ac8b36950e527f12
8280: 63 34 62 35 64 63 31 65 31 34 37 65 36 66 34 61  c4b5dc1e147e6f4a
8290: 64 32 32 31 37 61 65 34 33 61 64 38 32 38 38 32  d2217ae43ad82882
82a0: 61 38 38 62 66 61 36 22 0a 0a 2f 2a 0a 2a 2a 20  a88bfa6"../*.** 
82b0: 43 41 50 49 33 52 45 46 3a 20 52 75 6e 2d 54 69  CAPI3REF: Run-Ti
82c0: 6d 65 20 4c 69 62 72 61 72 79 20 56 65 72 73 69  me Library Versi
82d0: 6f 6e 20 4e 75 6d 62 65 72 73 0a 2a 2a 20 4b 45  on Numbers.** KE
82e0: 59 57 4f 52 44 53 3a 20 73 71 6c 69 74 65 33 5f  YWORDS: sqlite3_
82f0: 76 65 72 73 69 6f 6e 20 73 71 6c 69 74 65 33 5f  version sqlite3_
8300: 73 6f 75 72 63 65 69 64 0a 2a 2a 0a 2a 2a 20 54  sourceid.**.** T
8310: 68 65 73 65 20 69 6e 74 65 72 66 61 63 65 73 20  hese interfaces 
8320: 70 72 6f 76 69 64 65 20 74 68 65 20 73 61 6d 65  provide the same
8330: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 73 20   information as 
8340: 74 68 65 20 5b 53 51 4c 49 54 45 5f 56 45 52 53  the [SQLITE_VERS
8350: 49 4f 4e 5d 2c 0a 2a 2a 20 5b 53 51 4c 49 54 45  ION],.** [SQLITE
8360: 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 5d  _VERSION_NUMBER]
8370: 2c 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 53 4f  , and [SQLITE_SO
8380: 55 52 43 45 5f 49 44 5d 20 43 20 70 72 65 70 72  URCE_ID] C prepr
8390: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 73 0a 2a  ocessor macros.*
83a0: 2a 20 62 75 74 20 61 72 65 20 61 73 73 6f 63 69  * but are associ
83b0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 6c 69  ated with the li
83c0: 62 72 61 72 79 20 69 6e 73 74 65 61 64 20 6f 66  brary instead of
83d0: 20 74 68 65 20 68 65 61 64 65 72 20 66 69 6c 65   the header file
83e0: 2e 20 20 5e 28 43 61 75 74 69 6f 75 73 0a 2a 2a  .  ^(Cautious.**
83f0: 20 70 72 6f 67 72 61 6d 6d 65 72 73 20 6d 69 67   programmers mig
8400: 68 74 20 69 6e 63 6c 75 64 65 20 61 73 73 65 72  ht include asser
8410: 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 69  t() statements i
8420: 6e 20 74 68 65 69 72 20 61 70 70 6c 69 63 61 74  n their applicat
8430: 69 6f 6e 20 74 6f 0a 2a 2a 20 76 65 72 69 66 79  ion to.** verify
8440: 20 74 68 61 74 20 76 61 6c 75 65 73 20 72 65 74   that values ret
8450: 75 72 6e 65 64 20 62 79 20 74 68 65 73 65 20 69  urned by these i
8460: 6e 74 65 72 66 61 63 65 73 20 6d 61 74 63 68 20  nterfaces match 
8470: 74 68 65 20 6d 61 63 72 6f 73 20 69 6e 0a 2a 2a  the macros in.**
8480: 20 74 68 65 20 68 65 61 64 65 72 2c 20 61 6e 64   the header, and
8490: 20 74 68 75 73 20 65 6e 73 75 72 65 20 74 68 61   thus ensure tha
84a0: 74 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  t the applicatio
84b0: 6e 20 69 73 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64  n is.** compiled
84c0: 20 77 69 74 68 20 6d 61 74 63 68 69 6e 67 20 6c   with matching l
84d0: 69 62 72 61 72 79 20 61 6e 64 20 68 65 61 64 65  ibrary and heade
84e0: 72 20 66 69 6c 65 73 2e 0a 2a 2a 0a 2a 2a 20 3c  r files..**.** <
84f0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
8500: 0a 2a 2a 20 61 73 73 65 72 74 28 20 73 71 6c 69  .** assert( sqli
8510: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
8520: 75 6d 62 65 72 28 29 3d 3d 53 51 4c 49 54 45 5f  umber()==SQLITE_
8530: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 29  VERSION_NUMBER )
8540: 3b 0a 2a 2a 20 61 73 73 65 72 74 28 20 73 74 72  ;.** assert( str
8550: 6e 63 6d 70 28 73 71 6c 69 74 65 33 5f 73 6f 75  ncmp(sqlite3_sou
8560: 72 63 65 69 64 28 29 2c 53 51 4c 49 54 45 5f 53  rceid(),SQLITE_S
8570: 4f 55 52 43 45 5f 49 44 2c 38 30 29 3d 3d 30 20  OURCE_ID,80)==0 
8580: 29 3b 0a 2a 2a 20 61 73 73 65 72 74 28 20 73 74  );.** assert( st
8590: 72 63 6d 70 28 73 71 6c 69 74 65 33 5f 6c 69 62  rcmp(sqlite3_lib
85a0: 76 65 72 73 69 6f 6e 28 29 2c 53 51 4c 49 54 45  version(),SQLITE
85b0: 5f 56 45 52 53 49 4f 4e 29 3d 3d 30 20 29 3b 0a  _VERSION)==0 );.
85c0: 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  ** </pre></block
85d0: 71 75 6f 74 65 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e  quote>)^.**.** ^
85e0: 54 68 65 20 73 71 6c 69 74 65 33 5f 76 65 72 73  The sqlite3_vers
85f0: 69 6f 6e 5b 5d 20 73 74 72 69 6e 67 20 63 6f 6e  ion[] string con
8600: 73 74 61 6e 74 20 63 6f 6e 74 61 69 6e 73 20 74  stant contains t
8610: 68 65 20 74 65 78 74 20 6f 66 20 5b 53 51 4c 49  he text of [SQLI
8620: 54 45 5f 56 45 52 53 49 4f 4e 5d 0a 2a 2a 20 6d  TE_VERSION].** m
8630: 61 63 72 6f 2e 20 20 5e 54 68 65 20 73 71 6c 69  acro.  ^The sqli
8640: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29  te3_libversion()
8650: 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
8660: 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
8670: 68 65 0a 2a 2a 20 74 6f 20 74 68 65 20 73 71 6c  he.** to the sql
8680: 69 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 20 73  ite3_version[] s
8690: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 2e 20  tring constant. 
86a0: 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6c 69 62   The sqlite3_lib
86b0: 76 65 72 73 69 6f 6e 28 29 0a 2a 2a 20 66 75 6e  version().** fun
86c0: 63 74 69 6f 6e 20 69 73 20 70 72 6f 76 69 64 65  ction is provide
86d0: 64 20 66 6f 72 20 75 73 65 20 69 6e 20 44 4c 4c  d for use in DLL
86e0: 73 20 73 69 6e 63 65 20 44 4c 4c 20 75 73 65 72  s since DLL user
86f0: 73 20 75 73 75 61 6c 6c 79 20 64 6f 20 6e 6f 74  s usually do not
8700: 20 68 61 76 65 0a 2a 2a 20 64 69 72 65 63 74 20   have.** direct 
8710: 61 63 63 65 73 73 20 74 6f 20 73 74 72 69 6e 67  access to string
8720: 20 63 6f 6e 73 74 61 6e 74 73 20 77 69 74 68 69   constants withi
8730: 6e 20 74 68 65 20 44 4c 4c 2e 20 20 5e 54 68 65  n the DLL.  ^The
8740: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  .** sqlite3_libv
8750: 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 20  ersion_number() 
8760: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
8770: 20 61 6e 20 69 6e 74 65 67 65 72 20 65 71 75 61   an integer equa
8780: 6c 20 74 6f 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  l to.** [SQLITE_
8790: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 5d 2e  VERSION_NUMBER].
87a0: 20 20 5e 28 54 68 65 20 73 71 6c 69 74 65 33 5f    ^(The sqlite3_
87b0: 73 6f 75 72 63 65 69 64 28 29 20 66 75 6e 63 74  sourceid() funct
87c0: 69 6f 6e 20 72 65 74 75 72 6e 73 20 0a 2a 2a 20  ion returns .** 
87d0: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73  a pointer to a s
87e0: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 77  tring constant w
87f0: 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68  hose value is th
8800: 65 20 73 61 6d 65 20 61 73 20 74 68 65 20 0a 2a  e same as the .*
8810: 2a 20 5b 53 51 4c 49 54 45 5f 53 4f 55 52 43 45  * [SQLITE_SOURCE
8820: 5f 49 44 5d 20 43 20 70 72 65 70 72 6f 63 65 73  _ID] C preproces
8830: 73 6f 72 20 6d 61 63 72 6f 2e 20 20 45 78 63 65  sor macro.  Exce
8840: 70 74 20 69 66 20 53 51 4c 69 74 65 20 69 73 20  pt if SQLite is 
8850: 62 75 69 6c 74 0a 2a 2a 20 75 73 69 6e 67 20 61  built.** using a
8860: 6e 20 65 64 69 74 65 64 20 63 6f 70 79 20 6f 66  n edited copy of
8870: 20 5b 74 68 65 20 61 6d 61 6c 67 61 6d 61 74 69   [the amalgamati
8880: 6f 6e 5d 2c 20 74 68 65 6e 20 74 68 65 20 6c 61  on], then the la
8890: 73 74 20 66 6f 75 72 20 63 68 61 72 61 63 74 65  st four characte
88a0: 72 73 0a 2a 2a 20 6f 66 20 74 68 65 20 68 61 73  rs.** of the has
88b0: 68 20 6d 69 67 68 74 20 62 65 20 64 69 66 66 65  h might be diffe
88c0: 72 65 6e 74 20 66 72 6f 6d 20 5b 53 51 4c 49 54  rent from [SQLIT
88d0: 45 5f 53 4f 55 52 43 45 5f 49 44 5d 2e 29 5e 0a  E_SOURCE_ID].)^.
88e0: 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
88f0: 5b 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28  [sqlite_version(
8900: 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f 73  )] and [sqlite_s
8910: 6f 75 72 63 65 5f 69 64 28 29 5d 2e 0a 2a 2f 0a  ource_id()]..*/.
8920: 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74  SQLITE_API const
8930: 20 63 68 61 72 20 73 71 6c 69 74 65 33 5f 76 65   char sqlite3_ve
8940: 72 73 69 6f 6e 5b 5d 20 3d 20 53 51 4c 49 54 45  rsion[] = SQLITE
8950: 5f 56 45 52 53 49 4f 4e 3b 0a 53 51 4c 49 54 45  _VERSION;.SQLITE
8960: 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20  _API const char 
8970: 2a 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73  *sqlite3_libvers
8980: 69 6f 6e 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54  ion(void);.SQLIT
8990: 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72  E_API const char
89a0: 20 2a 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65   *sqlite3_source
89b0: 69 64 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45  id(void);.SQLITE
89c0: 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
89d0: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
89e0: 65 72 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a  er(void);../*.**
89f0: 20 43 41 50 49 33 52 45 46 3a 20 52 75 6e 2d 54   CAPI3REF: Run-T
8a00: 69 6d 65 20 4c 69 62 72 61 72 79 20 43 6f 6d 70  ime Library Comp
8a10: 69 6c 61 74 69 6f 6e 20 4f 70 74 69 6f 6e 73 20  ilation Options 
8a20: 44 69 61 67 6e 6f 73 74 69 63 73 0a 2a 2a 0a 2a  Diagnostics.**.*
8a30: 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 63  * ^The sqlite3_c
8a40: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
8a50: 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  d() function ret
8a60: 75 72 6e 73 20 30 20 6f 72 20 31 20 0a 2a 2a 20  urns 0 or 1 .** 
8a70: 69 6e 64 69 63 61 74 69 6e 67 20 77 68 65 74 68  indicating wheth
8a80: 65 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  er the specified
8a90: 20 6f 70 74 69 6f 6e 20 77 61 73 20 64 65 66 69   option was defi
8aa0: 6e 65 64 20 61 74 20 0a 2a 2a 20 63 6f 6d 70 69  ned at .** compi
8ab0: 6c 65 20 74 69 6d 65 2e 20 20 5e 54 68 65 20 53  le time.  ^The S
8ac0: 51 4c 49 54 45 5f 20 70 72 65 66 69 78 20 6d 61  QLITE_ prefix ma
8ad0: 79 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f  y be omitted fro
8ae0: 6d 20 74 68 65 20 0a 2a 2a 20 6f 70 74 69 6f 6e  m the .** option
8af0: 20 6e 61 6d 65 20 70 61 73 73 65 64 20 74 6f 20   name passed to 
8b00: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
8b10: 70 74 69 6f 6e 5f 75 73 65 64 28 29 2e 20 20 0a  ption_used().  .
8b20: 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
8b30: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
8b40: 5f 67 65 74 28 29 20 66 75 6e 63 74 69 6f 6e 20  _get() function 
8b50: 61 6c 6c 6f 77 73 20 69 74 65 72 61 74 69 6e 67  allows iterating
8b60: 0a 2a 2a 20 6f 76 65 72 20 74 68 65 20 6c 69 73  .** over the lis
8b70: 74 20 6f 66 20 6f 70 74 69 6f 6e 73 20 74 68 61  t of options tha
8b80: 74 20 77 65 72 65 20 64 65 66 69 6e 65 64 20 61  t were defined a
8b90: 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 62  t compile time b
8ba0: 79 0a 2a 2a 20 72 65 74 75 72 6e 69 6e 67 20 74  y.** returning t
8bb0: 68 65 20 4e 2d 74 68 20 63 6f 6d 70 69 6c 65 20  he N-th compile 
8bc0: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 73 74 72 69  time option stri
8bd0: 6e 67 2e 20 20 5e 49 66 20 4e 20 69 73 20 6f 75  ng.  ^If N is ou
8be0: 74 20 6f 66 20 72 61 6e 67 65 2c 0a 2a 2a 20 73  t of range,.** s
8bf0: 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
8c00: 74 69 6f 6e 5f 67 65 74 28 29 20 72 65 74 75 72  tion_get() retur
8c10: 6e 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  ns a NULL pointe
8c20: 72 2e 20 20 5e 54 68 65 20 53 51 4c 49 54 45 5f  r.  ^The SQLITE_
8c30: 20 0a 2a 2a 20 70 72 65 66 69 78 20 69 73 20 6f   .** prefix is o
8c40: 6d 69 74 74 65 64 20 66 72 6f 6d 20 61 6e 79 20  mitted from any 
8c50: 73 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64  strings returned
8c60: 20 62 79 20 0a 2a 2a 20 73 71 6c 69 74 65 33 5f   by .** sqlite3_
8c70: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65  compileoption_ge
8c80: 74 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 53 75 70 70  t()..**.** ^Supp
8c90: 6f 72 74 20 66 6f 72 20 74 68 65 20 64 69 61 67  ort for the diag
8ca0: 6e 6f 73 74 69 63 20 66 75 6e 63 74 69 6f 6e 73  nostic functions
8cb0: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
8cc0: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 0a 2a 2a  option_used().**
8cd0: 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63 6f 6d   and sqlite3_com
8ce0: 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29  pileoption_get()
8cf0: 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20   may be omitted 
8d00: 62 79 20 73 70 65 63 69 66 79 69 6e 67 20 74 68  by specifying th
8d10: 65 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 4d  e .** [SQLITE_OM
8d20: 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e  IT_COMPILEOPTION
8d30: 5f 44 49 41 47 53 5d 20 6f 70 74 69 6f 6e 20 61  _DIAGS] option a
8d40: 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a  t compile time..
8d50: 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
8d60: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20 5b 73  SQL functions [s
8d70: 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74  qlite_compileopt
8d80: 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a  ion_used()] and.
8d90: 2a 2a 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69  ** [sqlite_compi
8da0: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20  leoption_get()] 
8db0: 61 6e 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c 65  and the [compile
8dc0: 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d 61 5d  _options pragma]
8dd0: 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51 4c  ..*/.#ifndef SQL
8de0: 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45  ITE_OMIT_COMPILE
8df0: 4f 50 54 49 4f 4e 5f 44 49 41 47 53 0a 53 51 4c  OPTION_DIAGS.SQL
8e00: 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
8e10: 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
8e20: 6e 5f 75 73 65 64 28 63 6f 6e 73 74 20 63 68 61  n_used(const cha
8e30: 72 20 2a 7a 4f 70 74 4e 61 6d 65 29 3b 0a 53 51  r *zOptName);.SQ
8e40: 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63  LITE_API const c
8e50: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6d  har *sqlite3_com
8e60: 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69  pileoption_get(i
8e70: 6e 74 20 4e 29 3b 0a 23 65 6c 73 65 0a 23 20 64  nt N);.#else.# d
8e80: 65 66 69 6e 65 20 73 71 6c 69 74 65 33 5f 63 6f  efine sqlite3_co
8e90: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
8ea0: 28 58 29 20 30 0a 23 20 64 65 66 69 6e 65 20 73  (X) 0.# define s
8eb0: 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
8ec0: 74 69 6f 6e 5f 67 65 74 28 58 29 20 20 28 28 76  tion_get(X)  ((v
8ed0: 6f 69 64 2a 29 30 29 0a 23 65 6e 64 69 66 0a 0a  oid*)0).#endif..
8ee0: 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
8ef0: 54 65 73 74 20 54 6f 20 53 65 65 20 49 66 20 54  Test To See If T
8f00: 68 65 20 4c 69 62 72 61 72 79 20 49 73 20 54 68  he Library Is Th
8f10: 72 65 61 64 73 61 66 65 0a 2a 2a 0a 2a 2a 20 5e  readsafe.**.** ^
8f20: 54 68 65 20 73 71 6c 69 74 65 33 5f 74 68 72 65  The sqlite3_thre
8f30: 61 64 73 61 66 65 28 29 20 66 75 6e 63 74 69 6f  adsafe() functio
8f40: 6e 20 72 65 74 75 72 6e 73 20 7a 65 72 6f 20 69  n returns zero i
8f50: 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 2a 2a  f and only if.**
8f60: 20 53 51 4c 69 74 65 20 77 61 73 20 63 6f 6d 70   SQLite was comp
8f70: 69 6c 65 64 20 77 69 74 68 20 6d 75 74 65 78 69  iled with mutexi
8f80: 6e 67 20 63 6f 64 65 20 6f 6d 69 74 74 65 64 20  ng code omitted 
8f90: 64 75 65 20 74 6f 20 74 68 65 0a 2a 2a 20 5b 53  due to the.** [S
8fa0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
8fb0: 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
8fc0: 70 74 69 6f 6e 20 62 65 69 6e 67 20 73 65 74 20  ption being set 
8fd0: 74 6f 20 30 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  to 0..**.** SQLi
8fe0: 74 65 20 63 61 6e 20 62 65 20 63 6f 6d 70 69 6c  te can be compil
8ff0: 65 64 20 77 69 74 68 20 6f 72 20 77 69 74 68 6f  ed with or witho
9000: 75 74 20 6d 75 74 65 78 65 73 2e 20 20 57 68 65  ut mutexes.  Whe
9010: 6e 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45  n.** the [SQLITE
9020: 5f 54 48 52 45 41 44 53 41 46 45 5d 20 43 20 70  _THREADSAFE] C p
9030: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
9040: 6f 20 69 73 20 31 20 6f 72 20 32 2c 20 6d 75 74  o is 1 or 2, mut
9050: 65 78 65 73 0a 2a 2a 20 61 72 65 20 65 6e 61 62  exes.** are enab
9060: 6c 65 64 20 61 6e 64 20 53 51 4c 69 74 65 20 69  led and SQLite i
9070: 73 20 74 68 72 65 61 64 73 61 66 65 2e 20 20 57  s threadsafe.  W
9080: 68 65 6e 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49  hen the.** [SQLI
9090: 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20 6d  TE_THREADSAFE] m
90a0: 61 63 72 6f 20 69 73 20 30 2c 20 0a 2a 2a 20 74  acro is 0, .** t
90b0: 68 65 20 6d 75 74 65 78 65 73 20 61 72 65 20 6f  he mutexes are o
90c0: 6d 69 74 74 65 64 2e 20 20 57 69 74 68 6f 75 74  mitted.  Without
90d0: 20 74 68 65 20 6d 75 74 65 78 65 73 2c 20 69 74   the mutexes, it
90e0: 20 69 73 20 6e 6f 74 20 73 61 66 65 0a 2a 2a 20   is not safe.** 
90f0: 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20 63 6f  to use SQLite co
9100: 6e 63 75 72 72 65 6e 74 6c 79 20 66 72 6f 6d 20  ncurrently from 
9110: 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 68  more than one th
9120: 72 65 61 64 2e 0a 2a 2a 0a 2a 2a 20 45 6e 61 62  read..**.** Enab
9130: 6c 69 6e 67 20 6d 75 74 65 78 65 73 20 69 6e 63  ling mutexes inc
9140: 75 72 73 20 61 20 6d 65 61 73 75 72 61 62 6c 65  urs a measurable
9150: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e   performance pen
9160: 61 6c 74 79 2e 0a 2a 2a 20 53 6f 20 69 66 20 73  alty..** So if s
9170: 70 65 65 64 20 69 73 20 6f 66 20 75 74 6d 6f 73  peed is of utmos
9180: 74 20 69 6d 70 6f 72 74 61 6e 63 65 2c 20 69 74  t importance, it
9190: 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 74 6f 20   makes sense to 
91a0: 64 69 73 61 62 6c 65 0a 2a 2a 20 74 68 65 20 6d  disable.** the m
91b0: 75 74 65 78 65 73 2e 20 20 42 75 74 20 66 6f 72  utexes.  But for
91c0: 20 6d 61 78 69 6d 75 6d 20 73 61 66 65 74 79 2c   maximum safety,
91d0: 20 6d 75 74 65 78 65 73 20 73 68 6f 75 6c 64 20   mutexes should 
91e0: 62 65 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 20 5e  be enabled..** ^
91f0: 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  The default beha
9200: 76 69 6f 72 20 69 73 20 66 6f 72 20 6d 75 74 65  vior is for mute
9210: 78 65 73 20 74 6f 20 62 65 20 65 6e 61 62 6c 65  xes to be enable
9220: 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 6e  d..**.** This in
9230: 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20 75  terface can be u
9240: 73 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69 63  sed by an applic
9250: 61 74 69 6f 6e 20 74 6f 20 6d 61 6b 65 20 73 75  ation to make su
9260: 72 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 76  re that the.** v
9270: 65 72 73 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65  ersion of SQLite
9280: 20 74 68 61 74 20 69 74 20 69 73 20 6c 69 6e 6b   that it is link
9290: 69 6e 67 20 61 67 61 69 6e 73 74 20 77 61 73 20  ing against was 
92a0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a  compiled with.**
92b0: 20 74 68 65 20 64 65 73 69 72 65 64 20 73 65 74   the desired set
92c0: 74 69 6e 67 20 6f 66 20 74 68 65 20 5b 53 51 4c  ting of the [SQL
92d0: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20  ITE_THREADSAFE] 
92e0: 6d 61 63 72 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  macro..**.** Thi
92f0: 73 20 69 6e 74 65 72 66 61 63 65 20 6f 6e 6c 79  s interface only
9300: 20 72 65 70 6f 72 74 73 20 6f 6e 20 74 68 65 20   reports on the 
9310: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6d 75 74  compile-time mut
9320: 65 78 20 73 65 74 74 69 6e 67 0a 2a 2a 20 6f 66  ex setting.** of
9330: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52   the [SQLITE_THR
9340: 45 41 44 53 41 46 45 5d 20 66 6c 61 67 2e 20 20  EADSAFE] flag.  
9350: 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  If SQLite is com
9360: 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 53 51  piled with.** SQ
9370: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
9380: 31 20 6f 72 20 3d 32 20 74 68 65 6e 20 6d 75 74  1 or =2 then mut
9390: 65 78 65 73 20 61 72 65 20 65 6e 61 62 6c 65 64  exes are enabled
93a0: 20 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 0a   by default but.
93b0: 2a 2a 20 63 61 6e 20 62 65 20 66 75 6c 6c 79 20  ** can be fully 
93c0: 6f 72 20 70 61 72 74 69 61 6c 6c 79 20 64 69 73  or partially dis
93d0: 61 62 6c 65 64 20 75 73 69 6e 67 20 61 20 63 61  abled using a ca
93e0: 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  ll to [sqlite3_c
93f0: 6f 6e 66 69 67 28 29 5d 0a 2a 2a 20 77 69 74 68  onfig()].** with
9400: 20 74 68 65 20 76 65 72 62 73 20 5b 53 51 4c 49   the verbs [SQLI
9410: 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
9420: 54 48 52 45 41 44 5d 2c 20 5b 53 51 4c 49 54 45  THREAD], [SQLITE
9430: 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52  _CONFIG_MULTITHR
9440: 45 41 44 5d 2c 0a 2a 2a 20 6f 72 20 5b 53 51 4c  EAD],.** or [SQL
9450: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41  ITE_CONFIG_SERIA
9460: 4c 49 5a 45 44 5d 2e 20 20 5e 28 54 68 65 20 72  LIZED].  ^(The r
9470: 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74  eturn value of t
9480: 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 74 68  he.** sqlite3_th
9490: 72 65 61 64 73 61 66 65 28 29 20 66 75 6e 63 74  readsafe() funct
94a0: 69 6f 6e 20 73 68 6f 77 73 20 6f 6e 6c 79 20 74  ion shows only t
94b0: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  he compile-time 
94c0: 73 65 74 74 69 6e 67 20 6f 66 0a 2a 2a 20 74 68  setting of.** th
94d0: 72 65 61 64 20 73 61 66 65 74 79 2c 20 6e 6f 74  read safety, not
94e0: 20 61 6e 79 20 72 75 6e 2d 74 69 6d 65 20 63 68   any run-time ch
94f0: 61 6e 67 65 73 20 74 6f 20 74 68 61 74 20 73 65  anges to that se
9500: 74 74 69 6e 67 20 6d 61 64 65 20 62 79 0a 2a 2a  tting made by.**
9510: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28   sqlite3_config(
9520: 29 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  ). In other word
9530: 73 2c 20 74 68 65 20 72 65 74 75 72 6e 20 76 61  s, the return va
9540: 6c 75 65 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  lue from sqlite3
9550: 5f 74 68 72 65 61 64 73 61 66 65 28 29 0a 2a 2a  _threadsafe().**
9560: 20 69 73 20 75 6e 63 68 61 6e 67 65 64 20 62 79   is unchanged by
9570: 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65   calls to sqlite
9580: 33 5f 63 6f 6e 66 69 67 28 29 2e 29 5e 0a 2a 2a  3_config().)^.**
9590: 0a 2a 2a 20 53 65 65 20 74 68 65 20 5b 74 68 72  .** See the [thr
95a0: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63  eading mode] doc
95b0: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  umentation for a
95c0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
95d0: 61 74 69 6f 6e 2e 0a 2a 2f 0a 53 51 4c 49 54 45  ation..*/.SQLITE
95e0: 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
95f0: 5f 74 68 72 65 61 64 73 61 66 65 28 76 6f 69 64  _threadsafe(void
9600: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
9610: 45 46 3a 20 44 61 74 61 62 61 73 65 20 43 6f 6e  EF: Database Con
9620: 6e 65 63 74 69 6f 6e 20 48 61 6e 64 6c 65 0a 2a  nection Handle.*
9630: 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 64 61 74  * KEYWORDS: {dat
9640: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
9650: 7d 20 7b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  } {database conn
9660: 65 63 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a 20 45  ections}.**.** E
9670: 61 63 68 20 6f 70 65 6e 20 53 51 4c 69 74 65 20  ach open SQLite 
9680: 64 61 74 61 62 61 73 65 20 69 73 20 72 65 70 72  database is repr
9690: 65 73 65 6e 74 65 64 20 62 79 20 61 20 70 6f 69  esented by a poi
96a0: 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61  nter to an insta
96b0: 6e 63 65 20 6f 66 0a 2a 2a 20 74 68 65 20 6f 70  nce of.** the op
96c0: 61 71 75 65 20 73 74 72 75 63 74 75 72 65 20 6e  aque structure n
96d0: 61 6d 65 64 20 22 73 71 6c 69 74 65 33 22 2e 20  amed "sqlite3". 
96e0: 20 49 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f   It is useful to
96f0: 20 74 68 69 6e 6b 20 6f 66 20 61 6e 20 73 71 6c   think of an sql
9700: 69 74 65 33 0a 2a 2a 20 70 6f 69 6e 74 65 72 20  ite3.** pointer 
9710: 61 73 20 61 6e 20 6f 62 6a 65 63 74 2e 20 20 54  as an object.  T
9720: 68 65 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  he [sqlite3_open
9730: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ()], [sqlite3_op
9740: 65 6e 31 36 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20  en16()], and.** 
9750: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
9760: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61  ()] interfaces a
9770: 72 65 20 69 74 73 20 63 6f 6e 73 74 72 75 63 74  re its construct
9780: 6f 72 73 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65  ors, and [sqlite
9790: 33 5f 63 6c 6f 73 65 28 29 5d 0a 2a 2a 20 61 6e  3_close()].** an
97a0: 64 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  d [sqlite3_close
97b0: 5f 76 32 28 29 5d 20 61 72 65 20 69 74 73 20 64  _v2()] are its d
97c0: 65 73 74 72 75 63 74 6f 72 73 2e 20 20 54 68 65  estructors.  The
97d0: 72 65 20 61 72 65 20 6d 61 6e 79 20 6f 74 68 65  re are many othe
97e0: 72 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20  r.** interfaces 
97f0: 28 73 75 63 68 20 61 73 0a 2a 2a 20 5b 73 71 6c  (such as.** [sql
9800: 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
9810: 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 72 65  )], [sqlite3_cre
9820: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 2c  ate_function()],
9830: 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   and.** [sqlite3
9840: 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d  _busy_timeout()]
9850: 20 74 6f 20 6e 61 6d 65 20 62 75 74 20 74 68 72   to name but thr
9860: 65 65 29 20 74 68 61 74 20 61 72 65 20 6d 65 74  ee) that are met
9870: 68 6f 64 73 20 6f 6e 20 61 6e 0a 2a 2a 20 73 71  hods on an.** sq
9880: 6c 69 74 65 33 20 6f 62 6a 65 63 74 2e 0a 2a 2f  lite3 object..*/
9890: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
98a0: 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65 33 3b  sqlite3 sqlite3;
98b0: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
98c0: 3a 20 36 34 2d 42 69 74 20 49 6e 74 65 67 65 72  : 64-Bit Integer
98d0: 20 54 79 70 65 73 0a 2a 2a 20 4b 45 59 57 4f 52   Types.** KEYWOR
98e0: 44 53 3a 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  DS: sqlite_int64
98f0: 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 0a 2a   sqlite_uint64.*
9900: 2a 0a 2a 2a 20 42 65 63 61 75 73 65 20 74 68 65  *.** Because the
9910: 72 65 20 69 73 20 6e 6f 20 63 72 6f 73 73 2d 70  re is no cross-p
9920: 6c 61 74 66 6f 72 6d 20 77 61 79 20 74 6f 20 73  latform way to s
9930: 70 65 63 69 66 79 20 36 34 2d 62 69 74 20 69 6e  pecify 64-bit in
9940: 74 65 67 65 72 20 74 79 70 65 73 0a 2a 2a 20 53  teger types.** S
9950: 51 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20 74  QLite includes t
9960: 79 70 65 64 65 66 73 20 66 6f 72 20 36 34 2d 62  ypedefs for 64-b
9970: 69 74 20 73 69 67 6e 65 64 20 61 6e 64 20 75 6e  it signed and un
9980: 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 2e  signed integers.
9990: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
99a0: 65 33 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c  e3_int64 and sql
99b0: 69 74 65 33 5f 75 69 6e 74 36 34 20 61 72 65 20  ite3_uint64 are 
99c0: 74 68 65 20 70 72 65 66 65 72 72 65 64 20 74 79  the preferred ty
99d0: 70 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 2e 0a  pe definitions..
99e0: 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 5f 69 6e  ** The sqlite_in
99f0: 74 36 34 20 61 6e 64 20 73 71 6c 69 74 65 5f 75  t64 and sqlite_u
9a00: 69 6e 74 36 34 20 74 79 70 65 73 20 61 72 65 20  int64 types are 
9a10: 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20 62 61  supported for ba
9a20: 63 6b 77 61 72 64 73 0a 2a 2a 20 63 6f 6d 70 61  ckwards.** compa
9a30: 74 69 62 69 6c 69 74 79 20 6f 6e 6c 79 2e 0a 2a  tibility only..*
9a40: 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
9a50: 33 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c 69  3_int64 and sqli
9a60: 74 65 5f 69 6e 74 36 34 20 74 79 70 65 73 20 63  te_int64 types c
9a70: 61 6e 20 73 74 6f 72 65 20 69 6e 74 65 67 65 72  an store integer
9a80: 20 76 61 6c 75 65 73 0a 2a 2a 20 62 65 74 77 65   values.** betwe
9a90: 65 6e 20 2d 39 32 32 33 33 37 32 30 33 36 38 35  en -922337203685
9aa0: 34 37 37 35 38 30 38 20 61 6e 64 20 2b 39 32 32  4775808 and +922
9ab0: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
9ac0: 20 69 6e 63 6c 75 73 69 76 65 2e 20 20 5e 54 68   inclusive.  ^Th
9ad0: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75 69 6e  e.** sqlite3_uin
9ae0: 74 36 34 20 61 6e 64 20 73 71 6c 69 74 65 5f 75  t64 and sqlite_u
9af0: 69 6e 74 36 34 20 74 79 70 65 73 20 63 61 6e 20  int64 types can 
9b00: 73 74 6f 72 65 20 69 6e 74 65 67 65 72 20 76 61  store integer va
9b10: 6c 75 65 73 20 0a 2a 2a 20 62 65 74 77 65 65 6e  lues .** between
9b20: 20 30 20 61 6e 64 20 2b 31 38 34 34 36 37 34 34   0 and +18446744
9b30: 30 37 33 37 30 39 35 35 31 36 31 35 20 69 6e 63  073709551615 inc
9b40: 6c 75 73 69 76 65 2e 0a 2a 2f 0a 23 69 66 64 65  lusive..*/.#ifde
9b50: 66 20 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54  f SQLITE_INT64_T
9b60: 59 50 45 0a 20 20 74 79 70 65 64 65 66 20 53 51  YPE.  typedef SQ
9b70: 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59 50 45 20  LITE_INT64_TYPE 
9b80: 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 23 20  sqlite_int64;.# 
9b90: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 55 49 4e  ifdef SQLITE_UIN
9ba0: 54 36 34 5f 54 59 50 45 0a 20 20 20 20 74 79 70  T64_TYPE.    typ
9bb0: 65 64 65 66 20 53 51 4c 49 54 45 5f 55 49 4e 54  edef SQLITE_UINT
9bc0: 36 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 75  64_TYPE sqlite_u
9bd0: 69 6e 74 36 34 3b 0a 23 20 65 6c 73 65 20 20 0a  int64;.# else  .
9be0: 20 20 20 20 74 79 70 65 64 65 66 20 75 6e 73 69      typedef unsi
9bf0: 67 6e 65 64 20 53 51 4c 49 54 45 5f 49 4e 54 36  gned SQLITE_INT6
9c00: 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 75 69  4_TYPE sqlite_ui
9c10: 6e 74 36 34 3b 0a 23 20 65 6e 64 69 66 0a 23 65  nt64;.# endif.#e
9c20: 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 4d 53 43  lif defined(_MSC
9c30: 5f 56 45 52 29 20 7c 7c 20 64 65 66 69 6e 65 64  _VER) || defined
9c40: 28 5f 5f 42 4f 52 4c 41 4e 44 43 5f 5f 29 0a 20  (__BORLANDC__). 
9c50: 20 74 79 70 65 64 65 66 20 5f 5f 69 6e 74 36 34   typedef __int64
9c60: 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 20   sqlite_int64;. 
9c70: 20 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e 65   typedef unsigne
9c80: 64 20 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74 65  d __int64 sqlite
9c90: 5f 75 69 6e 74 36 34 3b 0a 23 65 6c 73 65 0a 20  _uint64;.#else. 
9ca0: 20 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 6c 6f   typedef long lo
9cb0: 6e 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 69 6e  ng int sqlite_in
9cc0: 74 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20 75  t64;.  typedef u
9cd0: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e  nsigned long lon
9ce0: 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 75 69 6e  g int sqlite_uin
9cf0: 74 36 34 3b 0a 23 65 6e 64 69 66 0a 74 79 70 65  t64;.#endif.type
9d00: 64 65 66 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  def sqlite_int64
9d10: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 3b 0a   sqlite3_int64;.
9d20: 74 79 70 65 64 65 66 20 73 71 6c 69 74 65 5f 75  typedef sqlite_u
9d30: 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 75 69  int64 sqlite3_ui
9d40: 6e 74 36 34 3b 0a 0a 2f 2a 0a 2a 2a 20 49 66 20  nt64;../*.** If 
9d50: 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72 20 61 20  compiling for a 
9d60: 70 72 6f 63 65 73 73 6f 72 20 74 68 61 74 20 6c  processor that l
9d70: 61 63 6b 73 20 66 6c 6f 61 74 69 6e 67 20 70 6f  acks floating po
9d80: 69 6e 74 20 73 75 70 70 6f 72 74 2c 0a 2a 2a 20  int support,.** 
9d90: 73 75 62 73 74 69 74 75 74 65 20 69 6e 74 65 67  substitute integ
9da0: 65 72 20 66 6f 72 20 66 6c 6f 61 74 69 6e 67 2d  er for floating-
9db0: 70 6f 69 6e 74 2e 0a 2a 2f 0a 23 69 66 64 65 66  point..*/.#ifdef
9dc0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f   SQLITE_OMIT_FLO
9dd0: 41 54 49 4e 47 5f 50 4f 49 4e 54 0a 23 20 64 65  ATING_POINT.# de
9de0: 66 69 6e 65 20 64 6f 75 62 6c 65 20 73 71 6c 69  fine double sqli
9df0: 74 65 33 5f 69 6e 74 36 34 0a 23 65 6e 64 69 66  te3_int64.#endif
9e00: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
9e10: 3a 20 43 6c 6f 73 69 6e 67 20 41 20 44 61 74 61  : Closing A Data
9e20: 62 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 0a  base Connection.
9e30: 2a 2a 20 44 45 53 54 52 55 43 54 4f 52 3a 20 73  ** DESTRUCTOR: s
9e40: 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68  qlite3.**.** ^Th
9e50: 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28  e sqlite3_close(
9e60: 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63 6c  ) and sqlite3_cl
9e70: 6f 73 65 5f 76 32 28 29 20 72 6f 75 74 69 6e 65  ose_v2() routine
9e80: 73 20 61 72 65 20 64 65 73 74 72 75 63 74 6f 72  s are destructor
9e90: 73 0a 2a 2a 20 66 6f 72 20 74 68 65 20 5b 73 71  s.** for the [sq
9ea0: 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74 2e 0a 2a  lite3] object..*
9eb0: 2a 20 5e 43 61 6c 6c 73 20 74 6f 20 73 71 6c 69  * ^Calls to sqli
9ec0: 74 65 33 5f 63 6c 6f 73 65 28 29 20 61 6e 64 20  te3_close() and 
9ed0: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
9ee0: 28 29 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  () return [SQLIT
9ef0: 45 5f 4f 4b 5d 20 69 66 0a 2a 2a 20 74 68 65 20  E_OK] if.** the 
9f00: 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74  [sqlite3] object
9f10: 20 69 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79   is successfully
9f20: 20 64 65 73 74 72 6f 79 65 64 20 61 6e 64 20 61   destroyed and a
9f30: 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 0a 2a 2a  ll associated.**
9f40: 20 72 65 73 6f 75 72 63 65 73 20 61 72 65 20 64   resources are d
9f50: 65 61 6c 6c 6f 63 61 74 65 64 2e 0a 2a 2a 0a 2a  eallocated..**.*
9f60: 2a 20 5e 49 66 20 74 68 65 20 64 61 74 61 62 61  * ^If the databa
9f70: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  se connection is
9f80: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
9f90: 20 75 6e 66 69 6e 61 6c 69 7a 65 64 20 70 72 65   unfinalized pre
9fa0: 70 61 72 65 64 0a 2a 2a 20 73 74 61 74 65 6d 65  pared.** stateme
9fb0: 6e 74 73 20 6f 72 20 75 6e 66 69 6e 69 73 68 65  nts or unfinishe
9fc0: 64 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  d sqlite3_backup
9fd0: 20 6f 62 6a 65 63 74 73 20 74 68 65 6e 20 73 71   objects then sq
9fe0: 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29 0a 2a 2a  lite3_close().**
9ff0: 20 77 69 6c 6c 20 6c 65 61 76 65 20 74 68 65 20   will leave the 
a000: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
a010: 69 6f 6e 20 6f 70 65 6e 20 61 6e 64 20 72 65 74  ion open and ret
a020: 75 72 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  urn [SQLITE_BUSY
a030: 5d 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65  ]..** ^If sqlite
a040: 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 69 73 20  3_close_v2() is 
a050: 63 61 6c 6c 65 64 20 77 69 74 68 20 75 6e 66 69  called with unfi
a060: 6e 61 6c 69 7a 65 64 20 70 72 65 70 61 72 65 64  nalized prepared
a070: 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 61   statements.** a
a080: 6e 64 2f 6f 72 20 75 6e 66 69 6e 69 73 68 65 64  nd/or unfinished
a090: 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 73   sqlite3_backups
a0a0: 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62  , then the datab
a0b0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62  ase connection b
a0c0: 65 63 6f 6d 65 73 0a 2a 2a 20 61 6e 20 75 6e 75  ecomes.** an unu
a0d0: 73 61 62 6c 65 20 22 7a 6f 6d 62 69 65 22 20 77  sable "zombie" w
a0e0: 68 69 63 68 20 77 69 6c 6c 20 61 75 74 6f 6d 61  hich will automa
a0f0: 74 69 63 61 6c 6c 79 20 62 65 20 64 65 61 6c 6c  tically be deall
a100: 6f 63 61 74 65 64 20 77 68 65 6e 20 74 68 65 0a  ocated when the.
a110: 2a 2a 20 6c 61 73 74 20 70 72 65 70 61 72 65 64  ** last prepared
a120: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 66 69   statement is fi
a130: 6e 61 6c 69 7a 65 64 20 6f 72 20 74 68 65 20 6c  nalized or the l
a140: 61 73 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ast sqlite3_back
a150: 75 70 20 69 73 0a 2a 2a 20 66 69 6e 69 73 68 65  up is.** finishe
a160: 64 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f  d.  The sqlite3_
a170: 63 6c 6f 73 65 5f 76 32 28 29 20 69 6e 74 65 72  close_v2() inter
a180: 66 61 63 65 20 69 73 20 69 6e 74 65 6e 64 65 64  face is intended
a190: 20 66 6f 72 20 75 73 65 20 77 69 74 68 0a 2a 2a   for use with.**
a1a0: 20 68 6f 73 74 20 6c 61 6e 67 75 61 67 65 73 20   host languages 
a1b0: 74 68 61 74 20 61 72 65 20 67 61 72 62 61 67 65  that are garbage
a1c0: 20 63 6f 6c 6c 65 63 74 65 64 2c 20 61 6e 64 20   collected, and 
a1d0: 77 68 65 72 65 20 74 68 65 20 6f 72 64 65 72 20  where the order 
a1e0: 69 6e 20 77 68 69 63 68 0a 2a 2a 20 64 65 73 74  in which.** dest
a1f0: 72 75 63 74 6f 72 73 20 61 72 65 20 63 61 6c 6c  ructors are call
a200: 65 64 20 69 73 20 61 72 62 69 74 72 61 72 79 2e  ed is arbitrary.
a210: 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69  .**.** Applicati
a220: 6f 6e 73 20 73 68 6f 75 6c 64 20 5b 73 71 6c 69  ons should [sqli
a230: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20 7c 20 66  te3_finalize | f
a240: 69 6e 61 6c 69 7a 65 5d 20 61 6c 6c 20 5b 70 72  inalize] all [pr
a250: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
a260: 73 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  s],.** [sqlite3_
a270: 62 6c 6f 62 5f 63 6c 6f 73 65 20 7c 20 63 6c 6f  blob_close | clo
a280: 73 65 5d 20 61 6c 6c 20 5b 42 4c 4f 42 20 68 61  se] all [BLOB ha
a290: 6e 64 6c 65 73 5d 2c 20 61 6e 64 20 0a 2a 2a 20  ndles], and .** 
a2a0: 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f  [sqlite3_backup_
a2b0: 66 69 6e 69 73 68 20 7c 20 66 69 6e 69 73 68 5d  finish | finish]
a2c0: 20 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 62 61   all [sqlite3_ba
a2d0: 63 6b 75 70 5d 20 6f 62 6a 65 63 74 73 20 61 73  ckup] objects as
a2e0: 73 6f 63 69 61 74 65 64 0a 2a 2a 20 77 69 74 68  sociated.** with
a2f0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f   the [sqlite3] o
a300: 62 6a 65 63 74 20 70 72 69 6f 72 20 74 6f 20 61  bject prior to a
a310: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 63 6c 6f  ttempting to clo
a320: 73 65 20 74 68 65 20 6f 62 6a 65 63 74 2e 20 20  se the object.  
a330: 5e 49 66 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63  ^If.** sqlite3_c
a340: 6c 6f 73 65 5f 76 32 28 29 20 69 73 20 63 61 6c  lose_v2() is cal
a350: 6c 65 64 20 6f 6e 20 61 20 5b 64 61 74 61 62 61  led on a [databa
a360: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 74  se connection] t
a370: 68 61 74 20 73 74 69 6c 6c 20 68 61 73 0a 2a 2a  hat still has.**
a380: 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 5b 70 72   outstanding [pr
a390: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
a3a0: 73 5d 2c 20 5b 42 4c 4f 42 20 68 61 6e 64 6c 65  s], [BLOB handle
a3b0: 73 5d 2c 20 61 6e 64 2f 6f 72 0a 2a 2a 20 5b 73  s], and/or.** [s
a3c0: 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f  qlite3_backup] o
a3d0: 62 6a 65 63 74 73 20 74 68 65 6e 20 69 74 20 72  bjects then it r
a3e0: 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f  eturns [SQLITE_O
a3f0: 4b 5d 20 61 6e 64 20 74 68 65 20 64 65 61 6c 6c  K] and the deall
a400: 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 72 65  ocation.** of re
a410: 73 6f 75 72 63 65 73 20 69 73 20 64 65 66 65 72  sources is defer
a420: 72 65 64 20 75 6e 74 69 6c 20 61 6c 6c 20 5b 70  red until all [p
a430: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
a440: 74 73 5d 2c 20 5b 42 4c 4f 42 20 68 61 6e 64 6c  ts], [BLOB handl
a450: 65 73 5d 2c 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c  es],.** and [sql
a460: 69 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f 62 6a  ite3_backup] obj
a470: 65 63 74 73 20 61 72 65 20 61 6c 73 6f 20 64 65  ects are also de
a480: 73 74 72 6f 79 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  stroyed..**.** ^
a490: 49 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5d 20  If an [sqlite3] 
a4a0: 6f 62 6a 65 63 74 20 69 73 20 64 65 73 74 72 6f  object is destro
a4b0: 79 65 64 20 77 68 69 6c 65 20 61 20 74 72 61 6e  yed while a tran
a4c0: 73 61 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 2c  saction is open,
a4d0: 0a 2a 2a 20 74 68 65 20 74 72 61 6e 73 61 63 74  .** the transact
a4e0: 69 6f 6e 20 69 73 20 61 75 74 6f 6d 61 74 69 63  ion is automatic
a4f0: 61 6c 6c 79 20 72 6f 6c 6c 65 64 20 62 61 63 6b  ally rolled back
a500: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 43 20 70 61  ..**.** The C pa
a510: 72 61 6d 65 74 65 72 20 74 6f 20 5b 73 71 6c 69  rameter to [sqli
a520: 74 65 33 5f 63 6c 6f 73 65 28 43 29 5d 20 61 6e  te3_close(C)] an
a530: 64 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  d [sqlite3_close
a540: 5f 76 32 28 43 29 5d 0a 2a 2a 20 6d 75 73 74 20  _v2(C)].** must 
a550: 62 65 20 65 69 74 68 65 72 20 61 20 4e 55 4c 4c  be either a NULL
a560: 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 6f 72 20 61  .** pointer or a
a570: 6e 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65  n [sqlite3] obje
a580: 63 74 20 70 6f 69 6e 74 65 72 20 6f 62 74 61 69  ct pointer obtai
a590: 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c  ned.** from [sql
a5a0: 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73  ite3_open()], [s
a5b0: 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d  qlite3_open16()]
a5c0: 2c 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  , or.** [sqlite3
a5d0: 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 64  _open_v2()], and
a5e0: 20 6e 6f 74 20 70 72 65 76 69 6f 75 73 6c 79 20   not previously 
a5f0: 63 6c 6f 73 65 64 2e 0a 2a 2a 20 5e 43 61 6c 6c  closed..** ^Call
a600: 69 6e 67 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ing sqlite3_clos
a610: 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 63  e() or sqlite3_c
a620: 6c 6f 73 65 5f 76 32 28 29 20 77 69 74 68 20 61  lose_v2() with a
a630: 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a 2a 2a   NULL pointer.**
a640: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 68   argument is a h
a650: 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 2e 0a 2a  armless no-op..*
a660: 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
a670: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 73   sqlite3_close(s
a680: 71 6c 69 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45  qlite3*);.SQLITE
a690: 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
a6a0: 5f 63 6c 6f 73 65 5f 76 32 28 73 71 6c 69 74 65  _close_v2(sqlite
a6b0: 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20  3*);../*.** The 
a6c0: 74 79 70 65 20 66 6f 72 20 61 20 63 61 6c 6c 62  type for a callb
a6d0: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a  ack function..**
a6e0: 20 54 68 69 73 20 69 73 20 6c 65 67 61 63 79 20   This is legacy 
a6f0: 61 6e 64 20 64 65 70 72 65 63 61 74 65 64 2e 20  and deprecated. 
a700: 20 49 74 20 69 73 20 69 6e 63 6c 75 64 65 64 20   It is included 
a710: 66 6f 72 20 68 69 73 74 6f 72 69 63 61 6c 0a 2a  for historical.*
a720: 2a 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  * compatibility 
a730: 61 6e 64 20 69 73 20 6e 6f 74 20 64 6f 63 75 6d  and is not docum
a740: 65 6e 74 65 64 2e 0a 2a 2f 0a 74 79 70 65 64 65  ented..*/.typede
a750: 66 20 69 6e 74 20 28 2a 73 71 6c 69 74 65 33 5f  f int (*sqlite3_
a760: 63 61 6c 6c 62 61 63 6b 29 28 76 6f 69 64 2a 2c  callback)(void*,
a770: 69 6e 74 2c 63 68 61 72 2a 2a 2c 20 63 68 61 72  int,char**, char
a780: 2a 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  **);../*.** CAPI
a790: 33 52 45 46 3a 20 4f 6e 65 2d 53 74 65 70 20 51  3REF: One-Step Q
a7a0: 75 65 72 79 20 45 78 65 63 75 74 69 6f 6e 20 49  uery Execution I
a7b0: 6e 74 65 72 66 61 63 65 0a 2a 2a 20 4d 45 54 48  nterface.** METH
a7c0: 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
a7d0: 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78  * The sqlite3_ex
a7e0: 65 63 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  ec() interface i
a7f0: 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20  s a convenience 
a800: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 0a 2a  wrapper around.*
a810: 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
a820: 72 65 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74  re_v2()], [sqlit
a830: 65 33 5f 73 74 65 70 28 29 5d 2c 20 61 6e 64 20  e3_step()], and 
a840: 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  [sqlite3_finaliz
a850: 65 28 29 5d 2c 0a 2a 2a 20 74 68 61 74 20 61 6c  e()],.** that al
a860: 6c 6f 77 73 20 61 6e 20 61 70 70 6c 69 63 61 74  lows an applicat
a870: 69 6f 6e 20 74 6f 20 72 75 6e 20 6d 75 6c 74 69  ion to run multi
a880: 70 6c 65 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  ple statements o
a890: 66 20 53 51 4c 0a 2a 2a 20 77 69 74 68 6f 75 74  f SQL.** without
a8a0: 20 68 61 76 69 6e 67 20 74 6f 20 75 73 65 20 61   having to use a
a8b0: 20 6c 6f 74 20 6f 66 20 43 20 63 6f 64 65 2e 20   lot of C code. 
a8c0: 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
a8d0: 74 65 33 5f 65 78 65 63 28 29 20 69 6e 74 65 72  te3_exec() inter
a8e0: 66 61 63 65 20 72 75 6e 73 20 7a 65 72 6f 20 6f  face runs zero o
a8f0: 72 20 6d 6f 72 65 20 55 54 46 2d 38 20 65 6e 63  r more UTF-8 enc
a900: 6f 64 65 64 2c 0a 2a 2a 20 73 65 6d 69 63 6f 6c  oded,.** semicol
a910: 6f 6e 2d 73 65 70 61 72 61 74 65 20 53 51 4c 20  on-separate SQL 
a920: 73 74 61 74 65 6d 65 6e 74 73 20 70 61 73 73 65  statements passe
a930: 64 20 69 6e 74 6f 20 69 74 73 20 32 6e 64 20 61  d into its 2nd a
a940: 72 67 75 6d 65 6e 74 2c 0a 2a 2a 20 69 6e 20 74  rgument,.** in t
a950: 68 65 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68  he context of th
a960: 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
a970: 65 63 74 69 6f 6e 5d 20 70 61 73 73 65 64 20 69  ection] passed i
a980: 6e 20 61 73 20 69 74 73 20 31 73 74 0a 2a 2a 20  n as its 1st.** 
a990: 61 72 67 75 6d 65 6e 74 2e 20 20 5e 49 66 20 74  argument.  ^If t
a9a0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
a9b0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 33 72 64 20  tion of the 3rd 
a9c0: 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73  argument to.** s
a9d0: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73  qlite3_exec() is
a9e0: 20 6e 6f 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 20   not NULL, then 
a9f0: 69 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 66 6f  it is invoked fo
aa00: 72 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f  r each result ro
aa10: 77 0a 2a 2a 20 63 6f 6d 69 6e 67 20 6f 75 74 20  w.** coming out 
aa20: 6f 66 20 74 68 65 20 65 76 61 6c 75 61 74 65 64  of the evaluated
aa30: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
aa40: 20 20 5e 54 68 65 20 34 74 68 20 61 72 67 75 6d    ^The 4th argum
aa50: 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65  ent to.** sqlite
aa60: 33 5f 65 78 65 63 28 29 20 69 73 20 72 65 6c 61  3_exec() is rela
aa70: 79 65 64 20 74 68 72 6f 75 67 68 20 74 6f 20 74  yed through to t
aa80: 68 65 20 31 73 74 20 61 72 67 75 6d 65 6e 74 20  he 1st argument 
aa90: 6f 66 20 65 61 63 68 0a 2a 2a 20 63 61 6c 6c 62  of each.** callb
aaa0: 61 63 6b 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20  ack invocation. 
aab0: 20 5e 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63   ^If the callbac
aac0: 6b 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c  k pointer to sql
aad0: 69 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 69  ite3_exec().** i
aae0: 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20  s NULL, then no 
aaf0: 63 61 6c 6c 62 61 63 6b 20 69 73 20 65 76 65 72  callback is ever
ab00: 20 69 6e 76 6f 6b 65 64 20 61 6e 64 20 72 65 73   invoked and res
ab10: 75 6c 74 20 72 6f 77 73 20 61 72 65 0a 2a 2a 20  ult rows are.** 
ab20: 69 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  ignored..**.** ^
ab30: 49 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75  If an error occu
ab40: 72 73 20 77 68 69 6c 65 20 65 76 61 6c 75 61 74  rs while evaluat
ab50: 69 6e 67 20 74 68 65 20 53 51 4c 20 73 74 61 74  ing the SQL stat
ab60: 65 6d 65 6e 74 73 20 70 61 73 73 65 64 20 69 6e  ements passed in
ab70: 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78  to.** sqlite3_ex
ab80: 65 63 28 29 2c 20 74 68 65 6e 20 65 78 65 63 75  ec(), then execu
ab90: 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 75 72 72  tion of the curr
aba0: 65 6e 74 20 73 74 61 74 65 6d 65 6e 74 20 73 74  ent statement st
abb0: 6f 70 73 20 61 6e 64 0a 2a 2a 20 73 75 62 73 65  ops and.** subse
abc0: 71 75 65 6e 74 20 73 74 61 74 65 6d 65 6e 74 73  quent statements
abd0: 20 61 72 65 20 73 6b 69 70 70 65 64 2e 20 20 5e   are skipped.  ^
abe0: 49 66 20 74 68 65 20 35 74 68 20 70 61 72 61 6d  If the 5th param
abf0: 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
ac00: 65 78 65 63 28 29 0a 2a 2a 20 69 73 20 6e 6f 74  exec().** is not
ac10: 20 4e 55 4c 4c 20 74 68 65 6e 20 61 6e 79 20 65   NULL then any e
ac20: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20  rror message is 
ac30: 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d  written into mem
ac40: 6f 72 79 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20  ory obtained.** 
ac50: 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61  from [sqlite3_ma
ac60: 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 70 61 73 73  lloc()] and pass
ac70: 65 64 20 62 61 63 6b 20 74 68 72 6f 75 67 68 20  ed back through 
ac80: 74 68 65 20 35 74 68 20 70 61 72 61 6d 65 74 65  the 5th paramete
ac90: 72 2e 0a 2a 2a 20 54 6f 20 61 76 6f 69 64 20 6d  r..** To avoid m
aca0: 65 6d 6f 72 79 20 6c 65 61 6b 73 2c 20 74 68 65  emory leaks, the
acb0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f   application sho
acc0: 75 6c 64 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69  uld invoke [sqli
acd0: 74 65 33 5f 66 72 65 65 28 29 5d 0a 2a 2a 20 6f  te3_free()].** o
ace0: 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  n error message 
acf0: 73 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64  strings returned
ad00: 20 74 68 72 6f 75 67 68 20 74 68 65 20 35 74 68   through the 5th
ad10: 20 70 61 72 61 6d 65 74 65 72 20 6f 66 0a 2a 2a   parameter of.**
ad20: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
ad30: 61 66 74 65 72 20 74 68 65 20 65 72 72 6f 72 20  after the error 
ad40: 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67 20 69  message string i
ad50: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 6e 65 65 64  s no longer need
ad60: 65 64 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 35  ed..** ^If the 5
ad70: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
ad80: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69  sqlite3_exec() i
ad90: 73 20 6e 6f 74 20 4e 55 4c 4c 20 61 6e 64 20 6e  s not NULL and n
ada0: 6f 20 65 72 72 6f 72 73 0a 2a 2a 20 6f 63 63 75  o errors.** occu
adb0: 72 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  r, then sqlite3_
adc0: 65 78 65 63 28 29 20 73 65 74 73 20 74 68 65 20  exec() sets the 
add0: 70 6f 69 6e 74 65 72 20 69 6e 20 69 74 73 20 35  pointer in its 5
ade0: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a  th parameter to.
adf0: 2a 2a 20 4e 55 4c 4c 20 62 65 66 6f 72 65 20 72  ** NULL before r
ae00: 65 74 75 72 6e 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20  eturning..**.** 
ae10: 5e 49 66 20 61 6e 20 73 71 6c 69 74 65 33 5f 65  ^If an sqlite3_e
ae20: 78 65 63 28 29 20 63 61 6c 6c 62 61 63 6b 20 72  xec() callback r
ae30: 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eturns non-zero,
ae40: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65   the sqlite3_exe
ae50: 63 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 72  c().** routine r
ae60: 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 41 42  eturns SQLITE_AB
ae70: 4f 52 54 20 77 69 74 68 6f 75 74 20 69 6e 76 6f  ORT without invo
ae80: 6b 69 6e 67 20 74 68 65 20 63 61 6c 6c 62 61 63  king the callbac
ae90: 6b 20 61 67 61 69 6e 20 61 6e 64 0a 2a 2a 20 77  k again and.** w
aea0: 69 74 68 6f 75 74 20 72 75 6e 6e 69 6e 67 20 61  ithout running a
aeb0: 6e 79 20 73 75 62 73 65 71 75 65 6e 74 20 53 51  ny subsequent SQ
aec0: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a  L statements..**
aed0: 0a 2a 2a 20 5e 54 68 65 20 32 6e 64 20 61 72 67  .** ^The 2nd arg
aee0: 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 73 71 6c  ument to the sql
aef0: 69 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c 6c  ite3_exec() call
af00: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 69 73  back function is
af10: 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f   the.** number o
af20: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
af30: 20 72 65 73 75 6c 74 2e 20 20 5e 54 68 65 20 33   result.  ^The 3
af40: 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  rd argument to t
af50: 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  he sqlite3_exec(
af60: 29 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69 73  ).** callback is
af70: 20 61 6e 20 61 72 72 61 79 20 6f 66 20 70 6f 69   an array of poi
af80: 6e 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73  nters to strings
af90: 20 6f 62 74 61 69 6e 65 64 20 61 73 20 69 66 20   obtained as if 
afa0: 66 72 6f 6d 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  from.** [sqlite3
afb0: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 29 5d 2c  _column_text()],
afc0: 20 6f 6e 65 20 66 6f 72 20 65 61 63 68 20 63 6f   one for each co
afd0: 6c 75 6d 6e 2e 20 20 5e 49 66 20 61 6e 20 65 6c  lumn.  ^If an el
afe0: 65 6d 65 6e 74 20 6f 66 20 61 0a 2a 2a 20 72 65  ement of a.** re
aff0: 73 75 6c 74 20 72 6f 77 20 69 73 20 4e 55 4c 4c  sult row is NULL
b000: 20 74 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73   then the corres
b010: 70 6f 6e 64 69 6e 67 20 73 74 72 69 6e 67 20 70  ponding string p
b020: 6f 69 6e 74 65 72 20 66 6f 72 20 74 68 65 0a 2a  ointer for the.*
b030: 2a 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  * sqlite3_exec()
b040: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 20 4e   callback is a N
b050: 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e 54  ULL pointer.  ^T
b060: 68 65 20 34 74 68 20 61 72 67 75 6d 65 6e 74 20  he 4th argument 
b070: 74 6f 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65  to the.** sqlite
b080: 33 5f 65 78 65 63 28 29 20 63 61 6c 6c 62 61 63  3_exec() callbac
b090: 6b 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66  k is an array of
b0a0: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 74 72   pointers to str
b0b0: 69 6e 67 73 20 77 68 65 72 65 20 65 61 63 68 0a  ings where each.
b0c0: 2a 2a 20 65 6e 74 72 79 20 72 65 70 72 65 73 65  ** entry represe
b0d0: 6e 74 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  nts the name of 
b0e0: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 72 65  corresponding re
b0f0: 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 61 73 20 6f  sult column as o
b100: 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20  btained.** from 
b110: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
b120: 6e 61 6d 65 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e  name()]..**.** ^
b130: 49 66 20 74 68 65 20 32 6e 64 20 70 61 72 61 6d  If the 2nd param
b140: 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
b150: 65 78 65 63 28 29 20 69 73 20 61 20 4e 55 4c 4c  exec() is a NULL
b160: 20 70 6f 69 6e 74 65 72 2c 20 61 20 70 6f 69 6e   pointer, a poin
b170: 74 65 72 0a 2a 2a 20 74 6f 20 61 6e 20 65 6d 70  ter.** to an emp
b180: 74 79 20 73 74 72 69 6e 67 2c 20 6f 72 20 61 20  ty string, or a 
b190: 70 6f 69 6e 74 65 72 20 74 68 61 74 20 63 6f 6e  pointer that con
b1a0: 74 61 69 6e 73 20 6f 6e 6c 79 20 77 68 69 74 65  tains only white
b1b0: 73 70 61 63 65 20 61 6e 64 2f 6f 72 20 0a 2a 2a  space and/or .**
b1c0: 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 2c 20 74   SQL comments, t
b1d0: 68 65 6e 20 6e 6f 20 53 51 4c 20 73 74 61 74 65  hen no SQL state
b1e0: 6d 65 6e 74 73 20 61 72 65 20 65 76 61 6c 75 61  ments are evalua
b1f0: 74 65 64 20 61 6e 64 20 74 68 65 20 64 61 74 61  ted and the data
b200: 62 61 73 65 0a 2a 2a 20 69 73 20 6e 6f 74 20 63  base.** is not c
b210: 68 61 6e 67 65 64 2e 0a 2a 2a 0a 2a 2a 20 52 65  hanged..**.** Re
b220: 73 74 72 69 63 74 69 6f 6e 73 3a 0a 2a 2a 0a 2a  strictions:.**.*
b230: 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 54  * <ul>.** <li> T
b240: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
b250: 75 73 74 20 65 6e 73 75 72 65 20 74 68 61 74 20  ust ensure that 
b260: 74 68 65 20 31 73 74 20 70 61 72 61 6d 65 74 65  the 1st paramete
b270: 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65  r to sqlite3_exe
b280: 63 28 29 0a 2a 2a 20 20 20 20 20 20 69 73 20 61  c().**      is a
b290: 20 76 61 6c 69 64 20 61 6e 64 20 6f 70 65 6e 20   valid and open 
b2a0: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
b2b0: 74 69 6f 6e 5d 2e 0a 2a 2a 20 3c 6c 69 3e 20 54  tion]..** <li> T
b2c0: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
b2d0: 75 73 74 20 6e 6f 74 20 63 6c 6f 73 65 20 74 68  ust not close th
b2e0: 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
b2f0: 65 63 74 69 6f 6e 5d 20 73 70 65 63 69 66 69 65  ection] specifie
b300: 64 20 62 79 0a 2a 2a 20 20 20 20 20 20 74 68 65  d by.**      the
b310: 20 31 73 74 20 70 61 72 61 6d 65 74 65 72 20 74   1st parameter t
b320: 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  o sqlite3_exec()
b330: 20 77 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 65   while sqlite3_e
b340: 78 65 63 28 29 20 69 73 20 72 75 6e 6e 69 6e 67  xec() is running
b350: 2e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 61 70  ..** <li> The ap
b360: 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e  plication must n
b370: 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 53 51  ot modify the SQ
b380: 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74  L statement text
b390: 20 70 61 73 73 65 64 20 69 6e 74 6f 0a 2a 2a 20   passed into.** 
b3a0: 20 20 20 20 20 74 68 65 20 32 6e 64 20 70 61 72       the 2nd par
b3b0: 61 6d 65 74 65 72 20 6f 66 20 73 71 6c 69 74 65  ameter of sqlite
b3c0: 33 5f 65 78 65 63 28 29 20 77 68 69 6c 65 20 73  3_exec() while s
b3d0: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73  qlite3_exec() is
b3e0: 20 72 75 6e 6e 69 6e 67 2e 0a 2a 2a 20 3c 2f 75   running..** </u
b3f0: 6c 3e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  l>.*/.SQLITE_API
b400: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 65   int sqlite3_exe
b410: 63 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 20  c(.  sqlite3*,  
b420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b440: 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74 61 62  /* An open datab
b450: 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  ase */.  const c
b460: 68 61 72 20 2a 73 71 6c 2c 20 20 20 20 20 20 20  har *sql,       
b470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b480: 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f 20 62 65      /* SQL to be
b490: 20 65 76 61 6c 75 61 74 65 64 20 2a 2f 0a 20 20   evaluated */.  
b4a0: 69 6e 74 20 28 2a 63 61 6c 6c 62 61 63 6b 29 28  int (*callback)(
b4b0: 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a  void*,int,char**
b4c0: 2c 63 68 61 72 2a 2a 29 2c 20 20 2f 2a 20 43 61  ,char**),  /* Ca
b4d0: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
b4e0: 2a 2f 0a 20 20 76 6f 69 64 20 2a 2c 20 20 20 20  */.  void *,    
b4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b510: 2f 2a 20 31 73 74 20 61 72 67 75 6d 65 6e 74 20  /* 1st argument 
b520: 74 6f 20 63 61 6c 6c 62 61 63 6b 20 2a 2f 0a 20  to callback */. 
b530: 20 63 68 61 72 20 2a 2a 65 72 72 6d 73 67 20 20   char **errmsg  
b540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b550: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45              /* E
b560: 72 72 6f 72 20 6d 73 67 20 77 72 69 74 74 65 6e  rror msg written
b570: 20 68 65 72 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a   here */.);../*.
b580: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 65 73  ** CAPI3REF: Res
b590: 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45 59  ult Codes.** KEY
b5a0: 57 4f 52 44 53 3a 20 7b 72 65 73 75 6c 74 20 63  WORDS: {result c
b5b0: 6f 64 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 7d  ode definitions}
b5c0: 0a 2a 2a 0a 2a 2a 20 4d 61 6e 79 20 53 51 4c 69  .**.** Many SQLi
b5d0: 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74  te functions ret
b5e0: 75 72 6e 20 61 6e 20 69 6e 74 65 67 65 72 20 72  urn an integer r
b5f0: 65 73 75 6c 74 20 63 6f 64 65 20 66 72 6f 6d 20  esult code from 
b600: 74 68 65 20 73 65 74 20 73 68 6f 77 6e 0a 2a 2a  the set shown.**
b610: 20 68 65 72 65 20 69 6e 20 6f 72 64 65 72 20 74   here in order t
b620: 6f 20 69 6e 64 69 63 61 74 65 20 73 75 63 63 65  o indicate succe
b630: 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0a 2a  ss or failure..*
b640: 2a 0a 2a 2a 20 4e 65 77 20 65 72 72 6f 72 20 63  *.** New error c
b650: 6f 64 65 73 20 6d 61 79 20 62 65 20 61 64 64 65  odes may be adde
b660: 64 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73  d in future vers
b670: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a  ions of SQLite..
b680: 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
b690: 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74  [extended result
b6a0: 20 63 6f 64 65 20 64 65 66 69 6e 69 74 69 6f 6e   code definition
b6b0: 73 5d 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  s].*/.#define SQ
b6c0: 4c 49 54 45 5f 4f 4b 20 20 20 20 20 20 20 20 20  LITE_OK         
b6d0: 20 20 30 20 20 20 2f 2a 20 53 75 63 63 65 73 73    0   /* Success
b6e0: 66 75 6c 20 72 65 73 75 6c 74 20 2a 2f 0a 2f 2a  ful result */./*
b6f0: 20 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 65 72   beginning-of-er
b700: 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a 23 64 65  ror-codes */.#de
b710: 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 52 52 4f  fine SQLITE_ERRO
b720: 52 20 20 20 20 20 20 20 20 31 20 20 20 2f 2a 20  R        1   /* 
b730: 47 65 6e 65 72 69 63 20 65 72 72 6f 72 20 2a 2f  Generic error */
b740: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b750: 49 4e 54 45 52 4e 41 4c 20 20 20 20 20 32 20 20  INTERNAL     2  
b760: 20 2f 2a 20 49 6e 74 65 72 6e 61 6c 20 6c 6f 67   /* Internal log
b770: 69 63 20 65 72 72 6f 72 20 69 6e 20 53 51 4c 69  ic error in SQLi
b780: 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  te */.#define SQ
b790: 4c 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20 20  LITE_PERM       
b7a0: 20 20 33 20 20 20 2f 2a 20 41 63 63 65 73 73 20    3   /* Access 
b7b0: 70 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65  permission denie
b7c0: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
b7d0: 49 54 45 5f 41 42 4f 52 54 20 20 20 20 20 20 20  ITE_ABORT       
b7e0: 20 34 20 20 20 2f 2a 20 43 61 6c 6c 62 61 63 6b   4   /* Callback
b7f0: 20 72 6f 75 74 69 6e 65 20 72 65 71 75 65 73 74   routine request
b800: 65 64 20 61 6e 20 61 62 6f 72 74 20 2a 2f 0a 23  ed an abort */.#
b810: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42 55  define SQLITE_BU
b820: 53 59 20 20 20 20 20 20 20 20 20 35 20 20 20 2f  SY         5   /
b830: 2a 20 54 68 65 20 64 61 74 61 62 61 73 65 20 66  * The database f
b840: 69 6c 65 20 69 73 20 6c 6f 63 6b 65 64 20 2a 2f  ile is locked */
b850: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b860: 4c 4f 43 4b 45 44 20 20 20 20 20 20 20 36 20 20  LOCKED       6  
b870: 20 2f 2a 20 41 20 74 61 62 6c 65 20 69 6e 20 74   /* A table in t
b880: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6c  he database is l
b890: 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  ocked */.#define
b8a0: 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 20 20   SQLITE_NOMEM   
b8b0: 20 20 20 20 20 37 20 20 20 2f 2a 20 41 20 6d 61       7   /* A ma
b8c0: 6c 6c 6f 63 28 29 20 66 61 69 6c 65 64 20 2a 2f  lloc() failed */
b8d0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b8e0: 52 45 41 44 4f 4e 4c 59 20 20 20 20 20 38 20 20  READONLY     8  
b8f0: 20 2f 2a 20 41 74 74 65 6d 70 74 20 74 6f 20 77   /* Attempt to w
b900: 72 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20  rite a readonly 
b910: 64 61 74 61 62 61 73 65 20 2a 2f 0a 23 64 65 66  database */.#def
b920: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45 52  ine SQLITE_INTER
b930: 52 55 50 54 20 20 20 20 39 20 20 20 2f 2a 20 4f  RUPT    9   /* O
b940: 70 65 72 61 74 69 6f 6e 20 74 65 72 6d 69 6e 61  peration termina
b950: 74 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 69  ted by sqlite3_i
b960: 6e 74 65 72 72 75 70 74 28 29 2a 2f 0a 23 64 65  nterrupt()*/.#de
b970: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52  fine SQLITE_IOER
b980: 52 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20  R       10   /* 
b990: 53 6f 6d 65 20 6b 69 6e 64 20 6f 66 20 64 69 73  Some kind of dis
b9a0: 6b 20 49 2f 4f 20 65 72 72 6f 72 20 6f 63 63 75  k I/O error occu
b9b0: 72 72 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rred */.#define 
b9c0: 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 20  SQLITE_CORRUPT  
b9d0: 20 20 20 31 31 20 20 20 2f 2a 20 54 68 65 20 64     11   /* The d
b9e0: 61 74 61 62 61 73 65 20 64 69 73 6b 20 69 6d 61  atabase disk ima
b9f0: 67 65 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64 20  ge is malformed 
ba00: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
ba10: 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20 20 31 32  E_NOTFOUND    12
ba20: 20 20 20 2f 2a 20 55 6e 6b 6e 6f 77 6e 20 6f 70     /* Unknown op
ba30: 63 6f 64 65 20 69 6e 20 73 71 6c 69 74 65 33 5f  code in sqlite3_
ba40: 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 20 2a  file_control() *
ba50: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
ba60: 5f 46 55 4c 4c 20 20 20 20 20 20 20 20 31 33 20  _FULL        13 
ba70: 20 20 2f 2a 20 49 6e 73 65 72 74 69 6f 6e 20 66    /* Insertion f
ba80: 61 69 6c 65 64 20 62 65 63 61 75 73 65 20 64 61  ailed because da
ba90: 74 61 62 61 73 65 20 69 73 20 66 75 6c 6c 20 2a  tabase is full *
baa0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
bab0: 5f 43 41 4e 54 4f 50 45 4e 20 20 20 20 31 34 20  _CANTOPEN    14 
bac0: 20 20 2f 2a 20 55 6e 61 62 6c 65 20 74 6f 20 6f    /* Unable to o
bad0: 70 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  pen the database
bae0: 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65   file */.#define
baf0: 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f 4c   SQLITE_PROTOCOL
bb00: 20 20 20 20 31 35 20 20 20 2f 2a 20 44 61 74 61      15   /* Data
bb10: 62 61 73 65 20 6c 6f 63 6b 20 70 72 6f 74 6f 63  base lock protoc
bb20: 6f 6c 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66  ol error */.#def
bb30: 69 6e 65 20 53 51 4c 49 54 45 5f 45 4d 50 54 59  ine SQLITE_EMPTY
bb40: 20 20 20 20 20 20 20 31 36 20 20 20 2f 2a 20 49         16   /* I
bb50: 6e 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79  nternal use only
bb60: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
bb70: 54 45 5f 53 43 48 45 4d 41 20 20 20 20 20 20 31  TE_SCHEMA      1
bb80: 37 20 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62  7   /* The datab
bb90: 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67  ase schema chang
bba0: 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ed */.#define SQ
bbb0: 4c 49 54 45 5f 54 4f 4f 42 49 47 20 20 20 20 20  LITE_TOOBIG     
bbc0: 20 31 38 20 20 20 2f 2a 20 53 74 72 69 6e 67 20   18   /* String 
bbd0: 6f 72 20 42 4c 4f 42 20 65 78 63 65 65 64 73 20  or BLOB exceeds 
bbe0: 73 69 7a 65 20 6c 69 6d 69 74 20 2a 2f 0a 23 64  size limit */.#d
bbf0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
bc00: 53 54 52 41 49 4e 54 20 20 31 39 20 20 20 2f 2a  STRAINT  19   /*
bc10: 20 41 62 6f 72 74 20 64 75 65 20 74 6f 20 63 6f   Abort due to co
bc20: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
bc30: 6f 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  on */.#define SQ
bc40: 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 20 20  LITE_MISMATCH   
bc50: 20 32 30 20 20 20 2f 2a 20 44 61 74 61 20 74 79   20   /* Data ty
bc60: 70 65 20 6d 69 73 6d 61 74 63 68 20 2a 2f 0a 23  pe mismatch */.#
bc70: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49  define SQLITE_MI
bc80: 53 55 53 45 20 20 20 20 20 20 32 31 20 20 20 2f  SUSE      21   /
bc90: 2a 20 4c 69 62 72 61 72 79 20 75 73 65 64 20 69  * Library used i
bca0: 6e 63 6f 72 72 65 63 74 6c 79 20 2a 2f 0a 23 64  ncorrectly */.#d
bcb0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 4c  efine SQLITE_NOL
bcc0: 46 53 20 20 20 20 20 20 20 32 32 20 20 20 2f 2a  FS       22   /*
bcd0: 20 55 73 65 73 20 4f 53 20 66 65 61 74 75 72 65   Uses OS feature
bce0: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20  s not supported 
bcf0: 6f 6e 20 68 6f 73 74 20 2a 2f 0a 23 64 65 66 69  on host */.#defi
bd00: 6e 65 20 53 51 4c 49 54 45 5f 41 55 54 48 20 20  ne SQLITE_AUTH  
bd10: 20 20 20 20 20 20 32 33 20 20 20 2f 2a 20 41 75        23   /* Au
bd20: 74 68 6f 72 69 7a 61 74 69 6f 6e 20 64 65 6e 69  thorization deni
bd30: 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ed */.#define SQ
bd40: 4c 49 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20  LITE_FORMAT     
bd50: 20 32 34 20 20 20 2f 2a 20 4e 6f 74 20 75 73 65   24   /* Not use
bd60: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
bd70: 49 54 45 5f 52 41 4e 47 45 20 20 20 20 20 20 20  ITE_RANGE       
bd80: 32 35 20 20 20 2f 2a 20 32 6e 64 20 70 61 72 61  25   /* 2nd para
bd90: 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33  meter to sqlite3
bda0: 5f 62 69 6e 64 20 6f 75 74 20 6f 66 20 72 61 6e  _bind out of ran
bdb0: 67 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ge */.#define SQ
bdc0: 4c 49 54 45 5f 4e 4f 54 41 44 42 20 20 20 20 20  LITE_NOTADB     
bdd0: 20 32 36 20 20 20 2f 2a 20 46 69 6c 65 20 6f 70   26   /* File op
bde0: 65 6e 65 64 20 74 68 61 74 20 69 73 20 6e 6f 74  ened that is not
bdf0: 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65   a database file
be00: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
be10: 54 45 5f 4e 4f 54 49 43 45 20 20 20 20 20 20 32  TE_NOTICE      2
be20: 37 20 20 20 2f 2a 20 4e 6f 74 69 66 69 63 61 74  7   /* Notificat
be30: 69 6f 6e 73 20 66 72 6f 6d 20 73 71 6c 69 74 65  ions from sqlite
be40: 33 5f 6c 6f 67 28 29 20 2a 2f 0a 23 64 65 66 69  3_log() */.#defi
be50: 6e 65 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e  ne SQLITE_WARNIN
be60: 47 20 20 20 20 20 32 38 20 20 20 2f 2a 20 57 61  G     28   /* Wa
be70: 72 6e 69 6e 67 73 20 66 72 6f 6d 20 73 71 6c 69  rnings from sqli
be80: 74 65 33 5f 6c 6f 67 28 29 20 2a 2f 0a 23 64 65  te3_log() */.#de
be90: 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 4f 57 20  fine SQLITE_ROW 
bea0: 20 20 20 20 20 20 20 20 31 30 30 20 20 2f 2a 20          100  /* 
beb0: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 68  sqlite3_step() h
bec0: 61 73 20 61 6e 6f 74 68 65 72 20 72 6f 77 20 72  as another row r
bed0: 65 61 64 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20  eady */.#define 
bee0: 53 51 4c 49 54 45 5f 44 4f 4e 45 20 20 20 20 20  SQLITE_DONE     
bef0: 20 20 20 31 30 31 20 20 2f 2a 20 73 71 6c 69 74     101  /* sqlit
bf00: 65 33 5f 73 74 65 70 28 29 20 68 61 73 20 66 69  e3_step() has fi
bf10: 6e 69 73 68 65 64 20 65 78 65 63 75 74 69 6e 67  nished executing
bf20: 20 2a 2f 0a 2f 2a 20 65 6e 64 2d 6f 66 2d 65 72   */./* end-of-er
bf30: 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a 0a 2f 2a  ror-codes */../*
bf40: 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 45 78  .** CAPI3REF: Ex
bf50: 74 65 6e 64 65 64 20 52 65 73 75 6c 74 20 43 6f  tended Result Co
bf60: 64 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a  des.** KEYWORDS:
bf70: 20 7b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c   {extended resul
bf80: 74 20 63 6f 64 65 20 64 65 66 69 6e 69 74 69 6f  t code definitio
bf90: 6e 73 7d 0a 2a 2a 0a 2a 2a 20 49 6e 20 69 74 73  ns}.**.** In its
bfa0: 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 69 67 75   default configu
bfb0: 72 61 74 69 6f 6e 2c 20 53 51 4c 69 74 65 20 41  ration, SQLite A
bfc0: 50 49 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75  PI routines retu
bfd0: 72 6e 20 6f 6e 65 20 6f 66 20 33 30 20 69 6e 74  rn one of 30 int
bfe0: 65 67 65 72 0a 2a 2a 20 5b 72 65 73 75 6c 74 20  eger.** [result 
bff0: 63 6f 64 65 73 5d 2e 20 20 48 6f 77 65 76 65 72  codes].  However
c000: 2c 20 65 78 70 65 72 69 65 6e 63 65 20 68 61 73  , experience has
c010: 20 73 68 6f 77 6e 20 74 68 61 74 20 6d 61 6e 79   shown that many
c020: 20 6f 66 0a 2a 2a 20 74 68 65 73 65 20 72 65 73   of.** these res
c030: 75 6c 74 20 63 6f 64 65 73 20 61 72 65 20 74 6f  ult codes are to
c040: 6f 20 63 6f 61 72 73 65 2d 67 72 61 69 6e 65 64  o coarse-grained
c050: 2e 20 20 54 68 65 79 20 64 6f 20 6e 6f 74 20 70  .  They do not p
c060: 72 6f 76 69 64 65 20 61 73 0a 2a 2a 20 6d 75 63  rovide as.** muc
c070: 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  h information ab
c080: 6f 75 74 20 70 72 6f 62 6c 65 6d 73 20 61 73 20  out problems as 
c090: 70 72 6f 67 72 61 6d 6d 65 72 73 20 6d 69 67 68  programmers migh
c0a0: 74 20 6c 69 6b 65 2e 20 20 49 6e 20 61 6e 20 65  t like.  In an e
c0b0: 66 66 6f 72 74 20 74 6f 0a 2a 2a 20 61 64 64 72  ffort to.** addr
c0c0: 65 73 73 20 74 68 69 73 2c 20 6e 65 77 65 72 20  ess this, newer 
c0d0: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
c0e0: 74 65 20 28 76 65 72 73 69 6f 6e 20 33 2e 33 2e  te (version 3.3.
c0f0: 38 20 5b 64 61 74 65 6f 66 3a 33 2e 33 2e 38 5d  8 [dateof:3.3.8]
c100: 0a 2a 2a 20 61 6e 64 20 6c 61 74 65 72 29 20 69  .** and later) i
c110: 6e 63 6c 75 64 65 0a 2a 2a 20 73 75 70 70 6f 72  nclude.** suppor
c120: 74 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  t for additional
c130: 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 74 68   result codes th
c140: 61 74 20 70 72 6f 76 69 64 65 20 6d 6f 72 65 20  at provide more 
c150: 64 65 74 61 69 6c 65 64 20 69 6e 66 6f 72 6d 61  detailed informa
c160: 74 69 6f 6e 0a 2a 2a 20 61 62 6f 75 74 20 65 72  tion.** about er
c170: 72 6f 72 73 2e 20 54 68 65 73 65 20 5b 65 78 74  rors. These [ext
c180: 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
c190: 65 73 5d 20 61 72 65 20 65 6e 61 62 6c 65 64 20  es] are enabled 
c1a0: 6f 72 20 64 69 73 61 62 6c 65 64 0a 2a 2a 20 6f  or disabled.** o
c1b0: 6e 20 61 20 70 65 72 20 64 61 74 61 62 61 73 65  n a per database
c1c0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 61 73 69   connection basi
c1d0: 73 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b  s using the.** [
c1e0: 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
c1f0: 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 29 5d  _result_codes()]
c200: 20 41 50 49 2e 20 20 4f 72 2c 20 74 68 65 20 65   API.  Or, the e
c210: 78 74 65 6e 64 65 64 20 63 6f 64 65 20 66 6f 72  xtended code for
c220: 0a 2a 2a 20 74 68 65 20 6d 6f 73 74 20 72 65 63  .** the most rec
c230: 65 6e 74 20 65 72 72 6f 72 20 63 61 6e 20 62 65  ent error can be
c240: 20 6f 62 74 61 69 6e 65 64 20 75 73 69 6e 67 0a   obtained using.
c250: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78 74 65  ** [sqlite3_exte
c260: 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 29 5d 2e  nded_errcode()].
c270: 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
c280: 54 45 5f 45 52 52 4f 52 5f 4d 49 53 53 49 4e 47  TE_ERROR_MISSING
c290: 5f 43 4f 4c 4c 53 45 51 20 20 20 28 53 51 4c 49  _COLLSEQ   (SQLI
c2a0: 54 45 5f 45 52 52 4f 52 20 7c 20 28 31 3c 3c 38  TE_ERROR | (1<<8
c2b0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c2c0: 45 5f 45 52 52 4f 52 5f 52 45 54 52 59 20 20 20  E_ERROR_RETRY   
c2d0: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c2e0: 45 5f 45 52 52 4f 52 20 7c 20 28 32 3c 3c 38 29  E_ERROR | (2<<8)
c2f0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c300: 5f 45 52 52 4f 52 5f 53 4e 41 50 53 48 4f 54 20  _ERROR_SNAPSHOT 
c310: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c320: 5f 45 52 52 4f 52 20 7c 20 28 33 3c 3c 38 29 29  _ERROR | (3<<8))
c330: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
c340: 49 4f 45 52 52 5f 52 45 41 44 20 20 20 20 20 20  IOERR_READ      
c350: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
c360: 49 4f 45 52 52 20 7c 20 28 31 3c 3c 38 29 29 0a  IOERR | (1<<8)).
c370: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c380: 4f 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20  OERR_SHORT_READ 
c390: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c3a0: 4f 45 52 52 20 7c 20 28 32 3c 3c 38 29 29 0a 23  OERR | (2<<8)).#
c3b0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
c3c0: 45 52 52 5f 57 52 49 54 45 20 20 20 20 20 20 20  ERR_WRITE       
c3d0: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f        (SQLITE_IO
c3e0: 45 52 52 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64  ERR | (3<<8)).#d
c3f0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45  efine SQLITE_IOE
c400: 52 52 5f 46 53 59 4e 43 20 20 20 20 20 20 20 20  RR_FSYNC        
c410: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45       (SQLITE_IOE
c420: 52 52 20 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65  RR | (4<<8)).#de
c430: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52  fine SQLITE_IOER
c440: 52 5f 44 49 52 5f 46 53 59 4e 43 20 20 20 20 20  R_DIR_FSYNC     
c450: 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52      (SQLITE_IOER
c460: 52 20 7c 20 28 35 3c 3c 38 29 29 0a 23 64 65 66  R | (5<<8)).#def
c470: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c480: 5f 54 52 55 4e 43 41 54 45 20 20 20 20 20 20 20  _TRUNCATE       
c490: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c4a0: 20 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65 66 69   | (6<<8)).#defi
c4b0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
c4c0: 46 53 54 41 54 20 20 20 20 20 20 20 20 20 20 20  FSTAT           
c4d0: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
c4e0: 7c 20 28 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (7<<8)).#defin
c4f0: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 55  e SQLITE_IOERR_U
c500: 4e 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20  NLOCK           
c510: 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   (SQLITE_IOERR |
c520: 20 28 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (8<<8)).#define
c530: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52 44   SQLITE_IOERR_RD
c540: 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20  LOCK            
c550: 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  (SQLITE_IOERR | 
c560: 28 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (9<<8)).#define 
c570: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 45 4c  SQLITE_IOERR_DEL
c580: 45 54 45 20 20 20 20 20 20 20 20 20 20 20 20 28  ETE            (
c590: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c5a0: 31 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  10<<8)).#define 
c5b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 4c 4f  SQLITE_IOERR_BLO
c5c0: 43 4b 45 44 20 20 20 20 20 20 20 20 20 20 20 28  CKED           (
c5d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c5e0: 31 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  11<<8)).#define 
c5f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4e 4f 4d  SQLITE_IOERR_NOM
c600: 45 4d 20 20 20 20 20 20 20 20 20 20 20 20 20 28  EM             (
c610: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c620: 31 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  12<<8)).#define 
c630: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41 43 43  SQLITE_IOERR_ACC
c640: 45 53 53 20 20 20 20 20 20 20 20 20 20 20 20 28  ESS            (
c650: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c660: 31 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  13<<8)).#define 
c670: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 48 45  SQLITE_IOERR_CHE
c680: 43 4b 52 45 53 45 52 56 45 44 4c 4f 43 4b 20 28  CKRESERVEDLOCK (
c690: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c6a0: 31 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  14<<8)).#define 
c6b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4c 4f 43  SQLITE_IOERR_LOC
c6c0: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  K              (
c6d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c6e0: 31 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  15<<8)).#define 
c6f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4c 4f  SQLITE_IOERR_CLO
c700: 53 45 20 20 20 20 20 20 20 20 20 20 20 20 20 28  SE             (
c710: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c720: 31 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  16<<8)).#define 
c730: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52  SQLITE_IOERR_DIR
c740: 5f 43 4c 4f 53 45 20 20 20 20 20 20 20 20 20 28  _CLOSE         (
c750: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c760: 31 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  17<<8)).#define 
c770: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
c780: 4f 50 45 4e 20 20 20 20 20 20 20 20 20 20 20 28  OPEN           (
c790: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c7a0: 31 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  18<<8)).#define 
c7b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
c7c0: 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 28  SIZE           (
c7d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c7e0: 31 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  19<<8)).#define 
c7f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
c800: 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 28  LOCK           (
c810: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c820: 32 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  20<<8)).#define 
c830: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
c840: 4d 41 50 20 20 20 20 20 20 20 20 20 20 20 20 28  MAP            (
c850: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c860: 32 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  21<<8)).#define 
c870: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 45 45  SQLITE_IOERR_SEE
c880: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  K              (
c890: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c8a0: 32 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  22<<8)).#define 
c8b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 45 4c  SQLITE_IOERR_DEL
c8c0: 45 54 45 5f 4e 4f 45 4e 54 20 20 20 20 20 20 28  ETE_NOENT      (
c8d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c8e0: 32 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  23<<8)).#define 
c8f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4d 4d 41  SQLITE_IOERR_MMA
c900: 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  P              (
c910: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c920: 32 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  24<<8)).#define 
c930: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 47 45 54  SQLITE_IOERR_GET
c940: 54 45 4d 50 50 41 54 48 20 20 20 20 20 20 20 28  TEMPPATH       (
c950: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c960: 32 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  25<<8)).#define 
c970: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f 4e  SQLITE_IOERR_CON
c980: 56 50 41 54 48 20 20 20 20 20 20 20 20 20 20 28  VPATH          (
c990: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c9a0: 32 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  26<<8)).#define 
c9b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 56 4e 4f  SQLITE_IOERR_VNO
c9c0: 44 45 20 20 20 20 20 20 20 20 20 20 20 20 20 28  DE             (
c9d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c9e0: 32 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  27<<8)).#define 
c9f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41 55 54  SQLITE_IOERR_AUT
ca00: 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  H              (
ca10: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
ca20: 32 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  28<<8)).#define 
ca30: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 45 47  SQLITE_IOERR_BEG
ca40: 49 4e 5f 41 54 4f 4d 49 43 20 20 20 20 20 20 28  IN_ATOMIC      (
ca50: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
ca60: 32 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  29<<8)).#define 
ca70: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f 4d  SQLITE_IOERR_COM
ca80: 4d 49 54 5f 41 54 4f 4d 49 43 20 20 20 20 20 28  MIT_ATOMIC     (
ca90: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
caa0: 33 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  30<<8)).#define 
cab0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52 4f 4c  SQLITE_IOERR_ROL
cac0: 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 20 20 20 28  LBACK_ATOMIC   (
cad0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
cae0: 33 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  31<<8)).#define 
caf0: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 53 48  SQLITE_LOCKED_SH
cb00: 41 52 45 44 43 41 43 48 45 20 20 20 20 20 20 28  AREDCACHE      (
cb10: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 7c 20  SQLITE_LOCKED | 
cb20: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
cb30: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 56   SQLITE_LOCKED_V
cb40: 54 41 42 20 20 20 20 20 20 20 20 20 20 20 20 20  TAB             
cb50: 28 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 7c  (SQLITE_LOCKED |
cb60: 20 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e    (2<<8)).#defin
cb70: 65 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 52 45  e SQLITE_BUSY_RE
cb80: 43 4f 56 45 52 59 20 20 20 20 20 20 20 20 20 20  COVERY          
cb90: 20 28 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20   (SQLITE_BUSY   
cba0: 7c 20 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69  |  (1<<8)).#defi
cbb0: 6e 65 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 53  ne SQLITE_BUSY_S
cbc0: 4e 41 50 53 48 4f 54 20 20 20 20 20 20 20 20 20  NAPSHOT         
cbd0: 20 20 28 53 51 4c 49 54 45 5f 42 55 53 59 20 20    (SQLITE_BUSY  
cbe0: 20 7c 20 20 28 32 3c 3c 38 29 29 0a 23 64 65 66   |  (2<<8)).#def
cbf0: 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f  ine SQLITE_CANTO
cc00: 50 45 4e 5f 4e 4f 54 45 4d 50 44 49 52 20 20 20  PEN_NOTEMPDIR   
cc10: 20 20 20 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f     (SQLITE_CANTO
cc20: 50 45 4e 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  PEN | (1<<8)).#d
cc30: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e  efine SQLITE_CAN
cc40: 54 4f 50 45 4e 5f 49 53 44 49 52 20 20 20 20 20  TOPEN_ISDIR     
cc50: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43 41 4e       (SQLITE_CAN
cc60: 54 4f 50 45 4e 20 7c 20 28 32 3c 3c 38 29 29 0a  TOPEN | (2<<8)).
cc70: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
cc80: 41 4e 54 4f 50 45 4e 5f 46 55 4c 4c 50 41 54 48  ANTOPEN_FULLPATH
cc90: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43         (SQLITE_C
cca0: 41 4e 54 4f 50 45 4e 20 7c 20 28 33 3c 3c 38 29  ANTOPEN | (3<<8)
ccb0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
ccc0: 5f 43 41 4e 54 4f 50 45 4e 5f 43 4f 4e 56 50 41  _CANTOPEN_CONVPA
ccd0: 54 48 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  TH       (SQLITE
cce0: 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 34 3c 3c  _CANTOPEN | (4<<
ccf0: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
cd00: 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 44 49 52 54  TE_CANTOPEN_DIRT
cd10: 59 57 41 4c 20 20 20 20 20 20 20 28 53 51 4c 49  YWAL       (SQLI
cd20: 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 35  TE_CANTOPEN | (5
cd30: 3c 3c 38 29 29 20 2f 2a 20 4e 6f 74 20 55 73 65  <<8)) /* Not Use
cd40: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
cd50: 49 54 45 5f 43 4f 52 52 55 50 54 5f 56 54 41 42  ITE_CORRUPT_VTAB
cd60: 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c              (SQL
cd70: 49 54 45 5f 43 4f 52 52 55 50 54 20 7c 20 28 31  ITE_CORRUPT | (1
cd80: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
cd90: 4c 49 54 45 5f 43 4f 52 52 55 50 54 5f 53 45 51  LITE_CORRUPT_SEQ
cda0: 55 45 4e 43 45 20 20 20 20 20 20 20 20 28 53 51  UENCE        (SQ
cdb0: 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 7c 20 28  LITE_CORRUPT | (
cdc0: 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  2<<8)).#define S
cdd0: 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 52  QLITE_READONLY_R
cde0: 45 43 4f 56 45 52 59 20 20 20 20 20 20 20 28 53  ECOVERY       (S
cdf0: 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c  QLITE_READONLY |
ce00: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
ce10: 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59   SQLITE_READONLY
ce20: 5f 43 41 4e 54 4c 4f 43 4b 20 20 20 20 20 20 20  _CANTLOCK       
ce30: 28 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59  (SQLITE_READONLY
ce40: 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69   | (2<<8)).#defi
ce50: 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e  ne SQLITE_READON
ce60: 4c 59 5f 52 4f 4c 4c 42 41 43 4b 20 20 20 20 20  LY_ROLLBACK     
ce70: 20 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e    (SQLITE_READON
ce80: 4c 59 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64 65  LY | (3<<8)).#de
ce90: 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44  fine SQLITE_READ
cea0: 4f 4e 4c 59 5f 44 42 4d 4f 56 45 44 20 20 20 20  ONLY_DBMOVED    
ceb0: 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41 44      (SQLITE_READ
cec0: 4f 4e 4c 59 20 7c 20 28 34 3c 3c 38 29 29 0a 23  ONLY | (4<<8)).#
ced0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45  define SQLITE_RE
cee0: 41 44 4f 4e 4c 59 5f 43 41 4e 54 49 4e 49 54 20  ADONLY_CANTINIT 
cef0: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45        (SQLITE_RE
cf00: 41 44 4f 4e 4c 59 20 7c 20 28 35 3c 3c 38 29 29  ADONLY | (5<<8))
cf10: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cf20: 52 45 41 44 4f 4e 4c 59 5f 44 49 52 45 43 54 4f  READONLY_DIRECTO
cf30: 52 59 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  RY      (SQLITE_
cf40: 52 45 41 44 4f 4e 4c 59 20 7c 20 28 36 3c 3c 38  READONLY | (6<<8
cf50: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
cf60: 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42 41 43 4b  E_ABORT_ROLLBACK
cf70: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
cf80: 45 5f 41 42 4f 52 54 20 7c 20 28 32 3c 3c 38 29  E_ABORT | (2<<8)
cf90: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
cfa0: 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43 48 45 43  _CONSTRAINT_CHEC
cfb0: 4b 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  K        (SQLITE
cfc0: 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 31  _CONSTRAINT | (1
cfd0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
cfe0: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  LITE_CONSTRAINT_
cff0: 43 4f 4d 4d 49 54 48 4f 4f 4b 20 20 20 28 53 51  COMMITHOOK   (SQ
d000: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
d010: 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (2<<8)).#defin
d020: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
d030: 49 4e 54 5f 46 4f 52 45 49 47 4e 4b 45 59 20 20  INT_FOREIGNKEY  
d040: 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41   (SQLITE_CONSTRA
d050: 49 4e 54 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64  INT | (3<<8)).#d
d060: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
d070: 53 54 52 41 49 4e 54 5f 46 55 4e 43 54 49 4f 4e  STRAINT_FUNCTION
d080: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e       (SQLITE_CON
d090: 53 54 52 41 49 4e 54 20 7c 20 28 34 3c 3c 38 29  STRAINT | (4<<8)
d0a0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
d0b0: 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4e 4f 54 4e  _CONSTRAINT_NOTN
d0c0: 55 4c 4c 20 20 20 20 20 20 28 53 51 4c 49 54 45  ULL      (SQLITE
d0d0: 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 35  _CONSTRAINT | (5
d0e0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
d0f0: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  LITE_CONSTRAINT_
d100: 50 52 49 4d 41 52 59 4b 45 59 20 20 20 28 53 51  PRIMARYKEY   (SQ
d110: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
d120: 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (6<<8)).#defin
d130: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
d140: 49 4e 54 5f 54 52 49 47 47 45 52 20 20 20 20 20  INT_TRIGGER     
d150: 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41   (SQLITE_CONSTRA
d160: 49 4e 54 20 7c 20 28 37 3c 3c 38 29 29 0a 23 64  INT | (7<<8)).#d
d170: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
d180: 53 54 52 41 49 4e 54 5f 55 4e 49 51 55 45 20 20  STRAINT_UNIQUE  
d190: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e       (SQLITE_CON
d1a0: 53 54 52 41 49 4e 54 20 7c 20 28 38 3c 3c 38 29  STRAINT | (8<<8)
d1b0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
d1c0: 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 56 54 41 42  _CONSTRAINT_VTAB
d1d0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
d1e0: 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 39  _CONSTRAINT | (9
d1f0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
d200: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  LITE_CONSTRAINT_
d210: 52 4f 57 49 44 20 20 20 20 20 20 20 20 28 53 51  ROWID        (SQ
d220: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
d230: 7c 28 31 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e  |(10<<8)).#defin
d240: 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 5f  e SQLITE_NOTICE_
d250: 52 45 43 4f 56 45 52 5f 57 41 4c 20 20 20 20 20  RECOVER_WAL     
d260: 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20   (SQLITE_NOTICE 
d270: 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (1<<8)).#defin
d280: 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 5f  e SQLITE_NOTICE_
d290: 52 45 43 4f 56 45 52 5f 52 4f 4c 4c 42 41 43 4b  RECOVER_ROLLBACK
d2a0: 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20   (SQLITE_NOTICE 
d2b0: 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (2<<8)).#defin
d2c0: 65 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47  e SQLITE_WARNING
d2d0: 5f 41 55 54 4f 49 4e 44 45 58 20 20 20 20 20 20  _AUTOINDEX      
d2e0: 20 28 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47   (SQLITE_WARNING
d2f0: 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69   | (1<<8)).#defi
d300: 6e 65 20 53 51 4c 49 54 45 5f 41 55 54 48 5f 55  ne SQLITE_AUTH_U
d310: 53 45 52 20 20 20 20 20 20 20 20 20 20 20 20 20  SER             
d320: 20 20 28 53 51 4c 49 54 45 5f 41 55 54 48 20 7c    (SQLITE_AUTH |
d330: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
d340: 20 53 51 4c 49 54 45 5f 4f 4b 5f 4c 4f 41 44 5f   SQLITE_OK_LOAD_
d350: 50 45 52 4d 41 4e 45 4e 54 4c 59 20 20 20 20 20  PERMANENTLY     
d360: 28 53 51 4c 49 54 45 5f 4f 4b 20 7c 20 28 31 3c  (SQLITE_OK | (1<
d370: 3c 38 29 29 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  <8))../*.** CAPI
d380: 33 52 45 46 3a 20 46 6c 61 67 73 20 46 6f 72 20  3REF: Flags For 
d390: 46 69 6c 65 20 4f 70 65 6e 20 4f 70 65 72 61 74  File Open Operat
d3a0: 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  ions.**.** These
d3b0: 20 62 69 74 20 76 61 6c 75 65 73 20 61 72 65 20   bit values are 
d3c0: 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65  intended for use
d3d0: 20 69 6e 20 74 68 65 0a 2a 2a 20 33 72 64 20 70   in the.** 3rd p
d3e0: 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
d3f0: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
d400: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61 6e  ()] interface an
d410: 64 0a 2a 2a 20 69 6e 20 74 68 65 20 34 74 68 20  d.** in the 4th 
d420: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
d430: 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f   [sqlite3_vfs.xO
d440: 70 65 6e 5d 20 6d 65 74 68 6f 64 2e 0a 2a 2f 0a  pen] method..*/.
d450: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d460: 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20  PEN_READONLY    
d470: 20 20 20 20 20 30 78 30 30 30 30 30 30 30 31 20       0x00000001 
d480: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d490: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d4a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d4b0: 50 45 4e 5f 52 45 41 44 57 52 49 54 45 20 20 20  PEN_READWRITE   
d4c0: 20 20 20 20 20 30 78 30 30 30 30 30 30 30 32 20       0x00000002 
d4d0: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d4e0: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d4f0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d500: 50 45 4e 5f 43 52 45 41 54 45 20 20 20 20 20 20  PEN_CREATE      
d510: 20 20 20 20 20 30 78 30 30 30 30 30 30 30 34 20       0x00000004 
d520: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d530: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d540: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d550: 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53  PEN_DELETEONCLOS
d560: 45 20 20 20 20 30 78 30 30 30 30 30 30 30 38 20  E    0x00000008 
d570: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d580: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d590: 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 20 20 20  PEN_EXCLUSIVE   
d5a0: 20 20 20 20 20 30 78 30 30 30 30 30 30 31 30 20       0x00000010 
d5b0: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d5c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d5d0: 50 45 4e 5f 41 55 54 4f 50 52 4f 58 59 20 20 20  PEN_AUTOPROXY   
d5e0: 20 20 20 20 20 30 78 30 30 30 30 30 30 32 30 20       0x00000020 
d5f0: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d600: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d610: 50 45 4e 5f 55 52 49 20 20 20 20 20 20 20 20 20  PEN_URI         
d620: 20 20 20 20 20 30 78 30 30 30 30 30 30 34 30 20       0x00000040 
d630: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d640: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d650: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d660: 50 45 4e 5f 4d 45 4d 4f 52 59 20 20 20 20 20 20  PEN_MEMORY      
d670: 20 20 20 20 20 30 78 30 30 30 30 30 30 38 30 20       0x00000080 
d680: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d690: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d6a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d6b0: 50 45 4e 5f 4d 41 49 4e 5f 44 42 20 20 20 20 20  PEN_MAIN_DB     
d6c0: 20 20 20 20 20 30 78 30 30 30 30 30 31 30 30 20       0x00000100 
d6d0: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d6e0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d6f0: 50 45 4e 5f 54 45 4d 50 5f 44 42 20 20 20 20 20  PEN_TEMP_DB     
d700: 20 20 20 20 20 30 78 30 30 30 30 30 32 30 30 20       0x00000200 
d710: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d720: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d730: 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54 5f 44 42  PEN_TRANSIENT_DB
d740: 20 20 20 20 20 30 78 30 30 30 30 30 34 30 30 20       0x00000400 
d750: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d760: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d770: 50 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52 4e 41 4c  PEN_MAIN_JOURNAL
d780: 20 20 20 20 20 30 78 30 30 30 30 30 38 30 30 20       0x00000800 
d790: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d7a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d7b0: 50 45 4e 5f 54 45 4d 50 5f 4a 4f 55 52 4e 41 4c  PEN_TEMP_JOURNAL
d7c0: 20 20 20 20 20 30 78 30 30 30 30 31 30 30 30 20       0x00001000 
d7d0: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d7e0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d7f0: 50 45 4e 5f 53 55 42 4a 4f 55 52 4e 41 4c 20 20  PEN_SUBJOURNAL  
d800: 20 20 20 20 20 30 78 30 30 30 30 32 30 30 30 20       0x00002000 
d810: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d820: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d830: 50 45 4e 5f 4d 41 53 54 45 52 5f 4a 4f 55 52 4e  PEN_MASTER_JOURN
d840: 41 4c 20 20 20 30 78 30 30 30 30 34 30 30 30 20  AL   0x00004000 
d850: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d860: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d870: 50 45 4e 5f 4e 4f 4d 55 54 45 58 20 20 20 20 20  PEN_NOMUTEX     
d880: 20 20 20 20 20 30 78 30 30 30 30 38 30 30 30 20       0x00008000 
d890: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d8a0: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d8b0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d8c0: 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 20 20 20  PEN_FULLMUTEX   
d8d0: 20 20 20 20 20 30 78 30 30 30 31 30 30 30 30 20       0x00010000 
d8e0: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d8f0: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d900: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d910: 50 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 20  PEN_SHAREDCACHE 
d920: 20 20 20 20 20 30 78 30 30 30 32 30 30 30 30 20       0x00020000 
d930: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d940: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d950: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d960: 50 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48 45  PEN_PRIVATECACHE
d970: 20 20 20 20 20 30 78 30 30 30 34 30 30 30 30 20       0x00040000 
d980: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d990: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d9a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d9b0: 50 45 4e 5f 57 41 4c 20 20 20 20 20 20 20 20 20  PEN_WAL         
d9c0: 20 20 20 20 20 30 78 30 30 30 38 30 30 30 30 20       0x00080000 
d9d0: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d9e0: 0a 2f 2a 20 52 65 73 65 72 76 65 64 3a 20 20 20  ./* Reserved:   
d9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da00: 20 20 20 20 20 20 30 78 30 30 46 30 30 30 30 30        0x00F00000
da10: 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33   */../*.** CAPI3
da20: 52 45 46 3a 20 44 65 76 69 63 65 20 43 68 61 72  REF: Device Char
da30: 61 63 74 65 72 69 73 74 69 63 73 0a 2a 2a 0a 2a  acteristics.**.*
da40: 2a 20 54 68 65 20 78 44 65 76 69 63 65 43 68 61  * The xDeviceCha
da50: 72 61 63 74 65 72 69 73 74 69 63 73 20 6d 65 74  racteristics met
da60: 68 6f 64 20 6f 66 20 74 68 65 20 5b 73 71 6c 69  hod of the [sqli
da70: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 0a  te3_io_methods].
da80: 2a 2a 20 6f 62 6a 65 63 74 20 72 65 74 75 72 6e  ** object return
da90: 73 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68 69  s an integer whi
daa0: 63 68 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f  ch is a vector o
dab0: 66 20 74 68 65 73 65 0a 2a 2a 20 62 69 74 20 76  f these.** bit v
dac0: 61 6c 75 65 73 20 65 78 70 72 65 73 73 69 6e 67  alues expressing
dad0: 20 49 2f 4f 20 63 68 61 72 61 63 74 65 72 69 73   I/O characteris
dae0: 74 69 63 73 20 6f 66 20 74 68 65 20 6d 61 73 73  tics of the mass
daf0: 20 73 74 6f 72 61 67 65 0a 2a 2a 20 64 65 76 69   storage.** devi
db00: 63 65 20 74 68 61 74 20 68 6f 6c 64 73 20 74 68  ce that holds th
db10: 65 20 66 69 6c 65 20 74 68 61 74 20 74 68 65 20  e file that the 
db20: 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68  [sqlite3_io_meth
db30: 6f 64 73 5d 0a 2a 2a 20 72 65 66 65 72 73 20 74  ods].** refers t
db40: 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c  o..**.** The SQL
db50: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
db60: 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20   property means 
db70: 74 68 61 74 20 61 6c 6c 20 77 72 69 74 65 73 20  that all writes 
db80: 6f 66 0a 2a 2a 20 61 6e 79 20 73 69 7a 65 20 61  of.** any size a
db90: 72 65 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20  re atomic.  The 
dba0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
dbb0: 4d 49 43 6e 6e 6e 20 76 61 6c 75 65 73 0a 2a 2a  MICnnn values.**
dbc0: 20 6d 65 61 6e 20 74 68 61 74 20 77 72 69 74 65   mean that write
dbd0: 73 20 6f 66 20 62 6c 6f 63 6b 73 20 74 68 61 74  s of blocks that
dbe0: 20 61 72 65 20 6e 6e 6e 20 62 79 74 65 73 20 69   are nnn bytes i
dbf0: 6e 20 73 69 7a 65 20 61 6e 64 0a 2a 2a 20 61 72  n size and.** ar
dc00: 65 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20  e aligned to an 
dc10: 61 64 64 72 65 73 73 20 77 68 69 63 68 20 69 73  address which is
dc20: 20 61 6e 20 69 6e 74 65 67 65 72 20 6d 75 6c 74   an integer mult
dc30: 69 70 6c 65 20 6f 66 0a 2a 2a 20 6e 6e 6e 20 61  iple of.** nnn a
dc40: 72 65 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20  re atomic.  The 
dc50: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46  SQLITE_IOCAP_SAF
dc60: 45 5f 41 50 50 45 4e 44 20 76 61 6c 75 65 20 6d  E_APPEND value m
dc70: 65 61 6e 73 0a 2a 2a 20 74 68 61 74 20 77 68 65  eans.** that whe
dc80: 6e 20 64 61 74 61 20 69 73 20 61 70 70 65 6e 64  n data is append
dc90: 65 64 20 74 6f 20 61 20 66 69 6c 65 2c 20 74 68  ed to a file, th
dca0: 65 20 64 61 74 61 20 69 73 20 61 70 70 65 6e 64  e data is append
dcb0: 65 64 0a 2a 2a 20 66 69 72 73 74 20 74 68 65 6e  ed.** first then
dcc0: 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
dcd0: 20 66 69 6c 65 20 69 73 20 65 78 74 65 6e 64 65   file is extende
dce0: 64 2c 20 6e 65 76 65 72 20 74 68 65 20 6f 74 68  d, never the oth
dcf0: 65 72 0a 2a 2a 20 77 61 79 20 61 72 6f 75 6e 64  er.** way around
dd00: 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  .  The SQLITE_IO
dd10: 43 41 50 5f 53 45 51 55 45 4e 54 49 41 4c 20 70  CAP_SEQUENTIAL p
dd20: 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68  roperty means th
dd30: 61 74 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f  at.** informatio
dd40: 6e 20 69 73 20 77 72 69 74 74 65 6e 20 74 6f 20  n is written to 
dd50: 64 69 73 6b 20 69 6e 20 74 68 65 20 73 61 6d 65  disk in the same
dd60: 20 6f 72 64 65 72 20 61 73 20 63 61 6c 6c 73 0a   order as calls.
dd70: 2a 2a 20 74 6f 20 78 57 72 69 74 65 28 29 2e 20  ** to xWrite(). 
dd80: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41   The SQLITE_IOCA
dd90: 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52  P_POWERSAFE_OVER
dda0: 57 52 49 54 45 20 70 72 6f 70 65 72 74 79 20 6d  WRITE property m
ddb0: 65 61 6e 73 20 74 68 61 74 0a 2a 2a 20 61 66 74  eans that.** aft
ddc0: 65 72 20 72 65 62 6f 6f 74 20 66 6f 6c 6c 6f 77  er reboot follow
ddd0: 69 6e 67 20 61 20 63 72 61 73 68 20 6f 72 20 70  ing a crash or p
dde0: 6f 77 65 72 20 6c 6f 73 73 2c 20 74 68 65 20 6f  ower loss, the o
ddf0: 6e 6c 79 20 62 79 74 65 73 20 69 6e 20 61 0a 2a  nly bytes in a.*
de00: 2a 20 66 69 6c 65 20 74 68 61 74 20 77 65 72 65  * file that were
de10: 20 77 72 69 74 74 65 6e 20 61 74 20 74 68 65 20   written at the 
de20: 61 70 70 6c 69 63 61 74 69 6f 6e 20 6c 65 76 65  application leve
de30: 6c 20 6d 69 67 68 74 20 68 61 76 65 20 63 68 61  l might have cha
de40: 6e 67 65 64 0a 2a 2a 20 61 6e 64 20 74 68 61 74  nged.** and that
de50: 20 61 64 6a 61 63 65 6e 74 20 62 79 74 65 73 2c   adjacent bytes,
de60: 20 65 76 65 6e 20 62 79 74 65 73 20 77 69 74 68   even bytes with
de70: 69 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63 74  in the same sect
de80: 6f 72 20 61 72 65 0a 2a 2a 20 67 75 61 72 61 6e  or are.** guaran
de90: 74 65 65 64 20 74 6f 20 62 65 20 75 6e 63 68 61  teed to be uncha
dea0: 6e 67 65 64 2e 20 20 54 68 65 20 53 51 4c 49 54  nged.  The SQLIT
deb0: 45 5f 49 4f 43 41 50 5f 55 4e 44 45 4c 45 54 41  E_IOCAP_UNDELETA
dec0: 42 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e 0a 2a 2a  BLE_WHEN_OPEN.**
ded0: 20 66 6c 61 67 20 69 6e 64 69 63 61 74 65 73 20   flag indicates 
dee0: 74 68 61 74 20 61 20 66 69 6c 65 20 63 61 6e 6e  that a file cann
def0: 6f 74 20 62 65 20 64 65 6c 65 74 65 64 20 77 68  ot be deleted wh
df00: 65 6e 20 6f 70 65 6e 2e 20 20 54 68 65 0a 2a 2a  en open.  The.**
df10: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d   SQLITE_IOCAP_IM
df20: 4d 55 54 41 42 4c 45 20 66 6c 61 67 20 69 6e 64  MUTABLE flag ind
df30: 69 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20  icates that the 
df40: 66 69 6c 65 20 69 73 20 6f 6e 0a 2a 2a 20 72 65  file is on.** re
df50: 61 64 2d 6f 6e 6c 79 20 6d 65 64 69 61 20 61 6e  ad-only media an
df60: 64 20 63 61 6e 6e 6f 74 20 62 65 20 63 68 61 6e  d cannot be chan
df70: 67 65 64 20 65 76 65 6e 20 62 79 20 70 72 6f 63  ged even by proc
df80: 65 73 73 65 73 20 77 69 74 68 0a 2a 2a 20 65 6c  esses with.** el
df90: 65 76 61 74 65 64 20 70 72 69 76 69 6c 65 67 65  evated privilege
dfa0: 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c  s..**.** The SQL
dfb0: 49 54 45 5f 49 4f 43 41 50 5f 42 41 54 43 48 5f  ITE_IOCAP_BATCH_
dfc0: 41 54 4f 4d 49 43 20 70 72 6f 70 65 72 74 79 20  ATOMIC property 
dfd0: 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 75  means that the u
dfe0: 6e 64 65 72 6c 79 69 6e 67 0a 2a 2a 20 66 69 6c  nderlying.** fil
dff0: 65 73 79 73 74 65 6d 20 73 75 70 70 6f 72 74 73  esystem supports
e000: 20 64 6f 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20   doing multiple 
e010: 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 73  write operations
e020: 20 61 74 6f 6d 69 63 61 6c 6c 79 20 77 68 65 6e   atomically when
e030: 20 74 68 6f 73 65 0a 2a 2a 20 77 72 69 74 65 20   those.** write 
e040: 6f 70 65 72 61 74 69 6f 6e 73 20 61 72 65 20 62  operations are b
e050: 72 61 63 6b 65 74 65 64 20 62 79 20 5b 53 51 4c  racketed by [SQL
e060: 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f  ITE_FCNTL_BEGIN_
e070: 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 61 6e  ATOMIC_WRITE] an
e080: 64 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e  d.** [SQLITE_FCN
e090: 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43  TL_COMMIT_ATOMIC
e0a0: 5f 57 52 49 54 45 5d 2e 0a 2a 2f 0a 23 64 65 66  _WRITE]..*/.#def
e0b0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  ine SQLITE_IOCAP
e0c0: 5f 41 54 4f 4d 49 43 20 20 20 20 20 20 20 20 20  _ATOMIC         
e0d0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
e0e0: 30 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  01.#define SQLIT
e0f0: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 35 31  E_IOCAP_ATOMIC51
e100: 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30  2              0
e110: 78 30 30 30 30 30 30 30 32 0a 23 64 65 66 69 6e  x00000002.#defin
e120: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41  e SQLITE_IOCAP_A
e130: 54 4f 4d 49 43 31 4b 20 20 20 20 20 20 20 20 20  TOMIC1K         
e140: 20 20 20 20 20 20 30 78 30 30 30 30 30 30 30 34        0x00000004
e150: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e160: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32 4b 20 20  IOCAP_ATOMIC2K  
e170: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30               0x0
e180: 30 30 30 30 30 30 38 0a 23 64 65 66 69 6e 65 20  0000008.#define 
e190: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
e1a0: 4d 49 43 34 4b 20 20 20 20 20 20 20 20 20 20 20  MIC4K           
e1b0: 20 20 20 20 30 78 30 30 30 30 30 30 31 30 0a 23      0x00000010.#
e1c0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
e1d0: 43 41 50 5f 41 54 4f 4d 49 43 38 4b 20 20 20 20  CAP_ATOMIC8K    
e1e0: 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30             0x000
e1f0: 30 30 30 32 30 0a 23 64 65 66 69 6e 65 20 53 51  00020.#define SQ
e200: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
e210: 43 31 36 4b 20 20 20 20 20 20 20 20 20 20 20 20  C16K            
e220: 20 20 30 78 30 30 30 30 30 30 34 30 0a 23 64 65    0x00000040.#de
e230: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41  fine SQLITE_IOCA
e240: 50 5f 41 54 4f 4d 49 43 33 32 4b 20 20 20 20 20  P_ATOMIC32K     
e250: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30           0x00000
e260: 30 38 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  080.#define SQLI
e270: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 36  TE_IOCAP_ATOMIC6
e280: 34 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  4K              
e290: 30 78 30 30 30 30 30 31 30 30 0a 23 64 65 66 69  0x00000100.#defi
e2a0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  ne SQLITE_IOCAP_
e2b0: 53 41 46 45 5f 41 50 50 45 4e 44 20 20 20 20 20  SAFE_APPEND     
e2c0: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 32 30         0x0000020
e2d0: 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
e2e0: 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e 54 49 41  _IOCAP_SEQUENTIA
e2f0: 4c 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78  L             0x
e300: 30 30 30 30 30 34 30 30 0a 23 64 65 66 69 6e 65  00000400.#define
e310: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e   SQLITE_IOCAP_UN
e320: 44 45 4c 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f  DELETABLE_WHEN_O
e330: 50 45 4e 20 20 30 78 30 30 30 30 30 38 30 30 0a  PEN  0x00000800.
e340: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
e350: 4f 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f  OCAP_POWERSAFE_O
e360: 56 45 52 57 52 49 54 45 20 20 20 20 30 78 30 30  VERWRITE    0x00
e370: 30 30 31 30 30 30 0a 23 64 65 66 69 6e 65 20 53  001000.#define S
e380: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55  QLITE_IOCAP_IMMU
e390: 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 20  TABLE           
e3a0: 20 20 20 30 78 30 30 30 30 32 30 30 30 0a 23 64     0x00002000.#d
e3b0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43  efine SQLITE_IOC
e3c0: 41 50 5f 42 41 54 43 48 5f 41 54 4f 4d 49 43 20  AP_BATCH_ATOMIC 
e3d0: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30            0x0000
e3e0: 34 30 30 30 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  4000../*.** CAPI
e3f0: 33 52 45 46 3a 20 46 69 6c 65 20 4c 6f 63 6b 69  3REF: File Locki
e400: 6e 67 20 4c 65 76 65 6c 73 0a 2a 2a 0a 2a 2a 20  ng Levels.**.** 
e410: 53 51 4c 69 74 65 20 75 73 65 73 20 6f 6e 65 20  SQLite uses one 
e420: 6f 66 20 74 68 65 73 65 20 69 6e 74 65 67 65 72  of these integer
e430: 20 76 61 6c 75 65 73 20 61 73 20 74 68 65 20 73   values as the s
e440: 65 63 6f 6e 64 0a 2a 2a 20 61 72 67 75 6d 65 6e  econd.** argumen
e450: 74 20 74 6f 20 63 61 6c 6c 73 20 69 74 20 6d 61  t to calls it ma
e460: 6b 65 73 20 74 6f 20 74 68 65 20 78 4c 6f 63 6b  kes to the xLock
e470: 28 29 20 61 6e 64 20 78 55 6e 6c 6f 63 6b 28 29  () and xUnlock()
e480: 20 6d 65 74 68 6f 64 73 0a 2a 2a 20 6f 66 20 61   methods.** of a
e490: 6e 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  n [sqlite3_io_me
e4a0: 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 2e 0a 2a  thods] object..*
e4b0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
e4c0: 5f 4c 4f 43 4b 5f 4e 4f 4e 45 20 20 20 20 20 20  _LOCK_NONE      
e4d0: 20 20 20 20 30 0a 23 64 65 66 69 6e 65 20 53 51      0.#define SQ
e4e0: 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41 52 45 44  LITE_LOCK_SHARED
e4f0: 20 20 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e          1.#defin
e500: 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45  e SQLITE_LOCK_RE
e510: 53 45 52 56 45 44 20 20 20 20 20 20 32 0a 23 64  SERVED      2.#d
e520: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43  efine SQLITE_LOC
e530: 4b 5f 50 45 4e 44 49 4e 47 20 20 20 20 20 20 20  K_PENDING       
e540: 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  3.#define SQLITE
e550: 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53 49 56 45 20  _LOCK_EXCLUSIVE 
e560: 20 20 20 20 34 0a 0a 2f 2a 0a 2a 2a 20 43 41 50      4../*.** CAP
e570: 49 33 52 45 46 3a 20 53 79 6e 63 68 72 6f 6e 69  I3REF: Synchroni
e580: 7a 61 74 69 6f 6e 20 54 79 70 65 20 46 6c 61 67  zation Type Flag
e590: 73 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 53 51 4c  s.**.** When SQL
e5a0: 69 74 65 20 69 6e 76 6f 6b 65 73 20 74 68 65 20  ite invokes the 
e5b0: 78 53 79 6e 63 28 29 20 6d 65 74 68 6f 64 20 6f  xSync() method o
e5c0: 66 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  f an.** [sqlite3
e5d0: 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a  _io_methods] obj
e5e0: 65 63 74 20 69 74 20 75 73 65 73 20 61 20 63 6f  ect it uses a co
e5f0: 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 0a 2a 2a 20  mbination of.** 
e600: 74 68 65 73 65 20 69 6e 74 65 67 65 72 20 76 61  these integer va
e610: 6c 75 65 73 20 61 73 20 74 68 65 20 73 65 63 6f  lues as the seco
e620: 6e 64 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a  nd argument..**.
e630: 2a 2a 20 57 68 65 6e 20 74 68 65 20 53 51 4c 49  ** When the SQLI
e640: 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59  TE_SYNC_DATAONLY
e650: 20 66 6c 61 67 20 69 73 20 75 73 65 64 2c 20 69   flag is used, i
e660: 74 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65  t means that the
e670: 0a 2a 2a 20 73 79 6e 63 20 6f 70 65 72 61 74 69  .** sync operati
e680: 6f 6e 20 6f 6e 6c 79 20 6e 65 65 64 73 20 74 6f  on only needs to
e690: 20 66 6c 75 73 68 20 64 61 74 61 20 74 6f 20 6d   flush data to m
e6a0: 61 73 73 20 73 74 6f 72 61 67 65 2e 20 20 49 6e  ass storage.  In
e6b0: 6f 64 65 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69  ode.** informati
e6c0: 6f 6e 20 6e 65 65 64 20 6e 6f 74 20 62 65 20 66  on need not be f
e6d0: 6c 75 73 68 65 64 2e 20 49 66 20 74 68 65 20 6c  lushed. If the l
e6e0: 6f 77 65 72 20 66 6f 75 72 20 62 69 74 73 20 6f  ower four bits o
e6f0: 66 20 74 68 65 20 66 6c 61 67 0a 2a 2a 20 65 71  f the flag.** eq
e700: 75 61 6c 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f  ual SQLITE_SYNC_
e710: 4e 4f 52 4d 41 4c 2c 20 74 68 61 74 20 6d 65 61  NORMAL, that mea
e720: 6e 73 20 74 6f 20 75 73 65 20 6e 6f 72 6d 61 6c  ns to use normal
e730: 20 66 73 79 6e 63 28 29 20 73 65 6d 61 6e 74 69   fsync() semanti
e740: 63 73 2e 0a 2a 2a 20 49 66 20 74 68 65 20 6c 6f  cs..** If the lo
e750: 77 65 72 20 66 6f 75 72 20 62 69 74 73 20 65 71  wer four bits eq
e760: 75 61 6c 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f  ual SQLITE_SYNC_
e770: 46 55 4c 4c 2c 20 74 68 61 74 20 6d 65 61 6e 73  FULL, that means
e780: 0a 2a 2a 20 74 6f 20 75 73 65 20 4d 61 63 20 4f  .** to use Mac O
e790: 53 20 58 20 73 74 79 6c 65 20 66 75 6c 6c 73 79  S X style fullsy
e7a0: 6e 63 20 69 6e 73 74 65 61 64 20 6f 66 20 66 73  nc instead of fs
e7b0: 79 6e 63 28 29 2e 0a 2a 2a 0a 2a 2a 20 44 6f 20  ync()..**.** Do 
e7c0: 6e 6f 74 20 63 6f 6e 66 75 73 65 20 74 68 65 20  not confuse the 
e7d0: 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d  SQLITE_SYNC_NORM
e7e0: 41 4c 20 61 6e 64 20 53 51 4c 49 54 45 5f 53 59  AL and SQLITE_SY
e7f0: 4e 43 5f 46 55 4c 4c 20 66 6c 61 67 73 0a 2a 2a  NC_FULL flags.**
e800: 20 77 69 74 68 20 74 68 65 20 5b 50 52 41 47 4d   with the [PRAGM
e810: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 3d 4e  A synchronous]=N
e820: 4f 52 4d 41 4c 20 61 6e 64 20 5b 50 52 41 47 4d  ORMAL and [PRAGM
e830: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 3d 46  A synchronous]=F
e840: 55 4c 4c 0a 2a 2a 20 73 65 74 74 69 6e 67 73 2e  ULL.** settings.
e850: 20 20 54 68 65 20 5b 73 79 6e 63 68 72 6f 6e 6f    The [synchrono
e860: 75 73 20 70 72 61 67 6d 61 5d 20 64 65 74 65 72  us pragma] deter
e870: 6d 69 6e 65 73 20 77 68 65 6e 20 63 61 6c 6c 73  mines when calls
e880: 20 74 6f 20 74 68 65 0a 2a 2a 20 78 53 79 6e 63   to the.** xSync
e890: 20 56 46 53 20 6d 65 74 68 6f 64 20 6f 63 63 75   VFS method occu
e8a0: 72 20 61 6e 64 20 61 70 70 6c 69 65 73 20 75 6e  r and applies un
e8b0: 69 66 6f 72 6d 6c 79 20 61 63 72 6f 73 73 20 61  iformly across a
e8c0: 6c 6c 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 2a 2a  ll platforms..**
e8d0: 20 54 68 65 20 53 51 4c 49 54 45 5f 53 59 4e 43   The SQLITE_SYNC
e8e0: 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c 49  _NORMAL and SQLI
e8f0: 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20 66 6c 61  TE_SYNC_FULL fla
e900: 67 73 20 64 65 74 65 72 6d 69 6e 65 20 68 6f 77  gs determine how
e910: 0a 2a 2a 20 65 6e 65 72 67 65 74 69 63 20 6f 72  .** energetic or
e920: 20 72 69 67 6f 72 6f 75 73 20 6f 72 20 66 6f 72   rigorous or for
e930: 63 65 66 75 6c 20 74 68 65 20 73 79 6e 63 20 6f  ceful the sync o
e940: 70 65 72 61 74 69 6f 6e 73 20 61 72 65 20 61 6e  perations are an
e950: 64 0a 2a 2a 20 6f 6e 6c 79 20 6d 61 6b 65 20 61  d.** only make a
e960: 20 64 69 66 66 65 72 65 6e 63 65 20 6f 6e 20 4d   difference on M
e970: 61 63 20 4f 53 58 20 66 6f 72 20 74 68 65 20 64  ac OSX for the d
e980: 65 66 61 75 6c 74 20 53 51 4c 69 74 65 20 63 6f  efault SQLite co
e990: 64 65 2e 0a 2a 2a 20 28 54 68 69 72 64 2d 70 61  de..** (Third-pa
e9a0: 72 74 79 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  rty VFS implemen
e9b0: 74 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 61 6c  tations might al
e9c0: 73 6f 20 6d 61 6b 65 20 74 68 65 20 64 69 73 74  so make the dist
e9d0: 69 6e 63 74 69 6f 6e 0a 2a 2a 20 62 65 74 77 65  inction.** betwe
e9e0: 65 6e 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e  en SQLITE_SYNC_N
e9f0: 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c 49 54 45  ORMAL and SQLITE
ea00: 5f 53 59 4e 43 5f 46 55 4c 4c 2c 20 62 75 74 20  _SYNC_FULL, but 
ea10: 61 6d 6f 6e 67 20 74 68 65 0a 2a 2a 20 6f 70 65  among the.** ope
ea20: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20 6e  rating systems n
ea30: 61 74 69 76 65 6c 79 20 73 75 70 70 6f 72 74 65  atively supporte
ea40: 64 20 62 79 20 53 51 4c 69 74 65 2c 20 6f 6e 6c  d by SQLite, onl
ea50: 79 20 4d 61 63 20 4f 53 58 0a 2a 2a 20 63 61 72  y Mac OSX.** car
ea60: 65 73 20 61 62 6f 75 74 20 74 68 65 20 64 69 66  es about the dif
ea70: 66 65 72 65 6e 63 65 2e 29 0a 2a 2f 0a 23 64 65  ference.).*/.#de
ea80: 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 59 4e 43  fine SQLITE_SYNC
ea90: 5f 4e 4f 52 4d 41 4c 20 20 20 20 20 20 20 20 30  _NORMAL        0
eaa0: 78 30 30 30 30 32 0a 23 64 65 66 69 6e 65 20 53  x00002.#define S
eab0: 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20  QLITE_SYNC_FULL 
eac0: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 33           0x00003
ead0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
eae0: 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59 20 20 20  SYNC_DATAONLY   
eaf0: 20 20 20 30 78 30 30 30 31 30 0a 0a 2f 2a 0a 2a     0x00010../*.*
eb00: 2a 20 43 41 50 49 33 52 45 46 3a 20 4f 53 20 49  * CAPI3REF: OS I
eb10: 6e 74 65 72 66 61 63 65 20 4f 70 65 6e 20 46 69  nterface Open Fi
eb20: 6c 65 20 48 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20  le Handle.**.** 
eb30: 41 6e 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  An [sqlite3_file
eb40: 5d 20 6f 62 6a 65 63 74 20 72 65 70 72 65 73 65  ] object represe
eb50: 6e 74 73 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65  nts an open file
eb60: 20 69 6e 20 74 68 65 20 0a 2a 2a 20 5b 73 71 6c   in the .** [sql
eb70: 69 74 65 33 5f 76 66 73 20 7c 20 4f 53 20 69 6e  ite3_vfs | OS in
eb80: 74 65 72 66 61 63 65 20 6c 61 79 65 72 5d 2e 20  terface layer]. 
eb90: 20 49 6e 64 69 76 69 64 75 61 6c 20 4f 53 20 69   Individual OS i
eba0: 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69 6d 70 6c  nterface.** impl
ebb0: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 77 69 6c 6c  ementations will
ebc0: 0a 2a 2a 20 77 61 6e 74 20 74 6f 20 73 75 62 63  .** want to subc
ebd0: 6c 61 73 73 20 74 68 69 73 20 6f 62 6a 65 63 74  lass this object
ebe0: 20 62 79 20 61 70 70 65 6e 64 69 6e 67 20 61 64   by appending ad
ebf0: 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c 64 73 0a  ditional fields.
ec00: 2a 2a 20 66 6f 72 20 74 68 65 69 72 20 6f 77 6e  ** for their own
ec10: 20 75 73 65 2e 20 20 54 68 65 20 70 4d 65 74 68   use.  The pMeth
ec20: 6f 64 73 20 65 6e 74 72 79 20 69 73 20 61 20 70  ods entry is a p
ec30: 6f 69 6e 74 65 72 20 74 6f 20 61 6e 0a 2a 2a 20  ointer to an.** 
ec40: 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68  [sqlite3_io_meth
ec50: 6f 64 73 5d 20 6f 62 6a 65 63 74 20 74 68 61 74  ods] object that
ec60: 20 64 65 66 69 6e 65 73 20 6d 65 74 68 6f 64 73   defines methods
ec70: 20 66 6f 72 20 70 65 72 66 6f 72 6d 69 6e 67 0a   for performing.
ec80: 2a 2a 20 49 2f 4f 20 6f 70 65 72 61 74 69 6f 6e  ** I/O operation
ec90: 73 20 6f 6e 20 74 68 65 20 6f 70 65 6e 20 66 69  s on the open fi
eca0: 6c 65 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73  le..*/.typedef s
ecb0: 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 66 69  truct sqlite3_fi
ecc0: 6c 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 3b  le sqlite3_file;
ecd0: 0a 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f  .struct sqlite3_
ece0: 66 69 6c 65 20 7b 0a 20 20 63 6f 6e 73 74 20 73  file {.  const s
ecf0: 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f  truct sqlite3_io
ed00: 5f 6d 65 74 68 6f 64 73 20 2a 70 4d 65 74 68 6f  _methods *pMetho
ed10: 64 73 3b 20 20 2f 2a 20 4d 65 74 68 6f 64 73 20  ds;  /* Methods 
ed20: 66 6f 72 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65  for an open file
ed30: 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41   */.};../*.** CA
ed40: 50 49 33 52 45 46 3a 20 4f 53 20 49 6e 74 65 72  PI3REF: OS Inter
ed50: 66 61 63 65 20 46 69 6c 65 20 56 69 72 74 75 61  face File Virtua
ed60: 6c 20 4d 65 74 68 6f 64 73 20 4f 62 6a 65 63 74  l Methods Object
ed70: 0a 2a 2a 0a 2a 2a 20 45 76 65 72 79 20 66 69 6c  .**.** Every fil
ed80: 65 20 6f 70 65 6e 65 64 20 62 79 20 74 68 65 20  e opened by the 
ed90: 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70  [sqlite3_vfs.xOp
eda0: 65 6e 5d 20 6d 65 74 68 6f 64 20 70 6f 70 75 6c  en] method popul
edb0: 61 74 65 73 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69  ates an.** [sqli
edc0: 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74  te3_file] object
edd0: 20 28 6f 72 2c 20 6d 6f 72 65 20 63 6f 6d 6d 6f   (or, more commo
ede0: 6e 6c 79 2c 20 61 20 73 75 62 63 6c 61 73 73 20  nly, a subclass 
edf0: 6f 66 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  of the.** [sqlit
ee00: 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 29  e3_file] object)
ee10: 20 77 69 74 68 20 61 20 70 6f 69 6e 74 65 72 20   with a pointer 
ee20: 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  to an instance o
ee30: 66 20 74 68 69 73 20 6f 62 6a 65 63 74 2e 0a 2a  f this object..*
ee40: 2a 20 54 68 69 73 20 6f 62 6a 65 63 74 20 64 65  * This object de
ee50: 66 69 6e 65 73 20 74 68 65 20 6d 65 74 68 6f 64  fines the method
ee60: 73 20 75 73 65 64 20 74 6f 20 70 65 72 66 6f 72  s used to perfor
ee70: 6d 20 76 61 72 69 6f 75 73 20 6f 70 65 72 61 74  m various operat
ee80: 69 6f 6e 73 0a 2a 2a 20 61 67 61 69 6e 73 74 20  ions.** against 
ee90: 74 68 65 20 6f 70 65 6e 20 66 69 6c 65 20 72 65  the open file re
eea0: 70 72 65 73 65 6e 74 65 64 20 62 79 20 74 68 65  presented by the
eeb0: 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20   [sqlite3_file] 
eec0: 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 49 66  object..**.** If
eed0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66   the [sqlite3_vf
eee0: 73 2e 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 20  s.xOpen] method 
eef0: 73 65 74 73 20 74 68 65 20 73 71 6c 69 74 65 33  sets the sqlite3
ef00: 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73 20 65  _file.pMethods e
ef10: 6c 65 6d 65 6e 74 20 0a 2a 2a 20 74 6f 20 61 20  lement .** to a 
ef20: 6e 6f 6e 2d 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  non-NULL pointer
ef30: 2c 20 74 68 65 6e 20 74 68 65 20 73 71 6c 69 74  , then the sqlit
ef40: 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 2e 78 43  e3_io_methods.xC
ef50: 6c 6f 73 65 20 6d 65 74 68 6f 64 0a 2a 2a 20 6d  lose method.** m
ef60: 61 79 20 62 65 20 69 6e 76 6f 6b 65 64 20 65 76  ay be invoked ev
ef70: 65 6e 20 69 66 20 74 68 65 20 5b 73 71 6c 69 74  en if the [sqlit
ef80: 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 72 65  e3_vfs.xOpen] re
ef90: 70 6f 72 74 65 64 20 74 68 61 74 20 69 74 20 66  ported that it f
efa0: 61 69 6c 65 64 2e 20 20 54 68 65 0a 2a 2a 20 6f  ailed.  The.** o
efb0: 6e 6c 79 20 77 61 79 20 74 6f 20 70 72 65 76 65  nly way to preve
efc0: 6e 74 20 61 20 63 61 6c 6c 20 74 6f 20 78 43 6c  nt a call to xCl
efd0: 6f 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20  ose following a 
efe0: 66 61 69 6c 65 64 20 5b 73 71 6c 69 74 65 33 5f  failed [sqlite3_
eff0: 76 66 73 2e 78 4f 70 65 6e 5d 0a 2a 2a 20 69 73  vfs.xOpen].** is
f000: 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65   for the [sqlite
f010: 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 74 6f 20  3_vfs.xOpen] to 
f020: 73 65 74 20 74 68 65 20 73 71 6c 69 74 65 33 5f  set the sqlite3_
f030: 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73 20 65 6c  file.pMethods el
f040: 65 6d 65 6e 74 0a 2a 2a 20 74 6f 20 4e 55 4c 4c  ement.** to NULL
f050: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 6c 61 67  ..**.** The flag
f060: 73 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 78 53  s argument to xS
f070: 79 6e 63 20 6d 61 79 20 62 65 20 6f 6e 65 20 6f  ync may be one o
f080: 66 20 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e  f [SQLITE_SYNC_N
f090: 4f 52 4d 41 4c 5d 20 6f 72 0a 2a 2a 20 5b 53 51  ORMAL] or.** [SQ
f0a0: 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 5d 2e  LITE_SYNC_FULL].
f0b0: 20 20 54 68 65 20 66 69 72 73 74 20 63 68 6f 69    The first choi
f0c0: 63 65 20 69 73 20 74 68 65 20 6e 6f 72 6d 61 6c  ce is the normal
f0d0: 20 66 73 79 6e 63 28 29 2e 0a 2a 2a 20 54 68 65   fsync()..** The
f0e0: 20 73 65 63 6f 6e 64 20 63 68 6f 69 63 65 20 69   second choice i
f0f0: 73 20 61 20 4d 61 63 20 4f 53 20 58 20 73 74 79  s a Mac OS X sty
f100: 6c 65 20 66 75 6c 6c 73 79 6e 63 2e 20 20 54 68  le fullsync.  Th
f110: 65 20 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f 44  e [SQLITE_SYNC_D
f120: 41 54 41 4f 4e 4c 59 5d 0a 2a 2a 20 66 6c 61 67  ATAONLY].** flag
f130: 20 6d 61 79 20 62 65 20 4f 52 65 64 20 69 6e 20   may be ORed in 
f140: 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
f150: 20 6f 6e 6c 79 20 74 68 65 20 64 61 74 61 20 6f   only the data o
f160: 66 20 74 68 65 20 66 69 6c 65 0a 2a 2a 20 61 6e  f the file.** an
f170: 64 20 6e 6f 74 20 69 74 73 20 69 6e 6f 64 65 20  d not its inode 
f180: 6e 65 65 64 73 20 74 6f 20 62 65 20 73 79 6e 63  needs to be sync
f190: 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e  ed..**.** The in
f1a0: 74 65 67 65 72 20 76 61 6c 75 65 73 20 74 6f 20  teger values to 
f1b0: 78 4c 6f 63 6b 28 29 20 61 6e 64 20 78 55 6e 6c  xLock() and xUnl
f1c0: 6f 63 6b 28 29 20 61 72 65 20 6f 6e 65 20 6f 66  ock() are one of
f1d0: 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e  .** <ul>.** <li>
f1e0: 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f   [SQLITE_LOCK_NO
f1f0: 4e 45 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  NE],.** <li> [SQ
f200: 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41 52 45 44  LITE_LOCK_SHARED
f210: 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  ],.** <li> [SQLI
f220: 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52 56 45 44  TE_LOCK_RESERVED
f230: 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  ],.** <li> [SQLI
f240: 54 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49 4e 47 5d  TE_LOCK_PENDING]
f250: 2c 20 6f 72 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  , or.** <li> [SQ
f260: 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53  LITE_LOCK_EXCLUS
f270: 49 56 45 5d 2e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a  IVE]..** </ul>.*
f280: 2a 20 78 4c 6f 63 6b 28 29 20 69 6e 63 72 65 61  * xLock() increa
f290: 73 65 73 20 74 68 65 20 6c 6f 63 6b 2e 20 78 55  ses the lock. xU
f2a0: 6e 6c 6f 63 6b 28 29 20 64 65 63 72 65 61 73 65  nlock() decrease
f2b0: 73 20 74 68 65 20 6c 6f 63 6b 2e 0a 2a 2a 20 54  s the lock..** T
f2c0: 68 65 20 78 43 68 65 63 6b 52 65 73 65 72 76 65  he xCheckReserve
f2d0: 64 4c 6f 63 6b 28 29 20 6d 65 74 68 6f 64 20 63  dLock() method c
f2e0: 68 65 63 6b 73 20 77 68 65 74 68 65 72 20 61 6e  hecks whether an
f2f0: 79 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  y database conne
f300: 63 74 69 6f 6e 2c 0a 2a 2a 20 65 69 74 68 65 72  ction,.** either
f310: 20 69 6e 20 74 68 69 73 20 70 72 6f 63 65 73 73   in this process
f320: 20 6f 72 20 69 6e 20 73 6f 6d 65 20 6f 74 68 65   or in some othe
f330: 72 20 70 72 6f 63 65 73 73 2c 20 69 73 20 68 6f  r process, is ho
f340: 6c 64 69 6e 67 20 61 20 52 45 53 45 52 56 45 44  lding a RESERVED
f350: 2c 0a 2a 2a 20 50 45 4e 44 49 4e 47 2c 20 6f 72  ,.** PENDING, or
f360: 20 45 58 43 4c 55 53 49 56 45 20 6c 6f 63 6b 20   EXCLUSIVE lock 
f370: 6f 6e 20 74 68 65 20 66 69 6c 65 2e 20 20 49 74  on the file.  It
f380: 20 72 65 74 75 72 6e 73 20 74 72 75 65 0a 2a 2a   returns true.**
f390: 20 69 66 20 73 75 63 68 20 61 20 6c 6f 63 6b 20   if such a lock 
f3a0: 65 78 69 73 74 73 20 61 6e 64 20 66 61 6c 73 65  exists and false
f3b0: 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a 2a 0a 2a   otherwise..**.*
f3c0: 2a 20 54 68 65 20 78 46 69 6c 65 43 6f 6e 74 72  * The xFileContr
f3d0: 6f 6c 28 29 20 6d 65 74 68 6f 64 20 69 73 20 61  ol() method is a
f3e0: 20 67 65 6e 65 72 69 63 20 69 6e 74 65 72 66 61   generic interfa
f3f0: 63 65 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 63  ce that allows c
f400: 75 73 74 6f 6d 0a 2a 2a 20 56 46 53 20 69 6d 70  ustom.** VFS imp
f410: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 74 6f 20  lementations to 
f420: 64 69 72 65 63 74 6c 79 20 63 6f 6e 74 72 6f 6c  directly control
f430: 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65 20 75 73   an open file us
f440: 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69  ing the.** [sqli
f450: 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c  te3_file_control
f460: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ()] interface.  
f470: 54 68 65 20 73 65 63 6f 6e 64 20 22 6f 70 22 20  The second "op" 
f480: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 0a 2a  argument is an.*
f490: 2a 20 69 6e 74 65 67 65 72 20 6f 70 63 6f 64 65  * integer opcode
f4a0: 2e 20 20 54 68 65 20 74 68 69 72 64 20 61 72 67  .  The third arg
f4b0: 75 6d 65 6e 74 20 69 73 20 61 20 67 65 6e 65 72  ument is a gener
f4c0: 69 63 20 70 6f 69 6e 74 65 72 20 69 6e 74 65 6e  ic pointer inten
f4d0: 64 65 64 20 74 6f 0a 2a 2a 20 70 6f 69 6e 74 20  ded to.** point 
f4e0: 74 6f 20 61 20 73 74 72 75 63 74 75 72 65 20 74  to a structure t
f4f0: 68 61 74 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20  hat may contain 
f500: 61 72 67 75 6d 65 6e 74 73 20 6f 72 20 73 70 61  arguments or spa
f510: 63 65 20 69 6e 20 77 68 69 63 68 20 74 6f 0a 2a  ce in which to.*
f520: 2a 20 77 72 69 74 65 20 72 65 74 75 72 6e 20 76  * write return v
f530: 61 6c 75 65 73 2e 20 20 50 6f 74 65 6e 74 69 61  alues.  Potentia
f540: 6c 20 75 73 65 73 20 66 6f 72 20 78 46 69 6c 65  l uses for xFile
f550: 43 6f 6e 74 72 6f 6c 28 29 20 6d 69 67 68 74 20  Control() might 
f560: 62 65 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 73 20  be.** functions 
f570: 74 6f 20 65 6e 61 62 6c 65 20 62 6c 6f 63 6b 69  to enable blocki
f580: 6e 67 20 6c 6f 63 6b 73 20 77 69 74 68 20 74 69  ng locks with ti
f590: 6d 65 6f 75 74 73 2c 20 74 6f 20 63 68 61 6e 67  meouts, to chang
f5a0: 65 20 74 68 65 0a 2a 2a 20 6c 6f 63 6b 69 6e 67  e the.** locking
f5b0: 20 73 74 72 61 74 65 67 79 20 28 66 6f 72 20 65   strategy (for e
f5c0: 78 61 6d 70 6c 65 20 74 6f 20 75 73 65 20 64 6f  xample to use do
f5d0: 74 2d 66 69 6c 65 20 6c 6f 63 6b 73 29 2c 20 74  t-file locks), t
f5e0: 6f 20 69 6e 71 75 69 72 65 0a 2a 2a 20 61 62 6f  o inquire.** abo
f5f0: 75 74 20 74 68 65 20 73 74 61 74 75 73 20 6f 66  ut the status of
f600: 20 61 20 6c 6f 63 6b 2c 20 6f 72 20 74 6f 20 62   a lock, or to b
f610: 72 65 61 6b 20 73 74 61 6c 65 20 6c 6f 63 6b 73  reak stale locks
f620: 2e 20 20 54 68 65 20 53 51 4c 69 74 65 0a 2a 2a  .  The SQLite.**
f630: 20 63 6f 72 65 20 72 65 73 65 72 76 65 73 20 61   core reserves a
f640: 6c 6c 20 6f 70 63 6f 64 65 73 20 6c 65 73 73 20  ll opcodes less 
f650: 74 68 61 6e 20 31 30 30 20 66 6f 72 20 69 74 73  than 100 for its
f660: 20 6f 77 6e 20 75 73 65 2e 0a 2a 2a 20 41 20 5b   own use..** A [
f670: 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70 63  file control opc
f680: 6f 64 65 73 20 7c 20 6c 69 73 74 20 6f 66 20 6f  odes | list of o
f690: 70 63 6f 64 65 73 5d 20 6c 65 73 73 20 74 68 61  pcodes] less tha
f6a0: 6e 20 31 30 30 20 69 73 20 61 76 61 69 6c 61 62  n 100 is availab
f6b0: 6c 65 2e 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69  le..** Applicati
f6c0: 6f 6e 73 20 74 68 61 74 20 64 65 66 69 6e 65 20  ons that define 
f6d0: 61 20 63 75 73 74 6f 6d 20 78 46 69 6c 65 43 6f  a custom xFileCo
f6e0: 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20 73 68 6f  ntrol method sho
f6f0: 75 6c 64 20 75 73 65 20 6f 70 63 6f 64 65 73 0a  uld use opcodes.
f700: 2a 2a 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  ** greater than 
f710: 31 30 30 20 74 6f 20 61 76 6f 69 64 20 63 6f 6e  100 to avoid con
f720: 66 6c 69 63 74 73 2e 20 20 56 46 53 20 69 6d 70  flicts.  VFS imp
f730: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 73 68 6f  lementations sho
f740: 75 6c 64 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53  uld.** return [S
f750: 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 5d 20  QLITE_NOTFOUND] 
f760: 66 6f 72 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  for file control
f770: 20 6f 70 63 6f 64 65 73 20 74 68 61 74 20 74 68   opcodes that th
f780: 65 79 20 64 6f 20 6e 6f 74 0a 2a 2a 20 72 65 63  ey do not.** rec
f790: 6f 67 6e 69 7a 65 2e 0a 2a 2a 0a 2a 2a 20 54 68  ognize..**.** Th
f7a0: 65 20 78 53 65 63 74 6f 72 53 69 7a 65 28 29 20  e xSectorSize() 
f7b0: 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 74  method returns t
f7c0: 68 65 20 73 65 63 74 6f 72 20 73 69 7a 65 20 6f  he sector size o
f7d0: 66 20 74 68 65 0a 2a 2a 20 64 65 76 69 63 65 20  f the.** device 
f7e0: 74 68 61 74 20 75 6e 64 65 72 6c 69 65 73 20 74  that underlies t
f7f0: 68 65 20 66 69 6c 65 2e 20 20 54 68 65 20 73 65  he file.  The se
f800: 63 74 6f 72 20 73 69 7a 65 20 69 73 20 74 68 65  ctor size is the
f810: 0a 2a 2a 20 6d 69 6e 69 6d 75 6d 20 77 72 69 74  .** minimum writ
f820: 65 20 74 68 61 74 20 63 61 6e 20 62 65 20 70 65  e that can be pe
f830: 72 66 6f 72 6d 65 64 20 77 69 74 68 6f 75 74 20  rformed without 
f840: 64 69 73 74 75 72 62 69 6e 67 0a 2a 2a 20 6f 74  disturbing.** ot
f850: 68 65 72 20 62 79 74 65 73 20 69 6e 20 74 68 65  her bytes in the
f860: 20 66 69 6c 65 2e 20 20 54 68 65 20 78 44 65 76   file.  The xDev
f870: 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74 69  iceCharacteristi
f880: 63 73 28 29 0a 2a 2a 20 6d 65 74 68 6f 64 20 72  cs().** method r
f890: 65 74 75 72 6e 73 20 61 20 62 69 74 20 76 65 63  eturns a bit vec
f8a0: 74 6f 72 20 64 65 73 63 72 69 62 69 6e 67 20 62  tor describing b
f8b0: 65 68 61 76 69 6f 72 73 20 6f 66 20 74 68 65 0a  ehaviors of the.
f8c0: 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 64 65  ** underlying de
f8d0: 76 69 63 65 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e  vice:.**.** <ul>
f8e0: 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
f8f0: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 5d 0a 2a  _IOCAP_ATOMIC].*
f900: 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49  * <li> [SQLITE_I
f910: 4f 43 41 50 5f 41 54 4f 4d 49 43 35 31 32 5d 0a  OCAP_ATOMIC512].
f920: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f930: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31 4b 5d 0a  IOCAP_ATOMIC1K].
f940: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f950: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32 4b 5d 0a  IOCAP_ATOMIC2K].
f960: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f970: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 34 4b 5d 0a  IOCAP_ATOMIC4K].
f980: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f990: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 38 4b 5d 0a  IOCAP_ATOMIC8K].
f9a0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f9b0: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31 36 4b 5d  IOCAP_ATOMIC16K]
f9c0: 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
f9d0: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 33 32 4b  _IOCAP_ATOMIC32K
f9e0: 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54  ].** <li> [SQLIT
f9f0: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 36 34  E_IOCAP_ATOMIC64
fa00: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
fa10: 54 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f 41 50  TE_IOCAP_SAFE_AP
fa20: 50 45 4e 44 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  PEND].** <li> [S
fa30: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 45 51 55  QLITE_IOCAP_SEQU
fa40: 45 4e 54 49 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20  ENTIAL].** <li> 
fa50: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e  [SQLITE_IOCAP_UN
fa60: 44 45 4c 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f  DELETABLE_WHEN_O
fa70: 50 45 4e 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  PEN].** <li> [SQ
fa80: 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52  LITE_IOCAP_POWER
fa90: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 0a  SAFE_OVERWRITE].
faa0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
fab0: 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42 4c 45 5d  IOCAP_IMMUTABLE]
fac0: 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
fad0: 5f 49 4f 43 41 50 5f 42 41 54 43 48 5f 41 54 4f  _IOCAP_BATCH_ATO
fae0: 4d 49 43 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a  MIC].** </ul>.**
faf0: 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 49  .** The SQLITE_I
fb00: 4f 43 41 50 5f 41 54 4f 4d 49 43 20 70 72 6f 70  OCAP_ATOMIC prop
fb10: 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61 74 20  erty means that 
fb20: 61 6c 6c 20 77 72 69 74 65 73 20 6f 66 0a 2a 2a  all writes of.**
fb30: 20 61 6e 79 20 73 69 7a 65 20 61 72 65 20 61 74   any size are at
fb40: 6f 6d 69 63 2e 20 20 54 68 65 20 53 51 4c 49 54  omic.  The SQLIT
fb50: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 6e 6e  E_IOCAP_ATOMICnn
fb60: 6e 20 76 61 6c 75 65 73 0a 2a 2a 20 6d 65 61 6e  n values.** mean
fb70: 20 74 68 61 74 20 77 72 69 74 65 73 20 6f 66 20   that writes of 
fb80: 62 6c 6f 63 6b 73 20 74 68 61 74 20 61 72 65 20  blocks that are 
fb90: 6e 6e 6e 20 62 79 74 65 73 20 69 6e 20 73 69 7a  nnn bytes in siz
fba0: 65 20 61 6e 64 0a 2a 2a 20 61 72 65 20 61 6c 69  e and.** are ali
fbb0: 67 6e 65 64 20 74 6f 20 61 6e 20 61 64 64 72 65  gned to an addre
fbc0: 73 73 20 77 68 69 63 68 20 69 73 20 61 6e 20 69  ss which is an i
fbd0: 6e 74 65 67 65 72 20 6d 75 6c 74 69 70 6c 65 20  nteger multiple 
fbe0: 6f 66 0a 2a 2a 20 6e 6e 6e 20 61 72 65 20 61 74  of.** nnn are at
fbf0: 6f 6d 69 63 2e 20 20 54 68 65 20 53 51 4c 49 54  omic.  The SQLIT
fc00: 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f 41 50 50  E_IOCAP_SAFE_APP
fc10: 45 4e 44 20 76 61 6c 75 65 20 6d 65 61 6e 73 0a  END value means.
fc20: 2a 2a 20 74 68 61 74 20 77 68 65 6e 20 64 61 74  ** that when dat
fc30: 61 20 69 73 20 61 70 70 65 6e 64 65 64 20 74 6f  a is appended to
fc40: 20 61 20 66 69 6c 65 2c 20 74 68 65 20 64 61 74   a file, the dat
fc50: 61 20 69 73 20 61 70 70 65 6e 64 65 64 0a 2a 2a  a is appended.**
fc60: 20 66 69 72 73 74 20 74 68 65 6e 20 74 68 65 20   first then the 
fc70: 73 69 7a 65 20 6f 66 20 74 68 65 20 66 69 6c 65  size of the file
fc80: 20 69 73 20 65 78 74 65 6e 64 65 64 2c 20 6e 65   is extended, ne
fc90: 76 65 72 20 74 68 65 20 6f 74 68 65 72 0a 2a 2a  ver the other.**
fca0: 20 77 61 79 20 61 72 6f 75 6e 64 2e 20 20 54 68   way around.  Th
fcb0: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53  e SQLITE_IOCAP_S
fcc0: 45 51 55 45 4e 54 49 41 4c 20 70 72 6f 70 65 72  EQUENTIAL proper
fcd0: 74 79 20 6d 65 61 6e 73 20 74 68 61 74 0a 2a 2a  ty means that.**
fce0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20   information is 
fcf0: 77 72 69 74 74 65 6e 20 74 6f 20 64 69 73 6b 20  written to disk 
fd00: 69 6e 20 74 68 65 20 73 61 6d 65 20 6f 72 64 65  in the same orde
fd10: 72 20 61 73 20 63 61 6c 6c 73 0a 2a 2a 20 74 6f  r as calls.** to
fd20: 20 78 57 72 69 74 65 28 29 2e 0a 2a 2a 0a 2a 2a   xWrite()..**.**
fd30: 20 49 66 20 78 52 65 61 64 28 29 20 72 65 74 75   If xRead() retu
fd40: 72 6e 73 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  rns SQLITE_IOERR
fd50: 5f 53 48 4f 52 54 5f 52 45 41 44 20 69 74 20 6d  _SHORT_READ it m
fd60: 75 73 74 20 61 6c 73 6f 20 66 69 6c 6c 0a 2a 2a  ust also fill.**
fd70: 20 69 6e 20 74 68 65 20 75 6e 72 65 61 64 20 70   in the unread p
fd80: 6f 72 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 62  ortions of the b
fd90: 75 66 66 65 72 20 77 69 74 68 20 7a 65 72 6f 73  uffer with zeros
fda0: 2e 20 20 41 20 56 46 53 20 74 68 61 74 0a 2a 2a  .  A VFS that.**
fdb0: 20 66 61 69 6c 73 20 74 6f 20 7a 65 72 6f 2d 66   fails to zero-f
fdc0: 69 6c 6c 20 73 68 6f 72 74 20 72 65 61 64 73 20  ill short reads 
fdd0: 6d 69 67 68 74 20 73 65 65 6d 20 74 6f 20 77 6f  might seem to wo
fde0: 72 6b 2e 20 20 48 6f 77 65 76 65 72 2c 0a 2a 2a  rk.  However,.**
fdf0: 20 66 61 69 6c 75 72 65 20 74 6f 20 7a 65 72 6f   failure to zero
fe00: 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72 65 61 64  -fill short read
fe10: 73 20 77 69 6c 6c 20 65 76 65 6e 74 75 61 6c 6c  s will eventuall
fe20: 79 20 6c 65 61 64 20 74 6f 0a 2a 2a 20 64 61 74  y lead to.** dat
fe30: 61 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e  abase corruption
fe40: 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
fe50: 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  uct sqlite3_io_m
fe60: 65 74 68 6f 64 73 20 73 71 6c 69 74 65 33 5f 69  ethods sqlite3_i
fe70: 6f 5f 6d 65 74 68 6f 64 73 3b 0a 73 74 72 75 63  o_methods;.struc
fe80: 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74  t sqlite3_io_met
fe90: 68 6f 64 73 20 7b 0a 20 20 69 6e 74 20 69 56 65  hods {.  int iVe
fea0: 72 73 69 6f 6e 3b 0a 20 20 69 6e 74 20 28 2a 78  rsion;.  int (*x
feb0: 43 6c 6f 73 65 29 28 73 71 6c 69 74 65 33 5f 66  Close)(sqlite3_f
fec0: 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78  ile*);.  int (*x
fed0: 52 65 61 64 29 28 73 71 6c 69 74 65 33 5f 66 69  Read)(sqlite3_fi
fee0: 6c 65 2a 2c 20 76 6f 69 64 2a 2c 20 69 6e 74 20  le*, void*, int 
fef0: 69 41 6d 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e  iAmt, sqlite3_in
ff00: 74 36 34 20 69 4f 66 73 74 29 3b 0a 20 20 69 6e  t64 iOfst);.  in
ff10: 74 20 28 2a 78 57 72 69 74 65 29 28 73 71 6c 69  t (*xWrite)(sqli
ff20: 74 65 33 5f 66 69 6c 65 2a 2c 20 63 6f 6e 73 74  te3_file*, const
ff30: 20 76 6f 69 64 2a 2c 20 69 6e 74 20 69 41 6d 74   void*, int iAmt
ff40: 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  , sqlite3_int64 
ff50: 69 4f 66 73 74 29 3b 0a 20 20 69 6e 74 20 28 2a  iOfst);.  int (*
ff60: 78 54 72 75 6e 63 61 74 65 29 28 73 71 6c 69 74  xTruncate)(sqlit
ff70: 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c 69 74 65  e3_file*, sqlite
ff80: 33 5f 69 6e 74 36 34 20 73 69 7a 65 29 3b 0a 20  3_int64 size);. 
ff90: 20 69 6e 74 20 28 2a 78 53 79 6e 63 29 28 73 71   int (*xSync)(sq
ffa0: 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74  lite3_file*, int
ffb0: 20 66 6c 61 67 73 29 3b 0a 20 20 69 6e 74 20 28   flags);.  int (
ffc0: 2a 78 46 69 6c 65 53 69 7a 65 29 28 73 71 6c 69  *xFileSize)(sqli
ffd0: 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c 69 74  te3_file*, sqlit
ffe0: 65 33 5f 69 6e 74 36 34 20 2a 70 53 69 7a 65 29  e3_int64 *pSize)
fff0: 3b 0a 20 20 69 6e 74 20 28 2a 78 4c 6f 63 6b 29  ;.  int (*xLock)
10000 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20  (sqlite3_file*, 
10010 69 6e 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 55  int);.  int (*xU
10020 6e 6c 6f 63 6b 29 28 73 71 6c 69 74 65 33 5f 66  nlock)(sqlite3_f
10030 69 6c 65 2a 2c 20 69 6e 74 29 3b 0a 20 20 69 6e  ile*, int);.  in
10040 74 20 28 2a 78 43 68 65 63 6b 52 65 73 65 72 76  t (*xCheckReserv
10050 65 64 4c 6f 63 6b 29 28 73 71 6c 69 74 65 33 5f  edLock)(sqlite3_
10060 66 69 6c 65 2a 2c 20 69 6e 74 20 2a 70 52 65 73  file*, int *pRes
10070 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46  Out);.  int (*xF
10080 69 6c 65 43 6f 6e 74 72 6f 6c 29 28 73 71 6c 69  ileControl)(sqli
10090 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 6f  te3_file*, int o
100a0 70 2c 20 76 6f 69 64 20 2a 70 41 72 67 29 3b 0a  p, void *pArg);.
100b0 20 20 69 6e 74 20 28 2a 78 53 65 63 74 6f 72 53    int (*xSectorS
100c0 69 7a 65 29 28 73 71 6c 69 74 65 33 5f 66 69 6c  ize)(sqlite3_fil
100d0 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 44 65  e*);.  int (*xDe
100e0 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74  viceCharacterist
100f0 69 63 73 29 28 73 71 6c 69 74 65 33 5f 66 69 6c  ics)(sqlite3_fil
10100 65 2a 29 3b 0a 20 20 2f 2a 20 4d 65 74 68 6f 64  e*);.  /* Method
10110 73 20 61 62 6f 76 65 20 61 72 65 20 76 61 6c 69  s above are vali
10120 64 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 31 20  d for version 1 
10130 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53 68 6d 4d  */.  int (*xShmM
10140 61 70 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65  ap)(sqlite3_file
10150 2a 2c 20 69 6e 74 20 69 50 67 2c 20 69 6e 74 20  *, int iPg, int 
10160 70 67 73 7a 2c 20 69 6e 74 2c 20 76 6f 69 64 20  pgsz, int, void 
10170 76 6f 6c 61 74 69 6c 65 2a 2a 29 3b 0a 20 20 69  volatile**);.  i
10180 6e 74 20 28 2a 78 53 68 6d 4c 6f 63 6b 29 28 73  nt (*xShmLock)(s
10190 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e  qlite3_file*, in
101a0 74 20 6f 66 66 73 65 74 2c 20 69 6e 74 20 6e 2c  t offset, int n,
101b0 20 69 6e 74 20 66 6c 61 67 73 29 3b 0a 20 20 76   int flags);.  v
101c0 6f 69 64 20 28 2a 78 53 68 6d 42 61 72 72 69 65  oid (*xShmBarrie
101d0 72 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  r)(sqlite3_file*
101e0 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 68 6d 55  );.  int (*xShmU
101f0 6e 6d 61 70 29 28 73 71 6c 69 74 65 33 5f 66 69  nmap)(sqlite3_fi
10200 6c 65 2a 2c 20 69 6e 74 20 64 65 6c 65 74 65 46  le*, int deleteF
10210 6c 61 67 29 3b 0a 20 20 2f 2a 20 4d 65 74 68 6f  lag);.  /* Metho
10220 64 73 20 61 62 6f 76 65 20 61 72 65 20 76 61 6c  ds above are val
10230 69 64 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32  id for version 2
10240 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 46 65 74   */.  int (*xFet
10250 63 68 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65  ch)(sqlite3_file
10260 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  *, sqlite3_int64
10270 20 69 4f 66 73 74 2c 20 69 6e 74 20 69 41 6d 74   iOfst, int iAmt
10280 2c 20 76 6f 69 64 20 2a 2a 70 70 29 3b 0a 20 20  , void **pp);.  
10290 69 6e 74 20 28 2a 78 55 6e 66 65 74 63 68 29 28  int (*xUnfetch)(
102a0 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73  sqlite3_file*, s
102b0 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 69 4f 66  qlite3_int64 iOf
102c0 73 74 2c 20 76 6f 69 64 20 2a 70 29 3b 0a 20 20  st, void *p);.  
102d0 2f 2a 20 4d 65 74 68 6f 64 73 20 61 62 6f 76 65  /* Methods above
102e0 20 61 72 65 20 76 61 6c 69 64 20 66 6f 72 20 76   are valid for v
102f0 65 72 73 69 6f 6e 20 33 20 2a 2f 0a 20 20 2f 2a  ersion 3 */.  /*
10300 20 41 64 64 69 74 69 6f 6e 61 6c 20 6d 65 74 68   Additional meth
10310 6f 64 73 20 6d 61 79 20 62 65 20 61 64 64 65 64  ods may be added
10320 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61   in future relea
10330 73 65 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a  ses */.};../*.**
10340 20 43 41 50 49 33 52 45 46 3a 20 53 74 61 6e 64   CAPI3REF: Stand
10350 61 72 64 20 46 69 6c 65 20 43 6f 6e 74 72 6f 6c  ard File Control
10360 20 4f 70 63 6f 64 65 73 0a 2a 2a 20 4b 45 59 57   Opcodes.** KEYW
10370 4f 52 44 53 3a 20 7b 66 69 6c 65 20 63 6f 6e 74  ORDS: {file cont
10380 72 6f 6c 20 6f 70 63 6f 64 65 73 7d 20 7b 66 69  rol opcodes} {fi
10390 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64  le control opcod
103a0 65 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69  e}.**.** These i
103b0 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73  nteger constants
103c0 20 61 72 65 20 6f 70 63 6f 64 65 73 20 66 6f 72   are opcodes for
103d0 20 74 68 65 20 78 46 69 6c 65 43 6f 6e 74 72 6f   the xFileContro
103e0 6c 20 6d 65 74 68 6f 64 0a 2a 2a 20 6f 66 20 74  l method.** of t
103f0 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  he [sqlite3_io_m
10400 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 61  ethods] object a
10410 6e 64 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69  nd for the [sqli
10420 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c  te3_file_control
10430 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  ()].** interface
10440 2e 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20  ..**.** <ul>.** 
10450 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
10460 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d 5d 0a 2a  TL_LOCKSTATE]].*
10470 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
10480 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d 20 6f  NTL_LOCKSTATE] o
10490 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 66 6f  pcode is used fo
104a0 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54 68  r debugging.  Th
104b0 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61 75  is.** opcode cau
104c0 73 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f 6e  ses the xFileCon
104d0 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20 77  trol method to w
104e0 72 69 74 65 20 74 68 65 20 63 75 72 72 65 6e 74  rite the current
104f0 20 73 74 61 74 65 20 6f 66 0a 2a 2a 20 74 68 65   state of.** the
10500 20 6c 6f 63 6b 20 28 6f 6e 65 20 6f 66 20 5b 53   lock (one of [S
10510 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e 45 5d  QLITE_LOCK_NONE]
10520 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 53  , [SQLITE_LOCK_S
10530 48 41 52 45 44 5d 2c 0a 2a 2a 20 5b 53 51 4c 49  HARED],.** [SQLI
10540 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52 56 45 44  TE_LOCK_RESERVED
10550 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f  ], [SQLITE_LOCK_
10560 50 45 4e 44 49 4e 47 5d 2c 20 6f 72 20 5b 53 51  PENDING], or [SQ
10570 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53  LITE_LOCK_EXCLUS
10580 49 56 45 5d 29 0a 2a 2a 20 69 6e 74 6f 20 61 6e  IVE]).** into an
10590 20 69 6e 74 65 67 65 72 20 74 68 61 74 20 74 68   integer that th
105a0 65 20 70 41 72 67 20 61 72 67 75 6d 65 6e 74 20  e pArg argument 
105b0 70 6f 69 6e 74 73 20 74 6f 2e 20 54 68 69 73 20  points to. This 
105c0 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a 20 69 73  capability.** is
105d0 20 75 73 65 64 20 64 75 72 69 6e 67 20 74 65 73   used during tes
105e0 74 69 6e 67 20 61 6e 64 20 69 73 20 6f 6e 6c 79  ting and is only
105f0 20 61 76 61 69 6c 61 62 6c 65 20 77 68 65 6e 20   available when 
10600 74 68 65 20 53 51 4c 49 54 45 5f 54 45 53 54 0a  the SQLITE_TEST.
10610 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  ** compile-time 
10620 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a  option is used..
10630 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
10640 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49  TE_FCNTL_SIZE_HI
10650 4e 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  NT]].** The [SQL
10660 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48  ITE_FCNTL_SIZE_H
10670 49 4e 54 5d 20 6f 70 63 6f 64 65 20 69 73 20 75  INT] opcode is u
10680 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 74 6f  sed by SQLite to
10690 20 67 69 76 65 20 74 68 65 20 56 46 53 0a 2a 2a   give the VFS.**
106a0 20 6c 61 79 65 72 20 61 20 68 69 6e 74 20 6f 66   layer a hint of
106b0 20 68 6f 77 20 6c 61 72 67 65 20 74 68 65 20 64   how large the d
106c0 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 69 6c  atabase file wil
106d0 6c 20 67 72 6f 77 20 74 6f 20 62 65 20 64 75 72  l grow to be dur
106e0 69 6e 67 20 74 68 65 0a 2a 2a 20 63 75 72 72 65  ing the.** curre
106f0 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20  nt transaction. 
10700 20 54 68 69 73 20 68 69 6e 74 20 69 73 20 6e 6f   This hint is no
10710 74 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20  t guaranteed to 
10720 62 65 20 61 63 63 75 72 61 74 65 20 62 75 74 20  be accurate but 
10730 69 74 0a 2a 2a 20 69 73 20 6f 66 74 65 6e 20 63  it.** is often c
10740 6c 6f 73 65 2e 20 20 54 68 65 20 75 6e 64 65 72  lose.  The under
10750 6c 79 69 6e 67 20 56 46 53 20 6d 69 67 68 74 20  lying VFS might 
10760 63 68 6f 6f 73 65 20 74 6f 20 70 72 65 61 6c 6c  choose to preall
10770 6f 63 61 74 65 20 64 61 74 61 62 61 73 65 0a 2a  ocate database.*
10780 2a 20 66 69 6c 65 20 73 70 61 63 65 20 62 61 73  * file space bas
10790 65 64 20 6f 6e 20 74 68 69 73 20 68 69 6e 74 20  ed on this hint 
107a0 69 6e 20 6f 72 64 65 72 20 74 6f 20 68 65 6c 70  in order to help
107b0 20 77 72 69 74 65 73 20 74 6f 20 74 68 65 20 64   writes to the d
107c0 61 74 61 62 61 73 65 0a 2a 2a 20 66 69 6c 65 20  atabase.** file 
107d0 72 75 6e 20 66 61 73 74 65 72 2e 0a 2a 2a 0a 2a  run faster..**.*
107e0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
107f0 43 4e 54 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d  CNTL_SIZE_LIMIT]
10800 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
10810 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 4c 49 4d 49  _FCNTL_SIZE_LIMI
10820 54 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65  T] opcode is use
10830 64 20 62 79 20 69 6e 2d 6d 65 6d 6f 72 79 20 56  d by in-memory V
10840 46 53 20 74 68 61 74 0a 2a 2a 20 69 6d 70 6c 65  FS that.** imple
10850 6d 65 6e 74 73 20 5b 73 71 6c 69 74 65 33 5f 64  ments [sqlite3_d
10860 65 73 65 72 69 61 6c 69 7a 65 28 29 5d 20 74 6f  eserialize()] to
10870 20 73 65 74 20 61 6e 20 75 70 70 65 72 20 62 6f   set an upper bo
10880 75 6e 64 20 6f 6e 20 74 68 65 20 73 69 7a 65 0a  und on the size.
10890 2a 2a 20 6f 66 20 74 68 65 20 69 6e 2d 6d 65 6d  ** of the in-mem
108a0 6f 72 79 20 64 61 74 61 62 61 73 65 2e 20 20 54  ory database.  T
108b0 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  he argument is a
108c0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 5b 73   pointer to a [s
108d0 71 6c 69 74 65 33 5f 69 6e 74 36 34 5d 2e 0a 2a  qlite3_int64]..*
108e0 2a 20 49 66 20 74 68 65 20 69 6e 74 65 67 65 72  * If the integer
108f0 20 70 6f 69 6e 74 65 64 20 74 6f 20 69 73 20 6e   pointed to is n
10900 65 67 61 74 69 76 65 2c 20 74 68 65 6e 20 69 74  egative, then it
10910 20 69 73 20 66 69 6c 6c 65 64 20 69 6e 20 77 69   is filled in wi
10920 74 68 20 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e  th the.** curren
10930 74 20 6c 69 6d 69 74 2e 20 20 4f 74 68 65 72 77  t limit.  Otherw
10940 69 73 65 20 74 68 65 20 6c 69 6d 69 74 20 69 73  ise the limit is
10950 20 73 65 74 20 74 6f 20 74 68 65 20 6c 61 72 67   set to the larg
10960 65 72 20 6f 66 20 74 68 65 20 76 61 6c 75 65 0a  er of the value.
10970 2a 2a 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65  ** of the intege
10980 72 20 70 6f 69 6e 74 65 64 20 74 6f 20 61 6e 64  r pointed to and
10990 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74   the current dat
109a0 61 62 61 73 65 20 73 69 7a 65 2e 20 20 54 68 65  abase size.  The
109b0 20 69 6e 74 65 67 65 72 0a 2a 2a 20 70 6f 69 6e   integer.** poin
109c0 74 65 64 20 74 6f 20 69 73 20 73 65 74 20 74 6f  ted to is set to
109d0 20 74 68 65 20 6e 65 77 20 6c 69 6d 69 74 2e 0a   the new limit..
109e0 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
109f0 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53  TE_FCNTL_CHUNK_S
10a00 49 5a 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51  IZE]].** The [SQ
10a10 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b  LITE_FCNTL_CHUNK
10a20 5f 53 49 5a 45 5d 20 6f 70 63 6f 64 65 20 69 73  _SIZE] opcode is
10a30 20 75 73 65 64 20 74 6f 20 72 65 71 75 65 73 74   used to request
10a40 20 74 68 61 74 20 74 68 65 20 56 46 53 0a 2a 2a   that the VFS.**
10a50 20 65 78 74 65 6e 64 73 20 61 6e 64 20 74 72 75   extends and tru
10a60 6e 63 61 74 65 73 20 74 68 65 20 64 61 74 61 62  ncates the datab
10a70 61 73 65 20 66 69 6c 65 20 69 6e 20 63 68 75 6e  ase file in chun
10a80 6b 73 20 6f 66 20 61 20 73 69 7a 65 20 73 70 65  ks of a size spe
10a90 63 69 66 69 65 64 0a 2a 2a 20 62 79 20 74 68 65  cified.** by the
10aa0 20 75 73 65 72 2e 20 54 68 65 20 66 6f 75 72 74   user. The fourt
10ab0 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73  h argument to [s
10ac0 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
10ad0 72 6f 6c 28 29 5d 20 73 68 6f 75 6c 64 20 0a 2a  rol()] should .*
10ae0 2a 20 70 6f 69 6e 74 20 74 6f 20 61 6e 20 69 6e  * point to an in
10af0 74 65 67 65 72 20 28 74 79 70 65 20 69 6e 74 29  teger (type int)
10b00 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
10b10 6e 65 77 20 63 68 75 6e 6b 2d 73 69 7a 65 20 74  new chunk-size t
10b20 6f 20 75 73 65 0a 2a 2a 20 66 6f 72 20 74 68 65  o use.** for the
10b30 20 6e 6f 6d 69 6e 61 74 65 64 20 64 61 74 61 62   nominated datab
10b40 61 73 65 2e 20 41 6c 6c 6f 63 61 74 69 6e 67 20  ase. Allocating 
10b50 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 73 70  database file sp
10b60 61 63 65 20 69 6e 20 6c 61 72 67 65 0a 2a 2a 20  ace in large.** 
10b70 63 68 75 6e 6b 73 20 28 73 61 79 20 31 4d 42 20  chunks (say 1MB 
10b80 61 74 20 61 20 74 69 6d 65 29 2c 20 6d 61 79 20  at a time), may 
10b90 72 65 64 75 63 65 20 66 69 6c 65 2d 73 79 73 74  reduce file-syst
10ba0 65 6d 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e  em fragmentation
10bb0 20 61 6e 64 0a 2a 2a 20 69 6d 70 72 6f 76 65 20   and.** improve 
10bc0 70 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73  performance on s
10bd0 6f 6d 65 20 73 79 73 74 65 6d 73 2e 0a 2a 2a 0a  ome systems..**.
10be0 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
10bf0 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54  FCNTL_FILE_POINT
10c00 45 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ER]].** The [SQL
10c10 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50  ITE_FCNTL_FILE_P
10c20 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 69  OINTER] opcode i
10c30 73 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e  s used to obtain
10c40 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f   a pointer.** to
10c50 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69   the [sqlite3_fi
10c60 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f 63  le] object assoc
10c70 69 61 74 65 64 20 77 69 74 68 20 61 20 70 61 72  iated with a par
10c80 74 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65  ticular database
10c90 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20  .** connection. 
10ca0 20 53 65 65 20 61 6c 73 6f 20 5b 53 51 4c 49 54   See also [SQLIT
10cb0 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f  E_FCNTL_JOURNAL_
10cc0 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20  POINTER]..**.** 
10cd0 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
10ce0 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54  TL_JOURNAL_POINT
10cf0 45 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ER]].** The [SQL
10d00 49 54 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41  ITE_FCNTL_JOURNA
10d10 4c 5f 50 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64  L_POINTER] opcod
10d20 65 20 69 73 20 75 73 65 64 20 74 6f 20 6f 62 74  e is used to obt
10d30 61 69 6e 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a  ain a pointer.**
10d40 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
10d50 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73  _file] object as
10d60 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
10d70 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 28  e journal file (
10d80 65 69 74 68 65 72 0a 2a 2a 20 74 68 65 20 5b 72  either.** the [r
10d90 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d  ollback journal]
10da0 20 6f 72 20 74 68 65 20 5b 77 72 69 74 65 2d 61   or the [write-a
10db0 68 65 61 64 20 6c 6f 67 5d 29 20 66 6f 72 20 61  head log]) for a
10dc0 20 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61   particular data
10dd0 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69  base.** connecti
10de0 6f 6e 2e 20 20 53 65 65 20 61 6c 73 6f 20 5b 53  on.  See also [S
10df0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45  QLITE_FCNTL_FILE
10e00 5f 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a  _POINTER]..**.**
10e10 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
10e20 4e 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44  NTL_SYNC_OMITTED
10e30 5d 5d 0a 2a 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20  ]].** No longer 
10e40 69 6e 20 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  in use..**.** <l
10e50 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
10e60 5f 53 59 4e 43 5d 5d 0a 2a 2a 20 54 68 65 20 5b  _SYNC]].** The [
10e70 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e  SQLITE_FCNTL_SYN
10e80 43 5d 20 6f 70 63 6f 64 65 20 69 73 20 67 65 6e  C] opcode is gen
10e90 65 72 61 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c  erated internall
10ea0 79 20 62 79 20 53 51 4c 69 74 65 20 61 6e 64 0a  y by SQLite and.
10eb0 2a 2a 20 73 65 6e 74 20 74 6f 20 74 68 65 20 56  ** sent to the V
10ec0 46 53 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62  FS immediately b
10ed0 65 66 6f 72 65 20 74 68 65 20 78 53 79 6e 63 20  efore the xSync 
10ee0 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65  method is invoke
10ef0 64 20 6f 6e 20 61 0a 2a 2a 20 64 61 74 61 62 61  d on a.** databa
10f00 73 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  se file descript
10f10 6f 72 2e 20 4f 72 2c 20 69 66 20 74 68 65 20 78  or. Or, if the x
10f20 53 79 6e 63 20 6d 65 74 68 6f 64 20 69 73 20 6e  Sync method is n
10f30 6f 74 20 69 6e 76 6f 6b 65 64 20 0a 2a 2a 20 62  ot invoked .** b
10f40 65 63 61 75 73 65 20 74 68 65 20 75 73 65 72 20  ecause the user 
10f50 68 61 73 20 63 6f 6e 66 69 67 75 72 65 64 20 53  has configured S
10f60 51 4c 69 74 65 20 77 69 74 68 20 0a 2a 2a 20 5b  QLite with .** [
10f70 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
10f80 75 73 20 7c 20 50 52 41 47 4d 41 20 73 79 6e 63  us | PRAGMA sync
10f90 68 72 6f 6e 6f 75 73 3d 4f 46 46 5d 20 69 74 20  hronous=OFF] it 
10fa0 69 73 20 69 6e 76 6f 6b 65 64 20 69 6e 20 70 6c  is invoked in pl
10fb0 61 63 65 20 0a 2a 2a 20 6f 66 20 74 68 65 20 78  ace .** of the x
10fc0 53 79 6e 63 20 6d 65 74 68 6f 64 2e 20 49 6e 20  Sync method. In 
10fd0 6d 6f 73 74 20 63 61 73 65 73 2c 20 74 68 65 20  most cases, the 
10fe0 70 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74  pointer argument
10ff0 20 70 61 73 73 65 64 20 77 69 74 68 0a 2a 2a 20   passed with.** 
11000 74 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f  this file-contro
11010 6c 20 69 73 20 4e 55 4c 4c 2e 20 48 6f 77 65 76  l is NULL. Howev
11020 65 72 2c 20 69 66 20 74 68 65 20 64 61 74 61 62  er, if the datab
11030 61 73 65 20 66 69 6c 65 20 69 73 20 62 65 69 6e  ase file is bein
11040 67 20 73 79 6e 63 65 64 0a 2a 2a 20 61 73 20 70  g synced.** as p
11050 61 72 74 20 6f 66 20 61 20 6d 75 6c 74 69 2d 64  art of a multi-d
11060 61 74 61 62 61 73 65 20 63 6f 6d 6d 69 74 2c 20  atabase commit, 
11070 74 68 65 20 61 72 67 75 6d 65 6e 74 20 70 6f 69  the argument poi
11080 6e 74 73 20 74 6f 20 61 20 6e 75 6c 2d 74 65 72  nts to a nul-ter
11090 6d 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e  minated.** strin
110a0 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  g containing the
110b0 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6d 61   transactions ma
110c0 73 74 65 72 2d 6a 6f 75 72 6e 61 6c 20 66 69 6c  ster-journal fil
110d0 65 20 6e 61 6d 65 2e 20 56 46 53 65 73 20 74 68  e name. VFSes th
110e0 61 74 20 0a 2a 2a 20 64 6f 20 6e 6f 74 20 6e 65  at .** do not ne
110f0 65 64 20 74 68 69 73 20 73 69 67 6e 61 6c 20 73  ed this signal s
11100 68 6f 75 6c 64 20 73 69 6c 65 6e 74 6c 79 20 69  hould silently i
11110 67 6e 6f 72 65 20 74 68 69 73 20 6f 70 63 6f 64  gnore this opcod
11120 65 2e 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  e. Applications 
11130 0a 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 63  .** should not c
11140 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  all [sqlite3_fil
11150 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 77 69 74  e_control()] wit
11160 68 20 74 68 69 73 20 6f 70 63 6f 64 65 20 61 73  h this opcode as
11170 20 64 6f 69 6e 67 20 73 6f 20 6d 61 79 20 0a 2a   doing so may .*
11180 2a 20 64 69 73 72 75 70 74 20 74 68 65 20 6f 70  * disrupt the op
11190 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73  eration of the s
111a0 70 65 63 69 61 6c 69 7a 65 64 20 56 46 53 65 73  pecialized VFSes
111b0 20 74 68 61 74 20 64 6f 20 72 65 71 75 69 72 65   that do require
111c0 20 69 74 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69   it.  .**.** <li
111d0 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
111e0 43 4f 4d 4d 49 54 5f 50 48 41 53 45 54 57 4f 5d  COMMIT_PHASETWO]
111f0 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
11200 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48  _FCNTL_COMMIT_PH
11210 41 53 45 54 57 4f 5d 20 6f 70 63 6f 64 65 20 69  ASETWO] opcode i
11220 73 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65  s generated inte
11230 72 6e 61 6c 6c 79 20 62 79 20 53 51 4c 69 74 65  rnally by SQLite
11240 0a 2a 2a 20 61 6e 64 20 73 65 6e 74 20 74 6f 20  .** and sent to 
11250 74 68 65 20 56 46 53 20 61 66 74 65 72 20 61 20  the VFS after a 
11260 74 72 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20  transaction has 
11270 62 65 65 6e 20 63 6f 6d 6d 69 74 74 65 64 20 69  been committed i
11280 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 62 75  mmediately.** bu
11290 74 20 62 65 66 6f 72 65 20 74 68 65 20 64 61 74  t before the dat
112a0 61 62 61 73 65 20 69 73 20 75 6e 6c 6f 63 6b 65  abase is unlocke
112b0 64 2e 20 56 46 53 65 73 20 74 68 61 74 20 64 6f  d. VFSes that do
112c0 20 6e 6f 74 20 6e 65 65 64 20 74 68 69 73 20 73   not need this s
112d0 69 67 6e 61 6c 0a 2a 2a 20 73 68 6f 75 6c 64 20  ignal.** should 
112e0 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 20  silently ignore 
112f0 74 68 69 73 20 6f 70 63 6f 64 65 2e 20 41 70 70  this opcode. App
11300 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64  lications should
11310 20 6e 6f 74 20 63 61 6c 6c 0a 2a 2a 20 5b 73 71   not call.** [sq
11320 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
11330 6f 6c 28 29 5d 20 77 69 74 68 20 74 68 69 73 20  ol()] with this 
11340 6f 70 63 6f 64 65 20 61 73 20 64 6f 69 6e 67 20  opcode as doing 
11350 73 6f 20 6d 61 79 20 64 69 73 72 75 70 74 20 74  so may disrupt t
11360 68 65 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e  he .** operation
11370 20 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 69   of the speciali
11380 7a 65 64 20 56 46 53 65 73 20 74 68 61 74 20 64  zed VFSes that d
11390 6f 20 72 65 71 75 69 72 65 20 69 74 2e 20 20 0a  o require it.  .
113a0 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
113b0 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41  TE_FCNTL_WIN32_A
113c0 56 5f 52 45 54 52 59 5d 5d 0a 2a 2a 20 5e 54 68  V_RETRY]].** ^Th
113d0 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
113e0 57 49 4e 33 32 5f 41 56 5f 52 45 54 52 59 5d 20  WIN32_AV_RETRY] 
113f0 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 74  opcode is used t
11400 6f 20 63 6f 6e 66 69 67 75 72 65 20 61 75 74 6f  o configure auto
11410 6d 61 74 69 63 0a 2a 2a 20 72 65 74 72 79 20 63  matic.** retry c
11420 6f 75 6e 74 73 20 61 6e 64 20 69 6e 74 65 72 76  ounts and interv
11430 61 6c 73 20 66 6f 72 20 63 65 72 74 61 69 6e 20  als for certain 
11440 64 69 73 6b 20 49 2f 4f 20 6f 70 65 72 61 74 69  disk I/O operati
11450 6f 6e 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20 77  ons for the.** w
11460 69 6e 64 6f 77 73 20 5b 56 46 53 5d 20 69 6e 20  indows [VFS] in 
11470 6f 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65  order to provide
11480 20 72 6f 62 75 73 74 6e 65 73 73 20 69 6e 20 74   robustness in t
11490 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 0a 2a  he presence of.*
114a0 2a 20 61 6e 74 69 2d 76 69 72 75 73 20 70 72 6f  * anti-virus pro
114b0 67 72 61 6d 73 2e 20 20 42 79 20 64 65 66 61 75  grams.  By defau
114c0 6c 74 2c 20 74 68 65 20 77 69 6e 64 6f 77 73 20  lt, the windows 
114d0 56 46 53 20 77 69 6c 6c 20 72 65 74 72 79 20 66  VFS will retry f
114e0 69 6c 65 20 72 65 61 64 2c 0a 2a 2a 20 66 69 6c  ile read,.** fil
114f0 65 20 77 72 69 74 65 2c 20 61 6e 64 20 66 69 6c  e write, and fil
11500 65 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69  e delete operati
11510 6f 6e 73 20 75 70 20 74 6f 20 31 30 20 74 69 6d  ons up to 10 tim
11520 65 73 2c 20 77 69 74 68 20 61 20 64 65 6c 61 79  es, with a delay
11530 0a 2a 2a 20 6f 66 20 32 35 20 6d 69 6c 6c 69 73  .** of 25 millis
11540 65 63 6f 6e 64 73 20 62 65 66 6f 72 65 20 74 68  econds before th
11550 65 20 66 69 72 73 74 20 72 65 74 72 79 20 61 6e  e first retry an
11560 64 20 77 69 74 68 20 74 68 65 20 64 65 6c 61 79  d with the delay
11570 20 69 6e 63 72 65 61 73 69 6e 67 0a 2a 2a 20 62   increasing.** b
11580 79 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20  y an additional 
11590 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20  25 milliseconds 
115a0 77 69 74 68 20 65 61 63 68 20 73 75 62 73 65 71  with each subseq
115b0 75 65 6e 74 20 72 65 74 72 79 2e 20 20 54 68 69  uent retry.  Thi
115c0 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 61 6c 6c 6f  s.** opcode allo
115d0 77 73 20 74 68 65 73 65 20 74 77 6f 20 76 61 6c  ws these two val
115e0 75 65 73 20 28 31 30 20 72 65 74 72 69 65 73 20  ues (10 retries 
115f0 61 6e 64 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f  and 25 milliseco
11600 6e 64 73 20 6f 66 20 64 65 6c 61 79 29 0a 2a 2a  nds of delay).**
11610 20 74 6f 20 62 65 20 61 64 6a 75 73 74 65 64 2e   to be adjusted.
11620 20 20 54 68 65 20 76 61 6c 75 65 73 20 61 72 65    The values are
11630 20 63 68 61 6e 67 65 64 20 66 6f 72 20 61 6c 6c   changed for all
11640 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
11650 74 69 6f 6e 73 0a 2a 2a 20 77 69 74 68 69 6e 20  tions.** within 
11660 74 68 65 20 73 61 6d 65 20 70 72 6f 63 65 73 73  the same process
11670 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20  .  The argument 
11680 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
11690 61 6e 20 61 72 72 61 79 20 6f 66 20 74 77 6f 0a  an array of two.
116a0 2a 2a 20 69 6e 74 65 67 65 72 73 20 77 68 65 72  ** integers wher
116b0 65 20 74 68 65 20 66 69 72 73 74 20 69 6e 74 65  e the first inte
116c0 67 65 72 20 69 73 20 74 68 65 20 6e 65 77 20 72  ger is the new r
116d0 65 74 72 79 20 63 6f 75 6e 74 20 61 6e 64 20 74  etry count and t
116e0 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 69 6e 74  he second.** int
116f0 65 67 65 72 20 69 73 20 74 68 65 20 64 65 6c 61  eger is the dela
11700 79 2e 20 20 49 66 20 65 69 74 68 65 72 20 69 6e  y.  If either in
11710 74 65 67 65 72 20 69 73 20 6e 65 67 61 74 69 76  teger is negativ
11720 65 2c 20 74 68 65 6e 20 74 68 65 20 73 65 74 74  e, then the sett
11730 69 6e 67 0a 2a 2a 20 69 73 20 6e 6f 74 20 63 68  ing.** is not ch
11740 61 6e 67 65 64 20 62 75 74 20 69 6e 73 74 65 61  anged but instea
11750 64 20 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75  d the prior valu
11760 65 20 6f 66 20 74 68 61 74 20 73 65 74 74 69 6e  e of that settin
11770 67 20 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20  g is written.** 
11780 69 6e 74 6f 20 74 68 65 20 61 72 72 61 79 20 65  into the array e
11790 6e 74 72 79 2c 20 61 6c 6c 6f 77 69 6e 67 20 74  ntry, allowing t
117a0 68 65 20 63 75 72 72 65 6e 74 20 72 65 74 72 79  he current retry
117b0 20 73 65 74 74 69 6e 67 73 20 74 6f 20 62 65 0a   settings to be.
117c0 2a 2a 20 69 6e 74 65 72 72 6f 67 61 74 65 64 2e  ** interrogated.
117d0 20 20 54 68 65 20 7a 44 62 4e 61 6d 65 20 70 61    The zDbName pa
117e0 72 61 6d 65 74 65 72 20 69 73 20 69 67 6e 6f 72  rameter is ignor
117f0 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  ed..**.** <li>[[
11800 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 45 52  SQLITE_FCNTL_PER
11810 53 49 53 54 5f 57 41 4c 5d 5d 0a 2a 2a 20 5e 54  SIST_WAL]].** ^T
11820 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
11830 5f 50 45 52 53 49 53 54 5f 57 41 4c 5d 20 6f 70  _PERSIST_WAL] op
11840 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20  code is used to 
11850 73 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65  set or query the
11860 0a 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 5b  .** persistent [
11870 57 41 4c 20 7c 20 57 72 69 74 65 20 41 68 65 61  WAL | Write Ahea
11880 64 20 4c 6f 67 5d 20 73 65 74 74 69 6e 67 2e 20  d Log] setting. 
11890 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65   By default, the
118a0 20 61 75 78 69 6c 69 61 72 79 0a 2a 2a 20 77 72   auxiliary.** wr
118b0 69 74 65 20 61 68 65 61 64 20 6c 6f 67 20 28 5b  ite ahead log ([
118c0 57 41 4c 20 66 69 6c 65 5d 29 20 61 6e 64 20 73  WAL file]) and s
118d0 68 61 72 65 64 20 6d 65 6d 6f 72 79 0a 2a 2a 20  hared memory.** 
118e0 66 69 6c 65 73 20 75 73 65 64 20 66 6f 72 20 74  files used for t
118f0 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6e 74 72  ransaction contr
11900 6f 6c 0a 2a 2a 20 61 72 65 20 61 75 74 6f 6d 61  ol.** are automa
11910 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20  tically deleted 
11920 77 68 65 6e 20 74 68 65 20 6c 61 74 65 73 74 20  when the latest 
11930 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68  connection to th
11940 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6c  e database.** cl
11950 6f 73 65 73 2e 20 20 53 65 74 74 69 6e 67 20 70  oses.  Setting p
11960 65 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f  ersistent WAL mo
11970 64 65 20 63 61 75 73 65 73 20 74 68 6f 73 65 20  de causes those 
11980 66 69 6c 65 73 20 74 6f 20 70 65 72 73 69 73 74  files to persist
11990 20 61 66 74 65 72 0a 2a 2a 20 63 6c 6f 73 65 2e   after.** close.
119a0 20 20 50 65 72 73 69 73 74 69 6e 67 20 74 68 65    Persisting the
119b0 20 66 69 6c 65 73 20 69 73 20 75 73 65 66 75 6c   files is useful
119c0 20 77 68 65 6e 20 6f 74 68 65 72 20 70 72 6f 63   when other proc
119d0 65 73 73 65 73 20 74 68 61 74 20 64 6f 20 6e 6f  esses that do no
119e0 74 0a 2a 2a 20 68 61 76 65 20 77 72 69 74 65 20  t.** have write 
119f0 70 65 72 6d 69 73 73 69 6f 6e 20 6f 6e 20 74 68  permission on th
11a00 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
11a10 61 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62  aining the datab
11a20 61 73 65 20 66 69 6c 65 20 77 61 6e 74 0a 2a 2a  ase file want.**
11a30 20 74 6f 20 72 65 61 64 20 74 68 65 20 64 61 74   to read the dat
11a40 61 62 61 73 65 20 66 69 6c 65 2c 20 61 73 20 74  abase file, as t
11a50 68 65 20 57 41 4c 20 61 6e 64 20 73 68 61 72 65  he WAL and share
11a60 64 20 6d 65 6d 6f 72 79 20 66 69 6c 65 73 20 6d  d memory files m
11a70 75 73 74 20 65 78 69 73 74 0a 2a 2a 20 69 6e 20  ust exist.** in 
11a80 6f 72 64 65 72 20 66 6f 72 20 74 68 65 20 64 61  order for the da
11a90 74 61 62 61 73 65 20 74 6f 20 62 65 20 72 65 61  tabase to be rea
11aa0 64 61 62 6c 65 2e 20 20 54 68 65 20 66 6f 75 72  dable.  The four
11ab0 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a  th parameter to.
11ac0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  ** [sqlite3_file
11ad0 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 66 6f 72 20  _control()] for 
11ae0 74 68 69 73 20 6f 70 63 6f 64 65 20 73 68 6f 75  this opcode shou
11af0 6c 64 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20  ld be a pointer 
11b00 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a 2a  to an integer..*
11b10 2a 20 54 68 61 74 20 69 6e 74 65 67 65 72 20 69  * That integer i
11b20 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 70  s 0 to disable p
11b30 65 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f  ersistent WAL mo
11b40 64 65 20 6f 72 20 31 20 74 6f 20 65 6e 61 62 6c  de or 1 to enabl
11b50 65 20 70 65 72 73 69 73 74 65 6e 74 0a 2a 2a 20  e persistent.** 
11b60 57 41 4c 20 6d 6f 64 65 2e 20 20 49 66 20 74 68  WAL mode.  If th
11b70 65 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c  e integer is -1,
11b80 20 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72   then it is over
11b90 77 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65  written with the
11ba0 20 63 75 72 72 65 6e 74 0a 2a 2a 20 57 41 4c 20   current.** WAL 
11bb0 70 65 72 73 69 73 74 65 6e 63 65 20 73 65 74 74  persistence sett
11bc0 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ing..**.** <li>[
11bd0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 4f  [SQLITE_FCNTL_PO
11be0 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54  WERSAFE_OVERWRIT
11bf0 45 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c  E]].** ^The [SQL
11c00 49 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45 52 53  ITE_FCNTL_POWERS
11c10 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f  AFE_OVERWRITE] o
11c20 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f  pcode is used to
11c30 20 73 65 74 20 6f 72 20 71 75 65 72 79 20 74 68   set or query th
11c40 65 0a 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20  e.** persistent 
11c50 22 70 6f 77 65 72 73 61 66 65 2d 6f 76 65 72 77  "powersafe-overw
11c60 72 69 74 65 22 20 6f 72 20 22 50 53 4f 57 22 20  rite" or "PSOW" 
11c70 73 65 74 74 69 6e 67 2e 20 20 54 68 65 20 50 53  setting.  The PS
11c80 4f 57 20 73 65 74 74 69 6e 67 0a 2a 2a 20 64 65  OW setting.** de
11c90 74 65 72 6d 69 6e 65 73 20 74 68 65 20 5b 53 51  termines the [SQ
11ca0 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52  LITE_IOCAP_POWER
11cb0 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20  SAFE_OVERWRITE] 
11cc0 62 69 74 20 6f 66 20 74 68 65 0a 2a 2a 20 78 44  bit of the.** xD
11cd0 65 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73  eviceCharacteris
11ce0 74 69 63 73 20 6d 65 74 68 6f 64 73 2e 20 54 68  tics methods. Th
11cf0 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
11d00 65 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65  er to.** [sqlite
11d10 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29  3_file_control()
11d20 5d 20 66 6f 72 20 74 68 69 73 20 6f 70 63 6f 64  ] for this opcod
11d30 65 20 73 68 6f 75 6c 64 20 62 65 20 61 20 70 6f  e should be a po
11d40 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65  inter to an inte
11d50 67 65 72 2e 0a 2a 2a 20 54 68 61 74 20 69 6e 74  ger..** That int
11d60 65 67 65 72 20 69 73 20 30 20 74 6f 20 64 69 73  eger is 0 to dis
11d70 61 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65  able zero-damage
11d80 20 6d 6f 64 65 20 6f 72 20 31 20 74 6f 20 65 6e   mode or 1 to en
11d90 61 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65  able zero-damage
11da0 0a 2a 2a 20 6d 6f 64 65 2e 20 20 49 66 20 74 68  .** mode.  If th
11db0 65 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c  e integer is -1,
11dc0 20 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72   then it is over
11dd0 77 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65  written with the
11de0 20 63 75 72 72 65 6e 74 0a 2a 2a 20 7a 65 72 6f   current.** zero
11df0 2d 64 61 6d 61 67 65 20 6d 6f 64 65 20 73 65 74  -damage mode set
11e00 74 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  ting..**.** <li>
11e10 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f  [[SQLITE_FCNTL_O
11e20 56 45 52 57 52 49 54 45 5d 5d 0a 2a 2a 20 5e 54  VERWRITE]].** ^T
11e30 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
11e40 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f 70 63 6f  _OVERWRITE] opco
11e50 64 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79  de is invoked by
11e60 20 53 51 4c 69 74 65 20 61 66 74 65 72 20 6f 70   SQLite after op
11e70 65 6e 69 6e 67 0a 2a 2a 20 61 20 77 72 69 74 65  ening.** a write
11e80 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20   transaction to 
11e90 69 6e 64 69 63 61 74 65 20 74 68 61 74 2c 20 75  indicate that, u
11ea0 6e 6c 65 73 73 20 69 74 20 69 73 20 72 6f 6c 6c  nless it is roll
11eb0 65 64 20 62 61 63 6b 20 66 6f 72 20 73 6f 6d 65  ed back for some
11ec0 0a 2a 2a 20 72 65 61 73 6f 6e 2c 20 74 68 65 20  .** reason, the 
11ed0 65 6e 74 69 72 65 20 64 61 74 61 62 61 73 65 20  entire database 
11ee0 66 69 6c 65 20 77 69 6c 6c 20 62 65 20 6f 76 65  file will be ove
11ef0 72 77 72 69 74 74 65 6e 20 62 79 20 74 68 65 20  rwritten by the 
11f00 63 75 72 72 65 6e 74 20 0a 2a 2a 20 74 72 61 6e  current .** tran
11f10 73 61 63 74 69 6f 6e 2e 20 54 68 69 73 20 69 73  saction. This is
11f20 20 75 73 65 64 20 62 79 20 56 41 43 55 55 4d 20   used by VACUUM 
11f30 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a  operations..**.*
11f40 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
11f50 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 5d 0a 2a  CNTL_VFSNAME]].*
11f60 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  * ^The [SQLITE_F
11f70 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 20 6f 70  CNTL_VFSNAME] op
11f80 63 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65 64  code can be used
11f90 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6e   to obtain the n
11fa0 61 6d 65 73 20 6f 66 0a 2a 2a 20 61 6c 6c 20 5b  ames of.** all [
11fb0 56 46 53 65 73 5d 20 69 6e 20 74 68 65 20 56 46  VFSes] in the VF
11fc0 53 20 73 74 61 63 6b 2e 20 20 54 68 65 20 6e 61  S stack.  The na
11fd0 6d 65 73 20 61 72 65 20 6f 66 20 61 6c 6c 20 56  mes are of all V
11fe0 46 53 20 73 68 69 6d 73 20 61 6e 64 20 74 68 65  FS shims and the
11ff0 0a 2a 2a 20 66 69 6e 61 6c 20 62 6f 74 74 6f 6d  .** final bottom
12000 2d 6c 65 76 65 6c 20 56 46 53 20 61 72 65 20 77  -level VFS are w
12010 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f  ritten into memo
12020 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ry obtained from
12030 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 61   .** [sqlite3_ma
12040 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 74 68 65 20  lloc()] and the 
12050 72 65 73 75 6c 74 20 69 73 20 73 74 6f 72 65 64  result is stored
12060 20 69 6e 20 74 68 65 20 63 68 61 72 2a 20 76 61   in the char* va
12070 72 69 61 62 6c 65 0a 2a 2a 20 74 68 61 74 20 74  riable.** that t
12080 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65  he fourth parame
12090 74 65 72 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f  ter of [sqlite3_
120a0 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20  file_control()] 
120b0 70 6f 69 6e 74 73 20 74 6f 2e 0a 2a 2a 20 54 68  points to..** Th
120c0 65 20 63 61 6c 6c 65 72 20 69 73 20 72 65 73 70  e caller is resp
120d0 6f 6e 73 69 62 6c 65 20 66 6f 72 20 66 72 65 65  onsible for free
120e0 69 6e 67 20 74 68 65 20 6d 65 6d 6f 72 79 20 77  ing the memory w
120f0 68 65 6e 20 64 6f 6e 65 2e 20 20 41 73 20 77 69  hen done.  As wi
12100 74 68 0a 2a 2a 20 61 6c 6c 20 66 69 6c 65 2d 63  th.** all file-c
12110 6f 6e 74 72 6f 6c 20 61 63 74 69 6f 6e 73 2c 20  ontrol actions, 
12120 74 68 65 72 65 20 69 73 20 6e 6f 20 67 75 61 72  there is no guar
12130 61 6e 74 65 65 20 74 68 61 74 20 74 68 69 73 20  antee that this 
12140 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 0a 2a 2a  will actually.**
12150 20 64 6f 20 61 6e 79 74 68 69 6e 67 2e 20 20 43   do anything.  C
12160 61 6c 6c 65 72 73 20 73 68 6f 75 6c 64 20 69 6e  allers should in
12170 69 74 69 61 6c 69 7a 65 20 74 68 65 20 63 68 61  itialize the cha
12180 72 2a 20 76 61 72 69 61 62 6c 65 20 74 6f 20 61  r* variable to a
12190 20 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74 65 72   NULL.** pointer
121a0 20 69 6e 20 63 61 73 65 20 74 68 69 73 20 66 69   in case this fi
121b0 6c 65 2d 63 6f 6e 74 72 6f 6c 20 69 73 20 6e 6f  le-control is no
121c0 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 20 20  t implemented.  
121d0 54 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f  This file-contro
121e0 6c 0a 2a 2a 20 69 73 20 69 6e 74 65 6e 64 65 64  l.** is intended
121f0 20 66 6f 72 20 64 69 61 67 6e 6f 73 74 69 63 20   for diagnostic 
12200 75 73 65 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20  use only..**.** 
12210 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
12220 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 5d 5d  TL_VFS_POINTER]]
12230 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45  .** ^The [SQLITE
12240 5f 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54  _FCNTL_VFS_POINT
12250 45 52 5d 20 6f 70 63 6f 64 65 20 66 69 6e 64 73  ER] opcode finds
12260 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
12270 65 20 74 6f 70 2d 6c 65 76 65 6c 0a 2a 2a 20 5b  e top-level.** [
12280 56 46 53 65 73 5d 20 63 75 72 72 65 6e 74 6c 79  VFSes] currently
12290 20 69 6e 20 75 73 65 2e 20 20 5e 28 54 68 65 20   in use.  ^(The 
122a0 61 72 67 75 6d 65 6e 74 20 58 20 69 6e 0a 2a 2a  argument X in.**
122b0 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f   sqlite3_file_co
122c0 6e 74 72 6f 6c 28 64 62 2c 53 51 4c 49 54 45 5f  ntrol(db,SQLITE_
122d0 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45  FCNTL_VFS_POINTE
122e0 52 2c 58 29 20 6d 75 73 74 20 62 65 0a 2a 2a 20  R,X) must be.** 
122f0 6f 66 20 74 79 70 65 20 22 5b 73 71 6c 69 74 65  of type "[sqlite
12300 33 5f 76 66 73 5d 20 2a 2a 22 2e 20 20 54 68 69  3_vfs] **".  Thi
12310 73 20 6f 70 63 6f 64 65 73 20 77 69 6c 6c 20 73  s opcodes will s
12320 65 74 20 2a 58 0a 2a 2a 20 74 6f 20 61 20 70 6f  et *X.** to a po
12330 69 6e 74 65 72 20 74 6f 20 74 68 65 20 74 6f 70  inter to the top
12340 2d 6c 65 76 65 6c 20 56 46 53 2e 29 5e 0a 2a 2a  -level VFS.)^.**
12350 20 5e 57 68 65 6e 20 74 68 65 72 65 20 61 72 65   ^When there are
12360 20 6d 75 6c 74 69 70 6c 65 20 56 46 53 20 73 68   multiple VFS sh
12370 69 6d 73 20 69 6e 20 74 68 65 20 73 74 61 63 6b  ims in the stack
12380 2c 20 74 68 69 73 20 6f 70 63 6f 64 65 20 66 69  , this opcode fi
12390 6e 64 73 20 74 68 65 0a 2a 2a 20 75 70 70 65 72  nds the.** upper
123a0 2d 6d 6f 73 74 20 73 68 69 6d 20 6f 6e 6c 79 2e  -most shim only.
123b0 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
123c0 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41  ITE_FCNTL_PRAGMA
123d0 5d 5d 0a 2a 2a 20 5e 57 68 65 6e 65 76 65 72 20  ]].** ^Whenever 
123e0 61 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65  a [PRAGMA] state
123f0 6d 65 6e 74 20 69 73 20 70 61 72 73 65 64 2c 20  ment is parsed, 
12400 61 6e 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  an [SQLITE_FCNTL
12410 5f 50 52 41 47 4d 41 5d 20 0a 2a 2a 20 66 69 6c  _PRAGMA] .** fil
12420 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 73 65 6e  e control is sen
12430 74 20 74 6f 20 74 68 65 20 6f 70 65 6e 20 5b 73  t to the open [s
12440 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a  qlite3_file] obj
12450 65 63 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  ect correspondin
12460 67 0a 2a 2a 20 74 6f 20 74 68 65 20 64 61 74 61  g.** to the data
12470 62 61 73 65 20 66 69 6c 65 20 74 6f 20 77 68 69  base file to whi
12480 63 68 20 74 68 65 20 70 72 61 67 6d 61 20 73 74  ch the pragma st
12490 61 74 65 6d 65 6e 74 20 72 65 66 65 72 73 2e 20  atement refers. 
124a0 5e 54 68 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a  ^The argument.**
124b0 20 74 6f 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   to the [SQLITE_
124c0 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69  FCNTL_PRAGMA] fi
124d0 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 61 6e  le control is an
124e0 20 61 72 72 61 79 20 6f 66 0a 2a 2a 20 70 6f 69   array of.** poi
124f0 6e 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73  nters to strings
12500 20 28 63 68 61 72 2a 2a 29 20 69 6e 20 77 68 69   (char**) in whi
12510 63 68 20 74 68 65 20 73 65 63 6f 6e 64 20 65 6c  ch the second el
12520 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 61 72 72  ement of the arr
12530 61 79 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d  ay.** is the nam
12540 65 20 6f 66 20 74 68 65 20 70 72 61 67 6d 61 20  e of the pragma 
12550 61 6e 64 20 74 68 65 20 74 68 69 72 64 20 65 6c  and the third el
12560 65 6d 65 6e 74 20 69 73 20 74 68 65 20 61 72 67  ement is the arg
12570 75 6d 65 6e 74 20 74 6f 20 74 68 65 0a 2a 2a 20  ument to the.** 
12580 70 72 61 67 6d 61 20 6f 72 20 4e 55 4c 4c 20 69  pragma or NULL i
12590 66 20 74 68 65 20 70 72 61 67 6d 61 20 68 61 73  f the pragma has
125a0 20 6e 6f 20 61 72 67 75 6d 65 6e 74 2e 20 20 5e   no argument.  ^
125b0 54 68 65 20 68 61 6e 64 6c 65 72 20 66 6f 72 20  The handler for 
125c0 61 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43  an.** [SQLITE_FC
125d0 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65  NTL_PRAGMA] file
125e0 20 63 6f 6e 74 72 6f 6c 20 63 61 6e 20 6f 70 74   control can opt
125f0 69 6f 6e 61 6c 6c 79 20 6d 61 6b 65 20 74 68 65  ionally make the
12600 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 0a 2a   first element.*
12610 2a 20 6f 66 20 74 68 65 20 63 68 61 72 2a 2a 20  * of the char** 
12620 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 20 74  argument point t
12630 6f 20 61 20 73 74 72 69 6e 67 20 6f 62 74 61 69  o a string obtai
12640 6e 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65  ned from [sqlite
12650 33 5f 6d 70 72 69 6e 74 66 28 29 5d 0a 2a 2a 20  3_mprintf()].** 
12660 6f 72 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e  or the equivalen
12670 74 20 61 6e 64 20 74 68 61 74 20 73 74 72 69 6e  t and that strin
12680 67 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68  g will become th
12690 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20  e result of the 
126a0 70 72 61 67 6d 61 20 6f 72 0a 2a 2a 20 74 68 65  pragma or.** the
126b0 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69   error message i
126c0 66 20 74 68 65 20 70 72 61 67 6d 61 20 66 61 69  f the pragma fai
126d0 6c 73 2e 20 5e 49 66 20 74 68 65 0a 2a 2a 20 5b  ls. ^If the.** [
126e0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41  SQLITE_FCNTL_PRA
126f0 47 4d 41 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f  GMA] file contro
12700 6c 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54  l returns [SQLIT
12710 45 5f 4e 4f 54 46 4f 55 4e 44 5d 2c 20 74 68 65  E_NOTFOUND], the
12720 6e 20 6e 6f 72 6d 61 6c 20 0a 2a 2a 20 5b 50 52  n normal .** [PR
12730 41 47 4d 41 5d 20 70 72 6f 63 65 73 73 69 6e 67  AGMA] processing
12740 20 63 6f 6e 74 69 6e 75 65 73 2e 20 20 5e 49 66   continues.  ^If
12750 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   the [SQLITE_FCN
12760 54 4c 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69  TL_PRAGMA].** fi
12770 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75 72  le control retur
12780 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20  ns [SQLITE_OK], 
12790 74 68 65 6e 20 74 68 65 20 70 61 72 73 65 72 20  then the parser 
127a0 61 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65  assumes that the
127b0 0a 2a 2a 20 56 46 53 20 68 61 73 20 68 61 6e 64  .** VFS has hand
127c0 6c 65 64 20 74 68 65 20 50 52 41 47 4d 41 20 69  led the PRAGMA i
127d0 74 73 65 6c 66 20 61 6e 64 20 74 68 65 20 70 61  tself and the pa
127e0 72 73 65 72 20 67 65 6e 65 72 61 74 65 73 20 61  rser generates a
127f0 20 6e 6f 2d 6f 70 0a 2a 2a 20 70 72 65 70 61 72   no-op.** prepar
12800 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69 66 20  ed statement if 
12810 72 65 73 75 6c 74 20 73 74 72 69 6e 67 20 69 73  result string is
12820 20 4e 55 4c 4c 2c 20 6f 72 20 74 68 61 74 20 72   NULL, or that r
12830 65 74 75 72 6e 73 20 61 20 63 6f 70 79 0a 2a 2a  eturns a copy.**
12840 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
12850 74 72 69 6e 67 20 69 66 20 74 68 65 20 73 74 72  tring if the str
12860 69 6e 67 20 69 73 20 6e 6f 6e 2d 4e 55 4c 4c 2e  ing is non-NULL.
12870 0a 2a 2a 20 5e 49 66 20 74 68 65 20 5b 53 51 4c  .** ^If the [SQL
12880 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41  ITE_FCNTL_PRAGMA
12890 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72  ] file control r
128a0 65 74 75 72 6e 73 0a 2a 2a 20 61 6e 79 20 72 65  eturns.** any re
128b0 73 75 6c 74 20 63 6f 64 65 20 6f 74 68 65 72 20  sult code other 
128c0 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d  than [SQLITE_OK]
128d0 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46   or [SQLITE_NOTF
128e0 4f 55 4e 44 5d 2c 20 74 68 61 74 20 6d 65 61 6e  OUND], that mean
128f0 73 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 56 46  s.** that the VF
12900 53 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e  S encountered an
12910 20 65 72 72 6f 72 20 77 68 69 6c 65 20 68 61 6e   error while han
12920 64 6c 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d  dling the [PRAGM
12930 41 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 63 6f  A] and the.** co
12940 6d 70 69 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65  mpilation of the
12950 20 50 52 41 47 4d 41 20 66 61 69 6c 73 20 77 69   PRAGMA fails wi
12960 74 68 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 54  th an error.  ^T
12970 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
12980 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65  _PRAGMA].** file
12990 20 63 6f 6e 74 72 6f 6c 20 6f 63 63 75 72 73 20   control occurs 
129a0 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
129b0 20 6f 66 20 70 72 61 67 6d 61 20 73 74 61 74 65   of pragma state
129c0 6d 65 6e 74 20 61 6e 61 6c 79 73 69 73 20 61 6e  ment analysis an
129d0 64 20 73 6f 0a 2a 2a 20 69 74 20 69 73 20 61 62  d so.** it is ab
129e0 6c 65 20 74 6f 20 6f 76 65 72 72 69 64 65 20 62  le to override b
129f0 75 69 6c 74 2d 69 6e 20 5b 50 52 41 47 4d 41 5d  uilt-in [PRAGMA]
12a00 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a   statements..**.
12a10 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
12a20 46 43 4e 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45  FCNTL_BUSYHANDLE
12a30 52 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c  R]].** ^The [SQL
12a40 49 54 45 5f 46 43 4e 54 4c 5f 42 55 53 59 48 41  ITE_FCNTL_BUSYHA
12a50 4e 44 4c 45 52 5d 0a 2a 2a 20 66 69 6c 65 2d 63  NDLER].** file-c
12a60 6f 6e 74 72 6f 6c 20 6d 61 79 20 62 65 20 69 6e  ontrol may be in
12a70 76 6f 6b 65 64 20 62 79 20 53 51 4c 69 74 65 20  voked by SQLite 
12a80 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  on the database 
12a90 66 69 6c 65 20 68 61 6e 64 6c 65 0a 2a 2a 20 73  file handle.** s
12aa0 68 6f 72 74 6c 79 20 61 66 74 65 72 20 69 74 20  hortly after it 
12ab0 69 73 20 6f 70 65 6e 65 64 20 69 6e 20 6f 72 64  is opened in ord
12ac0 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20  er to provide a 
12ad0 63 75 73 74 6f 6d 20 56 46 53 20 77 69 74 68 20  custom VFS with 
12ae0 61 63 63 65 73 73 0a 2a 2a 20 74 6f 20 74 68 65  access.** to the
12af0 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 62 75 73   connections bus
12b00 79 2d 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61  y-handler callba
12b10 63 6b 2e 20 54 68 65 20 61 72 67 75 6d 65 6e 74  ck. The argument
12b20 20 69 73 20 6f 66 20 74 79 70 65 20 28 76 6f 69   is of type (voi
12b30 64 20 2a 2a 29 0a 2a 2a 20 2d 20 61 6e 20 61 72  d **).** - an ar
12b40 72 61 79 20 6f 66 20 74 77 6f 20 28 76 6f 69 64  ray of two (void
12b50 20 2a 29 20 76 61 6c 75 65 73 2e 20 54 68 65 20   *) values. The 
12b60 66 69 72 73 74 20 28 76 6f 69 64 20 2a 29 20 61  first (void *) a
12b70 63 74 75 61 6c 6c 79 20 70 6f 69 6e 74 73 0a 2a  ctually points.*
12b80 2a 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20  * to a function 
12b90 6f 66 20 74 79 70 65 20 28 69 6e 74 20 28 2a 29  of type (int (*)
12ba0 28 76 6f 69 64 20 2a 29 29 2e 20 49 6e 20 6f 72  (void *)). In or
12bb0 64 65 72 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68  der to invoke th
12bc0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a  e connections.**
12bd0 20 62 75 73 79 2d 68 61 6e 64 6c 65 72 2c 20 74   busy-handler, t
12be0 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f  his function sho
12bf0 75 6c 64 20 62 65 20 69 6e 76 6f 6b 65 64 20 77  uld be invoked w
12c00 69 74 68 20 74 68 65 20 73 65 63 6f 6e 64 20 28  ith the second (
12c10 76 6f 69 64 20 2a 29 20 69 6e 0a 2a 2a 20 74 68  void *) in.** th
12c20 65 20 61 72 72 61 79 20 61 73 20 74 68 65 20 6f  e array as the o
12c30 6e 6c 79 20 61 72 67 75 6d 65 6e 74 2e 20 49 66  nly argument. If
12c40 20 69 74 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d   it returns non-
12c50 7a 65 72 6f 2c 20 74 68 65 6e 20 74 68 65 20 6f  zero, then the o
12c60 70 65 72 61 74 69 6f 6e 0a 2a 2a 20 73 68 6f 75  peration.** shou
12c70 6c 64 20 62 65 20 72 65 74 72 69 65 64 2e 20 49  ld be retried. I
12c80 66 20 69 74 20 72 65 74 75 72 6e 73 20 7a 65 72  f it returns zer
12c90 6f 2c 20 74 68 65 20 63 75 73 74 6f 6d 20 56 46  o, the custom VF
12ca0 53 20 73 68 6f 75 6c 64 20 61 62 61 6e 64 6f 6e  S should abandon
12cb0 20 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20   the.** current 
12cc0 6f 70 65 72 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a  operation..**.**
12cd0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
12ce0 4e 54 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45  NTL_TEMPFILENAME
12cf0 5d 5d 0a 2a 2a 20 5e 41 70 70 6c 69 63 61 74 69  ]].** ^Applicati
12d00 6f 6e 20 63 61 6e 20 69 6e 76 6f 6b 65 20 74 68  on can invoke th
12d10 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
12d20 54 45 4d 50 46 49 4c 45 4e 41 4d 45 5d 20 66 69  TEMPFILENAME] fi
12d30 6c 65 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 74 6f  le-control.** to
12d40 20 68 61 76 65 20 53 51 4c 69 74 65 20 67 65 6e   have SQLite gen
12d50 65 72 61 74 65 20 61 0a 2a 2a 20 74 65 6d 70 6f  erate a.** tempo
12d60 72 61 72 79 20 66 69 6c 65 6e 61 6d 65 20 75 73  rary filename us
12d70 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61 6c 67  ing the same alg
12d80 6f 72 69 74 68 6d 20 74 68 61 74 20 69 73 20 66  orithm that is f
12d90 6f 6c 6c 6f 77 65 64 20 74 6f 20 67 65 6e 65 72  ollowed to gener
12da0 61 74 65 0a 2a 2a 20 74 65 6d 70 6f 72 61 72 79  ate.** temporary
12db0 20 66 69 6c 65 6e 61 6d 65 73 20 66 6f 72 20 54   filenames for T
12dc0 45 4d 50 20 74 61 62 6c 65 73 20 61 6e 64 20 6f  EMP tables and o
12dd0 74 68 65 72 20 69 6e 74 65 72 6e 61 6c 20 75 73  ther internal us
12de0 65 73 2e 20 20 54 68 65 0a 2a 2a 20 61 72 67 75  es.  The.** argu
12df0 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 61  ment should be a
12e00 20 63 68 61 72 2a 2a 20 77 68 69 63 68 20 77 69   char** which wi
12e10 6c 6c 20 62 65 20 66 69 6c 6c 65 64 20 77 69 74  ll be filled wit
12e20 68 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 0a 2a  h the filename.*
12e30 2a 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d  * written into m
12e40 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66  emory obtained f
12e50 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  rom [sqlite3_mal
12e60 6c 6f 63 28 29 5d 2e 20 20 54 68 65 20 63 61 6c  loc()].  The cal
12e70 6c 65 72 20 73 68 6f 75 6c 64 0a 2a 2a 20 69 6e  ler should.** in
12e80 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 66 72  voke [sqlite3_fr
12e90 65 65 28 29 5d 20 6f 6e 20 74 68 65 20 72 65 73  ee()] on the res
12ea0 75 6c 74 20 74 6f 20 61 76 6f 69 64 20 61 20 6d  ult to avoid a m
12eb0 65 6d 6f 72 79 20 6c 65 61 6b 2e 0a 2a 2a 0a 2a  emory leak..**.*
12ec0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12ed0 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d  CNTL_MMAP_SIZE]]
12ee0 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
12ef0 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d  FCNTL_MMAP_SIZE]
12f00 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73   file control is
12f10 20 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 6f   used to query o
12f20 72 20 73 65 74 20 74 68 65 0a 2a 2a 20 6d 61 78  r set the.** max
12f30 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62  imum number of b
12f40 79 74 65 73 20 74 68 61 74 20 77 69 6c 6c 20 62  ytes that will b
12f50 65 20 75 73 65 64 20 66 6f 72 20 6d 65 6d 6f 72  e used for memor
12f60 79 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 2a 2a  y-mapped I/O..**
12f70 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   The argument is
12f80 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
12f90 76 61 6c 75 65 20 6f 66 20 74 79 70 65 20 73 71  value of type sq
12fa0 6c 69 74 65 33 5f 69 6e 74 36 34 20 74 68 61 74  lite3_int64 that
12fb0 0a 2a 2a 20 69 73 20 61 6e 20 61 64 76 69 73 6f  .** is an adviso
12fc0 72 79 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  ry maximum numbe
12fd0 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68  r of bytes in th
12fe0 65 20 66 69 6c 65 20 74 6f 20 6d 65 6d 6f 72 79  e file to memory
12ff0 20 6d 61 70 2e 20 20 54 68 65 0a 2a 2a 20 70 6f   map.  The.** po
13000 69 6e 74 65 72 20 69 73 20 6f 76 65 72 77 72 69  inter is overwri
13010 74 74 65 6e 20 77 69 74 68 20 74 68 65 20 6f 6c  tten with the ol
13020 64 20 76 61 6c 75 65 2e 20 20 54 68 65 20 6c 69  d value.  The li
13030 6d 69 74 20 69 73 20 6e 6f 74 20 63 68 61 6e 67  mit is not chang
13040 65 64 20 69 66 0a 2a 2a 20 74 68 65 20 76 61 6c  ed if.** the val
13050 75 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 70 6f  ue originally po
13060 69 6e 74 65 64 20 74 6f 20 69 73 20 6e 65 67 61  inted to is nega
13070 74 69 76 65 2c 20 61 6e 64 20 73 6f 20 74 68 65  tive, and so the
13080 20 63 75 72 72 65 6e 74 20 6c 69 6d 69 74 20 0a   current limit .
13090 2a 2a 20 63 61 6e 20 62 65 20 71 75 65 72 69 65  ** can be querie
130a0 64 20 62 79 20 70 61 73 73 69 6e 67 20 69 6e 20  d by passing in 
130b0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e  a pointer to a n
130c0 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2e 20  egative number. 
130d0 20 54 68 69 73 0a 2a 2a 20 66 69 6c 65 2d 63 6f   This.** file-co
130e0 6e 74 72 6f 6c 20 69 73 20 75 73 65 64 20 69 6e  ntrol is used in
130f0 74 65 72 6e 61 6c 6c 79 20 74 6f 20 69 6d 70 6c  ternally to impl
13100 65 6d 65 6e 74 20 5b 50 52 41 47 4d 41 20 6d 6d  ement [PRAGMA mm
13110 61 70 5f 73 69 7a 65 5d 2e 0a 2a 2a 0a 2a 2a 20  ap_size]..**.** 
13120 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
13130 54 4c 5f 54 52 41 43 45 5d 5d 0a 2a 2a 20 54 68  TL_TRACE]].** Th
13140 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
13150 54 52 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74  TRACE] file cont
13160 72 6f 6c 20 70 72 6f 76 69 64 65 73 20 61 64 76  rol provides adv
13170 69 73 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f  isory informatio
13180 6e 0a 2a 2a 20 74 6f 20 74 68 65 20 56 46 53 20  n.** to the VFS 
13190 61 62 6f 75 74 20 77 68 61 74 20 74 68 65 20 68  about what the h
131a0 69 67 68 65 72 20 6c 61 79 65 72 73 20 6f 66 20  igher layers of 
131b0 74 68 65 20 53 51 4c 69 74 65 20 73 74 61 63 6b  the SQLite stack
131c0 20 61 72 65 20 64 6f 69 6e 67 2e 0a 2a 2a 20 54   are doing..** T
131d0 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  his file control
131e0 20 69 73 20 75 73 65 64 20 62 79 20 73 6f 6d 65   is used by some
131f0 20 56 46 53 20 61 63 74 69 76 69 74 79 20 74 72   VFS activity tr
13200 61 63 69 6e 67 20 5b 73 68 69 6d 73 5d 2e 0a 2a  acing [shims]..*
13210 2a 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69  * The argument i
13220 73 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61  s a zero-termina
13230 74 65 64 20 73 74 72 69 6e 67 2e 20 20 48 69 67  ted string.  Hig
13240 68 65 72 20 6c 61 79 65 72 73 20 69 6e 20 74 68  her layers in th
13250 65 0a 2a 2a 20 53 51 4c 69 74 65 20 73 74 61 63  e.** SQLite stac
13260 6b 20 6d 61 79 20 67 65 6e 65 72 61 74 65 20 69  k may generate i
13270 6e 73 74 61 6e 63 65 73 20 6f 66 20 74 68 69 73  nstances of this
13280 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 66   file control if
13290 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  .** the [SQLITE_
132a0 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d  USE_FCNTL_TRACE]
132b0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
132c0 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e  tion is enabled.
132d0 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
132e0 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f  ITE_FCNTL_HAS_MO
132f0 56 45 44 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51  VED]].** The [SQ
13300 4c 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d  LITE_FCNTL_HAS_M
13310 4f 56 45 44 5d 20 66 69 6c 65 20 63 6f 6e 74 72  OVED] file contr
13320 6f 6c 20 69 6e 74 65 72 70 72 65 74 73 20 69 74  ol interprets it
13330 73 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 0a  s argument as a.
13340 2a 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e  ** pointer to an
13350 20 69 6e 74 65 67 65 72 20 61 6e 64 20 69 74 20   integer and it 
13360 77 72 69 74 65 73 20 61 20 62 6f 6f 6c 65 61 6e  writes a boolean
13370 20 69 6e 74 6f 20 74 68 61 74 20 69 6e 74 65 67   into that integ
13380 65 72 20 64 65 70 65 6e 64 69 6e 67 0a 2a 2a 20  er depending.** 
13390 6f 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  on whether or no
133a0 74 20 74 68 65 20 66 69 6c 65 20 68 61 73 20 62  t the file has b
133b0 65 65 6e 20 72 65 6e 61 6d 65 64 2c 20 6d 6f 76  een renamed, mov
133c0 65 64 2c 20 6f 72 20 64 65 6c 65 74 65 64 20 73  ed, or deleted s
133d0 69 6e 63 65 20 69 74 0a 2a 2a 20 77 61 73 20 66  ince it.** was f
133e0 69 72 73 74 20 6f 70 65 6e 65 64 2e 0a 2a 2a 0a  irst opened..**.
133f0 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
13400 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f  FCNTL_WIN32_GET_
13410 48 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20  HANDLE]].** The 
13420 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49  [SQLITE_FCNTL_WI
13430 4e 33 32 5f 47 45 54 5f 48 41 4e 44 4c 45 5d 20  N32_GET_HANDLE] 
13440 6f 70 63 6f 64 65 20 63 61 6e 20 62 65 20 75 73  opcode can be us
13450 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65  ed to obtain the
13460 0a 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e  .** underlying n
13470 61 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64 6c  ative file handl
13480 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
13490 68 20 61 20 66 69 6c 65 20 68 61 6e 64 6c 65 2e  h a file handle.
134a0 20 20 54 68 69 73 20 66 69 6c 65 0a 2a 2a 20 63    This file.** c
134b0 6f 6e 74 72 6f 6c 20 69 6e 74 65 72 70 72 65 74  ontrol interpret
134c0 73 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 61  s its argument a
134d0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
134e0 20 6e 61 74 69 76 65 20 66 69 6c 65 20 68 61 6e   native file han
134f0 64 6c 65 20 61 6e 64 0a 2a 2a 20 77 72 69 74 65  dle and.** write
13500 73 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  s the resulting 
13510 76 61 6c 75 65 20 74 68 65 72 65 2e 0a 2a 2a 0a  value there..**.
13520 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
13530 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f  FCNTL_WIN32_SET_
13540 48 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20  HANDLE]].** The 
13550 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49  [SQLITE_FCNTL_WI
13560 4e 33 32 5f 53 45 54 5f 48 41 4e 44 4c 45 5d 20  N32_SET_HANDLE] 
13570 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 66  opcode is used f
13580 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54  or debugging.  T
13590 68 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61  his.** opcode ca
135a0 75 73 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f  uses the xFileCo
135b0 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20  ntrol method to 
135c0 73 77 61 70 20 74 68 65 20 66 69 6c 65 20 68 61  swap the file ha
135d0 6e 64 6c 65 20 77 69 74 68 20 74 68 65 20 6f 6e  ndle with the on
135e0 65 0a 2a 2a 20 70 6f 69 6e 74 65 64 20 74 6f 20  e.** pointed to 
135f0 62 79 20 74 68 65 20 70 41 72 67 20 61 72 67 75  by the pArg argu
13600 6d 65 6e 74 2e 20 20 54 68 69 73 20 63 61 70 61  ment.  This capa
13610 62 69 6c 69 74 79 20 69 73 20 75 73 65 64 20 64  bility is used d
13620 75 72 69 6e 67 20 74 65 73 74 69 6e 67 0a 2a 2a  uring testing.**
13630 20 61 6e 64 20 6f 6e 6c 79 20 6e 65 65 64 73 20   and only needs 
13640 74 6f 20 62 65 20 73 75 70 70 6f 72 74 65 64 20  to be supported 
13650 77 68 65 6e 20 53 51 4c 49 54 45 5f 54 45 53 54  when SQLITE_TEST
13660 20 69 73 20 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a   is defined..**.
13670 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
13680 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d  FCNTL_WAL_BLOCK]
13690 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
136a0 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b  _FCNTL_WAL_BLOCK
136b0 5d 20 69 73 20 61 20 73 69 67 6e 61 6c 20 74 6f  ] is a signal to
136c0 20 74 68 65 20 56 46 53 20 6c 61 79 65 72 20 74   the VFS layer t
136d0 68 61 74 20 69 74 20 6d 69 67 68 74 0a 2a 2a 20  hat it might.** 
136e0 62 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73 20  be advantageous 
136f0 74 6f 20 62 6c 6f 63 6b 20 6f 6e 20 74 68 65 20  to block on the 
13700 6e 65 78 74 20 57 41 4c 20 6c 6f 63 6b 20 69 66  next WAL lock if
13710 20 74 68 65 20 6c 6f 63 6b 20 69 73 20 6e 6f 74   the lock is not
13720 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20   immediately.** 
13730 61 76 61 69 6c 61 62 6c 65 2e 20 20 54 68 65 20  available.  The 
13740 57 41 4c 20 73 75 62 73 79 73 74 65 6d 20 69 73  WAL subsystem is
13750 73 75 65 73 20 74 68 69 73 20 73 69 67 6e 61 6c  sues this signal
13760 20 64 75 72 69 6e 67 20 72 61 72 65 0a 2a 2a 20   during rare.** 
13770 63 69 72 63 75 6d 73 74 61 6e 63 65 73 20 69 6e  circumstances in
13780 20 6f 72 64 65 72 20 74 6f 20 66 69 78 20 61 20   order to fix a 
13790 70 72 6f 62 6c 65 6d 20 77 69 74 68 20 70 72 69  problem with pri
137a0 6f 72 69 74 79 20 69 6e 76 65 72 73 69 6f 6e 2e  ority inversion.
137b0 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  .** Applications
137c0 20 73 68 6f 75 6c 64 20 3c 65 6d 3e 6e 6f 74 3c   should <em>not<
137d0 2f 65 6d 3e 20 75 73 65 20 74 68 69 73 20 66 69  /em> use this fi
137e0 6c 65 2d 63 6f 6e 74 72 6f 6c 2e 0a 2a 2a 0a 2a  le-control..**.*
137f0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13800 43 4e 54 4c 5f 5a 49 50 56 46 53 5d 5d 0a 2a 2a  CNTL_ZIPVFS]].**
13810 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   The [SQLITE_FCN
13820 54 4c 5f 5a 49 50 56 46 53 5d 20 6f 70 63 6f 64  TL_ZIPVFS] opcod
13830 65 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64  e is implemented
13840 20 62 79 20 7a 69 70 76 66 73 20 6f 6e 6c 79 2e   by zipvfs only.
13850 20 41 6c 6c 20 6f 74 68 65 72 0a 2a 2a 20 56 46   All other.** VF
13860 53 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20  S should return 
13870 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20  SQLITE_NOTFOUND 
13880 66 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65 2e  for this opcode.
13890 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
138a0 49 54 45 5f 46 43 4e 54 4c 5f 52 42 55 5d 5d 0a  ITE_FCNTL_RBU]].
138b0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
138c0 43 4e 54 4c 5f 52 42 55 5d 20 6f 70 63 6f 64 65  CNTL_RBU] opcode
138d0 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
138e0 62 79 20 74 68 65 20 73 70 65 63 69 61 6c 20 56  by the special V
138f0 46 53 20 75 73 65 64 20 62 79 0a 2a 2a 20 74 68  FS used by.** th
13900 65 20 52 42 55 20 65 78 74 65 6e 73 69 6f 6e 20  e RBU extension 
13910 6f 6e 6c 79 2e 20 20 41 6c 6c 20 6f 74 68 65 72  only.  All other
13920 20 56 46 53 20 73 68 6f 75 6c 64 20 72 65 74 75   VFS should retu
13930 72 6e 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55  rn SQLITE_NOTFOU
13940 4e 44 20 66 6f 72 0a 2a 2a 20 74 68 69 73 20 6f  ND for.** this o
13950 70 63 6f 64 65 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c  pcode.  .**.** <
13960 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
13970 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57  L_BEGIN_ATOMIC_W
13980 52 49 54 45 5d 5d 0a 2a 2a 20 49 66 20 74 68 65  RITE]].** If the
13990 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42   [SQLITE_FCNTL_B
139a0 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54  EGIN_ATOMIC_WRIT
139b0 45 5d 20 6f 70 63 6f 64 65 20 72 65 74 75 72 6e  E] opcode return
139c0 73 20 53 51 4c 49 54 45 5f 4f 4b 2c 20 74 68 65  s SQLITE_OK, the
139d0 6e 0a 2a 2a 20 74 68 65 20 66 69 6c 65 20 64 65  n.** the file de
139e0 73 63 72 69 70 74 6f 72 20 69 73 20 70 6c 61 63  scriptor is plac
139f0 65 64 20 69 6e 20 22 62 61 74 63 68 20 77 72 69  ed in "batch wri
13a00 74 65 20 6d 6f 64 65 22 2c 20 77 68 69 63 68 0a  te mode", which.
13a10 2a 2a 20 6d 65 61 6e 73 20 61 6c 6c 20 73 75 62  ** means all sub
13a20 73 65 71 75 65 6e 74 20 77 72 69 74 65 20 6f 70  sequent write op
13a30 65 72 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65  erations will be
13a40 20 64 65 66 65 72 72 65 64 20 61 6e 64 20 64 6f   deferred and do
13a50 6e 65 0a 2a 2a 20 61 74 6f 6d 69 63 61 6c 6c 79  ne.** atomically
13a60 20 61 74 20 74 68 65 20 6e 65 78 74 20 5b 53 51   at the next [SQ
13a70 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49  LITE_FCNTL_COMMI
13a80 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e  T_ATOMIC_WRITE].
13a90 20 20 53 79 73 74 65 6d 73 0a 2a 2a 20 74 68 61    Systems.** tha
13aa0 74 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74  t do not support
13ab0 20 62 61 74 63 68 20 61 74 6f 6d 69 63 20 77 72   batch atomic wr
13ac0 69 74 65 73 20 77 69 6c 6c 20 72 65 74 75 72 6e  ites will return
13ad0 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44   SQLITE_NOTFOUND
13ae0 2e 0a 2a 2a 20 5e 46 6f 6c 6c 6f 77 69 6e 67 20  ..** ^Following 
13af0 61 20 73 75 63 63 65 73 73 66 75 6c 20 53 51 4c  a successful SQL
13b00 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f  ITE_FCNTL_BEGIN_
13b10 41 54 4f 4d 49 43 5f 57 52 49 54 45 20 61 6e 64  ATOMIC_WRITE and
13b20 20 70 72 69 6f 72 20 74 6f 0a 2a 2a 20 74 68 65   prior to.** the
13b30 20 63 6c 6f 73 69 6e 67 20 5b 53 51 4c 49 54 45   closing [SQLITE
13b40 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54  _FCNTL_COMMIT_AT
13b50 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 72 0a 2a  OMIC_WRITE] or.*
13b60 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  * [SQLITE_FCNTL_
13b70 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f  ROLLBACK_ATOMIC_
13b80 57 52 49 54 45 5d 2c 20 53 51 4c 69 74 65 20 77  WRITE], SQLite w
13b90 69 6c 6c 20 6d 61 6b 65 0a 2a 2a 20 6e 6f 20 56  ill make.** no V
13ba0 46 53 20 69 6e 74 65 72 66 61 63 65 20 63 61 6c  FS interface cal
13bb0 6c 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b  ls on the same [
13bc0 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 66 69  sqlite3_file] fi
13bd0 6c 65 20 64 65 73 63 72 69 70 74 6f 72 0a 2a 2a  le descriptor.**
13be0 20 65 78 63 65 70 74 20 66 6f 72 20 63 61 6c 6c   except for call
13bf0 73 20 74 6f 20 74 68 65 20 78 57 72 69 74 65 20  s to the xWrite 
13c00 6d 65 74 68 6f 64 20 61 6e 64 20 74 68 65 20 78  method and the x
13c10 46 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68  FileControl meth
13c20 6f 64 0a 2a 2a 20 77 69 74 68 20 5b 53 51 4c 49  od.** with [SQLI
13c30 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49  TE_FCNTL_SIZE_HI
13c40 4e 54 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  NT]..**.** <li>[
13c50 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f  [SQLITE_FCNTL_CO
13c60 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54  MMIT_ATOMIC_WRIT
13c70 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  E]].** The [SQLI
13c80 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f  TE_FCNTL_COMMIT_
13c90 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70  ATOMIC_WRITE] op
13ca0 63 6f 64 65 20 63 61 75 73 65 73 20 61 6c 6c 20  code causes all 
13cb0 77 72 69 74 65 0a 2a 2a 20 6f 70 65 72 61 74 69  write.** operati
13cc0 6f 6e 73 20 73 69 6e 63 65 20 74 68 65 20 70 72  ons since the pr
13cd0 65 76 69 6f 75 73 20 73 75 63 63 65 73 73 66 75  evious successfu
13ce0 6c 20 63 61 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53  l call to .** [S
13cf0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49  QLITE_FCNTL_BEGI
13d00 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20  N_ATOMIC_WRITE] 
13d10 74 6f 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20  to be performed 
13d20 61 74 6f 6d 69 63 61 6c 6c 79 2e 0a 2a 2a 20 54  atomically..** T
13d30 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  his file control
13d40 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
13d50 5f 4f 4b 5d 20 69 66 20 61 6e 64 20 6f 6e 6c 79  _OK] if and only
13d60 20 69 66 20 74 68 65 20 77 72 69 74 65 73 20 77   if the writes w
13d70 65 72 65 0a 2a 2a 20 61 6c 6c 20 70 65 72 66 6f  ere.** all perfo
13d80 72 6d 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c  rmed successfull
13d90 79 20 61 6e 64 20 68 61 76 65 20 62 65 65 6e 20  y and have been 
13da0 63 6f 6d 6d 69 74 74 65 64 20 74 6f 20 70 65 72  committed to per
13db0 73 69 73 74 65 6e 74 20 73 74 6f 72 61 67 65 2e  sistent storage.
13dc0 0a 2a 2a 20 5e 52 65 67 61 72 64 6c 65 73 73 20  .** ^Regardless 
13dd0 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  of whether or no
13de0 74 20 69 74 20 69 73 20 73 75 63 63 65 73 73 66  t it is successf
13df0 75 6c 2c 20 74 68 69 73 20 66 69 6c 65 20 63 6f  ul, this file co
13e00 6e 74 72 6f 6c 20 74 61 6b 65 73 0a 2a 2a 20 74  ntrol takes.** t
13e10 68 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  he file descript
13e20 6f 72 20 6f 75 74 20 6f 66 20 62 61 74 63 68 20  or out of batch 
13e30 77 72 69 74 65 20 6d 6f 64 65 20 73 6f 20 74 68  write mode so th
13e40 61 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e  at all subsequen
13e50 74 0a 2a 2a 20 77 72 69 74 65 20 6f 70 65 72 61  t.** write opera
13e60 74 69 6f 6e 73 20 61 72 65 20 69 6e 64 65 70 65  tions are indepe
13e70 6e 64 65 6e 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74  ndent..** ^SQLit
13e80 65 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76  e will never inv
13e90 6f 6b 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  oke SQLITE_FCNTL
13ea0 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57  _COMMIT_ATOMIC_W
13eb0 52 49 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20  RITE without.** 
13ec0 61 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66  a prior successf
13ed0 75 6c 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49  ul call to [SQLI
13ee0 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41  TE_FCNTL_BEGIN_A
13ef0 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a  TOMIC_WRITE]..**
13f00 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45  .** <li>[[SQLITE
13f10 5f 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f  _FCNTL_ROLLBACK_
13f20 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 5d 0a 2a  ATOMIC_WRITE]].*
13f30 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
13f40 4e 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f  NTL_ROLLBACK_ATO
13f50 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70 63 6f 64  MIC_WRITE] opcod
13f60 65 20 63 61 75 73 65 73 20 61 6c 6c 20 77 72 69  e causes all wri
13f70 74 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 73  te.** operations
13f80 20 73 69 6e 63 65 20 74 68 65 20 70 72 65 76 69   since the previ
13f90 6f 75 73 20 73 75 63 63 65 73 73 66 75 6c 20 63  ous successful c
13fa0 61 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51 4c 49  all to .** [SQLI
13fb0 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41  TE_FCNTL_BEGIN_A
13fc0 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74 6f 20  TOMIC_WRITE] to 
13fd0 62 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a  be rolled back..
13fe0 2a 2a 20 5e 54 68 69 73 20 66 69 6c 65 20 63 6f  ** ^This file co
13ff0 6e 74 72 6f 6c 20 74 61 6b 65 73 20 74 68 65 20  ntrol takes the 
14000 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20  file descriptor 
14010 6f 75 74 20 6f 66 20 62 61 74 63 68 20 77 72 69  out of batch wri
14020 74 65 20 6d 6f 64 65 0a 2a 2a 20 73 6f 20 74 68  te mode.** so th
14030 61 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e  at all subsequen
14040 74 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f  t write operatio
14050 6e 73 20 61 72 65 20 69 6e 64 65 70 65 6e 64 65  ns are independe
14060 6e 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77  nt..** ^SQLite w
14070 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65  ill never invoke
14080 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f   SQLITE_FCNTL_RO
14090 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52  LLBACK_ATOMIC_WR
140a0 49 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61  ITE without.** a
140b0 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75   prior successfu
140c0 6c 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54  l call to [SQLIT
140d0 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
140e0 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a  OMIC_WRITE]..**.
140f0 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
14100 46 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49 4d 45 4f  FCNTL_LOCK_TIMEO
14110 55 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  UT]].** The [SQL
14120 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 5f 54  ITE_FCNTL_LOCK_T
14130 49 4d 45 4f 55 54 5d 20 6f 70 63 6f 64 65 20 63  IMEOUT] opcode c
14140 61 75 73 65 73 20 61 74 74 65 6d 70 74 73 20 74  auses attempts t
14150 6f 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 20 66 69  o obtain.** a fi
14160 6c 65 20 6c 6f 63 6b 20 75 73 69 6e 67 20 74 68  le lock using th
14170 65 20 78 4c 6f 63 6b 20 6f 72 20 78 53 68 6d 4c  e xLock or xShmL
14180 6f 63 6b 20 6d 65 74 68 6f 64 73 20 6f 66 20 74  ock methods of t
14190 68 65 20 56 46 53 20 74 6f 20 77 61 69 74 0a 2a  he VFS to wait.*
141a0 2a 20 66 6f 72 20 75 70 20 74 6f 20 4d 20 6d 69  * for up to M mi
141b0 6c 6c 69 73 65 63 6f 6e 64 73 20 62 65 66 6f 72  lliseconds befor
141c0 65 20 66 61 69 6c 69 6e 67 2c 20 77 68 65 72 65  e failing, where
141d0 20 4d 20 69 73 20 74 68 65 20 73 69 6e 67 6c 65   M is the single
141e0 20 0a 2a 2a 20 75 6e 73 69 67 6e 65 64 20 69 6e   .** unsigned in
141f0 74 65 67 65 72 20 70 61 72 61 6d 65 74 65 72 2e  teger parameter.
14200 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
14210 49 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56  ITE_FCNTL_DATA_V
14220 45 52 53 49 4f 4e 5d 5d 0a 2a 2a 20 54 68 65 20  ERSION]].** The 
14230 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44 41  [SQLITE_FCNTL_DA
14240 54 41 5f 56 45 52 53 49 4f 4e 5d 20 6f 70 63 6f  TA_VERSION] opco
14250 64 65 20 69 73 20 75 73 65 64 20 74 6f 20 64 65  de is used to de
14260 74 65 63 74 20 63 68 61 6e 67 65 73 20 74 6f 0a  tect changes to.
14270 2a 2a 20 61 20 64 61 74 61 62 61 73 65 20 66 69  ** a database fi
14280 6c 65 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e  le.  The argumen
14290 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  t is a pointer t
142a0 6f 20 61 20 33 32 2d 62 69 74 20 75 6e 73 69 67  o a 32-bit unsig
142b0 6e 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20  ned integer..** 
142c0 54 68 65 20 22 64 61 74 61 20 76 65 72 73 69 6f  The "data versio
142d0 6e 22 20 66 6f 72 20 74 68 65 20 70 61 67 65 72  n" for the pager
142e0 20 69 73 20 77 72 69 74 74 65 6e 20 69 6e 74 6f   is written into
142f0 20 74 68 65 20 70 6f 69 6e 74 65 72 2e 20 20 54   the pointer.  T
14300 68 65 0a 2a 2a 20 22 64 61 74 61 20 76 65 72 73  he.** "data vers
14310 69 6f 6e 22 20 63 68 61 6e 67 65 73 20 77 68 65  ion" changes whe
14320 6e 65 76 65 72 20 61 6e 79 20 63 68 61 6e 67 65  never any change
14330 20 6f 63 63 75 72 73 20 74 6f 20 74 68 65 20 63   occurs to the c
14340 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 2a 2a 20  orresponding.** 
14350 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c 20 65  database file, e
14360 69 74 68 65 72 20 74 68 72 6f 75 67 68 20 53 51  ither through SQ
14370 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 20  L statements on 
14380 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
14390 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  e.** connection 
143a0 6f 72 20 74 68 72 6f 75 67 68 20 74 72 61 6e 73  or through trans
143b0 61 63 74 69 6f 6e 73 20 63 6f 6d 6d 69 74 74 65  actions committe
143c0 64 20 62 79 20 73 65 70 61 72 61 74 65 20 64 61  d by separate da
143d0 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63  tabase.** connec
143e0 74 69 6f 6e 73 20 70 6f 73 73 69 62 6c 79 20 69  tions possibly i
143f0 6e 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 65  n other processe
14400 73 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  s. The [sqlite3_
14410 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d  total_changes()]
14420 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 63 61  .** interface ca
14430 6e 20 62 65 20 75 73 65 64 20 74 6f 20 66 69 6e  n be used to fin
14440 64 20 69 66 20 61 6e 79 20 64 61 74 61 62 61 73  d if any databas
14450 65 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74  e on the connect
14460 69 6f 6e 20 68 61 73 20 63 68 61 6e 67 65 64 2c  ion has changed,
14470 0a 2a 2a 20 62 75 74 20 74 68 61 74 20 69 6e 74  .** but that int
14480 65 72 66 61 63 65 20 72 65 73 70 6f 6e 64 73 20  erface responds 
14490 74 6f 20 63 68 61 6e 67 65 73 20 6f 6e 20 54 45  to changes on TE
144a0 4d 50 20 61 73 20 77 65 6c 6c 20 61 73 20 4d 41  MP as well as MA
144b0 49 4e 20 61 6e 64 20 64 6f 65 73 0a 2a 2a 20 6e  IN and does.** n
144c0 6f 74 20 70 72 6f 76 69 64 65 20 61 20 6d 65 63  ot provide a mec
144d0 68 61 6e 69 73 6d 20 74 6f 20 64 65 74 65 63 74  hanism to detect
144e0 20 63 68 61 6e 67 65 73 20 74 6f 20 4d 41 49 4e   changes to MAIN
144f0 20 6f 6e 6c 79 2e 20 20 41 6c 73 6f 2c 20 74 68   only.  Also, th
14500 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 74 6f  e.** [sqlite3_to
14510 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20 69  tal_changes()] i
14520 6e 74 65 72 66 61 63 65 20 72 65 73 70 6f 6e 64  nterface respond
14530 73 20 74 6f 20 69 6e 74 65 72 6e 61 6c 20 63 68  s to internal ch
14540 61 6e 67 65 73 20 6f 6e 6c 79 20 61 6e 64 0a 2a  anges only and.*
14550 2a 20 6f 6d 69 74 73 20 63 68 61 6e 67 65 73 20  * omits changes 
14560 6d 61 64 65 20 62 79 20 6f 74 68 65 72 20 64 61  made by other da
14570 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
14580 6e 73 2e 20 20 54 68 65 0a 2a 2a 20 5b 50 52 41  ns.  The.** [PRA
14590 47 4d 41 20 64 61 74 61 5f 76 65 72 73 69 6f 6e  GMA data_version
145a0 5d 20 63 6f 6d 6d 61 6e 64 20 70 72 6f 76 69 64  ] command provid
145b0 65 20 61 20 6d 65 63 68 61 6e 69 73 6d 20 74 6f  e a mechanism to
145c0 20 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20   detect changes 
145d0 74 6f 0a 2a 2a 20 61 20 73 69 6e 67 6c 65 20 61  to.** a single a
145e0 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
145f0 20 74 68 61 74 20 6f 63 63 75 72 20 64 75 65 20   that occur due 
14600 74 6f 20 6f 74 68 65 72 20 64 61 74 61 62 61 73  to other databas
14610 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2c 0a 2a  e connections,.*
14620 2a 20 62 75 74 20 6f 6d 69 74 73 20 63 68 61 6e  * but omits chan
14630 67 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  ges implemented 
14640 62 79 20 74 68 65 20 64 61 74 61 62 61 73 65 20  by the database 
14650 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 6e 20 77 68  connection on wh
14660 69 63 68 20 69 74 20 69 73 0a 2a 2a 20 63 61 6c  ich it is.** cal
14670 6c 65 64 2e 20 20 54 68 69 73 20 66 69 6c 65 20  led.  This file 
14680 63 6f 6e 74 72 6f 6c 20 69 73 20 74 68 65 20 6f  control is the o
14690 6e 6c 79 20 6d 65 63 68 61 6e 69 73 6d 20 74 6f  nly mechanism to
146a0 20 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20   detect changes 
146b0 74 68 61 74 0a 2a 2a 20 68 61 70 70 65 6e 20 65  that.** happen e
146c0 69 74 68 65 72 20 69 6e 74 65 72 6e 61 6c 6c 79  ither internally
146d0 20 6f 72 20 65 78 74 65 72 6e 61 6c 6c 79 20 61   or externally a
146e0 6e 64 20 74 68 61 74 20 61 72 65 20 61 73 73 6f  nd that are asso
146f0 63 69 61 74 65 64 20 77 69 74 68 0a 2a 2a 20 61  ciated with.** a
14700 20 70 61 72 74 69 63 75 6c 61 72 20 61 74 74 61   particular atta
14710 63 68 65 64 20 64 61 74 61 62 61 73 65 2e 0a 2a  ched database..*
14720 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 23 64 65 66 69  * </ul>.*/.#defi
14730 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14740 4c 4f 43 4b 53 54 41 54 45 20 20 20 20 20 20 20  LOCKSTATE       
14750 20 20 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e          1.#defin
14760 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 47  e SQLITE_FCNTL_G
14770 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
14780 20 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65         2.#define
14790 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 45   SQLITE_FCNTL_SE
147a0 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20  T_LOCKPROXYFILE 
147b0 20 20 20 20 20 20 33 0a 23 64 65 66 69 6e 65 20        3.#define 
147c0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53  SQLITE_FCNTL_LAS
147d0 54 5f 45 52 52 4e 4f 20 20 20 20 20 20 20 20 20  T_ERRNO         
147e0 20 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53       4.#define S
147f0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45  QLITE_FCNTL_SIZE
14800 5f 48 49 4e 54 20 20 20 20 20 20 20 20 20 20 20  _HINT           
14810 20 20 20 20 35 0a 23 64 65 66 69 6e 65 20 53 51      5.#define SQ
14820 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b  LITE_FCNTL_CHUNK
14830 5f 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20  _SIZE           
14840 20 20 20 36 0a 23 64 65 66 69 6e 65 20 53 51 4c     6.#define SQL
14850 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50  ITE_FCNTL_FILE_P
14860 4f 49 4e 54 45 52 20 20 20 20 20 20 20 20 20 20  OINTER          
14870 20 20 37 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    7.#define SQLI
14880 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 5f 4f 4d  TE_FCNTL_SYNC_OM
14890 49 54 54 45 44 20 20 20 20 20 20 20 20 20 20 20  ITTED           
148a0 20 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   8.#define SQLIT
148b0 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56  E_FCNTL_WIN32_AV
148c0 5f 52 45 54 52 59 20 20 20 20 20 20 20 20 20 20  _RETRY          
148d0 39 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  9.#define SQLITE
148e0 5f 46 43 4e 54 4c 5f 50 45 52 53 49 53 54 5f 57  _FCNTL_PERSIST_W
148f0 41 4c 20 20 20 20 20 20 20 20 20 20 20 20 31 30  AL            10
14900 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
14910 46 43 4e 54 4c 5f 4f 56 45 52 57 52 49 54 45 20  FCNTL_OVERWRITE 
14920 20 20 20 20 20 20 20 20 20 20 20 20 20 31 31 0a               11.
14930 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14940 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 20 20 20 20  CNTL_VFSNAME    
14950 20 20 20 20 20 20 20 20 20 20 20 20 31 32 0a 23              12.#
14960 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14970 4e 54 4c 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56  NTL_POWERSAFE_OV
14980 45 52 57 52 49 54 45 20 20 20 20 31 33 0a 23 64  ERWRITE    13.#d
14990 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
149a0 54 4c 5f 50 52 41 47 4d 41 20 20 20 20 20 20 20  TL_PRAGMA       
149b0 20 20 20 20 20 20 20 20 20 20 31 34 0a 23 64 65            14.#de
149c0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
149d0 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52 20 20 20  L_BUSYHANDLER   
149e0 20 20 20 20 20 20 20 20 20 31 35 0a 23 64 65 66           15.#def
149f0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
14a00 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 20 20 20  _TEMPFILENAME   
14a10 20 20 20 20 20 20 20 20 31 36 0a 23 64 65 66 69          16.#defi
14a20 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14a30 4d 4d 41 50 5f 53 49 5a 45 20 20 20 20 20 20 20  MMAP_SIZE       
14a40 20 20 20 20 20 20 20 31 38 0a 23 64 65 66 69 6e         18.#defin
14a50 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54  e SQLITE_FCNTL_T
14a60 52 41 43 45 20 20 20 20 20 20 20 20 20 20 20 20  RACE            
14a70 20 20 20 20 20 20 31 39 0a 23 64 65 66 69 6e 65        19.#define
14a80 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 48 41   SQLITE_FCNTL_HA
14a90 53 5f 4d 4f 56 45 44 20 20 20 20 20 20 20 20 20  S_MOVED         
14aa0 20 20 20 20 20 32 30 0a 23 64 65 66 69 6e 65 20       20.#define 
14ab0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e  SQLITE_FCNTL_SYN
14ac0 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  C               
14ad0 20 20 20 20 32 31 0a 23 64 65 66 69 6e 65 20 53      21.#define S
14ae0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d  QLITE_FCNTL_COMM
14af0 49 54 5f 50 48 41 53 45 54 57 4f 20 20 20 20 20  IT_PHASETWO     
14b00 20 20 20 32 32 0a 23 64 65 66 69 6e 65 20 53 51     22.#define SQ
14b10 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32  LITE_FCNTL_WIN32
14b20 5f 53 45 54 5f 48 41 4e 44 4c 45 20 20 20 20 20  _SET_HANDLE     
14b30 20 20 32 33 0a 23 64 65 66 69 6e 65 20 53 51 4c    23.#define SQL
14b40 49 54 45 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c  ITE_FCNTL_WAL_BL
14b50 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20 20  OCK             
14b60 20 32 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   24.#define SQLI
14b70 54 45 5f 46 43 4e 54 4c 5f 5a 49 50 56 46 53 20  TE_FCNTL_ZIPVFS 
14b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b90 32 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  25.#define SQLIT
14ba0 45 5f 46 43 4e 54 4c 5f 52 42 55 20 20 20 20 20  E_FCNTL_RBU     
14bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
14bc0 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  6.#define SQLITE
14bd0 5f 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54  _FCNTL_VFS_POINT
14be0 45 52 20 20 20 20 20 20 20 20 20 20 20 20 32 37  ER            27
14bf0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
14c00 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f  FCNTL_JOURNAL_PO
14c10 49 4e 54 45 52 20 20 20 20 20 20 20 20 32 38 0a  INTER        28.
14c20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14c30 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48  CNTL_WIN32_GET_H
14c40 41 4e 44 4c 45 20 20 20 20 20 20 20 32 39 0a 23  ANDLE       29.#
14c50 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14c60 4e 54 4c 5f 50 44 42 20 20 20 20 20 20 20 20 20  NTL_PDB         
14c70 20 20 20 20 20 20 20 20 20 20 20 33 30 0a 23 64             30.#d
14c80 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14c90 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f  TL_BEGIN_ATOMIC_
14ca0 57 52 49 54 45 20 20 20 20 20 33 31 0a 23 64 65  WRITE     31.#de
14cb0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
14cc0 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f  L_COMMIT_ATOMIC_
14cd0 57 52 49 54 45 20 20 20 20 33 32 0a 23 64 65 66  WRITE    32.#def
14ce0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
14cf0 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43  _ROLLBACK_ATOMIC
14d00 5f 57 52 49 54 45 20 20 33 33 0a 23 64 65 66 69  _WRITE  33.#defi
14d10 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14d20 4c 4f 43 4b 5f 54 49 4d 45 4f 55 54 20 20 20 20  LOCK_TIMEOUT    
14d30 20 20 20 20 20 20 20 33 34 0a 23 64 65 66 69 6e         34.#defin
14d40 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44  e SQLITE_FCNTL_D
14d50 41 54 41 5f 56 45 52 53 49 4f 4e 20 20 20 20 20  ATA_VERSION     
14d60 20 20 20 20 20 20 33 35 0a 23 64 65 66 69 6e 65        35.#define
14d70 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49   SQLITE_FCNTL_SI
14d80 5a 45 5f 4c 49 4d 49 54 20 20 20 20 20 20 20 20  ZE_LIMIT        
14d90 20 20 20 20 20 33 36 0a 0a 2f 2a 20 64 65 70 72       36../* depr
14da0 65 63 61 74 65 64 20 6e 61 6d 65 73 20 2a 2f 0a  ecated names */.
14db0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 47  #define SQLITE_G
14dc0 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
14dd0 20 20 20 20 20 20 53 51 4c 49 54 45 5f 46 43 4e        SQLITE_FCN
14de0 54 4c 5f 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59  TL_GET_LOCKPROXY
14df0 46 49 4c 45 0a 23 64 65 66 69 6e 65 20 53 51 4c  FILE.#define SQL
14e00 49 54 45 5f 53 45 54 5f 4c 4f 43 4b 50 52 4f 58  ITE_SET_LOCKPROX
14e10 59 46 49 4c 45 20 20 20 20 20 20 53 51 4c 49 54  YFILE      SQLIT
14e20 45 5f 46 43 4e 54 4c 5f 53 45 54 5f 4c 4f 43 4b  E_FCNTL_SET_LOCK
14e30 50 52 4f 58 59 46 49 4c 45 0a 23 64 65 66 69 6e  PROXYFILE.#defin
14e40 65 20 53 51 4c 49 54 45 5f 4c 41 53 54 5f 45 52  e SQLITE_LAST_ER
14e50 52 4e 4f 20 20 20 20 20 20 20 20 20 20 20 20 20  RNO             
14e60 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53  SQLITE_FCNTL_LAS
14e70 54 5f 45 52 52 4e 4f 0a 0a 0a 2f 2a 0a 2a 2a 20  T_ERRNO.../*.** 
14e80 43 41 50 49 33 52 45 46 3a 20 4d 75 74 65 78 20  CAPI3REF: Mutex 
14e90 48 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20 54 68 65  Handle.**.** The
14ea0 20 6d 75 74 65 78 20 6d 6f 64 75 6c 65 20 77 69   mutex module wi
14eb0 74 68 69 6e 20 53 51 4c 69 74 65 20 64 65 66 69  thin SQLite defi
14ec0 6e 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  nes [sqlite3_mut
14ed0 65 78 5d 20 74 6f 20 62 65 20 61 6e 0a 2a 2a 20  ex] to be an.** 
14ee0 61 62 73 74 72 61 63 74 20 74 79 70 65 20 66 6f  abstract type fo
14ef0 72 20 61 20 6d 75 74 65 78 20 6f 62 6a 65 63 74  r a mutex object
14f00 2e 20 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f  .  The SQLite co
14f10 72 65 20 6e 65 76 65 72 20 6c 6f 6f 6b 73 0a 2a  re never looks.*
14f20 2a 20 61 74 20 74 68 65 20 69 6e 74 65 72 6e 61  * at the interna
14f30 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  l representation
14f40 20 6f 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f   of an [sqlite3_
14f50 6d 75 74 65 78 5d 2e 20 20 49 74 20 6f 6e 6c 79  mutex].  It only
14f60 0a 2a 2a 20 64 65 61 6c 73 20 77 69 74 68 20 70  .** deals with p
14f70 6f 69 6e 74 65 72 73 20 74 6f 20 74 68 65 20 5b  ointers to the [
14f80 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5d 20 6f  sqlite3_mutex] o
14f90 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 4d 75 74  bject..**.** Mut
14fa0 65 78 65 73 20 61 72 65 20 63 72 65 61 74 65 64  exes are created
14fb0 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
14fc0 6d 75 74 65 78 5f 61 6c 6c 6f 63 28 29 5d 2e 0a  mutex_alloc()]..
14fd0 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
14fe0 74 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 20  t sqlite3_mutex 
14ff0 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 3b 0a 0a  sqlite3_mutex;..
15000 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
15010 4c 6f 61 64 61 62 6c 65 20 45 78 74 65 6e 73 69  Loadable Extensi
15020 6f 6e 20 54 68 75 6e 6b 0a 2a 2a 0a 2a 2a 20 41  on Thunk.**.** A
15030 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
15040 6f 70 61 71 75 65 20 73 71 6c 69 74 65 33 5f 61  opaque sqlite3_a
15050 70 69 5f 72 6f 75 74 69 6e 65 73 20 73 74 72 75  pi_routines stru
15060 63 74 75 72 65 20 69 73 20 70 61 73 73 65 64 20  cture is passed 
15070 61 73 0a 2a 2a 20 74 68 65 20 74 68 69 72 64 20  as.** the third 
15080 70 61 72 61 6d 65 74 65 72 20 74 6f 20 65 6e 74  parameter to ent
15090 72 79 20 70 6f 69 6e 74 73 20 6f 66 20 5b 6c 6f  ry points of [lo
150a0 61 64 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e  adable extension
150b0 73 5d 2e 20 20 54 68 69 73 0a 2a 2a 20 73 74 72  s].  This.** str
150c0 75 63 74 75 72 65 20 6d 75 73 74 20 62 65 20 74  ucture must be t
150d0 79 70 65 64 65 66 65 64 20 69 6e 20 6f 72 64 65  ypedefed in orde
150e0 72 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64  r to work around
150f0 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e   compiler warnin
15100 67 73 0a 2a 2a 20 6f 6e 20 73 6f 6d 65 20 70 6c  gs.** on some pl
15110 61 74 66 6f 72 6d 73 2e 0a 2a 2f 0a 74 79 70 65  atforms..*/.type
15120 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
15130 65 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 20  e3_api_routines 
15140 73 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74  sqlite3_api_rout
15150 69 6e 65 73 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ines;../*.** CAP
15160 49 33 52 45 46 3a 20 4f 53 20 49 6e 74 65 72 66  I3REF: OS Interf
15170 61 63 65 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a  ace Object.**.**
15180 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   An instance of 
15190 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 20  the sqlite3_vfs 
151a0 6f 62 6a 65 63 74 20 64 65 66 69 6e 65 73 20 74  object defines t
151b0 68 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 74  he interface bet
151c0 77 65 65 6e 0a 2a 2a 20 74 68 65 20 53 51 4c 69  ween.** the SQLi
151d0 74 65 20 63 6f 72 65 20 61 6e 64 20 74 68 65 20  te core and the 
151e0 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61  underlying opera
151f0 74 69 6e 67 20 73 79 73 74 65 6d 2e 20 20 54 68  ting system.  Th
15200 65 20 22 76 66 73 22 0a 2a 2a 20 69 6e 20 74 68  e "vfs".** in th
15210 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 62  e name of the ob
15220 6a 65 63 74 20 73 74 61 6e 64 73 20 66 6f 72 20  ject stands for 
15230 22 76 69 72 74 75 61 6c 20 66 69 6c 65 20 73 79  "virtual file sy
15240 73 74 65 6d 22 2e 20 20 53 65 65 0a 2a 2a 20 74  stem".  See.** t
15250 68 65 20 5b 56 46 53 20 7c 20 56 46 53 20 64 6f  he [VFS | VFS do
15260 63 75 6d 65 6e 74 61 74 69 6f 6e 5d 20 66 6f 72  cumentation] for
15270 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61   further informa
15280 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  tion..**.** The 
15290 56 46 53 20 69 6e 74 65 72 66 61 63 65 20 69 73  VFS interface is
152a0 20 73 6f 6d 65 74 69 6d 65 73 20 65 78 74 65 6e   sometimes exten
152b0 64 65 64 20 62 79 20 61 64 64 69 6e 67 20 6e 65  ded by adding ne
152c0 77 20 6d 65 74 68 6f 64 73 20 6f 6e 74 6f 0a 2a  w methods onto.*
152d0 2a 20 74 68 65 20 65 6e 64 2e 20 20 45 61 63 68  * the end.  Each
152e0 20 74 69 6d 65 20 73 75 63 68 20 61 6e 20 65 78   time such an ex
152f0 74 65 6e 73 69 6f 6e 20 6f 63 63 75 72 73 2c 20  tension occurs, 
15300 74 68 65 20 69 56 65 72 73 69 6f 6e 20 66 69 65  the iVersion fie
15310 6c 64 0a 2a 2a 20 69 73 20 69 6e 63 72 65 6d 65  ld.** is increme
15320 6e 74 65 64 2e 20 20 54 68 65 20 69 56 65 72 73  nted.  The iVers
15330 69 6f 6e 20 76 61 6c 75 65 20 73 74 61 72 74 65  ion value starte
15340 64 20 6f 75 74 20 61 73 20 31 20 69 6e 0a 2a 2a  d out as 1 in.**
15350 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e   SQLite [version
15360 20 33 2e 35 2e 30 5d 20 6f 6e 20 5b 64 61 74 65   3.5.0] on [date
15370 6f 66 3a 33 2e 35 2e 30 5d 2c 20 74 68 65 6e 20  of:3.5.0], then 
15380 69 6e 63 72 65 61 73 65 64 20 74 6f 20 32 0a 2a  increased to 2.*
15390 2a 20 77 69 74 68 20 53 51 4c 69 74 65 20 5b 76  * with SQLite [v
153a0 65 72 73 69 6f 6e 20 33 2e 37 2e 30 5d 20 6f 6e  ersion 3.7.0] on
153b0 20 5b 64 61 74 65 6f 66 3a 33 2e 37 2e 30 5d 2c   [dateof:3.7.0],
153c0 20 61 6e 64 20 74 68 65 6e 20 69 6e 63 72 65 61   and then increa
153d0 73 65 64 0a 2a 2a 20 74 6f 20 33 20 77 69 74 68  sed.** to 3 with
153e0 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e   SQLite [version
153f0 20 33 2e 37 2e 36 5d 20 6f 6e 20 5b 64 61 74 65   3.7.6] on [date
15400 6f 66 3a 33 2e 37 2e 36 5d 2e 20 20 41 64 64 69  of:3.7.6].  Addi
15410 74 69 6f 6e 61 6c 20 66 69 65 6c 64 73 0a 2a 2a  tional fields.**
15420 20 6d 61 79 20 62 65 20 61 70 70 65 6e 64 65 64   may be appended
15430 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
15440 76 66 73 20 6f 62 6a 65 63 74 20 61 6e 64 20 74  vfs object and t
15450 68 65 20 69 56 65 72 73 69 6f 6e 20 76 61 6c 75  he iVersion valu
15460 65 0a 2a 2a 20 6d 61 79 20 69 6e 63 72 65 61 73  e.** may increas
15470 65 20 61 67 61 69 6e 20 69 6e 20 66 75 74 75 72  e again in futur
15480 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  e versions of SQ
15490 4c 69 74 65 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68  Lite..** Note th
154a0 61 74 20 74 68 65 20 73 74 72 75 63 74 75 72 65  at the structure
154b0 0a 2a 2a 20 6f 66 20 74 68 65 20 73 71 6c 69 74  .** of the sqlit
154c0 65 33 5f 76 66 73 20 6f 62 6a 65 63 74 20 63 68  e3_vfs object ch
154d0 61 6e 67 65 73 20 69 6e 20 74 68 65 20 74 72 61  anges in the tra
154e0 6e 73 69 74 69 6f 6e 20 66 72 6f 6d 0a 2a 2a 20  nsition from.** 
154f0 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20  SQLite [version 
15500 33 2e 35 2e 39 5d 20 74 6f 20 5b 76 65 72 73 69  3.5.9] to [versi
15510 6f 6e 20 33 2e 36 2e 30 5d 20 6f 6e 20 5b 64 61  on 3.6.0] on [da
15520 74 65 6f 66 3a 33 2e 36 2e 30 5d 0a 2a 2a 20 61  teof:3.6.0].** a
15530 6e 64 20 79 65 74 20 74 68 65 20 69 56 65 72 73  nd yet the iVers
15540 69 6f 6e 20 66 69 65 6c 64 20 77 61 73 20 6e 6f  ion field was no
15550 74 20 6d 6f 64 69 66 69 65 64 2e 0a 2a 2a 0a 2a  t modified..**.*
15560 2a 20 54 68 65 20 73 7a 4f 73 46 69 6c 65 20 66  * The szOsFile f
15570 69 65 6c 64 20 69 73 20 74 68 65 20 73 69 7a 65  ield is the size
15580 20 6f 66 20 74 68 65 20 73 75 62 63 6c 61 73 73   of the subclass
15590 65 64 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  ed [sqlite3_file
155a0 5d 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20 75  ].** structure u
155b0 73 65 64 20 62 79 20 74 68 69 73 20 56 46 53 2e  sed by this VFS.
155c0 20 20 6d 78 50 61 74 68 6e 61 6d 65 20 69 73 20    mxPathname is 
155d0 74 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67  the maximum leng
155e0 74 68 20 6f 66 0a 2a 2a 20 61 20 70 61 74 68 6e  th of.** a pathn
155f0 61 6d 65 20 69 6e 20 74 68 69 73 20 56 46 53 2e  ame in this VFS.
15600 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 65  .**.** Registere
15610 64 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6f 62  d sqlite3_vfs ob
15620 6a 65 63 74 73 20 61 72 65 20 6b 65 70 74 20 6f  jects are kept o
15630 6e 20 61 20 6c 69 6e 6b 65 64 20 6c 69 73 74 20  n a linked list 
15640 66 6f 72 6d 65 64 20 62 79 0a 2a 2a 20 74 68 65  formed by.** the
15650 20 70 4e 65 78 74 20 70 6f 69 6e 74 65 72 2e 20   pNext pointer. 
15660 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66   The [sqlite3_vf
15670 73 5f 72 65 67 69 73 74 65 72 28 29 5d 0a 2a 2a  s_register()].**
15680 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 76 66   and [sqlite3_vf
15690 73 5f 75 6e 72 65 67 69 73 74 65 72 28 29 5d 20  s_unregister()] 
156a0 69 6e 74 65 72 66 61 63 65 73 20 6d 61 6e 61 67  interfaces manag
156b0 65 20 74 68 69 73 20 6c 69 73 74 0a 2a 2a 20 69  e this list.** i
156c0 6e 20 61 20 74 68 72 65 61 64 2d 73 61 66 65 20  n a thread-safe 
156d0 77 61 79 2e 20 20 54 68 65 20 5b 73 71 6c 69 74  way.  The [sqlit
156e0 65 33 5f 76 66 73 5f 66 69 6e 64 28 29 5d 20 69  e3_vfs_find()] i
156f0 6e 74 65 72 66 61 63 65 0a 2a 2a 20 73 65 61 72  nterface.** sear
15700 63 68 65 73 20 74 68 65 20 6c 69 73 74 2e 20 20  ches the list.  
15710 4e 65 69 74 68 65 72 20 74 68 65 20 61 70 70 6c  Neither the appl
15720 69 63 61 74 69 6f 6e 20 63 6f 64 65 20 6e 6f 72  ication code nor
15730 20 74 68 65 20 56 46 53 0a 2a 2a 20 69 6d 70 6c   the VFS.** impl
15740 65 6d 65 6e 74 61 74 69 6f 6e 20 73 68 6f 75 6c  ementation shoul
15750 64 20 75 73 65 20 74 68 65 20 70 4e 65 78 74 20  d use the pNext 
15760 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 54  pointer..**.** T
15770 68 65 20 70 4e 65 78 74 20 66 69 65 6c 64 20 69  he pNext field i
15780 73 20 74 68 65 20 6f 6e 6c 79 20 66 69 65 6c 64  s the only field
15790 20 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f   in the sqlite3_
157a0 76 66 73 0a 2a 2a 20 73 74 72 75 63 74 75 72 65  vfs.** structure
157b0 20 74 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c   that SQLite wil
157c0 6c 20 65 76 65 72 20 6d 6f 64 69 66 79 2e 20 20  l ever modify.  
157d0 53 51 4c 69 74 65 20 77 69 6c 6c 20 6f 6e 6c 79  SQLite will only
157e0 20 61 63 63 65 73 73 0a 2a 2a 20 6f 72 20 6d 6f   access.** or mo
157f0 64 69 66 79 20 74 68 69 73 20 66 69 65 6c 64 20  dify this field 
15800 77 68 69 6c 65 20 68 6f 6c 64 69 6e 67 20 61 20  while holding a 
15810 70 61 72 74 69 63 75 6c 61 72 20 73 74 61 74 69  particular stati
15820 63 20 6d 75 74 65 78 2e 0a 2a 2a 20 54 68 65 20  c mutex..** The 
15830 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75  application shou
15840 6c 64 20 6e 65 76 65 72 20 6d 6f 64 69 66 79 20  ld never modify 
15850 61 6e 79 74 68 69 6e 67 20 77 69 74 68 69 6e 20  anything within 
15860 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 0a  the sqlite3_vfs.
15870 2a 2a 20 6f 62 6a 65 63 74 20 6f 6e 63 65 20 74  ** object once t
15880 68 65 20 6f 62 6a 65 63 74 20 68 61 73 20 62 65  he object has be
15890 65 6e 20 72 65 67 69 73 74 65 72 65 64 2e 0a 2a  en registered..*
158a0 2a 0a 2a 2a 20 54 68 65 20 7a 4e 61 6d 65 20 66  *.** The zName f
158b0 69 65 6c 64 20 68 6f 6c 64 73 20 74 68 65 20 6e  ield holds the n
158c0 61 6d 65 20 6f 66 20 74 68 65 20 56 46 53 20 6d  ame of the VFS m
158d0 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 6d 65  odule.  The name
158e0 20 6d 75 73 74 0a 2a 2a 20 62 65 20 75 6e 69 71   must.** be uniq
158f0 75 65 20 61 63 72 6f 73 73 20 61 6c 6c 20 56 46  ue across all VF
15900 53 20 6d 6f 64 75 6c 65 73 2e 0a 2a 2a 0a 2a 2a  S modules..**.**
15910 20 5b 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78   [[sqlite3_vfs.x
15920 4f 70 65 6e 5d 5d 0a 2a 2a 20 5e 53 51 4c 69 74  Open]].** ^SQLit
15930 65 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61  e guarantees tha
15940 74 20 74 68 65 20 7a 46 69 6c 65 6e 61 6d 65 20  t the zFilename 
15950 70 61 72 61 6d 65 74 65 72 20 74 6f 20 78 4f 70  parameter to xOp
15960 65 6e 0a 2a 2a 20 69 73 20 65 69 74 68 65 72 20  en.** is either 
15970 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 6f  a NULL pointer o
15980 72 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e 65  r string obtaine
15990 64 0a 2a 2a 20 66 72 6f 6d 20 78 46 75 6c 6c 50  d.** from xFullP
159a0 61 74 68 6e 61 6d 65 28 29 20 77 69 74 68 20 61  athname() with a
159b0 6e 20 6f 70 74 69 6f 6e 61 6c 20 73 75 66 66 69  n optional suffi
159c0 78 20 61 64 64 65 64 2e 0a 2a 2a 20 5e 49 66 20  x added..** ^If 
159d0 61 20 73 75 66 66 69 78 20 69 73 20 61 64 64 65  a suffix is adde
159e0 64 20 74 6f 20 74 68 65 20 7a 46 69 6c 65 6e 61  d to the zFilena
159f0 6d 65 20 70 61 72 61 6d 65 74 65 72 2c 20 69 74  me parameter, it
15a00 20 77 69 6c 6c 0a 2a 2a 20 63 6f 6e 73 69 73 74   will.** consist
15a10 20 6f 66 20 61 20 73 69 6e 67 6c 65 20 22 2d 22   of a single "-"
15a20 20 63 68 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f   character follo
15a30 77 65 64 20 62 79 20 6e 6f 20 6d 6f 72 65 20 74  wed by no more t
15a40 68 61 6e 0a 2a 2a 20 31 31 20 61 6c 70 68 61 6e  han.** 11 alphan
15a50 75 6d 65 72 69 63 20 61 6e 64 2f 6f 72 20 22 2d  umeric and/or "-
15a60 22 20 63 68 61 72 61 63 74 65 72 73 2e 0a 2a 2a  " characters..**
15a70 20 5e 53 51 4c 69 74 65 20 66 75 72 74 68 65 72   ^SQLite further
15a80 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74   guarantees that
15a90 0a 2a 2a 20 74 68 65 20 73 74 72 69 6e 67 20 77  .** the string w
15aa0 69 6c 6c 20 62 65 20 76 61 6c 69 64 20 61 6e 64  ill be valid and
15ab0 20 75 6e 63 68 61 6e 67 65 64 20 75 6e 74 69 6c   unchanged until
15ac0 20 78 43 6c 6f 73 65 28 29 20 69 73 0a 2a 2a 20   xClose() is.** 
15ad0 63 61 6c 6c 65 64 2e 20 42 65 63 61 75 73 65 20  called. Because 
15ae0 6f 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  of the previous 
15af0 73 65 6e 74 65 6e 63 65 2c 0a 2a 2a 20 74 68 65  sentence,.** the
15b00 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20   [sqlite3_file] 
15b10 63 61 6e 20 73 61 66 65 6c 79 20 73 74 6f 72 65  can safely store
15b20 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
15b30 65 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20 69 66  e.** filename if
15b40 20 69 74 20 6e 65 65 64 73 20 74 6f 20 72 65 6d   it needs to rem
15b50 65 6d 62 65 72 20 74 68 65 20 66 69 6c 65 6e 61  ember the filena
15b60 6d 65 20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73  me for some reas
15b70 6f 6e 2e 0a 2a 2a 20 49 66 20 74 68 65 20 7a 46  on..** If the zF
15b80 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65  ilename paramete
15b90 72 20 74 6f 20 78 4f 70 65 6e 20 69 73 20 61 20  r to xOpen is a 
15ba0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 65  NULL pointer the
15bb0 6e 20 78 4f 70 65 6e 0a 2a 2a 20 6d 75 73 74 20  n xOpen.** must 
15bc0 69 6e 76 65 6e 74 20 69 74 73 20 6f 77 6e 20 74  invent its own t
15bd0 65 6d 70 6f 72 61 72 79 20 6e 61 6d 65 20 66 6f  emporary name fo
15be0 72 20 74 68 65 20 66 69 6c 65 2e 20 20 5e 57 68  r the file.  ^Wh
15bf0 65 6e 65 76 65 72 20 74 68 65 20 0a 2a 2a 20 78  enever the .** x
15c00 46 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74  Filename paramet
15c10 65 72 20 69 73 20 4e 55 4c 4c 20 69 74 20 77 69  er is NULL it wi
15c20 6c 6c 20 61 6c 73 6f 20 62 65 20 74 68 65 20 63  ll also be the c
15c30 61 73 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20  ase that the.** 
15c40 66 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 20  flags parameter 
15c50 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 5b 53 51  will include [SQ
15c60 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45  LITE_OPEN_DELETE
15c70 4f 4e 43 4c 4f 53 45 5d 2e 0a 2a 2a 0a 2a 2a 20  ONCLOSE]..**.** 
15c80 54 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65  The flags argume
15c90 6e 74 20 74 6f 20 78 4f 70 65 6e 28 29 20 69 6e  nt to xOpen() in
15ca0 63 6c 75 64 65 73 20 61 6c 6c 20 62 69 74 73 20  cludes all bits 
15cb0 73 65 74 20 69 6e 0a 2a 2a 20 74 68 65 20 66 6c  set in.** the fl
15cc0 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ags argument to 
15cd0 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
15ce0 28 29 5d 2e 20 20 4f 72 20 69 66 20 5b 73 71 6c  ()].  Or if [sql
15cf0 69 74 65 33 5f 6f 70 65 6e 28 29 5d 0a 2a 2a 20  ite3_open()].** 
15d00 6f 72 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  or [sqlite3_open
15d10 31 36 28 29 5d 20 69 73 20 75 73 65 64 2c 20 74  16()] is used, t
15d20 68 65 6e 20 66 6c 61 67 73 20 69 6e 63 6c 75 64  hen flags includ
15d30 65 73 20 61 74 20 6c 65 61 73 74 0a 2a 2a 20 5b  es at least.** [
15d40 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44  SQLITE_OPEN_READ
15d50 57 52 49 54 45 5d 20 7c 20 5b 53 51 4c 49 54 45  WRITE] | [SQLITE
15d60 5f 4f 50 45 4e 5f 43 52 45 41 54 45 5d 2e 20 0a  _OPEN_CREATE]. .
15d70 2a 2a 20 49 66 20 78 4f 70 65 6e 28 29 20 6f 70  ** If xOpen() op
15d80 65 6e 73 20 61 20 66 69 6c 65 20 72 65 61 64 2d  ens a file read-
15d90 6f 6e 6c 79 20 74 68 65 6e 20 69 74 20 73 65 74  only then it set
15da0 73 20 2a 70 4f 75 74 46 6c 61 67 73 20 74 6f 0a  s *pOutFlags to.
15db0 2a 2a 20 69 6e 63 6c 75 64 65 20 5b 53 51 4c 49  ** include [SQLI
15dc0 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59  TE_OPEN_READONLY
15dd0 5d 2e 20 20 4f 74 68 65 72 20 62 69 74 73 20 69  ].  Other bits i
15de0 6e 20 2a 70 4f 75 74 46 6c 61 67 73 20 6d 61 79  n *pOutFlags may
15df0 20 62 65 20 73 65 74 2e 0a 2a 2a 0a 2a 2a 20 5e   be set..**.** ^
15e00 28 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 73  (SQLite will als
15e10 6f 20 61 64 64 20 6f 6e 65 20 6f 66 20 74 68 65  o add one of the
15e20 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6c 61 67 73   following flags
15e30 20 74 6f 20 74 68 65 20 78 4f 70 65 6e 28 29 0a   to the xOpen().
15e40 2a 2a 20 63 61 6c 6c 2c 20 64 65 70 65 6e 64 69  ** call, dependi
15e50 6e 67 20 6f 6e 20 74 68 65 20 6f 62 6a 65 63 74  ng on the object
15e60 20 62 65 69 6e 67 20 6f 70 65 6e 65 64 3a 0a 2a   being opened:.*
15e70 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69  *.** <ul>.** <li
15e80 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  >  [SQLITE_OPEN_
15e90 4d 41 49 4e 5f 44 42 5d 0a 2a 2a 20 3c 6c 69 3e  MAIN_DB].** <li>
15ea0 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d    [SQLITE_OPEN_M
15eb0 41 49 4e 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20  AIN_JOURNAL].** 
15ec0 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50  <li>  [SQLITE_OP
15ed0 45 4e 5f 54 45 4d 50 5f 44 42 5d 0a 2a 2a 20 3c  EN_TEMP_DB].** <
15ee0 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
15ef0 4e 5f 54 45 4d 50 5f 4a 4f 55 52 4e 41 4c 5d 0a  N_TEMP_JOURNAL].
15f00 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45  ** <li>  [SQLITE
15f10 5f 4f 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54 5f  _OPEN_TRANSIENT_
15f20 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51  DB].** <li>  [SQ
15f30 4c 49 54 45 5f 4f 50 45 4e 5f 53 55 42 4a 4f 55  LITE_OPEN_SUBJOU
15f40 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b  RNAL].** <li>  [
15f50 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 53 54  SQLITE_OPEN_MAST
15f60 45 52 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c  ER_JOURNAL].** <
15f70 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
15f80 4e 5f 57 41 4c 5d 0a 2a 2a 20 3c 2f 75 6c 3e 29  N_WAL].** </ul>)
15f90 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 6c 65  ^.**.** The file
15fa0 20 49 2f 4f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   I/O implementat
15fb0 69 6f 6e 20 63 61 6e 20 75 73 65 20 74 68 65 20  ion can use the 
15fc0 6f 62 6a 65 63 74 20 74 79 70 65 20 66 6c 61 67  object type flag
15fd0 73 20 74 6f 0a 2a 2a 20 63 68 61 6e 67 65 20 74  s to.** change t
15fe0 68 65 20 77 61 79 20 69 74 20 64 65 61 6c 73 20  he way it deals 
15ff0 77 69 74 68 20 66 69 6c 65 73 2e 20 20 46 6f 72  with files.  For
16000 20 65 78 61 6d 70 6c 65 2c 20 61 6e 20 61 70 70   example, an app
16010 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 74 68 61 74  lication.** that
16020 20 64 6f 65 73 20 6e 6f 74 20 63 61 72 65 20 61   does not care a
16030 62 6f 75 74 20 63 72 61 73 68 20 72 65 63 6f 76  bout crash recov
16040 65 72 79 20 6f 72 20 72 6f 6c 6c 62 61 63 6b 20  ery or rollback 
16050 6d 69 67 68 74 20 6d 61 6b 65 0a 2a 2a 20 74 68  might make.** th
16060 65 20 6f 70 65 6e 20 6f 66 20 61 20 6a 6f 75 72  e open of a jour
16070 6e 61 6c 20 66 69 6c 65 20 61 20 6e 6f 2d 6f 70  nal file a no-op
16080 2e 20 20 57 72 69 74 65 73 20 74 6f 20 74 68 69  .  Writes to thi
16090 73 20 6a 6f 75 72 6e 61 6c 20 77 6f 75 6c 64 0a  s journal would.
160a0 2a 2a 20 61 6c 73 6f 20 62 65 20 6e 6f 2d 6f 70  ** also be no-op
160b0 73 2c 20 61 6e 64 20 61 6e 79 20 61 74 74 65 6d  s, and any attem
160c0 70 74 20 74 6f 20 72 65 61 64 20 74 68 65 20 6a  pt to read the j
160d0 6f 75 72 6e 61 6c 20 77 6f 75 6c 64 20 72 65 74  ournal would ret
160e0 75 72 6e 0a 2a 2a 20 53 51 4c 49 54 45 5f 49 4f  urn.** SQLITE_IO
160f0 45 52 52 2e 20 20 4f 72 20 74 68 65 20 69 6d 70  ERR.  Or the imp
16100 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 69 67 68  lementation migh
16110 74 20 72 65 63 6f 67 6e 69 7a 65 20 74 68 61 74  t recognize that
16120 20 61 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 66   a database.** f
16130 69 6c 65 20 77 69 6c 6c 20 62 65 20 64 6f 69 6e  ile will be doin
16140 67 20 70 61 67 65 2d 61 6c 69 67 6e 65 64 20 73  g page-aligned s
16150 65 63 74 6f 72 20 72 65 61 64 73 20 61 6e 64 20  ector reads and 
16160 77 72 69 74 65 73 20 69 6e 20 61 20 72 61 6e 64  writes in a rand
16170 6f 6d 0a 2a 2a 20 6f 72 64 65 72 20 61 6e 64 20  om.** order and 
16180 73 65 74 20 75 70 20 69 74 73 20 49 2f 4f 20 73  set up its I/O s
16190 75 62 73 79 73 74 65 6d 20 61 63 63 6f 72 64 69  ubsystem accordi
161a0 6e 67 6c 79 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  ngly..**.** SQLi
161b0 74 65 20 6d 69 67 68 74 20 61 6c 73 6f 20 61 64  te might also ad
161c0 64 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c  d one of the fol
161d0 6c 6f 77 69 6e 67 20 66 6c 61 67 73 20 74 6f 20  lowing flags to 
161e0 74 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64  the xOpen method
161f0 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20  :.**.** <ul>.** 
16200 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 50 45  <li> [SQLITE_OPE
16210 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d  N_DELETEONCLOSE]
16220 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
16230 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 5d  _OPEN_EXCLUSIVE]
16240 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20  .** </ul>.**.** 
16250 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  The [SQLITE_OPEN
16260 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 20  _DELETEONCLOSE] 
16270 66 6c 61 67 20 6d 65 61 6e 73 20 74 68 65 20 66  flag means the f
16280 69 6c 65 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a  ile should be.**
16290 20 64 65 6c 65 74 65 64 20 77 68 65 6e 20 69 74   deleted when it
162a0 20 69 73 20 63 6c 6f 73 65 64 2e 20 20 5e 54 68   is closed.  ^Th
162b0 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44  e [SQLITE_OPEN_D
162c0 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 0a 2a 2a  ELETEONCLOSE].**
162d0 20 77 69 6c 6c 20 62 65 20 73 65 74 20 66 6f 72   will be set for
162e0 20 54 45 4d 50 20 64 61 74 61 62 61 73 65 73 20   TEMP databases 
162f0 61 6e 64 20 74 68 65 69 72 20 6a 6f 75 72 6e 61  and their journa
16300 6c 73 2c 20 74 72 61 6e 73 69 65 6e 74 0a 2a 2a  ls, transient.**
16310 20 64 61 74 61 62 61 73 65 73 2c 20 61 6e 64 20   databases, and 
16320 73 75 62 6a 6f 75 72 6e 61 6c 73 2e 0a 2a 2a 0a  subjournals..**.
16330 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f  ** ^The [SQLITE_
16340 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 5d 20  OPEN_EXCLUSIVE] 
16350 66 6c 61 67 20 69 73 20 61 6c 77 61 79 73 20 75  flag is always u
16360 73 65 64 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69  sed in conjuncti
16370 6f 6e 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 5b  on.** with the [
16380 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41  SQLITE_OPEN_CREA
16390 54 45 5d 20 66 6c 61 67 2c 20 77 68 69 63 68 20  TE] flag, which 
163a0 61 72 65 20 62 6f 74 68 20 64 69 72 65 63 74 6c  are both directl
163b0 79 0a 2a 2a 20 61 6e 61 6c 6f 67 6f 75 73 20 74  y.** analogous t
163c0 6f 20 74 68 65 20 4f 5f 45 58 43 4c 20 61 6e 64  o the O_EXCL and
163d0 20 4f 5f 43 52 45 41 54 20 66 6c 61 67 73 20 6f   O_CREAT flags o
163e0 66 20 74 68 65 20 50 4f 53 49 58 20 6f 70 65 6e  f the POSIX open
163f0 28 29 0a 2a 2a 20 41 50 49 2e 20 20 54 68 65 20  ().** API.  The 
16400 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c  SQLITE_OPEN_EXCL
16410 55 53 49 56 45 20 66 6c 61 67 2c 20 77 68 65 6e  USIVE flag, when
16420 20 70 61 69 72 65 64 20 77 69 74 68 20 74 68 65   paired with the
16430 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 4f 50 45 4e   .** SQLITE_OPEN
16440 5f 43 52 45 41 54 45 2c 20 69 73 20 75 73 65 64  _CREATE, is used
16450 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61   to indicate tha
16460 74 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 61 6c  t file should al
16470 77 61 79 73 0a 2a 2a 20 62 65 20 63 72 65 61 74  ways.** be creat
16480 65 64 2c 20 61 6e 64 20 74 68 61 74 20 69 74 20  ed, and that it 
16490 69 73 20 61 6e 20 65 72 72 6f 72 20 69 66 20 69  is an error if i
164a0 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73  t already exists
164b0 2e 0a 2a 2a 20 49 74 20 69 73 20 3c 69 3e 6e 6f  ..** It is <i>no
164c0 74 3c 2f 69 3e 20 75 73 65 64 20 74 6f 20 69 6e  t</i> used to in
164d0 64 69 63 61 74 65 20 74 68 65 20 66 69 6c 65 20  dicate the file 
164e0 73 68 6f 75 6c 64 20 62 65 20 6f 70 65 6e 65 64  should be opened
164f0 20 0a 2a 2a 20 66 6f 72 20 65 78 63 6c 75 73 69   .** for exclusi
16500 76 65 20 61 63 63 65 73 73 2e 0a 2a 2a 0a 2a 2a  ve access..**.**
16510 20 5e 41 74 20 6c 65 61 73 74 20 73 7a 4f 73 46   ^At least szOsF
16520 69 6c 65 20 62 79 74 65 73 20 6f 66 20 6d 65 6d  ile bytes of mem
16530 6f 72 79 20 61 72 65 20 61 6c 6c 6f 63 61 74 65  ory are allocate
16540 64 20 62 79 20 53 51 4c 69 74 65 0a 2a 2a 20 74  d by SQLite.** t
16550 6f 20 68 6f 6c 64 20 74 68 65 20 20 5b 73 71 6c  o hold the  [sql
16560 69 74 65 33 5f 66 69 6c 65 5d 20 73 74 72 75 63  ite3_file] struc
16570 74 75 72 65 20 70 61 73 73 65 64 20 61 73 20 74  ture passed as t
16580 68 65 20 74 68 69 72 64 0a 2a 2a 20 61 72 67 75  he third.** argu
16590 6d 65 6e 74 20 74 6f 20 78 4f 70 65 6e 2e 20 20  ment to xOpen.  
165a0 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64  The xOpen method
165b0 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 74   does not have t
165c0 6f 0a 2a 2a 20 61 6c 6c 6f 63 61 74 65 20 74 68  o.** allocate th
165d0 65 20 73 74 72 75 63 74 75 72 65 3b 20 69 74 20  e structure; it 
165e0 73 68 6f 75 6c 64 20 6a 75 73 74 20 66 69 6c 6c  should just fill
165f0 20 69 74 20 69 6e 2e 20 20 4e 6f 74 65 20 74 68   it in.  Note th
16600 61 74 0a 2a 2a 20 74 68 65 20 78 4f 70 65 6e 20  at.** the xOpen 
16610 6d 65 74 68 6f 64 20 6d 75 73 74 20 73 65 74 20  method must set 
16620 74 68 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  the sqlite3_file
16630 2e 70 4d 65 74 68 6f 64 73 20 74 6f 20 65 69 74  .pMethods to eit
16640 68 65 72 0a 2a 2a 20 61 20 76 61 6c 69 64 20 5b  her.** a valid [
16650 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f  sqlite3_io_metho
16660 64 73 5d 20 6f 62 6a 65 63 74 20 6f 72 20 74 6f  ds] object or to
16670 20 4e 55 4c 4c 2e 20 20 78 4f 70 65 6e 20 6d 75   NULL.  xOpen mu
16680 73 74 20 64 6f 0a 2a 2a 20 74 68 69 73 20 65 76  st do.** this ev
16690 65 6e 20 69 66 20 74 68 65 20 6f 70 65 6e 20 66  en if the open f
166a0 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20 65 78  ails.  SQLite ex
166b0 70 65 63 74 73 20 74 68 61 74 20 74 68 65 20 73  pects that the s
166c0 71 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74  qlite3_file.pMet
166d0 68 6f 64 73 0a 2a 2a 20 65 6c 65 6d 65 6e 74 20  hods.** element 
166e0 77 69 6c 6c 20 62 65 20 76 61 6c 69 64 20 61 66  will be valid af
166f0 74 65 72 20 78 4f 70 65 6e 20 72 65 74 75 72 6e  ter xOpen return
16700 73 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  s regardless of 
16710 74 68 65 20 73 75 63 63 65 73 73 0a 2a 2a 20 6f  the success.** o
16720 72 20 66 61 69 6c 75 72 65 20 6f 66 20 74 68 65  r failure of the
16730 20 78 4f 70 65 6e 20 63 61 6c 6c 2e 0a 2a 2a 0a   xOpen call..**.
16740 2a 2a 20 5b 5b 73 71 6c 69 74 65 33 5f 76 66 73  ** [[sqlite3_vfs
16750 2e 78 41 63 63 65 73 73 5d 5d 0a 2a 2a 20 5e 54  .xAccess]].** ^T
16760 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e  he flags argumen
16770 74 20 74 6f 20 78 41 63 63 65 73 73 28 29 20 6d  t to xAccess() m
16780 61 79 20 62 65 20 5b 53 51 4c 49 54 45 5f 41 43  ay be [SQLITE_AC
16790 43 45 53 53 5f 45 58 49 53 54 53 5d 0a 2a 2a 20  CESS_EXISTS].** 
167a0 74 6f 20 74 65 73 74 20 66 6f 72 20 74 68 65 20  to test for the 
167b0 65 78 69 73 74 65 6e 63 65 20 6f 66 20 61 20 66  existence of a f
167c0 69 6c 65 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f  ile, or [SQLITE_
167d0 41 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45  ACCESS_READWRITE
167e0 5d 20 74 6f 0a 2a 2a 20 74 65 73 74 20 77 68 65  ] to.** test whe
167f0 74 68 65 72 20 61 20 66 69 6c 65 20 69 73 20 72  ther a file is r
16800 65 61 64 61 62 6c 65 20 61 6e 64 20 77 72 69 74  eadable and writ
16810 61 62 6c 65 2c 20 6f 72 20 5b 53 51 4c 49 54 45  able, or [SQLITE
16820 5f 41 43 43 45 53 53 5f 52 45 41 44 5d 0a 2a 2a  _ACCESS_READ].**
16830 20 74 6f 20 74 65 73 74 20 77 68 65 74 68 65 72   to test whether
16840 20 61 20 66 69 6c 65 20 69 73 20 61 74 20 6c 65   a file is at le
16850 61 73 74 20 72 65 61 64 61 62 6c 65 2e 20 20 54  ast readable.  T
16860 68 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53  he SQLITE_ACCESS
16870 5f 52 45 41 44 0a 2a 2a 20 66 6c 61 67 20 69 73  _READ.** flag is
16880 20 6e 65 76 65 72 20 61 63 74 75 61 6c 6c 79 20   never actually 
16890 75 73 65 64 20 61 6e 64 20 69 73 20 6e 6f 74 20  used and is not 
168a0 69 6d 70 6c 65 6d 65 6e 74 65 64 20 69 6e 20 74  implemented in t
168b0 68 65 20 62 75 69 6c 74 2d 69 6e 0a 2a 2a 20 56  he built-in.** V
168c0 46 53 65 73 20 6f 66 20 53 51 4c 69 74 65 2e 20  FSes of SQLite. 
168d0 20 54 68 65 20 66 69 6c 65 20 69 73 20 6e 61 6d   The file is nam
168e0 65 64 20 62 79 20 74 68 65 20 73 65 63 6f 6e 64  ed by the second
168f0 20 61 72 67 75 6d 65 6e 74 20 61 6e 64 20 63 61   argument and ca
16900 6e 20 62 65 20 61 0a 2a 2a 20 64 69 72 65 63 74  n be a.** direct
16910 6f 72 79 2e 20 54 68 65 20 78 41 63 63 65 73 73  ory. The xAccess
16920 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20   method returns 
16930 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 6e 20 73  [SQLITE_OK] on s
16940 75 63 63 65 73 73 20 6f 72 20 73 6f 6d 65 0a 2a  uccess or some.*
16950 2a 20 6e 6f 6e 2d 7a 65 72 6f 20 65 72 72 6f 72  * non-zero error
16960 20 63 6f 64 65 20 69 66 20 74 68 65 72 65 20 69   code if there i
16970 73 20 61 6e 20 49 2f 4f 20 65 72 72 6f 72 20 6f  s an I/O error o
16980 72 20 69 66 20 74 68 65 20 6e 61 6d 65 20 6f 66  r if the name of
16990 0a 2a 2a 20 74 68 65 20 66 69 6c 65 20 67 69 76  .** the file giv
169a0 65 6e 20 69 6e 20 74 68 65 20 73 65 63 6f 6e 64  en in the second
169b0 20 61 72 67 75 6d 65 6e 74 20 69 73 20 69 6c 6c   argument is ill
169c0 65 67 61 6c 2e 20 20 49 66 20 53 51 4c 49 54 45  egal.  If SQLITE
169d0 5f 4f 4b 0a 2a 2a 20 69 73 20 72 65 74 75 72 6e  _OK.** is return
169e0 65 64 2c 20 74 68 65 6e 20 6e 6f 6e 2d 7a 65 72  ed, then non-zer
169f0 6f 20 6f 72 20 7a 65 72 6f 20 69 73 20 77 72 69  o or zero is wri
16a00 74 74 65 6e 20 69 6e 74 6f 20 2a 70 52 65 73 4f  tten into *pResO
16a10 75 74 20 74 6f 20 69 6e 64 69 63 61 74 65 0a 2a  ut to indicate.*
16a20 2a 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  * whether or not
16a30 20 74 68 65 20 66 69 6c 65 20 69 73 20 61 63 63   the file is acc
16a40 65 73 73 69 62 6c 65 2e 20 20 0a 2a 2a 0a 2a 2a  essible.  .**.**
16a50 20 5e 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c   ^SQLite will al
16a60 77 61 79 73 20 61 6c 6c 6f 63 61 74 65 20 61 74  ways allocate at
16a70 20 6c 65 61 73 74 20 6d 78 50 61 74 68 6e 61 6d   least mxPathnam
16a80 65 2b 31 20 62 79 74 65 73 20 66 6f 72 20 74 68  e+1 bytes for th
16a90 65 0a 2a 2a 20 6f 75 74 70 75 74 20 62 75 66 66  e.** output buff
16aa0 65 72 20 78 46 75 6c 6c 50 61 74 68 6e 61 6d 65  er xFullPathname
16ab0 2e 20 20 54 68 65 20 65 78 61 63 74 20 73 69 7a  .  The exact siz
16ac0 65 20 6f 66 20 74 68 65 20 6f 75 74 70 75 74 20  e of the output 
16ad0 62 75 66 66 65 72 0a 2a 2a 20 69 73 20 61 6c 73  buffer.** is als
16ae0 6f 20 70 61 73 73 65 64 20 61 73 20 61 20 70 61  o passed as a pa
16af0 72 61 6d 65 74 65 72 20 74 6f 20 62 6f 74 68 20  rameter to both 
16b00 20 6d 65 74 68 6f 64 73 2e 20 49 66 20 74 68 65   methods. If the
16b10 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 0a 2a   output buffer.*
16b20 2a 20 69 73 20 6e 6f 74 20 6c 61 72 67 65 20 65  * is not large e
16b30 6e 6f 75 67 68 2c 20 5b 53 51 4c 49 54 45 5f 43  nough, [SQLITE_C
16b40 41 4e 54 4f 50 45 4e 5d 20 73 68 6f 75 6c 64 20  ANTOPEN] should 
16b50 62 65 20 72 65 74 75 72 6e 65 64 2e 20 53 69 6e  be returned. Sin
16b60 63 65 20 74 68 69 73 20 69 73 0a 2a 2a 20 68 61  ce this is.** ha
16b70 6e 64 6c 65 64 20 61 73 20 61 20 66 61 74 61 6c  ndled as a fatal
16b80 20 65 72 72 6f 72 20 62 79 20 53 51 4c 69 74 65   error by SQLite
16b90 2c 20 76 66 73 20 69 6d 70 6c 65 6d 65 6e 74 61  , vfs implementa
16ba0 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 65 6e 64  tions should end
16bb0 65 61 76 6f 72 0a 2a 2a 20 74 6f 20 70 72 65 76  eavor.** to prev
16bc0 65 6e 74 20 74 68 69 73 20 62 79 20 73 65 74 74  ent this by sett
16bd0 69 6e 67 20 6d 78 50 61 74 68 6e 61 6d 65 20 74  ing mxPathname t
16be0 6f 20 61 20 73 75 66 66 69 63 69 65 6e 74 6c 79  o a sufficiently
16bf0 20 6c 61 72 67 65 20 76 61 6c 75 65 2e 0a 2a 2a   large value..**
16c00 0a 2a 2a 20 54 68 65 20 78 52 61 6e 64 6f 6d 6e  .** The xRandomn
16c10 65 73 73 28 29 2c 20 78 53 6c 65 65 70 28 29 2c  ess(), xSleep(),
16c20 20 78 43 75 72 72 65 6e 74 54 69 6d 65 28 29 2c   xCurrentTime(),
16c30 20 61 6e 64 20 78 43 75 72 72 65 6e 74 54 69 6d   and xCurrentTim
16c40 65 49 6e 74 36 34 28 29 0a 2a 2a 20 69 6e 74 65  eInt64().** inte
16c50 72 66 61 63 65 73 20 61 72 65 20 6e 6f 74 20 73  rfaces are not s
16c60 74 72 69 63 74 6c 79 20 61 20 70 61 72 74 20 6f  trictly a part o
16c70 66 20 74 68 65 20 66 69 6c 65 73 79 73 74 65 6d  f the filesystem
16c80 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 0a 2a  , but they are.*
16c90 2a 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68  * included in th
16ca0 65 20 56 46 53 20 73 74 72 75 63 74 75 72 65 20  e VFS structure 
16cb0 66 6f 72 20 63 6f 6d 70 6c 65 74 65 6e 65 73 73  for completeness
16cc0 2e 0a 2a 2a 20 54 68 65 20 78 52 61 6e 64 6f 6d  ..** The xRandom
16cd0 6e 65 73 73 28 29 20 66 75 6e 63 74 69 6f 6e 20  ness() function 
16ce0 61 74 74 65 6d 70 74 73 20 74 6f 20 72 65 74 75  attempts to retu
16cf0 72 6e 20 6e 42 79 74 65 73 20 62 79 74 65 73 0a  rn nBytes bytes.
16d00 2a 2a 20 6f 66 20 67 6f 6f 64 2d 71 75 61 6c 69  ** of good-quali
16d10 74 79 20 72 61 6e 64 6f 6d 6e 65 73 73 20 69 6e  ty randomness in
16d20 74 6f 20 7a 4f 75 74 2e 20 20 54 68 65 20 72 65  to zOut.  The re
16d30 74 75 72 6e 20 76 61 6c 75 65 20 69 73 0a 2a 2a  turn value is.**
16d40 20 74 68 65 20 61 63 74 75 61 6c 20 6e 75 6d 62   the actual numb
16d50 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66 20 72  er of bytes of r
16d60 61 6e 64 6f 6d 6e 65 73 73 20 6f 62 74 61 69 6e  andomness obtain
16d70 65 64 2e 0a 2a 2a 20 54 68 65 20 78 53 6c 65 65  ed..** The xSlee
16d80 70 28 29 20 6d 65 74 68 6f 64 20 63 61 75 73 65  p() method cause
16d90 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 74 68  s the calling th
16da0 72 65 61 64 20 74 6f 20 73 6c 65 65 70 20 66 6f  read to sleep fo
16db0 72 20 61 74 0a 2a 2a 20 6c 65 61 73 74 20 74 68  r at.** least th
16dc0 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69 63 72  e number of micr
16dd0 6f 73 65 63 6f 6e 64 73 20 67 69 76 65 6e 2e 20  oseconds given. 
16de0 20 5e 54 68 65 20 78 43 75 72 72 65 6e 74 54 69   ^The xCurrentTi
16df0 6d 65 28 29 0a 2a 2a 20 6d 65 74 68 6f 64 20 72  me().** method r
16e00 65 74 75 72 6e 73 20 61 20 4a 75 6c 69 61 6e 20  eturns a Julian 
16e10 44 61 79 20 4e 75 6d 62 65 72 20 66 6f 72 20 74  Day Number for t
16e20 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 65 20  he current date 
16e30 61 6e 64 20 74 69 6d 65 20 61 73 0a 2a 2a 20 61  and time as.** a
16e40 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
16e50 76 61 6c 75 65 2e 0a 2a 2a 20 5e 54 68 65 20 78  value..** ^The x
16e60 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36 34  CurrentTimeInt64
16e70 28 29 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  () method return
16e80 73 2c 20 61 73 20 61 6e 20 69 6e 74 65 67 65 72  s, as an integer
16e90 2c 20 74 68 65 20 4a 75 6c 69 61 6e 0a 2a 2a 20  , the Julian.** 
16ea0 44 61 79 20 4e 75 6d 62 65 72 20 6d 75 6c 74 69  Day Number multi
16eb0 70 6c 69 65 64 20 62 79 20 38 36 34 30 30 30 30  plied by 8640000
16ec0 30 20 28 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  0 (the number of
16ed0 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 69 6e   milliseconds in
16ee0 20 0a 2a 2a 20 61 20 32 34 2d 68 6f 75 72 20 64   .** a 24-hour d
16ef0 61 79 29 2e 20 20 0a 2a 2a 20 5e 53 51 4c 69 74  ay).  .** ^SQLit
16f00 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20 78  e will use the x
16f10 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36 34  CurrentTimeInt64
16f20 28 29 20 6d 65 74 68 6f 64 20 74 6f 20 67 65 74  () method to get
16f30 20 74 68 65 20 63 75 72 72 65 6e 74 0a 2a 2a 20   the current.** 
16f40 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 69 66  date and time if
16f50 20 74 68 61 74 20 6d 65 74 68 6f 64 20 69 73 20   that method is 
16f60 61 76 61 69 6c 61 62 6c 65 20 28 69 66 20 69 56  available (if iV
16f70 65 72 73 69 6f 6e 20 69 73 20 32 20 6f 72 20 0a  ersion is 2 or .
16f80 2a 2a 20 67 72 65 61 74 65 72 20 61 6e 64 20 74  ** greater and t
16f90 68 65 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e  he function poin
16fa0 74 65 72 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 29  ter is not NULL)
16fb0 20 61 6e 64 20 77 69 6c 6c 20 66 61 6c 6c 20 62   and will fall b
16fc0 61 63 6b 0a 2a 2a 20 74 6f 20 78 43 75 72 72 65  ack.** to xCurre
16fd0 6e 74 54 69 6d 65 28 29 20 69 66 20 78 43 75 72  ntTime() if xCur
16fe0 72 65 6e 74 54 69 6d 65 49 6e 74 36 34 28 29 20  rentTimeInt64() 
16ff0 69 73 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e 0a  is unavailable..
17000 2a 2a 0a 2a 2a 20 5e 54 68 65 20 78 53 65 74 53  **.** ^The xSetS
17010 79 73 74 65 6d 43 61 6c 6c 28 29 2c 20 78 47 65  ystemCall(), xGe
17020 74 53 79 73 74 65 6d 43 61 6c 6c 28 29 2c 20 61  tSystemCall(), a
17030 6e 64 20 78 4e 65 73 74 53 79 73 74 65 6d 43 61  nd xNestSystemCa
17040 6c 6c 28 29 20 69 6e 74 65 72 66 61 63 65 73 0a  ll() interfaces.
17050 2a 2a 20 61 72 65 20 6e 6f 74 20 75 73 65 64 20  ** are not used 
17060 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  by the SQLite co
17070 72 65 2e 20 20 54 68 65 73 65 20 6f 70 74 69 6f  re.  These optio
17080 6e 61 6c 20 69 6e 74 65 72 66 61 63 65 73 20 61  nal interfaces a
17090 72 65 20 70 72 6f 76 69 64 65 64 0a 2a 2a 20 62  re provided.** b
170a0 79 20 73 6f 6d 65 20 56 46 53 65 73 20 74 6f 20  y some VFSes to 
170b0 66 61 63 69 6c 69 74 61 74 65 20 74 65 73 74 69  facilitate testi
170c0 6e 67 20 6f 66 20 74 68 65 20 56 46 53 20 63 6f  ng of the VFS co
170d0 64 65 2e 20 42 79 20 6f 76 65 72 72 69 64 69 6e  de. By overridin
170e0 67 20 0a 2a 2a 20 73 79 73 74 65 6d 20 63 61 6c  g .** system cal
170f0 6c 73 20 77 69 74 68 20 66 75 6e 63 74 69 6f 6e  ls with function
17100 73 20 75 6e 64 65 72 20 69 74 73 20 63 6f 6e 74  s under its cont
17110 72 6f 6c 2c 20 61 20 74 65 73 74 20 70 72 6f 67  rol, a test prog
17120 72 61 6d 20 63 61 6e 0a 2a 2a 20 73 69 6d 75 6c  ram can.** simul
17130 61 74 65 20 66 61 75 6c 74 73 20 61 6e 64 20 65  ate faults and e
17140 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73 20  rror conditions 
17150 74 68 61 74 20 77 6f 75 6c 64 20 6f 74 68 65 72  that would other
17160 77 69 73 65 20 62 65 20 64 69 66 66 69 63 75 6c  wise be difficul
17170 74 0a 2a 2a 20 6f 72 20 69 6d 70 6f 73 73 69 62  t.** or impossib
17180 6c 65 20 74 6f 20 69 6e 64 75 63 65 2e 20 20 54  le to induce.  T
17190 68 65 20 73 65 74 20 6f 66 20 73 79 73 74 65 6d  he set of system
171a0 20 63 61 6c 6c 73 20 74 68 61 74 20 63 61 6e 20   calls that can 
171b0 62 65 20 6f 76 65 72 72 69 64 64 65 6e 0a 2a 2a  be overridden.**
171c0 20 76 61 72 69 65 73 20 66 72 6f 6d 20 6f 6e 65   varies from one
171d0 20 56 46 53 20 74 6f 20 61 6e 6f 74 68 65 72 2c   VFS to another,
171e0 20 61 6e 64 20 66 72 6f 6d 20 6f 6e 65 20 76 65   and from one ve
171f0 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 73 61 6d  rsion of the sam
17200 65 20 56 46 53 20 74 6f 20 74 68 65 0a 2a 2a 20  e VFS to the.** 
17210 6e 65 78 74 2e 20 20 41 70 70 6c 69 63 61 74 69  next.  Applicati
17220 6f 6e 73 20 74 68 61 74 20 75 73 65 20 74 68 65  ons that use the
17230 73 65 20 69 6e 74 65 72 66 61 63 65 73 20 6d 75  se interfaces mu
17240 73 74 20 62 65 20 70 72 65 70 61 72 65 64 20 66  st be prepared f
17250 6f 72 20 61 6e 79 0a 2a 2a 20 6f 72 20 61 6c 6c  or any.** or all
17260 20 6f 66 20 74 68 65 73 65 20 69 6e 74 65 72 66   of these interf
17270 61 63 65 73 20 74 6f 20 62 65 20 4e 55 4c 4c 20  aces to be NULL 
17280 6f 72 20 66 6f 72 20 74 68 65 69 72 20 62 65 68  or for their beh
17290 61 76 69 6f 72 20 74 6f 20 63 68 61 6e 67 65 0a  avior to change.
172a0 2a 2a 20 66 72 6f 6d 20 6f 6e 65 20 72 65 6c 65  ** from one rele
172b0 61 73 65 20 74 6f 20 74 68 65 20 6e 65 78 74 2e  ase to the next.
172c0 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d    Applications m
172d0 75 73 74 20 6e 6f 74 20 61 74 74 65 6d 70 74 20  ust not attempt 
172e0 74 6f 20 61 63 63 65 73 73 0a 2a 2a 20 61 6e 79  to access.** any
172f0 20 6f 66 20 74 68 65 73 65 20 6d 65 74 68 6f 64   of these method
17300 73 20 69 66 20 74 68 65 20 69 56 65 72 73 69 6f  s if the iVersio
17310 6e 20 6f 66 20 74 68 65 20 56 46 53 20 69 73 20  n of the VFS is 
17320 6c 65 73 73 20 74 68 61 6e 20 33 2e 0a 2a 2f 0a  less than 3..*/.
17330 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73  typedef struct s
17340 71 6c 69 74 65 33 5f 76 66 73 20 73 71 6c 69 74  qlite3_vfs sqlit
17350 65 33 5f 76 66 73 3b 0a 74 79 70 65 64 65 66 20  e3_vfs;.typedef 
17360 76 6f 69 64 20 28 2a 73 71 6c 69 74 65 33 5f 73  void (*sqlite3_s
17370 79 73 63 61 6c 6c 5f 70 74 72 29 28 76 6f 69 64  yscall_ptr)(void
17380 29 3b 0a 73 74 72 75 63 74 20 73 71 6c 69 74 65  );.struct sqlite
17390 33 5f 76 66 73 20 7b 0a 20 20 69 6e 74 20 69 56  3_vfs {.  int iV
173a0 65 72 73 69 6f 6e 3b 20 20 20 20 20 20 20 20 20  ersion;         
173b0 20 20 20 2f 2a 20 53 74 72 75 63 74 75 72 65 20     /* Structure 
173c0 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 28  version number (
173d0 63 75 72 72 65 6e 74 6c 79 20 33 29 20 2a 2f 0a  currently 3) */.
173e0 20 20 69 6e 74 20 73 7a 4f 73 46 69 6c 65 3b 20    int szOsFile; 
173f0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 53 69             /* Si
17400 7a 65 20 6f 66 20 73 75 62 63 6c 61 73 73 65 64  ze of subclassed
17410 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 20 2a 2f   sqlite3_file */
17420 0a 20 20 69 6e 74 20 6d 78 50 61 74 68 6e 61 6d  .  int mxPathnam
17430 65 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d  e;          /* M
17440 61 78 69 6d 75 6d 20 66 69 6c 65 20 70 61 74 68  aximum file path
17450 6e 61 6d 65 20 6c 65 6e 67 74 68 20 2a 2f 0a 20  name length */. 
17460 20 73 71 6c 69 74 65 33 5f 76 66 73 20 2a 70 4e   sqlite3_vfs *pN
17470 65 78 74 3b 20 20 20 20 20 20 2f 2a 20 4e 65 78  ext;      /* Nex
17480 74 20 72 65 67 69 73 74 65 72 65 64 20 56 46 53  t registered VFS
17490 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   */.  const char
174a0 20 2a 7a 4e 61 6d 65 3b 20 20 20 20 20 20 20 2f   *zName;       /
174b0 2a 20 4e 61 6d 65 20 6f 66 20 74 68 69 73 20 76  * Name of this v
174c0 69 72 74 75 61 6c 20 66 69 6c 65 20 73 79 73 74  irtual file syst
174d0 65 6d 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 70 41  em */.  void *pA
174e0 70 70 44 61 74 61 3b 20 20 20 20 20 20 20 20 20  ppData;         
174f0 20 2f 2a 20 50 6f 69 6e 74 65 72 20 74 6f 20 61   /* Pointer to a
17500 70 70 6c 69 63 61 74 69 6f 6e 2d 73 70 65 63 69  pplication-speci
17510 66 69 63 20 64 61 74 61 20 2a 2f 0a 20 20 69 6e  fic data */.  in
17520 74 20 28 2a 78 4f 70 65 6e 29 28 73 71 6c 69 74  t (*xOpen)(sqlit
17530 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63  e3_vfs*, const c
17540 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 73 71 6c 69  har *zName, sqli
17550 74 65 33 5f 66 69 6c 65 2a 2c 0a 20 20 20 20 20  te3_file*,.     
17560 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 66 6c            int fl
17570 61 67 73 2c 20 69 6e 74 20 2a 70 4f 75 74 46 6c  ags, int *pOutFl
17580 61 67 73 29 3b 0a 20 20 69 6e 74 20 28 2a 78 44  ags);.  int (*xD
17590 65 6c 65 74 65 29 28 73 71 6c 69 74 65 33 5f 76  elete)(sqlite3_v
175a0 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  fs*, const char 
175b0 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 73 79 6e 63  *zName, int sync
175c0 44 69 72 29 3b 0a 20 20 69 6e 74 20 28 2a 78 41  Dir);.  int (*xA
175d0 63 63 65 73 73 29 28 73 71 6c 69 74 65 33 5f 76  ccess)(sqlite3_v
175e0 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  fs*, const char 
175f0 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 66 6c 61 67  *zName, int flag
17600 73 2c 20 69 6e 74 20 2a 70 52 65 73 4f 75 74 29  s, int *pResOut)
17610 3b 0a 20 20 69 6e 74 20 28 2a 78 46 75 6c 6c 50  ;.  int (*xFullP
17620 61 74 68 6e 61 6d 65 29 28 73 71 6c 69 74 65 33  athname)(sqlite3
17630 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61  _vfs*, const cha
17640 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 4f  r *zName, int nO
17650 75 74 2c 20 63 68 61 72 20 2a 7a 4f 75 74 29 3b  ut, char *zOut);
17660 0a 20 20 76 6f 69 64 20 2a 28 2a 78 44 6c 4f 70  .  void *(*xDlOp
17670 65 6e 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  en)(sqlite3_vfs*
17680 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46  , const char *zF
17690 69 6c 65 6e 61 6d 65 29 3b 0a 20 20 76 6f 69 64  ilename);.  void
176a0 20 28 2a 78 44 6c 45 72 72 6f 72 29 28 73 71 6c   (*xDlError)(sql
176b0 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74 20 6e  ite3_vfs*, int n
176c0 42 79 74 65 2c 20 63 68 61 72 20 2a 7a 45 72 72  Byte, char *zErr
176d0 4d 73 67 29 3b 0a 20 20 76 6f 69 64 20 28 2a 28  Msg);.  void (*(
176e0 2a 78 44 6c 53 79 6d 29 28 73 71 6c 69 74 65 33  *xDlSym)(sqlite3
176f0 5f 76 66 73 2a 2c 76 6f 69 64 2a 2c 20 63 6f 6e  _vfs*,void*, con
17700 73 74 20 63 68 61 72 20 2a 7a 53 79 6d 62 6f 6c  st char *zSymbol
17710 29 29 28 76 6f 69 64 29 3b 0a 20 20 76 6f 69 64  ))(void);.  void
17720 20 28 2a 78 44 6c 43 6c 6f 73 65 29 28 73 71 6c   (*xDlClose)(sql
17730 69 74 65 33 5f 76 66 73 2a 2c 20 76 6f 69 64 2a  ite3_vfs*, void*
17740 29 3b 0a 20 20 69 6e 74 20 28 2a 78 52 61 6e 64  );.  int (*xRand
17750 6f 6d 6e 65 73 73 29 28 73 71 6c 69 74 65 33 5f  omness)(sqlite3_
17760 76 66 73 2a 2c 20 69 6e 74 20 6e 42 79 74 65 2c  vfs*, int nByte,
17770 20 63 68 61 72 20 2a 7a 4f 75 74 29 3b 0a 20 20   char *zOut);.  
17780 69 6e 74 20 28 2a 78 53 6c 65 65 70 29 28 73 71  int (*xSleep)(sq
17790 6c 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74 20  lite3_vfs*, int 
177a0 6d 69 63 72 6f 73 65 63 6f 6e 64 73 29 3b 0a 20  microseconds);. 
177b0 20 69 6e 74 20 28 2a 78 43 75 72 72 65 6e 74 54   int (*xCurrentT
177c0 69 6d 65 29 28 73 71 6c 69 74 65 33 5f 76 66 73  ime)(sqlite3_vfs
177d0 2a 2c 20 64 6f 75 62 6c 65 2a 29 3b 0a 20 20 69  *, double*);.  i
177e0 6e 74 20 28 2a 78 47 65 74 4c 61 73 74 45 72 72  nt (*xGetLastErr
177f0 6f 72 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  or)(sqlite3_vfs*
17800 2c 20 69 6e 74 2c 20 63 68 61 72 20 2a 29 3b 0a  , int, char *);.
17810 20 20 2f 2a 0a 20 20 2a 2a 20 54 68 65 20 6d 65    /*.  ** The me
17820 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20  thods above are 
17830 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66 20  in version 1 of 
17840 74 68 65 20 73 71 6c 69 74 65 5f 76 66 73 20 6f  the sqlite_vfs o
17850 62 6a 65 63 74 0a 20 20 2a 2a 20 64 65 66 69 6e  bject.  ** defin
17860 69 74 69 6f 6e 2e 20 20 54 68 6f 73 65 20 74 68  ition.  Those th
17870 61 74 20 66 6f 6c 6c 6f 77 20 61 72 65 20 61 64  at follow are ad
17880 64 65 64 20 69 6e 20 76 65 72 73 69 6f 6e 20 32  ded in version 2
17890 20 6f 72 20 6c 61 74 65 72 0a 20 20 2a 2f 0a 20   or later.  */. 
178a0 20 69 6e 74 20 28 2a 78 43 75 72 72 65 6e 74 54   int (*xCurrentT
178b0 69 6d 65 49 6e 74 36 34 29 28 73 71 6c 69 74 65  imeInt64)(sqlite
178c0 33 5f 76 66 73 2a 2c 20 73 71 6c 69 74 65 33 5f  3_vfs*, sqlite3_
178d0 69 6e 74 36 34 2a 29 3b 0a 20 20 2f 2a 0a 20 20  int64*);.  /*.  
178e0 2a 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61  ** The methods a
178f0 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73  bove are in vers
17900 69 6f 6e 73 20 31 20 61 6e 64 20 32 20 6f 66 20  ions 1 and 2 of 
17910 74 68 65 20 73 71 6c 69 74 65 5f 76 66 73 20 6f  the sqlite_vfs o
17920 62 6a 65 63 74 2e 0a 20 20 2a 2a 20 54 68 6f 73  bject..  ** Thos
17930 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72 20  e below are for 
17940 76 65 72 73 69 6f 6e 20 33 20 61 6e 64 20 67 72  version 3 and gr
17950 65 61 74 65 72 2e 0a 20 20 2a 2f 0a 20 20 69 6e  eater..  */.  in
17960 74 20 28 2a 78 53 65 74 53 79 73 74 65 6d 43 61  t (*xSetSystemCa
17970 6c 6c 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  ll)(sqlite3_vfs*
17980 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
17990 61 6d 65 2c 20 73 71 6c 69 74 65 33 5f 73 79 73  ame, sqlite3_sys
179a0 63 61 6c 6c 5f 70 74 72 29 3b 0a 20 20 73 71 6c  call_ptr);.  sql
179b0 69 74 65 33 5f 73 79 73 63 61 6c 6c 5f 70 74 72  ite3_syscall_ptr
179c0 20 28 2a 78 47 65 74 53 79 73 74 65 6d 43 61 6c   (*xGetSystemCal
179d0 6c 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c  l)(sqlite3_vfs*,
179e0 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61   const char *zNa
179f0 6d 65 29 3b 0a 20 20 63 6f 6e 73 74 20 63 68 61  me);.  const cha
17a00 72 20 2a 28 2a 78 4e 65 78 74 53 79 73 74 65 6d  r *(*xNextSystem
17a10 43 61 6c 6c 29 28 73 71 6c 69 74 65 33 5f 76 66  Call)(sqlite3_vf
17a20 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  s*, const char *
17a30 7a 4e 61 6d 65 29 3b 0a 20 20 2f 2a 0a 20 20 2a  zName);.  /*.  *
17a40 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62  * The methods ab
17a50 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69  ove are in versi
17a60 6f 6e 73 20 31 20 74 68 72 6f 75 67 68 20 33 20  ons 1 through 3 
17a70 6f 66 20 74 68 65 20 73 71 6c 69 74 65 5f 76 66  of the sqlite_vf
17a80 73 20 6f 62 6a 65 63 74 2e 0a 20 20 2a 2a 20 4e  s object..  ** N
17a90 65 77 20 66 69 65 6c 64 73 20 6d 61 79 20 62 65  ew fields may be
17aa0 20 61 70 70 65 6e 64 65 64 20 69 6e 20 66 75 74   appended in fut
17ab0 75 72 65 20 76 65 72 73 69 6f 6e 73 2e 20 20 54  ure versions.  T
17ac0 68 65 20 69 56 65 72 73 69 6f 6e 0a 20 20 2a 2a  he iVersion.  **
17ad0 20 76 61 6c 75 65 20 77 69 6c 6c 20 69 6e 63 72   value will incr
17ae0 65 6d 65 6e 74 20 77 68 65 6e 65 76 65 72 20 74  ement whenever t
17af0 68 69 73 20 68 61 70 70 65 6e 73 2e 20 0a 20 20  his happens. .  
17b00 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  */.};../*.** CAP
17b10 49 33 52 45 46 3a 20 46 6c 61 67 73 20 66 6f 72  I3REF: Flags for
17b20 20 74 68 65 20 78 41 63 63 65 73 73 20 56 46 53   the xAccess VFS
17b30 20 6d 65 74 68 6f 64 0a 2a 2a 0a 2a 2a 20 54 68   method.**.** Th
17b40 65 73 65 20 69 6e 74 65 67 65 72 20 63 6f 6e 73  ese integer cons
17b50 74 61 6e 74 73 20 63 61 6e 20 62 65 20 75 73 65  tants can be use
17b60 64 20 61 73 20 74 68 65 20 74 68 69 72 64 20 70  d as the third p
17b70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 74  arameter to.** t
17b80 68 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f  he xAccess metho
17b90 64 20 6f 66 20 61 6e 20 5b 73 71 6c 69 74 65 33  d of an [sqlite3
17ba0 5f 76 66 73 5d 20 6f 62 6a 65 63 74 2e 20 20 54  _vfs] object.  T
17bb0 68 65 79 20 64 65 74 65 72 6d 69 6e 65 0a 2a 2a  hey determine.**
17bc0 20 77 68 61 74 20 6b 69 6e 64 20 6f 66 20 70 65   what kind of pe
17bd0 72 6d 69 73 73 69 6f 6e 73 20 74 68 65 20 78 41  rmissions the xA
17be0 63 63 65 73 73 20 6d 65 74 68 6f 64 20 69 73 20  ccess method is 
17bf0 6c 6f 6f 6b 69 6e 67 20 66 6f 72 2e 0a 2a 2a 20  looking for..** 
17c00 57 69 74 68 20 53 51 4c 49 54 45 5f 41 43 43 45  With SQLITE_ACCE
17c10 53 53 5f 45 58 49 53 54 53 2c 20 74 68 65 20 78  SS_EXISTS, the x
17c20 41 63 63 65 73 73 20 6d 65 74 68 6f 64 0a 2a 2a  Access method.**
17c30 20 73 69 6d 70 6c 79 20 63 68 65 63 6b 73 20 77   simply checks w
17c40 68 65 74 68 65 72 20 74 68 65 20 66 69 6c 65 20  hether the file 
17c50 65 78 69 73 74 73 2e 0a 2a 2a 20 57 69 74 68 20  exists..** With 
17c60 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45  SQLITE_ACCESS_RE
17c70 41 44 57 52 49 54 45 2c 20 74 68 65 20 78 41 63  ADWRITE, the xAc
17c80 63 65 73 73 20 6d 65 74 68 6f 64 0a 2a 2a 20 63  cess method.** c
17c90 68 65 63 6b 73 20 77 68 65 74 68 65 72 20 74 68  hecks whether th
17ca0 65 20 6e 61 6d 65 64 20 64 69 72 65 63 74 6f 72  e named director
17cb0 79 20 69 73 20 62 6f 74 68 20 72 65 61 64 61 62  y is both readab
17cc0 6c 65 20 61 6e 64 20 77 72 69 74 61 62 6c 65 0a  le and writable.
17cd0 2a 2a 20 28 69 6e 20 6f 74 68 65 72 20 77 6f 72  ** (in other wor
17ce0 64 73 2c 20 69 66 20 66 69 6c 65 73 20 63 61 6e  ds, if files can
17cf0 20 62 65 20 61 64 64 65 64 2c 20 72 65 6d 6f 76   be added, remov
17d00 65 64 2c 20 61 6e 64 20 72 65 6e 61 6d 65 64 20  ed, and renamed 
17d10 77 69 74 68 69 6e 0a 2a 2a 20 74 68 65 20 64 69  within.** the di
17d20 72 65 63 74 6f 72 79 29 2e 0a 2a 2a 20 54 68 65  rectory)..** The
17d30 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52   SQLITE_ACCESS_R
17d40 45 41 44 57 52 49 54 45 20 63 6f 6e 73 74 61 6e  EADWRITE constan
17d50 74 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 75  t is currently u
17d60 73 65 64 20 6f 6e 6c 79 20 62 79 20 74 68 65 0a  sed only by the.
17d70 2a 2a 20 5b 74 65 6d 70 5f 73 74 6f 72 65 5f 64  ** [temp_store_d
17d80 69 72 65 63 74 6f 72 79 20 70 72 61 67 6d 61 5d  irectory pragma]
17d90 2c 20 74 68 6f 75 67 68 20 74 68 69 73 20 63 6f  , though this co
17da0 75 6c 64 20 63 68 61 6e 67 65 20 69 6e 20 61 20  uld change in a 
17db0 66 75 74 75 72 65 0a 2a 2a 20 72 65 6c 65 61 73  future.** releas
17dc0 65 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 20  e of SQLite..** 
17dd0 57 69 74 68 20 53 51 4c 49 54 45 5f 41 43 43 45  With SQLITE_ACCE
17de0 53 53 5f 52 45 41 44 2c 20 74 68 65 20 78 41 63  SS_READ, the xAc
17df0 63 65 73 73 20 6d 65 74 68 6f 64 0a 2a 2a 20 63  cess method.** c
17e00 68 65 63 6b 73 20 77 68 65 74 68 65 72 20 74 68  hecks whether th
17e10 65 20 66 69 6c 65 20 69 73 20 72 65 61 64 61 62  e file is readab
17e20 6c 65 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f  le.  The SQLITE_
17e30 41 43 43 45 53 53 5f 52 45 41 44 20 63 6f 6e 73  ACCESS_READ cons
17e40 74 61 6e 74 20 69 73 0a 2a 2a 20 63 75 72 72 65  tant is.** curre
17e50 6e 74 6c 79 20 75 6e 75 73 65 64 2c 20 74 68 6f  ntly unused, tho
17e60 75 67 68 20 69 74 20 6d 69 67 68 74 20 62 65 20  ugh it might be 
17e70 75 73 65 64 20 69 6e 20 61 20 66 75 74 75 72 65  used in a future
17e80 20 72 65 6c 65 61 73 65 20 6f 66 0a 2a 2a 20 53   release of.** S
17e90 51 4c 69 74 65 2e 0a 2a 2f 0a 23 64 65 66 69 6e  QLite..*/.#defin
17ea0 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f  e SQLITE_ACCESS_
17eb0 45 58 49 53 54 53 20 20 20 20 30 0a 23 64 65 66  EXISTS    0.#def
17ec0 69 6e 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53  ine SQLITE_ACCES
17ed0 53 5f 52 45 41 44 57 52 49 54 45 20 31 20 20 20  S_READWRITE 1   
17ee0 2f 2a 20 55 73 65 64 20 62 79 20 50 52 41 47 4d  /* Used by PRAGM
17ef0 41 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72  A temp_store_dir
17f00 65 63 74 6f 72 79 20 2a 2f 0a 23 64 65 66 69 6e  ectory */.#defin
17f10 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f  e SQLITE_ACCESS_
17f20 52 45 41 44 20 20 20 20 20 20 32 20 20 20 2f 2a  READ      2   /*
17f30 20 55 6e 75 73 65 64 20 2a 2f 0a 0a 2f 2a 0a 2a   Unused */../*.*
17f40 2a 20 43 41 50 49 33 52 45 46 3a 20 46 6c 61 67  * CAPI3REF: Flag
17f50 73 20 66 6f 72 20 74 68 65 20 78 53 68 6d 4c 6f  s for the xShmLo
17f60 63 6b 20 56 46 53 20 6d 65 74 68 6f 64 0a 2a 2a  ck VFS method.**
17f70 0a 2a 2a 20 54 68 65 73 65 20 69 6e 74 65 67 65  .** These intege
17f80 72 20 63 6f 6e 73 74 61 6e 74 73 20 64 65 66 69  r constants defi
17f90 6e 65 20 74 68 65 20 76 61 72 69 6f 75 73 20 6c  ne the various l
17fa0 6f 63 6b 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e  ocking operation
17fb0 73 0a 2a 2a 20 61 6c 6c 6f 77 65 64 20 62 79 20  s.** allowed by 
17fc0 74 68 65 20 78 53 68 6d 4c 6f 63 6b 20 6d 65 74  the xShmLock met
17fd0 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f  hod of [sqlite3_
17fe0 69 6f 5f 6d 65 74 68 6f 64 73 5d 2e 20 20 54 68  io_methods].  Th
17ff0 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 61  e.** following a
18000 72 65 20 74 68 65 20 6f 6e 6c 79 20 6c 65 67 61  re the only lega
18010 6c 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 20 6f  l combinations o
18020 66 20 66 6c 61 67 73 20 74 6f 20 74 68 65 0a 2a  f flags to the.*
18030 2a 20 78 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f  * xShmLock metho
18040 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a  d:.**.** <ul>.**
18050 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f 53 48   <li>  SQLITE_SH
18060 4d 5f 4c 4f 43 4b 20 7c 20 53 51 4c 49 54 45 5f  M_LOCK | SQLITE_
18070 53 48 4d 5f 53 48 41 52 45 44 0a 2a 2a 20 3c 6c  SHM_SHARED.** <l
18080 69 3e 20 20 53 51 4c 49 54 45 5f 53 48 4d 5f 4c  i>  SQLITE_SHM_L
18090 4f 43 4b 20 7c 20 53 51 4c 49 54 45 5f 53 48 4d  OCK | SQLITE_SHM
180a0 5f 45 58 43 4c 55 53 49 56 45 0a 2a 2a 20 3c 6c  _EXCLUSIVE.** <l
180b0 69 3e 20 20 53 51 4c 49 54 45 5f 53 48 4d 5f 55  i>  SQLITE_SHM_U
180c0 4e 4c 4f 43 4b 20 7c 20 53 51 4c 49 54 45 5f 53  NLOCK | SQLITE_S
180d0 48 4d 5f 53 48 41 52 45 44 0a 2a 2a 20 3c 6c 69  HM_SHARED.** <li
180e0 3e 20 20 53 51 4c 49 54 45 5f 53 48 4d 5f 55 4e  >  SQLITE_SHM_UN
180f0 4c 4f 43 4b 20 7c 20 53 51 4c 49 54 45 5f 53 48  LOCK | SQLITE_SH
18100 4d 5f 45 58 43 4c 55 53 49 56 45 0a 2a 2a 20 3c  M_EXCLUSIVE.** <
18110 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20  /ul>.**.** When 
18120 75 6e 6c 6f 63 6b 69 6e 67 2c 20 74 68 65 20 73  unlocking, the s
18130 61 6d 65 20 53 48 41 52 45 44 20 6f 72 20 45 58  ame SHARED or EX
18140 43 4c 55 53 49 56 45 20 66 6c 61 67 20 6d 75 73  CLUSIVE flag mus
18150 74 20 62 65 20 73 75 70 70 6c 69 65 64 20 61 73  t be supplied as
18160 0a 2a 2a 20 77 61 73 20 67 69 76 65 6e 20 6f 6e  .** was given on
18170 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
18180 6e 67 20 6c 6f 63 6b 2e 20 20 0a 2a 2a 0a 2a 2a  ng lock.  .**.**
18190 20 54 68 65 20 78 53 68 6d 4c 6f 63 6b 20 6d 65   The xShmLock me
181a0 74 68 6f 64 20 63 61 6e 20 74 72 61 6e 73 69 74  thod can transit
181b0 69 6f 6e 20 62 65 74 77 65 65 6e 20 75 6e 6c 6f  ion between unlo
181c0 63 6b 65 64 20 61 6e 64 20 53 48 41 52 45 44 20  cked and SHARED 
181d0 6f 72 0a 2a 2a 20 62 65 74 77 65 65 6e 20 75 6e  or.** between un
181e0 6c 6f 63 6b 65 64 20 61 6e 64 20 45 58 43 4c 55  locked and EXCLU
181f0 53 49 56 45 2e 20 20 49 74 20 63 61 6e 6e 6f 74  SIVE.  It cannot
18200 20 74 72 61 6e 73 69 74 69 6f 6e 20 62 65 74 77   transition betw
18210 65 65 6e 20 53 48 41 52 45 44 0a 2a 2a 20 61 6e  een SHARED.** an
18220 64 20 45 58 43 4c 55 53 49 56 45 2e 0a 2a 2f 0a  d EXCLUSIVE..*/.
18230 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
18240 48 4d 5f 55 4e 4c 4f 43 4b 20 20 20 20 20 20 20  HM_UNLOCK       
18250 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
18260 5f 53 48 4d 5f 4c 4f 43 4b 20 20 20 20 20 20 20  _SHM_LOCK       
18270 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    2.#define SQLI
18280 54 45 5f 53 48 4d 5f 53 48 41 52 45 44 20 20 20  TE_SHM_SHARED   
18290 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53 51      4.#define SQ
182a0 4c 49 54 45 5f 53 48 4d 5f 45 58 43 4c 55 53 49  LITE_SHM_EXCLUSI
182b0 56 45 20 20 20 20 38 0a 0a 2f 2a 0a 2a 2a 20 43  VE    8../*.** C
182c0 41 50 49 33 52 45 46 3a 20 4d 61 78 69 6d 75 6d  API3REF: Maximum
182d0 20 78 53 68 6d 4c 6f 63 6b 20 69 6e 64 65 78 0a   xShmLock index.
182e0 2a 2a 0a 2a 2a 20 54 68 65 20 78 53 68 6d 4c 6f  **.** The xShmLo
182f0 63 6b 20 6d 65 74 68 6f 64 20 6f 6e 20 5b 73 71  ck method on [sq
18300 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73  lite3_io_methods
18310 5d 20 6d 61 79 20 75 73 65 20 76 61 6c 75 65 73  ] may use values
18320 0a 2a 2a 20 62 65 74 77 65 65 6e 20 30 20 61 6e  .** between 0 an
18330 64 20 74 68 69 73 20 75 70 70 65 72 20 62 6f 75  d this upper bou
18340 6e 64 20 61 73 20 69 74 73 20 22 6f 66 66 73 65  nd as its "offse
18350 74 22 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 20  t" argument..** 
18360 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  The SQLite core 
18370 77 69 6c 6c 20 6e 65 76 65 72 20 61 74 74 65 6d  will never attem
18380 70 74 20 74 6f 20 61 63 71 75 69 72 65 20 6f 72  pt to acquire or
18390 20 72 65 6c 65 61 73 65 20 61 0a 2a 2a 20 6c 6f   release a.** lo
183a0 63 6b 20 6f 75 74 73 69 64 65 20 6f 66 20 74 68  ck outside of th
183b0 69 73 20 72 61 6e 67 65 0a 2a 2f 0a 23 64 65 66  is range.*/.#def
183c0 69 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f 4e  ine SQLITE_SHM_N
183d0 4c 4f 43 4b 20 20 20 20 20 20 20 20 38 0a 0a 0a  LOCK        8...
183e0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
183f0 49 6e 69 74 69 61 6c 69 7a 65 20 54 68 65 20 53  Initialize The S
18400 51 4c 69 74 65 20 4c 69 62 72 61 72 79 0a 2a 2a  QLite Library.**
18410 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
18420 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 72 6f  _initialize() ro
18430 75 74 69 6e 65 20 69 6e 69 74 69 61 6c 69 7a 65  utine initialize
18440 73 20 74 68 65 0a 2a 2a 20 53 51 4c 69 74 65 20  s the.** SQLite 
18450 6c 69 62 72 61 72 79 2e 20 20 5e 54 68 65 20 73  library.  ^The s
18460 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
18470 29 20 72 6f 75 74 69 6e 65 0a 2a 2a 20 64 65 61  ) routine.** dea
18480 6c 6c 6f 63 61 74 65 73 20 61 6e 79 20 72 65 73  llocates any res
18490 6f 75 72 63 65 73 20 74 68 61 74 20 77 65 72 65  ources that were
184a0 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 73 71   allocated by sq
184b0 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
184c0 28 29 2e 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75  ()..** These rou
184d0 74 69 6e 65 73 20 61 72 65 20 64 65 73 69 67 6e  tines are design
184e0 65 64 20 74 6f 20 61 69 64 20 69 6e 20 70 72 6f  ed to aid in pro
184f0 63 65 73 73 20 69 6e 69 74 69 61 6c 69 7a 61 74  cess initializat
18500 69 6f 6e 20 61 6e 64 0a 2a 2a 20 73 68 75 74 64  ion and.** shutd
18510 6f 77 6e 20 6f 6e 20 65 6d 62 65 64 64 65 64 20  own on embedded 
18520 73 79 73 74 65 6d 73 2e 20 20 57 6f 72 6b 73 74  systems.  Workst
18530 61 74 69 6f 6e 20 61 70 70 6c 69 63 61 74 69 6f  ation applicatio
18540 6e 73 20 75 73 69 6e 67 0a 2a 2a 20 53 51 4c 69  ns using.** SQLi
18550 74 65 20 6e 6f 72 6d 61 6c 6c 79 20 64 6f 20 6e  te normally do n
18560 6f 74 20 6e 65 65 64 20 74 6f 20 69 6e 76 6f 6b  ot need to invok
18570 65 20 65 69 74 68 65 72 20 6f 66 20 74 68 65 73  e either of thes
18580 65 20 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a  e routines..**.*
18590 2a 20 41 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69  * A call to sqli
185a0 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
185b0 20 69 73 20 61 6e 20 22 65 66 66 65 63 74 69 76   is an "effectiv
185c0 65 22 20 63 61 6c 6c 20 69 66 20 69 74 20 69 73  e" call if it is
185d0 0a 2a 2a 20 74 68 65 20 66 69 72 73 74 20 74 69  .** the first ti
185e0 6d 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  me sqlite3_initi
185f0 61 6c 69 7a 65 28 29 20 69 73 20 69 6e 76 6f 6b  alize() is invok
18600 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 6c 69  ed during the li
18610 66 65 74 69 6d 65 20 6f 66 0a 2a 2a 20 74 68 65  fetime of.** the
18620 20 70 72 6f 63 65 73 73 2c 20 6f 72 20 69 66 20   process, or if 
18630 69 74 20 69 73 20 74 68 65 20 66 69 72 73 74 20  it is the first 
18640 74 69 6d 65 20 73 71 6c 69 74 65 33 5f 69 6e 69  time sqlite3_ini
18650 74 69 61 6c 69 7a 65 28 29 20 69 73 20 69 6e 76  tialize() is inv
18660 6f 6b 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  oked.** followin
18670 67 20 61 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69  g a call to sqli
18680 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e 20  te3_shutdown(). 
18690 20 5e 28 4f 6e 6c 79 20 61 6e 20 65 66 66 65 63   ^(Only an effec
186a0 74 69 76 65 20 63 61 6c 6c 0a 2a 2a 20 6f 66 20  tive call.** of 
186b0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
186c0 7a 65 28 29 20 64 6f 65 73 20 61 6e 79 20 69 6e  ze() does any in
186d0 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2e 20 20 41  itialization.  A
186e0 6c 6c 20 6f 74 68 65 72 20 63 61 6c 6c 73 0a 2a  ll other calls.*
186f0 2a 20 61 72 65 20 68 61 72 6d 6c 65 73 73 20 6e  * are harmless n
18700 6f 2d 6f 70 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20 41  o-ops.)^.**.** A
18710 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33   call to sqlite3
18720 5f 73 68 75 74 64 6f 77 6e 28 29 20 69 73 20 61  _shutdown() is a
18730 6e 20 22 65 66 66 65 63 74 69 76 65 22 20 63 61  n "effective" ca
18740 6c 6c 20 69 66 20 69 74 20 69 73 20 74 68 65 20  ll if it is the 
18750 66 69 72 73 74 0a 2a 2a 20 63 61 6c 6c 20 74 6f  first.** call to
18760 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
18770 6e 28 29 20 73 69 6e 63 65 20 74 68 65 20 6c 61  n() since the la
18780 73 74 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  st sqlite3_initi
18790 61 6c 69 7a 65 28 29 2e 20 20 5e 28 4f 6e 6c 79  alize().  ^(Only
187a0 0a 2a 2a 20 61 6e 20 65 66 66 65 63 74 69 76 65  .** an effective
187b0 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33   call to sqlite3
187c0 5f 73 68 75 74 64 6f 77 6e 28 29 20 64 6f 65 73  _shutdown() does
187d0 20 61 6e 79 20 64 65 69 6e 69 74 69 61 6c 69 7a   any deinitializ
187e0 61 74 69 6f 6e 2e 0a 2a 2a 20 41 6c 6c 20 6f 74  ation..** All ot
187f0 68 65 72 20 76 61 6c 69 64 20 63 61 6c 6c 73 20  her valid calls 
18800 74 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  to sqlite3_shutd
18810 6f 77 6e 28 29 20 61 72 65 20 68 61 72 6d 6c 65  own() are harmle
18820 73 73 20 6e 6f 2d 6f 70 73 2e 29 5e 0a 2a 2a 0a  ss no-ops.)^.**.
18830 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 69  ** The sqlite3_i
18840 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 6e 74 65  nitialize() inte
18850 72 66 61 63 65 20 69 73 20 74 68 72 65 61 64 73  rface is threads
18860 61 66 65 2c 20 62 75 74 20 73 71 6c 69 74 65 33  afe, but sqlite3
18870 5f 73 68 75 74 64 6f 77 6e 28 29 0a 2a 2a 20 69  _shutdown().** i
18880 73 20 6e 6f 74 2e 20 20 54 68 65 20 73 71 6c 69  s not.  The sqli
18890 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 69  te3_shutdown() i
188a0 6e 74 65 72 66 61 63 65 20 6d 75 73 74 20 6f 6e  nterface must on
188b0 6c 79 20 62 65 20 63 61 6c 6c 65 64 20 66 72 6f  ly be called fro
188c0 6d 20 61 0a 2a 2a 20 73 69 6e 67 6c 65 20 74 68  m a.** single th
188d0 72 65 61 64 2e 20 20 41 6c 6c 20 6f 70 65 6e 20  read.  All open 
188e0 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
188f0 74 69 6f 6e 73 5d 20 6d 75 73 74 20 62 65 20 63  tions] must be c
18900 6c 6f 73 65 64 20 61 6e 64 20 61 6c 6c 0a 2a 2a  losed and all.**
18910 20 6f 74 68 65 72 20 53 51 4c 69 74 65 20 72 65   other SQLite re
18920 73 6f 75 72 63 65 73 20 6d 75 73 74 20 62 65 20  sources must be 
18930 64 65 61 6c 6c 6f 63 61 74 65 64 20 70 72 69 6f  deallocated prio
18940 72 20 74 6f 20 69 6e 76 6f 6b 69 6e 67 0a 2a 2a  r to invoking.**
18950 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
18960 6e 28 29 2e 0a 2a 2a 0a 2a 2a 20 41 6d 6f 6e 67  n()..**.** Among
18970 20 6f 74 68 65 72 20 74 68 69 6e 67 73 2c 20 5e   other things, ^
18980 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
18990 7a 65 28 29 20 77 69 6c 6c 20 69 6e 76 6f 6b 65  ze() will invoke
189a0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69  .** sqlite3_os_i
189b0 6e 69 74 28 29 2e 20 20 53 69 6d 69 6c 61 72 6c  nit().  Similarl
189c0 79 2c 20 5e 73 71 6c 69 74 65 33 5f 73 68 75 74  y, ^sqlite3_shut
189d0 64 6f 77 6e 28 29 0a 2a 2a 20 77 69 6c 6c 20 69  down().** will i
189e0 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f 6f 73  nvoke sqlite3_os
189f0 5f 65 6e 64 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54  _end()..**.** ^T
18a00 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  he sqlite3_initi
18a10 61 6c 69 7a 65 28 29 20 72 6f 75 74 69 6e 65 20  alize() routine 
18a20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
18a30 4f 4b 5d 20 6f 6e 20 73 75 63 63 65 73 73 2e 0a  OK] on success..
18a40 2a 2a 20 5e 49 66 20 66 6f 72 20 73 6f 6d 65 20  ** ^If for some 
18a50 72 65 61 73 6f 6e 2c 20 73 71 6c 69 74 65 33 5f  reason, sqlite3_
18a60 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20  initialize() is 
18a70 75 6e 61 62 6c 65 20 74 6f 20 69 6e 69 74 69 61  unable to initia
18a80 6c 69 7a 65 0a 2a 2a 20 74 68 65 20 6c 69 62 72  lize.** the libr
18a90 61 72 79 20 28 70 65 72 68 61 70 73 20 69 74 20  ary (perhaps it 
18aa0 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c  is unable to all
18ab0 6f 63 61 74 65 20 61 20 6e 65 65 64 65 64 20 72  ocate a needed r
18ac0 65 73 6f 75 72 63 65 20 73 75 63 68 0a 2a 2a 20  esource such.** 
18ad0 61 73 20 61 20 6d 75 74 65 78 29 20 69 74 20 72  as a mutex) it r
18ae0 65 74 75 72 6e 73 20 61 6e 20 5b 65 72 72 6f 72  eturns an [error
18af0 20 63 6f 64 65 5d 20 6f 74 68 65 72 20 74 68 61   code] other tha
18b00 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2e 0a 2a  n [SQLITE_OK]..*
18b10 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
18b20 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 72  3_initialize() r
18b30 6f 75 74 69 6e 65 20 69 73 20 63 61 6c 6c 65 64  outine is called
18b40 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 6d   internally by m
18b50 61 6e 79 20 6f 74 68 65 72 0a 2a 2a 20 53 51 4c  any other.** SQL
18b60 69 74 65 20 69 6e 74 65 72 66 61 63 65 73 20 73  ite interfaces s
18b70 6f 20 74 68 61 74 20 61 6e 20 61 70 70 6c 69 63  o that an applic
18b80 61 74 69 6f 6e 20 75 73 75 61 6c 6c 79 20 64 6f  ation usually do
18b90 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 0a 2a  es not need to.*
18ba0 2a 20 69 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33  * invoke sqlite3
18bb0 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 64 69  _initialize() di
18bc0 72 65 63 74 6c 79 2e 20 20 46 6f 72 20 65 78 61  rectly.  For exa
18bd0 6d 70 6c 65 2c 20 5b 73 71 6c 69 74 65 33 5f 6f  mple, [sqlite3_o
18be0 70 65 6e 28 29 5d 0a 2a 2a 20 63 61 6c 6c 73 20  pen()].** calls 
18bf0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
18c00 7a 65 28 29 20 73 6f 20 74 68 65 20 53 51 4c 69  ze() so the SQLi
18c10 74 65 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 20  te library will 
18c20 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  be automatically
18c30 0a 2a 2a 20 69 6e 69 74 69 61 6c 69 7a 65 64 20  .** initialized 
18c40 77 68 65 6e 20 5b 73 71 6c 69 74 65 33 5f 6f 70  when [sqlite3_op
18c50 65 6e 28 29 5d 20 69 73 20 63 61 6c 6c 65 64 20  en()] is called 
18c60 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62 65  if it has not be
18c70 20 69 6e 69 74 69 61 6c 69 7a 65 64 0a 2a 2a 20   initialized.** 
18c80 61 6c 72 65 61 64 79 2e 20 20 5e 48 6f 77 65 76  already.  ^Howev
18c90 65 72 2c 20 69 66 20 53 51 4c 69 74 65 20 69 73  er, if SQLite is
18ca0 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
18cb0 68 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  he [SQLITE_OMIT_
18cc0 41 55 54 4f 49 4e 49 54 5d 0a 2a 2a 20 63 6f 6d  AUTOINIT].** com
18cd0 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
18ce0 2c 20 74 68 65 6e 20 74 68 65 20 61 75 74 6f 6d  , then the autom
18cf0 61 74 69 63 20 63 61 6c 6c 73 20 74 6f 20 73 71  atic calls to sq
18d00 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
18d10 28 29 0a 2a 2a 20 61 72 65 20 6f 6d 69 74 74 65  ().** are omitte
18d20 64 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63  d and the applic
18d30 61 74 69 6f 6e 20 6d 75 73 74 20 63 61 6c 6c 20  ation must call 
18d40 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
18d50 7a 65 28 29 20 64 69 72 65 63 74 6c 79 0a 2a 2a  ze() directly.**
18d60 20 70 72 69 6f 72 20 74 6f 20 75 73 69 6e 67 20   prior to using 
18d70 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 69 74 65  any other SQLite
18d80 20 69 6e 74 65 72 66 61 63 65 2e 20 20 46 6f 72   interface.  For
18d90 20 6d 61 78 69 6d 75 6d 20 70 6f 72 74 61 62 69   maximum portabi
18da0 6c 69 74 79 2c 0a 2a 2a 20 69 74 20 69 73 20 72  lity,.** it is r
18db0 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74 20  ecommended that 
18dc0 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 61 6c 77  applications alw
18dd0 61 79 73 20 69 6e 76 6f 6b 65 20 73 71 6c 69 74  ays invoke sqlit
18de0 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 0a  e3_initialize().
18df0 2a 2a 20 64 69 72 65 63 74 6c 79 20 70 72 69 6f  ** directly prio
18e00 72 20 74 6f 20 75 73 69 6e 67 20 61 6e 79 20 6f  r to using any o
18e10 74 68 65 72 20 53 51 4c 69 74 65 20 69 6e 74 65  ther SQLite inte
18e20 72 66 61 63 65 2e 20 20 46 75 74 75 72 65 20 72  rface.  Future r
18e30 65 6c 65 61 73 65 73 0a 2a 2a 20 6f 66 20 53 51  eleases.** of SQ
18e40 4c 69 74 65 20 6d 61 79 20 72 65 71 75 69 72 65  Lite may require
18e50 20 74 68 69 73 2e 20 20 49 6e 20 6f 74 68 65 72   this.  In other
18e60 20 77 6f 72 64 73 2c 20 74 68 65 20 62 65 68 61   words, the beha
18e70 76 69 6f 72 20 65 78 68 69 62 69 74 65 64 0a 2a  vior exhibited.*
18e80 2a 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73  * when SQLite is
18e90 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 5b   compiled with [
18ea0 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
18eb0 49 4e 49 54 5d 20 6d 69 67 68 74 20 62 65 63 6f  INIT] might beco
18ec0 6d 65 20 74 68 65 0a 2a 2a 20 64 65 66 61 75 6c  me the.** defaul
18ed0 74 20 62 65 68 61 76 69 6f 72 20 69 6e 20 73 6f  t behavior in so
18ee0 6d 65 20 66 75 74 75 72 65 20 72 65 6c 65 61 73  me future releas
18ef0 65 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a  e of SQLite..**.
18f00 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6f  ** The sqlite3_o
18f10 73 5f 69 6e 69 74 28 29 20 72 6f 75 74 69 6e 65  s_init() routine
18f20 20 64 6f 65 73 20 6f 70 65 72 61 74 69 6e 67 2d   does operating-
18f30 73 79 73 74 65 6d 20 73 70 65 63 69 66 69 63 0a  system specific.
18f40 2a 2a 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  ** initializatio
18f50 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20  n of the SQLite 
18f60 6c 69 62 72 61 72 79 2e 20 20 54 68 65 20 73 71  library.  The sq
18f70 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 0a 2a  lite3_os_end().*
18f80 2a 20 72 6f 75 74 69 6e 65 20 75 6e 64 6f 65 73  * routine undoes
18f90 20 74 68 65 20 65 66 66 65 63 74 20 6f 66 20 73   the effect of s
18fa0 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
18fb0 2e 20 20 54 79 70 69 63 61 6c 20 74 61 73 6b 73  .  Typical tasks
18fc0 0a 2a 2a 20 70 65 72 66 6f 72 6d 65 64 20 62 79  .** performed by
18fd0 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20   these routines 
18fe0 69 6e 63 6c 75 64 65 20 61 6c 6c 6f 63 61 74 69  include allocati
18ff0 6f 6e 20 6f 72 20 64 65 61 6c 6c 6f 63 61 74 69  on or deallocati
19000 6f 6e 0a 2a 2a 20 6f 66 20 73 74 61 74 69 63 20  on.** of static 
19010 72 65 73 6f 75 72 63 65 73 2c 20 69 6e 69 74 69  resources, initi
19020 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 67 6c 6f  alization of glo
19030 62 61 6c 20 76 61 72 69 61 62 6c 65 73 2c 0a 2a  bal variables,.*
19040 2a 20 73 65 74 74 69 6e 67 20 75 70 20 61 20 64  * setting up a d
19050 65 66 61 75 6c 74 20 5b 73 71 6c 69 74 65 33 5f  efault [sqlite3_
19060 76 66 73 5d 20 6d 6f 64 75 6c 65 2c 20 6f 72 20  vfs] module, or 
19070 73 65 74 74 69 6e 67 20 75 70 0a 2a 2a 20 61 20  setting up.** a 
19080 64 65 66 61 75 6c 74 20 63 6f 6e 66 69 67 75 72  default configur
19090 61 74 69 6f 6e 20 75 73 69 6e 67 20 5b 73 71 6c  ation using [sql
190a0 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 2e 0a  ite3_config()]..
190b0 2a 2a 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63  **.** The applic
190c0 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e 65 76  ation should nev
190d0 65 72 20 69 6e 76 6f 6b 65 20 65 69 74 68 65 72  er invoke either
190e0 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74   sqlite3_os_init
190f0 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74 65 33  ().** or sqlite3
19100 5f 6f 73 5f 65 6e 64 28 29 20 64 69 72 65 63 74  _os_end() direct
19110 6c 79 2e 20 20 54 68 65 20 61 70 70 6c 69 63 61  ly.  The applica
19120 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6f 6e 6c 79  tion should only
19130 20 69 6e 76 6f 6b 65 0a 2a 2a 20 73 71 6c 69 74   invoke.** sqlit
19140 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
19150 61 6e 64 20 73 71 6c 69 74 65 33 5f 73 68 75 74  and sqlite3_shut
19160 64 6f 77 6e 28 29 2e 20 20 54 68 65 20 73 71 6c  down().  The sql
19170 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 0a 2a  ite3_os_init().*
19180 2a 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 63  * interface is c
19190 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 61  alled automatica
191a0 6c 6c 79 20 62 79 20 73 71 6c 69 74 65 33 5f 69  lly by sqlite3_i
191b0 6e 69 74 69 61 6c 69 7a 65 28 29 20 61 6e 64 0a  nitialize() and.
191c0 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  ** sqlite3_os_en
191d0 64 28 29 20 69 73 20 63 61 6c 6c 65 64 20 62 79  d() is called by
191e0 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
191f0 6e 28 29 2e 20 20 41 70 70 72 6f 70 72 69 61 74  n().  Appropriat
19200 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74  e.** implementat
19210 69 6f 6e 73 20 66 6f 72 20 73 71 6c 69 74 65 33  ions for sqlite3
19220 5f 6f 73 5f 69 6e 69 74 28 29 20 61 6e 64 20 73  _os_init() and s
19230 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 0a  qlite3_os_end().
19240 2a 2a 20 61 72 65 20 62 75 69 6c 74 20 69 6e 74  ** are built int
19250 6f 20 53 51 4c 69 74 65 20 77 68 65 6e 20 69 74  o SQLite when it
19260 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72   is compiled for
19270 20 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c 20   Unix, Windows, 
19280 6f 72 20 4f 53 2f 32 2e 0a 2a 2a 20 57 68 65 6e  or OS/2..** When
19290 20 5b 63 75 73 74 6f 6d 20 62 75 69 6c 64 73 20   [custom builds 
192a0 7c 20 62 75 69 6c 74 20 66 6f 72 20 6f 74 68 65  | built for othe
192b0 72 20 70 6c 61 74 66 6f 72 6d 73 5d 0a 2a 2a 20  r platforms].** 
192c0 28 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c 49  (using the [SQLI
192d0 54 45 5f 4f 53 5f 4f 54 48 45 52 3d 31 5d 20 63  TE_OS_OTHER=1] c
192e0 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a 20 6f  ompile-time.** o
192f0 70 74 69 6f 6e 29 20 74 68 65 20 61 70 70 6c 69  ption) the appli
19300 63 61 74 69 6f 6e 20 6d 75 73 74 20 73 75 70 70  cation must supp
19310 6c 79 20 61 20 73 75 69 74 61 62 6c 65 20 69 6d  ly a suitable im
19320 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  plementation for
19330 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69  .** sqlite3_os_i
19340 6e 69 74 28 29 20 61 6e 64 20 73 71 6c 69 74 65  nit() and sqlite
19350 33 5f 6f 73 5f 65 6e 64 28 29 2e 20 20 41 6e 20  3_os_end().  An 
19360 61 70 70 6c 69 63 61 74 69 6f 6e 2d 73 75 70 70  application-supp
19370 6c 69 65 64 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e  lied.** implemen
19380 74 61 74 69 6f 6e 20 6f 66 20 73 71 6c 69 74 65  tation of sqlite
19390 33 5f 6f 73 5f 69 6e 69 74 28 29 20 6f 72 20 73  3_os_init() or s
193a0 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 0a  qlite3_os_end().
193b0 2a 2a 20 6d 75 73 74 20 72 65 74 75 72 6e 20 5b  ** must return [
193c0 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 6e 20 73 75  SQLITE_OK] on su
193d0 63 63 65 73 73 20 61 6e 64 20 73 6f 6d 65 20 6f  ccess and some o
193e0 74 68 65 72 20 5b 65 72 72 6f 72 20 63 6f 64 65  ther [error code
193f0 5d 20 75 70 6f 6e 0a 2a 2a 20 66 61 69 6c 75 72  ] upon.** failur
19400 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  e..*/.SQLITE_API
19410 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 69 6e 69   int sqlite3_ini
19420 74 69 61 6c 69 7a 65 28 76 6f 69 64 29 3b 0a 53  tialize(void);.S
19430 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
19440 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 76  lite3_shutdown(v
19450 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  oid);.SQLITE_API
19460 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 73 5f   int sqlite3_os_
19470 69 6e 69 74 28 76 6f 69 64 29 3b 0a 53 51 4c 49  init(void);.SQLI
19480 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
19490 65 33 5f 6f 73 5f 65 6e 64 28 76 6f 69 64 29 3b  e3_os_end(void);
194a0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
194b0 3a 20 43 6f 6e 66 69 67 75 72 69 6e 67 20 54 68  : Configuring Th
194c0 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79  e SQLite Library
194d0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
194e0 65 33 5f 63 6f 6e 66 69 67 28 29 20 69 6e 74 65  e3_config() inte
194f0 72 66 61 63 65 20 69 73 20 75 73 65 64 20 74 6f  rface is used to
19500 20 6d 61 6b 65 20 67 6c 6f 62 61 6c 20 63 6f 6e   make global con
19510 66 69 67 75 72 61 74 69 6f 6e 0a 2a 2a 20 63 68  figuration.** ch
19520 61 6e 67 65 73 20 74 6f 20 53 51 4c 69 74 65 20  anges to SQLite 
19530 69 6e 20 6f 72 64 65 72 20 74 6f 20 74 75 6e 65  in order to tune
19540 20 53 51 4c 69 74 65 20 74 6f 20 74 68 65 20 73   SQLite to the s
19550 70 65 63 69 66 69 63 20 6e 65 65 64 73 20 6f 66  pecific needs of
19560 0a 2a 2a 20 74 68 65 20 61 70 70 6c 69 63 61 74  .** the applicat
19570 69 6f 6e 2e 20 20 54 68 65 20 64 65 66 61 75 6c  ion.  The defaul
19580 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  t configuration 
19590 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66  is recommended f
195a0 6f 72 20 6d 6f 73 74 0a 2a 2a 20 61 70 70 6c 69  or most.** appli
195b0 63 61 74 69 6f 6e 73 20 61 6e 64 20 73 6f 20 74  cations and so t
195c0 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73 20 75  his routine is u
195d0 73 75 61 6c 6c 79 20 6e 6f 74 20 6e 65 63 65 73  sually not neces
195e0 73 61 72 79 2e 20 20 49 74 20 69 73 0a 2a 2a 20  sary.  It is.** 
195f0 70 72 6f 76 69 64 65 64 20 74 6f 20 73 75 70 70  provided to supp
19600 6f 72 74 20 72 61 72 65 20 61 70 70 6c 69 63 61  ort rare applica
19610 74 69 6f 6e 73 20 77 69 74 68 20 75 6e 75 73 75  tions with unusu
19620 61 6c 20 6e 65 65 64 73 2e 0a 2a 2a 0a 2a 2a 20  al needs..**.** 
19630 3c 62 3e 54 68 65 20 73 71 6c 69 74 65 33 5f 63  <b>The sqlite3_c
19640 6f 6e 66 69 67 28 29 20 69 6e 74 65 72 66 61 63  onfig() interfac
19650 65 20 69 73 20 6e 6f 74 20 74 68 72 65 61 64 73  e is not threads
19660 61 66 65 2e 20 54 68 65 20 61 70 70 6c 69 63 61  afe. The applica
19670 74 69 6f 6e 0a 2a 2a 20 6d 75 73 74 20 65 6e 73  tion.** must ens
19680 75 72 65 20 74 68 61 74 20 6e 6f 20 6f 74 68 65  ure that no othe
19690 72 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61  r SQLite interfa
196a0 63 65 73 20 61 72 65 20 69 6e 76 6f 6b 65 64 20  ces are invoked 
196b0 62 79 20 6f 74 68 65 72 0a 2a 2a 20 74 68 72 65  by other.** thre
196c0 61 64 73 20 77 68 69 6c 65 20 73 71 6c 69 74 65  ads while sqlite
196d0 33 5f 63 6f 6e 66 69 67 28 29 20 69 73 20 72 75  3_config() is ru
196e0 6e 6e 69 6e 67 2e 3c 2f 62 3e 0a 2a 2a 0a 2a 2a  nning.</b>.**.**
196f0 20 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e   The sqlite3_con
19700 66 69 67 28 29 20 69 6e 74 65 72 66 61 63 65 0a  fig() interface.
19710 2a 2a 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 69  ** may only be i
19720 6e 76 6f 6b 65 64 20 70 72 69 6f 72 20 74 6f 20  nvoked prior to 
19730 6c 69 62 72 61 72 79 20 69 6e 69 74 69 61 6c 69  library initiali
19740 7a 61 74 69 6f 6e 20 75 73 69 6e 67 0a 2a 2a 20  zation using.** 
19750 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
19760 69 7a 65 28 29 5d 20 6f 72 20 61 66 74 65 72 20  ize()] or after 
19770 73 68 75 74 64 6f 77 6e 20 62 79 20 5b 73 71 6c  shutdown by [sql
19780 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d  ite3_shutdown()]
19790 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65 33  ..** ^If sqlite3
197a0 5f 63 6f 6e 66 69 67 28 29 20 69 73 20 63 61 6c  _config() is cal
197b0 6c 65 64 20 61 66 74 65 72 20 5b 73 71 6c 69 74  led after [sqlit
197c0 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d  e3_initialize()]
197d0 20 61 6e 64 20 62 65 66 6f 72 65 0a 2a 2a 20 5b   and before.** [
197e0 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
197f0 28 29 5d 20 74 68 65 6e 20 69 74 20 77 69 6c 6c  ()] then it will
19800 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4d   return SQLITE_M
19810 49 53 55 53 45 2e 0a 2a 2a 20 4e 6f 74 65 2c 20  ISUSE..** Note, 
19820 68 6f 77 65 76 65 72 2c 20 74 68 61 74 20 5e 73  however, that ^s
19830 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20  qlite3_config() 
19840 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 61 73  can be called as
19850 20 70 61 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20   part of the.** 
19860 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
19870 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
19880 2d 64 65 66 69 6e 65 64 20 5b 73 71 6c 69 74 65  -defined [sqlite
19890 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 2e 0a 2a 2a  3_os_init()]..**
198a0 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72  .** The first ar
198b0 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65  gument to sqlite
198c0 33 5f 63 6f 6e 66 69 67 28 29 20 69 73 20 61 6e  3_config() is an
198d0 20 69 6e 74 65 67 65 72 0a 2a 2a 20 5b 63 6f 6e   integer.** [con
198e0 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
198f0 6e 5d 20 74 68 61 74 20 64 65 74 65 72 6d 69 6e  n] that determin
19900 65 73 0a 2a 2a 20 77 68 61 74 20 70 72 6f 70 65  es.** what prope
19910 72 74 79 20 6f 66 20 53 51 4c 69 74 65 20 69 73  rty of SQLite is
19920 20 74 6f 20 62 65 20 63 6f 6e 66 69 67 75 72 65   to be configure
19930 64 2e 20 20 53 75 62 73 65 71 75 65 6e 74 20 61  d.  Subsequent a
19940 72 67 75 6d 65 6e 74 73 0a 2a 2a 20 76 61 72 79  rguments.** vary
19950 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68   depending on th
19960 65 20 5b 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  e [configuration
19970 20 6f 70 74 69 6f 6e 5d 0a 2a 2a 20 69 6e 20 74   option].** in t
19980 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
19990 74 2e 0a 2a 2a 0a 2a 2a 20 5e 57 68 65 6e 20 61  t..**.** ^When a
199a0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
199b0 70 74 69 6f 6e 20 69 73 20 73 65 74 2c 20 73 71  ption is set, sq
199c0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 72  lite3_config() r
199d0 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f  eturns [SQLITE_O
199e0 4b 5d 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6f  K]..** ^If the o
199f0 70 74 69 6f 6e 20 69 73 20 75 6e 6b 6e 6f 77 6e  ption is unknown
19a00 20 6f 72 20 53 51 4c 69 74 65 20 69 73 20 75 6e   or SQLite is un
19a10 61 62 6c 65 20 74 6f 20 73 65 74 20 74 68 65 20  able to set the 
19a20 6f 70 74 69 6f 6e 0a 2a 2a 20 74 68 65 6e 20 74  option.** then t
19a30 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75  his routine retu
19a40 72 6e 73 20 61 20 6e 6f 6e 2d 7a 65 72 6f 20 5b  rns a non-zero [
19a50 65 72 72 6f 72 20 63 6f 64 65 5d 2e 0a 2a 2f 0a  error code]..*/.
19a60 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
19a70 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 69 6e  qlite3_config(in
19a80 74 2c 20 2e 2e 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20  t, ...);../*.** 
19a90 43 41 50 49 33 52 45 46 3a 20 43 6f 6e 66 69 67  CAPI3REF: Config
19aa0 75 72 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ure database con
19ab0 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20 4d 45 54 48  nections.** METH
19ac0 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
19ad0 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 64 62  * The sqlite3_db
19ae0 5f 63 6f 6e 66 69 67 28 29 20 69 6e 74 65 72 66  _config() interf
19af0 61 63 65 20 69 73 20 75 73 65 64 20 74 6f 20 6d  ace is used to m
19b00 61 6b 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ake configuratio
19b10 6e 0a 2a 2a 20 63 68 61 6e 67 65 73 20 74 6f 20  n.** changes to 
19b20 61 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  a [database conn
19b30 65 63 74 69 6f 6e 5d 2e 20 20 54 68 65 20 69 6e  ection].  The in
19b40 74 65 72 66 61 63 65 20 69 73 20 73 69 6d 69 6c  terface is simil
19b50 61 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65  ar to.** [sqlite
19b60 33 5f 63 6f 6e 66 69 67 28 29 5d 20 65 78 63 65  3_config()] exce
19b70 70 74 20 74 68 61 74 20 74 68 65 20 63 68 61 6e  pt that the chan
19b80 67 65 73 20 61 70 70 6c 79 20 74 6f 20 61 20 73  ges apply to a s
19b90 69 6e 67 6c 65 0a 2a 2a 20 5b 64 61 74 61 62 61  ingle.** [databa
19ba0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28  se connection] (
19bb0 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65  specified in the
19bc0 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 29   first argument)
19bd0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 65 63 6f  ..**.** The seco
19be0 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73  nd argument to s
19bf0 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
19c00 28 44 2c 56 2c 2e 2e 2e 29 20 20 69 73 20 74 68  (D,V,...)  is th
19c10 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 44 42 43  e.** [SQLITE_DBC
19c20 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20  ONFIG_LOOKASIDE 
19c30 7c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  | configuration 
19c40 76 65 72 62 5d 20 2d 20 61 6e 20 69 6e 74 65 67  verb] - an integ
19c50 65 72 20 63 6f 64 65 20 0a 2a 2a 20 74 68 61 74  er code .** that
19c60 20 69 6e 64 69 63 61 74 65 73 20 77 68 61 74 20   indicates what 
19c70 61 73 70 65 63 74 20 6f 66 20 74 68 65 20 5b 64  aspect of the [d
19c80 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
19c90 6f 6e 5d 20 69 73 20 62 65 69 6e 67 20 63 6f 6e  on] is being con
19ca0 66 69 67 75 72 65 64 2e 0a 2a 2a 20 53 75 62 73  figured..** Subs
19cb0 65 71 75 65 6e 74 20 61 72 67 75 6d 65 6e 74 73  equent arguments
19cc0 20 76 61 72 79 20 64 65 70 65 6e 64 69 6e 67 20   vary depending 
19cd0 6f 6e 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61  on the configura
19ce0 74 69 6f 6e 20 76 65 72 62 2e 0a 2a 2a 0a 2a 2a  tion verb..**.**
19cf0 20 5e 43 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74   ^Calls to sqlit
19d00 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 20 72  e3_db_config() r
19d10 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20  eturn SQLITE_OK 
19d20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 2a  if and only if.*
19d30 2a 20 74 68 65 20 63 61 6c 6c 20 69 73 20 63 6f  * the call is co
19d40 6e 73 69 64 65 72 65 64 20 73 75 63 63 65 73 73  nsidered success
19d50 66 75 6c 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ful..*/.SQLITE_A
19d60 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 64  PI int sqlite3_d
19d70 62 5f 63 6f 6e 66 69 67 28 73 71 6c 69 74 65 33  b_config(sqlite3
19d80 2a 2c 20 69 6e 74 20 6f 70 2c 20 2e 2e 2e 29 3b  *, int op, ...);
19d90 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
19da0 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74  : Memory Allocat
19db0 69 6f 6e 20 52 6f 75 74 69 6e 65 73 0a 2a 2a 0a  ion Routines.**.
19dc0 2a 2a 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ** An instance o
19dd0 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 64 65  f this object de
19de0 66 69 6e 65 73 20 74 68 65 20 69 6e 74 65 72 66  fines the interf
19df0 61 63 65 20 62 65 74 77 65 65 6e 20 53 51 4c 69  ace between SQLi
19e00 74 65 0a 2a 2a 20 61 6e 64 20 6c 6f 77 2d 6c 65  te.** and low-le
19e10 76 65 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  vel memory alloc
19e20 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73 2e 0a  ation routines..
19e30 2a 2a 0a 2a 2a 20 54 68 69 73 20 6f 62 6a 65 63  **.** This objec
19e40 74 20 69 73 20 75 73 65 64 20 69 6e 20 6f 6e 6c  t is used in onl
19e50 79 20 6f 6e 65 20 70 6c 61 63 65 20 69 6e 20 74  y one place in t
19e60 68 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66  he SQLite interf
19e70 61 63 65 2e 0a 2a 2a 20 41 20 70 6f 69 6e 74 65  ace..** A pointe
19e80 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65  r to an instance
19e90 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20   of this object 
19ea0 69 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  is the argument 
19eb0 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63  to.** [sqlite3_c
19ec0 6f 6e 66 69 67 28 29 5d 20 77 68 65 6e 20 74 68  onfig()] when th
19ed0 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  e configuration 
19ee0 6f 70 74 69 6f 6e 20 69 73 0a 2a 2a 20 5b 53 51  option is.** [SQ
19ef0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
19f00 4f 43 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f 43  OC] or [SQLITE_C
19f10 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 5d  ONFIG_GETMALLOC]
19f20 2e 20 20 0a 2a 2a 20 42 79 20 63 72 65 61 74 69  .  .** By creati
19f30 6e 67 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ng an instance o
19f40 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0a 2a 2a  f this object.**
19f50 20 61 6e 64 20 70 61 73 73 69 6e 67 20 69 74 20   and passing it 
19f60 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  to [sqlite3_conf
19f70 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ig]([SQLITE_CONF
19f80 49 47 5f 4d 41 4c 4c 4f 43 5d 29 0a 2a 2a 20 64  IG_MALLOC]).** d
19f90 75 72 69 6e 67 20 63 6f 6e 66 69 67 75 72 61 74  uring configurat
19fa0 69 6f 6e 2c 20 61 6e 20 61 70 70 6c 69 63 61 74  ion, an applicat
19fb0 69 6f 6e 20 63 61 6e 20 73 70 65 63 69 66 79 20  ion can specify 
19fc0 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 2a  an alternative.*
19fd0 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  * memory allocat
19fe0 69 6f 6e 20 73 75 62 73 79 73 74 65 6d 20 66 6f  ion subsystem fo
19ff0 72 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65 20  r SQLite to use 
1a000 66 6f 72 20 61 6c 6c 20 6f 66 20 69 74 73 0a 2a  for all of its.*
1a010 2a 20 64 79 6e 61 6d 69 63 20 6d 65 6d 6f 72 79  * dynamic memory
1a020 20 6e 65 65 64 73 2e 0a 2a 2a 0a 2a 2a 20 4e 6f   needs..**.** No
1a030 74 65 20 74 68 61 74 20 53 51 4c 69 74 65 20 63  te that SQLite c
1a040 6f 6d 65 73 20 77 69 74 68 20 73 65 76 65 72 61  omes with severa
1a050 6c 20 5b 62 75 69 6c 74 2d 69 6e 20 6d 65 6d 6f  l [built-in memo
1a060 72 79 20 61 6c 6c 6f 63 61 74 6f 72 73 5d 0a 2a  ry allocators].*
1a070 2a 20 74 68 61 74 20 61 72 65 20 70 65 72 66 65  * that are perfe
1a080 63 74 6c 79 20 61 64 65 71 75 61 74 65 20 66 6f  ctly adequate fo
1a090 72 20 74 68 65 20 6f 76 65 72 77 68 65 6c 6d 69  r the overwhelmi
1a0a0 6e 67 20 6d 61 6a 6f 72 69 74 79 20 6f 66 20 61  ng majority of a
1a0b0 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 61  pplications.** a
1a0c0 6e 64 20 74 68 61 74 20 74 68 69 73 20 6f 62 6a  nd that this obj
1a0d0 65 63 74 20 69 73 20 6f 6e 6c 79 20 75 73 65 66  ect is only usef
1a0e0 75 6c 20 74 6f 20 61 20 74 69 6e 79 20 6d 69 6e  ul to a tiny min
1a0f0 6f 72 69 74 79 20 6f 66 20 61 70 70 6c 69 63 61  ority of applica
1a100 74 69 6f 6e 73 0a 2a 2a 20 77 69 74 68 20 73 70  tions.** with sp
1a110 65 63 69 61 6c 69 7a 65 64 20 6d 65 6d 6f 72 79  ecialized memory
1a120 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 65 71 75   allocation requ
1a130 69 72 65 6d 65 6e 74 73 2e 20 20 54 68 69 73 20  irements.  This 
1a140 6f 62 6a 65 63 74 20 69 73 0a 2a 2a 20 61 6c 73  object is.** als
1a150 6f 20 75 73 65 64 20 64 75 72 69 6e 67 20 74 65  o used during te
1a160 73 74 69 6e 67 20 6f 66 20 53 51 4c 69 74 65 20  sting of SQLite 
1a170 69 6e 20 6f 72 64 65 72 20 74 6f 20 73 70 65 63  in order to spec
1a180 69 66 79 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  ify an alternati
1a190 76 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c  ve.** memory all
1a1a0 6f 63 61 74 6f 72 20 74 68 61 74 20 73 69 6d 75  ocator that simu
1a1b0 6c 61 74 65 73 20 6d 65 6d 6f 72 79 20 6f 75 74  lates memory out
1a1c0 2d 6f 66 2d 6d 65 6d 6f 72 79 20 63 6f 6e 64 69  -of-memory condi
1a1d0 74 69 6f 6e 73 20 69 6e 0a 2a 2a 20 6f 72 64 65  tions in.** orde
1a1e0 72 20 74 6f 20 76 65 72 69 66 79 20 74 68 61 74  r to verify that
1a1f0 20 53 51 4c 69 74 65 20 72 65 63 6f 76 65 72 73   SQLite recovers
1a200 20 67 72 61 63 65 66 75 6c 6c 79 20 66 72 6f 6d   gracefully from
1a210 20 73 75 63 68 0a 2a 2a 20 63 6f 6e 64 69 74 69   such.** conditi
1a220 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78  ons..**.** The x
1a230 4d 61 6c 6c 6f 63 2c 20 78 52 65 61 6c 6c 6f 63  Malloc, xRealloc
1a240 2c 20 61 6e 64 20 78 46 72 65 65 20 6d 65 74 68  , and xFree meth
1a250 6f 64 73 20 6d 75 73 74 20 77 6f 72 6b 20 6c 69  ods must work li
1a260 6b 65 20 74 68 65 0a 2a 2a 20 6d 61 6c 6c 6f 63  ke the.** malloc
1a270 28 29 2c 20 72 65 61 6c 6c 6f 63 28 29 20 61 6e  (), realloc() an
1a280 64 20 66 72 65 65 28 29 20 66 75 6e 63 74 69 6f  d free() functio
1a290 6e 73 20 66 72 6f 6d 20 74 68 65 20 73 74 61 6e  ns from the stan
1a2a0 64 61 72 64 20 43 20 6c 69 62 72 61 72 79 2e 0a  dard C library..
1a2b0 2a 2a 20 5e 53 51 4c 69 74 65 20 67 75 61 72 61  ** ^SQLite guara
1a2c0 6e 74 65 65 73 20 74 68 61 74 20 74 68 65 20 73  ntees that the s
1a2d0 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74  econd argument t
1a2e0 6f 0a 2a 2a 20 78 52 65 61 6c 6c 6f 63 20 69 73  o.** xRealloc is
1a2f0 20 61 6c 77 61 79 73 20 61 20 76 61 6c 75 65 20   always a value 
1a300 72 65 74 75 72 6e 65 64 20 62 79 20 61 20 70 72  returned by a pr
1a310 69 6f 72 20 63 61 6c 6c 20 74 6f 20 78 52 6f 75  ior call to xRou
1a320 6e 64 75 70 2e 0a 2a 2a 0a 2a 2a 20 78 53 69 7a  ndup..**.** xSiz
1a330 65 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20  e should return 
1a340 74 68 65 20 61 6c 6c 6f 63 61 74 65 64 20 73 69  the allocated si
1a350 7a 65 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61  ze of a memory a
1a360 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 70 72 65  llocation.** pre
1a370 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64  viously obtained
1a380 20 66 72 6f 6d 20 78 4d 61 6c 6c 6f 63 20 6f 72   from xMalloc or
1a390 20 78 52 65 61 6c 6c 6f 63 2e 20 20 54 68 65 20   xRealloc.  The 
1a3a0 61 6c 6c 6f 63 61 74 65 64 20 73 69 7a 65 0a 2a  allocated size.*
1a3b0 2a 20 69 73 20 61 6c 77 61 79 73 20 61 74 20 6c  * is always at l
1a3c0 65 61 73 74 20 61 73 20 62 69 67 20 61 73 20 74  east as big as t
1a3d0 68 65 20 72 65 71 75 65 73 74 65 64 20 73 69 7a  he requested siz
1a3e0 65 20 62 75 74 20 6d 61 79 20 62 65 20 6c 61 72  e but may be lar
1a3f0 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78  ger..**.** The x
1a400 52 6f 75 6e 64 75 70 20 6d 65 74 68 6f 64 20 72  Roundup method r
1a410 65 74 75 72 6e 73 20 77 68 61 74 20 77 6f 75 6c  eturns what woul
1a420 64 20 62 65 20 74 68 65 20 61 6c 6c 6f 63 61 74  d be the allocat
1a430 65 64 20 73 69 7a 65 20 6f 66 0a 2a 2a 20 61 20  ed size of.** a 
1a440 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
1a450 6e 20 67 69 76 65 6e 20 61 20 70 61 72 74 69 63  n given a partic
1a460 75 6c 61 72 20 72 65 71 75 65 73 74 65 64 20 73  ular requested s
1a470 69 7a 65 2e 20 20 4d 6f 73 74 20 6d 65 6d 6f 72  ize.  Most memor
1a480 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74 6f 72 73 20  y.** allocators 
1a490 72 6f 75 6e 64 20 75 70 20 6d 65 6d 6f 72 79 20  round up memory 
1a4a0 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 74 20 6c  allocations at l
1a4b0 65 61 73 74 20 74 6f 20 74 68 65 20 6e 65 78 74  east to the next
1a4c0 20 6d 75 6c 74 69 70 6c 65 0a 2a 2a 20 6f 66 20   multiple.** of 
1a4d0 38 2e 20 20 53 6f 6d 65 20 61 6c 6c 6f 63 61 74  8.  Some allocat
1a4e0 6f 72 73 20 72 6f 75 6e 64 20 75 70 20 74 6f 20  ors round up to 
1a4f0 61 20 6c 61 72 67 65 72 20 6d 75 6c 74 69 70 6c  a larger multipl
1a500 65 20 6f 72 20 74 6f 20 61 20 70 6f 77 65 72 20  e or to a power 
1a510 6f 66 20 32 2e 0a 2a 2a 20 45 76 65 72 79 20 6d  of 2..** Every m
1a520 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
1a530 20 72 65 71 75 65 73 74 20 63 6f 6d 69 6e 67 20   request coming 
1a540 69 6e 20 74 68 72 6f 75 67 68 20 5b 73 71 6c 69  in through [sqli
1a550 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 0a 2a 2a  te3_malloc()].**
1a560 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 72 65 61   or [sqlite3_rea
1a570 6c 6c 6f 63 28 29 5d 20 66 69 72 73 74 20 63 61  lloc()] first ca
1a580 6c 6c 73 20 78 52 6f 75 6e 64 75 70 2e 20 20 49  lls xRoundup.  I
1a590 66 20 78 52 6f 75 6e 64 75 70 20 72 65 74 75 72  f xRoundup retur
1a5a0 6e 73 20 30 2c 20 0a 2a 2a 20 74 68 61 74 20 63  ns 0, .** that c
1a5b0 61 75 73 65 73 20 74 68 65 20 63 6f 72 72 65 73  auses the corres
1a5c0 70 6f 6e 64 69 6e 67 20 6d 65 6d 6f 72 79 20 61  ponding memory a
1a5d0 6c 6c 6f 63 61 74 69 6f 6e 20 74 6f 20 66 61 69  llocation to fai
1a5e0 6c 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 49 6e  l..**.** The xIn
1a5f0 69 74 20 6d 65 74 68 6f 64 20 69 6e 69 74 69 61  it method initia
1a600 6c 69 7a 65 73 20 74 68 65 20 6d 65 6d 6f 72 79  lizes the memory
1a610 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 46 6f 72   allocator.  For
1a620 20 65 78 61 6d 70 6c 65 2c 0a 2a 2a 20 69 74 20   example,.** it 
1a630 6d 69 67 68 74 20 61 6c 6c 6f 63 61 74 65 20 61  might allocate a
1a640 6e 79 20 72 65 71 75 69 72 65 20 6d 75 74 65 78  ny require mutex
1a650 65 73 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a 65  es or initialize
1a660 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61 0a 2a   internal data.*
1a670 2a 20 73 74 72 75 63 74 75 72 65 73 2e 20 20 54  * structures.  T
1a680 68 65 20 78 53 68 75 74 64 6f 77 6e 20 6d 65 74  he xShutdown met
1a690 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65 64 20 28  hod is invoked (
1a6a0 69 6e 64 69 72 65 63 74 6c 79 29 20 62 79 0a 2a  indirectly) by.*
1a6b0 2a 20 5b 73 71 6c 69 74 65 33 5f 73 68 75 74 64  * [sqlite3_shutd
1a6c0 6f 77 6e 28 29 5d 20 61 6e 64 20 73 68 6f 75 6c  own()] and shoul
1a6d0 64 20 64 65 61 6c 6c 6f 63 61 74 65 20 61 6e 79  d deallocate any
1a6e0 20 72 65 73 6f 75 72 63 65 73 20 61 63 71 75 69   resources acqui
1a6f0 72 65 64 0a 2a 2a 20 62 79 20 78 49 6e 69 74 2e  red.** by xInit.
1a700 20 20 54 68 65 20 70 41 70 70 44 61 74 61 20 70    The pAppData p
1a710 6f 69 6e 74 65 72 20 69 73 20 75 73 65 64 20 61  ointer is used a
1a720 73 20 74 68 65 20 6f 6e 6c 79 20 70 61 72 61 6d  s the only param
1a730 65 74 65 72 20 74 6f 0a 2a 2a 20 78 49 6e 69 74  eter to.** xInit
1a740 20 61 6e 64 20 78 53 68 75 74 64 6f 77 6e 2e 0a   and xShutdown..
1a750 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 68 6f 6c  **.** SQLite hol
1a760 64 73 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d  ds the [SQLITE_M
1a770 55 54 45 58 5f 53 54 41 54 49 43 5f 4d 41 53 54  UTEX_STATIC_MAST
1a780 45 52 5d 20 6d 75 74 65 78 20 77 68 65 6e 20 69  ER] mutex when i
1a790 74 20 69 6e 76 6f 6b 65 73 0a 2a 2a 20 74 68 65  t invokes.** the
1a7a0 20 78 49 6e 69 74 20 6d 65 74 68 6f 64 2c 20 73   xInit method, s
1a7b0 6f 20 74 68 65 20 78 49 6e 69 74 20 6d 65 74 68  o the xInit meth
1a7c0 6f 64 20 6e 65 65 64 20 6e 6f 74 20 62 65 20 74  od need not be t
1a7d0 68 72 65 61 64 73 61 66 65 2e 20 20 54 68 65 0a  hreadsafe.  The.
1a7e0 2a 2a 20 78 53 68 75 74 64 6f 77 6e 20 6d 65 74  ** xShutdown met
1a7f0 68 6f 64 20 69 73 20 6f 6e 6c 79 20 63 61 6c 6c  hod is only call
1a800 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  ed from [sqlite3
1a810 5f 73 68 75 74 64 6f 77 6e 28 29 5d 20 73 6f 20  _shutdown()] so 
1a820 69 74 20 64 6f 65 73 0a 2a 2a 20 6e 6f 74 20 6e  it does.** not n
1a830 65 65 64 20 74 6f 20 62 65 20 74 68 72 65 61 64  eed to be thread
1a840 73 61 66 65 20 65 69 74 68 65 72 2e 20 20 46 6f  safe either.  Fo
1a850 72 20 61 6c 6c 20 6f 74 68 65 72 20 6d 65 74 68  r all other meth
1a860 6f 64 73 2c 20 53 51 4c 69 74 65 0a 2a 2a 20 68  ods, SQLite.** h
1a870 6f 6c 64 73 20 74 68 65 20 5b 53 51 4c 49 54 45  olds the [SQLITE
1a880 5f 4d 55 54 45 58 5f 53 54 41 54 49 43 5f 4d 45  _MUTEX_STATIC_ME
1a890 4d 5d 20 6d 75 74 65 78 20 61 73 20 6c 6f 6e 67  M] mutex as long
1a8a0 20 61 73 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49   as the.** [SQLI
1a8b0 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41  TE_CONFIG_MEMSTA
1a8c0 54 55 53 5d 20 63 6f 6e 66 69 67 75 72 61 74 69  TUS] configurati
1a8d0 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 20 74 75 72  on option is tur
1a8e0 6e 65 64 20 6f 6e 20 28 77 68 69 63 68 0a 2a 2a  ned on (which.**
1a8f0 20 69 74 20 69 73 20 62 79 20 64 65 66 61 75 6c   it is by defaul
1a900 74 29 20 61 6e 64 20 73 6f 20 74 68 65 20 6d 65  t) and so the me
1a910 74 68 6f 64 73 20 61 72 65 20 61 75 74 6f 6d 61  thods are automa
1a920 74 69 63 61 6c 6c 79 20 73 65 72 69 61 6c 69 7a  tically serializ
1a930 65 64 2e 0a 2a 2a 20 48 6f 77 65 76 65 72 2c 20  ed..** However, 
1a940 69 66 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  if [SQLITE_CONFI
1a950 47 5f 4d 45 4d 53 54 41 54 55 53 5d 20 69 73 20  G_MEMSTATUS] is 
1a960 64 69 73 61 62 6c 65 64 2c 20 74 68 65 6e 20 74  disabled, then t
1a970 68 65 20 6f 74 68 65 72 0a 2a 2a 20 6d 65 74 68  he other.** meth
1a980 6f 64 73 20 6d 75 73 74 20 62 65 20 74 68 72 65  ods must be thre
1a990 61 64 73 61 66 65 20 6f 72 20 65 6c 73 65 20 6d  adsafe or else m
1a9a0 61 6b 65 20 74 68 65 69 72 20 6f 77 6e 20 61 72  ake their own ar
1a9b0 72 61 6e 67 65 6d 65 6e 74 73 20 66 6f 72 0a 2a  rangements for.*
1a9c0 2a 20 73 65 72 69 61 6c 69 7a 61 74 69 6f 6e 2e  * serialization.
1a9d0 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 77 69  .**.** SQLite wi
1a9e0 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20  ll never invoke 
1a9f0 78 49 6e 69 74 28 29 20 6d 6f 72 65 20 74 68 61  xInit() more tha
1aa00 6e 20 6f 6e 63 65 20 77 69 74 68 6f 75 74 20 61  n once without a
1aa10 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67 0a 2a 2a  n intervening.**
1aa20 20 63 61 6c 6c 20 74 6f 20 78 53 68 75 74 64 6f   call to xShutdo
1aa30 77 6e 28 29 2e 0a 2a 2f 0a 74 79 70 65 64 65 66  wn()..*/.typedef
1aa40 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
1aa50 6d 65 6d 5f 6d 65 74 68 6f 64 73 20 73 71 6c 69  mem_methods sqli
1aa60 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 3b  te3_mem_methods;
1aa70 0a 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f  .struct sqlite3_
1aa80 6d 65 6d 5f 6d 65 74 68 6f 64 73 20 7b 0a 20 20  mem_methods {.  
1aa90 76 6f 69 64 20 2a 28 2a 78 4d 61 6c 6c 6f 63 29  void *(*xMalloc)
1aaa0 28 69 6e 74 29 3b 20 20 20 20 20 20 20 20 20 2f  (int);         /
1aab0 2a 20 4d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  * Memory allocat
1aac0 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a  ion function */.
1aad0 20 20 76 6f 69 64 20 28 2a 78 46 72 65 65 29 28    void (*xFree)(
1aae0 76 6f 69 64 2a 29 3b 20 20 20 20 20 20 20 20 20  void*);         
1aaf0 20 2f 2a 20 46 72 65 65 20 61 20 70 72 69 6f 72   /* Free a prior
1ab00 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20   allocation */. 
1ab10 20 76 6f 69 64 20 2a 28 2a 78 52 65 61 6c 6c 6f   void *(*xReallo
1ab20 63 29 28 76 6f 69 64 2a 2c 69 6e 74 29 3b 20 20  c)(void*,int);  
1ab30 2f 2a 20 52 65 73 69 7a 65 20 61 6e 20 61 6c 6c  /* Resize an all
1ab40 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20 20 69 6e 74  ocation */.  int
1ab50 20 28 2a 78 53 69 7a 65 29 28 76 6f 69 64 2a 29   (*xSize)(void*)
1ab60 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 52  ;           /* R
1ab70 65 74 75 72 6e 20 74 68 65 20 73 69 7a 65 20 6f  eturn the size o
1ab80 66 20 61 6e 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  f an allocation 
1ab90 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 52 6f 75 6e  */.  int (*xRoun
1aba0 64 75 70 29 28 69 6e 74 29 3b 20 20 20 20 20 20  dup)(int);      
1abb0 20 20 20 20 2f 2a 20 52 6f 75 6e 64 20 75 70 20      /* Round up 
1abc0 72 65 71 75 65 73 74 20 73 69 7a 65 20 74 6f 20  request size to 
1abd0 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65 20  allocation size 
1abe0 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 49 6e 69 74  */.  int (*xInit
1abf0 29 28 76 6f 69 64 2a 29 3b 20 20 20 20 20 20 20  )(void*);       
1ac00 20 20 20 20 2f 2a 20 49 6e 69 74 69 61 6c 69 7a      /* Initializ
1ac10 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  e the memory all
1ac20 6f 63 61 74 6f 72 20 2a 2f 0a 20 20 76 6f 69 64  ocator */.  void
1ac30 20 28 2a 78 53 68 75 74 64 6f 77 6e 29 28 76 6f   (*xShutdown)(vo
1ac40 69 64 2a 29 3b 20 20 20 20 20 20 2f 2a 20 44 65  id*);      /* De
1ac50 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 6d  initialize the m
1ac60 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
1ac70 2a 2f 0a 20 20 76 6f 69 64 20 2a 70 41 70 70 44  */.  void *pAppD
1ac80 61 74 61 3b 20 20 20 20 20 20 20 20 20 20 20 20  ata;            
1ac90 20 20 20 20 2f 2a 20 41 72 67 75 6d 65 6e 74 20      /* Argument 
1aca0 74 6f 20 78 49 6e 69 74 28 29 20 61 6e 64 20 78  to xInit() and x
1acb0 53 68 75 74 64 6f 77 6e 28 29 20 2a 2f 0a 7d 3b  Shutdown() */.};
1acc0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
1acd0 3a 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  : Configuration 
1ace0 4f 70 74 69 6f 6e 73 0a 2a 2a 20 4b 45 59 57 4f  Options.** KEYWO
1acf0 52 44 53 3a 20 7b 63 6f 6e 66 69 67 75 72 61 74  RDS: {configurat
1ad00 69 6f 6e 20 6f 70 74 69 6f 6e 7d 0a 2a 2a 0a 2a  ion option}.**.*
1ad10 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e 74  * These constant
1ad20 73 20 61 72 65 20 74 68 65 20 61 76 61 69 6c 61  s are the availa
1ad30 62 6c 65 20 69 6e 74 65 67 65 72 20 63 6f 6e 66  ble integer conf
1ad40 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
1ad50 73 20 74 68 61 74 0a 2a 2a 20 63 61 6e 20 62 65  s that.** can be
1ad60 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20 66   passed as the f
1ad70 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f  irst argument to
1ad80 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f   the [sqlite3_co
1ad90 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63  nfig()] interfac
1ada0 65 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 63 6f 6e  e..**.** New con
1adb0 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
1adc0 6e 73 20 6d 61 79 20 62 65 20 61 64 64 65 64 20  ns may be added 
1add0 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73  in future releas
1ade0 65 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a  es of SQLite..**
1adf0 20 45 78 69 73 74 69 6e 67 20 63 6f 6e 66 69 67   Existing config
1ae00 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20  uration options 
1ae10 6d 69 67 68 74 20 62 65 20 64 69 73 63 6f 6e 74  might be discont
1ae20 69 6e 75 65 64 2e 20 20 41 70 70 6c 69 63 61 74  inued.  Applicat
1ae30 69 6f 6e 73 0a 2a 2a 20 73 68 6f 75 6c 64 20 63  ions.** should c
1ae40 68 65 63 6b 20 74 68 65 20 72 65 74 75 72 6e 20  heck the return 
1ae50 63 6f 64 65 20 66 72 6f 6d 20 5b 73 71 6c 69 74  code from [sqlit
1ae60 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 74 6f 20  e3_config()] to 
1ae70 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 0a 2a  make sure that.*
1ae80 2a 20 74 68 65 20 63 61 6c 6c 20 77 6f 72 6b 65  * the call worke
1ae90 64 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33  d.  The [sqlite3
1aea0 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65 72  _config()] inter
1aeb0 66 61 63 65 20 77 69 6c 6c 20 72 65 74 75 72 6e  face will return
1aec0 20 61 0a 2a 2a 20 6e 6f 6e 2d 7a 65 72 6f 20 5b   a.** non-zero [
1aed0 65 72 72 6f 72 20 63 6f 64 65 5d 20 69 66 20 61  error code] if a
1aee0 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 6f 72   discontinued or
1aef0 20 75 6e 73 75 70 70 6f 72 74 65 64 20 63 6f 6e   unsupported con
1af00 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
1af10 6e 0a 2a 2a 20 69 73 20 69 6e 76 6f 6b 65 64 2e  n.** is invoked.
1af20 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b  .**.** <dl>.** [
1af30 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  [SQLITE_CONFIG_S
1af40 49 4e 47 4c 45 54 48 52 45 41 44 5d 5d 20 3c 64  INGLETHREAD]] <d
1af50 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1af60 53 49 4e 47 4c 45 54 48 52 45 41 44 3c 2f 64 74  SINGLETHREAD</dt
1af70 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 72 65 20 61  >.** <dd>There a
1af80 72 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20  re no arguments 
1af90 74 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 2e 20  to this option. 
1afa0 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 73 65   ^This option se
1afb0 74 73 20 74 68 65 0a 2a 2a 20 5b 74 68 72 65 61  ts the.** [threa
1afc0 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69  ding mode] to Si
1afd0 6e 67 6c 65 2d 74 68 72 65 61 64 2e 20 20 49 6e  ngle-thread.  In
1afe0 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 69 74   other words, it
1aff0 20 64 69 73 61 62 6c 65 73 0a 2a 2a 20 61 6c 6c   disables.** all
1b000 20 6d 75 74 65 78 69 6e 67 20 61 6e 64 20 70 75   mutexing and pu
1b010 74 73 20 53 51 4c 69 74 65 20 69 6e 74 6f 20 61  ts SQLite into a
1b020 20 6d 6f 64 65 20 77 68 65 72 65 20 69 74 20 63   mode where it c
1b030 61 6e 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 0a  an only be used.
1b040 2a 2a 20 62 79 20 61 20 73 69 6e 67 6c 65 20 74  ** by a single t
1b050 68 72 65 61 64 2e 20 20 20 5e 49 66 20 53 51 4c  hread.   ^If SQL
1b060 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
1b070 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c  with.** the [SQL
1b080 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c  ITE_THREADSAFE |
1b090 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
1b0a0 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  FE=0] compile-ti
1b0b0 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a  me option then.*
1b0c0 2a 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73  * it is not poss
1b0d0 69 62 6c 65 20 74 6f 20 63 68 61 6e 67 65 20 74  ible to change t
1b0e0 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  he [threading mo
1b0f0 64 65 5d 20 66 72 6f 6d 20 69 74 73 20 64 65 66  de] from its def
1b100 61 75 6c 74 0a 2a 2a 20 76 61 6c 75 65 20 6f 66  ault.** value of
1b110 20 53 69 6e 67 6c 65 2d 74 68 72 65 61 64 20 61   Single-thread a
1b120 6e 64 20 73 6f 20 5b 73 71 6c 69 74 65 33 5f 63  nd so [sqlite3_c
1b130 6f 6e 66 69 67 28 29 5d 20 77 69 6c 6c 20 72 65  onfig()] will re
1b140 74 75 72 6e 20 0a 2a 2a 20 5b 53 51 4c 49 54 45  turn .** [SQLITE
1b150 5f 45 52 52 4f 52 5d 20 69 66 20 63 61 6c 6c 65  _ERROR] if calle
1b160 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54  d with the SQLIT
1b170 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54  E_CONFIG_SINGLET
1b180 48 52 45 41 44 0a 2a 2a 20 63 6f 6e 66 69 67 75  HREAD.** configu
1b190 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 2e 3c 2f  ration option.</
1b1a0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1b1b0 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54  TE_CONFIG_MULTIT
1b1c0 48 52 45 41 44 5d 5d 20 3c 64 74 3e 53 51 4c 49  HREAD]] <dt>SQLI
1b1d0 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54  TE_CONFIG_MULTIT
1b1e0 48 52 45 41 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  HREAD</dt>.** <d
1b1f0 64 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61  d>There are no a
1b200 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 69 73  rguments to this
1b210 20 6f 70 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20   option.  ^This 
1b220 6f 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 0a  option sets the.
1b230 2a 2a 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  ** [threading mo
1b240 64 65 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72  de] to Multi-thr
1b250 65 61 64 2e 20 20 49 6e 20 6f 74 68 65 72 20 77  ead.  In other w
1b260 6f 72 64 73 2c 20 69 74 20 64 69 73 61 62 6c 65  ords, it disable
1b270 73 0a 2a 2a 20 6d 75 74 65 78 69 6e 67 20 6f 6e  s.** mutexing on
1b280 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
1b290 63 74 69 6f 6e 5d 20 61 6e 64 20 5b 70 72 65 70  ction] and [prep
1b2a0 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
1b2b0 6f 62 6a 65 63 74 73 2e 0a 2a 2a 20 54 68 65 20  objects..** The 
1b2c0 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 72  application is r
1b2d0 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 73  esponsible for s
1b2e0 65 72 69 61 6c 69 7a 69 6e 67 20 61 63 63 65 73  erializing acces
1b2f0 73 20 74 6f 0a 2a 2a 20 5b 64 61 74 61 62 61 73  s to.** [databas
1b300 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 61  e connections] a
1b310 6e 64 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  nd [prepared sta
1b320 74 65 6d 65 6e 74 73 5d 2e 20 20 42 75 74 20 6f  tements].  But o
1b330 74 68 65 72 20 6d 75 74 65 78 65 73 0a 2a 2a 20  ther mutexes.** 
1b340 61 72 65 20 65 6e 61 62 6c 65 64 20 73 6f 20 74  are enabled so t
1b350 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  hat SQLite will 
1b360 62 65 20 73 61 66 65 20 74 6f 20 75 73 65 20 69  be safe to use i
1b370 6e 20 61 20 6d 75 6c 74 69 2d 74 68 72 65 61 64  n a multi-thread
1b380 65 64 0a 2a 2a 20 65 6e 76 69 72 6f 6e 6d 65 6e  ed.** environmen
1b390 74 20 61 73 20 6c 6f 6e 67 20 61 73 20 6e 6f 20  t as long as no 
1b3a0 74 77 6f 20 74 68 72 65 61 64 73 20 61 74 74 65  two threads atte
1b3b0 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20 73  mpt to use the s
1b3c0 61 6d 65 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65  ame.** [database
1b3d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 74 20   connection] at 
1b3e0 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e 20 20  the same time.  
1b3f0 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f  ^If SQLite is co
1b400 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74  mpiled with.** t
1b410 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41  he [SQLITE_THREA
1b420 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f 54  DSAFE | SQLITE_T
1b430 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d  HREADSAFE=0] com
1b440 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
1b450 20 74 68 65 6e 0a 2a 2a 20 69 74 20 69 73 20 6e   then.** it is n
1b460 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73  ot possible to s
1b470 65 74 20 74 68 65 20 4d 75 6c 74 69 2d 74 68 72  et the Multi-thr
1b480 65 61 64 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  ead [threading m
1b490 6f 64 65 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c  ode] and.** [sql
1b4a0 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77  ite3_config()] w
1b4b0 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  ill return [SQLI
1b4c0 54 45 5f 45 52 52 4f 52 5d 20 69 66 20 63 61 6c  TE_ERROR] if cal
1b4d0 6c 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a 20  led with the.** 
1b4e0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
1b4f0 4c 54 49 54 48 52 45 41 44 20 63 6f 6e 66 69 67  LTITHREAD config
1b500 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 2e 3c  uration option.<
1b510 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
1b520 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41  ITE_CONFIG_SERIA
1b530 4c 49 5a 45 44 5d 5d 20 3c 64 74 3e 53 51 4c 49  LIZED]] <dt>SQLI
1b540 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c  TE_CONFIG_SERIAL
1b550 49 5a 45 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  IZED</dt>.** <dd
1b560 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72  >There are no ar
1b570 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 69 73 20  guments to this 
1b580 6f 70 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20 6f  option.  ^This o
1b590 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 0a 2a  ption sets the.*
1b5a0 2a 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  * [threading mod
1b5b0 65 5d 20 74 6f 20 53 65 72 69 61 6c 69 7a 65 64  e] to Serialized
1b5c0 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73  . In other words
1b5d0 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e  , this option en
1b5e0 61 62 6c 65 73 0a 2a 2a 20 61 6c 6c 20 6d 75 74  ables.** all mut
1b5f0 65 78 65 73 20 69 6e 63 6c 75 64 69 6e 67 20 74  exes including t
1b600 68 65 20 72 65 63 75 72 73 69 76 65 0a 2a 2a 20  he recursive.** 
1b610 6d 75 74 65 78 65 73 20 6f 6e 20 5b 64 61 74 61  mutexes on [data
1b620 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
1b630 20 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20 73   and [prepared s
1b640 74 61 74 65 6d 65 6e 74 5d 20 6f 62 6a 65 63 74  tatement] object
1b650 73 2e 0a 2a 2a 20 49 6e 20 74 68 69 73 20 6d 6f  s..** In this mo
1b660 64 65 20 28 77 68 69 63 68 20 69 73 20 74 68 65  de (which is the
1b670 20 64 65 66 61 75 6c 74 20 77 68 65 6e 20 53 51   default when SQ
1b680 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  Lite is compiled
1b690 20 77 69 74 68 0a 2a 2a 20 5b 53 51 4c 49 54 45   with.** [SQLITE
1b6a0 5f 54 48 52 45 41 44 53 41 46 45 3d 31 5d 29 20  _THREADSAFE=1]) 
1b6b0 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
1b6c0 72 79 20 77 69 6c 6c 20 69 74 73 65 6c 66 20 73  ry will itself s
1b6d0 65 72 69 61 6c 69 7a 65 20 61 63 63 65 73 73 0a  erialize access.
1b6e0 2a 2a 20 74 6f 20 5b 64 61 74 61 62 61 73 65 20  ** to [database 
1b6f0 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 61 6e 64  connections] and
1b700 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
1b710 6d 65 6e 74 73 5d 20 73 6f 20 74 68 61 74 20 74  ments] so that t
1b720 68 65 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f  he.** applicatio
1b730 6e 20 69 73 20 66 72 65 65 20 74 6f 20 75 73 65  n is free to use
1b740 20 74 68 65 20 73 61 6d 65 20 5b 64 61 74 61 62   the same [datab
1b750 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
1b760 6f 72 20 74 68 65 0a 2a 2a 20 73 61 6d 65 20 5b  or the.** same [
1b770 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
1b780 6e 74 5d 20 69 6e 20 64 69 66 66 65 72 65 6e 74  nt] in different
1b790 20 74 68 72 65 61 64 73 20 61 74 20 74 68 65 20   threads at the 
1b7a0 73 61 6d 65 20 74 69 6d 65 2e 0a 2a 2a 20 5e 49  same time..** ^I
1b7b0 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  f SQLite is comp
1b7c0 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65  iled with.** the
1b7d0 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53   [SQLITE_THREADS
1b7e0 41 46 45 20 7c 20 53 51 4c 49 54 45 5f 54 48 52  AFE | SQLITE_THR
1b7f0 45 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69  EADSAFE=0] compi
1b800 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74  le-time option t
1b810 68 65 6e 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74  hen.** it is not
1b820 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 65 74   possible to set
1b830 20 74 68 65 20 53 65 72 69 61 6c 69 7a 65 64 20   the Serialized 
1b840 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
1b850 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   and.** [sqlite3
1b860 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69 6c 6c 20  _config()] will 
1b870 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45  return [SQLITE_E
1b880 52 52 4f 52 5d 20 69 66 20 63 61 6c 6c 65 64 20  RROR] if called 
1b890 77 69 74 68 20 74 68 65 0a 2a 2a 20 53 51 4c 49  with the.** SQLI
1b8a0 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c  TE_CONFIG_SERIAL
1b8b0 49 5a 45 44 20 63 6f 6e 66 69 67 75 72 61 74 69  IZED configurati
1b8c0 6f 6e 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a  on option.</dd>.
1b8d0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1b8e0 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 5d 20 3c  ONFIG_MALLOC]] <
1b8f0 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1b900 5f 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a 2a 2a 20  _MALLOC</dt>.** 
1b910 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54  <dd> ^(The SQLIT
1b920 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 20  E_CONFIG_MALLOC 
1b930 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73  option takes a s
1b940 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 77  ingle argument w
1b950 68 69 63 68 20 69 73 20 0a 2a 2a 20 61 20 70 6f  hich is .** a po
1b960 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74  inter to an inst
1b970 61 6e 63 65 20 6f 66 20 74 68 65 20 5b 73 71 6c  ance of the [sql
1b980 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73  ite3_mem_methods
1b990 5d 20 73 74 72 75 63 74 75 72 65 2e 0a 2a 2a 20  ] structure..** 
1b9a0 54 68 65 20 61 72 67 75 6d 65 6e 74 20 73 70 65  The argument spe
1b9b0 63 69 66 69 65 73 0a 2a 2a 20 61 6c 74 65 72 6e  cifies.** altern
1b9c0 61 74 69 76 65 20 6c 6f 77 2d 6c 65 76 65 6c 20  ative low-level 
1b9d0 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
1b9e0 6e 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 62 65  n routines to be
1b9f0 20 75 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f   used in place o
1ba00 66 0a 2a 2a 20 74 68 65 20 6d 65 6d 6f 72 79 20  f.** the memory 
1ba10 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69  allocation routi
1ba20 6e 65 73 20 62 75 69 6c 74 20 69 6e 74 6f 20 53  nes built into S
1ba30 51 4c 69 74 65 2e 29 5e 20 5e 53 51 4c 69 74 65  QLite.)^ ^SQLite
1ba40 20 6d 61 6b 65 73 0a 2a 2a 20 69 74 73 20 6f 77   makes.** its ow
1ba50 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20 6f  n private copy o
1ba60 66 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66  f the content of
1ba70 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65   the [sqlite3_me
1ba80 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63  m_methods] struc
1ba90 74 75 72 65 0a 2a 2a 20 62 65 66 6f 72 65 20 74  ture.** before t
1baa0 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  he [sqlite3_conf
1bab0 69 67 28 29 5d 20 63 61 6c 6c 20 72 65 74 75 72  ig()] call retur
1bac0 6e 73 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b  ns.</dd>.**.** [
1bad0 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47  [SQLITE_CONFIG_G
1bae0 45 54 4d 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e 53  ETMALLOC]] <dt>S
1baf0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1bb00 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a 2a 2a 20 3c  MALLOC</dt>.** <
1bb10 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45  dd> ^(The SQLITE
1bb20 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f  _CONFIG_GETMALLO
1bb30 43 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61  C option takes a
1bb40 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
1bb50 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61 20 70   which.** is a p
1bb60 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73  ointer to an ins
1bb70 74 61 6e 63 65 20 6f 66 20 74 68 65 20 5b 73 71  tance of the [sq
1bb80 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64  lite3_mem_method
1bb90 73 5d 20 73 74 72 75 63 74 75 72 65 2e 0a 2a 2a  s] structure..**
1bba0 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65   The [sqlite3_me
1bbb0 6d 5f 6d 65 74 68 6f 64 73 5d 0a 2a 2a 20 73 74  m_methods].** st
1bbc0 72 75 63 74 75 72 65 20 69 73 20 66 69 6c 6c 65  ructure is fille
1bbd0 64 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65  d with the curre
1bbe0 6e 74 6c 79 20 64 65 66 69 6e 65 64 20 6d 65 6d  ntly defined mem
1bbf0 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72  ory allocation r
1bc00 6f 75 74 69 6e 65 73 2e 29 5e 0a 2a 2a 20 54 68  outines.)^.** Th
1bc10 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65  is option can be
1bc20 20 75 73 65 64 20 74 6f 20 6f 76 65 72 6c 6f 61   used to overloa
1bc30 64 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 65  d the default me
1bc40 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a  mory allocation.
1bc50 2a 2a 20 72 6f 75 74 69 6e 65 73 20 77 69 74 68  ** routines with
1bc60 20 61 20 77 72 61 70 70 65 72 20 74 68 61 74 20   a wrapper that 
1bc70 73 69 6d 75 6c 61 74 69 6f 6e 73 20 6d 65 6d 6f  simulations memo
1bc80 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61  ry allocation fa
1bc90 69 6c 75 72 65 20 6f 72 0a 2a 2a 20 74 72 61 63  ilure or.** trac
1bca0 6b 73 20 6d 65 6d 6f 72 79 20 75 73 61 67 65 2c  ks memory usage,
1bcb0 20 66 6f 72 20 65 78 61 6d 70 6c 65 2e 20 3c 2f   for example. </
1bcc0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1bcd0 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f  TE_CONFIG_SMALL_
1bce0 4d 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51 4c  MALLOC]] <dt>SQL
1bcf0 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c  ITE_CONFIG_SMALL
1bd00 5f 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a 2a 2a 20  _MALLOC</dt>.** 
1bd10 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c 49 54 45  <dd> ^The SQLITE
1bd20 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41  _CONFIG_SMALL_MA
1bd30 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20 74 61 6b 65  LLOC option take
1bd40 73 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  s single argumen
1bd50 74 20 6f 66 0a 2a 2a 20 74 79 70 65 20 69 6e 74  t of.** type int
1bd60 2c 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73  , interpreted as
1bd70 20 61 20 62 6f 6f 6c 65 61 6e 2c 20 77 68 69 63   a boolean, whic
1bd80 68 20 69 66 20 74 72 75 65 20 70 72 6f 76 69 64  h if true provid
1bd90 65 73 20 61 20 68 69 6e 74 20 74 6f 0a 2a 2a 20  es a hint to.** 
1bda0 53 51 4c 69 74 65 20 74 68 61 74 20 69 74 20 73  SQLite that it s
1bdb0 68 6f 75 6c 64 20 61 76 6f 69 64 20 6c 61 72 67  hould avoid larg
1bdc0 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
1bdd0 69 6f 6e 73 20 69 66 20 70 6f 73 73 69 62 6c 65  ions if possible
1bde0 2e 0a 2a 2a 20 53 51 4c 69 74 65 20 77 69 6c 6c  ..** SQLite will
1bdf0 20 72 75 6e 20 66 61 73 74 65 72 20 69 66 20 69   run faster if i
1be00 74 20 69 73 20 66 72 65 65 20 74 6f 20 6d 61 6b  t is free to mak
1be10 65 20 6c 61 72 67 65 20 6d 65 6d 6f 72 79 20 61  e large memory a
1be20 6c 6c 6f 63 61 74 69 6f 6e 73 2c 0a 2a 2a 20 62  llocations,.** b
1be30 75 74 20 73 6f 6d 65 20 61 70 70 6c 69 63 61 74  ut some applicat
1be40 69 6f 6e 20 6d 69 67 68 74 20 70 72 65 66 65 72  ion might prefer
1be50 20 74 6f 20 72 75 6e 20 73 6c 6f 77 65 72 20 69   to run slower i
1be60 6e 20 65 78 63 68 61 6e 67 65 20 66 6f 72 0a 2a  n exchange for.*
1be70 2a 20 67 75 61 72 61 6e 74 65 65 73 20 61 62 6f  * guarantees abo
1be80 75 74 20 6d 65 6d 6f 72 79 20 66 72 61 67 6d 65  ut memory fragme
1be90 6e 74 61 74 69 6f 6e 20 74 68 61 74 20 61 72 65  ntation that are
1bea0 20 70 6f 73 73 69 62 6c 65 20 69 66 20 6c 61 72   possible if lar
1beb0 67 65 0a 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f 6e  ge.** allocation
1bec0 73 20 61 72 65 20 61 76 6f 69 64 65 64 2e 20 20  s are avoided.  
1bed0 54 68 69 73 20 68 69 6e 74 20 69 73 20 6e 6f 72  This hint is nor
1bee0 6d 61 6c 6c 79 20 6f 66 66 2e 0a 2a 2a 20 3c 2f  mally off..** </
1bef0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1bf00 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41  TE_CONFIG_MEMSTA
1bf10 54 55 53 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  TUS]] <dt>SQLITE
1bf20 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55  _CONFIG_MEMSTATU
1bf30 53 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  S</dt>.** <dd> ^
1bf40 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1bf50 47 5f 4d 45 4d 53 54 41 54 55 53 20 6f 70 74 69  G_MEMSTATUS opti
1bf60 6f 6e 20 74 61 6b 65 73 20 73 69 6e 67 6c 65 20  on takes single 
1bf70 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 79 70 65  argument of type
1bf80 20 69 6e 74 2c 0a 2a 2a 20 69 6e 74 65 72 70 72   int,.** interpr
1bf90 65 74 65 64 20 61 73 20 61 20 62 6f 6f 6c 65 61  eted as a boolea
1bfa0 6e 2c 20 77 68 69 63 68 20 65 6e 61 62 6c 65 73  n, which enables
1bfb0 20 6f 72 20 64 69 73 61 62 6c 65 73 20 74 68 65   or disables the
1bfc0 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 2a   collection of.*
1bfd0 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  * memory allocat
1bfe0 69 6f 6e 20 73 74 61 74 69 73 74 69 63 73 2e 20  ion statistics. 
1bff0 5e 28 57 68 65 6e 20 6d 65 6d 6f 72 79 20 61 6c  ^(When memory al
1c000 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74 69 73 74  location statist
1c010 69 63 73 20 61 72 65 0a 2a 2a 20 64 69 73 61 62  ics are.** disab
1c020 6c 65 64 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69  led, the followi
1c030 6e 67 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66  ng SQLite interf
1c040 61 63 65 73 20 62 65 63 6f 6d 65 20 6e 6f 6e 2d  aces become non-
1c050 6f 70 65 72 61 74 69 6f 6e 61 6c 3a 0a 2a 2a 20  operational:.** 
1c060 20 20 3c 75 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e    <ul>.**   <li>
1c070 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
1c080 5f 75 73 65 64 28 29 5d 0a 2a 2a 20 20 20 3c 6c  _used()].**   <l
1c090 69 3e 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  i> [sqlite3_memo
1c0a0 72 79 5f 68 69 67 68 77 61 74 65 72 28 29 5d 0a  ry_highwater()].
1c0b0 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  **   <li> [sqlit
1c0c0 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f 6c 69 6d  e3_soft_heap_lim
1c0d0 69 74 36 34 28 29 5d 0a 2a 2a 20 20 20 3c 6c 69  it64()].**   <li
1c0e0 3e 20 5b 73 71 6c 69 74 65 33 5f 73 74 61 74 75  > [sqlite3_statu
1c0f0 73 36 34 28 29 5d 0a 2a 2a 20 20 20 3c 2f 75 6c  s64()].**   </ul
1c100 3e 29 5e 0a 2a 2a 20 5e 4d 65 6d 6f 72 79 20 61  >)^.** ^Memory a
1c110 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74 69 73  llocation statis
1c120 74 69 63 73 20 61 72 65 20 65 6e 61 62 6c 65 64  tics are enabled
1c130 20 62 79 20 64 65 66 61 75 6c 74 20 75 6e 6c 65   by default unle
1c140 73 73 20 53 51 4c 69 74 65 20 69 73 0a 2a 2a 20  ss SQLite is.** 
1c150 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 5b 53  compiled with [S
1c160 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d 45  QLITE_DEFAULT_ME
1c170 4d 53 54 41 54 55 53 5d 3d 30 20 69 6e 20 77 68  MSTATUS]=0 in wh
1c180 69 63 68 20 63 61 73 65 20 6d 65 6d 6f 72 79 0a  ich case memory.
1c190 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74  ** allocation st
1c1a0 61 74 69 73 74 69 63 73 20 61 72 65 20 64 69 73  atistics are dis
1c1b0 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74  abled by default
1c1c0 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  ..** </dd>.**.**
1c1d0 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1c1e0 5f 53 43 52 41 54 43 48 5d 5d 20 3c 64 74 3e 53  _SCRATCH]] <dt>S
1c1f0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52  QLITE_CONFIG_SCR
1c200 41 54 43 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  ATCH</dt>.** <dd
1c210 3e 20 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  > The SQLITE_CON
1c220 46 49 47 5f 53 43 52 41 54 43 48 20 6f 70 74 69  FIG_SCRATCH opti
1c230 6f 6e 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20  on is no longer 
1c240 75 73 65 64 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a  used..** </dd>.*
1c250 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1c260 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45 5d 5d  NFIG_PAGECACHE]]
1c270 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1c280 49 47 5f 50 41 47 45 43 41 43 48 45 3c 2f 64 74  IG_PAGECACHE</dt
1c290 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53  >.** <dd> ^The S
1c2a0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47  QLITE_CONFIG_PAG
1c2b0 45 43 41 43 48 45 20 6f 70 74 69 6f 6e 20 73 70  ECACHE option sp
1c2c0 65 63 69 66 69 65 73 20 61 20 6d 65 6d 6f 72 79  ecifies a memory
1c2d0 20 70 6f 6f 6c 0a 2a 2a 20 74 68 61 74 20 53 51   pool.** that SQ
1c2e0 4c 69 74 65 20 63 61 6e 20 75 73 65 20 66 6f 72  Lite can use for
1c2f0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 70 61   the database pa
1c300 67 65 20 63 61 63 68 65 20 77 69 74 68 20 74 68  ge cache with th
1c310 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 0a 2a  e default page.*
1c320 2a 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e  * cache implemen
1c330 74 61 74 69 6f 6e 2e 20 20 0a 2a 2a 20 54 68 69  tation.  .** Thi
1c340 73 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  s configuration 
1c350 6f 70 74 69 6f 6e 20 69 73 20 61 20 6e 6f 2d 6f  option is a no-o
1c360 70 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61 74  p if an applicat
1c370 69 6f 6e 2d 64 65 66 69 6e 65 20 70 61 67 65 0a  ion-define page.
1c380 2a 2a 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65  ** cache impleme
1c390 6e 74 61 74 69 6f 6e 20 69 73 20 6c 6f 61 64 65  ntation is loade
1c3a0 64 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c  d using the [SQL
1c3b0 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
1c3c0 45 32 5d 2e 0a 2a 2a 20 5e 54 68 65 72 65 20 61  E2]..** ^There a
1c3d0 72 65 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e  re three argumen
1c3e0 74 73 20 74 6f 20 53 51 4c 49 54 45 5f 43 4f 4e  ts to SQLITE_CON
1c3f0 46 49 47 5f 50 41 47 45 43 41 43 48 45 3a 20 41  FIG_PAGECACHE: A
1c400 20 70 6f 69 6e 74 65 72 20 74 6f 0a 2a 2a 20 38   pointer to.** 8
1c410 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20 6d 65  -byte aligned me
1c420 6d 6f 72 79 20 28 70 4d 65 6d 29 2c 20 74 68 65  mory (pMem), the
1c430 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 70 61   size of each pa
1c440 67 65 20 63 61 63 68 65 20 6c 69 6e 65 20 28 73  ge cache line (s
1c450 7a 29 2c 0a 2a 2a 20 61 6e 64 20 74 68 65 20 6e  z),.** and the n
1c460 75 6d 62 65 72 20 6f 66 20 63 61 63 68 65 20 6c  umber of cache l
1c470 69 6e 65 73 20 28 4e 29 2e 0a 2a 2a 20 54 68 65  ines (N)..** The
1c480 20 73 7a 20 61 72 67 75 6d 65 6e 74 20 73 68 6f   sz argument sho
1c490 75 6c 64 20 62 65 20 74 68 65 20 73 69 7a 65 20  uld be the size 
1c4a0 6f 66 20 74 68 65 20 6c 61 72 67 65 73 74 20 64  of the largest d
1c4b0 61 74 61 62 61 73 65 20 70 61 67 65 0a 2a 2a 20  atabase page.** 
1c4c0 28 61 20 70 6f 77 65 72 20 6f 66 20 74 77 6f 20  (a power of two 
1c4d0 62 65 74 77 65 65 6e 20 35 31 32 20 61 6e 64 20  between 512 and 
1c4e0 36 35 35 33 36 29 20 70 6c 75 73 20 73 6f 6d 65  65536) plus some
1c4f0 20 65 78 74 72 61 20 62 79 74 65 73 20 66 6f 72   extra bytes for
1c500 20 65 61 63 68 0a 2a 2a 20 70 61 67 65 20 68 65   each.** page he
1c510 61 64 65 72 2e 20 20 5e 54 68 65 20 6e 75 6d 62  ader.  ^The numb
1c520 65 72 20 6f 66 20 65 78 74 72 61 20 62 79 74 65  er of extra byte
1c530 73 20 6e 65 65 64 65 64 20 62 79 20 74 68 65 20  s needed by the 
1c540 70 61 67 65 20 68 65 61 64 65 72 0a 2a 2a 20 63  page header.** c
1c550 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64  an be determined
1c560 20 75 73 69 6e 67 20 5b 53 51 4c 49 54 45 5f 43   using [SQLITE_C
1c570 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52  ONFIG_PCACHE_HDR
1c580 53 5a 5d 2e 0a 2a 2a 20 5e 49 74 20 69 73 20 68  SZ]..** ^It is h
1c590 61 72 6d 6c 65 73 73 2c 20 61 70 61 72 74 20 66  armless, apart f
1c5a0 72 6f 6d 20 74 68 65 20 77 61 73 74 65 64 20 6d  rom the wasted m
1c5b0 65 6d 6f 72 79 2c 0a 2a 2a 20 66 6f 72 20 74 68  emory,.** for th
1c5c0 65 20 73 7a 20 70 61 72 61 6d 65 74 65 72 20 74  e sz parameter t
1c5d0 6f 20 62 65 20 6c 61 72 67 65 72 20 74 68 61 6e  o be larger than
1c5e0 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68 65   necessary.  The
1c5f0 20 70 4d 65 6d 0a 2a 2a 20 61 72 67 75 6d 65 6e   pMem.** argumen
1c600 74 20 6d 75 73 74 20 62 65 20 65 69 74 68 65 72  t must be either
1c610 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   a NULL pointer 
1c620 6f 72 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  or a pointer to 
1c630 61 6e 20 38 2d 62 79 74 65 0a 2a 2a 20 61 6c 69  an 8-byte.** ali
1c640 67 6e 65 64 20 62 6c 6f 63 6b 20 6f 66 20 6d 65  gned block of me
1c650 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65 61 73 74  mory of at least
1c660 20 73 7a 2a 4e 20 62 79 74 65 73 2c 20 6f 74 68   sz*N bytes, oth
1c670 65 72 77 69 73 65 0a 2a 2a 20 73 75 62 73 65 71  erwise.** subseq
1c680 75 65 6e 74 20 62 65 68 61 76 69 6f 72 20 69 73  uent behavior is
1c690 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 20 5e   undefined..** ^
1c6a0 57 68 65 6e 20 70 4d 65 6d 20 69 73 20 6e 6f 74  When pMem is not
1c6b0 20 4e 55 4c 4c 2c 20 53 51 4c 69 74 65 20 77 69   NULL, SQLite wi
1c6c0 6c 6c 20 73 74 72 69 76 65 20 74 6f 20 75 73 65  ll strive to use
1c6d0 20 74 68 65 20 6d 65 6d 6f 72 79 20 70 72 6f 76   the memory prov
1c6e0 69 64 65 64 0a 2a 2a 20 74 6f 20 73 61 74 69 73  ided.** to satis
1c6f0 66 79 20 70 61 67 65 20 63 61 63 68 65 20 6e 65  fy page cache ne
1c700 65 64 73 2c 20 66 61 6c 6c 69 6e 67 20 62 61 63  eds, falling bac
1c710 6b 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6d 61  k to [sqlite3_ma
1c720 6c 6c 6f 63 28 29 5d 20 69 66 0a 2a 2a 20 61 20  lloc()] if.** a 
1c730 70 61 67 65 20 63 61 63 68 65 20 6c 69 6e 65 20  page cache line 
1c740 69 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20 73  is larger than s
1c750 7a 20 62 79 74 65 73 20 6f 72 20 69 66 20 61 6c  z bytes or if al
1c760 6c 20 6f 66 20 74 68 65 20 70 4d 65 6d 20 62 75  l of the pMem bu
1c770 66 66 65 72 0a 2a 2a 20 69 73 20 65 78 68 61 75  ffer.** is exhau
1c780 73 74 65 64 2e 0a 2a 2a 20 5e 49 66 20 70 4d 65  sted..** ^If pMe
1c790 6d 20 69 73 20 4e 55 4c 4c 20 61 6e 64 20 4e 20  m is NULL and N 
1c7a0 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65  is non-zero, the
1c7b0 6e 20 65 61 63 68 20 64 61 74 61 62 61 73 65 20  n each database 
1c7c0 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 64 6f  connection.** do
1c7d0 65 73 20 61 6e 20 69 6e 69 74 69 61 6c 20 62 75  es an initial bu
1c7e0 6c 6b 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 6f  lk allocation fo
1c7f0 72 20 70 61 67 65 20 63 61 63 68 65 20 6d 65 6d  r page cache mem
1c800 6f 72 79 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c  ory.** from [sql
1c810 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 73  ite3_malloc()] s
1c820 75 66 66 69 63 69 65 6e 74 20 66 6f 72 20 4e 20  ufficient for N 
1c830 63 61 63 68 65 20 6c 69 6e 65 73 20 69 66 20 4e  cache lines if N
1c840 20 69 73 20 70 6f 73 69 74 69 76 65 20 6f 72 0a   is positive or.
1c850 2a 2a 20 6f 66 20 2d 31 30 32 34 2a 4e 20 62 79  ** of -1024*N by
1c860 74 65 73 20 69 66 20 4e 20 69 73 20 6e 65 67 61  tes if N is nega
1c870 74 69 76 65 2c 20 2e 20 5e 49 66 20 61 64 64 69  tive, . ^If addi
1c880 74 69 6f 6e 61 6c 0a 2a 2a 20 70 61 67 65 20 63  tional.** page c
1c890 61 63 68 65 20 6d 65 6d 6f 72 79 20 69 73 20 6e  ache memory is n
1c8a0 65 65 64 65 64 20 62 65 79 6f 6e 64 20 77 68 61  eeded beyond wha
1c8b0 74 20 69 73 20 70 72 6f 76 69 64 65 64 20 62 79  t is provided by
1c8c0 20 74 68 65 20 69 6e 69 74 69 61 6c 0a 2a 2a 20   the initial.** 
1c8d0 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 74 68 65 6e  allocation, then
1c8e0 20 53 51 4c 69 74 65 20 67 6f 65 73 20 74 6f 20   SQLite goes to 
1c8f0 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
1c900 29 5d 20 73 65 70 61 72 61 74 65 6c 79 20 66 6f  )] separately fo
1c910 72 20 65 61 63 68 0a 2a 2a 20 61 64 64 69 74 69  r each.** additi
1c920 6f 6e 61 6c 20 63 61 63 68 65 20 6c 69 6e 65 2e  onal cache line.
1c930 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
1c940 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41  QLITE_CONFIG_HEA
1c950 50 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  P]] <dt>SQLITE_C
1c960 4f 4e 46 49 47 5f 48 45 41 50 3c 2f 64 74 3e 0a  ONFIG_HEAP</dt>.
1c970 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c  ** <dd> ^The SQL
1c980 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 20  ITE_CONFIG_HEAP 
1c990 6f 70 74 69 6f 6e 20 73 70 65 63 69 66 69 65 73  option specifies
1c9a0 20 61 20 73 74 61 74 69 63 20 6d 65 6d 6f 72 79   a static memory
1c9b0 20 62 75 66 66 65 72 20 0a 2a 2a 20 74 68 61 74   buffer .** that
1c9c0 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65   SQLite will use
1c9d0 20 66 6f 72 20 61 6c 6c 20 6f 66 20 69 74 73 20   for all of its 
1c9e0 64 79 6e 61 6d 69 63 20 6d 65 6d 6f 72 79 20 61  dynamic memory a
1c9f0 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73 0a  llocation needs.
1ca00 2a 2a 20 62 65 79 6f 6e 64 20 74 68 6f 73 65 20  ** beyond those 
1ca10 70 72 6f 76 69 64 65 64 20 66 6f 72 20 62 79 20  provided for by 
1ca20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50  [SQLITE_CONFIG_P
1ca30 41 47 45 43 41 43 48 45 5d 2e 0a 2a 2a 20 5e 54  AGECACHE]..** ^T
1ca40 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1ca50 5f 48 45 41 50 20 6f 70 74 69 6f 6e 20 69 73 20  _HEAP option is 
1ca60 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69  only available i
1ca70 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  f SQLite is comp
1ca80 69 6c 65 64 0a 2a 2a 20 77 69 74 68 20 65 69 74  iled.** with eit
1ca90 68 65 72 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42  her [SQLITE_ENAB
1caa0 4c 45 5f 4d 45 4d 53 59 53 33 5d 20 6f 72 20 5b  LE_MEMSYS3] or [
1cab0 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
1cac0 4d 53 59 53 35 5d 20 61 6e 64 20 72 65 74 75 72  MSYS5] and retur
1cad0 6e 73 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 52  ns.** [SQLITE_ER
1cae0 52 4f 52 5d 20 69 66 20 69 6e 76 6f 6b 65 64 20  ROR] if invoked 
1caf0 6f 74 68 65 72 77 69 73 65 2e 0a 2a 2a 20 5e 54  otherwise..** ^T
1cb00 68 65 72 65 20 61 72 65 20 74 68 72 65 65 20 61  here are three a
1cb10 72 67 75 6d 65 6e 74 73 20 74 6f 20 53 51 4c 49  rguments to SQLI
1cb20 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 3a 0a  TE_CONFIG_HEAP:.
1cb30 2a 2a 20 41 6e 20 38 2d 62 79 74 65 20 61 6c 69  ** An 8-byte ali
1cb40 67 6e 65 64 20 70 6f 69 6e 74 65 72 20 74 6f 20  gned pointer to 
1cb50 74 68 65 20 6d 65 6d 6f 72 79 2c 0a 2a 2a 20 74  the memory,.** t
1cb60 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
1cb70 65 73 20 69 6e 20 74 68 65 20 6d 65 6d 6f 72 79  es in the memory
1cb80 20 62 75 66 66 65 72 2c 20 61 6e 64 20 74 68 65   buffer, and the
1cb90 20 6d 69 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61 74   minimum allocat
1cba0 69 6f 6e 20 73 69 7a 65 2e 0a 2a 2a 20 5e 49 66  ion size..** ^If
1cbb0 20 74 68 65 20 66 69 72 73 74 20 70 6f 69 6e 74   the first point
1cbc0 65 72 20 28 74 68 65 20 6d 65 6d 6f 72 79 20 70  er (the memory p
1cbd0 6f 69 6e 74 65 72 29 20 69 73 20 4e 55 4c 4c 2c  ointer) is NULL,
1cbe0 20 74 68 65 6e 20 53 51 4c 69 74 65 20 72 65 76   then SQLite rev
1cbf0 65 72 74 73 0a 2a 2a 20 74 6f 20 75 73 69 6e 67  erts.** to using
1cc00 20 69 74 73 20 64 65 66 61 75 6c 74 20 6d 65 6d   its default mem
1cc10 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 28 74  ory allocator (t
1cc20 68 65 20 73 79 73 74 65 6d 20 6d 61 6c 6c 6f 63  he system malloc
1cc30 28 29 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  () implementatio
1cc40 6e 29 2c 0a 2a 2a 20 75 6e 64 6f 69 6e 67 20 61  n),.** undoing a
1cc50 6e 79 20 70 72 69 6f 72 20 69 6e 76 6f 63 61 74  ny prior invocat
1cc60 69 6f 6e 20 6f 66 20 5b 53 51 4c 49 54 45 5f 43  ion of [SQLITE_C
1cc70 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 2e 20 20  ONFIG_MALLOC].  
1cc80 5e 49 66 20 74 68 65 0a 2a 2a 20 6d 65 6d 6f 72  ^If the.** memor
1cc90 79 20 70 6f 69 6e 74 65 72 20 69 73 20 6e 6f 74  y pointer is not
1cca0 20 4e 55 4c 4c 20 74 68 65 6e 20 74 68 65 20 61   NULL then the a
1ccb0 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72  lternative memor
1ccc0 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74 6f 72 20 69  y.** allocator i
1ccd0 73 20 65 6e 67 61 67 65 64 20 74 6f 20 68 61 6e  s engaged to han
1cce0 64 6c 65 20 61 6c 6c 20 6f 66 20 53 51 4c 69 74  dle all of SQLit
1ccf0 65 73 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  es memory alloca
1cd00 74 69 6f 6e 20 6e 65 65 64 73 2e 0a 2a 2a 20 54  tion needs..** T
1cd10 68 65 20 66 69 72 73 74 20 70 6f 69 6e 74 65 72  he first pointer
1cd20 20 28 74 68 65 20 6d 65 6d 6f 72 79 20 70 6f 69   (the memory poi
1cd30 6e 74 65 72 29 20 6d 75 73 74 20 62 65 20 61 6c  nter) must be al
1cd40 69 67 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62 79  igned to an 8-by
1cd50 74 65 0a 2a 2a 20 62 6f 75 6e 64 61 72 79 20 6f  te.** boundary o
1cd60 72 20 73 75 62 73 65 71 75 65 6e 74 20 62 65 68  r subsequent beh
1cd70 61 76 69 6f 72 20 6f 66 20 53 51 4c 69 74 65 20  avior of SQLite 
1cd80 77 69 6c 6c 20 62 65 20 75 6e 64 65 66 69 6e 65  will be undefine
1cd90 64 2e 0a 2a 2a 20 54 68 65 20 6d 69 6e 69 6d 75  d..** The minimu
1cda0 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a  m allocation siz
1cdb0 65 20 69 73 20 63 61 70 70 65 64 20 61 74 20 32  e is capped at 2
1cdc0 2a 2a 31 32 2e 20 52 65 61 73 6f 6e 61 62 6c 65  **12. Reasonable
1cdd0 20 76 61 6c 75 65 73 0a 2a 2a 20 66 6f 72 20 74   values.** for t
1cde0 68 65 20 6d 69 6e 69 6d 75 6d 20 61 6c 6c 6f 63  he minimum alloc
1cdf0 61 74 69 6f 6e 20 73 69 7a 65 20 61 72 65 20 32  ation size are 2
1ce00 2a 2a 35 20 74 68 72 6f 75 67 68 20 32 2a 2a 38  **5 through 2**8
1ce10 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  .</dd>.**.** [[S
1ce20 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54  QLITE_CONFIG_MUT
1ce30 45 58 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  EX]] <dt>SQLITE_
1ce40 43 4f 4e 46 49 47 5f 4d 55 54 45 58 3c 2f 64 74  CONFIG_MUTEX</dt
1ce50 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20  >.** <dd> ^(The 
1ce60 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
1ce70 54 45 58 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  TEX option takes
1ce80 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
1ce90 6e 74 20 77 68 69 63 68 20 69 73 20 61 0a 2a 2a  nt which is a.**
1cea0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
1ceb0 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 5b  nstance of the [
1cec0 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65  sqlite3_mutex_me
1ced0 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65  thods] structure
1cee0 2e 0a 2a 2a 20 54 68 65 20 61 72 67 75 6d 65 6e  ..** The argumen
1cef0 74 20 73 70 65 63 69 66 69 65 73 20 61 6c 74 65  t specifies alte
1cf00 72 6e 61 74 69 76 65 20 6c 6f 77 2d 6c 65 76 65  rnative low-leve
1cf10 6c 20 6d 75 74 65 78 20 72 6f 75 74 69 6e 65 73  l mutex routines
1cf20 20 74 6f 20 62 65 20 75 73 65 64 0a 2a 2a 20 69   to be used.** i
1cf30 6e 20 70 6c 61 63 65 20 74 68 65 20 6d 75 74 65  n place the mute
1cf40 78 20 72 6f 75 74 69 6e 65 73 20 62 75 69 6c 74  x routines built
1cf50 20 69 6e 74 6f 20 53 51 4c 69 74 65 2e 29 5e 20   into SQLite.)^ 
1cf60 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65 73 20 61   ^SQLite makes a
1cf70 20 63 6f 70 79 20 6f 66 0a 2a 2a 20 74 68 65 20   copy of.** the 
1cf80 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 5b  content of the [
1cf90 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65  sqlite3_mutex_me
1cfa0 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65  thods] structure
1cfb0 20 62 65 66 6f 72 65 20 74 68 65 20 63 61 6c 6c   before the call
1cfc0 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   to.** [sqlite3_
1cfd0 63 6f 6e 66 69 67 28 29 5d 20 72 65 74 75 72 6e  config()] return
1cfe0 73 2e 20 5e 49 66 20 53 51 4c 69 74 65 20 69 73  s. ^If SQLite is
1cff0 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a   compiled with.*
1d000 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48  * the [SQLITE_TH
1d010 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49 54  READSAFE | SQLIT
1d020 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20  E_THREADSAFE=0] 
1d030 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1d040 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 74 68 65 20  ion then.** the 
1d050 65 6e 74 69 72 65 20 6d 75 74 65 78 69 6e 67 20  entire mutexing 
1d060 73 75 62 73 79 73 74 65 6d 20 69 73 20 6f 6d 69  subsystem is omi
1d070 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75  tted from the bu
1d080 69 6c 64 20 61 6e 64 20 68 65 6e 63 65 20 63 61  ild and hence ca
1d090 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74  lls to.** [sqlit
1d0a0 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69 74  e3_config()] wit
1d0b0 68 20 74 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  h the SQLITE_CON
1d0c0 46 49 47 5f 4d 55 54 45 58 20 63 6f 6e 66 69 67  FIG_MUTEX config
1d0d0 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 77  uration option w
1d0e0 69 6c 6c 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53  ill.** return [S
1d0f0 51 4c 49 54 45 5f 45 52 52 4f 52 5d 2e 3c 2f 64  QLITE_ERROR].</d
1d100 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
1d110 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45  E_CONFIG_GETMUTE
1d120 58 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  X]] <dt>SQLITE_C
1d130 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 3c 2f  ONFIG_GETMUTEX</
1d140 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68  dt>.** <dd> ^(Th
1d150 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1d160 47 45 54 4d 55 54 45 58 20 6f 70 74 69 6f 6e 20  GETMUTEX option 
1d170 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61  takes a single a
1d180 72 67 75 6d 65 6e 74 20 77 68 69 63 68 0a 2a 2a  rgument which.**
1d190 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
1d1a0 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
1d1b0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  the [sqlite3_mut
1d1c0 65 78 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75  ex_methods] stru
1d1d0 63 74 75 72 65 2e 20 20 54 68 65 0a 2a 2a 20 5b  cture.  The.** [
1d1e0 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65  sqlite3_mutex_me
1d1f0 74 68 6f 64 73 5d 0a 2a 2a 20 73 74 72 75 63 74  thods].** struct
1d200 75 72 65 20 69 73 20 66 69 6c 6c 65 64 20 77 69  ure is filled wi
1d210 74 68 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79  th the currently
1d220 20 64 65 66 69 6e 65 64 20 6d 75 74 65 78 20 72   defined mutex r
1d230 6f 75 74 69 6e 65 73 2e 29 5e 0a 2a 2a 20 54 68  outines.)^.** Th
1d240 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65  is option can be
1d250 20 75 73 65 64 20 74 6f 20 6f 76 65 72 6c 6f 61   used to overloa
1d260 64 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 75  d the default mu
1d270 74 65 78 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a  tex allocation.*
1d280 2a 20 72 6f 75 74 69 6e 65 73 20 77 69 74 68 20  * routines with 
1d290 61 20 77 72 61 70 70 65 72 20 75 73 65 64 20 74  a wrapper used t
1d2a0 6f 20 74 72 61 63 6b 20 6d 75 74 65 78 20 75 73  o track mutex us
1d2b0 61 67 65 20 66 6f 72 20 70 65 72 66 6f 72 6d 61  age for performa
1d2c0 6e 63 65 0a 2a 2a 20 70 72 6f 66 69 6c 69 6e 67  nce.** profiling
1d2d0 20 6f 72 20 74 65 73 74 69 6e 67 2c 20 66 6f 72   or testing, for
1d2e0 20 65 78 61 6d 70 6c 65 2e 20 20 20 5e 49 66 20   example.   ^If 
1d2f0 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c  SQLite is compil
1d300 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b  ed with.** the [
1d310 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
1d320 45 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45 41  E | SQLITE_THREA
1d330 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65  DSAFE=0] compile
1d340 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65  -time option the
1d350 6e 0a 2a 2a 20 74 68 65 20 65 6e 74 69 72 65 20  n.** the entire 
1d360 6d 75 74 65 78 69 6e 67 20 73 75 62 73 79 73 74  mutexing subsyst
1d370 65 6d 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  em is omitted fr
1d380 6f 6d 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64  om the build and
1d390 20 68 65 6e 63 65 20 63 61 6c 6c 73 20 74 6f 0a   hence calls to.
1d3a0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ** [sqlite3_conf
1d3b0 69 67 28 29 5d 20 77 69 74 68 20 74 68 65 20 53  ig()] with the S
1d3c0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1d3d0 4d 55 54 45 58 20 63 6f 6e 66 69 67 75 72 61 74  MUTEX configurat
1d3e0 69 6f 6e 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a  ion option will.
1d3f0 2a 2a 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  ** return [SQLIT
1d400 45 5f 45 52 52 4f 52 5d 2e 3c 2f 64 64 3e 0a 2a  E_ERROR].</dd>.*
1d410 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1d420 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 5d  NFIG_LOOKASIDE]]
1d430 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1d440 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 3c 2f 64 74  IG_LOOKASIDE</dt
1d450 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20  >.** <dd> ^(The 
1d460 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f  SQLITE_CONFIG_LO
1d470 4f 4b 41 53 49 44 45 20 6f 70 74 69 6f 6e 20 74  OKASIDE option t
1d480 61 6b 65 73 20 74 77 6f 20 61 72 67 75 6d 65 6e  akes two argumen
1d490 74 73 20 74 68 61 74 20 64 65 74 65 72 6d 69 6e  ts that determin
1d4a0 65 0a 2a 2a 20 74 68 65 20 64 65 66 61 75 6c 74  e.** the default
1d4b0 20 73 69 7a 65 20 6f 66 20 6c 6f 6f 6b 61 73 69   size of lookasi
1d4c0 64 65 20 6d 65 6d 6f 72 79 20 6f 6e 20 65 61 63  de memory on eac
1d4d0 68 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  h [database conn
1d4e0 65 63 74 69 6f 6e 5d 2e 0a 2a 2a 20 54 68 65 20  ection]..** The 
1d4f0 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
1d500 73 20 74 68 65 0a 2a 2a 20 73 69 7a 65 20 6f 66  s the.** size of
1d510 20 65 61 63 68 20 6c 6f 6f 6b 61 73 69 64 65 20   each lookaside 
1d520 62 75 66 66 65 72 20 73 6c 6f 74 20 61 6e 64 20  buffer slot and 
1d530 74 68 65 20 73 65 63 6f 6e 64 20 69 73 20 74 68  the second is th
1d540 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 73  e number of.** s
1d550 6c 6f 74 73 20 61 6c 6c 6f 63 61 74 65 64 20 74  lots allocated t
1d560 6f 20 65 61 63 68 20 64 61 74 61 62 61 73 65 20  o each database 
1d570 63 6f 6e 6e 65 63 74 69 6f 6e 2e 29 5e 20 20 5e  connection.)^  ^
1d580 28 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c  (SQLITE_CONFIG_L
1d590 4f 4f 4b 41 53 49 44 45 0a 2a 2a 20 73 65 74 73  OOKASIDE.** sets
1d5a0 20 74 68 65 20 3c 69 3e 64 65 66 61 75 6c 74 3c   the <i>default<
1d5b0 2f 69 3e 20 6c 6f 6f 6b 61 73 69 64 65 20 73 69  /i> lookaside si
1d5c0 7a 65 2e 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  ze. The [SQLITE_
1d5d0 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49  DBCONFIG_LOOKASI
1d5e0 44 45 5d 0a 2a 2a 20 6f 70 74 69 6f 6e 20 74 6f  DE].** option to
1d5f0 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   [sqlite3_db_con
1d600 66 69 67 28 29 5d 20 63 61 6e 20 62 65 20 75 73  fig()] can be us
1d610 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  ed to change the
1d620 20 6c 6f 6f 6b 61 73 69 64 65 0a 2a 2a 20 63 6f   lookaside.** co
1d630 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 6e 20 69  nfiguration on i
1d640 6e 64 69 76 69 64 75 61 6c 20 63 6f 6e 6e 65 63  ndividual connec
1d650 74 69 6f 6e 73 2e 29 5e 20 3c 2f 64 64 3e 0a 2a  tions.)^ </dd>.*
1d660 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1d670 4e 46 49 47 5f 50 43 41 43 48 45 32 5d 5d 20 3c  NFIG_PCACHE2]] <
1d680 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1d690 5f 50 43 41 43 48 45 32 3c 2f 64 74 3e 0a 2a 2a  _PCACHE2</dt>.**
1d6a0 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49   <dd> ^(The SQLI
1d6b0 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45  TE_CONFIG_PCACHE
1d6c0 32 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61  2 option takes a
1d6d0 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
1d6e0 20 77 68 69 63 68 20 69 73 20 0a 2a 2a 20 61 20   which is .** a 
1d6f0 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 5b 73  pointer to an [s
1d700 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65  qlite3_pcache_me
1d710 74 68 6f 64 73 32 5d 20 6f 62 6a 65 63 74 2e 20  thods2] object. 
1d720 20 54 68 69 73 20 6f 62 6a 65 63 74 20 73 70 65   This object spe
1d730 63 69 66 69 65 73 0a 2a 2a 20 74 68 65 20 69 6e  cifies.** the in
1d740 74 65 72 66 61 63 65 20 74 6f 20 61 20 63 75 73  terface to a cus
1d750 74 6f 6d 20 70 61 67 65 20 63 61 63 68 65 20 69  tom page cache i
1d760 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 29 5e  mplementation.)^
1d770 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65  .** ^SQLite make
1d780 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  s a copy of the 
1d790 5b 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f  [sqlite3_pcache_
1d7a0 6d 65 74 68 6f 64 73 32 5d 20 6f 62 6a 65 63 74  methods2] object
1d7b0 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  .</dd>.**.** [[S
1d7c0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1d7d0 50 43 41 43 48 45 32 5d 5d 20 3c 64 74 3e 53 51  PCACHE2]] <dt>SQ
1d7e0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50  LITE_CONFIG_GETP
1d7f0 43 41 43 48 45 32 3c 2f 64 74 3e 0a 2a 2a 20 3c  CACHE2</dt>.** <
1d800 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45  dd> ^(The SQLITE
1d810 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48  _CONFIG_GETPCACH
1d820 45 32 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  E2 option takes 
1d830 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  a single argumen
1d840 74 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61 20  t which.** is a 
1d850 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 5b 73  pointer to an [s
1d860 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65  qlite3_pcache_me
1d870 74 68 6f 64 73 32 5d 20 6f 62 6a 65 63 74 2e 20  thods2] object. 
1d880 20 53 51 4c 69 74 65 20 63 6f 70 69 65 73 20 6f   SQLite copies o
1d890 66 0a 2a 2a 20 74 68 65 20 63 75 72 72 65 6e 74  f.** the current
1d8a0 20 70 61 67 65 20 63 61 63 68 65 20 69 6d 70 6c   page cache impl
1d8b0 65 6d 65 6e 74 61 74 69 6f 6e 20 69 6e 74 6f 20  ementation into 
1d8c0 74 68 61 74 20 6f 62 6a 65 63 74 2e 29 5e 20 3c  that object.)^ <
1d8d0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
1d8e0 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 5d 5d  ITE_CONFIG_LOG]]
1d8f0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1d900 49 47 5f 4c 4f 47 3c 2f 64 74 3e 0a 2a 2a 20 3c  IG_LOG</dt>.** <
1d910 64 64 3e 20 54 68 65 20 53 51 4c 49 54 45 5f 43  dd> The SQLITE_C
1d920 4f 4e 46 49 47 5f 4c 4f 47 20 6f 70 74 69 6f 6e  ONFIG_LOG option
1d930 20 69 73 20 75 73 65 64 20 74 6f 20 63 6f 6e 66   is used to conf
1d940 69 67 75 72 65 20 74 68 65 20 53 51 4c 69 74 65  igure the SQLite
1d950 0a 2a 2a 20 67 6c 6f 62 61 6c 20 5b 65 72 72 6f  .** global [erro
1d960 72 20 6c 6f 67 5d 2e 0a 2a 2a 20 28 5e 54 68 65  r log]..** (^The
1d970 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c   SQLITE_CONFIG_L
1d980 4f 47 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  OG option takes 
1d990 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20 61  two arguments: a
1d9a0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 0a 2a 2a   pointer to a.**
1d9b0 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 61   function with a
1d9c0 20 63 61 6c 6c 20 73 69 67 6e 61 74 75 72 65 20   call signature 
1d9d0 6f 66 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a  of void(*)(void*
1d9e0 2c 69 6e 74 2c 63 6f 6e 73 74 20 63 68 61 72 2a  ,int,const char*
1d9f0 29 2c 20 0a 2a 2a 20 61 6e 64 20 61 20 70 6f 69  ), .** and a poi
1da00 6e 74 65 72 20 74 6f 20 76 6f 69 64 2e 20 5e 49  nter to void. ^I
1da10 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 70  f the function p
1da20 6f 69 6e 74 65 72 20 69 73 20 6e 6f 74 20 4e 55  ointer is not NU
1da30 4c 4c 2c 20 69 74 20 69 73 0a 2a 2a 20 69 6e 76  LL, it is.** inv
1da40 6f 6b 65 64 20 62 79 20 5b 73 71 6c 69 74 65 33  oked by [sqlite3
1da50 5f 6c 6f 67 28 29 5d 20 74 6f 20 70 72 6f 63 65  _log()] to proce
1da60 73 73 20 65 61 63 68 20 6c 6f 67 67 69 6e 67 20  ss each logging 
1da70 65 76 65 6e 74 2e 20 20 5e 49 66 20 74 68 65 0a  event.  ^If the.
1da80 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e  ** function poin
1da90 74 65 72 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65  ter is NULL, the
1daa0 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d   [sqlite3_log()]
1dab0 20 69 6e 74 65 72 66 61 63 65 20 62 65 63 6f 6d   interface becom
1dac0 65 73 20 61 20 6e 6f 2d 6f 70 2e 0a 2a 2a 20 5e  es a no-op..** ^
1dad0 54 68 65 20 76 6f 69 64 20 70 6f 69 6e 74 65 72  The void pointer
1dae0 20 74 68 61 74 20 69 73 20 74 68 65 20 73 65 63   that is the sec
1daf0 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ond argument to 
1db00 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f  SQLITE_CONFIG_LO
1db10 47 20 69 73 0a 2a 2a 20 70 61 73 73 65 64 20 74  G is.** passed t
1db20 68 72 6f 75 67 68 20 61 73 20 74 68 65 20 66 69  hrough as the fi
1db30 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f  rst parameter to
1db40 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
1db50 2d 64 65 66 69 6e 65 64 20 6c 6f 67 67 65 72 0a  -defined logger.
1db60 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e  ** function when
1db70 65 76 65 72 20 74 68 61 74 20 66 75 6e 63 74 69  ever that functi
1db80 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64 2e 20 20  on is invoked.  
1db90 5e 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61  ^The second para
1dba0 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 74 68 65 20  meter to.** the 
1dbb0 6c 6f 67 67 65 72 20 66 75 6e 63 74 69 6f 6e 20  logger function 
1dbc0 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  is a copy of the
1dbd0 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
1dbe0 20 74 6f 20 74 68 65 20 63 6f 72 72 65 73 70 6f   to the correspo
1dbf0 6e 64 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65  nding.** [sqlite
1dc00 33 5f 6c 6f 67 28 29 5d 20 63 61 6c 6c 20 61 6e  3_log()] call an
1dc10 64 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f  d is intended to
1dc20 20 62 65 20 61 20 5b 72 65 73 75 6c 74 20 63 6f   be a [result co
1dc30 64 65 5d 20 6f 72 20 61 6e 0a 2a 2a 20 5b 65 78  de] or an.** [ex
1dc40 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
1dc50 64 65 5d 2e 20 20 5e 54 68 65 20 74 68 69 72 64  de].  ^The third
1dc60 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73 65   parameter passe
1dc70 64 20 74 6f 20 74 68 65 20 6c 6f 67 67 65 72 20  d to the logger 
1dc80 69 73 0a 2a 2a 20 6c 6f 67 20 6d 65 73 73 61 67  is.** log messag
1dc90 65 20 61 66 74 65 72 20 66 6f 72 6d 61 74 74 69  e after formatti
1dca0 6e 67 20 76 69 61 20 5b 73 71 6c 69 74 65 33 5f  ng via [sqlite3_
1dcb0 73 6e 70 72 69 6e 74 66 28 29 5d 2e 0a 2a 2a 20  snprintf()]..** 
1dcc0 54 68 65 20 53 51 4c 69 74 65 20 6c 6f 67 67 69  The SQLite loggi
1dcd0 6e 67 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  ng interface is 
1dce0 6e 6f 74 20 72 65 65 6e 74 72 61 6e 74 3b 20 74  not reentrant; t
1dcf0 68 65 20 6c 6f 67 67 65 72 20 66 75 6e 63 74 69  he logger functi
1dd00 6f 6e 0a 2a 2a 20 73 75 70 70 6c 69 65 64 20 62  on.** supplied b
1dd10 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  y the applicatio
1dd20 6e 20 6d 75 73 74 20 6e 6f 74 20 69 6e 76 6f 6b  n must not invok
1dd30 65 20 61 6e 79 20 53 51 4c 69 74 65 20 69 6e 74  e any SQLite int
1dd40 65 72 66 61 63 65 2e 0a 2a 2a 20 49 6e 20 61 20  erface..** In a 
1dd50 6d 75 6c 74 69 2d 74 68 72 65 61 64 65 64 20 61  multi-threaded a
1dd60 70 70 6c 69 63 61 74 69 6f 6e 2c 20 74 68 65 20  pplication, the 
1dd70 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
1dd80 6e 65 64 20 6c 6f 67 67 65 72 0a 2a 2a 20 66 75  ned logger.** fu
1dd90 6e 63 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 74  nction must be t
1dda0 68 72 65 61 64 73 61 66 65 2e 20 3c 2f 64 64 3e  hreadsafe. </dd>
1ddb0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
1ddc0 43 4f 4e 46 49 47 5f 55 52 49 5d 5d 20 3c 64 74  CONFIG_URI]] <dt
1ddd0 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55  >SQLITE_CONFIG_U
1dde0 52 49 0a 2a 2a 20 3c 64 64 3e 5e 28 54 68 65 20  RI.** <dd>^(The 
1ddf0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52  SQLITE_CONFIG_UR
1de00 49 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61  I option takes a
1de10 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
1de20 20 6f 66 20 74 79 70 65 20 69 6e 74 2e 0a 2a 2a   of type int..**
1de30 20 49 66 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68   If non-zero, th
1de40 65 6e 20 55 52 49 20 68 61 6e 64 6c 69 6e 67 20  en URI handling 
1de50 69 73 20 67 6c 6f 62 61 6c 6c 79 20 65 6e 61 62  is globally enab
1de60 6c 65 64 2e 20 49 66 20 74 68 65 20 70 61 72 61  led. If the para
1de70 6d 65 74 65 72 20 69 73 20 7a 65 72 6f 2c 0a 2a  meter is zero,.*
1de80 2a 20 74 68 65 6e 20 55 52 49 20 68 61 6e 64 6c  * then URI handl
1de90 69 6e 67 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20  ing is globally 
1dea0 64 69 73 61 62 6c 65 64 2e 29 5e 20 5e 49 66 20  disabled.)^ ^If 
1deb0 55 52 49 20 68 61 6e 64 6c 69 6e 67 20 69 73 20  URI handling is 
1dec0 67 6c 6f 62 61 6c 6c 79 0a 2a 2a 20 65 6e 61 62  globally.** enab
1ded0 6c 65 64 2c 20 61 6c 6c 20 66 69 6c 65 6e 61 6d  led, all filenam
1dee0 65 73 20 70 61 73 73 65 64 20 74 6f 20 5b 73 71  es passed to [sq
1def0 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b  lite3_open()], [
1df00 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
1df10 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  )],.** [sqlite3_
1df20 6f 70 65 6e 31 36 28 29 5d 20 6f 72 0a 2a 2a 20  open16()] or.** 
1df30 73 70 65 63 69 66 69 65 64 20 61 73 20 70 61 72  specified as par
1df40 74 20 6f 66 20 5b 41 54 54 41 43 48 5d 20 63 6f  t of [ATTACH] co
1df50 6d 6d 61 6e 64 73 20 61 72 65 20 69 6e 74 65 72  mmands are inter
1df60 70 72 65 74 65 64 20 61 73 20 55 52 49 73 2c 20  preted as URIs, 
1df70 72 65 67 61 72 64 6c 65 73 73 0a 2a 2a 20 6f 66  regardless.** of
1df80 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
1df90 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  the [SQLITE_OPEN
1dfa0 5f 55 52 49 5d 20 66 6c 61 67 20 69 73 20 73 65  _URI] flag is se
1dfb0 74 20 77 68 65 6e 20 74 68 65 20 64 61 74 61 62  t when the datab
1dfc0 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  ase.** connectio
1dfd0 6e 20 69 73 20 6f 70 65 6e 65 64 2e 20 5e 49 66  n is opened. ^If
1dfe0 20 69 74 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20   it is globally 
1dff0 64 69 73 61 62 6c 65 64 2c 20 66 69 6c 65 6e 61  disabled, filena
1e000 6d 65 73 20 61 72 65 0a 2a 2a 20 6f 6e 6c 79 20  mes are.** only 
1e010 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 55  interpreted as U
1e020 52 49 73 20 69 66 20 74 68 65 20 53 51 4c 49 54  RIs if the SQLIT
1e030 45 5f 4f 50 45 4e 5f 55 52 49 20 66 6c 61 67 20  E_OPEN_URI flag 
1e040 69 73 20 73 65 74 20 77 68 65 6e 20 74 68 65 0a  is set when the.
1e050 2a 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ** database conn
1e060 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64  ection is opened
1e070 2e 20 5e 28 42 79 20 64 65 66 61 75 6c 74 2c 20  . ^(By default, 
1e080 55 52 49 20 68 61 6e 64 6c 69 6e 67 20 69 73 20  URI handling is 
1e090 67 6c 6f 62 61 6c 6c 79 0a 2a 2a 20 64 69 73 61  globally.** disa
1e0a0 62 6c 65 64 2e 20 54 68 65 20 64 65 66 61 75 6c  bled. The defaul
1e0b0 74 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20 63  t value may be c
1e0c0 68 61 6e 67 65 64 20 62 79 20 63 6f 6d 70 69 6c  hanged by compil
1e0d0 69 6e 67 20 77 69 74 68 20 74 68 65 0a 2a 2a 20  ing with the.** 
1e0e0 5b 53 51 4c 49 54 45 5f 55 53 45 5f 55 52 49 5d  [SQLITE_USE_URI]
1e0f0 20 73 79 6d 62 6f 6c 20 64 65 66 69 6e 65 64 2e   symbol defined.
1e100 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  )^.**.** [[SQLIT
1e110 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e  E_CONFIG_COVERIN
1e120 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 5d 20 3c  G_INDEX_SCAN]] <
1e130 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1e140 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f  _COVERING_INDEX_
1e150 53 43 41 4e 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65  SCAN.** <dd>^The
1e160 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43   SQLITE_CONFIG_C
1e170 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43  OVERING_INDEX_SC
1e180 41 4e 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  AN option takes 
1e190 61 20 73 69 6e 67 6c 65 20 69 6e 74 65 67 65 72  a single integer
1e1a0 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 77 68 69  .** argument whi
1e1b0 63 68 20 69 73 20 69 6e 74 65 72 70 72 65 74 65  ch is interprete
1e1c0 64 20 61 73 20 61 20 62 6f 6f 6c 65 61 6e 20 69  d as a boolean i
1e1d0 6e 20 6f 72 64 65 72 20 74 6f 20 65 6e 61 62 6c  n order to enabl
1e1e0 65 20 6f 72 20 64 69 73 61 62 6c 65 0a 2a 2a 20  e or disable.** 
1e1f0 74 68 65 20 75 73 65 20 6f 66 20 63 6f 76 65 72  the use of cover
1e200 69 6e 67 20 69 6e 64 69 63 65 73 20 66 6f 72 20  ing indices for 
1e210 66 75 6c 6c 20 74 61 62 6c 65 20 73 63 61 6e 73  full table scans
1e220 20 69 6e 20 74 68 65 20 71 75 65 72 79 20 6f 70   in the query op
1e230 74 69 6d 69 7a 65 72 2e 0a 2a 2a 20 5e 54 68 65  timizer..** ^The
1e240 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67   default setting
1e250 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a 2a   is determined.*
1e260 2a 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45  * by the [SQLITE
1e270 5f 41 4c 4c 4f 57 5f 43 4f 56 45 52 49 4e 47 5f  _ALLOW_COVERING_
1e280 49 4e 44 45 58 5f 53 43 41 4e 5d 20 63 6f 6d 70  INDEX_SCAN] comp
1e290 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2c  ile-time option,
1e2a0 20 6f 72 20 69 73 20 22 6f 6e 22 0a 2a 2a 20 69   or is "on".** i
1e2b0 66 20 74 68 61 74 20 63 6f 6d 70 69 6c 65 2d 74  f that compile-t
1e2c0 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d  ime option is om
1e2d0 69 74 74 65 64 2e 0a 2a 2a 20 54 68 65 20 61 62  itted..** The ab
1e2e0 69 6c 69 74 79 20 74 6f 20 64 69 73 61 62 6c 65  ility to disable
1e2f0 20 74 68 65 20 75 73 65 20 6f 66 20 63 6f 76 65   the use of cove
1e300 72 69 6e 67 20 69 6e 64 69 63 65 73 20 66 6f 72  ring indices for
1e310 20 66 75 6c 6c 20 74 61 62 6c 65 20 73 63 61 6e   full table scan
1e320 73 0a 2a 2a 20 69 73 20 62 65 63 61 75 73 65 20  s.** is because 
1e330 73 6f 6d 65 20 69 6e 63 6f 72 72 65 63 74 6c 79  some incorrectly
1e340 20 63 6f 64 65 64 20 6c 65 67 61 63 79 20 61 70   coded legacy ap
1e350 70 6c 69 63 61 74 69 6f 6e 73 20 6d 69 67 68 74  plications might
1e360 20 6d 61 6c 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20   malfunction.** 
1e370 77 68 65 6e 20 74 68 65 20 6f 70 74 69 6d 69 7a  when the optimiz
1e380 61 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64  ation is enabled
1e390 2e 20 20 50 72 6f 76 69 64 69 6e 67 20 74 68 65  .  Providing the
1e3a0 20 61 62 69 6c 69 74 79 20 74 6f 0a 2a 2a 20 64   ability to.** d
1e3b0 69 73 61 62 6c 65 20 74 68 65 20 6f 70 74 69 6d  isable the optim
1e3c0 69 7a 61 74 69 6f 6e 20 61 6c 6c 6f 77 73 20 74  ization allows t
1e3d0 68 65 20 6f 6c 64 65 72 2c 20 62 75 67 67 79 20  he older, buggy 
1e3e0 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 6f 64 65  application code
1e3f0 20 74 6f 20 77 6f 72 6b 0a 2a 2a 20 77 69 74 68   to work.** with
1e400 6f 75 74 20 63 68 61 6e 67 65 20 65 76 65 6e 20  out change even 
1e410 77 69 74 68 20 6e 65 77 65 72 20 76 65 72 73 69  with newer versi
1e420 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a  ons of SQLite..*
1e430 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1e440 4e 46 49 47 5f 50 43 41 43 48 45 5d 5d 20 5b 5b  NFIG_PCACHE]] [[
1e450 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
1e460 54 50 43 41 43 48 45 5d 5d 0a 2a 2a 20 3c 64 74  TPCACHE]].** <dt
1e470 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50  >SQLITE_CONFIG_P
1e480 43 41 43 48 45 20 61 6e 64 20 53 51 4c 49 54 45  CACHE and SQLITE
1e490 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48  _CONFIG_GETPCACH
1e4a0 45 0a 2a 2a 20 3c 64 64 3e 20 54 68 65 73 65 20  E.** <dd> These 
1e4b0 6f 70 74 69 6f 6e 73 20 61 72 65 20 6f 62 73 6f  options are obso
1e4c0 6c 65 74 65 20 61 6e 64 20 73 68 6f 75 6c 64 20  lete and should 
1e4d0 6e 6f 74 20 62 65 20 75 73 65 64 20 62 79 20 6e  not be used by n
1e4e0 65 77 20 63 6f 64 65 2e 0a 2a 2a 20 54 68 65 79  ew code..** They
1e4f0 20 61 72 65 20 72 65 74 61 69 6e 65 64 20 66 6f   are retained fo
1e500 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70  r backwards comp
1e510 61 74 69 62 69 6c 69 74 79 20 62 75 74 20 61 72  atibility but ar
1e520 65 20 6e 6f 77 20 6e 6f 2d 6f 70 73 2e 0a 2a 2a  e now no-ops..**
1e530 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
1e540 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c  QLITE_CONFIG_SQL
1e550 4c 4f 47 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c  LOG]].** <dt>SQL
1e560 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f  ITE_CONFIG_SQLLO
1e570 47 0a 2a 2a 20 3c 64 64 3e 54 68 69 73 20 6f 70  G.** <dd>This op
1e580 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 61 76 61  tion is only ava
1e590 69 6c 61 62 6c 65 20 69 66 20 73 71 6c 69 74 65  ilable if sqlite
1e5a0 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   is compiled wit
1e5b0 68 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45  h the.** [SQLITE
1e5c0 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 5d 20  _ENABLE_SQLLOG] 
1e5d0 70 72 65 2d 70 72 6f 63 65 73 73 6f 72 20 6d 61  pre-processor ma
1e5e0 63 72 6f 20 64 65 66 69 6e 65 64 2e 20 54 68 65  cro defined. The
1e5f0 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
1e600 73 68 6f 75 6c 64 0a 2a 2a 20 62 65 20 61 20 70  should.** be a p
1e610 6f 69 6e 74 65 72 20 74 6f 20 61 20 66 75 6e 63  ointer to a func
1e620 74 69 6f 6e 20 6f 66 20 74 79 70 65 20 76 6f 69  tion of type voi
1e630 64 28 2a 29 28 76 6f 69 64 2a 2c 73 71 6c 69 74  d(*)(void*,sqlit
1e640 65 33 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c  e3*,const char*,
1e650 20 69 6e 74 29 2e 0a 2a 2a 20 54 68 65 20 73 65   int)..** The se
1e660 63 6f 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 6f  cond should be o
1e670 66 20 74 79 70 65 20 28 76 6f 69 64 2a 29 2e 20  f type (void*). 
1e680 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  The callback is 
1e690 69 6e 76 6f 6b 65 64 20 62 79 20 74 68 65 20 6c  invoked by the l
1e6a0 69 62 72 61 72 79 0a 2a 2a 20 69 6e 20 74 68 72  ibrary.** in thr
1e6b0 65 65 20 73 65 70 61 72 61 74 65 20 63 69 72 63  ee separate circ
1e6c0 75 6d 73 74 61 6e 63 65 73 2c 20 69 64 65 6e 74  umstances, ident
1e6d0 69 66 69 65 64 20 62 79 20 74 68 65 20 76 61 6c  ified by the val
1e6e0 75 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65  ue passed as the
1e6f0 0a 2a 2a 20 66 6f 75 72 74 68 20 70 61 72 61 6d  .** fourth param
1e700 65 74 65 72 2e 20 49 66 20 74 68 65 20 66 6f 75  eter. If the fou
1e710 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69 73  rth parameter is
1e720 20 30 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74   0, then the dat
1e730 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1e740 0a 2a 2a 20 70 61 73 73 65 64 20 61 73 20 74 68  .** passed as th
1e750 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
1e760 74 20 68 61 73 20 6a 75 73 74 20 62 65 65 6e 20  t has just been 
1e770 6f 70 65 6e 65 64 2e 20 54 68 65 20 74 68 69 72  opened. The thir
1e780 64 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 70 6f  d argument.** po
1e790 69 6e 74 73 20 74 6f 20 61 20 62 75 66 66 65 72  ints to a buffer
1e7a0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
1e7b0 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 61 69 6e  name of the main
1e7c0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20   database file. 
1e7d0 49 66 20 74 68 65 0a 2a 2a 20 66 6f 75 72 74 68  If the.** fourth
1e7e0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 31 2c   parameter is 1,
1e7f0 20 74 68 65 6e 20 74 68 65 20 53 51 4c 20 73 74   then the SQL st
1e800 61 74 65 6d 65 6e 74 20 74 68 61 74 20 74 68 65  atement that the
1e810 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
1e820 0a 2a 2a 20 70 6f 69 6e 74 73 20 74 6f 20 68 61  .** points to ha
1e830 73 20 6a 75 73 74 20 62 65 65 6e 20 65 78 65 63  s just been exec
1e840 75 74 65 64 2e 20 4f 72 2c 20 69 66 20 74 68 65  uted. Or, if the
1e850 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
1e860 72 20 69 73 20 32 2c 20 74 68 65 6e 0a 2a 2a 20  r is 2, then.** 
1e870 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62  the connection b
1e880 65 69 6e 67 20 70 61 73 73 65 64 20 61 73 20 74  eing passed as t
1e890 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  he second parame
1e8a0 74 65 72 20 69 73 20 62 65 69 6e 67 20 63 6c 6f  ter is being clo
1e8b0 73 65 64 2e 20 54 68 65 0a 2a 2a 20 74 68 69 72  sed. The.** thir
1e8c0 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 70  d parameter is p
1e8d0 61 73 73 65 64 20 4e 55 4c 4c 20 49 6e 20 74 68  assed NULL In th
1e8e0 69 73 20 63 61 73 65 2e 20 20 41 6e 20 65 78 61  is case.  An exa
1e8f0 6d 70 6c 65 20 6f 66 20 75 73 69 6e 67 20 74 68  mple of using th
1e900 69 73 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74  is.** configurat
1e910 69 6f 6e 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62  ion option can b
1e920 65 20 73 65 65 6e 20 69 6e 20 74 68 65 20 22 74  e seen in the "t
1e930 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f  est_sqllog.c" so
1e940 75 72 63 65 20 66 69 6c 65 20 69 6e 0a 2a 2a 20  urce file in.** 
1e950 74 68 65 20 63 61 6e 6f 6e 69 63 61 6c 20 53 51  the canonical SQ
1e960 4c 69 74 65 20 73 6f 75 72 63 65 20 74 72 65 65  Lite source tree
1e970 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  .</dd>.**.** [[S
1e980 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41  QLITE_CONFIG_MMA
1e990 50 5f 53 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74 3e  P_SIZE]].** <dt>
1e9a0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d  SQLITE_CONFIG_MM
1e9b0 41 50 5f 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e 5e  AP_SIZE.** <dd>^
1e9c0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d  SQLITE_CONFIG_MM
1e9d0 41 50 5f 53 49 5a 45 20 74 61 6b 65 73 20 74 77  AP_SIZE takes tw
1e9e0 6f 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72  o 64-bit integer
1e9f0 20 28 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 29   (sqlite3_int64)
1ea00 20 76 61 6c 75 65 73 0a 2a 2a 20 74 68 61 74 20   values.** that 
1ea10 61 72 65 20 74 68 65 20 64 65 66 61 75 6c 74 20  are the default 
1ea20 6d 6d 61 70 20 73 69 7a 65 20 6c 69 6d 69 74 20  mmap size limit 
1ea30 28 74 68 65 20 64 65 66 61 75 6c 74 20 73 65 74  (the default set
1ea40 74 69 6e 67 20 66 6f 72 0a 2a 2a 20 5b 50 52 41  ting for.** [PRA
1ea50 47 4d 41 20 6d 6d 61 70 5f 73 69 7a 65 5d 29 20  GMA mmap_size]) 
1ea60 61 6e 64 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  and the maximum 
1ea70 61 6c 6c 6f 77 65 64 20 6d 6d 61 70 20 73 69 7a  allowed mmap siz
1ea80 65 20 6c 69 6d 69 74 2e 0a 2a 2a 20 5e 54 68 65  e limit..** ^The
1ea90 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67   default setting
1eaa0 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64   can be overridd
1eab0 65 6e 20 62 79 20 65 61 63 68 20 64 61 74 61 62  en by each datab
1eac0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75  ase connection u
1ead0 73 69 6e 67 0a 2a 2a 20 65 69 74 68 65 72 20 74  sing.** either t
1eae0 68 65 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f  he [PRAGMA mmap_
1eaf0 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2c 20 6f  size] command, o
1eb00 72 20 62 79 20 75 73 69 6e 67 20 74 68 65 0a 2a  r by using the.*
1eb10 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  * [SQLITE_FCNTL_
1eb20 4d 4d 41 50 5f 53 49 5a 45 5d 20 66 69 6c 65 20  MMAP_SIZE] file 
1eb30 63 6f 6e 74 72 6f 6c 2e 20 20 5e 28 54 68 65 20  control.  ^(The 
1eb40 6d 61 78 69 6d 75 6d 20 61 6c 6c 6f 77 65 64 20  maximum allowed 
1eb50 6d 6d 61 70 20 73 69 7a 65 0a 2a 2a 20 77 69 6c  mmap size.** wil
1eb60 6c 20 62 65 20 73 69 6c 65 6e 74 6c 79 20 74 72  l be silently tr
1eb70 75 6e 63 61 74 65 64 20 69 66 20 6e 65 63 65 73  uncated if neces
1eb80 73 61 72 79 20 73 6f 20 74 68 61 74 20 69 74 20  sary so that it 
1eb90 64 6f 65 73 20 6e 6f 74 20 65 78 63 65 65 64 20  does not exceed 
1eba0 74 68 65 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74  the.** compile-t
1ebb0 69 6d 65 20 6d 61 78 69 6d 75 6d 20 6d 6d 61 70  ime maximum mmap
1ebc0 20 73 69 7a 65 20 73 65 74 20 62 79 20 74 68 65   size set by the
1ebd0 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f  .** [SQLITE_MAX_
1ebe0 4d 4d 41 50 5f 53 49 5a 45 5d 20 63 6f 6d 70 69  MMAP_SIZE] compi
1ebf0 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 29  le-time option.)
1ec00 5e 0a 2a 2a 20 5e 49 66 20 65 69 74 68 65 72 20  ^.** ^If either 
1ec10 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73  argument to this
1ec20 20 6f 70 74 69 6f 6e 20 69 73 20 6e 65 67 61 74   option is negat
1ec30 69 76 65 2c 20 74 68 65 6e 20 74 68 61 74 20 61  ive, then that a
1ec40 72 67 75 6d 65 6e 74 20 69 73 0a 2a 2a 20 63 68  rgument is.** ch
1ec50 61 6e 67 65 64 20 74 6f 20 69 74 73 20 63 6f 6d  anged to its com
1ec60 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75 6c  pile-time defaul
1ec70 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  t..**.** [[SQLIT
1ec80 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48  E_CONFIG_WIN32_H
1ec90 45 41 50 53 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74  EAPSIZE]].** <dt
1eca0 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57  >SQLITE_CONFIG_W
1ecb0 49 4e 33 32 5f 48 45 41 50 53 49 5a 45 0a 2a 2a  IN32_HEAPSIZE.**
1ecc0 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49 54 45   <dd>^The SQLITE
1ecd0 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45  _CONFIG_WIN32_HE
1ece0 41 50 53 49 5a 45 20 6f 70 74 69 6f 6e 20 69 73  APSIZE option is
1ecf0 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20   only available 
1ed00 69 66 20 53 51 4c 69 74 65 20 69 73 0a 2a 2a 20  if SQLite is.** 
1ed10 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20 57 69 6e  compiled for Win
1ed20 64 6f 77 73 20 77 69 74 68 20 74 68 65 20 5b 53  dows with the [S
1ed30 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c  QLITE_WIN32_MALL
1ed40 4f 43 5d 20 70 72 65 2d 70 72 6f 63 65 73 73 6f  OC] pre-processo
1ed50 72 20 6d 61 63 72 6f 0a 2a 2a 20 64 65 66 69 6e  r macro.** defin
1ed60 65 64 2e 20 5e 53 51 4c 49 54 45 5f 43 4f 4e 46  ed. ^SQLITE_CONF
1ed70 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a  IG_WIN32_HEAPSIZ
1ed80 45 20 74 61 6b 65 73 20 61 20 33 32 2d 62 69 74  E takes a 32-bit
1ed90 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65   unsigned intege
1eda0 72 20 76 61 6c 75 65 0a 2a 2a 20 74 68 61 74 20  r value.** that 
1edb0 73 70 65 63 69 66 69 65 73 20 74 68 65 20 6d 61  specifies the ma
1edc0 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66 20 74 68  ximum size of th
1edd0 65 20 63 72 65 61 74 65 64 20 68 65 61 70 2e 0a  e created heap..
1ede0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1edf0 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52  ONFIG_PCACHE_HDR
1ee00 53 5a 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49  SZ]].** <dt>SQLI
1ee10 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45  TE_CONFIG_PCACHE
1ee20 5f 48 44 52 53 5a 0a 2a 2a 20 3c 64 64 3e 5e 54  _HDRSZ.** <dd>^T
1ee30 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1ee40 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 20 6f 70  _PCACHE_HDRSZ op
1ee50 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e  tion takes a sin
1ee60 67 6c 65 20 70 61 72 61 6d 65 74 65 72 20 77 68  gle parameter wh
1ee70 69 63 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e  ich.** is a poin
1ee80 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65  ter to an intege
1ee90 72 20 61 6e 64 20 77 72 69 74 65 73 20 69 6e 74  r and writes int
1eea0 6f 20 74 68 61 74 20 69 6e 74 65 67 65 72 20 74  o that integer t
1eeb0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 78 74  he number of ext
1eec0 72 61 0a 2a 2a 20 62 79 74 65 73 20 70 65 72 20  ra.** bytes per 
1eed0 70 61 67 65 20 72 65 71 75 69 72 65 64 20 66 6f  page required fo
1eee0 72 20 65 61 63 68 20 70 61 67 65 20 69 6e 20 5b  r each page in [
1eef0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41  SQLITE_CONFIG_PA
1ef00 47 45 43 41 43 48 45 5d 2e 0a 2a 2a 20 54 68 65  GECACHE]..** The
1ef10 20 61 6d 6f 75 6e 74 20 6f 66 20 65 78 74 72 61   amount of extra
1ef20 20 73 70 61 63 65 20 72 65 71 75 69 72 65 64 20   space required 
1ef30 63 61 6e 20 63 68 61 6e 67 65 20 64 65 70 65 6e  can change depen
1ef40 64 69 6e 67 20 6f 6e 20 74 68 65 20 63 6f 6d 70  ding on the comp
1ef50 69 6c 65 72 2c 0a 2a 2a 20 74 61 72 67 65 74 20  iler,.** target 
1ef60 70 6c 61 74 66 6f 72 6d 2c 20 61 6e 64 20 53 51  platform, and SQ
1ef70 4c 69 74 65 20 76 65 72 73 69 6f 6e 2e 0a 2a 2a  Lite version..**
1ef80 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1ef90 46 49 47 5f 50 4d 41 53 5a 5d 5d 0a 2a 2a 20 3c  FIG_PMASZ]].** <
1efa0 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1efb0 5f 50 4d 41 53 5a 0a 2a 2a 20 3c 64 64 3e 5e 54  _PMASZ.** <dd>^T
1efc0 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1efd0 5f 50 4d 41 53 5a 20 6f 70 74 69 6f 6e 20 74 61  _PMASZ option ta
1efe0 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 70 61 72  kes a single par
1eff0 61 6d 65 74 65 72 20 77 68 69 63 68 0a 2a 2a 20  ameter which.** 
1f000 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69  is an unsigned i
1f010 6e 74 65 67 65 72 20 61 6e 64 20 73 65 74 73 20  nteger and sets 
1f020 74 68 65 20 22 4d 69 6e 69 6d 75 6d 20 50 4d 41  the "Minimum PMA
1f030 20 53 69 7a 65 22 20 66 6f 72 20 74 68 65 20 6d   Size" for the m
1f040 75 6c 74 69 74 68 72 65 61 64 65 64 0a 2a 2a 20  ultithreaded.** 
1f050 73 6f 72 74 65 72 20 74 6f 20 74 68 61 74 20 69  sorter to that i
1f060 6e 74 65 67 65 72 2e 20 20 54 68 65 20 64 65 66  nteger.  The def
1f070 61 75 6c 74 20 6d 69 6e 69 6d 75 6d 20 50 4d 41  ault minimum PMA
1f080 20 53 69 7a 65 20 69 73 20 73 65 74 20 62 79 20   Size is set by 
1f090 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 53  the.** [SQLITE_S
1f0a0 4f 52 54 45 52 5f 50 4d 41 53 5a 5d 20 63 6f 6d  ORTER_PMASZ] com
1f0b0 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
1f0c0 2e 20 20 4e 65 77 20 74 68 72 65 61 64 73 20 61  .  New threads a
1f0d0 72 65 20 6c 61 75 6e 63 68 65 64 0a 2a 2a 20 74  re launched.** t
1f0e0 6f 20 68 65 6c 70 20 77 69 74 68 20 73 6f 72 74  o help with sort
1f0f0 20 6f 70 65 72 61 74 69 6f 6e 73 20 77 68 65 6e   operations when
1f100 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20 73   multithreaded s
1f110 6f 72 74 69 6e 67 0a 2a 2a 20 69 73 20 65 6e 61  orting.** is ena
1f120 62 6c 65 64 20 28 75 73 69 6e 67 20 74 68 65 20  bled (using the 
1f130 5b 50 52 41 47 4d 41 20 74 68 72 65 61 64 73 5d  [PRAGMA threads]
1f140 20 63 6f 6d 6d 61 6e 64 29 20 61 6e 64 20 74 68   command) and th
1f150 65 20 61 6d 6f 75 6e 74 20 6f 66 20 63 6f 6e 74  e amount of cont
1f160 65 6e 74 0a 2a 2a 20 74 6f 20 62 65 20 73 6f 72  ent.** to be sor
1f170 74 65 64 20 65 78 63 65 65 64 73 20 74 68 65 20  ted exceeds the 
1f180 70 61 67 65 20 73 69 7a 65 20 74 69 6d 65 73 20  page size times 
1f190 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6f 66 20 74  the minimum of t
1f1a0 68 65 0a 2a 2a 20 5b 50 52 41 47 4d 41 20 63 61  he.** [PRAGMA ca
1f1b0 63 68 65 5f 73 69 7a 65 5d 20 73 65 74 74 69 6e  che_size] settin
1f1c0 67 20 61 6e 64 20 74 68 69 73 20 76 61 6c 75 65  g and this value
1f1d0 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ..**.** [[SQLITE
1f1e0 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c  _CONFIG_STMTJRNL
1f1f0 5f 53 50 49 4c 4c 5d 5d 0a 2a 2a 20 3c 64 74 3e  _SPILL]].** <dt>
1f200 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54  SQLITE_CONFIG_ST
1f210 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 0a 2a 2a 20  MTJRNL_SPILL.** 
1f220 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f  <dd>^The SQLITE_
1f230 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f  CONFIG_STMTJRNL_
1f240 53 50 49 4c 4c 20 6f 70 74 69 6f 6e 20 74 61 6b  SPILL option tak
1f250 65 73 20 61 20 73 69 6e 67 6c 65 20 70 61 72 61  es a single para
1f260 6d 65 74 65 72 20 77 68 69 63 68 0a 2a 2a 20 62  meter which.** b
1f270 65 63 6f 6d 65 73 20 74 68 65 20 5b 73 74 61 74  ecomes the [stat
1f280 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 5d 20 73  ement journal] s
1f290 70 69 6c 6c 2d 74 6f 2d 64 69 73 6b 20 74 68 72  pill-to-disk thr
1f2a0 65 73 68 6f 6c 64 2e 20 20 0a 2a 2a 20 5b 53 74  eshold.  .** [St
1f2b0 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73  atement journals
1f2c0 5d 20 61 72 65 20 68 65 6c 64 20 69 6e 20 6d 65  ] are held in me
1f2d0 6d 6f 72 79 20 75 6e 74 69 6c 20 74 68 65 69 72  mory until their
1f2e0 20 73 69 7a 65 20 28 69 6e 20 62 79 74 65 73 29   size (in bytes)
1f2f0 0a 2a 2a 20 65 78 63 65 65 64 73 20 74 68 69 73  .** exceeds this
1f300 20 74 68 72 65 73 68 6f 6c 64 2c 20 61 74 20 77   threshold, at w
1f310 68 69 63 68 20 70 6f 69 6e 74 20 74 68 65 79 20  hich point they 
1f320 61 72 65 20 77 72 69 74 74 65 6e 20 74 6f 20 64  are written to d
1f330 69 73 6b 2e 0a 2a 2a 20 4f 72 20 69 66 20 74 68  isk..** Or if th
1f340 65 20 74 68 72 65 73 68 6f 6c 64 20 69 73 20 2d  e threshold is -
1f350 31 2c 20 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75  1, statement jou
1f360 72 6e 61 6c 73 20 61 72 65 20 61 6c 77 61 79 73  rnals are always
1f370 20 68 65 6c 64 0a 2a 2a 20 65 78 63 6c 75 73 69   held.** exclusi
1f380 76 65 6c 79 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a  vely in memory..
1f390 2a 2a 20 53 69 6e 63 65 20 6d 61 6e 79 20 73 74  ** Since many st
1f3a0 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73  atement journals
1f3b0 20 6e 65 76 65 72 20 62 65 63 6f 6d 65 20 6c 61   never become la
1f3c0 72 67 65 2c 20 73 65 74 74 69 6e 67 20 74 68 65  rge, setting the
1f3d0 20 73 70 69 6c 6c 0a 2a 2a 20 74 68 72 65 73 68   spill.** thresh
1f3e0 6f 6c 64 20 74 6f 20 61 20 76 61 6c 75 65 20 73  old to a value s
1f3f0 75 63 68 20 61 73 20 36 34 4b 69 42 20 63 61 6e  uch as 64KiB can
1f400 20 67 72 65 61 74 6c 79 20 72 65 64 75 63 65 20   greatly reduce 
1f410 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 0a 2a 2a  the amount of.**
1f420 20 49 2f 4f 20 72 65 71 75 69 72 65 64 20 74 6f   I/O required to
1f430 20 73 75 70 70 6f 72 74 20 73 74 61 74 65 6d 65   support stateme
1f440 6e 74 20 72 6f 6c 6c 62 61 63 6b 2e 0a 2a 2a 20  nt rollback..** 
1f450 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75  The default valu
1f460 65 20 66 6f 72 20 74 68 69 73 20 73 65 74 74 69  e for this setti
1f470 6e 67 20 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64  ng is controlled
1f480 20 62 79 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49   by the.** [SQLI
1f490 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c  TE_STMTJRNL_SPIL
1f4a0 4c 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  L] compile-time 
1f4b0 6f 70 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  option..**.** [[
1f4c0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4f  SQLITE_CONFIG_SO
1f4d0 52 54 45 52 52 45 46 5f 53 49 5a 45 5d 5d 0a 2a  RTERREF_SIZE]].*
1f4e0 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  * <dt>SQLITE_CON
1f4f0 46 49 47 5f 53 4f 52 54 45 52 52 45 46 5f 53 49  FIG_SORTERREF_SI
1f500 5a 45 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 53 51  ZE.** <dd>The SQ
1f510 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4f 52 54  LITE_CONFIG_SORT
1f520 45 52 52 45 46 5f 53 49 5a 45 20 6f 70 74 69 6f  ERREF_SIZE optio
1f530 6e 20 61 63 63 65 70 74 73 20 61 20 73 69 6e 67  n accepts a sing
1f540 6c 65 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20  le parameter.** 
1f550 6f 66 20 74 79 70 65 20 28 69 6e 74 29 20 2d 20  of type (int) - 
1f560 74 68 65 20 6e 65 77 20 76 61 6c 75 65 20 6f 66  the new value of
1f570 20 74 68 65 20 73 6f 72 74 65 72 2d 72 65 66 65   the sorter-refe
1f580 72 65 6e 63 65 20 73 69 7a 65 20 74 68 72 65 73  rence size thres
1f590 68 6f 6c 64 2e 0a 2a 2a 20 55 73 75 61 6c 6c 79  hold..** Usually
1f5a0 2c 20 77 68 65 6e 20 53 51 4c 69 74 65 20 75 73  , when SQLite us
1f5b0 65 73 20 61 6e 20 65 78 74 65 72 6e 61 6c 20 73  es an external s
1f5c0 6f 72 74 20 74 6f 20 6f 72 64 65 72 20 72 65 63  ort to order rec
1f5d0 6f 72 64 73 20 61 63 63 6f 72 64 69 6e 67 0a 2a  ords according.*
1f5e0 2a 20 74 6f 20 61 6e 20 4f 52 44 45 52 20 42 59  * to an ORDER BY
1f5f0 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 66 69 65   clause, all fie
1f600 6c 64 73 20 72 65 71 75 69 72 65 64 20 62 79 20  lds required by 
1f610 74 68 65 20 63 61 6c 6c 65 72 20 61 72 65 20 70  the caller are p
1f620 72 65 73 65 6e 74 20 69 6e 20 74 68 65 0a 2a 2a  resent in the.**
1f630 20 73 6f 72 74 65 64 20 72 65 63 6f 72 64 73 2e   sorted records.
1f640 20 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c   However, if SQL
1f650 69 74 65 20 64 65 74 65 72 6d 69 6e 65 73 20 62  ite determines b
1f660 61 73 65 64 20 6f 6e 20 74 68 65 20 64 65 63 6c  ased on the decl
1f670 61 72 65 64 20 74 79 70 65 0a 2a 2a 20 6f 66 20  ared type.** of 
1f680 61 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 74  a table column t
1f690 68 61 74 20 69 74 73 20 76 61 6c 75 65 73 20 61  hat its values a
1f6a0 72 65 20 6c 69 6b 65 6c 79 20 74 6f 20 62 65 20  re likely to be 
1f6b0 76 65 72 79 20 6c 61 72 67 65 20 2d 20 6c 61 72  very large - lar
1f6c0 67 65 72 0a 2a 2a 20 74 68 61 6e 20 74 68 65 20  ger.** than the 
1f6d0 63 6f 6e 66 69 67 75 72 65 64 20 73 6f 72 74 65  configured sorte
1f6e0 72 2d 72 65 66 65 72 65 6e 63 65 20 73 69 7a 65  r-reference size
1f6f0 20 74 68 72 65 73 68 6f 6c 64 20 2d 20 74 68 65   threshold - the
1f700 6e 20 61 20 72 65 66 65 72 65 6e 63 65 0a 2a 2a  n a reference.**
1f710 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 65 61   is stored in ea
1f720 63 68 20 73 6f 72 74 65 64 20 72 65 63 6f 72 64  ch sorted record
1f730 20 61 6e 64 20 74 68 65 20 72 65 71 75 69 72 65   and the require
1f740 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20  d column values 
1f750 6c 6f 61 64 65 64 0a 2a 2a 20 66 72 6f 6d 20 74  loaded.** from t
1f760 68 65 20 64 61 74 61 62 61 73 65 20 61 73 20 72  he database as r
1f770 65 63 6f 72 64 73 20 61 72 65 20 72 65 74 75 72  ecords are retur
1f780 6e 65 64 20 69 6e 20 73 6f 72 74 65 64 20 6f 72  ned in sorted or
1f790 64 65 72 2e 20 54 68 65 20 64 65 66 61 75 6c 74  der. The default
1f7a0 0a 2a 2a 20 76 61 6c 75 65 20 66 6f 72 20 74 68  .** value for th
1f7b0 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 74 6f 20  is option is to 
1f7c0 6e 65 76 65 72 20 75 73 65 20 74 68 69 73 20 6f  never use this o
1f7d0 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 20 53 70 65  ptimization. Spe
1f7e0 63 69 66 79 69 6e 67 20 61 20 0a 2a 2a 20 6e 65  cifying a .** ne
1f7f0 67 61 74 69 76 65 20 76 61 6c 75 65 20 66 6f 72  gative value for
1f800 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 72 65 73   this option res
1f810 74 6f 72 65 73 20 74 68 65 20 64 65 66 61 75 6c  tores the defaul
1f820 74 20 62 65 68 61 76 69 6f 75 72 2e 0a 2a 2a 20  t behaviour..** 
1f830 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6f  This option is o
1f840 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66  nly available if
1f850 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
1f860 6c 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a 20  led with the.** 
1f870 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  [SQLITE_ENABLE_S
1f880 4f 52 54 45 52 5f 52 45 46 45 52 45 4e 43 45 53  ORTER_REFERENCES
1f890 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
1f8a0 70 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  ption..**.** [[S
1f8b0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1f8c0 44 42 5f 4d 41 58 53 49 5a 45 5d 5d 0a 2a 2a 20  DB_MAXSIZE]].** 
1f8d0 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1f8e0 47 5f 4d 45 4d 44 42 5f 4d 41 58 53 49 5a 45 0a  G_MEMDB_MAXSIZE.
1f8f0 2a 2a 20 3c 64 64 3e 54 68 65 20 53 51 4c 49 54  ** <dd>The SQLIT
1f900 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 44 42 5f 4d  E_CONFIG_MEMDB_M
1f910 41 58 53 49 5a 45 20 6f 70 74 69 6f 6e 20 61 63  AXSIZE option ac
1f920 63 65 70 74 73 20 61 20 73 69 6e 67 6c 65 20 70  cepts a single p
1f930 61 72 61 6d 65 74 65 72 0a 2a 2a 20 5b 73 71 6c  arameter.** [sql
1f940 69 74 65 33 5f 69 6e 74 36 34 5d 20 70 61 72 61  ite3_int64] para
1f950 6d 65 74 65 72 20 77 68 69 63 68 20 69 73 20 74  meter which is t
1f960 68 65 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d  he default maxim
1f970 75 6d 20 73 69 7a 65 20 66 6f 72 20 61 6e 20 69  um size for an i
1f980 6e 2d 6d 65 6d 6f 72 79 0a 2a 2a 20 64 61 74 61  n-memory.** data
1f990 62 61 73 65 20 63 72 65 61 74 65 64 20 75 73 69  base created usi
1f9a0 6e 67 20 5b 73 71 6c 69 74 65 33 5f 64 65 73 65  ng [sqlite3_dese
1f9b0 72 69 61 6c 69 7a 65 28 29 5d 2e 20 20 54 68 69  rialize()].  Thi
1f9c0 73 20 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75  s default maximu
1f9d0 6d 0a 2a 2a 20 73 69 7a 65 20 63 61 6e 20 62 65  m.** size can be
1f9e0 20 61 64 6a 75 73 74 65 64 20 75 70 20 6f 72 20   adjusted up or 
1f9f0 64 6f 77 6e 20 66 6f 72 20 69 6e 64 69 76 69 64  down for individ
1fa00 75 61 6c 20 64 61 74 61 62 61 73 65 73 20 75 73  ual databases us
1fa10 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49  ing the.** [SQLI
1fa20 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 4c 49  TE_FCNTL_SIZE_LI
1fa30 4d 49 54 5d 20 5b 73 71 6c 69 74 65 33 5f 66 69  MIT] [sqlite3_fi
1fa40 6c 65 5f 63 6f 6e 74 72 6f 6c 7c 66 69 6c 65 2d  le_control|file-
1fa50 63 6f 6e 74 72 6f 6c 5d 2e 20 20 49 66 20 74 68  control].  If th
1fa60 69 73 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74  is.** configurat
1fa70 69 6f 6e 20 73 65 74 74 69 6e 67 20 69 73 20 6e  ion setting is n
1fa80 65 76 65 72 20 75 73 65 64 2c 20 74 68 65 6e 20  ever used, then 
1fa90 74 68 65 20 64 65 66 61 75 6c 74 20 6d 61 78 69  the default maxi
1faa0 6d 75 6d 20 69 73 20 64 65 74 65 72 6d 69 6e 65  mum is determine
1fab0 64 0a 2a 2a 20 62 79 20 74 68 65 20 5b 53 51 4c  d.** by the [SQL
1fac0 49 54 45 5f 4d 45 4d 44 42 5f 44 45 46 41 55 4c  ITE_MEMDB_DEFAUL
1fad0 54 5f 4d 41 58 53 49 5a 45 5d 20 63 6f 6d 70 69  T_MAXSIZE] compi
1fae0 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 20  le-time option. 
1faf0 20 49 66 20 74 68 61 74 0a 2a 2a 20 63 6f 6d 70   If that.** comp
1fb00 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
1fb10 69 73 20 6e 6f 74 20 73 65 74 2c 20 74 68 65 6e  is not set, then
1fb20 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 61 78   the default max
1fb30 69 6d 75 6d 20 69 73 20 31 30 37 33 37 34 31 38  imum is 10737418
1fb40 32 34 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a  24..** </dl>.*/.
1fb50 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1fb60 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45  ONFIG_SINGLETHRE
1fb70 41 44 20 20 31 20 20 2f 2a 20 6e 69 6c 20 2a 2f  AD  1  /* nil */
1fb80 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1fb90 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45  CONFIG_MULTITHRE
1fba0 41 44 20 20 20 32 20 20 2f 2a 20 6e 69 6c 20 2a  AD   2  /* nil *
1fbb0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1fbc0 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a  _CONFIG_SERIALIZ
1fbd0 45 44 20 20 20 20 33 20 20 2f 2a 20 6e 69 6c 20  ED    3  /* nil 
1fbe0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1fbf0 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 20  E_CONFIG_MALLOC 
1fc00 20 20 20 20 20 20 20 34 20 20 2f 2a 20 73 71 6c         4  /* sql
1fc10 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73  ite3_mem_methods
1fc20 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  * */.#define SQL
1fc30 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41  ITE_CONFIG_GETMA
1fc40 4c 4c 4f 43 20 20 20 20 20 35 20 20 2f 2a 20 73  LLOC     5  /* s
1fc50 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f  qlite3_mem_metho
1fc60 64 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ds* */.#define S
1fc70 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52  QLITE_CONFIG_SCR
1fc80 41 54 43 48 20 20 20 20 20 20 20 36 20 20 2f 2a  ATCH       6  /*
1fc90 20 4e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 20   No longer used 
1fca0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1fcb0 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43  E_CONFIG_PAGECAC
1fcc0 48 45 20 20 20 20 20 37 20 20 2f 2a 20 76 6f 69  HE     7  /* voi
1fcd0 64 2a 2c 20 69 6e 74 20 73 7a 2c 20 69 6e 74 20  d*, int sz, int 
1fce0 4e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  N */.#define SQL
1fcf0 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 20  ITE_CONFIG_HEAP 
1fd00 20 20 20 20 20 20 20 20 20 38 20 20 2f 2a 20 76           8  /* v
1fd10 6f 69 64 2a 2c 20 69 6e 74 20 6e 42 79 74 65 2c  oid*, int nByte,
1fd20 20 69 6e 74 20 6d 69 6e 20 2a 2f 0a 23 64 65 66   int min */.#def
1fd30 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fd40 47 5f 4d 45 4d 53 54 41 54 55 53 20 20 20 20 20  G_MEMSTATUS     
1fd50 39 20 20 2f 2a 20 62 6f 6f 6c 65 61 6e 20 2a 2f  9  /* boolean */
1fd60 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1fd70 43 4f 4e 46 49 47 5f 4d 55 54 45 58 20 20 20 20  CONFIG_MUTEX    
1fd80 20 20 20 20 31 30 20 20 2f 2a 20 73 71 6c 69 74      10  /* sqlit
1fd90 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73  e3_mutex_methods
1fda0 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  * */.#define SQL
1fdb0 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55  ITE_CONFIG_GETMU
1fdc0 54 45 58 20 20 20 20 20 31 31 20 20 2f 2a 20 73  TEX     11  /* s
1fdd0 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74  qlite3_mutex_met
1fde0 68 6f 64 73 2a 20 2a 2f 0a 2f 2a 20 70 72 65 76  hods* */./* prev
1fdf0 69 6f 75 73 6c 79 20 53 51 4c 49 54 45 5f 43 4f  iously SQLITE_CO
1fe00 4e 46 49 47 5f 43 48 55 4e 4b 41 4c 4c 4f 43 20  NFIG_CHUNKALLOC 
1fe10 31 32 20 77 68 69 63 68 20 69 73 20 6e 6f 77 20  12 which is now 
1fe20 75 6e 75 73 65 64 2e 20 2a 2f 20 0a 23 64 65 66  unused. */ .#def
1fe30 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fe40 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 20 20 20 31  G_LOOKASIDE    1
1fe50 33 20 20 2f 2a 20 69 6e 74 20 69 6e 74 20 2a 2f  3  /* int int */
1fe60 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1fe70 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 20 20 20  CONFIG_PCACHE   
1fe80 20 20 20 20 31 34 20 20 2f 2a 20 6e 6f 2d 6f 70      14  /* no-op
1fe90 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1fea0 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41  TE_CONFIG_GETPCA
1feb0 43 48 45 20 20 20 20 31 35 20 20 2f 2a 20 6e 6f  CHE    15  /* no
1fec0 2d 6f 70 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  -op */.#define S
1fed0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47  QLITE_CONFIG_LOG
1fee0 20 20 20 20 20 20 20 20 20 20 31 36 20 20 2f 2a            16  /*
1fef0 20 78 46 75 6e 63 2c 20 76 6f 69 64 2a 20 2a 2f   xFunc, void* */
1ff00 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1ff10 43 4f 4e 46 49 47 5f 55 52 49 20 20 20 20 20 20  CONFIG_URI      
1ff20 20 20 20 20 31 37 20 20 2f 2a 20 69 6e 74 20 2a      17  /* int *
1ff30 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1ff40 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 32 20  _CONFIG_PCACHE2 
1ff50 20 20 20 20 20 31 38 20 20 2f 2a 20 73 71 6c 69       18  /* sqli
1ff60 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f  te3_pcache_metho
1ff70 64 73 32 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ds2* */.#define 
1ff80 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
1ff90 54 50 43 41 43 48 45 32 20 20 20 31 39 20 20 2f  TPCACHE2   19  /
1ffa0 2a 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65  * sqlite3_pcache
1ffb0 5f 6d 65 74 68 6f 64 73 32 2a 20 2a 2f 0a 23 64  _methods2* */.#d
1ffc0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1ffd0 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44  FIG_COVERING_IND
1ffe0 45 58 5f 53 43 41 4e 20 32 30 20 20 2f 2a 20 69  EX_SCAN 20  /* i
1fff0 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  nt */.#define SQ
20000 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c  LITE_CONFIG_SQLL
20010 4f 47 20 20 20 20 20 20 20 32 31 20 20 2f 2a 20  OG       21  /* 
20020 78 53 71 6c 6c 6f 67 2c 20 76 6f 69 64 2a 20 2a  xSqllog, void* *
20030 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
20040 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a  _CONFIG_MMAP_SIZ
20050 45 20 20 20 20 32 32 20 20 2f 2a 20 73 71 6c 69  E    22  /* sqli
20060 74 65 33 5f 69 6e 74 36 34 2c 20 73 71 6c 69 74  te3_int64, sqlit
20070 65 33 5f 69 6e 74 36 34 20 2a 2f 0a 23 64 65 66  e3_int64 */.#def
20080 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
20090 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45  G_WIN32_HEAPSIZE
200a0 20 20 20 20 20 20 32 33 20 20 2f 2a 20 69 6e 74        23  /* int
200b0 20 6e 42 79 74 65 20 2a 2f 0a 23 64 65 66 69 6e   nByte */.#defin
200c0 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
200d0 50 43 41 43 48 45 5f 48 44 52 53 5a 20 20 20 20  PCACHE_HDRSZ    
200e0 20 20 20 20 32 34 20 20 2f 2a 20 69 6e 74 20 2a      24  /* int *
200f0 70 73 7a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  psz */.#define S
20100 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41  QLITE_CONFIG_PMA
20110 53 5a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  SZ              
20120 20 32 35 20 20 2f 2a 20 75 6e 73 69 67 6e 65 64   25  /* unsigned
20130 20 69 6e 74 20 73 7a 50 6d 61 20 2a 2f 0a 23 64   int szPma */.#d
20140 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
20150 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49  FIG_STMTJRNL_SPI
20160 4c 4c 20 20 20 20 20 20 32 36 20 20 2f 2a 20 69  LL      26  /* i
20170 6e 74 20 6e 42 79 74 65 20 2a 2f 0a 23 64 65 66  nt nByte */.#def
20180 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
20190 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 20 20  G_SMALL_MALLOC  
201a0 20 20 20 20 20 20 32 37 20 20 2f 2a 20 62 6f 6f        27  /* boo
201b0 6c 65 61 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  lean */.#define 
201c0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4f  SQLITE_CONFIG_SO
201d0 52 54 45 52 52 45 46 5f 53 49 5a 45 20 20 20 20  RTERREF_SIZE    
201e0 20 20 32 38 20 20 2f 2a 20 69 6e 74 20 6e 42 79    28  /* int nBy
201f0 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  te */.#define SQ
20200 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 44  LITE_CONFIG_MEMD
20210 42 5f 4d 41 58 53 49 5a 45 20 20 20 20 20 20 20  B_MAXSIZE       
20220 32 39 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 69  29  /* sqlite3_i
20230 6e 74 36 34 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43  nt64 */../*.** C
20240 41 50 49 33 52 45 46 3a 20 44 61 74 61 62 61 73  API3REF: Databas
20250 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 43 6f 6e  e Connection Con
20260 66 69 67 75 72 61 74 69 6f 6e 20 4f 70 74 69 6f  figuration Optio
20270 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63  ns.**.** These c
20280 6f 6e 73 74 61 6e 74 73 20 61 72 65 20 74 68 65  onstants are the
20290 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 74 65 67   available integ
202a0 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  er configuration
202b0 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 0a 2a 2a   options that.**
202c0 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 61   can be passed a
202d0 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67  s the second arg
202e0 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 5b 73 71  ument to the [sq
202f0 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28  lite3_db_config(
20300 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a  )] interface..**
20310 0a 2a 2a 20 4e 65 77 20 63 6f 6e 66 69 67 75 72  .** New configur
20320 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 61  ation options ma
20330 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 66 75  y be added in fu
20340 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
20350 20 53 51 4c 69 74 65 2e 0a 2a 2a 20 45 78 69 73   SQLite..** Exis
20360 74 69 6e 67 20 63 6f 6e 66 69 67 75 72 61 74 69  ting configurati
20370 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74  on options might
20380 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75 65 64   be discontinued
20390 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 0a  .  Applications.
203a0 2a 2a 20 73 68 6f 75 6c 64 20 63 68 65 63 6b 20  ** should check 
203b0 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65 20  the return code 
203c0 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 64 62  from [sqlite3_db
203d0 5f 63 6f 6e 66 69 67 28 29 5d 20 74 6f 20 6d 61  _config()] to ma
203e0 6b 65 20 73 75 72 65 20 74 68 61 74 0a 2a 2a 20  ke sure that.** 
203f0 74 68 65 20 63 61 6c 6c 20 77 6f 72 6b 65 64 2e  the call worked.
20400 20 20 5e 54 68 65 20 5b 73 71 6c 69 74 65 33 5f    ^The [sqlite3_
20410 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74  db_config()] int
20420 65 72 66 61 63 65 20 77 69 6c 6c 20 72 65 74 75  erface will retu
20430 72 6e 20 61 0a 2a 2a 20 6e 6f 6e 2d 7a 65 72 6f  rn a.** non-zero
20440 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 69 66   [error code] if
20450 20 61 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 20   a discontinued 
20460 6f 72 20 75 6e 73 75 70 70 6f 72 74 65 64 20 63  or unsupported c
20470 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
20480 69 6f 6e 0a 2a 2a 20 69 73 20 69 6e 76 6f 6b 65  ion.** is invoke
20490 64 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a  d..**.** <dl>.**
204a0 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46   [[SQLITE_DBCONF
204b0 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 5d 0a 2a  IG_LOOKASIDE]].*
204c0 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43  * <dt>SQLITE_DBC
204d0 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 3c  ONFIG_LOOKASIDE<
204e0 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
204f0 69 73 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  is option takes 
20500 74 68 72 65 65 20 61 64 64 69 74 69 6f 6e 61 6c  three additional
20510 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74 20   arguments that 
20520 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 0a 2a  determine the .*
20530 2a 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d  * [lookaside mem
20540 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 63  ory allocator] c
20550 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 6f 72  onfiguration for
20560 20 74 68 65 20 5b 64 61 74 61 62 61 73 65 20 63   the [database c
20570 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a 20 5e  onnection]..** ^
20580 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
20590 6e 74 20 28 74 68 65 20 74 68 69 72 64 20 70 61  nt (the third pa
205a0 72 61 6d 65 74 65 72 20 74 6f 20 5b 73 71 6c 69  rameter to [sqli
205b0 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d  te3_db_config()]
205c0 20 69 73 20 61 0a 2a 2a 20 70 6f 69 6e 74 65 72   is a.** pointer
205d0 20 74 6f 20 61 20 6d 65 6d 6f 72 79 20 62 75 66   to a memory buf
205e0 66 65 72 20 74 6f 20 75 73 65 20 66 6f 72 20 6c  fer to use for l
205f0 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 2e  ookaside memory.
20600 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61  .** ^The first a
20610 72 67 75 6d 65 6e 74 20 61 66 74 65 72 20 74 68  rgument after th
20620 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
20630 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 76 65 72 62  G_LOOKASIDE verb
20640 0a 2a 2a 20 6d 61 79 20 62 65 20 4e 55 4c 4c 20  .** may be NULL 
20650 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 53 51  in which case SQ
20660 4c 69 74 65 20 77 69 6c 6c 20 61 6c 6c 6f 63 61  Lite will alloca
20670 74 65 20 74 68 65 0a 2a 2a 20 6c 6f 6f 6b 61 73  te the.** lookas
20680 69 64 65 20 62 75 66 66 65 72 20 69 74 73 65 6c  ide buffer itsel
20690 66 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33  f using [sqlite3
206a0 5f 6d 61 6c 6c 6f 63 28 29 5d 2e 20 5e 54 68 65  _malloc()]. ^The
206b0 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
206c0 20 69 73 20 74 68 65 0a 2a 2a 20 73 69 7a 65 20   is the.** size 
206d0 6f 66 20 65 61 63 68 20 6c 6f 6f 6b 61 73 69 64  of each lookasid
206e0 65 20 62 75 66 66 65 72 20 73 6c 6f 74 2e 20 20  e buffer slot.  
206f0 5e 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d  ^The third argum
20700 65 6e 74 20 69 73 20 74 68 65 20 6e 75 6d 62 65  ent is the numbe
20710 72 20 6f 66 0a 2a 2a 20 73 6c 6f 74 73 2e 20 20  r of.** slots.  
20720 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  The size of the 
20730 62 75 66 66 65 72 20 69 6e 20 74 68 65 20 66 69  buffer in the fi
20740 72 73 74 20 61 72 67 75 6d 65 6e 74 20 6d 75 73  rst argument mus
20750 74 20 62 65 20 67 72 65 61 74 65 72 20 74 68 61  t be greater tha
20760 6e 0a 2a 2a 20 6f 72 20 65 71 75 61 6c 20 74 6f  n.** or equal to
20770 20 74 68 65 20 70 72 6f 64 75 63 74 20 6f 66 20   the product of 
20780 74 68 65 20 73 65 63 6f 6e 64 20 61 6e 64 20 74  the second and t
20790 68 69 72 64 20 61 72 67 75 6d 65 6e 74 73 2e 20  hird arguments. 
207a0 20 54 68 65 20 62 75 66 66 65 72 0a 2a 2a 20 6d   The buffer.** m
207b0 75 73 74 20 62 65 20 61 6c 69 67 6e 65 64 20 74  ust be aligned t
207c0 6f 20 61 6e 20 38 2d 62 79 74 65 20 62 6f 75 6e  o an 8-byte boun
207d0 64 61 72 79 2e 20 20 5e 49 66 20 74 68 65 20 73  dary.  ^If the s
207e0 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74  econd argument t
207f0 6f 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 42 43 4f  o.** SQLITE_DBCO
20800 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 69  NFIG_LOOKASIDE i
20810 73 20 6e 6f 74 20 61 20 6d 75 6c 74 69 70 6c 65  s not a multiple
20820 20 6f 66 20 38 2c 20 69 74 20 69 73 20 69 6e 74   of 8, it is int
20830 65 72 6e 61 6c 6c 79 0a 2a 2a 20 72 6f 75 6e 64  ernally.** round
20840 65 64 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 6e  ed down to the n
20850 65 78 74 20 73 6d 61 6c 6c 65 72 20 6d 75 6c 74  ext smaller mult
20860 69 70 6c 65 20 6f 66 20 38 2e 20 20 5e 28 54 68  iple of 8.  ^(Th
20870 65 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f  e lookaside memo
20880 72 79 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74  ry.** configurat
20890 69 6f 6e 20 66 6f 72 20 61 20 64 61 74 61 62 61  ion for a databa
208a0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 61  se connection ca
208b0 6e 20 6f 6e 6c 79 20 62 65 20 63 68 61 6e 67 65  n only be change
208c0 64 20 77 68 65 6e 20 74 68 61 74 0a 2a 2a 20 63  d when that.** c
208d0 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6e 6f 74  onnection is not
208e0 20 63 75 72 72 65 6e 74 6c 79 20 75 73 69 6e 67   currently using
208f0 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72   lookaside memor
20900 79 2c 20 6f 72 20 69 6e 20 6f 74 68 65 72 20 77  y, or in other w
20910 6f 72 64 73 0a 2a 2a 20 77 68 65 6e 20 74 68 65  ords.** when the
20920 20 22 63 75 72 72 65 6e 74 20 76 61 6c 75 65 22   "current value"
20930 20 72 65 74 75 72 6e 65 64 20 62 79 0a 2a 2a 20   returned by.** 
20940 5b 73 71 6c 69 74 65 33 5f 64 62 5f 73 74 61 74  [sqlite3_db_stat
20950 75 73 5d 28 44 2c 5b 53 51 4c 49 54 45 5f 43 4f  us](D,[SQLITE_CO
20960 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 2c  NFIG_LOOKASIDE],
20970 2e 2e 2e 29 20 69 73 20 7a 65 72 6f 2e 0a 2a 2a  ...) is zero..**
20980 20 41 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20   Any attempt to 
20990 63 68 61 6e 67 65 20 74 68 65 20 6c 6f 6f 6b 61  change the looka
209a0 73 69 64 65 20 6d 65 6d 6f 72 79 20 63 6f 6e 66  side memory conf
209b0 69 67 75 72 61 74 69 6f 6e 20 77 68 65 6e 20 6c  iguration when l
209c0 6f 6f 6b 61 73 69 64 65 0a 2a 2a 20 6d 65 6d 6f  ookaside.** memo
209d0 72 79 20 69 73 20 69 6e 20 75 73 65 20 6c 65 61  ry is in use lea
209e0 76 65 73 20 74 68 65 20 63 6f 6e 66 69 67 75 72  ves the configur
209f0 61 74 69 6f 6e 20 75 6e 63 68 61 6e 67 65 64 20  ation unchanged 
20a00 61 6e 64 20 72 65 74 75 72 6e 73 20 0a 2a 2a 20  and returns .** 
20a10 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2e 29 5e  [SQLITE_BUSY].)^
20a20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
20a30 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
20a40 41 42 4c 45 5f 46 4b 45 59 5d 5d 0a 2a 2a 20 3c  ABLE_FKEY]].** <
20a50 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  dt>SQLITE_DBCONF
20a60 49 47 5f 45 4e 41 42 4c 45 5f 46 4b 45 59 3c 2f  IG_ENABLE_FKEY</
20a70 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69  dt>.** <dd> ^Thi
20a80 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
20a90 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69   to enable or di
20aa0 73 61 62 6c 65 20 74 68 65 20 65 6e 66 6f 72 63  sable the enforc
20ab0 65 6d 65 6e 74 20 6f 66 0a 2a 2a 20 5b 66 6f 72  ement of.** [for
20ac0 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61  eign key constra
20ad0 69 6e 74 73 5d 2e 20 20 54 68 65 72 65 20 73 68  ints].  There sh
20ae0 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69  ould be two addi
20af0 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73  tional arguments
20b00 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61  ..** The first a
20b10 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20 69 6e  rgument is an in
20b20 74 65 67 65 72 20 77 68 69 63 68 20 69 73 20 30  teger which is 0
20b30 20 74 6f 20 64 69 73 61 62 6c 65 20 46 4b 20 65   to disable FK e
20b40 6e 66 6f 72 63 65 6d 65 6e 74 2c 0a 2a 2a 20 70  nforcement,.** p
20b50 6f 73 69 74 69 76 65 20 74 6f 20 65 6e 61 62 6c  ositive to enabl
20b60 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74  e FK enforcement
20b70 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f 20   or negative to 
20b80 6c 65 61 76 65 20 46 4b 20 65 6e 66 6f 72 63 65  leave FK enforce
20b90 6d 65 6e 74 0a 2a 2a 20 75 6e 63 68 61 6e 67 65  ment.** unchange
20ba0 64 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70  d.  The second p
20bb0 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 70 6f  arameter is a po
20bc0 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65  inter to an inte
20bd0 67 65 72 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a  ger into which.*
20be0 2a 20 69 73 20 77 72 69 74 74 65 6e 20 30 20 6f  * is written 0 o
20bf0 72 20 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20  r 1 to indicate 
20c00 77 68 65 74 68 65 72 20 46 4b 20 65 6e 66 6f 72  whether FK enfor
20c10 63 65 6d 65 6e 74 20 69 73 20 6f 66 66 20 6f 72  cement is off or
20c20 20 6f 6e 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67   on.** following
20c30 20 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68 65   this call.  The
20c40 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
20c50 72 20 6d 61 79 20 62 65 20 61 20 4e 55 4c 4c 20  r may be a NULL 
20c60 70 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20 77  pointer, in.** w
20c70 68 69 63 68 20 63 61 73 65 20 74 68 65 20 46 4b  hich case the FK
20c80 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 73 65 74   enforcement set
20c90 74 69 6e 67 20 69 73 20 6e 6f 74 20 72 65 70 6f  ting is not repo
20ca0 72 74 65 64 20 62 61 63 6b 2e 20 3c 2f 64 64 3e  rted back. </dd>
20cb0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
20cc0 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
20cd0 54 52 49 47 47 45 52 5d 5d 0a 2a 2a 20 3c 64 74  TRIGGER]].** <dt
20ce0 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  >SQLITE_DBCONFIG
20cf0 5f 45 4e 41 42 4c 45 5f 54 52 49 47 47 45 52 3c  _ENABLE_TRIGGER<
20d00 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
20d10 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
20d20 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64  d to enable or d
20d30 69 73 61 62 6c 65 20 5b 43 52 45 41 54 45 20 54  isable [CREATE T
20d40 52 49 47 47 45 52 20 7c 20 74 72 69 67 67 65 72  RIGGER | trigger
20d50 73 5d 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68 6f  s]..** There sho
20d60 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69 74  uld be two addit
20d70 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e  ional arguments.
20d80 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72  .** The first ar
20d90 67 75 6d 65 6e 74 20 69 73 20 61 6e 20 69 6e 74  gument is an int
20da0 65 67 65 72 20 77 68 69 63 68 20 69 73 20 30 20  eger which is 0 
20db0 74 6f 20 64 69 73 61 62 6c 65 20 74 72 69 67 67  to disable trigg
20dc0 65 72 73 2c 0a 2a 2a 20 70 6f 73 69 74 69 76 65  ers,.** positive
20dd0 20 74 6f 20 65 6e 61 62 6c 65 20 74 72 69 67 67   to enable trigg
20de0 65 72 73 20 6f 72 20 6e 65 67 61 74 69 76 65 20  ers or negative 
20df0 74 6f 20 6c 65 61 76 65 20 74 68 65 20 73 65 74  to leave the set
20e00 74 69 6e 67 20 75 6e 63 68 61 6e 67 65 64 2e 0a  ting unchanged..
20e10 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61  ** The second pa
20e20 72 61 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69  rameter is a poi
20e30 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67  nter to an integ
20e40 65 72 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a  er into which.**
20e50 20 69 73 20 77 72 69 74 74 65 6e 20 30 20 6f 72   is written 0 or
20e60 20 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77   1 to indicate w
20e70 68 65 74 68 65 72 20 74 72 69 67 67 65 72 73 20  hether triggers 
20e80 61 72 65 20 64 69 73 61 62 6c 65 64 20 6f 72 20  are disabled or 
20e90 65 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f  enabled.** follo
20ea0 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20  wing this call. 
20eb0 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
20ec0 6d 65 74 65 72 20 6d 61 79 20 62 65 20 61 20 4e  meter may be a N
20ed0 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a  ULL pointer, in.
20ee0 2a 2a 20 77 68 69 63 68 20 63 61 73 65 20 74 68  ** which case th
20ef0 65 20 74 72 69 67 67 65 72 20 73 65 74 74 69 6e  e trigger settin
20f00 67 20 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65  g is not reporte
20f10 64 20 62 61 63 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a  d back. </dd>.**
20f20 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43  .** [[SQLITE_DBC
20f30 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54 53  ONFIG_ENABLE_FTS
20f40 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d 5d 0a 2a 2a  3_TOKENIZER]].**
20f50 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
20f60 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54 53 33  NFIG_ENABLE_FTS3
20f70 5f 54 4f 4b 45 4e 49 5a 45 52 3c 2f 64 74 3e 0a  _TOKENIZER</dt>.
20f80 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70  ** <dd> ^This op
20f90 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
20fa0 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c  enable or disabl
20fb0 65 20 74 68 65 0a 2a 2a 20 5b 66 74 73 33 5f 74  e the.** [fts3_t
20fc0 6f 6b 65 6e 69 7a 65 72 28 29 5d 20 66 75 6e 63  okenizer()] func
20fd0 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61  tion which is pa
20fe0 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 46 54  rt of the.** [FT
20ff0 53 33 5d 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  S3] full-text se
21000 61 72 63 68 20 65 6e 67 69 6e 65 20 65 78 74 65  arch engine exte
21010 6e 73 69 6f 6e 2e 0a 2a 2a 20 54 68 65 72 65 20  nsion..** There 
21020 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64  should be two ad
21030 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e  ditional argumen
21040 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ts..** The first
21050 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20   argument is an 
21060 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
21070 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 66 74   0 to disable ft
21080 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 6f  s3_tokenizer() o
21090 72 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f  r.** positive to
210a0 20 65 6e 61 62 6c 65 20 66 74 73 33 5f 74 6f 6b   enable fts3_tok
210b0 65 6e 69 7a 65 72 28 29 20 6f 72 20 6e 65 67 61  enizer() or nega
210c0 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68  tive to leave th
210d0 65 20 73 65 74 74 69 6e 67 0a 2a 2a 20 75 6e 63  e setting.** unc
210e0 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73  hanged..** The s
210f0 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
21100 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
21110 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20  an integer into 
21120 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74  which.** is writ
21130 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
21140 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 66  dicate whether f
21150 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 20 69 73  ts3_tokenizer is
21160 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61   disabled or ena
21170 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  bled.** followin
21180 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68  g this call.  Th
21190 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
211a0 65 72 20 6d 61 79 20 62 65 20 61 20 4e 55 4c 4c  er may be a NULL
211b0 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20   pointer, in.** 
211c0 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 6e  which case the n
211d0 65 77 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f  ew setting is no
211e0 74 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e  t reported back.
211f0 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
21200 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
21210 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e  NABLE_LOAD_EXTEN
21220 53 49 4f 4e 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  SION]].** <dt>SQ
21230 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
21240 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53  ABLE_LOAD_EXTENS
21250 49 4f 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  ION</dt>.** <dd>
21260 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73   ^This option is
21270 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
21280 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 5b  or disable the [
21290 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
212a0 65 6e 73 69 6f 6e 28 29 5d 0a 2a 2a 20 69 6e 74  ension()].** int
212b0 65 72 66 61 63 65 20 69 6e 64 65 70 65 6e 64 65  erface independe
212c0 6e 74 6c 79 20 6f 66 20 74 68 65 20 5b 6c 6f 61  ntly of the [loa
212d0 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 53  d_extension()] S
212e0 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20  QL function..** 
212f0 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61  The [sqlite3_ena
21300 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
21310 6f 6e 28 29 5d 20 41 50 49 20 65 6e 61 62 6c 65  on()] API enable
21320 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20 62 6f  s or disables bo
21330 74 68 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20  th the.** C-API 
21340 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78  [sqlite3_load_ex
21350 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 20 74  tension()] and t
21360 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20  he SQL function 
21370 5b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  [load_extension(
21380 29 5d 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68 6f  )]..** There sho
21390 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69 74  uld be two addit
213a0 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e  ional arguments.
213b0 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 66 69 72  .** When the fir
213c0 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
213d0 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 69 73  his interface is
213e0 20 31 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68   1, then only th
213f0 65 20 43 2d 41 50 49 20 69 73 0a 2a 2a 20 65 6e  e C-API is.** en
21400 61 62 6c 65 64 20 61 6e 64 20 74 68 65 20 53 51  abled and the SQ
21410 4c 20 66 75 6e 63 74 69 6f 6e 20 72 65 6d 61 69  L function remai
21420 6e 73 20 64 69 73 61 62 6c 65 64 2e 20 20 49 66  ns disabled.  If
21430 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
21440 65 6e 74 20 74 6f 0a 2a 2a 20 74 68 69 73 20 69  ent to.** this i
21450 6e 74 65 72 66 61 63 65 20 69 73 20 30 2c 20 74  nterface is 0, t
21460 68 65 6e 20 62 6f 74 68 20 74 68 65 20 43 2d 41  hen both the C-A
21470 50 49 20 61 6e 64 20 74 68 65 20 53 51 4c 20 66  PI and the SQL f
21480 75 6e 63 74 69 6f 6e 20 61 72 65 20 64 69 73 61  unction are disa
21490 62 6c 65 64 2e 0a 2a 2a 20 49 66 20 74 68 65 20  bled..** If the 
214a0 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
214b0 73 20 2d 31 2c 20 74 68 65 6e 20 6e 6f 20 63 68  s -1, then no ch
214c0 61 6e 67 65 73 20 61 72 65 20 6d 61 64 65 20 74  anges are made t
214d0 6f 20 73 74 61 74 65 20 6f 66 20 65 69 74 68 65  o state of eithe
214e0 72 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20 6f  r the.** C-API o
214f0 72 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69  r the SQL functi
21500 6f 6e 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e  on..** The secon
21510 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  d parameter is a
21520 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
21530 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63  nteger into whic
21540 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20  h.** is written 
21550 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61  0 or 1 to indica
21560 74 65 20 77 68 65 74 68 65 72 20 5b 73 71 6c 69  te whether [sqli
21570 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
21580 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a  on()] interface.
21590 2a 2a 20 69 73 20 64 69 73 61 62 6c 65 64 20 6f  ** is disabled o
215a0 72 20 65 6e 61 62 6c 65 64 20 66 6f 6c 6c 6f 77  r enabled follow
215b0 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20  ing this call.  
215c0 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
215d0 65 74 65 72 20 6d 61 79 0a 2a 2a 20 62 65 20 61  eter may.** be a
215e0 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69   NULL pointer, i
215f0 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65  n which case the
21600 20 6e 65 77 20 73 65 74 74 69 6e 67 20 69 73 20   new setting is 
21610 6e 6f 74 20 72 65 70 6f 72 74 65 64 20 62 61 63  not reported bac
21620 6b 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  k..** </dd>.**.*
21630 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  * [[SQLITE_DBCON
21640 46 49 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 5d 5d  FIG_MAINDBNAME]]
21650 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
21660 4e 46 49 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 3c  NFIG_MAINDBNAME<
21670 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
21680 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
21690 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  d to change the 
216a0 6e 61 6d 65 20 6f 66 20 74 68 65 20 22 6d 61 69  name of the "mai
216b0 6e 22 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 73  n" database.** s
216c0 63 68 65 6d 61 2e 20 20 5e 54 68 65 20 73 6f 6c  chema.  ^The sol
216d0 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  e argument is a 
216e0 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 63 6f 6e  pointer to a con
216f0 73 74 61 6e 74 20 55 54 46 38 20 73 74 72 69 6e  stant UTF8 strin
21700 67 0a 2a 2a 20 77 68 69 63 68 20 77 69 6c 6c 20  g.** which will 
21710 62 65 63 6f 6d 65 20 74 68 65 20 6e 65 77 20 73  become the new s
21720 63 68 65 6d 61 20 6e 61 6d 65 20 69 6e 20 70 6c  chema name in pl
21730 61 63 65 20 6f 66 20 22 6d 61 69 6e 22 2e 20 20  ace of "main".  
21740 5e 53 51 4c 69 74 65 0a 2a 2a 20 64 6f 65 73 20  ^SQLite.** does 
21750 6e 6f 74 20 6d 61 6b 65 20 61 20 63 6f 70 79 20  not make a copy 
21760 6f 66 20 74 68 65 20 6e 65 77 20 6d 61 69 6e 20  of the new main 
21770 73 63 68 65 6d 61 20 6e 61 6d 65 20 73 74 72 69  schema name stri
21780 6e 67 2c 20 73 6f 20 74 68 65 20 61 70 70 6c 69  ng, so the appli
21790 63 61 74 69 6f 6e 0a 2a 2a 20 6d 75 73 74 20 65  cation.** must e
217a0 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20 61  nsure that the a
217b0 72 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20 69  rgument passed i
217c0 6e 74 6f 20 74 68 69 73 20 44 42 43 4f 4e 46 49  nto this DBCONFI
217d0 47 20 6f 70 74 69 6f 6e 20 69 73 20 75 6e 63 68  G option is unch
217e0 61 6e 67 65 64 0a 2a 2a 20 75 6e 74 69 6c 20 61  anged.** until a
217f0 66 74 65 72 20 74 68 65 20 64 61 74 61 62 61 73  fter the databas
21800 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 6f  e connection clo
21810 73 65 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a  ses..** </dd>.**
21820 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43  .** [[SQLITE_DBC
21830 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e  ONFIG_NO_CKPT_ON
21840 5f 43 4c 4f 53 45 5d 5d 20 0a 2a 2a 20 3c 64 74  _CLOSE]] .** <dt
21850 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  >SQLITE_DBCONFIG
21860 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53  _NO_CKPT_ON_CLOS
21870 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 55  E</dt>.** <dd> U
21880 73 75 61 6c 6c 79 2c 20 77 68 65 6e 20 61 20 64  sually, when a d
21890 61 74 61 62 61 73 65 20 69 6e 20 77 61 6c 20 6d  atabase in wal m
218a0 6f 64 65 20 69 73 20 63 6c 6f 73 65 64 20 6f 72  ode is closed or
218b0 20 64 65 74 61 63 68 65 64 20 66 72 6f 6d 20 61   detached from a
218c0 20 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 68 61   .** database ha
218d0 6e 64 6c 65 2c 20 53 51 4c 69 74 65 20 63 68 65  ndle, SQLite che
218e0 63 6b 73 20 69 66 20 74 68 69 73 20 77 69 6c 6c  cks if this will
218f0 20 6d 65 61 6e 20 74 68 61 74 20 74 68 65 72 65   mean that there
21900 20 61 72 65 20 6e 6f 77 20 6e 6f 20 0a 2a 2a 20   are now no .** 
21910 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 74 20 61  connections at a
21920 6c 6c 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  ll to the databa
21930 73 65 2e 20 49 66 20 73 6f 2c 20 69 74 20 70 65  se. If so, it pe
21940 72 66 6f 72 6d 73 20 61 20 63 68 65 63 6b 70 6f  rforms a checkpo
21950 69 6e 74 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f  int .** operatio
21960 6e 20 62 65 66 6f 72 65 20 63 6c 6f 73 69 6e 67  n before closing
21970 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
21980 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79   This option may
21990 20 62 65 20 75 73 65 64 20 74 6f 0a 2a 2a 20 6f   be used to.** o
219a0 76 65 72 72 69 64 65 20 74 68 69 73 20 62 65 68  verride this beh
219b0 61 76 69 6f 75 72 2e 20 54 68 65 20 66 69 72 73  aviour. The firs
219c0 74 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73  t parameter pass
219d0 65 64 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61  ed to this opera
219e0 74 69 6f 6e 0a 2a 2a 20 69 73 20 61 6e 20 69 6e  tion.** is an in
219f0 74 65 67 65 72 20 2d 20 70 6f 73 69 74 69 76 65  teger - positive
21a00 20 74 6f 20 64 69 73 61 62 6c 65 20 63 68 65 63   to disable chec
21a10 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73 65  kpoints-on-close
21a20 2c 20 6f 72 20 7a 65 72 6f 20 28 74 68 65 0a 2a  , or zero (the.*
21a30 2a 20 64 65 66 61 75 6c 74 29 20 74 6f 20 65 6e  * default) to en
21a40 61 62 6c 65 20 74 68 65 6d 2c 20 61 6e 64 20 6e  able them, and n
21a50 65 67 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65  egative to leave
21a60 20 74 68 65 20 73 65 74 74 69 6e 67 20 75 6e 63   the setting unc
21a70 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73  hanged..** The s
21a80 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
21a90 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
21aa0 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 69 6e  an integer.** in
21ab0 74 6f 20 77 68 69 63 68 20 69 73 20 77 72 69 74  to which is writ
21ac0 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
21ad0 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 63  dicate whether c
21ae0 68 65 63 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c  heckpoints-on-cl
21af0 6f 73 65 0a 2a 2a 20 68 61 76 65 20 62 65 65 6e  ose.** have been
21b00 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20 69 66   disabled - 0 if
21b10 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20 64 69   they are not di
21b20 73 61 62 6c 65 64 2c 20 31 20 69 66 20 74 68 65  sabled, 1 if the
21b30 79 20 61 72 65 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a  y are..** </dd>.
21b40 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44  **.** [[SQLITE_D
21b50 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
21b60 50 53 47 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  PSG]] <dt>SQLITE
21b70 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
21b80 5f 51 50 53 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  _QPSG</dt>.** <d
21b90 64 3e 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 44  d>^(The SQLITE_D
21ba0 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
21bb0 50 53 47 20 6f 70 74 69 6f 6e 20 61 63 74 69 76  PSG option activ
21bc0 61 74 65 73 20 6f 72 20 64 65 61 63 74 69 76 61  ates or deactiva
21bd0 74 65 73 0a 2a 2a 20 74 68 65 20 5b 71 75 65 72  tes.** the [quer
21be0 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c  y planner stabil
21bf0 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20 28  ity guarantee] (
21c00 51 50 53 47 29 2e 20 20 57 68 65 6e 20 74 68 65  QPSG).  When the
21c10 20 51 50 53 47 20 69 73 20 61 63 74 69 76 65 2c   QPSG is active,
21c20 0a 2a 2a 20 61 20 73 69 6e 67 6c 65 20 53 51 4c  .** a single SQL
21c30 20 71 75 65 72 79 20 73 74 61 74 65 6d 65 6e 74   query statement
21c40 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65   will always use
21c50 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f 72 69   the same algori
21c60 74 68 6d 20 72 65 67 61 72 64 6c 65 73 73 0a 2a  thm regardless.*
21c70 2a 20 6f 66 20 76 61 6c 75 65 73 20 6f 66 20 5b  * of values of [
21c80 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73  bound parameters
21c90 5d 2e 29 5e 20 54 68 65 20 51 50 53 47 20 64 69  ].)^ The QPSG di
21ca0 73 61 62 6c 65 73 20 73 6f 6d 65 20 71 75 65 72  sables some quer
21cb0 79 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 0a  y optimizations.
21cc0 2a 2a 20 74 68 61 74 20 6c 6f 6f 6b 20 61 74 20  ** that look at 
21cd0 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 62 6f  the values of bo
21ce0 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20  und parameters, 
21cf0 77 68 69 63 68 20 63 61 6e 20 6d 61 6b 65 20 73  which can make s
21d00 6f 6d 65 20 71 75 65 72 69 65 73 0a 2a 2a 20 73  ome queries.** s
21d10 6c 6f 77 65 72 2e 20 20 42 75 74 20 74 68 65 20  lower.  But the 
21d20 51 50 53 47 20 68 61 73 20 74 68 65 20 61 64 76  QPSG has the adv
21d30 61 6e 74 61 67 65 20 6f 66 20 6d 6f 72 65 20 70  antage of more p
21d40 72 65 64 69 63 74 61 62 6c 65 20 62 65 68 61 76  redictable behav
21d50 69 6f 72 2e 20 20 57 69 74 68 0a 2a 2a 20 74 68  ior.  With.** th
21d60 65 20 51 50 53 47 20 61 63 74 69 76 65 2c 20 53  e QPSG active, S
21d70 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 77 61 79  QLite will alway
21d80 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 71  s use the same q
21d90 75 65 72 79 20 70 6c 61 6e 20 69 6e 20 74 68 65  uery plan in the
21da0 20 66 69 65 6c 64 20 61 73 0a 2a 2a 20 77 61 73   field as.** was
21db0 20 75 73 65 64 20 64 75 72 69 6e 67 20 74 65 73   used during tes
21dc0 74 69 6e 67 20 69 6e 20 74 68 65 20 6c 61 62 2e  ting in the lab.
21dd0 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72  .** The first ar
21de0 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 73  gument to this s
21df0 65 74 74 69 6e 67 20 69 73 20 61 6e 20 69 6e 74  etting is an int
21e00 65 67 65 72 20 77 68 69 63 68 20 69 73 20 30 20  eger which is 0 
21e10 74 6f 20 64 69 73 61 62 6c 65 20 0a 2a 2a 20 74  to disable .** t
21e20 68 65 20 51 50 53 47 2c 20 70 6f 73 69 74 69 76  he QPSG, positiv
21e30 65 20 74 6f 20 65 6e 61 62 6c 65 20 51 50 53 47  e to enable QPSG
21e40 2c 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f  , or negative to
21e50 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69   leave the setti
21e60 6e 67 0a 2a 2a 20 75 6e 63 68 61 6e 67 65 64 2e  ng.** unchanged.
21e70 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
21e80 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
21e90 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
21ea0 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69   into which.** i
21eb0 73 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31  s written 0 or 1
21ec0 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65   to indicate whe
21ed0 74 68 65 72 20 74 68 65 20 51 50 53 47 20 69 73  ther the QPSG is
21ee0 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61   disabled or ena
21ef0 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  bled.** followin
21f00 67 20 74 68 69 73 20 63 61 6c 6c 2e 0a 2a 2a 20  g this call..** 
21f10 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
21f20 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 54 52  LITE_DBCONFIG_TR
21f30 49 47 47 45 52 5f 45 51 50 5d 5d 20 3c 64 74 3e  IGGER_EQP]] <dt>
21f40 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
21f50 54 52 49 47 47 45 52 5f 45 51 50 3c 2f 64 74 3e  TRIGGER_EQP</dt>
21f60 0a 2a 2a 20 3c 64 64 3e 20 42 79 20 64 65 66 61  .** <dd> By defa
21f70 75 6c 74 2c 20 74 68 65 20 6f 75 74 70 75 74 20  ult, the output 
21f80 6f 66 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59  of EXPLAIN QUERY
21f90 20 50 4c 41 4e 20 63 6f 6d 6d 61 6e 64 73 20 64   PLAN commands d
21fa0 6f 65 73 20 6e 6f 74 20 0a 2a 2a 20 69 6e 63 6c  oes not .** incl
21fb0 75 64 65 20 6f 75 74 70 75 74 20 66 6f 72 20 61  ude output for a
21fc0 6e 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 70 65  ny operations pe
21fd0 72 66 6f 72 6d 65 64 20 62 79 20 74 72 69 67 67  rformed by trigg
21fe0 65 72 20 70 72 6f 67 72 61 6d 73 2e 20 54 68 69  er programs. Thi
21ff0 73 0a 2a 2a 20 6f 70 74 69 6f 6e 20 69 73 20 75  s.** option is u
22000 73 65 64 20 74 6f 20 73 65 74 20 6f 72 20 63 6c  sed to set or cl
22010 65 61 72 20 28 74 68 65 20 64 65 66 61 75 6c 74  ear (the default
22020 29 20 61 20 66 6c 61 67 20 74 68 61 74 20 67 6f  ) a flag that go
22030 76 65 72 6e 73 20 74 68 69 73 0a 2a 2a 20 62 65  verns this.** be
22040 68 61 76 69 6f 72 2e 20 54 68 65 20 66 69 72 73  havior. The firs
22050 74 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73  t parameter pass
22060 65 64 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61  ed to this opera
22070 74 69 6f 6e 20 69 73 20 61 6e 20 69 6e 74 65 67  tion is an integ
22080 65 72 20 2d 0a 2a 2a 20 70 6f 73 69 74 69 76 65  er -.** positive
22090 20 74 6f 20 65 6e 61 62 6c 65 20 6f 75 74 70 75   to enable outpu
220a0 74 20 66 6f 72 20 74 72 69 67 67 65 72 20 70 72  t for trigger pr
220b0 6f 67 72 61 6d 73 2c 20 6f 72 20 7a 65 72 6f 20  ograms, or zero 
220c0 74 6f 20 64 69 73 61 62 6c 65 20 69 74 2c 0a 2a  to disable it,.*
220d0 2a 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f  * or negative to
220e0 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69   leave the setti
220f0 6e 67 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a  ng unchanged..**
22100 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
22110 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
22120 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
22130 20 69 6e 74 6f 20 77 68 69 63 68 20 69 73 20 77   into which is w
22140 72 69 74 74 65 6e 20 0a 2a 2a 20 30 20 6f 72 20  ritten .** 0 or 
22150 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68  1 to indicate wh
22160 65 74 68 65 72 20 6f 75 74 70 75 74 2d 66 6f 72  ether output-for
22170 2d 74 72 69 67 67 65 72 73 20 68 61 73 20 62 65  -triggers has be
22180 65 6e 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20  en disabled - 0 
22190 69 66 20 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74  if .** it is not
221a0 20 64 69 73 61 62 6c 65 64 2c 20 31 20 69 66 20   disabled, 1 if 
221b0 69 74 20 69 73 2e 20 20 0a 2a 2a 20 3c 2f 64 64  it is.  .** </dd
221c0 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
221d0 5f 44 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f  _DBCONFIG_RESET_
221e0 44 41 54 41 42 41 53 45 5d 5d 20 3c 64 74 3e 53  DATABASE]] <dt>S
221f0 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52  QLITE_DBCONFIG_R
22200 45 53 45 54 5f 44 41 54 41 42 41 53 45 3c 2f 64  ESET_DATABASE</d
22210 74 3e 0a 2a 2a 20 3c 64 64 3e 20 53 65 74 20 74  t>.** <dd> Set t
22220 68 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  he SQLITE_DBCONF
22230 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41 53  IG_RESET_DATABAS
22240 45 20 66 6c 61 67 20 61 6e 64 20 74 68 65 6e 20  E flag and then 
22250 72 75 6e 0a 2a 2a 20 5b 56 41 43 55 55 4d 5d 20  run.** [VACUUM] 
22260 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 73 65  in order to rese
22270 74 20 61 20 64 61 74 61 62 61 73 65 20 62 61 63  t a database bac
22280 6b 20 74 6f 20 61 6e 20 65 6d 70 74 79 20 64 61  k to an empty da
22290 74 61 62 61 73 65 0a 2a 2a 20 77 69 74 68 20 6e  tabase.** with n
222a0 6f 20 73 63 68 65 6d 61 20 61 6e 64 20 6e 6f 20  o schema and no 
222b0 63 6f 6e 74 65 6e 74 2e 20 54 68 65 20 66 6f 6c  content. The fol
222c0 6c 6f 77 69 6e 67 20 70 72 6f 63 65 73 73 20 77  lowing process w
222d0 6f 72 6b 73 20 65 76 65 6e 20 66 6f 72 0a 2a 2a  orks even for.**
222e0 20 61 20 62 61 64 6c 79 20 63 6f 72 72 75 70 74   a badly corrupt
222f0 65 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ed database file
22300 3a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69  :.** <ol>.** <li
22310 3e 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73  > If the databas
22320 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
22330 6e 65 77 6c 79 20 6f 70 65 6e 65 64 2c 20 6d 61  newly opened, ma
22340 6b 65 20 73 75 72 65 20 69 74 20 68 61 73 20 72  ke sure it has r
22350 65 61 64 20 74 68 65 0a 2a 2a 20 20 20 20 20 20  ead the.**      
22360 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
22370 62 79 20 70 72 65 70 61 72 69 6e 67 20 74 68 65  by preparing the
22380 6e 20 64 69 73 63 61 72 64 69 6e 67 20 73 6f 6d  n discarding som
22390 65 20 71 75 65 72 79 20 61 67 61 69 6e 73 74 20  e query against 
223a0 74 68 65 0a 2a 2a 20 20 20 20 20 20 64 61 74 61  the.**      data
223b0 62 61 73 65 2c 20 6f 72 20 63 61 6c 6c 69 6e 67  base, or calling
223c0 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
223d0 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 29  olumn_metadata()
223e0 2c 20 69 67 6e 6f 72 69 6e 67 20 61 6e 79 0a 2a  , ignoring any.*
223f0 2a 20 20 20 20 20 20 65 72 72 6f 72 73 2e 20 20  *      errors.  
22400 54 68 69 73 20 73 74 65 70 20 69 73 20 6f 6e 6c  This step is onl
22410 79 20 6e 65 63 65 73 73 61 72 79 20 69 66 20 74  y necessary if t
22420 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  he application d
22430 65 73 69 72 65 73 20 74 6f 20 6b 65 65 70 0a 2a  esires to keep.*
22440 2a 20 20 20 20 20 20 74 68 65 20 64 61 74 61 62  *      the datab
22450 61 73 65 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20  ase in WAL mode 
22460 61 66 74 65 72 20 74 68 65 20 72 65 73 65 74 20  after the reset 
22470 69 66 20 69 74 20 77 61 73 20 69 6e 20 57 41 4c  if it was in WAL
22480 20 6d 6f 64 65 20 62 65 66 6f 72 65 0a 2a 2a 20   mode before.** 
22490 20 20 20 20 20 74 68 65 20 72 65 73 65 74 2e 20       the reset. 
224a0 20 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65   .** <li> sqlite
224b0 33 5f 64 62 5f 63 6f 6e 66 69 67 28 64 62 2c 20  3_db_config(db, 
224c0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
224d0 52 45 53 45 54 5f 44 41 54 41 42 41 53 45 2c 20  RESET_DATABASE, 
224e0 31 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20 5b  1, 0);.** <li> [
224f0 73 71 6c 69 74 65 33 5f 65 78 65 63 5d 28 64 62  sqlite3_exec](db
22500 2c 20 22 5b 56 41 43 55 55 4d 5d 22 2c 20 30 2c  , "[VACUUM]", 0,
22510 20 30 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20   0, 0);.** <li> 
22520 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
22530 67 28 64 62 2c 20 53 51 4c 49 54 45 5f 44 42 43  g(db, SQLITE_DBC
22540 4f 4e 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41  ONFIG_RESET_DATA
22550 42 41 53 45 2c 20 30 2c 20 30 29 3b 0a 2a 2a 20  BASE, 0, 0);.** 
22560 3c 2f 6f 6c 3e 0a 2a 2a 20 42 65 63 61 75 73 65  </ol>.** Because
22570 20 72 65 73 65 74 74 69 6e 67 20 61 20 64 61 74   resetting a dat
22580 61 62 61 73 65 20 69 73 20 64 65 73 74 72 75 63  abase is destruc
22590 74 69 76 65 20 61 6e 64 20 69 72 72 65 76 65 72  tive and irrever
225a0 73 69 62 6c 65 2c 20 74 68 65 0a 2a 2a 20 70 72  sible, the.** pr
225b0 6f 63 65 73 73 20 72 65 71 75 69 72 65 73 20 74  ocess requires t
225c0 68 65 20 75 73 65 20 6f 66 20 74 68 69 73 20 6f  he use of this o
225d0 62 73 63 75 72 65 20 41 50 49 20 61 6e 64 20 6d  bscure API and m
225e0 75 6c 74 69 70 6c 65 20 73 74 65 70 73 20 74 6f  ultiple steps to
225f0 20 68 65 6c 70 0a 2a 2a 20 65 6e 73 75 72 65 20   help.** ensure 
22600 74 68 61 74 20 69 74 20 64 6f 65 73 20 6e 6f 74  that it does not
22610 20 68 61 70 70 65 6e 20 62 79 20 61 63 63 69 64   happen by accid
22620 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  ent..**.** [[SQL
22630 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46  ITE_DBCONFIG_DEF
22640 45 4e 53 49 56 45 5d 5d 20 3c 64 74 3e 53 51 4c  ENSIVE]] <dt>SQL
22650 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46  ITE_DBCONFIG_DEF
22660 45 4e 53 49 56 45 3c 2f 64 74 3e 0a 2a 2a 20 3c  ENSIVE</dt>.** <
22670 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 44 42  dd>The SQLITE_DB
22680 43 4f 4e 46 49 47 5f 44 45 46 45 4e 53 49 56 45  CONFIG_DEFENSIVE
22690 20 6f 70 74 69 6f 6e 20 61 63 74 69 76 61 74 65   option activate
226a0 73 20 6f 72 20 64 65 61 63 74 69 76 61 74 65 73  s or deactivates
226b0 20 74 68 65 0a 2a 2a 20 22 64 65 66 65 6e 73 69   the.** "defensi
226c0 76 65 22 20 66 6c 61 67 20 66 6f 72 20 61 20 64  ve" flag for a d
226d0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
226e0 6f 6e 2e 20 20 57 68 65 6e 20 74 68 65 20 64 65  on.  When the de
226f0 66 65 6e 73 69 76 65 0a 2a 2a 20 66 6c 61 67 20  fensive.** flag 
22700 69 73 20 65 6e 61 62 6c 65 64 2c 20 6c 61 6e 67  is enabled, lang
22710 75 61 67 65 20 66 65 61 74 75 72 65 73 20 74 68  uage features th
22720 61 74 20 61 6c 6c 6f 77 20 6f 72 64 69 6e 61 72  at allow ordinar
22730 79 20 53 51 4c 20 74 6f 20 0a 2a 2a 20 64 65 6c  y SQL to .** del
22740 69 62 65 72 61 74 65 6c 79 20 63 6f 72 72 75 70  iberately corrup
22750 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  t the database f
22760 69 6c 65 20 61 72 65 20 64 69 73 61 62 6c 65 64  ile are disabled
22770 2e 20 20 54 68 65 20 64 69 73 61 62 6c 65 64 0a  .  The disabled.
22780 2a 2a 20 66 65 61 74 75 72 65 73 20 69 6e 63 6c  ** features incl
22790 75 64 65 20 62 75 74 20 61 72 65 20 6e 6f 74 20  ude but are not 
227a0 6c 69 6d 69 74 65 64 20 74 6f 20 74 68 65 20 66  limited to the f
227b0 6f 6c 6c 6f 77 69 6e 67 3a 0a 2a 2a 20 3c 75 6c  ollowing:.** <ul
227c0 3e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 5b 50  >.** <li> The [P
227d0 52 41 47 4d 41 20 77 72 69 74 61 62 6c 65 5f 73  RAGMA writable_s
227e0 63 68 65 6d 61 3d 4f 4e 5d 20 73 74 61 74 65 6d  chema=ON] statem
227f0 65 6e 74 2e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65  ent..** <li> The
22800 20 5b 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c   [PRAGMA journal
22810 5f 6d 6f 64 65 3d 4f 46 46 5d 20 73 74 61 74 65  _mode=OFF] state
22820 6d 65 6e 74 2e 0a 2a 2a 20 3c 6c 69 3e 20 57 72  ment..** <li> Wr
22830 69 74 65 73 20 74 6f 20 74 68 65 20 5b 73 71 6c  ites to the [sql
22840 69 74 65 5f 64 62 70 61 67 65 5d 20 76 69 72 74  ite_dbpage] virt
22850 75 61 6c 20 74 61 62 6c 65 2e 0a 2a 2a 20 3c 6c  ual table..** <l
22860 69 3e 20 44 69 72 65 63 74 20 77 72 69 74 65 73  i> Direct writes
22870 20 74 6f 20 5b 73 68 61 64 6f 77 20 74 61 62 6c   to [shadow tabl
22880 65 73 5d 2e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a  es]..** </ul>.**
22890 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
228a0 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 57  QLITE_DBCONFIG_W
228b0 52 49 54 41 42 4c 45 5f 53 43 48 45 4d 41 5d 5d  RITABLE_SCHEMA]]
228c0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
228d0 4e 46 49 47 5f 57 52 49 54 41 42 4c 45 5f 53 43  NFIG_WRITABLE_SC
228e0 48 45 4d 41 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  HEMA</dt>.** <dd
228f0 3e 54 68 65 20 53 51 4c 49 54 45 5f 44 42 43 4f  >The SQLITE_DBCO
22900 4e 46 49 47 5f 57 52 49 54 41 42 4c 45 5f 53 43  NFIG_WRITABLE_SC
22910 48 45 4d 41 20 6f 70 74 69 6f 6e 20 61 63 74 69  HEMA option acti
22920 76 61 74 65 73 20 6f 72 20 64 65 61 63 74 69 76  vates or deactiv
22930 61 74 65 73 20 74 68 65 0a 2a 2a 20 22 77 72 69  ates the.** "wri
22940 74 61 62 6c 65 5f 73 63 68 65 6d 61 22 20 66 6c  table_schema" fl
22950 61 67 2e 20 54 68 69 73 20 68 61 73 20 74 68 65  ag. This has the
22960 20 73 61 6d 65 20 65 66 66 65 63 74 20 61 6e 64   same effect and
22970 20 69 73 20 6c 6f 67 69 63 61 6c 6c 79 20 65 71   is logically eq
22980 75 69 76 61 6c 65 6e 74 0a 2a 2a 20 74 6f 20 73  uivalent.** to s
22990 65 74 74 69 6e 67 20 5b 50 52 41 47 4d 41 20 77  etting [PRAGMA w
229a0 72 69 74 61 62 6c 65 5f 73 63 68 65 6d 61 3d 4f  ritable_schema=O
229b0 4e 5d 20 6f 72 20 5b 50 52 41 47 4d 41 20 77 72  N] or [PRAGMA wr
229c0 69 74 61 62 6c 65 5f 73 63 68 65 6d 61 3d 4f 46  itable_schema=OF
229d0 46 5d 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  F]..** The first
229e0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69   argument to thi
229f0 73 20 73 65 74 74 69 6e 67 20 69 73 20 61 6e 20  s setting is an 
22a00 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
22a10 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 0a 2a   0 to disable .*
22a20 2a 20 74 68 65 20 77 72 69 74 61 62 6c 65 5f 73  * the writable_s
22a30 63 68 65 6d 61 2c 20 70 6f 73 69 74 69 76 65 20  chema, positive 
22a40 74 6f 20 65 6e 61 62 6c 65 20 77 72 69 74 61 62  to enable writab
22a50 6c 65 5f 73 63 68 65 6d 61 2c 20 6f 72 20 6e 65  le_schema, or ne
22a60 67 61 74 69 76 65 20 74 6f 0a 2a 2a 20 6c 65 61  gative to.** lea
22a70 76 65 20 74 68 65 20 73 65 74 74 69 6e 67 20 75  ve the setting u
22a80 6e 63 68 61 6e 67 65 64 2e 20 54 68 65 20 73 65  nchanged. The se
22a90 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69  cond parameter i
22aa0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
22ab0 6e 0a 2a 2a 20 69 6e 74 65 67 65 72 20 69 6e 74  n.** integer int
22ac0 6f 20 77 68 69 63 68 20 69 73 20 77 72 69 74 74  o which is writt
22ad0 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64  en 0 or 1 to ind
22ae0 69 63 61 74 65 20 77 68 65 74 68 65 72 20 74 68  icate whether th
22af0 65 20 77 72 69 74 61 62 6c 65 5f 73 63 68 65 6d  e writable_schem
22b00 61 0a 2a 2a 20 69 73 20 65 6e 61 62 6c 65 64 20  a.** is enabled 
22b10 6f 72 20 64 69 73 61 62 6c 65 64 20 66 6f 6c 6c  or disabled foll
22b20 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e  owing this call.
22b30 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  .** </dd>.**.** 
22b40 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  [[SQLITE_DBCONFI
22b50 47 5f 4c 45 47 41 43 59 5f 41 4c 54 45 52 5f 54  G_LEGACY_ALTER_T
22b60 41 42 4c 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  ABLE]].** <dt>SQ
22b70 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 45  LITE_DBCONFIG_LE
22b80 47 41 43 59 5f 41 4c 54 45 52 5f 54 41 42 4c 45  GACY_ALTER_TABLE
22b90 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
22ba0 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47   SQLITE_DBCONFIG
22bb0 5f 4c 45 47 41 43 59 5f 41 4c 54 45 52 5f 54 41  _LEGACY_ALTER_TA
22bc0 42 4c 45 20 6f 70 74 69 6f 6e 20 61 63 74 69 76  BLE option activ
22bd0 61 74 65 73 20 6f 72 20 64 65 61 63 74 69 76 61  ates or deactiva
22be0 74 65 73 0a 2a 2a 20 74 68 65 20 6c 65 67 61 63  tes.** the legac
22bf0 79 20 62 65 68 61 76 69 6f 72 20 6f 66 20 74 68  y behavior of th
22c00 65 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 20 52  e [ALTER TABLE R
22c10 45 4e 41 4d 45 5d 20 63 6f 6d 6d 61 6e 64 20 73  ENAME] command s
22c20 75 63 68 20 69 74 0a 2a 2a 20 62 65 68 61 76 65  uch it.** behave
22c30 73 20 61 73 20 69 74 20 64 69 64 20 70 72 69 6f  s as it did prio
22c40 72 20 74 6f 20 5b 76 65 72 73 69 6f 6e 20 33 2e  r to [version 3.
22c50 32 34 2e 30 5d 20 28 32 30 31 38 2d 30 36 2d 30  24.0] (2018-06-0
22c60 34 29 2e 20 20 53 65 65 20 74 68 65 0a 2a 2a 20  4).  See the.** 
22c70 22 43 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 4e  "Compatibility N
22c80 6f 74 69 63 65 22 20 6f 6e 20 74 68 65 20 5b 41  otice" on the [A
22c90 4c 54 45 52 20 54 41 42 4c 45 20 52 45 4e 41 4d  LTER TABLE RENAM
22ca0 45 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 5d  E documentation]
22cb0 20 66 6f 72 0a 2a 2a 20 61 64 64 69 74 69 6f 6e   for.** addition
22cc0 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20  al information. 
22cd0 54 68 69 73 20 66 65 61 74 75 72 65 20 63 61 6e  This feature can
22ce0 20 61 6c 73 6f 20 62 65 20 74 75 72 6e 65 64 20   also be turned 
22cf0 6f 6e 20 61 6e 64 20 6f 66 66 0a 2a 2a 20 75 73  on and off.** us
22d00 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41 20  ing the [PRAGMA 
22d10 6c 65 67 61 63 79 5f 61 6c 74 65 72 5f 74 61 62  legacy_alter_tab
22d20 6c 65 5d 20 73 74 61 74 65 6d 65 6e 74 2e 0a 2a  le] statement..*
22d30 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  * </dd>.**.** [[
22d40 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
22d50 44 51 53 5f 44 4d 4c 5d 5d 0a 2a 2a 20 3c 64 74  DQS_DML]].** <dt
22d60 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  >SQLITE_DBCONFIG
22d70 5f 44 51 53 5f 44 4d 4c 3c 2f 74 64 3e 0a 2a 2a  _DQS_DML</td>.**
22d80 20 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f   <dd>The SQLITE_
22d90 44 42 43 4f 4e 46 49 47 5f 44 51 53 5f 44 4d 4c  DBCONFIG_DQS_DML
22da0 20 6f 70 74 69 6f 6e 20 61 63 74 69 76 61 74 65   option activate
22db0 73 20 6f 72 20 64 65 61 63 74 69 76 61 74 65 73  s or deactivates
22dc0 0a 2a 2a 20 74 68 65 20 6c 65 67 61 63 79 20 5b  .** the legacy [
22dd0 64 6f 75 62 6c 65 2d 71 75 6f 74 65 64 20 73 74  double-quoted st
22de0 72 69 6e 67 20 6c 69 74 65 72 61 6c 5d 20 6d 69  ring literal] mi
22df0 73 66 65 61 74 75 72 65 20 66 6f 72 20 44 4d 4c  sfeature for DML
22e00 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 6f 6e   statement.** on
22e10 6c 79 2c 20 74 68 61 74 20 69 73 20 44 45 4c 45  ly, that is DELE
22e20 54 45 2c 20 49 4e 53 45 52 54 2c 20 53 45 4c 45  TE, INSERT, SELE
22e30 43 54 2c 20 61 6e 64 20 55 50 44 41 54 45 20 73  CT, and UPDATE s
22e40 74 61 74 65 6d 65 6e 74 73 2e 20 54 68 65 0a 2a  tatements. The.*
22e50 2a 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  * default value 
22e60 6f 66 20 74 68 69 73 20 73 65 74 74 69 6e 67 20  of this setting 
22e70 69 73 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79  is determined by
22e80 20 74 68 65 20 5b 2d 44 53 51 4c 49 54 45 5f 44   the [-DSQLITE_D
22e90 51 53 5d 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74  QS].** compile-t
22ea0 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 20 3c  ime option..** <
22eb0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
22ec0 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 51 53  ITE_DBCONFIG_DQS
22ed0 5f 44 44 4c 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  _DDL]].** <dt>SQ
22ee0 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 51  LITE_DBCONFIG_DQ
22ef0 53 5f 44 44 4c 3c 2f 74 64 3e 0a 2a 2a 20 3c 64  S_DDL</td>.** <d
22f00 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 44 42 43  d>The SQLITE_DBC
22f10 4f 4e 46 49 47 5f 44 51 53 20 6f 70 74 69 6f 6e  ONFIG_DQS option
22f20 20 61 63 74 69 76 61 74 65 73 20 6f 72 20 64 65   activates or de
22f30 61 63 74 69 76 61 74 65 73 0a 2a 2a 20 74 68 65  activates.** the
22f40 20 6c 65 67 61 63 79 20 5b 64 6f 75 62 6c 65 2d   legacy [double-
22f50 71 75 6f 74 65 64 20 73 74 72 69 6e 67 20 6c 69  quoted string li
22f60 74 65 72 61 6c 5d 20 6d 69 73 66 65 61 74 75 72  teral] misfeatur
22f70 65 20 66 6f 72 20 44 44 4c 20 73 74 61 74 65 6d  e for DDL statem
22f80 65 6e 74 73 2c 0a 2a 2a 20 73 75 63 68 20 61 73  ents,.** such as
22f90 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 61 6e   CREATE TABLE an
22fa0 64 20 43 52 45 41 54 45 20 49 4e 44 45 58 2e 20  d CREATE INDEX. 
22fb0 54 68 65 0a 2a 2a 20 64 65 66 61 75 6c 74 20 76  The.** default v
22fc0 61 6c 75 65 20 6f 66 20 74 68 69 73 20 73 65 74  alue of this set
22fd0 74 69 6e 67 20 69 73 20 64 65 74 65 72 6d 69 6e  ting is determin
22fe0 65 64 20 62 79 20 74 68 65 20 5b 2d 44 53 51 4c  ed by the [-DSQL
22ff0 49 54 45 5f 44 51 53 5d 0a 2a 2a 20 63 6f 6d 70  ITE_DQS].** comp
23000 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e  ile-time option.
23010 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 20 3c 2f 64  .** </dd>.** </d
23020 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  l>.*/.#define SQ
23030 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4d 41  LITE_DBCONFIG_MA
23040 49 4e 44 42 4e 41 4d 45 20 20 20 20 20 20 20 20  INDBNAME        
23050 20 20 20 20 31 30 30 30 20 2f 2a 20 63 6f 6e 73      1000 /* cons
23060 74 20 63 68 61 72 2a 20 2a 2f 0a 23 64 65 66 69  t char* */.#defi
23070 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  ne SQLITE_DBCONF
23080 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 20 20 20  IG_LOOKASIDE    
23090 20 20 20 20 20 20 20 20 20 31 30 30 31 20 2f 2a           1001 /*
230a0 20 76 6f 69 64 2a 20 69 6e 74 20 69 6e 74 20 2a   void* int int *
230b0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
230c0 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
230d0 5f 46 4b 45 59 20 20 20 20 20 20 20 20 20 20 20  _FKEY           
230e0 31 30 30 32 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1002 /* int int*
230f0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
23100 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
23110 4c 45 5f 54 52 49 47 47 45 52 20 20 20 20 20 20  LE_TRIGGER      
23120 20 20 31 30 30 33 20 2f 2a 20 69 6e 74 20 69 6e    1003 /* int in
23130 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
23140 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
23150 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49  ABLE_FTS3_TOKENI
23160 5a 45 52 20 31 30 30 34 20 2f 2a 20 69 6e 74 20  ZER 1004 /* int 
23170 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
23180 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
23190 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45  ENABLE_LOAD_EXTE
231a0 4e 53 49 4f 4e 20 31 30 30 35 20 2f 2a 20 69 6e  NSION 1005 /* in
231b0 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
231c0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
231d0 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f  G_NO_CKPT_ON_CLO
231e0 53 45 20 20 20 20 20 20 31 30 30 36 20 2f 2a 20  SE      1006 /* 
231f0 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
23200 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
23210 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 20  FIG_ENABLE_QPSG 
23220 20 20 20 20 20 20 20 20 20 20 31 30 30 37 20 2f            1007 /
23230 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
23240 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
23250 4f 4e 46 49 47 5f 54 52 49 47 47 45 52 5f 45 51  ONFIG_TRIGGER_EQ
23260 50 20 20 20 20 20 20 20 20 20 20 20 31 30 30 38  P           1008
23270 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
23280 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
23290 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f 44 41  BCONFIG_RESET_DA
232a0 54 41 42 41 53 45 20 20 20 20 20 20 20 20 31 30  TABASE        10
232b0 30 39 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  09 /* int int* *
232c0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
232d0 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46 45 4e 53  _DBCONFIG_DEFENS
232e0 49 56 45 20 20 20 20 20 20 20 20 20 20 20 20 20  IVE             
232f0 31 30 31 30 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1010 /* int int*
23300 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
23310 54 45 5f 44 42 43 4f 4e 46 49 47 5f 57 52 49 54  TE_DBCONFIG_WRIT
23320 41 42 4c 45 5f 53 43 48 45 4d 41 20 20 20 20 20  ABLE_SCHEMA     
23330 20 20 31 30 31 31 20 2f 2a 20 69 6e 74 20 69 6e    1011 /* int in
23340 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
23350 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 45  LITE_DBCONFIG_LE
23360 47 41 43 59 5f 41 4c 54 45 52 5f 54 41 42 4c 45  GACY_ALTER_TABLE
23370 20 20 20 20 31 30 31 32 20 2f 2a 20 69 6e 74 20      1012 /* int 
23380 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
23390 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
233a0 44 51 53 5f 44 4d 4c 20 20 20 20 20 20 20 20 20  DQS_DML         
233b0 20 20 20 20 20 20 31 30 31 33 20 2f 2a 20 69 6e        1013 /* in
233c0 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
233d0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
233e0 47 5f 44 51 53 5f 44 44 4c 20 20 20 20 20 20 20  G_DQS_DDL       
233f0 20 20 20 20 20 20 20 20 31 30 31 34 20 2f 2a 20          1014 /* 
23400 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
23410 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
23420 46 49 47 5f 4d 41 58 20 20 20 20 20 20 20 20 20  FIG_MAX         
23430 20 20 20 20 20 20 20 20 20 20 31 30 31 34 20 2f            1014 /
23440 2a 20 4c 61 72 67 65 73 74 20 44 42 43 4f 4e 46  * Largest DBCONF
23450 49 47 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  IG */../*.** CAP
23460 49 33 52 45 46 3a 20 45 6e 61 62 6c 65 20 4f 72  I3REF: Enable Or
23470 20 44 69 73 61 62 6c 65 20 45 78 74 65 6e 64 65   Disable Extende
23480 64 20 52 65 73 75 6c 74 20 43 6f 64 65 73 0a 2a  d Result Codes.*
23490 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
234a0 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  3.**.** ^The sql
234b0 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65  ite3_extended_re
234c0 73 75 6c 74 5f 63 6f 64 65 73 28 29 20 72 6f 75  sult_codes() rou
234d0 74 69 6e 65 20 65 6e 61 62 6c 65 73 20 6f 72 20  tine enables or 
234e0 64 69 73 61 62 6c 65 73 20 74 68 65 0a 2a 2a 20  disables the.** 
234f0 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74  [extended result
23500 20 63 6f 64 65 73 5d 20 66 65 61 74 75 72 65 20   codes] feature 
23510 6f 66 20 53 51 4c 69 74 65 2e 20 5e 54 68 65 20  of SQLite. ^The 
23520 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 0a  extended result.
23530 2a 2a 20 63 6f 64 65 73 20 61 72 65 20 64 69 73  ** codes are dis
23540 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74  abled by default
23550 20 66 6f 72 20 68 69 73 74 6f 72 69 63 61 6c 20   for historical 
23560 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a  compatibility..*
23570 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
23580 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
23590 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 73  d_result_codes(s
235a0 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20 6f 6e 6f  qlite3*, int ono
235b0 66 66 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  ff);../*.** CAPI
235c0 33 52 45 46 3a 20 4c 61 73 74 20 49 6e 73 65 72  3REF: Last Inser
235d0 74 20 52 6f 77 69 64 0a 2a 2a 20 4d 45 54 48 4f  t Rowid.** METHO
235e0 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a  D: sqlite3.**.**
235f0 20 5e 45 61 63 68 20 65 6e 74 72 79 20 69 6e 20   ^Each entry in 
23600 6d 6f 73 74 20 53 51 4c 69 74 65 20 74 61 62 6c  most SQLite tabl
23610 65 73 20 28 65 78 63 65 70 74 20 66 6f 72 20 5b  es (except for [
23620 57 49 54 48 4f 55 54 20 52 4f 57 49 44 5d 20 74  WITHOUT ROWID] t
23630 61 62 6c 65 73 29 0a 2a 2a 20 68 61 73 20 61 20  ables).** has a 
23640 75 6e 69 71 75 65 20 36 34 2d 62 69 74 20 73 69  unique 64-bit si
23650 67 6e 65 64 0a 2a 2a 20 69 6e 74 65 67 65 72 20  gned.** integer 
23660 6b 65 79 20 63 61 6c 6c 65 64 20 74 68 65 20 5b  key called the [
23670 52 4f 57 49 44 20 7c 20 22 72 6f 77 69 64 22 5d  ROWID | "rowid"]
23680 2e 20 5e 54 68 65 20 72 6f 77 69 64 20 69 73 20  . ^The rowid is 
23690 61 6c 77 61 79 73 20 61 76 61 69 6c 61 62 6c 65  always available
236a0 0a 2a 2a 20 61 73 20 61 6e 20 75 6e 64 65 63 6c  .** as an undecl
236b0 61 72 65 64 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  ared column name
236c0 64 20 52 4f 57 49 44 2c 20 4f 49 44 2c 20 6f 72  d ROWID, OID, or
236d0 20 5f 52 4f 57 49 44 5f 20 61 73 20 6c 6f 6e 67   _ROWID_ as long
236e0 20 61 73 20 74 68 6f 73 65 0a 2a 2a 20 6e 61 6d   as those.** nam
236f0 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 73 6f 20  es are not also 
23700 75 73 65 64 20 62 79 20 65 78 70 6c 69 63 69 74  used by explicit
23710 6c 79 20 64 65 63 6c 61 72 65 64 20 63 6f 6c 75  ly declared colu
23720 6d 6e 73 2e 20 5e 49 66 0a 2a 2a 20 74 68 65 20  mns. ^If.** the 
23730 74 61 62 6c 65 20 68 61 73 20 61 20 63 6f 6c 75  table has a colu
23740 6d 6e 20 6f 66 20 74 79 70 65 20 5b 49 4e 54 45  mn of type [INTE
23750 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d  GER PRIMARY KEY]
23760 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d   then that colum
23770 6e 0a 2a 2a 20 69 73 20 61 6e 6f 74 68 65 72 20  n.** is another 
23780 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20 72 6f  alias for the ro
23790 77 69 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  wid..**.** ^The 
237a0 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73  sqlite3_last_ins
237b0 65 72 74 5f 72 6f 77 69 64 28 44 29 20 69 6e 74  ert_rowid(D) int
237c0 65 72 66 61 63 65 20 75 73 75 61 6c 6c 79 20 72  erface usually r
237d0 65 74 75 72 6e 73 20 74 68 65 20 5b 72 6f 77 69  eturns the [rowi
237e0 64 5d 20 6f 66 0a 2a 2a 20 74 68 65 20 6d 6f 73  d] of.** the mos
237f0 74 20 72 65 63 65 6e 74 20 73 75 63 63 65 73 73  t recent success
23800 66 75 6c 20 5b 49 4e 53 45 52 54 5d 20 69 6e 74  ful [INSERT] int
23810 6f 20 61 20 72 6f 77 69 64 20 74 61 62 6c 65 20  o a rowid table 
23820 6f 72 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c  or [virtual tabl
23830 65 5d 0a 2a 2a 20 6f 6e 20 64 61 74 61 62 61 73  e].** on databas
23840 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 44 2e 20  e connection D. 
23850 5e 49 6e 73 65 72 74 73 20 69 6e 74 6f 20 5b 57  ^Inserts into [W
23860 49 54 48 4f 55 54 20 52 4f 57 49 44 5d 20 74 61  ITHOUT ROWID] ta
23870 62 6c 65 73 20 61 72 65 20 6e 6f 74 0a 2a 2a 20  bles are not.** 
23880 72 65 63 6f 72 64 65 64 2e 20 5e 49 66 20 6e 6f  recorded. ^If no
23890 20 73 75 63 63 65 73 73 66 75 6c 20 5b 49 4e 53   successful [INS
238a0 45 52 54 5d 73 20 69 6e 74 6f 20 72 6f 77 69 64  ERT]s into rowid
238b0 20 74 61 62 6c 65 73 20 68 61 76 65 20 65 76 65   tables have eve
238c0 72 20 6f 63 63 75 72 72 65 64 20 0a 2a 2a 20 6f  r occurred .** o
238d0 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  n the database c
238e0 6f 6e 6e 65 63 74 69 6f 6e 20 44 2c 20 74 68 65  onnection D, the
238f0 6e 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  n sqlite3_last_i
23900 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 29 20 72  nsert_rowid(D) r
23910 65 74 75 72 6e 73 20 0a 2a 2a 20 7a 65 72 6f 2e  eturns .** zero.
23920 0a 2a 2a 0a 2a 2a 20 41 73 20 77 65 6c 6c 20 61  .**.** As well a
23930 73 20 62 65 69 6e 67 20 73 65 74 20 61 75 74 6f  s being set auto
23940 6d 61 74 69 63 61 6c 6c 79 20 61 73 20 72 6f 77  matically as row
23950 73 20 61 72 65 20 69 6e 73 65 72 74 65 64 20 69  s are inserted i
23960 6e 74 6f 20 64 61 74 61 62 61 73 65 0a 2a 2a 20  nto database.** 
23970 74 61 62 6c 65 73 2c 20 74 68 65 20 76 61 6c 75  tables, the valu
23980 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  e returned by th
23990 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20  is function may 
239a0 62 65 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c  be set explicitl
239b0 79 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  y by.** [sqlite3
239c0 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72 74  _set_last_insert
239d0 5f 72 6f 77 69 64 28 29 5d 0a 2a 2a 0a 2a 2a 20  _rowid()].**.** 
239e0 53 6f 6d 65 20 76 69 72 74 75 61 6c 20 74 61 62  Some virtual tab
239f0 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
23a00 6e 73 20 6d 61 79 20 49 4e 53 45 52 54 20 72 6f  ns may INSERT ro
23a10 77 73 20 69 6e 74 6f 20 72 6f 77 69 64 20 74 61  ws into rowid ta
23a20 62 6c 65 73 20 61 73 0a 2a 2a 20 70 61 72 74 20  bles as.** part 
23a30 6f 66 20 63 6f 6d 6d 69 74 74 69 6e 67 20 61 20  of committing a 
23a40 74 72 61 6e 73 61 63 74 69 6f 6e 20 28 65 2e 67  transaction (e.g
23a50 2e 20 74 6f 20 66 6c 75 73 68 20 64 61 74 61 20  . to flush data 
23a60 61 63 63 75 6d 75 6c 61 74 65 64 20 69 6e 20 6d  accumulated in m
23a70 65 6d 6f 72 79 0a 2a 2a 20 74 6f 20 64 69 73 6b  emory.** to disk
23a80 29 2e 20 49 6e 20 74 68 69 73 20 63 61 73 65 20  ). In this case 
23a90 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73  subsequent calls
23aa0 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f   to this functio
23ab0 6e 20 72 65 74 75 72 6e 20 74 68 65 20 72 6f 77  n return the row
23ac0 69 64 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 64  id.** associated
23ad0 20 77 69 74 68 20 74 68 65 73 65 20 69 6e 74 65   with these inte
23ae0 72 6e 61 6c 20 49 4e 53 45 52 54 20 6f 70 65 72  rnal INSERT oper
23af0 61 74 69 6f 6e 73 2c 20 77 68 69 63 68 20 6c 65  ations, which le
23b00 61 64 73 20 74 6f 20 0a 2a 2a 20 75 6e 69 6e 74  ads to .** unint
23b10 75 69 74 69 76 65 20 72 65 73 75 6c 74 73 2e 20  uitive results. 
23b20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d  Virtual table im
23b30 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 74 68  plementations th
23b40 61 74 20 64 6f 20 77 72 69 74 65 20 74 6f 20 72  at do write to r
23b50 6f 77 69 64 0a 2a 2a 20 74 61 62 6c 65 73 20 69  owid.** tables i
23b60 6e 20 74 68 69 73 20 77 61 79 20 63 61 6e 20 61  n this way can a
23b70 76 6f 69 64 20 74 68 69 73 20 70 72 6f 62 6c 65  void this proble
23b80 6d 20 62 79 20 72 65 73 74 6f 72 69 6e 67 20 74  m by restoring t
23b90 68 65 20 6f 72 69 67 69 6e 61 6c 20 0a 2a 2a 20  he original .** 
23ba0 72 6f 77 69 64 20 76 61 6c 75 65 20 75 73 69 6e  rowid value usin
23bb0 67 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c  g [sqlite3_set_l
23bc0 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
23bd0 28 29 5d 20 62 65 66 6f 72 65 20 72 65 74 75 72  ()] before retur
23be0 6e 69 6e 67 20 0a 2a 2a 20 63 6f 6e 74 72 6f 6c  ning .** control
23bf0 20 74 6f 20 74 68 65 20 75 73 65 72 2e 0a 2a 2a   to the user..**
23c00 0a 2a 2a 20 5e 28 49 66 20 61 6e 20 5b 49 4e 53  .** ^(If an [INS
23c10 45 52 54 5d 20 6f 63 63 75 72 73 20 77 69 74 68  ERT] occurs with
23c20 69 6e 20 61 20 74 72 69 67 67 65 72 20 74 68 65  in a trigger the
23c30 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77  n this routine w
23c40 69 6c 6c 20 0a 2a 2a 20 72 65 74 75 72 6e 20 74  ill .** return t
23c50 68 65 20 5b 72 6f 77 69 64 5d 20 6f 66 20 74 68  he [rowid] of th
23c60 65 20 69 6e 73 65 72 74 65 64 20 72 6f 77 20 61  e inserted row a
23c70 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 20 74 72  s long as the tr
23c80 69 67 67 65 72 20 69 73 20 0a 2a 2a 20 72 75 6e  igger is .** run
23c90 6e 69 6e 67 2e 20 4f 6e 63 65 20 74 68 65 20 74  ning. Once the t
23ca0 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 65  rigger program e
23cb0 6e 64 73 2c 20 74 68 65 20 76 61 6c 75 65 20 72  nds, the value r
23cc0 65 74 75 72 6e 65 64 20 0a 2a 2a 20 62 79 20 74  eturned .** by t
23cd0 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65 76 65  his routine reve
23ce0 72 74 73 20 74 6f 20 77 68 61 74 20 69 74 20 77  rts to what it w
23cf0 61 73 20 62 65 66 6f 72 65 20 74 68 65 20 74 72  as before the tr
23d00 69 67 67 65 72 20 77 61 73 20 66 69 72 65 64 2e  igger was fired.
23d10 29 5e 0a 2a 2a 0a 2a 2a 20 5e 41 6e 20 5b 49 4e  )^.**.** ^An [IN
23d20 53 45 52 54 5d 20 74 68 61 74 20 66 61 69 6c 73  SERT] that fails
23d30 20 64 75 65 20 74 6f 20 61 20 63 6f 6e 73 74 72   due to a constr
23d40 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 69  aint violation i
23d50 73 20 6e 6f 74 20 61 0a 2a 2a 20 73 75 63 63 65  s not a.** succe
23d60 73 73 66 75 6c 20 5b 49 4e 53 45 52 54 5d 20 61  ssful [INSERT] a
23d70 6e 64 20 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e  nd does not chan
23d80 67 65 20 74 68 65 20 76 61 6c 75 65 20 72 65 74  ge the value ret
23d90 75 72 6e 65 64 20 62 79 20 74 68 69 73 0a 2a 2a  urned by this.**
23da0 20 72 6f 75 74 69 6e 65 2e 20 20 5e 54 68 75 73   routine.  ^Thus
23db0 20 49 4e 53 45 52 54 20 4f 52 20 46 41 49 4c 2c   INSERT OR FAIL,
23dc0 20 49 4e 53 45 52 54 20 4f 52 20 49 47 4e 4f 52   INSERT OR IGNOR
23dd0 45 2c 20 49 4e 53 45 52 54 20 4f 52 20 52 4f 4c  E, INSERT OR ROL
23de0 4c 42 41 43 4b 2c 0a 2a 2a 20 61 6e 64 20 49 4e  LBACK,.** and IN
23df0 53 45 52 54 20 4f 52 20 41 42 4f 52 54 20 6d 61  SERT OR ABORT ma
23e00 6b 65 20 6e 6f 20 63 68 61 6e 67 65 73 20 74 6f  ke no changes to
23e10 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   the return valu
23e20 65 20 6f 66 20 74 68 69 73 0a 2a 2a 20 72 6f 75  e of this.** rou
23e30 74 69 6e 65 20 77 68 65 6e 20 74 68 65 69 72 20  tine when their 
23e40 69 6e 73 65 72 74 69 6f 6e 20 66 61 69 6c 73 2e  insertion fails.
23e50 20 20 5e 28 57 68 65 6e 20 49 4e 53 45 52 54 20    ^(When INSERT 
23e60 4f 52 20 52 45 50 4c 41 43 45 0a 2a 2a 20 65 6e  OR REPLACE.** en
23e70 63 6f 75 6e 74 65 72 73 20 61 20 63 6f 6e 73 74  counters a const
23e80 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 2c  raint violation,
23e90 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 66 61 69   it does not fai
23ea0 6c 2e 20 20 54 68 65 0a 2a 2a 20 49 4e 53 45 52  l.  The.** INSER
23eb0 54 20 63 6f 6e 74 69 6e 75 65 73 20 74 6f 20 63  T continues to c
23ec0 6f 6d 70 6c 65 74 69 6f 6e 20 61 66 74 65 72 20  ompletion after 
23ed0 64 65 6c 65 74 69 6e 67 20 72 6f 77 73 20 74 68  deleting rows th
23ee0 61 74 20 63 61 75 73 65 64 0a 2a 2a 20 74 68 65  at caused.** the
23ef0 20 63 6f 6e 73 74 72 61 69 6e 74 20 70 72 6f 62   constraint prob
23f00 6c 65 6d 20 73 6f 20 49 4e 53 45 52 54 20 4f 52  lem so INSERT OR
23f10 20 52 45 50 4c 41 43 45 20 77 69 6c 6c 20 61 6c   REPLACE will al
23f20 77 61 79 73 20 63 68 61 6e 67 65 0a 2a 2a 20 74  ways change.** t
23f30 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  he return value 
23f40 6f 66 20 74 68 69 73 20 69 6e 74 65 72 66 61 63  of this interfac
23f50 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 46 6f 72 20  e.)^.**.** ^For 
23f60 74 68 65 20 70 75 72 70 6f 73 65 73 20 6f 66 20  the purposes of 
23f70 74 68 69 73 20 72 6f 75 74 69 6e 65 2c 20 61 6e  this routine, an
23f80 20 5b 49 4e 53 45 52 54 5d 20 69 73 20 63 6f 6e   [INSERT] is con
23f90 73 69 64 65 72 65 64 20 74 6f 0a 2a 2a 20 62 65  sidered to.** be
23fa0 20 73 75 63 63 65 73 73 66 75 6c 20 65 76 65 6e   successful even
23fb0 20 69 66 20 69 74 20 69 73 20 73 75 62 73 65 71   if it is subseq
23fc0 75 65 6e 74 6c 79 20 72 6f 6c 6c 65 64 20 62 61  uently rolled ba
23fd0 63 6b 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66  ck..**.** This f
23fe0 75 6e 63 74 69 6f 6e 20 69 73 20 61 63 63 65 73  unction is acces
23ff0 73 69 62 6c 65 20 74 6f 20 53 51 4c 20 73 74 61  sible to SQL sta
24000 74 65 6d 65 6e 74 73 20 76 69 61 20 74 68 65 0a  tements via the.
24010 2a 2a 20 5b 6c 61 73 74 5f 69 6e 73 65 72 74 5f  ** [last_insert_
24020 72 6f 77 69 64 28 29 20 53 51 4c 20 66 75 6e 63  rowid() SQL func
24030 74 69 6f 6e 5d 2e 0a 2a 2a 0a 2a 2a 20 49 66 20  tion]..**.** If 
24040 61 20 73 65 70 61 72 61 74 65 20 74 68 72 65 61  a separate threa
24050 64 20 70 65 72 66 6f 72 6d 73 20 61 20 6e 65 77  d performs a new
24060 20 5b 49 4e 53 45 52 54 5d 20 6f 6e 20 74 68 65   [INSERT] on the
24070 20 73 61 6d 65 0a 2a 2a 20 64 61 74 61 62 61 73   same.** databas
24080 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 69  e connection whi
24090 6c 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  le the [sqlite3_
240a0 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
240b0 64 28 29 5d 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e  d()].** function
240c0 20 69 73 20 72 75 6e 6e 69 6e 67 20 61 6e 64 20   is running and 
240d0 74 68 75 73 20 63 68 61 6e 67 65 73 20 74 68 65  thus changes the
240e0 20 6c 61 73 74 20 69 6e 73 65 72 74 20 5b 72 6f   last insert [ro
240f0 77 69 64 5d 2c 0a 2a 2a 20 74 68 65 6e 20 74 68  wid],.** then th
24100 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64  e value returned
24110 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73   by [sqlite3_las
24120 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
24130 5d 20 69 73 0a 2a 2a 20 75 6e 70 72 65 64 69 63  ] is.** unpredic
24140 74 61 62 6c 65 20 61 6e 64 20 6d 69 67 68 74 20  table and might 
24150 6e 6f 74 20 65 71 75 61 6c 20 65 69 74 68 65 72  not equal either
24160 20 74 68 65 20 6f 6c 64 20 6f 72 20 74 68 65 20   the old or the 
24170 6e 65 77 0a 2a 2a 20 6c 61 73 74 20 69 6e 73 65  new.** last inse
24180 72 74 20 5b 72 6f 77 69 64 5d 2e 0a 2a 2f 0a 53  rt [rowid]..*/.S
24190 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65  QLITE_API sqlite
241a0 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f  3_int64 sqlite3_
241b0 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
241c0 64 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a  d(sqlite3*);../*
241d0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 65  .** CAPI3REF: Se
241e0 74 20 74 68 65 20 4c 61 73 74 20 49 6e 73 65 72  t the Last Inser
241f0 74 20 52 6f 77 69 64 20 76 61 6c 75 65 2e 0a 2a  t Rowid value..*
24200 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
24210 33 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  3.**.** The sqli
24220 74 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73  te3_set_last_ins
24230 65 72 74 5f 72 6f 77 69 64 28 44 2c 20 52 29 20  ert_rowid(D, R) 
24240 6d 65 74 68 6f 64 20 61 6c 6c 6f 77 73 20 74 68  method allows th
24250 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f  e application to
24260 0a 2a 2a 20 73 65 74 20 74 68 65 20 76 61 6c 75  .** set the valu
24270 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 63 61  e returned by ca
24280 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61  lling sqlite3_la
24290 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
242a0 44 29 20 74 6f 20 52 20 0a 2a 2a 20 77 69 74 68  D) to R .** with
242b0 6f 75 74 20 69 6e 73 65 72 74 69 6e 67 20 61 20  out inserting a 
242c0 72 6f 77 20 69 6e 74 6f 20 74 68 65 20 64 61 74  row into the dat
242d0 61 62 61 73 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45  abase..*/.SQLITE
242e0 5f 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65  _API void sqlite
242f0 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72  3_set_last_inser
24300 74 5f 72 6f 77 69 64 28 73 71 6c 69 74 65 33 2a  t_rowid(sqlite3*
24310 2c 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 29 3b  ,sqlite3_int64);
24320 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
24330 3a 20 43 6f 75 6e 74 20 54 68 65 20 4e 75 6d 62  : Count The Numb
24340 65 72 20 4f 66 20 52 6f 77 73 20 4d 6f 64 69 66  er Of Rows Modif
24350 69 65 64 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  ied.** METHOD: s
24360 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68  qlite3.**.** ^Th
24370 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  is function retu
24380 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  rns the number o
24390 66 20 72 6f 77 73 20 6d 6f 64 69 66 69 65 64 2c  f rows modified,
243a0 20 69 6e 73 65 72 74 65 64 20 6f 72 0a 2a 2a 20   inserted or.** 
243b0 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 20 6d  deleted by the m
243c0 6f 73 74 20 72 65 63 65 6e 74 6c 79 20 63 6f 6d  ost recently com
243d0 70 6c 65 74 65 64 20 49 4e 53 45 52 54 2c 20 55  pleted INSERT, U
243e0 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45 0a  PDATE or DELETE.
243f0 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20  ** statement on 
24400 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
24410 6e 65 63 74 69 6f 6e 20 73 70 65 63 69 66 69 65  nection specifie
24420 64 20 62 79 20 74 68 65 20 6f 6e 6c 79 20 70 61  d by the only pa
24430 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e 45 78 65  rameter..** ^Exe
24440 63 75 74 69 6e 67 20 61 6e 79 20 6f 74 68 65 72  cuting any other
24450 20 74 79 70 65 20 6f 66 20 53 51 4c 20 73 74 61   type of SQL sta
24460 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20  tement does not 
24470 6d 6f 64 69 66 79 20 74 68 65 20 76 61 6c 75 65  modify the value
24480 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 62 79 20  .** returned by 
24490 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a  this function..*
244a0 2a 0a 2a 2a 20 5e 4f 6e 6c 79 20 63 68 61 6e 67  *.** ^Only chang
244b0 65 73 20 6d 61 64 65 20 64 69 72 65 63 74 6c 79  es made directly
244c0 20 62 79 20 74 68 65 20 49 4e 53 45 52 54 2c 20   by the INSERT, 
244d0 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45  UPDATE or DELETE
244e0 20 73 74 61 74 65 6d 65 6e 74 20 61 72 65 0a 2a   statement are.*
244f0 2a 20 63 6f 6e 73 69 64 65 72 65 64 20 2d 20 61  * considered - a
24500 75 78 69 6c 69 61 72 79 20 63 68 61 6e 67 65 73  uxiliary changes
24510 20 63 61 75 73 65 64 20 62 79 20 5b 43 52 45 41   caused by [CREA
24520 54 45 20 54 52 49 47 47 45 52 20 7c 20 74 72 69  TE TRIGGER | tri
24530 67 67 65 72 73 5d 2c 20 0a 2a 2a 20 5b 66 6f 72  ggers], .** [for
24540 65 69 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73  eign key actions
24550 5d 20 6f 72 20 5b 52 45 50 4c 41 43 45 5d 20 63  ] or [REPLACE] c
24560 6f 6e 73 74 72 61 69 6e 74 20 72 65 73 6f 6c 75  onstraint resolu
24570 74 69 6f 6e 20 61 72 65 20 6e 6f 74 20 63 6f 75  tion are not cou
24580 6e 74 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 43 68 61  nted..** .** Cha
24590 6e 67 65 73 20 74 6f 20 61 20 76 69 65 77 20 74  nges to a view t
245a0 68 61 74 20 61 72 65 20 69 6e 74 65 72 63 65 70  hat are intercep
245b0 74 65 64 20 62 79 20 0a 2a 2a 20 5b 49 4e 53 54  ted by .** [INST
245c0 45 41 44 20 4f 46 20 74 72 69 67 67 65 72 20 7c  EAD OF trigger |
245d0 20 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67   INSTEAD OF trig
245e0 67 65 72 73 5d 20 61 72 65 20 6e 6f 74 20 63 6f  gers] are not co
245f0 75 6e 74 65 64 2e 20 5e 54 68 65 20 76 61 6c 75  unted. ^The valu
24600 65 20 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 62  e .** returned b
24610 79 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  y sqlite3_change
24620 73 28 29 20 69 6d 6d 65 64 69 61 74 65 6c 79 20  s() immediately 
24630 61 66 74 65 72 20 61 6e 20 49 4e 53 45 52 54 2c  after an INSERT,
24640 20 55 50 44 41 54 45 20 6f 72 20 0a 2a 2a 20 44   UPDATE or .** D
24650 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20  ELETE statement 
24660 72 75 6e 20 6f 6e 20 61 20 76 69 65 77 20 69 73  run on a view is
24670 20 61 6c 77 61 79 73 20 7a 65 72 6f 2e 20 4f 6e   always zero. On
24680 6c 79 20 63 68 61 6e 67 65 73 20 6d 61 64 65 20  ly changes made 
24690 74 6f 20 72 65 61 6c 20 0a 2a 2a 20 74 61 62 6c  to real .** tabl
246a0 65 73 20 61 72 65 20 63 6f 75 6e 74 65 64 2e 0a  es are counted..
246b0 2a 2a 0a 2a 2a 20 54 68 69 6e 67 73 20 61 72 65  **.** Things are
246c0 20 6d 6f 72 65 20 63 6f 6d 70 6c 69 63 61 74 65   more complicate
246d0 64 20 69 66 20 74 68 65 20 73 71 6c 69 74 65 33  d if the sqlite3
246e0 5f 63 68 61 6e 67 65 73 28 29 20 66 75 6e 63 74  _changes() funct
246f0 69 6f 6e 20 69 73 0a 2a 2a 20 65 78 65 63 75 74  ion is.** execut
24700 65 64 20 77 68 69 6c 65 20 61 20 74 72 69 67 67  ed while a trigg
24710 65 72 20 70 72 6f 67 72 61 6d 20 69 73 20 72 75  er program is ru
24720 6e 6e 69 6e 67 2e 20 54 68 69 73 20 6d 61 79 20  nning. This may 
24730 68 61 70 70 65 6e 20 69 66 20 74 68 65 0a 2a 2a  happen if the.**
24740 20 70 72 6f 67 72 61 6d 20 75 73 65 73 20 74 68   program uses th
24750 65 20 5b 63 68 61 6e 67 65 73 28 29 20 53 51 4c  e [changes() SQL
24760 20 66 75 6e 63 74 69 6f 6e 5d 2c 20 6f 72 20 69   function], or i
24770 66 20 73 6f 6d 65 20 6f 74 68 65 72 20 63 61 6c  f some other cal
24780 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f  lback.** functio
24790 6e 20 69 6e 76 6f 6b 65 73 20 73 71 6c 69 74 65  n invokes sqlite
247a0 33 5f 63 68 61 6e 67 65 73 28 29 20 64 69 72 65  3_changes() dire
247b0 63 74 6c 79 2e 20 45 73 73 65 6e 74 69 61 6c 6c  ctly. Essentiall
247c0 79 3a 0a 2a 2a 20 0a 2a 2a 20 3c 75 6c 3e 0a 2a  y:.** .** <ul>.*
247d0 2a 20 20 20 3c 6c 69 3e 20 5e 28 42 65 66 6f 72  *   <li> ^(Befor
247e0 65 20 65 6e 74 65 72 69 6e 67 20 61 20 74 72 69  e entering a tri
247f0 67 67 65 72 20 70 72 6f 67 72 61 6d 20 74 68 65  gger program the
24800 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20   value returned 
24810 62 79 0a 2a 2a 20 20 20 20 20 20 20 20 73 71 6c  by.**        sql
24820 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20 66  ite3_changes() f
24830 75 6e 63 74 69 6f 6e 20 69 73 20 73 61 76 65 64  unction is saved
24840 2e 20 41 66 74 65 72 20 74 68 65 20 74 72 69 67  . After the trig
24850 67 65 72 20 70 72 6f 67 72 61 6d 20 0a 2a 2a 20  ger program .** 
24860 20 20 20 20 20 20 20 68 61 73 20 66 69 6e 69 73         has finis
24870 68 65 64 2c 20 74 68 65 20 6f 72 69 67 69 6e 61  hed, the origina
24880 6c 20 76 61 6c 75 65 20 69 73 20 72 65 73 74 6f  l value is resto
24890 72 65 64 2e 29 5e 0a 2a 2a 20 0a 2a 2a 20 20 20  red.)^.** .**   
248a0 3c 6c 69 3e 20 5e 28 57 69 74 68 69 6e 20 61 20  <li> ^(Within a 
248b0 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20  trigger program 
248c0 65 61 63 68 20 49 4e 53 45 52 54 2c 20 55 50 44  each INSERT, UPD
248d0 41 54 45 20 61 6e 64 20 44 45 4c 45 54 45 20 0a  ATE and DELETE .
248e0 2a 2a 20 20 20 20 20 20 20 20 73 74 61 74 65 6d  **        statem
248f0 65 6e 74 20 73 65 74 73 20 74 68 65 20 76 61 6c  ent sets the val
24900 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20 73  ue returned by s
24910 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29  qlite3_changes()
24920 20 0a 2a 2a 20 20 20 20 20 20 20 20 75 70 6f 6e   .**        upon
24930 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 61 73 20 6e   completion as n
24940 6f 72 6d 61 6c 2e 20 4f 66 20 63 6f 75 72 73 65  ormal. Of course
24950 2c 20 74 68 69 73 20 76 61 6c 75 65 20 77 69 6c  , this value wil
24960 6c 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 0a 2a  l not include .*
24970 2a 20 20 20 20 20 20 20 20 61 6e 79 20 63 68 61  *        any cha
24980 6e 67 65 73 20 70 65 72 66 6f 72 6d 65 64 20 62  nges performed b
24990 79 20 73 75 62 2d 74 72 69 67 67 65 72 73 2c 20  y sub-triggers, 
249a0 61 73 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63  as the sqlite3_c
249b0 68 61 6e 67 65 73 28 29 20 0a 2a 2a 20 20 20 20  hanges() .**    
249c0 20 20 20 20 76 61 6c 75 65 20 77 69 6c 6c 20 62      value will b
249d0 65 20 73 61 76 65 64 20 61 6e 64 20 72 65 73 74  e saved and rest
249e0 6f 72 65 64 20 61 66 74 65 72 20 65 61 63 68 20  ored after each 
249f0 73 75 62 2d 74 72 69 67 67 65 72 20 68 61 73 20  sub-trigger has 
24a00 72 75 6e 2e 29 5e 0a 2a 2a 20 3c 2f 75 6c 3e 0a  run.)^.** </ul>.
24a10 2a 2a 20 0a 2a 2a 20 5e 54 68 69 73 20 6d 65 61  ** .** ^This mea
24a20 6e 73 20 74 68 61 74 20 69 66 20 74 68 65 20 63  ns that if the c
24a30 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66 75 6e  hanges() SQL fun
24a40 63 74 69 6f 6e 20 28 6f 72 20 73 69 6d 69 6c 61  ction (or simila
24a50 72 29 20 69 73 20 75 73 65 64 0a 2a 2a 20 62 79  r) is used.** by
24a60 20 74 68 65 20 66 69 72 73 74 20 49 4e 53 45 52   the first INSER
24a70 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c  T, UPDATE or DEL
24a80 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ETE statement wi
24a90 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 2c 20  thin a trigger, 
24aa0 69 74 20 0a 2a 2a 20 72 65 74 75 72 6e 73 20 74  it .** returns t
24ab0 68 65 20 76 61 6c 75 65 20 61 73 20 73 65 74 20  he value as set 
24ac0 77 68 65 6e 20 74 68 65 20 63 61 6c 6c 69 6e 67  when the calling
24ad0 20 73 74 61 74 65 6d 65 6e 74 20 62 65 67 61 6e   statement began
24ae0 20 65 78 65 63 75 74 69 6e 67 2e 0a 2a 2a 20 5e   executing..** ^
24af0 49 66 20 69 74 20 69 73 20 75 73 65 64 20 62 79  If it is used by
24b00 20 74 68 65 20 73 65 63 6f 6e 64 20 6f 72 20 73   the second or s
24b10 75 62 73 65 71 75 65 6e 74 20 73 75 63 68 20 73  ubsequent such s
24b20 74 61 74 65 6d 65 6e 74 20 77 69 74 68 69 6e 20  tatement within 
24b30 61 20 74 72 69 67 67 65 72 20 0a 2a 2a 20 70 72  a trigger .** pr
24b40 6f 67 72 61 6d 2c 20 74 68 65 20 76 61 6c 75 65  ogram, the value
24b50 20 72 65 74 75 72 6e 65 64 20 72 65 66 6c 65 63   returned reflec
24b60 74 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ts the number of
24b70 20 72 6f 77 73 20 6d 6f 64 69 66 69 65 64 20 62   rows modified b
24b80 79 20 74 68 65 20 0a 2a 2a 20 70 72 65 76 69 6f  y the .** previo
24b90 75 73 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54  us INSERT, UPDAT
24ba0 45 20 6f 72 20 44 45 4c 45 54 45 20 73 74 61 74  E or DELETE stat
24bb0 65 6d 65 6e 74 20 77 69 74 68 69 6e 20 74 68 65  ement within the
24bc0 20 73 61 6d 65 20 74 72 69 67 67 65 72 2e 0a 2a   same trigger..*
24bd0 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61 72 61  *.** If a separa
24be0 74 65 20 74 68 72 65 61 64 20 6d 61 6b 65 73 20  te thread makes 
24bf0 63 68 61 6e 67 65 73 20 6f 6e 20 74 68 65 20 73  changes on the s
24c00 61 6d 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ame database con
24c10 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77 68 69 6c 65  nection.** while
24c20 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65   [sqlite3_change
24c30 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e 67 20  s()] is running 
24c40 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20 72  then the value r
24c50 65 74 75 72 6e 65 64 0a 2a 2a 20 69 73 20 75 6e  eturned.** is un
24c60 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e 64 20  predictable and 
24c70 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c 2e 0a  not meaningful..
24c80 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 0a  **.** See also:.
24c90 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20  ** <ul>.** <li> 
24ca0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74  the [sqlite3_tot
24cb0 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20 69 6e  al_changes()] in
24cc0 74 65 72 66 61 63 65 0a 2a 2a 20 3c 6c 69 3e 20  terface.** <li> 
24cd0 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68 61 6e 67  the [count_chang
24ce0 65 73 20 70 72 61 67 6d 61 5d 0a 2a 2a 20 3c 6c  es pragma].** <l
24cf0 69 3e 20 74 68 65 20 5b 63 68 61 6e 67 65 73 28  i> the [changes(
24d00 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 0a  ) SQL function].
24d10 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 64 61 74  ** <li> the [dat
24d20 61 5f 76 65 72 73 69 6f 6e 20 70 72 61 67 6d 61  a_version pragma
24d30 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 53 51  ].** </ul>.*/.SQ
24d40 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
24d50 69 74 65 33 5f 63 68 61 6e 67 65 73 28 73 71 6c  ite3_changes(sql
24d60 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  ite3*);../*.** C
24d70 41 50 49 33 52 45 46 3a 20 54 6f 74 61 6c 20 4e  API3REF: Total N
24d80 75 6d 62 65 72 20 4f 66 20 52 6f 77 73 20 4d 6f  umber Of Rows Mo
24d90 64 69 66 69 65 64 0a 2a 2a 20 4d 45 54 48 4f 44  dified.** METHOD
24da0 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
24db0 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72  ^This function r
24dc0 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74 61 6c  eturns the total
24dd0 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20   number of rows 
24de0 69 6e 73 65 72 74 65 64 2c 20 6d 6f 64 69 66 69  inserted, modifi
24df0 65 64 20 6f 72 0a 2a 2a 20 64 65 6c 65 74 65 64  ed or.** deleted
24e00 20 62 79 20 61 6c 6c 20 5b 49 4e 53 45 52 54 5d   by all [INSERT]
24e10 2c 20 5b 55 50 44 41 54 45 5d 20 6f 72 20 5b 44  , [UPDATE] or [D
24e20 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74  ELETE] statement
24e30 73 20 63 6f 6d 70 6c 65 74 65 64 0a 2a 2a 20 73  s completed.** s
24e40 69 6e 63 65 20 74 68 65 20 64 61 74 61 62 61 73  ince the databas
24e50 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73  e connection was
24e60 20 6f 70 65 6e 65 64 2c 20 69 6e 63 6c 75 64 69   opened, includi
24e70 6e 67 20 74 68 6f 73 65 20 65 78 65 63 75 74 65  ng those execute
24e80 64 20 61 73 0a 2a 2a 20 70 61 72 74 20 6f 66 20  d as.** part of 
24e90 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 73  trigger programs
24ea0 2e 20 5e 45 78 65 63 75 74 69 6e 67 20 61 6e 79  . ^Executing any
24eb0 20 6f 74 68 65 72 20 74 79 70 65 20 6f 66 20 53   other type of S
24ec0 51 4c 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20  QL statement.** 
24ed0 64 6f 65 73 20 6e 6f 74 20 61 66 66 65 63 74 20  does not affect 
24ee0 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
24ef0 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 74 6f  ed by sqlite3_to
24f00 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 2e 0a 2a  tal_changes()..*
24f10 2a 20 0a 2a 2a 20 5e 43 68 61 6e 67 65 73 20 6d  * .** ^Changes m
24f20 61 64 65 20 61 73 20 70 61 72 74 20 6f 66 20 5b  ade as part of [
24f30 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69  foreign key acti
24f40 6f 6e 73 5d 20 61 72 65 20 69 6e 63 6c 75 64 65  ons] are include
24f50 64 20 69 6e 20 74 68 65 0a 2a 2a 20 63 6f 75 6e  d in the.** coun
24f60 74 2c 20 62 75 74 20 74 68 6f 73 65 20 6d 61 64  t, but those mad
24f70 65 20 61 73 20 70 61 72 74 20 6f 66 20 52 45 50  e as part of REP
24f80 4c 41 43 45 20 63 6f 6e 73 74 72 61 69 6e 74 20  LACE constraint 
24f90 72 65 73 6f 6c 75 74 69 6f 6e 20 61 72 65 0a 2a  resolution are.*
24fa0 2a 20 6e 6f 74 2e 20 5e 43 68 61 6e 67 65 73 20  * not. ^Changes 
24fb0 74 6f 20 61 20 76 69 65 77 20 74 68 61 74 20 61  to a view that a
24fc0 72 65 20 69 6e 74 65 72 63 65 70 74 65 64 20 62  re intercepted b
24fd0 79 20 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69  y INSTEAD OF tri
24fe0 67 67 65 72 73 20 0a 2a 2a 20 61 72 65 20 6e 6f  ggers .** are no
24ff0 74 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a 0a 2a 2a  t counted..**.**
25000 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f   The [sqlite3_to
25010 74 61 6c 5f 63 68 61 6e 67 65 73 28 44 29 5d 20  tal_changes(D)] 
25020 69 6e 74 65 72 66 61 63 65 20 6f 6e 6c 79 20 72  interface only r
25030 65 70 6f 72 74 73 20 74 68 65 20 6e 75 6d 62 65  eports the numbe
25040 72 0a 2a 2a 20 6f 66 20 72 6f 77 73 20 74 68 61  r.** of rows tha
25050 74 20 63 68 61 6e 67 65 64 20 64 75 65 20 74 6f  t changed due to
25060 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 72   SQL statement r
25070 75 6e 20 61 67 61 69 6e 73 74 20 64 61 74 61 62  un against datab
25080 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  ase.** connectio
25090 6e 20 44 2e 20 20 41 6e 79 20 63 68 61 6e 67 65  n D.  Any change
250a0 73 20 62 79 20 6f 74 68 65 72 20 64 61 74 61 62  s by other datab
250b0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  ase connections 
250c0 61 72 65 20 69 67 6e 6f 72 65 64 2e 0a 2a 2a 20  are ignored..** 
250d0 54 6f 20 64 65 74 65 63 74 20 63 68 61 6e 67 65  To detect change
250e0 73 20 61 67 61 69 6e 73 74 20 61 20 64 61 74 61  s against a data
250f0 62 61 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 6f  base file from o
25100 74 68 65 72 20 64 61 74 61 62 61 73 65 0a 2a 2a  ther database.**
25110 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 75 73 65   connections use
25120 20 74 68 65 20 5b 50 52 41 47 4d 41 20 64 61 74   the [PRAGMA dat
25130 61 5f 76 65 72 73 69 6f 6e 5d 20 63 6f 6d 6d 61  a_version] comma
25140 6e 64 20 6f 72 20 74 68 65 0a 2a 2a 20 5b 53 51  nd or the.** [SQ
25150 4c 49 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f  LITE_FCNTL_DATA_
25160 56 45 52 53 49 4f 4e 5d 20 5b 66 69 6c 65 20 63  VERSION] [file c
25170 6f 6e 74 72 6f 6c 5d 2e 0a 2a 2a 20 0a 2a 2a 20  ontrol]..** .** 
25180 49 66 20 61 20 73 65 70 61 72 61 74 65 20 74 68  If a separate th
25190 72 65 61 64 20 6d 61 6b 65 73 20 63 68 61 6e 67  read makes chang
251a0 65 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 64  es on the same d
251b0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
251c0 6f 6e 0a 2a 2a 20 77 68 69 6c 65 20 5b 73 71 6c  on.** while [sql
251d0 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67  ite3_total_chang
251e0 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e 67  es()] is running
251f0 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 0a   then the value.
25200 2a 2a 20 72 65 74 75 72 6e 65 64 20 69 73 20 75  ** returned is u
25210 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e 64  npredictable and
25220 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c 2e   not meaningful.
25230 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a  .**.** See also:
25240 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e  .** <ul>.** <li>
25250 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68   the [sqlite3_ch
25260 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61  anges()] interfa
25270 63 65 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b  ce.** <li> the [
25280 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 70 72  count_changes pr
25290 61 67 6d 61 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68  agma].** <li> th
252a0 65 20 5b 63 68 61 6e 67 65 73 28 29 20 53 51 4c  e [changes() SQL
252b0 20 66 75 6e 63 74 69 6f 6e 5d 0a 2a 2a 20 3c 6c   function].** <l
252c0 69 3e 20 74 68 65 20 5b 64 61 74 61 5f 76 65 72  i> the [data_ver
252d0 73 69 6f 6e 20 70 72 61 67 6d 61 5d 0a 2a 2a 20  sion pragma].** 
252e0 3c 6c 69 3e 20 74 68 65 20 5b 53 51 4c 49 54 45  <li> the [SQLITE
252f0 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56 45 52 53  _FCNTL_DATA_VERS
25300 49 4f 4e 5d 20 5b 66 69 6c 65 20 63 6f 6e 74 72  ION] [file contr
25310 6f 6c 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a  ol].** </ul>.*/.
25320 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
25330 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61  qlite3_total_cha
25340 6e 67 65 73 28 73 71 6c 69 74 65 33 2a 29 3b 0a  nges(sqlite3*);.
25350 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
25360 20 49 6e 74 65 72 72 75 70 74 20 41 20 4c 6f 6e   Interrupt A Lon
25370 67 2d 52 75 6e 6e 69 6e 67 20 51 75 65 72 79 0a  g-Running Query.
25380 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
25390 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 66  e3.**.** ^This f
253a0 75 6e 63 74 69 6f 6e 20 63 61 75 73 65 73 20 61  unction causes a
253b0 6e 79 20 70 65 6e 64 69 6e 67 20 64 61 74 61 62  ny pending datab
253c0 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f  ase operation to
253d0 20 61 62 6f 72 74 20 61 6e 64 0a 2a 2a 20 72 65   abort and.** re
253e0 74 75 72 6e 20 61 74 20 69 74 73 20 65 61 72 6c  turn at its earl
253f0 69 65 73 74 20 6f 70 70 6f 72 74 75 6e 69 74 79  iest opportunity
25400 2e 20 54 68 69 73 20 72 6f 75 74 69 6e 65 20 69  . This routine i
25410 73 20 74 79 70 69 63 61 6c 6c 79 0a 2a 2a 20 63  s typically.** c
25420 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73  alled in respons
25430 65 20 74 6f 20 61 20 75 73 65 72 20 61 63 74 69  e to a user acti
25440 6f 6e 20 73 75 63 68 20 61 73 20 70 72 65 73 73  on such as press
25450 69 6e 67 20 22 43 61 6e 63 65 6c 22 0a 2a 2a 20  ing "Cancel".** 
25460 6f 72 20 43 74 72 6c 2d 43 20 77 68 65 72 65 20  or Ctrl-C where 
25470 74 68 65 20 75 73 65 72 20 77 61 6e 74 73 20 61  the user wants a
25480 20 6c 6f 6e 67 20 71 75 65 72 79 20 6f 70 65 72   long query oper
25490 61 74 69 6f 6e 20 74 6f 20 68 61 6c 74 0a 2a 2a  ation to halt.**
254a0 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a 2a 2a   immediately..**
254b0 0a 2a 2a 20 5e 49 74 20 69 73 20 73 61 66 65 20  .** ^It is safe 
254c0 74 6f 20 63 61 6c 6c 20 74 68 69 73 20 72 6f 75  to call this rou
254d0 74 69 6e 65 20 66 72 6f 6d 20 61 20 74 68 72 65  tine from a thre
254e0 61 64 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f  ad different fro
254f0 6d 20 74 68 65 0a 2a 2a 20 74 68 72 65 61 64 20  m the.** thread 
25500 74 68 61 74 20 69 73 20 63 75 72 72 65 6e 74 6c  that is currentl
25510 79 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 64 61  y running the da
25520 74 61 62 61 73 65 20 6f 70 65 72 61 74 69 6f 6e  tabase operation
25530 2e 20 20 42 75 74 20 69 74 0a 2a 2a 20 69 73 20  .  But it.** is 
25540 6e 6f 74 20 73 61 66 65 20 74 6f 20 63 61 6c 6c  not safe to call
25550 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69   this routine wi
25560 74 68 20 61 20 5b 64 61 74 61 62 61 73 65 20 63  th a [database c
25570 6f 6e 6e 65 63 74 69 6f 6e 5d 20 74 68 61 74 0a  onnection] that.
25580 2a 2a 20 69 73 20 63 6c 6f 73 65 64 20 6f 72 20  ** is closed or 
25590 6d 69 67 68 74 20 63 6c 6f 73 65 20 62 65 66 6f  might close befo
255a0 72 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  re sqlite3_inter
255b0 72 75 70 74 28 29 20 72 65 74 75 72 6e 73 2e 0a  rupt() returns..
255c0 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 20 53 51 4c  **.** ^If an SQL
255d0 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 76 65   operation is ve
255e0 72 79 20 6e 65 61 72 6c 79 20 66 69 6e 69 73 68  ry nearly finish
255f0 65 64 20 61 74 20 74 68 65 20 74 69 6d 65 20 77  ed at the time w
25600 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 69  hen.** sqlite3_i
25610 6e 74 65 72 72 75 70 74 28 29 20 69 73 20 63 61  nterrupt() is ca
25620 6c 6c 65 64 2c 20 74 68 65 6e 20 69 74 20 6d 69  lled, then it mi
25630 67 68 74 20 6e 6f 74 20 68 61 76 65 20 61 6e 20  ght not have an 
25640 6f 70 70 6f 72 74 75 6e 69 74 79 0a 2a 2a 20 74  opportunity.** t
25650 6f 20 62 65 20 69 6e 74 65 72 72 75 70 74 65 64  o be interrupted
25660 20 61 6e 64 20 6d 69 67 68 74 20 63 6f 6e 74 69   and might conti
25670 6e 75 65 20 74 6f 20 63 6f 6d 70 6c 65 74 69 6f  nue to completio
25680 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 41 6e 20 53 51 4c  n..**.** ^An SQL
25690 20 6f 70 65 72 61 74 69 6f 6e 20 74 68 61 74 20   operation that 
256a0 69 73 20 69 6e 74 65 72 72 75 70 74 65 64 20 77  is interrupted w
256b0 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  ill return [SQLI
256c0 54 45 5f 49 4e 54 45 52 52 55 50 54 5d 2e 0a 2a  TE_INTERRUPT]..*
256d0 2a 20 5e 49 66 20 74 68 65 20 69 6e 74 65 72 72  * ^If the interr
256e0 75 70 74 65 64 20 53 51 4c 20 6f 70 65 72 61 74  upted SQL operat
256f0 69 6f 6e 20 69 73 20 61 6e 20 49 4e 53 45 52 54  ion is an INSERT
25700 2c 20 55 50 44 41 54 45 2c 20 6f 72 20 44 45 4c  , UPDATE, or DEL
25710 45 54 45 0a 2a 2a 20 74 68 61 74 20 69 73 20 69  ETE.** that is i
25720 6e 73 69 64 65 20 61 6e 20 65 78 70 6c 69 63 69  nside an explici
25730 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 74  t transaction, t
25740 68 65 6e 20 74 68 65 20 65 6e 74 69 72 65 20 74  hen the entire t
25750 72 61 6e 73 61 63 74 69 6f 6e 0a 2a 2a 20 77 69  ransaction.** wi
25760 6c 6c 20 62 65 20 72 6f 6c 6c 65 64 20 62 61 63  ll be rolled bac
25770 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e  k automatically.
25780 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
25790 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 44 29  te3_interrupt(D)
257a0 20 63 61 6c 6c 20 69 73 20 69 6e 20 65 66 66 65   call is in effe
257b0 63 74 20 75 6e 74 69 6c 20 61 6c 6c 20 63 75 72  ct until all cur
257c0 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 0a 2a  rently running.*
257d0 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  * SQL statements
257e0 20 6f 6e 20 5b 64 61 74 61 62 61 73 65 20 63 6f   on [database co
257f0 6e 6e 65 63 74 69 6f 6e 5d 20 44 20 63 6f 6d 70  nnection] D comp
25800 6c 65 74 65 2e 20 20 5e 41 6e 79 20 6e 65 77 20  lete.  ^Any new 
25810 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a  SQL statements.*
25820 2a 20 74 68 61 74 20 61 72 65 20 73 74 61 72 74  * that are start
25830 65 64 20 61 66 74 65 72 20 74 68 65 20 73 71 6c  ed after the sql
25840 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29  ite3_interrupt()
25850 20 63 61 6c 6c 20 61 6e 64 20 62 65 66 6f 72 65   call and before
25860 20 74 68 65 20 0a 2a 2a 20 72 75 6e 6e 69 6e 67   the .** running
25870 20 73 74 61 74 65 6d 65 6e 74 73 20 72 65 61 63   statements reac
25880 68 65 73 20 7a 65 72 6f 20 61 72 65 20 69 6e 74  hes zero are int
25890 65 72 72 75 70 74 65 64 20 61 73 20 69 66 20 74  errupted as if t
258a0 68 65 79 20 68 61 64 20 62 65 65 6e 0a 2a 2a 20  hey had been.** 
258b0 72 75 6e 6e 69 6e 67 20 70 72 69 6f 72 20 74 6f  running prior to
258c0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74   the sqlite3_int
258d0 65 72 72 75 70 74 28 29 20 63 61 6c 6c 2e 20 20  errupt() call.  
258e0 5e 4e 65 77 20 53 51 4c 20 73 74 61 74 65 6d 65  ^New SQL stateme
258f0 6e 74 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20  nts.** that are 
25900 73 74 61 72 74 65 64 20 61 66 74 65 72 20 74 68  started after th
25910 65 20 72 75 6e 6e 69 6e 67 20 73 74 61 74 65 6d  e running statem
25920 65 6e 74 20 63 6f 75 6e 74 20 72 65 61 63 68 65  ent count reache
25930 73 20 7a 65 72 6f 20 61 72 65 0a 2a 2a 20 6e 6f  s zero are.** no
25940 74 20 65 66 66 65 63 74 65 64 20 62 79 20 74 68  t effected by th
25950 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  e sqlite3_interr
25960 75 70 74 28 29 2e 0a 2a 2a 20 5e 41 20 63 61 6c  upt()..** ^A cal
25970 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 69 6e 74  l to sqlite3_int
25980 65 72 72 75 70 74 28 44 29 20 74 68 61 74 20 6f  errupt(D) that o
25990 63 63 75 72 73 20 77 68 65 6e 20 74 68 65 72 65  ccurs when there
259a0 20 61 72 65 20 6e 6f 20 72 75 6e 6e 69 6e 67 0a   are no running.
259b0 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ** SQL statement
259c0 73 20 69 73 20 61 20 6e 6f 2d 6f 70 20 61 6e 64  s is a no-op and
259d0 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f   has no effect o
259e0 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  n SQL statements
259f0 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 73 74 61  .** that are sta
25a00 72 74 65 64 20 61 66 74 65 72 20 74 68 65 20 73  rted after the s
25a10 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
25a20 28 29 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 2e  () call returns.
25a30 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 76  .*/.SQLITE_API v
25a40 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  oid sqlite3_inte
25a50 72 72 75 70 74 28 73 71 6c 69 74 65 33 2a 29 3b  rrupt(sqlite3*);
25a60 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
25a70 3a 20 44 65 74 65 72 6d 69 6e 65 20 49 66 20 41  : Determine If A
25a80 6e 20 53 51 4c 20 53 74 61 74 65 6d 65 6e 74 20  n SQL Statement 
25a90 49 73 20 43 6f 6d 70 6c 65 74 65 0a 2a 2a 0a 2a  Is Complete.**.*
25aa0 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73  * These routines
25ab0 20 61 72 65 20 75 73 65 66 75 6c 20 64 75 72 69   are useful duri
25ac0 6e 67 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20  ng command-line 
25ad0 69 6e 70 75 74 20 74 6f 20 64 65 74 65 72 6d 69  input to determi
25ae0 6e 65 20 69 66 20 74 68 65 0a 2a 2a 20 63 75 72  ne if the.** cur
25af0 72 65 6e 74 6c 79 20 65 6e 74 65 72 65 64 20 74  rently entered t
25b00 65 78 74 20 73 65 65 6d 73 20 74 6f 20 66 6f 72  ext seems to for
25b10 6d 20 61 20 63 6f 6d 70 6c 65 74 65 20 53 51 4c  m a complete SQL
25b20 20 73 74 61 74 65 6d 65 6e 74 20 6f 72 0a 2a 2a   statement or.**
25b30 20 69 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 69   if additional i
25b40 6e 70 75 74 20 69 73 20 6e 65 65 64 65 64 20 62  nput is needed b
25b50 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 20 74 68  efore sending th
25b60 65 20 74 65 78 74 20 69 6e 74 6f 0a 2a 2a 20 53  e text into.** S
25b70 51 4c 69 74 65 20 66 6f 72 20 70 61 72 73 69 6e  QLite for parsin
25b80 67 2e 20 20 5e 54 68 65 73 65 20 72 6f 75 74 69  g.  ^These routi
25b90 6e 65 73 20 72 65 74 75 72 6e 20 31 20 69 66 20  nes return 1 if 
25ba0 74 68 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67  the input string
25bb0 0a 2a 2a 20 61 70 70 65 61 72 73 20 74 6f 20 62  .** appears to b
25bc0 65 20 61 20 63 6f 6d 70 6c 65 74 65 20 53 51 4c  e a complete SQL
25bd0 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 41 20   statement.  ^A 
25be0 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6a 75 64  statement is jud
25bf0 67 65 64 20 74 6f 20 62 65 0a 2a 2a 20 63 6f 6d  ged to be.** com
25c00 70 6c 65 74 65 20 69 66 20 69 74 20 65 6e 64 73  plete if it ends
25c10 20 77 69 74 68 20 61 20 73 65 6d 69 63 6f 6c 6f   with a semicolo
25c20 6e 20 74 6f 6b 65 6e 20 61 6e 64 20 69 73 20 6e  n token and is n
25c30 6f 74 20 61 20 70 72 65 66 69 78 20 6f 66 20 61  ot a prefix of a
25c40 0a 2a 2a 20 77 65 6c 6c 2d 66 6f 72 6d 65 64 20  .** well-formed 
25c50 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 73  CREATE TRIGGER s
25c60 74 61 74 65 6d 65 6e 74 2e 20 20 5e 53 65 6d 69  tatement.  ^Semi
25c70 63 6f 6c 6f 6e 73 20 74 68 61 74 20 61 72 65 20  colons that are 
25c80 65 6d 62 65 64 64 65 64 20 77 69 74 68 69 6e 0a  embedded within.
25c90 2a 2a 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61  ** string litera
25ca0 6c 73 20 6f 72 20 71 75 6f 74 65 64 20 69 64 65  ls or quoted ide
25cb0 6e 74 69 66 69 65 72 20 6e 61 6d 65 73 20 6f 72  ntifier names or
25cc0 20 63 6f 6d 6d 65 6e 74 73 20 61 72 65 20 6e 6f   comments are no
25cd0 74 0a 2a 2a 20 69 6e 64 65 70 65 6e 64 65 6e 74  t.** independent
25ce0 20 74 6f 6b 65 6e 73 20 28 74 68 65 79 20 61 72   tokens (they ar
25cf0 65 20 70 61 72 74 20 6f 66 20 74 68 65 20 74 6f  e part of the to
25d00 6b 65 6e 20 69 6e 20 77 68 69 63 68 20 74 68 65  ken in which the
25d10 79 20 61 72 65 0a 2a 2a 20 65 6d 62 65 64 64 65  y are.** embedde
25d20 64 29 20 61 6e 64 20 74 68 75 73 20 64 6f 20 6e  d) and thus do n
25d30 6f 74 20 63 6f 75 6e 74 20 61 73 20 61 20 73 74  ot count as a st
25d40 61 74 65 6d 65 6e 74 20 74 65 72 6d 69 6e 61 74  atement terminat
25d50 6f 72 2e 20 20 5e 57 68 69 74 65 73 70 61 63 65  or.  ^Whitespace
25d60 0a 2a 2a 20 61 6e 64 20 63 6f 6d 6d 65 6e 74 73  .** and comments
25d70 20 74 68 61 74 20 66 6f 6c 6c 6f 77 20 74 68 65   that follow the
25d80 20 66 69 6e 61 6c 20 73 65 6d 69 63 6f 6c 6f 6e   final semicolon
25d90 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 0a 2a 2a   are ignored..**
25da0 0a 2a 2a 20 5e 54 68 65 73 65 20 72 6f 75 74 69  .** ^These routi
25db0 6e 65 73 20 72 65 74 75 72 6e 20 30 20 69 66 20  nes return 0 if 
25dc0 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 69 73  the statement is
25dd0 20 69 6e 63 6f 6d 70 6c 65 74 65 2e 20 20 5e 49   incomplete.  ^I
25de0 66 20 61 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c  f a.** memory al
25df0 6c 6f 63 61 74 69 6f 6e 20 66 61 69 6c 73 2c 20  location fails, 
25e00 74 68 65 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d 45  then SQLITE_NOME
25e10 4d 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a  M is returned..*
25e20 2a 0a 2a 2a 20 5e 54 68 65 73 65 20 72 6f 75 74  *.** ^These rout
25e30 69 6e 65 73 20 64 6f 20 6e 6f 74 20 70 61 72 73  ines do not pars
25e40 65 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  e the SQL statem
25e50 65 6e 74 73 20 74 68 75 73 0a 2a 2a 20 77 69 6c  ents thus.** wil
25e60 6c 20 6e 6f 74 20 64 65 74 65 63 74 20 73 79 6e  l not detect syn
25e70 74 61 63 74 69 63 61 6c 6c 79 20 69 6e 63 6f 72  tactically incor
25e80 72 65 63 74 20 53 51 4c 2e 0a 2a 2a 0a 2a 2a 20  rect SQL..**.** 
25e90 5e 28 49 66 20 53 51 4c 69 74 65 20 68 61 73 20  ^(If SQLite has 
25ea0 6e 6f 74 20 62 65 65 6e 20 69 6e 69 74 69 61 6c  not been initial
25eb0 69 7a 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69  ized using [sqli
25ec0 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
25ed0 5d 20 70 72 69 6f 72 20 0a 2a 2a 20 74 6f 20 69  ] prior .** to i
25ee0 6e 76 6f 6b 69 6e 67 20 73 71 6c 69 74 65 33 5f  nvoking sqlite3_
25ef0 63 6f 6d 70 6c 65 74 65 31 36 28 29 20 74 68 65  complete16() the
25f00 6e 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  n sqlite3_initia
25f10 6c 69 7a 65 28 29 20 69 73 20 69 6e 76 6f 6b 65  lize() is invoke
25f20 64 0a 2a 2a 20 61 75 74 6f 6d 61 74 69 63 61 6c  d.** automatical
25f30 6c 79 20 62 79 20 73 71 6c 69 74 65 33 5f 63 6f  ly by sqlite3_co
25f40 6d 70 6c 65 74 65 31 36 28 29 2e 20 20 49 66 20  mplete16().  If 
25f50 74 68 61 74 20 69 6e 69 74 69 61 6c 69 7a 61 74  that initializat
25f60 69 6f 6e 20 66 61 69 6c 73 2c 0a 2a 2a 20 74 68  ion fails,.** th
25f70 65 6e 20 74 68 65 20 72 65 74 75 72 6e 20 76 61  en the return va
25f80 6c 75 65 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  lue from sqlite3
25f90 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 20 77 69  _complete16() wi
25fa0 6c 6c 20 62 65 20 6e 6f 6e 2d 7a 65 72 6f 0a 2a  ll be non-zero.*
25fb0 2a 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  * regardless of 
25fc0 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74  whether or not t
25fd0 68 65 20 69 6e 70 75 74 20 53 51 4c 20 69 73 20  he input SQL is 
25fe0 63 6f 6d 70 6c 65 74 65 2e 29 5e 0a 2a 2a 0a 2a  complete.)^.**.*
25ff0 2a 20 54 68 65 20 69 6e 70 75 74 20 74 6f 20 5b  * The input to [
26000 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
26010 28 29 5d 20 6d 75 73 74 20 62 65 20 61 20 7a 65  ()] must be a ze
26020 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a  ro-terminated.**
26030 20 55 54 46 2d 38 20 73 74 72 69 6e 67 2e 0a 2a   UTF-8 string..*
26040 2a 0a 2a 2a 20 54 68 65 20 69 6e 70 75 74 20 74  *.** The input t
26050 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c  o [sqlite3_compl
26060 65 74 65 31 36 28 29 5d 20 6d 75 73 74 20 62 65  ete16()] must be
26070 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74   a zero-terminat
26080 65 64 0a 2a 2a 20 55 54 46 2d 31 36 20 73 74 72  ed.** UTF-16 str
26090 69 6e 67 20 69 6e 20 6e 61 74 69 76 65 20 62 79  ing in native by
260a0 74 65 20 6f 72 64 65 72 2e 0a 2a 2f 0a 53 51 4c  te order..*/.SQL
260b0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
260c0 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 63 6f 6e  te3_complete(con
260d0 73 74 20 63 68 61 72 20 2a 73 71 6c 29 3b 0a 53  st char *sql);.S
260e0 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
260f0 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36  lite3_complete16
26100 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c  (const void *sql
26110 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
26120 45 46 3a 20 52 65 67 69 73 74 65 72 20 41 20 43  EF: Register A C
26130 61 6c 6c 62 61 63 6b 20 54 6f 20 48 61 6e 64 6c  allback To Handl
26140 65 20 53 51 4c 49 54 45 5f 42 55 53 59 20 45 72  e SQLITE_BUSY Er
26150 72 6f 72 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53  rors.** KEYWORDS
26160 3a 20 7b 62 75 73 79 2d 68 61 6e 64 6c 65 72 20  : {busy-handler 
26170 63 61 6c 6c 62 61 63 6b 7d 20 7b 62 75 73 79 20  callback} {busy 
26180 68 61 6e 64 6c 65 72 7d 0a 2a 2a 20 4d 45 54 48  handler}.** METH
26190 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
261a0 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 62  * ^The sqlite3_b
261b0 75 73 79 5f 68 61 6e 64 6c 65 72 28 44 2c 58 2c  usy_handler(D,X,
261c0 50 29 20 72 6f 75 74 69 6e 65 20 73 65 74 73 20  P) routine sets 
261d0 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  a callback funct
261e0 69 6f 6e 20 58 0a 2a 2a 20 74 68 61 74 20 6d 69  ion X.** that mi
261f0 67 68 74 20 62 65 20 69 6e 76 6f 6b 65 64 20 77  ght be invoked w
26200 69 74 68 20 61 72 67 75 6d 65 6e 74 20 50 20 77  ith argument P w
26210 68 65 6e 65 76 65 72 0a 2a 2a 20 61 6e 20 61 74  henever.** an at
26220 74 65 6d 70 74 20 69 73 20 6d 61 64 65 20 74 6f  tempt is made to
26230 20 61 63 63 65 73 73 20 61 20 64 61 74 61 62 61   access a databa
26240 73 65 20 74 61 62 6c 65 20 61 73 73 6f 63 69 61  se table associa
26250 74 65 64 20 77 69 74 68 0a 2a 2a 20 5b 64 61 74  ted with.** [dat
26260 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
26270 5d 20 44 20 77 68 65 6e 20 61 6e 6f 74 68 65 72  ] D when another
26280 20 74 68 72 65 61 64 0a 2a 2a 20 6f 72 20 70 72   thread.** or pr
26290 6f 63 65 73 73 20 68 61 73 20 74 68 65 20 74 61  ocess has the ta
262a0 62 6c 65 20 6c 6f 63 6b 65 64 2e 0a 2a 2a 20 54  ble locked..** T
262b0 68 65 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  he sqlite3_busy_
262c0 68 61 6e 64 6c 65 72 28 29 20 69 6e 74 65 72 66  handler() interf
262d0 61 63 65 20 69 73 20 75 73 65 64 20 74 6f 20 69  ace is used to i
262e0 6d 70 6c 65 6d 65 6e 74 0a 2a 2a 20 5b 73 71 6c  mplement.** [sql
262f0 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75  ite3_busy_timeou
26300 74 28 29 5d 20 61 6e 64 20 5b 50 52 41 47 4d 41  t()] and [PRAGMA
26310 20 62 75 73 79 5f 74 69 6d 65 6f 75 74 5d 2e 0a   busy_timeout]..
26320 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 62 75  **.** ^If the bu
26330 73 79 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 4e  sy callback is N
26340 55 4c 4c 2c 20 74 68 65 6e 20 5b 53 51 4c 49 54  ULL, then [SQLIT
26350 45 5f 42 55 53 59 5d 0a 2a 2a 20 69 73 20 72 65  E_BUSY].** is re
26360 74 75 72 6e 65 64 20 69 6d 6d 65 64 69 61 74 65  turned immediate
26370 6c 79 20 75 70 6f 6e 20 65 6e 63 6f 75 6e 74 65  ly upon encounte
26380 72 69 6e 67 20 74 68 65 20 6c 6f 63 6b 2e 20 20  ring the lock.  
26390 5e 49 66 20 74 68 65 20 62 75 73 79 20 63 61 6c  ^If the busy cal
263a0 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 6e 6f 74 20  lback.** is not 
263b0 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 68 65 20 63  NULL, then the c
263c0 61 6c 6c 62 61 63 6b 20 6d 69 67 68 74 20 62 65  allback might be
263d0 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 77   invoked with tw
263e0 6f 20 61 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a 0a  o arguments..**.
263f0 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61 72  ** ^The first ar
26400 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 62 75  gument to the bu
26410 73 79 20 68 61 6e 64 6c 65 72 20 69 73 20 61 20  sy handler is a 
26420 63 6f 70 79 20 6f 66 20 74 68 65 20 76 6f 69 64  copy of the void
26430 2a 20 70 6f 69 6e 74 65 72 20 77 68 69 63 68 0a  * pointer which.
26440 2a 2a 20 69 73 20 74 68 65 20 74 68 69 72 64 20  ** is the third 
26450 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69  argument to sqli
26460 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72  te3_busy_handler
26470 28 29 2e 20 20 5e 54 68 65 20 73 65 63 6f 6e 64  ().  ^The second
26480 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20   argument to.** 
26490 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72  the busy handler
264a0 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 74 68 65   callback is the
264b0 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73   number of times
264c0 20 74 68 61 74 20 74 68 65 20 62 75 73 79 20 68   that the busy h
264d0 61 6e 64 6c 65 72 20 68 61 73 0a 2a 2a 20 62 65  andler has.** be
264e0 65 6e 20 69 6e 76 6f 6b 65 64 20 70 72 65 76 69  en invoked previ
264f0 6f 75 73 6c 79 20 66 6f 72 20 74 68 65 20 73 61  ously for the sa
26500 6d 65 20 6c 6f 63 6b 69 6e 67 20 65 76 65 6e 74  me locking event
26510 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20 62 75  .  ^If the.** bu
26520 73 79 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75  sy callback retu
26530 72 6e 73 20 30 2c 20 74 68 65 6e 20 6e 6f 20 61  rns 0, then no a
26540 64 64 69 74 69 6f 6e 61 6c 20 61 74 74 65 6d 70  dditional attemp
26550 74 73 20 61 72 65 20 6d 61 64 65 20 74 6f 0a 2a  ts are made to.*
26560 2a 20 61 63 63 65 73 73 20 74 68 65 20 64 61 74  * access the dat
26570 61 62 61 73 65 20 61 6e 64 20 5b 53 51 4c 49 54  abase and [SQLIT
26580 45 5f 42 55 53 59 5d 20 69 73 20 72 65 74 75 72  E_BUSY] is retur
26590 6e 65 64 0a 2a 2a 20 74 6f 20 74 68 65 20 61 70  ned.** to the ap
265a0 70 6c 69 63 61 74 69 6f 6e 2e 0a 2a 2a 20 5e 49  plication..** ^I
265b0 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72  f the callback r
265c0 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eturns non-zero,
265d0 20 74 68 65 6e 20 61 6e 6f 74 68 65 72 20 61 74   then another at
265e0 74 65 6d 70 74 0a 2a 2a 20 69 73 20 6d 61 64 65  tempt.** is made
265f0 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 64   to access the d
26600 61 74 61 62 61 73 65 20 61 6e 64 20 74 68 65 20  atabase and the 
26610 63 79 63 6c 65 20 72 65 70 65 61 74 73 2e 0a 2a  cycle repeats..*
26620 2a 0a 2a 2a 20 54 68 65 20 70 72 65 73 65 6e 63  *.** The presenc
26630 65 20 6f 66 20 61 20 62 75 73 79 20 68 61 6e 64  e of a busy hand
26640 6c 65 72 20 64 6f 65 73 20 6e 6f 74 20 67 75 61  ler does not gua
26650 72 61 6e 74 65 65 20 74 68 61 74 20 69 74 20 77  rantee that it w
26660 69 6c 6c 20 62 65 20 69 6e 76 6f 6b 65 64 0a 2a  ill be invoked.*
26670 2a 20 77 68 65 6e 20 74 68 65 72 65 20 69 73 20  * when there is 
26680 6c 6f 63 6b 20 63 6f 6e 74 65 6e 74 69 6f 6e 2e  lock contention.
26690 20 5e 49 66 20 53 51 4c 69 74 65 20 64 65 74 65   ^If SQLite dete
266a0 72 6d 69 6e 65 73 20 74 68 61 74 20 69 6e 76 6f  rmines that invo
266b0 6b 69 6e 67 20 74 68 65 20 62 75 73 79 0a 2a 2a  king the busy.**
266c0 20 68 61 6e 64 6c 65 72 20 63 6f 75 6c 64 20 72   handler could r
266d0 65 73 75 6c 74 20 69 6e 20 61 20 64 65 61 64 6c  esult in a deadl
266e0 6f 63 6b 2c 20 69 74 20 77 69 6c 6c 20 67 6f 20  ock, it will go 
266f0 61 68 65 61 64 20 61 6e 64 20 72 65 74 75 72 6e  ahead and return
26700 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 0a 2a   [SQLITE_BUSY].*
26710 2a 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61  * to the applica
26720 74 69 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66 20  tion instead of 
26730 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 0a 2a 2a  invoking the .**
26740 20 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a 2a   busy handler..*
26750 2a 20 43 6f 6e 73 69 64 65 72 20 61 20 73 63 65  * Consider a sce
26760 6e 61 72 69 6f 20 77 68 65 72 65 20 6f 6e 65 20  nario where one 
26770 70 72 6f 63 65 73 73 20 69 73 20 68 6f 6c 64 69  process is holdi
26780 6e 67 20 61 20 72 65 61 64 20 6c 6f 63 6b 20 74  ng a read lock t
26790 68 61 74 0a 2a 2a 20 69 74 20 69 73 20 74 72 79  hat.** it is try
267a0 69 6e 67 20 74 6f 20 70 72 6f 6d 6f 74 65 20 74  ing to promote t
267b0 6f 20 61 20 72 65 73 65 72 76 65 64 20 6c 6f 63  o a reserved loc
267c0 6b 20 61 6e 64 0a 2a 2a 20 61 20 73 65 63 6f 6e  k and.** a secon
267d0 64 20 70 72 6f 63 65 73 73 20 69 73 20 68 6f 6c  d process is hol
267e0 64 69 6e 67 20 61 20 72 65 73 65 72 76 65 64 20  ding a reserved 
267f0 6c 6f 63 6b 20 74 68 61 74 20 69 74 20 69 73 20  lock that it is 
26800 74 72 79 69 6e 67 0a 2a 2a 20 74 6f 20 70 72 6f  trying.** to pro
26810 6d 6f 74 65 20 74 6f 20 61 6e 20 65 78 63 6c 75  mote to an exclu
26820 73 69 76 65 20 6c 6f 63 6b 2e 20 20 54 68 65 20  sive lock.  The 
26830 66 69 72 73 74 20 70 72 6f 63 65 73 73 20 63 61  first process ca
26840 6e 6e 6f 74 20 70 72 6f 63 65 65 64 0a 2a 2a 20  nnot proceed.** 
26850 62 65 63 61 75 73 65 20 69 74 20 69 73 20 62 6c  because it is bl
26860 6f 63 6b 65 64 20 62 79 20 74 68 65 20 73 65 63  ocked by the sec
26870 6f 6e 64 20 61 6e 64 20 74 68 65 20 73 65 63 6f  ond and the seco
26880 6e 64 20 70 72 6f 63 65 73 73 20 63 61 6e 6e 6f  nd process canno
26890 74 0a 2a 2a 20 70 72 6f 63 65 65 64 20 62 65 63  t.** proceed bec
268a0 61 75 73 65 20 69 74 20 69 73 20 62 6c 6f 63 6b  ause it is block
268b0 65 64 20 62 79 20 74 68 65 20 66 69 72 73 74 2e  ed by the first.
268c0 20 20 49 66 20 62 6f 74 68 20 70 72 6f 63 65 73    If both proces
268d0 73 65 73 0a 2a 2a 20 69 6e 76 6f 6b 65 20 74 68  ses.** invoke th
268e0 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 73 2c  e busy handlers,
268f0 20 6e 65 69 74 68 65 72 20 77 69 6c 6c 20 6d 61   neither will ma
26900 6b 65 20 61 6e 79 20 70 72 6f 67 72 65 73 73 2e  ke any progress.
26910 20 20 54 68 65 72 65 66 6f 72 65 2c 0a 2a 2a 20    Therefore,.** 
26920 53 51 4c 69 74 65 20 72 65 74 75 72 6e 73 20 5b  SQLite returns [
26930 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 66 6f 72  SQLITE_BUSY] for
26940 20 74 68 65 20 66 69 72 73 74 20 70 72 6f 63 65   the first proce
26950 73 73 2c 20 68 6f 70 69 6e 67 20 74 68 61 74 20  ss, hoping that 
26960 74 68 69 73 0a 2a 2a 20 77 69 6c 6c 20 69 6e 64  this.** will ind
26970 75 63 65 20 74 68 65 20 66 69 72 73 74 20 70 72  uce the first pr
26980 6f 63 65 73 73 20 74 6f 20 72 65 6c 65 61 73 65  ocess to release
26990 20 69 74 73 20 72 65 61 64 20 6c 6f 63 6b 20 61   its read lock a
269a0 6e 64 20 61 6c 6c 6f 77 0a 2a 2a 20 74 68 65 20  nd allow.** the 
269b0 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73 20 74  second process t
269c0 6f 20 70 72 6f 63 65 65 64 2e 0a 2a 2a 0a 2a 2a  o proceed..**.**
269d0 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 62 75   ^The default bu
269e0 73 79 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 4e  sy callback is N
269f0 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65  ULL..**.** ^(The
26a00 72 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 61  re can only be a
26a10 20 73 69 6e 67 6c 65 20 62 75 73 79 20 68 61 6e   single busy han
26a20 64 6c 65 72 20 64 65 66 69 6e 65 64 20 66 6f 72  dler defined for
26a30 20 65 61 63 68 0a 2a 2a 20 5b 64 61 74 61 62 61   each.** [databa
26a40 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 20  se connection]. 
26a50 20 53 65 74 74 69 6e 67 20 61 20 6e 65 77 20 62   Setting a new b
26a60 75 73 79 20 68 61 6e 64 6c 65 72 20 63 6c 65 61  usy handler clea
26a70 72 73 20 61 6e 79 0a 2a 2a 20 70 72 65 76 69 6f  rs any.** previo
26a80 75 73 6c 79 20 73 65 74 20 68 61 6e 64 6c 65 72  usly set handler
26a90 2e 29 5e 20 20 5e 4e 6f 74 65 20 74 68 61 74 20  .)^  ^Note that 
26aa0 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33  calling [sqlite3
26ab0 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d  _busy_timeout()]
26ac0 0a 2a 2a 20 6f 72 20 65 76 61 6c 75 61 74 69 6e  .** or evaluatin
26ad0 67 20 5b 50 52 41 47 4d 41 20 62 75 73 79 5f 74  g [PRAGMA busy_t
26ae0 69 6d 65 6f 75 74 3d 4e 5d 20 77 69 6c 6c 20 63  imeout=N] will c
26af0 68 61 6e 67 65 20 74 68 65 0a 2a 2a 20 62 75 73  hange the.** bus
26b00 79 20 68 61 6e 64 6c 65 72 20 61 6e 64 20 74 68  y handler and th
26b10 75 73 20 63 6c 65 61 72 20 61 6e 79 20 70 72 65  us clear any pre
26b20 76 69 6f 75 73 6c 79 20 73 65 74 20 62 75 73 79  viously set busy
26b30 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a 0a 2a 2a 20   handler..**.** 
26b40 54 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63  The busy callbac
26b50 6b 20 73 68 6f 75 6c 64 20 6e 6f 74 20 74 61 6b  k should not tak
26b60 65 20 61 6e 79 20 61 63 74 69 6f 6e 73 20 77 68  e any actions wh
26b70 69 63 68 20 6d 6f 64 69 66 79 20 74 68 65 0a 2a  ich modify the.*
26b80 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  * database conne
26b90 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 76 6f 6b  ction that invok
26ba0 65 64 20 74 68 65 20 62 75 73 79 20 68 61 6e 64  ed the busy hand
26bb0 6c 65 72 2e 20 20 49 6e 20 6f 74 68 65 72 20 77  ler.  In other w
26bc0 6f 72 64 73 2c 0a 2a 2a 20 74 68 65 20 62 75 73  ords,.** the bus
26bd0 79 20 68 61 6e 64 6c 65 72 20 69 73 20 6e 6f 74  y handler is not
26be0 20 72 65 65 6e 74 72 61 6e 74 2e 20 20 41 6e 79   reentrant.  Any
26bf0 20 73 75 63 68 20 61 63 74 69 6f 6e 73 0a 2a 2a   such actions.**
26c00 20 72 65 73 75 6c 74 20 69 6e 20 75 6e 64 65 66   result in undef
26c10 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 0a 2a  ined behavior..*
26c20 2a 20 0a 2a 2a 20 41 20 62 75 73 79 20 68 61 6e  * .** A busy han
26c30 64 6c 65 72 20 6d 75 73 74 20 6e 6f 74 20 63 6c  dler must not cl
26c40 6f 73 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ose the database
26c50 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 6f   connection.** o
26c60 72 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  r [prepared stat
26c70 65 6d 65 6e 74 5d 20 74 68 61 74 20 69 6e 76 6f  ement] that invo
26c80 6b 65 64 20 74 68 65 20 62 75 73 79 20 68 61 6e  ked the busy han
26c90 64 6c 65 72 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  dler..*/.SQLITE_
26ca0 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
26cb0 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 73 71 6c  busy_handler(sql
26cc0 69 74 65 33 2a 2c 69 6e 74 28 2a 29 28 76 6f 69  ite3*,int(*)(voi
26cd0 64 2a 2c 69 6e 74 29 2c 76 6f 69 64 2a 29 3b 0a  d*,int),void*);.
26ce0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
26cf0 20 53 65 74 20 41 20 42 75 73 79 20 54 69 6d 65   Set A Busy Time
26d00 6f 75 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  out.** METHOD: s
26d10 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68  qlite3.**.** ^Th
26d20 69 73 20 72 6f 75 74 69 6e 65 20 73 65 74 73 20  is routine sets 
26d30 61 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  a [sqlite3_busy_
26d40 68 61 6e 64 6c 65 72 20 7c 20 62 75 73 79 20 68  handler | busy h
26d50 61 6e 64 6c 65 72 5d 20 74 68 61 74 20 73 6c 65  andler] that sle
26d60 65 70 73 0a 2a 2a 20 66 6f 72 20 61 20 73 70 65  eps.** for a spe
26d70 63 69 66 69 65 64 20 61 6d 6f 75 6e 74 20 6f 66  cified amount of
26d80 20 74 69 6d 65 20 77 68 65 6e 20 61 20 74 61 62   time when a tab
26d90 6c 65 20 69 73 20 6c 6f 63 6b 65 64 2e 20 20 5e  le is locked.  ^
26da0 54 68 65 20 68 61 6e 64 6c 65 72 0a 2a 2a 20 77  The handler.** w
26db0 69 6c 6c 20 73 6c 65 65 70 20 6d 75 6c 74 69 70  ill sleep multip
26dc0 6c 65 20 74 69 6d 65 73 20 75 6e 74 69 6c 20 61  le times until a
26dd0 74 20 6c 65 61 73 74 20 22 6d 73 22 20 6d 69 6c  t least "ms" mil
26de0 6c 69 73 65 63 6f 6e 64 73 20 6f 66 20 73 6c 65  liseconds of sle
26df0 65 70 69 6e 67 0a 2a 2a 20 68 61 76 65 20 61 63  eping.** have ac
26e00 63 75 6d 75 6c 61 74 65 64 2e 20 20 5e 41 66 74  cumulated.  ^Aft
26e10 65 72 20 61 74 20 6c 65 61 73 74 20 22 6d 73 22  er at least "ms"
26e20 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 6f 66   milliseconds of
26e30 20 73 6c 65 65 70 69 6e 67 2c 0a 2a 2a 20 74 68   sleeping,.** th
26e40 65 20 68 61 6e 64 6c 65 72 20 72 65 74 75 72 6e  e handler return
26e50 73 20 30 20 77 68 69 63 68 20 63 61 75 73 65 73  s 0 which causes
26e60 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
26e70 5d 20 74 6f 20 72 65 74 75 72 6e 0a 2a 2a 20 5b  ] to return.** [
26e80 53 51 4c 49 54 45 5f 42 55 53 59 5d 2e 0a 2a 2a  SQLITE_BUSY]..**
26e90 0a 2a 2a 20 5e 43 61 6c 6c 69 6e 67 20 74 68 69  .** ^Calling thi
26ea0 73 20 72 6f 75 74 69 6e 65 20 77 69 74 68 20 61  s routine with a
26eb0 6e 20 61 72 67 75 6d 65 6e 74 20 6c 65 73 73 20  n argument less 
26ec0 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f  than or equal to
26ed0 20 7a 65 72 6f 0a 2a 2a 20 74 75 72 6e 73 20 6f   zero.** turns o
26ee0 66 66 20 61 6c 6c 20 62 75 73 79 20 68 61 6e 64  ff all busy hand
26ef0 6c 65 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68  lers..**.** ^(Th
26f00 65 72 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20  ere can only be 
26f10 61 20 73 69 6e 67 6c 65 20 62 75 73 79 20 68 61  a single busy ha
26f20 6e 64 6c 65 72 20 66 6f 72 20 61 20 70 61 72 74  ndler for a part
26f30 69 63 75 6c 61 72 0a 2a 2a 20 5b 64 61 74 61 62  icular.** [datab
26f40 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
26f50 61 74 20 61 6e 79 20 67 69 76 65 6e 20 6d 6f 6d  at any given mom
26f60 65 6e 74 2e 20 20 49 66 20 61 6e 6f 74 68 65 72  ent.  If another
26f70 20 62 75 73 79 20 68 61 6e 64 6c 65 72 0a 2a 2a   busy handler.**
26f80 20 77 61 73 20 64 65 66 69 6e 65 64 20 20 28 75   was defined  (u
26f90 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 62 75  sing [sqlite3_bu
26fa0 73 79 5f 68 61 6e 64 6c 65 72 28 29 5d 29 20 70  sy_handler()]) p
26fb0 72 69 6f 72 20 74 6f 20 63 61 6c 6c 69 6e 67 0a  rior to calling.
26fc0 2a 2a 20 74 68 69 73 20 72 6f 75 74 69 6e 65 2c  ** this routine,
26fd0 20 74 68 61 74 20 6f 74 68 65 72 20 62 75 73 79   that other busy
26fe0 20 68 61 6e 64 6c 65 72 20 69 73 20 63 6c 65 61   handler is clea
26ff0 72 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65 65  red.)^.**.** See
27000 20 61 6c 73 6f 3a 20 20 5b 50 52 41 47 4d 41 20   also:  [PRAGMA 
27010 62 75 73 79 5f 74 69 6d 65 6f 75 74 5d 0a 2a 2f  busy_timeout].*/
27020 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
27030 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d  sqlite3_busy_tim
27040 65 6f 75 74 28 73 71 6c 69 74 65 33 2a 2c 20 69  eout(sqlite3*, i
27050 6e 74 20 6d 73 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  nt ms);../*.** C
27060 41 50 49 33 52 45 46 3a 20 43 6f 6e 76 65 6e 69  API3REF: Conveni
27070 65 6e 63 65 20 52 6f 75 74 69 6e 65 73 20 46 6f  ence Routines Fo
27080 72 20 52 75 6e 6e 69 6e 67 20 51 75 65 72 69 65  r Running Querie
27090 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  s.** METHOD: sql
270a0 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20  ite3.**.** This 
270b0 69 73 20 61 20 6c 65 67 61 63 79 20 69 6e 74 65  is a legacy inte
270c0 72 66 61 63 65 20 74 68 61 74 20 69 73 20 70 72  rface that is pr
270d0 65 73 65 72 76 65 64 20 66 6f 72 20 62 61 63 6b  eserved for back
270e0 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c  wards compatibil
270f0 69 74 79 2e 0a 2a 2a 20 55 73 65 20 6f 66 20 74  ity..** Use of t
27100 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 69 73  his interface is
27110 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64   not recommended
27120 2e 0a 2a 2a 0a 2a 2a 20 44 65 66 69 6e 69 74 69  ..**.** Definiti
27130 6f 6e 3a 20 41 20 3c 62 3e 72 65 73 75 6c 74 20  on: A <b>result 
27140 74 61 62 6c 65 3c 2f 62 3e 20 69 73 20 6d 65 6d  table</b> is mem
27150 6f 72 79 20 64 61 74 61 20 73 74 72 75 63 74 75  ory data structu
27160 72 65 20 63 72 65 61 74 65 64 20 62 79 20 74 68  re created by th
27170 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 67 65  e.** [sqlite3_ge
27180 74 5f 74 61 62 6c 65 28 29 5d 20 69 6e 74 65 72  t_table()] inter
27190 66 61 63 65 2e 20 20 41 20 72 65 73 75 6c 74 20  face.  A result 
271a0 74 61 62 6c 65 20 72 65 63 6f 72 64 73 20 74 68  table records th
271b0 65 0a 2a 2a 20 63 6f 6d 70 6c 65 74 65 20 71 75  e.** complete qu
271c0 65 72 79 20 72 65 73 75 6c 74 73 20 66 72 6f 6d  ery results from
271d0 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 71 75 65   one or more que
271e0 72 69 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ries..**.** The 
271f0 74 61 62 6c 65 20 63 6f 6e 63 65 70 74 75 61 6c  table conceptual
27200 6c 79 20 68 61 73 20 61 20 6e 75 6d 62 65 72 20  ly has a number 
27210 6f 66 20 72 6f 77 73 20 61 6e 64 20 63 6f 6c 75  of rows and colu
27220 6d 6e 73 2e 20 20 42 75 74 0a 2a 2a 20 74 68 65  mns.  But.** the
27230 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65 20 6e  se numbers are n
27240 6f 74 20 70 61 72 74 20 6f 66 20 74 68 65 20 72  ot part of the r
27250 65 73 75 6c 74 20 74 61 62 6c 65 20 69 74 73 65  esult table itse
27260 6c 66 2e 20 20 54 68 65 73 65 0a 2a 2a 20 6e 75  lf.  These.** nu
27270 6d 62 65 72 73 20 61 72 65 20 6f 62 74 61 69 6e  mbers are obtain
27280 65 64 20 73 65 70 61 72 61 74 65 6c 79 2e 20 20  ed separately.  
27290 4c 65 74 20 4e 20 62 65 20 74 68 65 20 6e 75 6d  Let N be the num
272a0 62 65 72 20 6f 66 20 72 6f 77 73 0a 2a 2a 20 61  ber of rows.** a
272b0 6e 64 20 4d 20 62 65 20 74 68 65 20 6e 75 6d 62  nd M be the numb
272c0 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 0a 2a  er of columns..*
272d0 2a 0a 2a 2a 20 41 20 72 65 73 75 6c 74 20 74 61  *.** A result ta
272e0 62 6c 65 20 69 73 20 61 6e 20 61 72 72 61 79 20  ble is an array 
272f0 6f 66 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 7a  of pointers to z
27300 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  ero-terminated U
27310 54 46 2d 38 20 73 74 72 69 6e 67 73 2e 0a 2a 2a  TF-8 strings..**
27320 20 54 68 65 72 65 20 61 72 65 20 28 4e 2b 31 29   There are (N+1)
27330 2a 4d 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74  *M elements in t
27340 68 65 20 61 72 72 61 79 2e 20 20 54 68 65 20 66  he array.  The f
27350 69 72 73 74 20 4d 20 70 6f 69 6e 74 65 72 73 20  irst M pointers 
27360 70 6f 69 6e 74 0a 2a 2a 20 74 6f 20 7a 65 72 6f  point.** to zero
27370 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69  -terminated stri
27380 6e 67 73 20 74 68 61 74 20 20 63 6f 6e 74 61 69  ngs that  contai
27390 6e 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 74  n the names of t
273a0 68 65 20 63 6f 6c 75 6d 6e 73 2e 0a 2a 2a 20 54  he columns..** T
273b0 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 65 6e 74  he remaining ent
273c0 72 69 65 73 20 61 6c 6c 20 70 6f 69 6e 74 20 74  ries all point t
273d0 6f 20 71 75 65 72 79 20 72 65 73 75 6c 74 73 2e  o query results.
273e0 20 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 72 65    NULL values re
273f0 73 75 6c 74 0a 2a 2a 20 69 6e 20 4e 55 4c 4c 20  sult.** in NULL 
27400 70 6f 69 6e 74 65 72 73 2e 20 20 41 6c 6c 20 6f  pointers.  All o
27410 74 68 65 72 20 76 61 6c 75 65 73 20 61 72 65 20  ther values are 
27420 69 6e 20 74 68 65 69 72 20 55 54 46 2d 38 20 7a  in their UTF-8 z
27430 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 0a 2a  ero-terminated.*
27440 2a 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65  * string represe
27450 6e 74 61 74 69 6f 6e 20 61 73 20 72 65 74 75 72  ntation as retur
27460 6e 65 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f  ned by [sqlite3_
27470 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 29 5d 2e 0a  column_text()]..
27480 2a 2a 0a 2a 2a 20 41 20 72 65 73 75 6c 74 20 74  **.** A result t
27490 61 62 6c 65 20 6d 69 67 68 74 20 63 6f 6e 73 69  able might consi
274a0 73 74 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72  st of one or mor
274b0 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
274c0 69 6f 6e 73 2e 0a 2a 2a 20 49 74 20 69 73 20 6e  ions..** It is n
274d0 6f 74 20 73 61 66 65 20 74 6f 20 70 61 73 73 20  ot safe to pass 
274e0 61 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 64  a result table d
274f0 69 72 65 63 74 6c 79 20 74 6f 20 5b 73 71 6c 69  irectly to [sqli
27500 74 65 33 5f 66 72 65 65 28 29 5d 2e 0a 2a 2a 20  te3_free()]..** 
27510 41 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 73  A result table s
27520 68 6f 75 6c 64 20 62 65 20 64 65 61 6c 6c 6f 63  hould be dealloc
27530 61 74 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69  ated using [sqli
27540 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29  te3_free_table()
27550 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 28 41 73 20 61 6e  ]..**.** ^(As an
27560 20 65 78 61 6d 70 6c 65 20 6f 66 20 74 68 65 20   example of the 
27570 72 65 73 75 6c 74 20 74 61 62 6c 65 20 66 6f 72  result table for
27580 6d 61 74 2c 20 73 75 70 70 6f 73 65 20 61 20 71  mat, suppose a q
27590 75 65 72 79 20 72 65 73 75 6c 74 0a 2a 2a 20 69  uery result.** i
275a0 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a  s as follows:.**
275b0 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  .** <blockquote>
275c0 3c 70 72 65 3e 0a 2a 2a 20 20 20 20 20 20 20 20  <pre>.**        
275d0 4e 61 6d 65 20 20 20 20 20 20 20 20 7c 20 41 67  Name        | Ag
275e0 65 0a 2a 2a 20 20 20 20 20 20 20 20 2d 2d 2d 2d  e.**        ----
275f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
27600 2d 2d 2d 0a 2a 2a 20 20 20 20 20 20 20 20 41 6c  ---.**        Al
27610 69 63 65 20 20 20 20 20 20 20 7c 20 34 33 0a 2a  ice       | 43.*
27620 2a 20 20 20 20 20 20 20 20 42 6f 62 20 20 20 20  *        Bob    
27630 20 20 20 20 20 7c 20 32 38 0a 2a 2a 20 20 20 20       | 28.**    
27640 20 20 20 20 43 69 6e 64 79 20 20 20 20 20 20 20      Cindy       
27650 7c 20 32 31 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f  | 21.** </pre></
27660 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a  blockquote>.**.*
27670 2a 20 54 68 65 72 65 20 61 72 65 20 74 77 6f 20  * There are two 
27680 63 6f 6c 75 6d 6e 20 28 4d 3d 3d 32 29 20 61 6e  column (M==2) an
27690 64 20 74 68 72 65 65 20 72 6f 77 73 20 28 4e 3d  d three rows (N=
276a0 3d 33 29 2e 20 20 54 68 75 73 20 74 68 65 0a 2a  =3).  Thus the.*
276b0 2a 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 68  * result table h
276c0 61 73 20 38 20 65 6e 74 72 69 65 73 2e 20 20 53  as 8 entries.  S
276d0 75 70 70 6f 73 65 20 74 68 65 20 72 65 73 75 6c  uppose the resul
276e0 74 20 74 61 62 6c 65 20 69 73 20 73 74 6f 72 65  t table is store
276f0 64 0a 2a 2a 20 69 6e 20 61 6e 20 61 72 72 61 79  d.** in an array
27700 20 6e 61 6d 65 73 20 61 7a 52 65 73 75 6c 74 2e   names azResult.
27710 20 20 54 68 65 6e 20 61 7a 52 65 73 75 6c 74 20    Then azResult 
27720 68 6f 6c 64 73 20 74 68 69 73 20 63 6f 6e 74 65  holds this conte
27730 6e 74 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b  nt:.**.** <block
27740 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20  quote><pre>.**  
27750 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23        azResult&#
27760 39 31 3b 30 5d 20 3d 20 22 4e 61 6d 65 22 3b 0a  91;0] = "Name";.
27770 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75  **        azResu
27780 6c 74 26 23 39 31 3b 31 5d 20 3d 20 22 41 67 65  lt&#91;1] = "Age
27790 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52  ";.**        azR
277a0 65 73 75 6c 74 26 23 39 31 3b 32 5d 20 3d 20 22  esult&#91;2] = "
277b0 41 6c 69 63 65 22 3b 0a 2a 2a 20 20 20 20 20 20  Alice";.**      
277c0 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 33    azResult&#91;3
277d0 5d 20 3d 20 22 34 33 22 3b 0a 2a 2a 20 20 20 20  ] = "43";.**    
277e0 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31      azResult&#91
277f0 3b 34 5d 20 3d 20 22 42 6f 62 22 3b 0a 2a 2a 20  ;4] = "Bob";.** 
27800 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26         azResult&
27810 23 39 31 3b 35 5d 20 3d 20 22 32 38 22 3b 0a 2a  #91;5] = "28";.*
27820 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c  *        azResul
27830 74 26 23 39 31 3b 36 5d 20 3d 20 22 43 69 6e 64  t&#91;6] = "Cind
27840 79 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a  y";.**        az
27850 52 65 73 75 6c 74 26 23 39 31 3b 37 5d 20 3d 20  Result&#91;7] = 
27860 22 32 31 22 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c  "21";.** </pre><
27870 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 2a  /blockquote>)^.*
27880 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
27890 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 20 66 75  3_get_table() fu
278a0 6e 63 74 69 6f 6e 20 65 76 61 6c 75 61 74 65 73  nction evaluates
278b0 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 2a 2a 20   one or more.** 
278c0 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65 70 61 72 61  semicolon-separa
278d0 74 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ted SQL statemen
278e0 74 73 20 69 6e 20 74 68 65 20 7a 65 72 6f 2d 74  ts in the zero-t
278f0 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 0a  erminated UTF-8.
27900 2a 2a 20 73 74 72 69 6e 67 20 6f 66 20 69 74 73  ** string of its
27910 20 32 6e 64 20 70 61 72 61 6d 65 74 65 72 20 61   2nd parameter a
27920 6e 64 20 72 65 74 75 72 6e 73 20 61 20 72 65 73  nd returns a res
27930 75 6c 74 20 74 61 62 6c 65 20 74 6f 20 74 68 65  ult table to the
27940 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 67 69 76 65  .** pointer give
27950 6e 20 69 6e 20 69 74 73 20 33 72 64 20 70 61 72  n in its 3rd par
27960 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 41 66  ameter..**.** Af
27970 74 65 72 20 74 68 65 20 61 70 70 6c 69 63 61 74  ter the applicat
27980 69 6f 6e 20 68 61 73 20 66 69 6e 69 73 68 65 64  ion has finished
27990 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74   with the result
279a0 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 67 65   from sqlite3_ge
279b0 74 5f 74 61 62 6c 65 28 29 2c 0a 2a 2a 20 69 74  t_table(),.** it
279c0 20 6d 75 73 74 20 70 61 73 73 20 74 68 65 20 72   must pass the r
279d0 65 73 75 6c 74 20 74 61 62 6c 65 20 70 6f 69 6e  esult table poin
279e0 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 66  ter to sqlite3_f
279f0 72 65 65 5f 74 61 62 6c 65 28 29 20 69 6e 20 6f  ree_table() in o
27a00 72 64 65 72 20 74 6f 0a 2a 2a 20 72 65 6c 65 61  rder to.** relea
27a10 73 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 74 68  se the memory th
27a20 61 74 20 77 61 73 20 6d 61 6c 6c 6f 63 65 64 2e  at was malloced.
27a30 20 20 42 65 63 61 75 73 65 20 6f 66 20 74 68 65    Because of the
27a40 20 77 61 79 20 74 68 65 0a 2a 2a 20 5b 73 71 6c   way the.** [sql
27a50 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 68  ite3_malloc()] h
27a60 61 70 70 65 6e 73 20 77 69 74 68 69 6e 20 73 71  appens within sq
27a70 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28  lite3_get_table(
27a80 29 2c 20 74 68 65 20 63 61 6c 6c 69 6e 67 0a 2a  ), the calling.*
27a90 2a 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20  * function must 
27aa0 6e 6f 74 20 74 72 79 20 74 6f 20 63 61 6c 6c 20  not try to call 
27ab0 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d  [sqlite3_free()]
27ac0 20 64 69 72 65 63 74 6c 79 2e 20 20 4f 6e 6c 79   directly.  Only
27ad0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  .** [sqlite3_fre
27ae0 65 5f 74 61 62 6c 65 28 29 5d 20 69 73 20 61 62  e_table()] is ab
27af0 6c 65 20 74 6f 20 72 65 6c 65 61 73 65 20 74 68  le to release th
27b00 65 20 6d 65 6d 6f 72 79 20 70 72 6f 70 65 72 6c  e memory properl
27b10 79 20 61 6e 64 20 73 61 66 65 6c 79 2e 0a 2a 2a  y and safely..**
27b20 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
27b30 67 65 74 5f 74 61 62 6c 65 28 29 20 69 6e 74 65  get_table() inte
27b40 72 66 61 63 65 20 69 73 20 69 6d 70 6c 65 6d 65  rface is impleme
27b50 6e 74 65 64 20 61 73 20 61 20 77 72 61 70 70 65  nted as a wrappe
27b60 72 20 61 72 6f 75 6e 64 0a 2a 2a 20 5b 73 71 6c  r around.** [sql
27b70 69 74 65 33 5f 65 78 65 63 28 29 5d 2e 20 20 54  ite3_exec()].  T
27b80 68 65 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  he sqlite3_get_t
27b90 61 62 6c 65 28 29 20 72 6f 75 74 69 6e 65 20 64  able() routine d
27ba0 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 61 63 63  oes not have acc
27bb0 65 73 73 0a 2a 2a 20 74 6f 20 61 6e 79 20 69 6e  ess.** to any in
27bc0 74 65 72 6e 61 6c 20 64 61 74 61 20 73 74 72 75  ternal data stru
27bd0 63 74 75 72 65 73 20 6f 66 20 53 51 4c 69 74 65  ctures of SQLite
27be0 2e 20 20 49 74 20 75 73 65 73 20 6f 6e 6c 79 20  .  It uses only 
27bf0 74 68 65 20 70 75 62 6c 69 63 0a 2a 2a 20 69 6e  the public.** in
27c00 74 65 72 66 61 63 65 20 64 65 66 69 6e 65 64 20  terface defined 
27c10 68 65 72 65 2e 20 20 41 73 20 61 20 63 6f 6e 73  here.  As a cons
27c20 65 71 75 65 6e 63 65 2c 20 65 72 72 6f 72 73 20  equence, errors 
27c30 74 68 61 74 20 6f 63 63 75 72 20 69 6e 20 74 68  that occur in th
27c40 65 0a 2a 2a 20 77 72 61 70 70 65 72 20 6c 61 79  e.** wrapper lay
27c50 65 72 20 6f 75 74 73 69 64 65 20 6f 66 20 74 68  er outside of th
27c60 65 20 69 6e 74 65 72 6e 61 6c 20 5b 73 71 6c 69  e internal [sqli
27c70 74 65 33 5f 65 78 65 63 28 29 5d 20 63 61 6c 6c  te3_exec()] call
27c80 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 72 65 66 6c   are not.** refl
27c90 65 63 74 65 64 20 69 6e 20 73 75 62 73 65 71 75  ected in subsequ
27ca0 65 6e 74 20 63 61 6c 6c 73 20 74 6f 20 5b 73 71  ent calls to [sq
27cb0 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 29 5d  lite3_errcode()]
27cc0 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   or.** [sqlite3_
27cd0 65 72 72 6d 73 67 28 29 5d 2e 0a 2a 2f 0a 53 51  errmsg()]..*/.SQ
27ce0 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
27cf0 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 0a  ite3_get_table(.
27d00 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20    sqlite3 *db,  
27d10 20 20 20 20 20 20 20 20 2f 2a 20 41 6e 20 6f 70          /* An op
27d20 65 6e 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 20  en database */. 
27d30 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71   const char *zSq
27d40 6c 2c 20 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f  l,     /* SQL to
27d50 20 62 65 20 65 76 61 6c 75 61 74 65 64 20 2a 2f   be evaluated */
27d60 0a 20 20 63 68 61 72 20 2a 2a 2a 70 61 7a 52 65  .  char ***pazRe
27d70 73 75 6c 74 2c 20 20 20 20 2f 2a 20 52 65 73 75  sult,    /* Resu
27d80 6c 74 73 20 6f 66 20 74 68 65 20 71 75 65 72 79  lts of the query
27d90 20 2a 2f 0a 20 20 69 6e 74 20 2a 70 6e 52 6f 77   */.  int *pnRow
27da0 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e  ,           /* N
27db0 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20  umber of result 
27dc0 72 6f 77 73 20 77 72 69 74 74 65 6e 20 68 65 72  rows written her
27dd0 65 20 2a 2f 0a 20 20 69 6e 74 20 2a 70 6e 43 6f  e */.  int *pnCo
27de0 6c 75 6d 6e 2c 20 20 20 20 20 20 20 20 2f 2a 20  lumn,        /* 
27df0 4e 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74  Number of result
27e00 20 63 6f 6c 75 6d 6e 73 20 77 72 69 74 74 65 6e   columns written
27e10 20 68 65 72 65 20 2a 2f 0a 20 20 63 68 61 72 20   here */.  char 
27e20 2a 2a 70 7a 45 72 72 6d 73 67 20 20 20 20 20 20  **pzErrmsg      
27e30 20 2f 2a 20 45 72 72 6f 72 20 6d 73 67 20 77 72   /* Error msg wr
27e40 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29 3b  itten here */.);
27e50 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64  .SQLITE_API void
27e60 20 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61   sqlite3_free_ta
27e70 62 6c 65 28 63 68 61 72 20 2a 2a 72 65 73 75 6c  ble(char **resul
27e80 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  t);../*.** CAPI3
27e90 52 45 46 3a 20 46 6f 72 6d 61 74 74 65 64 20 53  REF: Formatted S
27ea0 74 72 69 6e 67 20 50 72 69 6e 74 69 6e 67 20 46  tring Printing F
27eb0 75 6e 63 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54  unctions.**.** T
27ec0 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 61 72  hese routines ar
27ed0 65 20 77 6f 72 6b 2d 61 6c 69 6b 65 73 20 6f 66  e work-alikes of
27ee0 20 74 68 65 20 22 70 72 69 6e 74 66 28 29 22 20   the "printf()" 
27ef0 66 61 6d 69 6c 79 20 6f 66 20 66 75 6e 63 74 69  family of functi
27f00 6f 6e 73 0a 2a 2a 20 66 72 6f 6d 20 74 68 65 20  ons.** from the 
27f10 73 74 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61  standard C libra
27f20 72 79 2e 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75  ry..** These rou
27f30 74 69 6e 65 73 20 75 6e 64 65 72 73 74 61 6e 64  tines understand
27f40 20 6d 6f 73 74 20 6f 66 20 74 68 65 20 63 6f 6d   most of the com
27f50 6d 6f 6e 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f  mon formatting o
27f60 70 74 69 6f 6e 73 20 66 72 6f 6d 0a 2a 2a 20 74  ptions from.** t
27f70 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72  he standard libr
27f80 61 72 79 20 70 72 69 6e 74 66 28 29 20 0a 2a 2a  ary printf() .**
27f90 20 70 6c 75 73 20 73 6f 6d 65 20 61 64 64 69 74   plus some addit
27fa0 69 6f 6e 61 6c 20 6e 6f 6e 2d 73 74 61 6e 64 61  ional non-standa
27fb0 72 64 20 66 6f 72 6d 61 74 73 20 28 5b 25 71 5d  rd formats ([%q]
27fc0 2c 20 5b 25 51 5d 2c 20 5b 25 77 5d 2c 20 61 6e  , [%Q], [%w], an
27fd0 64 20 5b 25 7a 5d 29 2e 0a 2a 2a 20 53 65 65 20  d [%z])..** See 
27fe0 74 68 65 20 5b 62 75 69 6c 74 2d 69 6e 20 70 72  the [built-in pr
27ff0 69 6e 74 66 28 29 5d 20 64 6f 63 75 6d 65 6e 74  intf()] document
28000 61 74 69 6f 6e 20 66 6f 72 20 64 65 74 61 69 6c  ation for detail
28010 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  s..**.** ^The sq
28020 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 20  lite3_mprintf() 
28030 61 6e 64 20 73 71 6c 69 74 65 33 5f 76 6d 70 72  and sqlite3_vmpr
28040 69 6e 74 66 28 29 20 72 6f 75 74 69 6e 65 73 20  intf() routines 
28050 77 72 69 74 65 20 74 68 65 69 72 0a 2a 2a 20 72  write their.** r
28060 65 73 75 6c 74 73 20 69 6e 74 6f 20 6d 65 6d 6f  esults into memo
28070 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ry obtained from
28080 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
28090 36 34 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 73 74  64()]..** The st
280a0 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64 20 62  rings returned b
280b0 79 20 74 68 65 73 65 20 74 77 6f 20 72 6f 75 74  y these two rout
280c0 69 6e 65 73 20 73 68 6f 75 6c 64 20 62 65 0a 2a  ines should be.*
280d0 2a 20 72 65 6c 65 61 73 65 64 20 62 79 20 5b 73  * released by [s
280e0 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 2e 20  qlite3_free()]. 
280f0 20 5e 42 6f 74 68 20 72 6f 75 74 69 6e 65 73 20   ^Both routines 
28100 72 65 74 75 72 6e 20 61 0a 2a 2a 20 4e 55 4c 4c  return a.** NULL
28110 20 70 6f 69 6e 74 65 72 20 69 66 20 5b 73 71 6c   pointer if [sql
28120 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 29 5d  ite3_malloc64()]
28130 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c   is unable to al
28140 6c 6f 63 61 74 65 20 65 6e 6f 75 67 68 0a 2a 2a  locate enough.**
28150 20 6d 65 6d 6f 72 79 20 74 6f 20 68 6f 6c 64 20   memory to hold 
28160 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74  the resulting st
28170 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68  ring..**.** ^(Th
28180 65 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e  e sqlite3_snprin
28190 74 66 28 29 20 72 6f 75 74 69 6e 65 20 69 73 20  tf() routine is 
281a0 73 69 6d 69 6c 61 72 20 74 6f 20 22 73 6e 70 72  similar to "snpr
281b0 69 6e 74 66 28 29 22 20 66 72 6f 6d 0a 2a 2a 20  intf()" from.** 
281c0 74 68 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c  the standard C l
281d0 69 62 72 61 72 79 2e 20 20 54 68 65 20 72 65 73  ibrary.  The res
281e0 75 6c 74 20 69 73 20 77 72 69 74 74 65 6e 20 69  ult is written i
281f0 6e 74 6f 20 74 68 65 0a 2a 2a 20 62 75 66 66 65  nto the.** buffe
28200 72 20 73 75 70 70 6c 69 65 64 20 61 73 20 74 68  r supplied as th
28210 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
28220 65 72 20 77 68 6f 73 65 20 73 69 7a 65 20 69 73  er whose size is
28230 20 67 69 76 65 6e 20 62 79 0a 2a 2a 20 74 68 65   given by.** the
28240 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
28250 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20  . Note that the 
28260 6f 72 64 65 72 20 6f 66 20 74 68 65 0a 2a 2a 20  order of the.** 
28270 66 69 72 73 74 20 74 77 6f 20 70 61 72 61 6d 65  first two parame
28280 74 65 72 73 20 69 73 20 72 65 76 65 72 73 65 64  ters is reversed
28290 20 66 72 6f 6d 20 73 6e 70 72 69 6e 74 66 28 29   from snprintf()
282a0 2e 29 5e 20 20 54 68 69 73 20 69 73 20 61 6e 0a  .)^  This is an.
282b0 2a 2a 20 68 69 73 74 6f 72 69 63 61 6c 20 61 63  ** historical ac
282c0 63 69 64 65 6e 74 20 74 68 61 74 20 63 61 6e 6e  cident that cann
282d0 6f 74 20 62 65 20 66 69 78 65 64 20 77 69 74 68  ot be fixed with
282e0 6f 75 74 20 62 72 65 61 6b 69 6e 67 0a 2a 2a 20  out breaking.** 
282f0 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74  backwards compat
28300 69 62 69 6c 69 74 79 2e 20 20 5e 28 4e 6f 74 65  ibility.  ^(Note
28310 20 61 6c 73 6f 20 74 68 61 74 20 73 71 6c 69 74   also that sqlit
28320 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a  e3_snprintf().**
28330 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74   returns a point
28340 65 72 20 74 6f 20 69 74 73 20 62 75 66 66 65 72  er to its buffer
28350 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
28360 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 63 68 61  number of.** cha
28370 72 61 63 74 65 72 73 20 61 63 74 75 61 6c 6c 79  racters actually
28380 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 74 68   written into th
28390 65 20 62 75 66 66 65 72 2e 29 5e 20 20 57 65 20  e buffer.)^  We 
283a0 61 64 6d 69 74 20 74 68 61 74 0a 2a 2a 20 74 68  admit that.** th
283b0 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 72  e number of char
283c0 61 63 74 65 72 73 20 77 72 69 74 74 65 6e 20 77  acters written w
283d0 6f 75 6c 64 20 62 65 20 61 20 6d 6f 72 65 20 75  ould be a more u
283e0 73 65 66 75 6c 20 72 65 74 75 72 6e 0a 2a 2a 20  seful return.** 
283f0 76 61 6c 75 65 20 62 75 74 20 77 65 20 63 61 6e  value but we can
28400 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 69  not change the i
28410 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
28420 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74   sqlite3_snprint
28430 66 28 29 0a 2a 2a 20 6e 6f 77 20 77 69 74 68 6f  f().** now witho
28440 75 74 20 62 72 65 61 6b 69 6e 67 20 63 6f 6d 70  ut breaking comp
28450 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 0a 2a 2a  atibility..**.**
28460 20 5e 41 73 20 6c 6f 6e 67 20 61 73 20 74 68 65   ^As long as the
28470 20 62 75 66 66 65 72 20 73 69 7a 65 20 69 73 20   buffer size is 
28480 67 72 65 61 74 65 72 20 74 68 61 6e 20 7a 65 72  greater than zer
28490 6f 2c 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69  o, sqlite3_snpri
284a0 6e 74 66 28 29 0a 2a 2a 20 67 75 61 72 61 6e 74  ntf().** guarant
284b0 65 65 73 20 74 68 61 74 20 74 68 65 20 62 75 66  ees that the buf
284c0 66 65 72 20 69 73 20 61 6c 77 61 79 73 20 7a 65  fer is always ze
284d0 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 2e 20 20  ro-terminated.  
284e0 5e 54 68 65 20 66 69 72 73 74 0a 2a 2a 20 70 61  ^The first.** pa
284f0 72 61 6d 65 74 65 72 20 22 6e 22 20 69 73 20 74  rameter "n" is t
28500 68 65 20 74 6f 74 61 6c 20 73 69 7a 65 20 6f 66  he total size of
28510 20 74 68 65 20 62 75 66 66 65 72 2c 20 69 6e 63   the buffer, inc
28520 6c 75 64 69 6e 67 20 73 70 61 63 65 20 66 6f 72  luding space for
28530 0a 2a 2a 20 74 68 65 20 7a 65 72 6f 20 74 65 72  .** the zero ter
28540 6d 69 6e 61 74 6f 72 2e 20 20 53 6f 20 74 68 65  minator.  So the
28550 20 6c 6f 6e 67 65 73 74 20 73 74 72 69 6e 67 20   longest string 
28560 74 68 61 74 20 63 61 6e 20 62 65 20 63 6f 6d 70  that can be comp
28570 6c 65 74 65 6c 79 0a 2a 2a 20 77 72 69 74 74 65  letely.** writte
28580 6e 20 77 69 6c 6c 20 62 65 20 6e 2d 31 20 63 68  n will be n-1 ch
28590 61 72 61 63 74 65 72 73 2e 0a 2a 2a 0a 2a 2a 20  aracters..**.** 
285a0 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 76 73 6e  ^The sqlite3_vsn
285b0 70 72 69 6e 74 66 28 29 20 72 6f 75 74 69 6e 65  printf() routine
285c0 20 69 73 20 61 20 76 61 72 61 72 67 73 20 76 65   is a varargs ve
285d0 72 73 69 6f 6e 20 6f 66 20 73 71 6c 69 74 65 33  rsion of sqlite3
285e0 5f 73 6e 70 72 69 6e 74 66 28 29 2e 0a 2a 2a 0a  _snprintf()..**.
285f0 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 20 5b 62  ** See also:  [b
28600 75 69 6c 74 2d 69 6e 20 70 72 69 6e 74 66 28 29  uilt-in printf()
28610 5d 2c 20 5b 70 72 69 6e 74 66 28 29 20 53 51 4c  ], [printf() SQL
28620 20 66 75 6e 63 74 69 6f 6e 5d 0a 2a 2f 0a 53 51   function].*/.SQ
28630 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a 73  LITE_API char *s
28640 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 63  qlite3_mprintf(c
28650 6f 6e 73 74 20 63 68 61 72 2a 2c 2e 2e 2e 29 3b  onst char*,...);
28660 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72  .SQLITE_API char
28670 20 2a 73 71 6c 69 74 65 33 5f 76 6d 70 72 69 6e   *sqlite3_vmprin
28680 74 66 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20  tf(const char*, 
28690 76 61 5f 6c 69 73 74 29 3b 0a 53 51 4c 49 54 45  va_list);.SQLITE
286a0 5f 41 50 49 20 63 68 61 72 20 2a 73 71 6c 69 74  _API char *sqlit
286b0 65 33 5f 73 6e 70 72 69 6e 74 66 28 69 6e 74 2c  e3_snprintf(int,
286c0 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72  char*,const char
286d0 2a 2c 20 2e 2e 2e 29 3b 0a 53 51 4c 49 54 45 5f  *, ...);.SQLITE_
286e0 41 50 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65  API char *sqlite
286f0 33 5f 76 73 6e 70 72 69 6e 74 66 28 69 6e 74 2c  3_vsnprintf(int,
28700 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72  char*,const char
28710 2a 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 0a 2f 2a  *, va_list);../*
28720 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 65  .** CAPI3REF: Me
28730 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20  mory Allocation 
28740 53 75 62 73 79 73 74 65 6d 0a 2a 2a 0a 2a 2a 20  Subsystem.**.** 
28750 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20  The SQLite core 
28760 75 73 65 73 20 74 68 65 73 65 20 74 68 72 65 65  uses these three
28770 20 72 6f 75 74 69 6e 65 73 20 66 6f 72 20 61 6c   routines for al
28780 6c 20 6f 66 20 69 74 73 20 6f 77 6e 0a 2a 2a 20  l of its own.** 
28790 69 6e 74 65 72 6e 61 6c 20 6d 65 6d 6f 72 79 20  internal memory 
287a0 61 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73  allocation needs
287b0 2e 20 22 43 6f 72 65 22 20 69 6e 20 74 68 65 20  . "Core" in the 
287c0 70 72 65 76 69 6f 75 73 20 73 65 6e 74 65 6e 63  previous sentenc
287d0 65 0a 2a 2a 20 64 6f 65 73 20 6e 6f 74 20 69 6e  e.** does not in
287e0 63 6c 75 64 65 20 6f 70 65 72 61 74 69 6e 67 2d  clude operating-
287f0 73 79 73 74 65 6d 20 73 70 65 63 69 66 69 63 20  system specific 
28800 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  VFS implementati
28810 6f 6e 2e 20 20 54 68 65 0a 2a 2a 20 57 69 6e 64  on.  The.** Wind
28820 6f 77 73 20 56 46 53 20 75 73 65 73 20 6e 61 74  ows VFS uses nat
28830 69 76 65 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64  ive malloc() and
28840 20 66 72 65 65 28 29 20 66 6f 72 20 73 6f 6d 65   free() for some
28850 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a   operations..**.
28860 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
28870 6d 61 6c 6c 6f 63 28 29 20 72 6f 75 74 69 6e 65  malloc() routine
28880 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74   returns a point
28890 65 72 20 74 6f 20 61 20 62 6c 6f 63 6b 0a 2a 2a  er to a block.**
288a0 20 6f 66 20 6d 65 6d 6f 72 79 20 61 74 20 6c 65   of memory at le
288b0 61 73 74 20 4e 20 62 79 74 65 73 20 69 6e 20 6c  ast N bytes in l
288c0 65 6e 67 74 68 2c 20 77 68 65 72 65 20 4e 20 69  ength, where N i
288d0 73 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 2e  s the parameter.
288e0 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65 33 5f  .** ^If sqlite3_
288f0 6d 61 6c 6c 6f 63 28 29 20 69 73 20 75 6e 61 62  malloc() is unab
28900 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 73 75 66  le to obtain suf
28910 66 69 63 69 65 6e 74 20 66 72 65 65 0a 2a 2a 20  ficient free.** 
28920 6d 65 6d 6f 72 79 2c 20 69 74 20 72 65 74 75 72  memory, it retur
28930 6e 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  ns a NULL pointe
28940 72 2e 20 20 5e 49 66 20 74 68 65 20 70 61 72 61  r.  ^If the para
28950 6d 65 74 65 72 20 4e 20 74 6f 0a 2a 2a 20 73 71  meter N to.** sq
28960 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 69  lite3_malloc() i
28970 73 20 7a 65 72 6f 20 6f 72 20 6e 65 67 61 74 69  s zero or negati
28980 76 65 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  ve then sqlite3_
28990 6d 61 6c 6c 6f 63 28 29 20 72 65 74 75 72 6e 73  malloc() returns
289a0 0a 2a 2a 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74  .** a NULL point
289b0 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  er..**.** ^The s
289c0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28  qlite3_malloc64(
289d0 4e 29 20 72 6f 75 74 69 6e 65 20 77 6f 72 6b 73  N) routine works
289e0 20 6a 75 73 74 20 6c 69 6b 65 0a 2a 2a 20 73 71   just like.** sq
289f0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 4e 29 20  lite3_malloc(N) 
28a00 65 78 63 65 70 74 20 74 68 61 74 20 4e 20 69 73  except that N is
28a10 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 36 34 2d   an unsigned 64-
28a20 62 69 74 20 69 6e 74 65 67 65 72 20 69 6e 73 74  bit integer inst
28a30 65 61 64 0a 2a 2a 20 6f 66 20 61 20 73 69 67 6e  ead.** of a sign
28a40 65 64 20 33 32 2d 62 69 74 20 69 6e 74 65 67 65  ed 32-bit intege
28a50 72 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 69 6e  r..**.** ^Callin
28a60 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29  g sqlite3_free()
28a70 20 77 69 74 68 20 61 20 70 6f 69 6e 74 65 72 20   with a pointer 
28a80 70 72 65 76 69 6f 75 73 6c 79 20 72 65 74 75 72  previously retur
28a90 6e 65 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65  ned.** by sqlite
28aa0 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 73 71  3_malloc() or sq
28ab0 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 20  lite3_realloc() 
28ac0 72 65 6c 65 61 73 65 73 20 74 68 61 74 20 6d 65  releases that me
28ad0 6d 6f 72 79 20 73 6f 0a 2a 2a 20 74 68 61 74 20  mory so.** that 
28ae0 69 74 20 6d 69 67 68 74 20 62 65 20 72 65 75 73  it might be reus
28af0 65 64 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65  ed.  ^The sqlite
28b00 33 5f 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65  3_free() routine
28b10 20 69 73 0a 2a 2a 20 61 20 6e 6f 2d 6f 70 20 69   is.** a no-op i
28b20 66 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68  f is called with
28b30 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e   a NULL pointer.
28b40 20 20 50 61 73 73 69 6e 67 20 61 20 4e 55 4c 4c    Passing a NULL
28b50 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 73   pointer.** to s
28b60 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69 73  qlite3_free() is
28b70 20 68 61 72 6d 6c 65 73 73 2e 20 20 41 66 74 65   harmless.  Afte
28b80 72 20 62 65 69 6e 67 20 66 72 65 65 64 2c 20 6d  r being freed, m
28b90 65 6d 6f 72 79 0a 2a 2a 20 73 68 6f 75 6c 64 20  emory.** should 
28ba0 6e 65 69 74 68 65 72 20 62 65 20 72 65 61 64 20  neither be read 
28bb0 6e 6f 72 20 77 72 69 74 74 65 6e 2e 20 20 45 76  nor written.  Ev
28bc0 65 6e 20 72 65 61 64 69 6e 67 20 70 72 65 76 69  en reading previ
28bd0 6f 75 73 6c 79 20 66 72 65 65 64 0a 2a 2a 20 6d  ously freed.** m
28be0 65 6d 6f 72 79 20 6d 69 67 68 74 20 72 65 73 75  emory might resu
28bf0 6c 74 20 69 6e 20 61 20 73 65 67 6d 65 6e 74 61  lt in a segmenta
28c00 74 69 6f 6e 20 66 61 75 6c 74 20 6f 72 20 6f 74  tion fault or ot
28c10 68 65 72 20 73 65 76 65 72 65 20 65 72 72 6f 72  her severe error
28c20 2e 0a 2a 2a 20 4d 65 6d 6f 72 79 20 63 6f 72 72  ..** Memory corr
28c30 75 70 74 69 6f 6e 2c 20 61 20 73 65 67 6d 65 6e  uption, a segmen
28c40 74 61 74 69 6f 6e 20 66 61 75 6c 74 2c 20 6f 72  tation fault, or
28c50 20 6f 74 68 65 72 20 73 65 76 65 72 65 20 65 72   other severe er
28c60 72 6f 72 0a 2a 2a 20 6d 69 67 68 74 20 72 65 73  ror.** might res
28c70 75 6c 74 20 69 66 20 73 71 6c 69 74 65 33 5f 66  ult if sqlite3_f
28c80 72 65 65 28 29 20 69 73 20 63 61 6c 6c 65 64 20  ree() is called 
28c90 77 69 74 68 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20  with a non-NULL 
28ca0 70 6f 69 6e 74 65 72 20 74 68 61 74 0a 2a 2a 20  pointer that.** 
28cb0 77 61 73 20 6e 6f 74 20 6f 62 74 61 69 6e 65 64  was not obtained
28cc0 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61   from sqlite3_ma
28cd0 6c 6c 6f 63 28 29 20 6f 72 20 73 71 6c 69 74 65  lloc() or sqlite
28ce0 33 5f 72 65 61 6c 6c 6f 63 28 29 2e 0a 2a 2a 0a  3_realloc()..**.
28cf0 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
28d00 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 69 6e 74  realloc(X,N) int
28d10 65 72 66 61 63 65 20 61 74 74 65 6d 70 74 73 20  erface attempts 
28d20 74 6f 20 72 65 73 69 7a 65 20 61 0a 2a 2a 20 70  to resize a.** p
28d30 72 69 6f 72 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  rior memory allo
28d40 63 61 74 69 6f 6e 20 58 20 74 6f 20 62 65 20 61  cation X to be a
28d50 74 20 6c 65 61 73 74 20 4e 20 62 79 74 65 73 2e  t least N bytes.
28d60 0a 2a 2a 20 5e 49 66 20 74 68 65 20 58 20 70 61  .** ^If the X pa
28d70 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74  rameter to sqlit
28d80 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 0a  e3_realloc(X,N).
28d90 2a 2a 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69  ** is a NULL poi
28da0 6e 74 65 72 20 74 68 65 6e 20 69 74 73 20 62 65  nter then its be
28db0 68 61 76 69 6f 72 20 69 73 20 69 64 65 6e 74 69  havior is identi
28dc0 63 61 6c 20 74 6f 20 63 61 6c 6c 69 6e 67 0a 2a  cal to calling.*
28dd0 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  * sqlite3_malloc
28de0 28 4e 29 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20  (N)..** ^If the 
28df0 4e 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  N parameter to s
28e00 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58  qlite3_realloc(X
28e10 2c 4e 29 20 69 73 20 7a 65 72 6f 20 6f 72 0a 2a  ,N) is zero or.*
28e20 2a 20 6e 65 67 61 74 69 76 65 20 74 68 65 6e 20  * negative then 
28e30 74 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20  the behavior is 
28e40 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65  exactly the same
28e50 20 61 73 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 73   as calling.** s
28e60 71 6c 69 74 65 33 5f 66 72 65 65 28 58 29 2e 0a  qlite3_free(X)..
28e70 2a 2a 20 5e 73 71 6c 69 74 65 33 5f 72 65 61 6c  ** ^sqlite3_real
28e80 6c 6f 63 28 58 2c 4e 29 20 72 65 74 75 72 6e 73  loc(X,N) returns
28e90 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
28ea0 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
28eb0 6e 0a 2a 2a 20 6f 66 20 61 74 20 6c 65 61 73 74  n.** of at least
28ec0 20 4e 20 62 79 74 65 73 20 69 6e 20 73 69 7a 65   N bytes in size
28ed0 20 6f 72 20 4e 55 4c 4c 20 69 66 20 69 6e 73 75   or NULL if insu
28ee0 66 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 20  fficient memory 
28ef0 69 73 20 61 76 61 69 6c 61 62 6c 65 2e 0a 2a 2a  is available..**
28f00 20 5e 49 66 20 4d 20 69 73 20 74 68 65 20 73 69   ^If M is the si
28f10 7a 65 20 6f 66 20 74 68 65 20 70 72 69 6f 72 20  ze of the prior 
28f20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 74 68 65 6e  allocation, then
28f30 20 6d 69 6e 28 4e 2c 4d 29 20 62 79 74 65 73 0a   min(N,M) bytes.
28f40 2a 2a 20 6f 66 20 74 68 65 20 70 72 69 6f 72 20  ** of the prior 
28f50 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 72 65 20 63  allocation are c
28f60 6f 70 69 65 64 20 69 6e 74 6f 20 74 68 65 20 62  opied into the b
28f70 65 67 69 6e 6e 69 6e 67 20 6f 66 20 62 75 66 66  eginning of buff
28f80 65 72 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62  er returned.** b
28f90 79 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f  y sqlite3_reallo
28fa0 63 28 58 2c 4e 29 20 61 6e 64 20 74 68 65 20 70  c(X,N) and the p
28fb0 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  rior allocation 
28fc0 69 73 20 66 72 65 65 64 2e 0a 2a 2a 20 5e 49 66  is freed..** ^If
28fd0 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
28fe0 28 58 2c 4e 29 20 72 65 74 75 72 6e 73 20 4e 55  (X,N) returns NU
28ff0 4c 4c 20 61 6e 64 20 4e 20 69 73 20 70 6f 73 69  LL and N is posi
29000 74 69 76 65 2c 20 74 68 65 6e 20 74 68 65 0a 2a  tive, then the.*
29010 2a 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69  * prior allocati
29020 6f 6e 20 69 73 20 6e 6f 74 20 66 72 65 65 64 2e  on is not freed.
29030 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
29040 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28 58 2c  te3_realloc64(X,
29050 4e 29 20 69 6e 74 65 72 66 61 63 65 73 20 77 6f  N) interfaces wo
29060 72 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 0a  rks the same as.
29070 2a 2a 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  ** sqlite3_reall
29080 6f 63 28 58 2c 4e 29 20 65 78 63 65 70 74 20 74  oc(X,N) except t
29090 68 61 74 20 4e 20 69 73 20 61 20 36 34 2d 62 69  hat N is a 64-bi
290a0 74 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67  t unsigned integ
290b0 65 72 20 69 6e 73 74 65 61 64 0a 2a 2a 20 6f 66  er instead.** of
290c0 20 61 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64   a 32-bit signed
290d0 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 0a 2a 2a 20   integer..**.** 
290e0 5e 49 66 20 58 20 69 73 20 61 20 6d 65 6d 6f 72  ^If X is a memor
290f0 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 70 72 65  y allocation pre
29100 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64  viously obtained
29110 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61   from sqlite3_ma
29120 6c 6c 6f 63 28 29 2c 0a 2a 2a 20 73 71 6c 69 74  lloc(),.** sqlit
29130 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 29 2c 20 73  e3_malloc64(), s
29140 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29  qlite3_realloc()
29150 2c 20 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 61  , or sqlite3_rea
29160 6c 6c 6f 63 36 34 28 29 2c 20 74 68 65 6e 0a 2a  lloc64(), then.*
29170 2a 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28  * sqlite3_msize(
29180 58 29 20 72 65 74 75 72 6e 73 20 74 68 65 20 73  X) returns the s
29190 69 7a 65 20 6f 66 20 74 68 61 74 20 6d 65 6d 6f  ize of that memo
291a0 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e  ry allocation in
291b0 20 62 79 74 65 73 2e 0a 2a 2a 20 5e 54 68 65 20   bytes..** ^The 
291c0 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62  value returned b
291d0 79 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28  y sqlite3_msize(
291e0 58 29 20 6d 69 67 68 74 20 62 65 20 6c 61 72 67  X) might be larg
291f0 65 72 20 74 68 61 6e 20 74 68 65 20 6e 75 6d 62  er than the numb
29200 65 72 0a 2a 2a 20 6f 66 20 62 79 74 65 73 20 72  er.** of bytes r
29210 65 71 75 65 73 74 65 64 20 77 68 65 6e 20 58 20  equested when X 
29220 77 61 73 20 61 6c 6c 6f 63 61 74 65 64 2e 20 20  was allocated.  
29230 5e 49 66 20 58 20 69 73 20 61 20 4e 55 4c 4c 20  ^If X is a NULL 
29240 70 6f 69 6e 74 65 72 20 74 68 65 6e 0a 2a 2a 20  pointer then.** 
29250 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29  sqlite3_msize(X)
29260 20 72 65 74 75 72 6e 73 20 7a 65 72 6f 2e 20 20   returns zero.  
29270 49 66 20 58 20 70 6f 69 6e 74 73 20 74 6f 20 73  If X points to s
29280 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 69 73  omething that is
29290 20 6e 6f 74 0a 2a 2a 20 74 68 65 20 62 65 67 69   not.** the begi
292a0 6e 6e 69 6e 67 20 6f 66 20 6d 65 6d 6f 72 79 20  nning of memory 
292b0 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 6f 72 20 69  allocation, or i
292c0 66 20 69 74 20 70 6f 69 6e 74 73 20 74 6f 20 61  f it points to a
292d0 20 66 6f 72 6d 65 72 6c 79 0a 2a 2a 20 76 61 6c   formerly.** val
292e0 69 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  id memory alloca
292f0 74 69 6f 6e 20 74 68 61 74 20 68 61 73 20 6e 6f  tion that has no
29300 77 20 62 65 65 6e 20 66 72 65 65 64 2c 20 74 68  w been freed, th
29310 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 0a  en the behavior.
29320 2a 2a 20 6f 66 20 73 71 6c 69 74 65 33 5f 6d 73  ** of sqlite3_ms
29330 69 7a 65 28 58 29 20 69 73 20 75 6e 64 65 66 69  ize(X) is undefi
29340 6e 65 64 20 61 6e 64 20 70 6f 73 73 69 62 6c 79  ned and possibly
29350 20 68 61 72 6d 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20   harmful..**.** 
29360 5e 54 68 65 20 6d 65 6d 6f 72 79 20 72 65 74 75  ^The memory retu
29370 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
29380 6d 61 6c 6c 6f 63 28 29 2c 20 73 71 6c 69 74 65  malloc(), sqlite
29390 33 5f 72 65 61 6c 6c 6f 63 28 29 2c 0a 2a 2a 20  3_realloc(),.** 
293a0 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34  sqlite3_malloc64
293b0 28 29 2c 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  (), and sqlite3_
293c0 72 65 61 6c 6c 6f 63 36 34 28 29 0a 2a 2a 20 69  realloc64().** i
293d0 73 20 61 6c 77 61 79 73 20 61 6c 69 67 6e 65 64  s always aligned
293e0 20 74 6f 20 61 74 20 6c 65 61 73 74 20 61 6e 20   to at least an 
293f0 38 20 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2c  8 byte boundary,
29400 20 6f 72 20 74 6f 20 61 0a 2a 2a 20 34 20 62 79   or to a.** 4 by
29410 74 65 20 62 6f 75 6e 64 61 72 79 20 69 66 20 74  te boundary if t
29420 68 65 20 5b 53 51 4c 49 54 45 5f 34 5f 42 59 54  he [SQLITE_4_BYT
29430 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43  E_ALIGNED_MALLOC
29440 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a  ] compile-time.*
29450 2a 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  * option is used
29460 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 53 51 4c 69 74  ..**.** In SQLit
29470 65 20 76 65 72 73 69 6f 6e 20 33 2e 35 2e 30 20  e version 3.5.0 
29480 61 6e 64 20 33 2e 35 2e 31 2c 20 69 74 20 77 61  and 3.5.1, it wa
29490 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 64 65  s possible to de
294a0 66 69 6e 65 0a 2a 2a 20 74 68 65 20 53 51 4c 49  fine.** the SQLI
294b0 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 5f 41  TE_OMIT_MEMORY_A
294c0 4c 4c 4f 43 41 54 49 4f 4e 20 77 68 69 63 68 20  LLOCATION which 
294d0 77 6f 75 6c 64 20 63 61 75 73 65 20 74 68 65 20  would cause the 
294e0 62 75 69 6c 74 2d 69 6e 0a 2a 2a 20 69 6d 70 6c  built-in.** impl
294f0 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68  ementation of th
29500 65 73 65 20 72 6f 75 74 69 6e 65 73 20 74 6f 20  ese routines to 
29510 62 65 20 6f 6d 69 74 74 65 64 2e 20 20 54 68 61  be omitted.  Tha
29520 74 20 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a 20  t capability.** 
29530 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 70 72 6f  is no longer pro
29540 76 69 64 65 64 2e 20 20 4f 6e 6c 79 20 62 75 69  vided.  Only bui
29550 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c  lt-in memory all
29560 6f 63 61 74 6f 72 73 20 63 61 6e 20 62 65 20 75  ocators can be u
29570 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 50 72 69 6f 72  sed..**.** Prior
29580 20 74 6f 20 53 51 4c 69 74 65 20 76 65 72 73 69   to SQLite versi
29590 6f 6e 20 33 2e 37 2e 31 30 2c 20 74 68 65 20 57  on 3.7.10, the W
295a0 69 6e 64 6f 77 73 20 4f 53 20 69 6e 74 65 72 66  indows OS interf
295b0 61 63 65 20 6c 61 79 65 72 20 63 61 6c 6c 65 64  ace layer called
295c0 0a 2a 2a 20 74 68 65 20 73 79 73 74 65 6d 20 6d  .** the system m
295d0 61 6c 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65  alloc() and free
295e0 28 29 20 64 69 72 65 63 74 6c 79 20 77 68 65 6e  () directly when
295f0 20 63 6f 6e 76 65 72 74 69 6e 67 0a 2a 2a 20 66   converting.** f
29600 69 6c 65 6e 61 6d 65 73 20 62 65 74 77 65 65 6e  ilenames between
29610 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64   the UTF-8 encod
29620 69 6e 67 20 75 73 65 64 20 62 79 20 53 51 4c 69  ing used by SQLi
29630 74 65 0a 2a 2a 20 61 6e 64 20 77 68 61 74 65 76  te.** and whatev
29640 65 72 20 66 69 6c 65 6e 61 6d 65 20 65 6e 63 6f  er filename enco
29650 64 69 6e 67 20 69 73 20 75 73 65 64 20 62 79 20  ding is used by 
29660 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 20 57  the particular W
29670 69 6e 64 6f 77 73 0a 2a 2a 20 69 6e 73 74 61 6c  indows.** instal
29680 6c 61 74 69 6f 6e 2e 20 20 4d 65 6d 6f 72 79 20  lation.  Memory 
29690 61 6c 6c 6f 63 61 74 69 6f 6e 20 65 72 72 6f 72  allocation error
296a0 73 20 77 65 72 65 20 64 65 74 65 63 74 65 64 2c  s were detected,
296b0 20 62 75 74 0a 2a 2a 20 74 68 65 79 20 77 65 72   but.** they wer
296c0 65 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 20  e reported back 
296d0 61 73 20 5b 53 51 4c 49 54 45 5f 43 41 4e 54 4f  as [SQLITE_CANTO
296e0 50 45 4e 5d 20 6f 72 0a 2a 2a 20 5b 53 51 4c 49  PEN] or.** [SQLI
296f0 54 45 5f 49 4f 45 52 52 5d 20 72 61 74 68 65 72  TE_IOERR] rather
29700 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4e 4f   than [SQLITE_NO
29710 4d 45 4d 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  MEM]..**.** The 
29720 70 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74  pointer argument
29730 73 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66 72  s to [sqlite3_fr
29740 65 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  ee()] and [sqlit
29750 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 0a 2a 2a  e3_realloc()].**
29760 20 6d 75 73 74 20 62 65 20 65 69 74 68 65 72 20   must be either 
29770 4e 55 4c 4c 20 6f 72 20 65 6c 73 65 20 70 6f 69  NULL or else poi
29780 6e 74 65 72 73 20 6f 62 74 61 69 6e 65 64 20 66  nters obtained f
29790 72 6f 6d 20 61 20 70 72 69 6f 72 0a 2a 2a 20 69  rom a prior.** i
297a0 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20 5b 73 71  nvocation of [sq
297b0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20  lite3_malloc()] 
297c0 6f 72 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c  or [sqlite3_real
297d0 6c 6f 63 28 29 5d 20 74 68 61 74 20 68 61 76 65  loc()] that have
297e0 0a 2a 2a 20 6e 6f 74 20 79 65 74 20 62 65 65 6e  .** not yet been
297f0 20 72 65 6c 65 61 73 65 64 2e 0a 2a 2a 0a 2a 2a   released..**.**
29800 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   The application
29810 20 6d 75 73 74 20 6e 6f 74 20 72 65 61 64 20 6f   must not read o
29820 72 20 77 72 69 74 65 20 61 6e 79 20 70 61 72 74  r write any part
29830 20 6f 66 0a 2a 2a 20 61 20 62 6c 6f 63 6b 20 6f   of.** a block o
29840 66 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69  f memory after i
29850 74 20 68 61 73 20 62 65 65 6e 20 72 65 6c 65 61  t has been relea
29860 73 65 64 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71  sed using.** [sq
29870 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 20 6f 72  lite3_free()] or
29880 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   [sqlite3_reallo
29890 63 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  c()]..*/.SQLITE_
298a0 41 50 49 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  API void *sqlite
298b0 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 29 3b 0a 53  3_malloc(int);.S
298c0 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 2a  QLITE_API void *
298d0 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34  sqlite3_malloc64
298e0 28 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29  (sqlite3_uint64)
298f0 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69  ;.SQLITE_API voi
29900 64 20 2a 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  d *sqlite3_reall
29910 6f 63 28 76 6f 69 64 2a 2c 20 69 6e 74 29 3b 0a  oc(void*, int);.
29920 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20  SQLITE_API void 
29930 2a 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63  *sqlite3_realloc
29940 36 34 28 76 6f 69 64 2a 2c 20 73 71 6c 69 74 65  64(void*, sqlite
29950 33 5f 75 69 6e 74 36 34 29 3b 0a 53 51 4c 49 54  3_uint64);.SQLIT
29960 45 5f 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74  E_API void sqlit
29970 65 33 5f 66 72 65 65 28 76 6f 69 64 2a 29 3b 0a  e3_free(void*);.
29980 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74  SQLITE_API sqlit
29990 65 33 5f 75 69 6e 74 36 34 20 73 71 6c 69 74 65  e3_uint64 sqlite
299a0 33 5f 6d 73 69 7a 65 28 76 6f 69 64 2a 29 3b 0a  3_msize(void*);.
299b0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
299c0 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 6f   Memory Allocato
299d0 72 20 53 74 61 74 69 73 74 69 63 73 0a 2a 2a 0a  r Statistics.**.
299e0 2a 2a 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64  ** SQLite provid
299f0 65 73 20 74 68 65 73 65 20 74 77 6f 20 69 6e 74  es these two int
29a00 65 72 66 61 63 65 73 20 66 6f 72 20 72 65 70 6f  erfaces for repo
29a10 72 74 69 6e 67 20 6f 6e 20 74 68 65 20 73 74 61  rting on the sta
29a20 74 75 73 0a 2a 2a 20 6f 66 20 74 68 65 20 5b 73  tus.** of the [s
29a30 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d  qlite3_malloc()]
29a40 2c 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28  , [sqlite3_free(
29a50 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  )], and [sqlite3
29a60 5f 72 65 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20 72  _realloc()].** r
29a70 6f 75 74 69 6e 65 73 2c 20 77 68 69 63 68 20 66  outines, which f
29a80 6f 72 6d 20 74 68 65 20 62 75 69 6c 74 2d 69 6e  orm the built-in
29a90 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
29aa0 6f 6e 20 73 75 62 73 79 73 74 65 6d 2e 0a 2a 2a  on subsystem..**
29ab0 0a 2a 2a 20 5e 54 68 65 20 5b 73 71 6c 69 74 65  .** ^The [sqlite
29ac0 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d  3_memory_used()]
29ad0 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
29ae0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62   the number of b
29af0 79 74 65 73 0a 2a 2a 20 6f 66 20 6d 65 6d 6f 72  ytes.** of memor
29b00 79 20 63 75 72 72 65 6e 74 6c 79 20 6f 75 74 73  y currently outs
29b10 74 61 6e 64 69 6e 67 20 28 6d 61 6c 6c 6f 63 65  tanding (malloce
29b20 64 20 62 75 74 20 6e 6f 74 20 66 72 65 65 64 29  d but not freed)
29b30 2e 0a 2a 2a 20 5e 54 68 65 20 5b 73 71 6c 69 74  ..** ^The [sqlit
29b40 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
29b50 74 65 72 28 29 5d 20 72 6f 75 74 69 6e 65 20 72  ter()] routine r
29b60 65 74 75 72 6e 73 20 74 68 65 20 6d 61 78 69 6d  eturns the maxim
29b70 75 6d 0a 2a 2a 20 76 61 6c 75 65 20 6f 66 20 5b  um.** value of [
29b80 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
29b90 73 65 64 28 29 5d 20 73 69 6e 63 65 20 74 68 65  sed()] since the
29ba0 20 68 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b   high-water mark
29bb0 0a 2a 2a 20 77 61 73 20 6c 61 73 74 20 72 65 73  .** was last res
29bc0 65 74 2e 20 20 5e 54 68 65 20 76 61 6c 75 65 73  et.  ^The values
29bd0 20 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71   returned by [sq
29be0 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
29bf0 64 28 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c  d()] and.** [sql
29c00 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
29c10 77 61 74 65 72 28 29 5d 20 69 6e 63 6c 75 64 65  water()] include
29c20 20 61 6e 79 20 6f 76 65 72 68 65 61 64 0a 2a 2a   any overhead.**
29c30 20 61 64 64 65 64 20 62 79 20 53 51 4c 69 74 65   added by SQLite
29c40 20 69 6e 20 69 74 73 20 69 6d 70 6c 65 6d 65 6e   in its implemen
29c50 74 61 74 69 6f 6e 20 6f 66 20 5b 73 71 6c 69 74  tation of [sqlit
29c60 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2c 0a 2a 2a  e3_malloc()],.**
29c70 20 62 75 74 20 6e 6f 74 20 6f 76 65 72 68 65 61   but not overhea
29c80 64 20 61 64 64 65 64 20 62 79 20 74 68 65 20 61  d added by the a
29c90 6e 79 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 79  ny underlying sy
29ca0 73 74 65 6d 20 6c 69 62 72 61 72 79 0a 2a 2a 20  stem library.** 
29cb0 72 6f 75 74 69 6e 65 73 20 74 68 61 74 20 5b 73  routines that [s
29cc0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d  qlite3_malloc()]
29cd0 20 6d 61 79 20 63 61 6c 6c 2e 0a 2a 2a 0a 2a 2a   may call..**.**
29ce0 20 5e 54 68 65 20 6d 65 6d 6f 72 79 20 68 69 67   ^The memory hig
29cf0 68 2d 77 61 74 65 72 20 6d 61 72 6b 20 69 73 20  h-water mark is 
29d00 72 65 73 65 74 20 74 6f 20 74 68 65 20 63 75 72  reset to the cur
29d10 72 65 6e 74 20 76 61 6c 75 65 20 6f 66 0a 2a 2a  rent value of.**
29d20 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
29d30 5f 75 73 65 64 28 29 5d 20 69 66 20 61 6e 64 20  _used()] if and 
29d40 6f 6e 6c 79 20 69 66 20 74 68 65 20 70 61 72 61  only if the para
29d50 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c  meter to.** [sql
29d60 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
29d70 77 61 74 65 72 28 29 5d 20 69 73 20 74 72 75 65  water()] is true
29d80 2e 20 20 5e 54 68 65 20 76 61 6c 75 65 20 72 65  .  ^The value re
29d90 74 75 72 6e 65 64 0a 2a 2a 20 62 79 20 5b 73 71  turned.** by [sq
29da0 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67  lite3_memory_hig
29db0 68 77 61 74 65 72 28 31 29 5d 20 69 73 20 74 68  hwater(1)] is th
29dc0 65 20 68 69 67 68 2d 77 61 74 65 72 20 6d 61 72  e high-water mar
29dd0 6b 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20 74 68  k.** prior to th
29de0 65 20 72 65 73 65 74 2e 0a 2a 2f 0a 53 51 4c 49  e reset..*/.SQLI
29df0 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33 5f 69  TE_API sqlite3_i
29e00 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 6d 65 6d  nt64 sqlite3_mem
29e10 6f 72 79 5f 75 73 65 64 28 76 6f 69 64 29 3b 0a  ory_used(void);.
29e20 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74  SQLITE_API sqlit
29e30 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33  e3_int64 sqlite3
29e40 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
29e50 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29  r(int resetFlag)
29e60 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
29e70 46 3a 20 50 73 65 75 64 6f 2d 52 61 6e 64 6f 6d  F: Pseudo-Random
29e80 20 4e 75 6d 62 65 72 20 47 65 6e 65 72 61 74 6f   Number Generato
29e90 72 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 63  r.**.** SQLite c
29ea0 6f 6e 74 61 69 6e 73 20 61 20 68 69 67 68 2d 71  ontains a high-q
29eb0 75 61 6c 69 74 79 20 70 73 65 75 64 6f 2d 72 61  uality pseudo-ra
29ec0 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 67 65 6e 65  ndom number gene
29ed0 72 61 74 6f 72 20 28 50 52 4e 47 29 20 75 73 65  rator (PRNG) use
29ee0 64 20 74 6f 0a 2a 2a 20 73 65 6c 65 63 74 20 72  d to.** select r
29ef0 61 6e 64 6f 6d 20 5b 52 4f 57 49 44 20 7c 20 52  andom [ROWID | R
29f00 4f 57 49 44 73 5d 20 77 68 65 6e 20 69 6e 73 65  OWIDs] when inse
29f10 72 74 69 6e 67 20 6e 65 77 20 72 65 63 6f 72 64  rting new record
29f20 73 20 69 6e 74 6f 20 61 20 74 61 62 6c 65 20 74  s into a table t
29f30 68 61 74 0a 2a 2a 20 61 6c 72 65 61 64 79 20 75  hat.** already u
29f40 73 65 73 20 74 68 65 20 6c 61 72 67 65 73 74 20  ses the largest 
29f50 70 6f 73 73 69 62 6c 65 20 5b 52 4f 57 49 44 5d  possible [ROWID]
29f60 2e 20 20 54 68 65 20 50 52 4e 47 20 69 73 20 61  .  The PRNG is a
29f70 6c 73 6f 20 75 73 65 64 20 66 6f 72 0a 2a 2a 20  lso used for.** 
29f80 74 68 65 20 62 75 69 6c 64 2d 69 6e 20 72 61 6e  the build-in ran
29f90 64 6f 6d 28 29 20 61 6e 64 20 72 61 6e 64 6f 6d  dom() and random
29fa0 62 6c 6f 62 28 29 20 53 51 4c 20 66 75 6e 63 74  blob() SQL funct
29fb0 69 6f 6e 73 2e 20 20 54 68 69 73 20 69 6e 74 65  ions.  This inte
29fc0 72 66 61 63 65 20 61 6c 6c 6f 77 73 0a 2a 2a 20  rface allows.** 
29fd0 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20  applications to 
29fe0 61 63 63 65 73 73 20 74 68 65 20 73 61 6d 65 20  access the same 
29ff0 50 52 4e 47 20 66 6f 72 20 6f 74 68 65 72 20 70  PRNG for other p
2a000 75 72 70 6f 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e  urposes..**.** ^
2a010 41 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 72  A call to this r
2a020 6f 75 74 69 6e 65 20 73 74 6f 72 65 73 20 4e 20  outine stores N 
2a030 62 79 74 65 73 20 6f 66 20 72 61 6e 64 6f 6d 6e  bytes of randomn
2a040 65 73 73 20 69 6e 74 6f 20 62 75 66 66 65 72 20  ess into buffer 
2a050 50 2e 0a 2a 2a 20 5e 54 68 65 20 50 20 70 61 72  P..** ^The P par
2a060 61 6d 65 74 65 72 20 63 61 6e 20 62 65 20 61 20  ameter can be a 
2a070 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a  NULL pointer..**
2a080 0a 2a 2a 20 5e 49 66 20 74 68 69 73 20 72 6f 75  .** ^If this rou
2a090 74 69 6e 65 20 68 61 73 20 6e 6f 74 20 62 65 65  tine has not bee
2a0a0 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 63 61 6c  n previously cal
2a0b0 6c 65 64 20 6f 72 20 69 66 20 74 68 65 20 70 72  led or if the pr
2a0c0 65 76 69 6f 75 73 0a 2a 2a 20 63 61 6c 6c 20 68  evious.** call h
2a0d0 61 64 20 4e 20 6c 65 73 73 20 74 68 61 6e 20 6f  ad N less than o
2a0e0 6e 65 20 6f 72 20 61 20 4e 55 4c 4c 20 70 6f 69  ne or a NULL poi
2a0f0 6e 74 65 72 20 66 6f 72 20 50 2c 20 74 68 65 6e  nter for P, then
2a100 20 74 68 65 20 50 52 4e 47 20 69 73 0a 2a 2a 20   the PRNG is.** 
2a110 73 65 65 64 65 64 20 75 73 69 6e 67 20 72 61 6e  seeded using ran
2a120 64 6f 6d 6e 65 73 73 20 6f 62 74 61 69 6e 65 64  domness obtained
2a130 20 66 72 6f 6d 20 74 68 65 20 78 52 61 6e 64 6f   from the xRando
2a140 6d 6e 65 73 73 20 6d 65 74 68 6f 64 20 6f 66 0a  mness method of.
2a150 2a 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b  ** the default [
2a160 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a  sqlite3_vfs] obj
2a170 65 63 74 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20  ect..** ^If the 
2a180 70 72 65 76 69 6f 75 73 20 63 61 6c 6c 20 74 6f  previous call to
2a190 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 68 61   this routine ha
2a1a0 64 20 61 6e 20 4e 20 6f 66 20 31 20 6f 72 20 6d  d an N of 1 or m
2a1b0 6f 72 65 20 61 6e 64 20 61 0a 2a 2a 20 6e 6f 6e  ore and a.** non
2a1c0 2d 4e 55 4c 4c 20 50 20 74 68 65 6e 20 74 68 65  -NULL P then the
2a1d0 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 6e 65   pseudo-randomne
2a1e0 73 73 20 69 73 20 67 65 6e 65 72 61 74 65 64 0a  ss is generated.
2a1f0 2a 2a 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6e  ** internally an
2a200 64 20 77 69 74 68 6f 75 74 20 72 65 63 6f 75 72  d without recour
2a210 73 65 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74  se to the [sqlit
2a220 65 33 5f 76 66 73 5d 20 78 52 61 6e 64 6f 6d 6e  e3_vfs] xRandomn
2a230 65 73 73 0a 2a 2a 20 6d 65 74 68 6f 64 2e 0a 2a  ess.** method..*
2a240 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69  /.SQLITE_API voi
2a250 64 20 73 71 6c 69 74 65 33 5f 72 61 6e 64 6f 6d  d sqlite3_random
2a260 6e 65 73 73 28 69 6e 74 20 4e 2c 20 76 6f 69 64  ness(int N, void
2a270 20 2a 50 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50   *P);../*.** CAP
2a280 49 33 52 45 46 3a 20 43 6f 6d 70 69 6c 65 2d 54  I3REF: Compile-T
2a290 69 6d 65 20 41 75 74 68 6f 72 69 7a 61 74 69 6f  ime Authorizatio
2a2a0 6e 20 43 61 6c 6c 62 61 63 6b 73 0a 2a 2a 20 4d  n Callbacks.** M
2a2b0 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
2a2c0 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 61 75 74  * KEYWORDS: {aut
2a2d0 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b  horizer callback
2a2e0 7d 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 72 6f  }.**.** ^This ro
2a2f0 75 74 69 6e 65 20 72 65 67 69 73 74 65 72 73 20  utine registers 
2a300 61 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61  an authorizer ca
2a310 6c 6c 62 61 63 6b 20 77 69 74 68 20 61 20 70 61  llback with a pa
2a320 72 74 69 63 75 6c 61 72 0a 2a 2a 20 5b 64 61 74  rticular.** [dat
2a330 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2a340 5d 2c 20 73 75 70 70 6c 69 65 64 20 69 6e 20 74  ], supplied in t
2a350 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
2a360 74 2e 0a 2a 2a 20 5e 54 68 65 20 61 75 74 68 6f  t..** ^The autho
2a370 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69  rizer callback i
2a380 73 20 69 6e 76 6f 6b 65 64 20 61 73 20 53 51 4c  s invoked as SQL
2a390 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20   statements are 
2a3a0 62 65 69 6e 67 20 63 6f 6d 70 69 6c 65 64 0a 2a  being compiled.*
2a3b0 2a 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 70 72  * by [sqlite3_pr
2a3c0 65 70 61 72 65 28 29 5d 20 6f 72 20 69 74 73 20  epare()] or its 
2a3d0 76 61 72 69 61 6e 74 73 20 5b 73 71 6c 69 74 65  variants [sqlite
2a3e0 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c  3_prepare_v2()],
2a3f0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  .** [sqlite3_pre
2a400 70 61 72 65 5f 76 33 28 29 5d 2c 20 5b 73 71 6c  pare_v3()], [sql
2a410 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29  ite3_prepare16()
2a420 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ], [sqlite3_prep
2a430 61 72 65 31 36 5f 76 32 28 29 5d 2c 0a 2a 2a 20  are16_v2()],.** 
2a440 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  and [sqlite3_pre
2a450 70 61 72 65 31 36 5f 76 33 28 29 5d 2e 20 20 5e  pare16_v3()].  ^
2a460 41 74 20 76 61 72 69 6f 75 73 0a 2a 2a 20 70 6f  At various.** po
2a470 69 6e 74 73 20 64 75 72 69 6e 67 20 74 68 65 20  ints during the 
2a480 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 70 72 6f 63  compilation proc
2a490 65 73 73 2c 20 61 73 20 6c 6f 67 69 63 20 69 73  ess, as logic is
2a4a0 20 62 65 69 6e 67 20 63 72 65 61 74 65 64 0a 2a   being created.*
2a4b0 2a 20 74 6f 20 70 65 72 66 6f 72 6d 20 76 61 72  * to perform var
2a4c0 69 6f 75 73 20 61 63 74 69 6f 6e 73 2c 20 74 68  ious actions, th
2a4d0 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  e authorizer cal
2a4e0 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
2a4f0 20 74 6f 0a 2a 2a 20 73 65 65 20 69 66 20 74 68   to.** see if th
2a500 6f 73 65 20 61 63 74 69 6f 6e 73 20 61 72 65 20  ose actions are 
2a510 61 6c 6c 6f 77 65 64 2e 20 20 5e 54 68 65 20 61  allowed.  ^The a
2a520 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
2a530 63 6b 20 73 68 6f 75 6c 64 0a 2a 2a 20 72 65 74  ck should.** ret
2a540 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  urn [SQLITE_OK] 
2a550 74 6f 20 61 6c 6c 6f 77 20 74 68 65 20 61 63 74  to allow the act
2a560 69 6f 6e 2c 20 5b 53 51 4c 49 54 45 5f 49 47 4e  ion, [SQLITE_IGN
2a570 4f 52 45 5d 20 74 6f 20 64 69 73 61 6c 6c 6f 77  ORE] to disallow
2a580 20 74 68 65 0a 2a 2a 20 73 70 65 63 69 66 69 63   the.** specific
2a590 20 61 63 74 69 6f 6e 20 62 75 74 20 61 6c 6c 6f   action but allo
2a5a0 77 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  w the SQL statem
2a5b0 65 6e 74 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20  ent to continue 
2a5c0 74 6f 20 62 65 0a 2a 2a 20 63 6f 6d 70 69 6c 65  to be.** compile
2a5d0 64 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 44 45  d, or [SQLITE_DE
2a5e0 4e 59 5d 20 74 6f 20 63 61 75 73 65 20 74 68 65  NY] to cause the
2a5f0 20 65 6e 74 69 72 65 20 53 51 4c 20 73 74 61 74   entire SQL stat
2a600 65 6d 65 6e 74 20 74 6f 20 62 65 0a 2a 2a 20 72  ement to be.** r
2a610 65 6a 65 63 74 65 64 20 77 69 74 68 20 61 6e 20  ejected with an 
2a620 65 72 72 6f 72 2e 20 20 5e 49 66 20 74 68 65 20  error.  ^If the 
2a630 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
2a640 61 63 6b 20 72 65 74 75 72 6e 73 0a 2a 2a 20 61  ack returns.** a
2a650 6e 79 20 76 61 6c 75 65 20 6f 74 68 65 72 20 74  ny value other t
2a660 68 61 6e 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f  han [SQLITE_IGNO
2a670 52 45 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d  RE], [SQLITE_OK]
2a680 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 44 45 4e  , or [SQLITE_DEN
2a690 59 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 5b  Y].** then the [
2a6a0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
2a6b0 76 32 28 29 5d 20 6f 72 20 65 71 75 69 76 61 6c  v2()] or equival
2a6c0 65 6e 74 20 63 61 6c 6c 20 74 68 61 74 20 74 72  ent call that tr
2a6d0 69 67 67 65 72 65 64 0a 2a 2a 20 74 68 65 20 61  iggered.** the a
2a6e0 75 74 68 6f 72 69 7a 65 72 20 77 69 6c 6c 20 66  uthorizer will f
2a6f0 61 69 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f  ail with an erro
2a700 72 20 6d 65 73 73 61 67 65 2e 0a 2a 2a 0a 2a 2a  r message..**.**
2a710 20 57 68 65 6e 20 74 68 65 20 63 61 6c 6c 62 61   When the callba
2a720 63 6b 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49  ck returns [SQLI
2a730 54 45 5f 4f 4b 5d 2c 20 74 68 61 74 20 6d 65 61  TE_OK], that mea
2a740 6e 73 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  ns the operation
2a750 0a 2a 2a 20 72 65 71 75 65 73 74 65 64 20 69 73  .** requested is
2a760 20 6f 6b 2e 20 20 5e 57 68 65 6e 20 74 68 65 20   ok.  ^When the 
2a770 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73  callback returns
2a780 20 5b 53 51 4c 49 54 45 5f 44 45 4e 59 5d 2c 20   [SQLITE_DENY], 
2a790 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  the.** [sqlite3_
2a7a0 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 6f 72  prepare_v2()] or
2a7b0 20 65 71 75 69 76 61 6c 65 6e 74 20 63 61 6c 6c   equivalent call
2a7c0 20 74 68 61 74 20 74 72 69 67 67 65 72 65 64 20   that triggered 
2a7d0 74 68 65 0a 2a 2a 20 61 75 74 68 6f 72 69 7a 65  the.** authorize
2a7e0 72 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68  r will fail with
2a7f0 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67   an error messag
2a800 65 20 65 78 70 6c 61 69 6e 69 6e 67 20 74 68 61  e explaining tha
2a810 74 0a 2a 2a 20 61 63 63 65 73 73 20 69 73 20 64  t.** access is d
2a820 65 6e 69 65 64 2e 20 0a 2a 2a 0a 2a 2a 20 5e 54  enied. .**.** ^T
2a830 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74  he first paramet
2a840 65 72 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72  er to the author
2a850 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73  izer callback is
2a860 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 74   a copy of the t
2a870 68 69 72 64 0a 2a 2a 20 70 61 72 61 6d 65 74 65  hird.** paramete
2a880 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
2a890 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28  _set_authorizer(
2a8a0 29 20 69 6e 74 65 72 66 61 63 65 2e 20 5e 54 68  ) interface. ^Th
2a8b0 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
2a8c0 65 72 0a 2a 2a 20 74 6f 20 74 68 65 20 63 61 6c  er.** to the cal
2a8d0 6c 62 61 63 6b 20 69 73 20 61 6e 20 69 6e 74 65  lback is an inte
2a8e0 67 65 72 20 5b 53 51 4c 49 54 45 5f 43 4f 50 59  ger [SQLITE_COPY
2a8f0 20 7c 20 61 63 74 69 6f 6e 20 63 6f 64 65 5d 20   | action code] 
2a900 74 68 61 74 20 73 70 65 63 69 66 69 65 73 0a 2a  that specifies.*
2a910 2a 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72  * the particular
2a920 20 61 63 74 69 6f 6e 20 74 6f 20 62 65 20 61 75   action to be au
2a930 74 68 6f 72 69 7a 65 64 2e 20 5e 54 68 65 20 74  thorized. ^The t
2a940 68 69 72 64 20 74 68 72 6f 75 67 68 20 73 69 78  hird through six
2a950 74 68 20 70 61 72 61 6d 65 74 65 72 73 0a 2a 2a  th parameters.**
2a960 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   to the callback
2a970 20 61 72 65 20 65 69 74 68 65 72 20 4e 55 4c 4c   are either NULL
2a980 20 70 6f 69 6e 74 65 72 73 20 6f 72 20 7a 65 72   pointers or zer
2a990 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72  o-terminated str
2a9a0 69 6e 67 73 0a 2a 2a 20 74 68 61 74 20 63 6f 6e  ings.** that con
2a9b0 74 61 69 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20  tain additional 
2a9c0 64 65 74 61 69 6c 73 20 61 62 6f 75 74 20 74 68  details about th
2a9d0 65 20 61 63 74 69 6f 6e 20 74 6f 20 62 65 20 61  e action to be a
2a9e0 75 74 68 6f 72 69 7a 65 64 2e 0a 2a 2a 20 41 70  uthorized..** Ap
2a9f0 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20  plications must 
2aa00 61 6c 77 61 79 73 20 62 65 20 70 72 65 70 61 72  always be prepar
2aa10 65 64 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72 20  ed to encounter 
2aa20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69  a NULL pointer i
2aa30 6e 20 61 6e 79 0a 2a 2a 20 6f 66 20 74 68 65 20  n any.** of the 
2aa40 74 68 69 72 64 20 74 68 72 6f 75 67 68 20 74 68  third through th
2aa50 65 20 73 69 78 74 68 20 70 61 72 61 6d 65 74 65  e sixth paramete
2aa60 72 73 20 6f 66 20 74 68 65 20 61 75 74 68 6f 72  rs of the author
2aa70 69 7a 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b  ization callback
2aa80 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20  ..**.** ^If the 
2aa90 61 63 74 69 6f 6e 20 63 6f 64 65 20 69 73 20 5b  action code is [
2aaa0 53 51 4c 49 54 45 5f 52 45 41 44 5d 0a 2a 2a 20  SQLITE_READ].** 
2aab0 61 6e 64 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  and the callback
2aac0 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
2aad0 5f 49 47 4e 4f 52 45 5d 20 74 68 65 6e 20 74 68  _IGNORE] then th
2aae0 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73  e.** [prepared s
2aaf0 74 61 74 65 6d 65 6e 74 5d 20 73 74 61 74 65 6d  tatement] statem
2ab00 65 6e 74 20 69 73 20 63 6f 6e 73 74 72 75 63 74  ent is construct
2ab10 65 64 20 74 6f 20 73 75 62 73 74 69 74 75 74 65  ed to substitute
2ab20 0a 2a 2a 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65  .** a NULL value
2ab30 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65   in place of the
2ab40 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 74 68   table column th
2ab50 61 74 20 77 6f 75 6c 64 20 68 61 76 65 0a 2a 2a  at would have.**
2ab60 20 62 65 65 6e 20 72 65 61 64 20 69 66 20 5b 53   been read if [S
2ab70 51 4c 49 54 45 5f 4f 4b 5d 20 68 61 64 20 62 65  QLITE_OK] had be
2ab80 65 6e 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68  en returned.  Th
2ab90 65 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45  e [SQLITE_IGNORE
2aba0 5d 0a 2a 2a 20 72 65 74 75 72 6e 20 63 61 6e 20  ].** return can 
2abb0 62 65 20 75 73 65 64 20 74 6f 20 64 65 6e 79 20  be used to deny 
2abc0 61 6e 20 75 6e 74 72 75 73 74 65 64 20 75 73 65  an untrusted use
2abd0 72 20 61 63 63 65 73 73 20 74 6f 20 69 6e 64 69  r access to indi
2abe0 76 69 64 75 61 6c 0a 2a 2a 20 63 6f 6c 75 6d 6e  vidual.** column
2abf0 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 0a 2a 2a  s of a table..**
2ac00 20 5e 57 68 65 6e 20 61 20 74 61 62 6c 65 20 69   ^When a table i
2ac10 73 20 72 65 66 65 72 65 6e 63 65 64 20 62 79 20  s referenced by 
2ac20 61 20 5b 53 45 4c 45 43 54 5d 20 62 75 74 20 6e  a [SELECT] but n
2ac30 6f 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20  o column values 
2ac40 61 72 65 0a 2a 2a 20 65 78 74 72 61 63 74 65 64  are.** extracted
2ac50 20 66 72 6f 6d 20 74 68 61 74 20 74 61 62 6c 65   from that table
2ac60 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 20 69 6e   (for example in
2ac70 20 61 20 71 75 65 72 79 20 6c 69 6b 65 0a 2a 2a   a query like.**
2ac80 20 22 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a   "SELECT count(*
2ac90 29 20 46 52 4f 4d 20 74 61 62 22 29 20 74 68 65  ) FROM tab") the
2aca0 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 52 45  n the [SQLITE_RE
2acb0 41 44 5d 20 61 75 74 68 6f 72 69 7a 65 72 20 63  AD] authorizer c
2acc0 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 69 6e  allback.** is in
2acd0 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 74  voked once for t
2ace0 68 61 74 20 74 61 62 6c 65 20 77 69 74 68 20 61  hat table with a
2acf0 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 68 61   column name tha
2ad00 74 20 69 73 20 61 6e 20 65 6d 70 74 79 20 73 74  t is an empty st
2ad10 72 69 6e 67 2e 0a 2a 2a 20 5e 49 66 20 74 68 65  ring..** ^If the
2ad20 20 61 63 74 69 6f 6e 20 63 6f 64 65 20 69 73 20   action code is 
2ad30 5b 53 51 4c 49 54 45 5f 44 45 4c 45 54 45 5d 20  [SQLITE_DELETE] 
2ad40 61 6e 64 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  and the callback
2ad50 20 72 65 74 75 72 6e 73 0a 2a 2a 20 5b 53 51 4c   returns.** [SQL
2ad60 49 54 45 5f 49 47 4e 4f 52 45 5d 20 74 68 65 6e  ITE_IGNORE] then
2ad70 20 74 68 65 20 5b 44 45 4c 45 54 45 5d 20 6f 70   the [DELETE] op
2ad80 65 72 61 74 69 6f 6e 20 70 72 6f 63 65 65 64 73  eration proceeds
2ad90 20 62 75 74 20 74 68 65 0a 2a 2a 20 5b 74 72 75   but the.** [tru
2ada0 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69  ncate optimizati
2adb0 6f 6e 5d 20 69 73 20 64 69 73 61 62 6c 65 64 20  on] is disabled 
2adc0 61 6e 64 20 61 6c 6c 20 72 6f 77 73 20 61 72 65  and all rows are
2add0 20 64 65 6c 65 74 65 64 20 69 6e 64 69 76 69 64   deleted individ
2ade0 75 61 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 41 6e 20  ually..**.** An 
2adf0 61 75 74 68 6f 72 69 7a 65 72 20 69 73 20 75 73  authorizer is us
2ae00 65 64 20 77 68 65 6e 20 5b 73 71 6c 69 74 65 33  ed when [sqlite3
2ae10 5f 70 72 65 70 61 72 65 20 7c 20 70 72 65 70 61  _prepare | prepa
2ae20 72 69 6e 67 5d 0a 2a 2a 20 53 51 4c 20 73 74 61  ring].** SQL sta
2ae30 74 65 6d 65 6e 74 73 20 66 72 6f 6d 20 61 6e 20  tements from an 
2ae40 75 6e 74 72 75 73 74 65 64 20 73 6f 75 72 63 65  untrusted source
2ae50 2c 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74  , to ensure that
2ae60 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
2ae70 6e 74 73 0a 2a 2a 20 64 6f 20 6e 6f 74 20 74 72  nts.** do not tr
2ae80 79 20 74 6f 20 61 63 63 65 73 73 20 64 61 74 61  y to access data
2ae90 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20 61 6c   they are not al
2aea0 6c 6f 77 65 64 20 74 6f 20 73 65 65 2c 20 6f 72  lowed to see, or
2aeb0 20 74 68 61 74 20 74 68 65 79 20 64 6f 20 6e 6f   that they do no
2aec0 74 0a 2a 2a 20 74 72 79 20 74 6f 20 65 78 65 63  t.** try to exec
2aed0 75 74 65 20 6d 61 6c 69 63 69 6f 75 73 20 73 74  ute malicious st
2aee0 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20 64 61  atements that da
2aef0 6d 61 67 65 20 74 68 65 20 64 61 74 61 62 61 73  mage the databas
2af00 65 2e 20 20 46 6f 72 0a 2a 2a 20 65 78 61 6d 70  e.  For.** examp
2af10 6c 65 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69  le, an applicati
2af20 6f 6e 20 6d 61 79 20 61 6c 6c 6f 77 20 61 20 75  on may allow a u
2af30 73 65 72 20 74 6f 20 65 6e 74 65 72 20 61 72 62  ser to enter arb
2af40 69 74 72 61 72 79 0a 2a 2a 20 53 51 4c 20 71 75  itrary.** SQL qu
2af50 65 72 69 65 73 20 66 6f 72 20 65 76 61 6c 75 61  eries for evalua
2af60 74 69 6f 6e 20 62 79 20 61 20 64 61 74 61 62 61  tion by a databa
2af70 73 65 2e 20 20 42 75 74 20 74 68 65 20 61 70 70  se.  But the app
2af80 6c 69 63 61 74 69 6f 6e 20 64 6f 65 73 0a 2a 2a  lication does.**
2af90 20 6e 6f 74 20 77 61 6e 74 20 74 68 65 20 75 73   not want the us
2afa0 65 72 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f  er to be able to
2afb0 20 6d 61 6b 65 20 61 72 62 69 74 72 61 72 79 20   make arbitrary 
2afc0 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 0a 2a  changes to the.*
2afd0 2a 20 64 61 74 61 62 61 73 65 2e 20 20 41 6e 20  * database.  An 
2afe0 61 75 74 68 6f 72 69 7a 65 72 20 63 6f 75 6c 64  authorizer could
2aff0 20 74 68 65 6e 20 62 65 20 70 75 74 20 69 6e 20   then be put in 
2b000 70 6c 61 63 65 20 77 68 69 6c 65 20 74 68 65 0a  place while the.
2b010 2a 2a 20 75 73 65 72 2d 65 6e 74 65 72 65 64 20  ** user-entered 
2b020 53 51 4c 20 69 73 20 62 65 69 6e 67 20 5b 73 71  SQL is being [sq
2b030 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20 7c 20  lite3_prepare | 
2b040 70 72 65 70 61 72 65 64 5d 20 74 68 61 74 0a 2a  prepared] that.*
2b050 2a 20 64 69 73 61 6c 6c 6f 77 73 20 65 76 65 72  * disallows ever
2b060 79 74 68 69 6e 67 20 65 78 63 65 70 74 20 5b 53  ything except [S
2b070 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
2b080 73 2e 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69 63 61  s..**.** Applica
2b090 74 69 6f 6e 73 20 74 68 61 74 20 6e 65 65 64 20  tions that need 
2b0a0 74 6f 20 70 72 6f 63 65 73 73 20 53 51 4c 20 66  to process SQL f
2b0b0 72 6f 6d 20 75 6e 74 72 75 73 74 65 64 20 73 6f  rom untrusted so
2b0c0 75 72 63 65 73 0a 2a 2a 20 6d 69 67 68 74 20 61  urces.** might a
2b0d0 6c 73 6f 20 63 6f 6e 73 69 64 65 72 20 6c 6f 77  lso consider low
2b0e0 65 72 69 6e 67 20 72 65 73 6f 75 72 63 65 20 6c  ering resource l
2b0f0 69 6d 69 74 73 20 75 73 69 6e 67 20 5b 73 71 6c  imits using [sql
2b100 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 0a 2a 2a  ite3_limit()].**
2b110 20 61 6e 64 20 6c 69 6d 69 74 69 6e 67 20 64 61   and limiting da
2b120 74 61 62 61 73 65 20 73 69 7a 65 20 75 73 69 6e  tabase size usin
2b130 67 20 74 68 65 20 5b 6d 61 78 5f 70 61 67 65 5f  g the [max_page_
2b140 63 6f 75 6e 74 5d 20 5b 50 52 41 47 4d 41 5d 0a  count] [PRAGMA].
2b150 2a 2a 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74  ** in addition t
2b160 6f 20 75 73 69 6e 67 20 61 6e 20 61 75 74 68 6f  o using an autho
2b170 72 69 7a 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 28 4f  rizer..**.** ^(O
2b180 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 75 74  nly a single aut
2b190 68 6f 72 69 7a 65 72 20 63 61 6e 20 62 65 20 69  horizer can be i
2b1a0 6e 20 70 6c 61 63 65 20 6f 6e 20 61 20 64 61 74  n place on a dat
2b1b0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2b1c0 0a 2a 2a 20 61 74 20 61 20 74 69 6d 65 2e 20 20  .** at a time.  
2b1d0 45 61 63 68 20 63 61 6c 6c 20 74 6f 20 73 71 6c  Each call to sql
2b1e0 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69  ite3_set_authori
2b1f0 7a 65 72 20 6f 76 65 72 72 69 64 65 73 20 74 68  zer overrides th
2b200 65 0a 2a 2a 20 70 72 65 76 69 6f 75 73 20 63 61  e.** previous ca
2b210 6c 6c 2e 29 5e 20 20 5e 44 69 73 61 62 6c 65 20  ll.)^  ^Disable 
2b220 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 62  the authorizer b
2b230 79 20 69 6e 73 74 61 6c 6c 69 6e 67 20 61 20 4e  y installing a N
2b240 55 4c 4c 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a  ULL callback..**
2b250 20 54 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20   The authorizer 
2b260 69 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64  is disabled by d
2b270 65 66 61 75 6c 74 2e 0a 2a 2a 0a 2a 2a 20 54 68  efault..**.** Th
2b280 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  e authorizer cal
2b290 6c 62 61 63 6b 20 6d 75 73 74 20 6e 6f 74 20 64  lback must not d
2b2a0 6f 20 61 6e 79 74 68 69 6e 67 20 74 68 61 74 20  o anything that 
2b2b0 77 69 6c 6c 20 6d 6f 64 69 66 79 0a 2a 2a 20 74  will modify.** t
2b2c0 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
2b2d0 65 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 76 6f  ection that invo
2b2e0 6b 65 64 20 74 68 65 20 61 75 74 68 6f 72 69 7a  ked the authoriz
2b2f0 65 72 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20  er callback..** 
2b300 4e 6f 74 65 20 74 68 61 74 20 5b 73 71 6c 69 74  Note that [sqlit
2b310 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d  e3_prepare_v2()]
2b320 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 73 74   and [sqlite3_st
2b330 65 70 28 29 5d 20 62 6f 74 68 20 6d 6f 64 69 66  ep()] both modif
2b340 79 20 74 68 65 69 72 0a 2a 2a 20 64 61 74 61 62  y their.** datab
2b350 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  ase connections 
2b360 66 6f 72 20 74 68 65 20 6d 65 61 6e 69 6e 67 20  for the meaning 
2b370 6f 66 20 22 6d 6f 64 69 66 79 22 20 69 6e 20 74  of "modify" in t
2b380 68 69 73 20 70 61 72 61 67 72 61 70 68 2e 0a 2a  his paragraph..*
2b390 2a 0a 2a 2a 20 5e 57 68 65 6e 20 5b 73 71 6c 69  *.** ^When [sqli
2b3a0 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
2b3b0 5d 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 65  ] is used to pre
2b3c0 70 61 72 65 20 61 20 73 74 61 74 65 6d 65 6e 74  pare a statement
2b3d0 2c 20 74 68 65 0a 2a 2a 20 73 74 61 74 65 6d 65  , the.** stateme
2b3e0 6e 74 20 6d 69 67 68 74 20 62 65 20 72 65 2d 70  nt might be re-p
2b3f0 72 65 70 61 72 65 64 20 64 75 72 69 6e 67 20 5b  repared during [
2b400 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20  sqlite3_step()] 
2b410 64 75 65 20 74 6f 20 61 20 0a 2a 2a 20 73 63 68  due to a .** sch
2b420 65 6d 61 20 63 68 61 6e 67 65 2e 20 20 48 65 6e  ema change.  Hen
2b430 63 65 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74  ce, the applicat
2b440 69 6f 6e 20 73 68 6f 75 6c 64 20 65 6e 73 75 72  ion should ensur
2b450 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 63 6f  e that the.** co
2b460 72 72 65 63 74 20 61 75 74 68 6f 72 69 7a 65 72  rrect authorizer
2b470 20 63 61 6c 6c 62 61 63 6b 20 72 65 6d 61 69 6e   callback remain
2b480 73 20 69 6e 20 70 6c 61 63 65 20 64 75 72 69 6e  s in place durin
2b490 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  g the [sqlite3_s
2b4a0 74 65 70 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 4e  tep()]..**.** ^N
2b4b0 6f 74 65 20 74 68 61 74 20 74 68 65 20 61 75 74  ote that the aut
2b4c0 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b  horizer callback
2b4d0 20 69 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 6c 79   is invoked only
2b4e0 20 64 75 72 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69   during.** [sqli
2b4f0 74 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20 6f  te3_prepare()] o
2b500 72 20 69 74 73 20 76 61 72 69 61 6e 74 73 2e 20  r its variants. 
2b510 20 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 69   Authorization i
2b520 73 20 6e 6f 74 0a 2a 2a 20 70 65 72 66 6f 72 6d  s not.** perform
2b530 65 64 20 64 75 72 69 6e 67 20 73 74 61 74 65 6d  ed during statem
2b540 65 6e 74 20 65 76 61 6c 75 61 74 69 6f 6e 20 69  ent evaluation i
2b550 6e 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  n [sqlite3_step(
2b560 29 5d 2c 20 75 6e 6c 65 73 73 0a 2a 2a 20 61 73  )], unless.** as
2b570 20 73 74 61 74 65 64 20 69 6e 20 74 68 65 20 70   stated in the p
2b580 72 65 76 69 6f 75 73 20 70 61 72 61 67 72 61 70  revious paragrap
2b590 68 2c 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  h, sqlite3_step(
2b5a0 29 20 69 6e 76 6f 6b 65 73 0a 2a 2a 20 73 71 6c  ) invokes.** sql
2b5b0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
2b5c0 29 20 74 6f 20 72 65 70 72 65 70 61 72 65 20 61  ) to reprepare a
2b5d0 20 73 74 61 74 65 6d 65 6e 74 20 61 66 74 65 72   statement after
2b5e0 20 61 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65   a schema change
2b5f0 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
2b600 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 65 74 5f  int sqlite3_set_
2b610 61 75 74 68 6f 72 69 7a 65 72 28 0a 20 20 73 71  authorizer(.  sq
2b620 6c 69 74 65 33 2a 2c 0a 20 20 69 6e 74 20 28 2a  lite3*,.  int (*
2b630 78 41 75 74 68 29 28 76 6f 69 64 2a 2c 69 6e 74  xAuth)(void*,int
2b640 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e  ,const char*,con
2b650 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63  st char*,const c
2b660 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a  har*,const char*
2b670 29 2c 0a 20 20 76 6f 69 64 20 2a 70 55 73 65 72  ),.  void *pUser
2b680 44 61 74 61 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  Data.);../*.** C
2b690 41 50 49 33 52 45 46 3a 20 41 75 74 68 6f 72 69  API3REF: Authori
2b6a0 7a 65 72 20 52 65 74 75 72 6e 20 43 6f 64 65 73  zer Return Codes
2b6b0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69  .**.** The [sqli
2b6c0 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a  te3_set_authoriz
2b6d0 65 72 20 7c 20 61 75 74 68 6f 72 69 7a 65 72 20  er | authorizer 
2b6e0 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
2b6f0 6e 5d 20 6d 75 73 74 0a 2a 2a 20 72 65 74 75 72  n] must.** retur
2b700 6e 20 65 69 74 68 65 72 20 5b 53 51 4c 49 54 45  n either [SQLITE
2b710 5f 4f 4b 5d 20 6f 72 20 6f 6e 65 20 6f 66 20 74  _OK] or one of t
2b720 68 65 73 65 20 74 77 6f 20 63 6f 6e 73 74 61 6e  hese two constan
2b730 74 73 20 69 6e 20 6f 72 64 65 72 0a 2a 2a 20 74  ts in order.** t
2b740 6f 20 73 69 67 6e 61 6c 20 53 51 4c 69 74 65 20  o signal SQLite 
2b750 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74  whether or not t
2b760 68 65 20 61 63 74 69 6f 6e 20 69 73 20 70 65 72  he action is per
2b770 6d 69 74 74 65 64 2e 20 20 53 65 65 20 74 68 65  mitted.  See the
2b780 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  .** [sqlite3_set
2b790 5f 61 75 74 68 6f 72 69 7a 65 72 20 7c 20 61 75  _authorizer | au
2b7a0 74 68 6f 72 69 7a 65 72 20 64 6f 63 75 6d 65 6e  thorizer documen
2b7b0 74 61 74 69 6f 6e 5d 20 66 6f 72 20 61 64 64 69  tation] for addi
2b7c0 74 69 6f 6e 61 6c 0a 2a 2a 20 69 6e 66 6f 72 6d  tional.** inform
2b7d0 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74  ation..**.** Not
2b7e0 65 20 74 68 61 74 20 53 51 4c 49 54 45 5f 49 47  e that SQLITE_IG
2b7f0 4e 4f 52 45 20 69 73 20 61 6c 73 6f 20 75 73 65  NORE is also use
2b800 64 20 61 73 20 61 20 5b 63 6f 6e 66 6c 69 63 74  d as a [conflict
2b810 20 72 65 73 6f 6c 75 74 69 6f 6e 20 6d 6f 64 65   resolution mode
2b820 5d 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 66 72  ].** returned fr
2b830 6f 6d 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  om the [sqlite3_
2b840 76 74 61 62 5f 6f 6e 5f 63 6f 6e 66 6c 69 63 74  vtab_on_conflict
2b850 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a  ()] interface..*
2b860 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2b870 5f 44 45 4e 59 20 20 20 31 20 20 20 2f 2a 20 41  _DENY   1   /* A
2b880 62 6f 72 74 20 74 68 65 20 53 51 4c 20 73 74 61  bort the SQL sta
2b890 74 65 6d 65 6e 74 20 77 69 74 68 20 61 6e 20 65  tement with an e
2b8a0 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rror */.#define 
2b8b0 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 20 32 20  SQLITE_IGNORE 2 
2b8c0 20 20 2f 2a 20 44 6f 6e 27 74 20 61 6c 6c 6f 77    /* Don't allow
2b8d0 20 61 63 63 65 73 73 2c 20 62 75 74 20 64 6f 6e   access, but don
2b8e0 27 74 20 67 65 6e 65 72 61 74 65 20 61 6e 20 65  't generate an e
2b8f0 72 72 6f 72 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43  rror */../*.** C
2b900 41 50 49 33 52 45 46 3a 20 41 75 74 68 6f 72 69  API3REF: Authori
2b910 7a 65 72 20 41 63 74 69 6f 6e 20 43 6f 64 65 73  zer Action Codes
2b920 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69  .**.** The [sqli
2b930 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a  te3_set_authoriz
2b940 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  er()] interface 
2b950 72 65 67 69 73 74 65 72 73 20 61 20 63 61 6c 6c  registers a call
2b960 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a  back function.**
2b970 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64   that is invoked
2b980 20 74 6f 20 61 75 74 68 6f 72 69 7a 65 20 63 65   to authorize ce
2b990 72 74 61 69 6e 20 53 51 4c 20 73 74 61 74 65 6d  rtain SQL statem
2b9a0 65 6e 74 20 61 63 74 69 6f 6e 73 2e 20 20 54 68  ent actions.  Th
2b9b0 65 0a 2a 2a 20 73 65 63 6f 6e 64 20 70 61 72 61  e.** second para
2b9c0 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63 61 6c  meter to the cal
2b9d0 6c 62 61 63 6b 20 69 73 20 61 6e 20 69 6e 74 65  lback is an inte
2b9e0 67 65 72 20 63 6f 64 65 20 74 68 61 74 20 73 70  ger code that sp
2b9f0 65 63 69 66 69 65 73 0a 2a 2a 20 77 68 61 74 20  ecifies.** what 
2ba00 61 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20  action is being 
2ba10 61 75 74 68 6f 72 69 7a 65 64 2e 20 20 54 68 65  authorized.  The
2ba20 73 65 20 61 72 65 20 74 68 65 20 69 6e 74 65 67  se are the integ
2ba30 65 72 20 61 63 74 69 6f 6e 20 63 6f 64 65 73 20  er action codes 
2ba40 74 68 61 74 0a 2a 2a 20 74 68 65 20 61 75 74 68  that.** the auth
2ba50 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20  orizer callback 
2ba60 6d 61 79 20 62 65 20 70 61 73 73 65 64 2e 0a 2a  may be passed..*
2ba70 2a 0a 2a 2a 20 54 68 65 73 65 20 61 63 74 69 6f  *.** These actio
2ba80 6e 20 63 6f 64 65 20 76 61 6c 75 65 73 20 73 69  n code values si
2ba90 67 6e 69 66 79 20 77 68 61 74 20 6b 69 6e 64 20  gnify what kind 
2baa0 6f 66 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20  of operation is 
2bab0 74 6f 20 62 65 0a 2a 2a 20 61 75 74 68 6f 72 69  to be.** authori
2bac0 7a 65 64 2e 20 20 54 68 65 20 33 72 64 20 61 6e  zed.  The 3rd an
2bad0 64 20 34 74 68 20 70 61 72 61 6d 65 74 65 72 73  d 4th parameters
2bae0 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a   to the authoriz
2baf0 61 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 62 61 63  ation.** callbac
2bb00 6b 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20  k function will 
2bb10 62 65 20 70 61 72 61 6d 65 74 65 72 73 20 6f 72  be parameters or
2bb20 20 4e 55 4c 4c 20 64 65 70 65 6e 64 69 6e 67 20   NULL depending 
2bb30 6f 6e 20 77 68 69 63 68 20 6f 66 20 74 68 65 73  on which of thes
2bb40 65 0a 2a 2a 20 63 6f 64 65 73 20 69 73 20 75 73  e.** codes is us
2bb50 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64  ed as the second
2bb60 20 70 61 72 61 6d 65 74 65 72 2e 20 20 5e 28 54   parameter.  ^(T
2bb70 68 65 20 35 74 68 20 70 61 72 61 6d 65 74 65 72  he 5th parameter
2bb80 20 74 6f 20 74 68 65 0a 2a 2a 20 61 75 74 68 6f   to the.** autho
2bb90 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69  rizer callback i
2bba0 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
2bbb0 65 20 64 61 74 61 62 61 73 65 20 28 22 6d 61 69  e database ("mai
2bbc0 6e 22 2c 20 22 74 65 6d 70 22 2c 0a 2a 2a 20 65  n", "temp",.** e
2bbd0 74 63 2e 29 20 69 66 20 61 70 70 6c 69 63 61 62  tc.) if applicab
2bbe0 6c 65 2e 29 5e 20 20 5e 54 68 65 20 36 74 68 20  le.)^  ^The 6th 
2bbf0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
2bc00 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
2bc10 62 61 63 6b 0a 2a 2a 20 69 73 20 74 68 65 20 6e  back.** is the n
2bc20 61 6d 65 20 6f 66 20 74 68 65 20 69 6e 6e 65 72  ame of the inner
2bc30 2d 6d 6f 73 74 20 74 72 69 67 67 65 72 20 6f 72  -most trigger or
2bc40 20 76 69 65 77 20 74 68 61 74 20 69 73 20 72 65   view that is re
2bc50 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 0a 2a 2a  sponsible for.**
2bc60 20 74 68 65 20 61 63 63 65 73 73 20 61 74 74 65   the access atte
2bc70 6d 70 74 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74  mpt or NULL if t
2bc80 68 69 73 20 61 63 63 65 73 73 20 61 74 74 65 6d  his access attem
2bc90 70 74 20 69 73 20 64 69 72 65 63 74 6c 79 20 66  pt is directly f
2bca0 72 6f 6d 0a 2a 2a 20 74 6f 70 2d 6c 65 76 65 6c  rom.** top-level
2bcb0 20 53 51 4c 20 63 6f 64 65 2e 0a 2a 2f 0a 2f 2a   SQL code..*/./*
2bcc0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2bcd0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2bce0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 33 72 64 20 2a  ********** 3rd *
2bcf0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 34 74 68 20  *********** 4th 
2bd00 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 23 64 65  ***********/.#de
2bd10 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41  fine SQLITE_CREA
2bd20 54 45 5f 49 4e 44 45 58 20 20 20 20 20 20 20 20  TE_INDEX        
2bd30 20 20 31 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e    1   /* Index N
2bd40 61 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e  ame      Table N
2bd50 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  ame      */.#def
2bd60 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
2bd70 45 5f 54 41 42 4c 45 20 20 20 20 20 20 20 20 20  E_TABLE         
2bd80 20 32 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61   2   /* Table Na
2bd90 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  me      NULL    
2bda0 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
2bdb0 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
2bdc0 5f 54 45 4d 50 5f 49 4e 44 45 58 20 20 20 20 20  _TEMP_INDEX     
2bdd0 33 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d  3   /* Index Nam
2bde0 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d  e      Table Nam
2bdf0 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  e      */.#defin
2be00 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
2be10 54 45 4d 50 5f 54 41 42 4c 45 20 20 20 20 20 34  TEMP_TABLE     4
2be20 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
2be30 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
2be40 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2be50 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54   SQLITE_CREATE_T
2be60 45 4d 50 5f 54 52 49 47 47 45 52 20 20 20 35 20  EMP_TRIGGER   5 
2be70 20 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d    /* Trigger Nam
2be80 65 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20  e    Table Name 
2be90 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2bea0 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45  SQLITE_CREATE_TE
2beb0 4d 50 5f 56 49 45 57 20 20 20 20 20 20 36 20 20  MP_VIEW      6  
2bec0 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20   /* View Name   
2bed0 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2bee0 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2bef0 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 52 49  QLITE_CREATE_TRI
2bf00 47 47 45 52 20 20 20 20 20 20 20 20 37 20 20 20  GGER        7   
2bf10 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20  /* Trigger Name 
2bf20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
2bf30 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2bf40 4c 49 54 45 5f 43 52 45 41 54 45 5f 56 49 45 57  LITE_CREATE_VIEW
2bf50 20 20 20 20 20 20 20 20 20 20 20 38 20 20 20 2f             8   /
2bf60 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20  * View Name     
2bf70 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
2bf80 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2bf90 49 54 45 5f 44 45 4c 45 54 45 20 20 20 20 20 20  ITE_DELETE      
2bfa0 20 20 20 20 20 20 20 20 20 20 39 20 20 20 2f 2a            9   /*
2bfb0 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2bfc0 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
2bfd0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2bfe0 54 45 5f 44 52 4f 50 5f 49 4e 44 45 58 20 20 20  TE_DROP_INDEX   
2bff0 20 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20          10   /* 
2c000 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20  Index Name      
2c010 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
2c020 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2c030 45 5f 44 52 4f 50 5f 54 41 42 4c 45 20 20 20 20  E_DROP_TABLE    
2c040 20 20 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54         11   /* T
2c050 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e  able Name      N
2c060 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
2c070 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2c080 5f 44 52 4f 50 5f 54 45 4d 50 5f 49 4e 44 45 58  _DROP_TEMP_INDEX
2c090 20 20 20 20 20 20 31 32 20 20 20 2f 2a 20 49 6e        12   /* In
2c0a0 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61  dex Name      Ta
2c0b0 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
2c0c0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2c0d0 44 52 4f 50 5f 54 45 4d 50 5f 54 41 42 4c 45 20  DROP_TEMP_TABLE 
2c0e0 20 20 20 20 20 31 33 20 20 20 2f 2a 20 54 61 62       13   /* Tab
2c0f0 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
2c100 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
2c110 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
2c120 52 4f 50 5f 54 45 4d 50 5f 54 52 49 47 47 45 52  ROP_TEMP_TRIGGER
2c130 20 20 20 20 31 34 20 20 20 2f 2a 20 54 72 69 67      14   /* Trig
2c140 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c  ger Name    Tabl
2c150 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23  e Name      */.#
2c160 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
2c170 4f 50 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20  OP_TEMP_VIEW    
2c180 20 20 20 31 35 20 20 20 2f 2a 20 56 69 65 77 20     15   /* View 
2c190 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20  Name       NULL 
2c1a0 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
2c1b0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
2c1c0 50 5f 54 52 49 47 47 45 52 20 20 20 20 20 20 20  P_TRIGGER       
2c1d0 20 20 31 36 20 20 20 2f 2a 20 54 72 69 67 67 65    16   /* Trigge
2c1e0 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20  r Name    Table 
2c1f0 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65  Name      */.#de
2c200 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50  fine SQLITE_DROP
2c210 5f 56 49 45 57 20 20 20 20 20 20 20 20 20 20 20  _VIEW           
2c220 20 31 37 20 20 20 2f 2a 20 56 69 65 77 20 4e 61   17   /* View Na
2c230 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  me       NULL   
2c240 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
2c250 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 53 45 52  ine SQLITE_INSER
2c260 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  T               
2c270 31 38 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61  18   /* Table Na
2c280 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  me      NULL    
2c290 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
2c2a0 6e 65 20 53 51 4c 49 54 45 5f 50 52 41 47 4d 41  ne SQLITE_PRAGMA
2c2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31                 1
2c2c0 39 20 20 20 2f 2a 20 50 72 61 67 6d 61 20 4e 61  9   /* Pragma Na
2c2d0 6d 65 20 20 20 20 20 31 73 74 20 61 72 67 20 6f  me     1st arg o
2c2e0 72 20 4e 55 4c 4c 20 2a 2f 0a 23 64 65 66 69 6e  r NULL */.#defin
2c2f0 65 20 53 51 4c 49 54 45 5f 52 45 41 44 20 20 20  e SQLITE_READ   
2c300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 30                20
2c310 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
2c320 20 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d        Column Nam
2c330 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65  e     */.#define
2c340 20 53 51 4c 49 54 45 5f 53 45 4c 45 43 54 20 20   SQLITE_SELECT  
2c350 20 20 20 20 20 20 20 20 20 20 20 20 20 32 31 20               21 
2c360 20 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20    /* NULL       
2c370 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
2c380 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2c390 53 51 4c 49 54 45 5f 54 52 41 4e 53 41 43 54 49  SQLITE_TRANSACTI
2c3a0 4f 4e 20 20 20 20 20 20 20 20 20 20 32 32 20 20  ON          22  
2c3b0 20 2f 2a 20 4f 70 65 72 61 74 69 6f 6e 20 20 20   /* Operation   
2c3c0 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2c3d0 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2c3e0 51 4c 49 54 45 5f 55 50 44 41 54 45 20 20 20 20  QLITE_UPDATE    
2c3f0 20 20 20 20 20 20 20 20 20 20 20 32 33 20 20 20             23   
2c400 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20  /* Table Name   
2c410 20 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20 20     Column Name  
2c420 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2c430 4c 49 54 45 5f 41 54 54 41 43 48 20 20 20 20 20  LITE_ATTACH     
2c440 20 20 20 20 20 20 20 20 20 20 32 34 20 20 20 2f            24   /
2c450 2a 20 46 69 6c 65 6e 61 6d 65 20 20 20 20 20 20  * Filename      
2c460 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
2c470 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2c480 49 54 45 5f 44 45 54 41 43 48 20 20 20 20 20 20  ITE_DETACH      
2c490 20 20 20 20 20 20 20 20 20 32 35 20 20 20 2f 2a           25   /*
2c4a0 20 44 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20   Database Name  
2c4b0 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
2c4c0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2c4d0 54 45 5f 41 4c 54 45 52 5f 54 41 42 4c 45 20 20  TE_ALTER_TABLE  
2c4e0 20 20 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20          26   /* 
2c4f0 44 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20  Database Name   
2c500 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
2c510 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2c520 45 5f 52 45 49 4e 44 45 58 20 20 20 20 20 20 20  E_REINDEX       
2c530 20 20 20 20 20 20 20 32 37 20 20 20 2f 2a 20 49         27   /* I
2c540 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 4e  ndex Name      N
2c550 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
2c560 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2c570 5f 41 4e 41 4c 59 5a 45 20 20 20 20 20 20 20 20  _ANALYZE        
2c580 20 20 20 20 20 20 32 38 20 20 20 2f 2a 20 54 61        28   /* Ta
2c590 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55  ble Name      NU
2c5a0 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
2c5b0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2c5c0 43 52 45 41 54 45 5f 56 54 41 42 4c 45 20 20 20  CREATE_VTABLE   
2c5d0 20 20 20 20 20 32 39 20 20 20 2f 2a 20 54 61 62       29   /* Tab
2c5e0 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64  le Name      Mod
2c5f0 75 6c 65 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a  ule Name     */.
2c600 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
2c610 52 4f 50 5f 56 54 41 42 4c 45 20 20 20 20 20 20  ROP_VTABLE      
2c620 20 20 20 20 33 30 20 20 20 2f 2a 20 54 61 62 6c      30   /* Tabl
2c630 65 20 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64 75  e Name      Modu
2c640 6c 65 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23  le Name     */.#
2c650 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 55  define SQLITE_FU
2c660 4e 43 54 49 4f 4e 20 20 20 20 20 20 20 20 20 20  NCTION          
2c670 20 20 20 33 31 20 20 20 2f 2a 20 4e 55 4c 4c 20     31   /* NULL 
2c680 20 20 20 20 20 20 20 20 20 20 20 46 75 6e 63 74             Funct
2c690 69 6f 6e 20 4e 61 6d 65 20 20 20 2a 2f 0a 23 64  ion Name   */.#d
2c6a0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 41 56  efine SQLITE_SAV
2c6b0 45 50 4f 49 4e 54 20 20 20 20 20 20 20 20 20 20  EPOINT          
2c6c0 20 20 33 32 20 20 20 2f 2a 20 4f 70 65 72 61 74    32   /* Operat
2c6d0 69 6f 6e 20 20 20 20 20 20 20 53 61 76 65 70 6f  ion       Savepo
2c6e0 69 6e 74 20 4e 61 6d 65 20 20 2a 2f 0a 23 64 65  int Name  */.#de
2c6f0 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 50 59  fine SQLITE_COPY
2c700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c710 20 20 30 20 20 20 2f 2a 20 4e 6f 20 6c 6f 6e 67    0   /* No long
2c720 65 72 20 75 73 65 64 20 2a 2f 0a 23 64 65 66 69  er used */.#defi
2c730 6e 65 20 53 51 4c 49 54 45 5f 52 45 43 55 52 53  ne SQLITE_RECURS
2c740 49 56 45 20 20 20 20 20 20 20 20 20 20 20 20 33  IVE            3
2c750 33 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20  3   /* NULL     
2c760 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
2c770 20 20 20 20 20 20 20 2a 2f 0a 0a 2f 2a 0a 2a 2a         */../*.**
2c780 20 43 41 50 49 33 52 45 46 3a 20 54 72 61 63 69   CAPI3REF: Traci
2c790 6e 67 20 41 6e 64 20 50 72 6f 66 69 6c 69 6e 67  ng And Profiling
2c7a0 20 46 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 4d 45   Functions.** ME
2c7b0 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  THOD: sqlite3.**
2c7c0 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e  .** These routin
2c7d0 65 73 20 61 72 65 20 64 65 70 72 65 63 61 74 65  es are deprecate
2c7e0 64 2e 20 55 73 65 20 74 68 65 20 5b 73 71 6c 69  d. Use the [sqli
2c7f0 74 65 33 5f 74 72 61 63 65 5f 76 32 28 29 5d 20  te3_trace_v2()] 
2c800 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69 6e 73  interface.** ins
2c810 74 65 61 64 20 6f 66 20 74 68 65 20 72 6f 75 74  tead of the rout
2c820 69 6e 65 73 20 64 65 73 63 72 69 62 65 64 20 68  ines described h
2c830 65 72 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  ere..**.** These
2c840 20 72 6f 75 74 69 6e 65 73 20 72 65 67 69 73 74   routines regist
2c850 65 72 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  er callback func
2c860 74 69 6f 6e 73 20 74 68 61 74 20 63 61 6e 20 62  tions that can b
2c870 65 20 75 73 65 64 20 66 6f 72 0a 2a 2a 20 74 72  e used for.** tr
2c880 61 63 69 6e 67 20 61 6e 64 20 70 72 6f 66 69 6c  acing and profil
2c890 69 6e 67 20 74 68 65 20 65 78 65 63 75 74 69 6f  ing the executio
2c8a0 6e 20 6f 66 20 53 51 4c 20 73 74 61 74 65 6d 65  n of SQL stateme
2c8b0 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  nts..**.** ^The 
2c8c0 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
2c8d0 6e 20 72 65 67 69 73 74 65 72 65 64 20 62 79 20  n registered by 
2c8e0 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20  sqlite3_trace() 
2c8f0 69 73 20 69 6e 76 6f 6b 65 64 20 61 74 0a 2a 2a  is invoked at.**
2c900 20 76 61 72 69 6f 75 73 20 74 69 6d 65 73 20 77   various times w
2c910 68 65 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65  hen an SQL state
2c920 6d 65 6e 74 20 69 73 20 62 65 69 6e 67 20 72 75  ment is being ru
2c930 6e 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 73 74  n by [sqlite3_st
2c940 65 70 28 29 5d 2e 0a 2a 2a 20 5e 54 68 65 20 73  ep()]..** ^The s
2c950 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20 63  qlite3_trace() c
2c960 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
2c970 65 64 20 77 69 74 68 20 61 20 55 54 46 2d 38 20  ed with a UTF-8 
2c980 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65  rendering of the
2c990 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  .** SQL statemen
2c9a0 74 20 74 65 78 74 20 61 73 20 74 68 65 20 73 74  t text as the st
2c9b0 61 74 65 6d 65 6e 74 20 66 69 72 73 74 20 62 65  atement first be
2c9c0 67 69 6e 73 20 65 78 65 63 75 74 69 6e 67 2e 0a  gins executing..
2c9d0 2a 2a 20 5e 28 41 64 64 69 74 69 6f 6e 61 6c 20  ** ^(Additional 
2c9e0 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20  sqlite3_trace() 
2c9f0 63 61 6c 6c 62 61 63 6b 73 20 6d 69 67 68 74 20  callbacks might 
2ca00 6f 63 63 75 72 0a 2a 2a 20 61 73 20 65 61 63 68  occur.** as each
2ca10 20 74 72 69 67 67 65 72 65 64 20 73 75 62 70 72   triggered subpr
2ca20 6f 67 72 61 6d 20 69 73 20 65 6e 74 65 72 65 64  ogram is entered
2ca30 2e 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 73  .  The callbacks
2ca40 20 66 6f 72 20 74 72 69 67 67 65 72 73 0a 2a 2a   for triggers.**
2ca50 20 63 6f 6e 74 61 69 6e 20 61 20 55 54 46 2d 38   contain a UTF-8
2ca60 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 20 74 68 61   SQL comment tha
2ca70 74 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65  t identifies the
2ca80 20 74 72 69 67 67 65 72 2e 29 5e 0a 2a 2a 0a 2a   trigger.)^.**.*
2ca90 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 54 52  * The [SQLITE_TR
2caa0 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d 20  ACE_SIZE_LIMIT] 
2cab0 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
2cac0 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20  ion can be used 
2cad0 74 6f 20 6c 69 6d 69 74 0a 2a 2a 20 74 68 65 20  to limit.** the 
2cae0 6c 65 6e 67 74 68 20 6f 66 20 5b 62 6f 75 6e 64  length of [bound
2caf0 20 70 61 72 61 6d 65 74 65 72 5d 20 65 78 70 61   parameter] expa
2cb00 6e 73 69 6f 6e 20 69 6e 20 74 68 65 20 6f 75 74  nsion in the out
2cb10 70 75 74 20 6f 66 20 73 71 6c 69 74 65 33 5f 74  put of sqlite3_t
2cb20 72 61 63 65 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54  race()..**.** ^T
2cb30 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
2cb40 74 69 6f 6e 20 72 65 67 69 73 74 65 72 65 64 20  tion registered 
2cb50 62 79 20 73 71 6c 69 74 65 33 5f 70 72 6f 66 69  by sqlite3_profi
2cb60 6c 65 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a  le() is invoked.
2cb70 2a 2a 20 61 73 20 65 61 63 68 20 53 51 4c 20 73  ** as each SQL s
2cb80 74 61 74 65 6d 65 6e 74 20 66 69 6e 69 73 68 65  tatement finishe
2cb90 73 2e 20 20 5e 54 68 65 20 70 72 6f 66 69 6c 65  s.  ^The profile
2cba0 20 63 61 6c 6c 62 61 63 6b 20 63 6f 6e 74 61 69   callback contai
2cbb0 6e 73 0a 2a 2a 20 74 68 65 20 6f 72 69 67 69 6e  ns.** the origin
2cbc0 61 6c 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78  al statement tex
2cbd0 74 20 61 6e 64 20 61 6e 20 65 73 74 69 6d 61 74  t and an estimat
2cbe0 65 20 6f 66 20 77 61 6c 6c 2d 63 6c 6f 63 6b 20  e of wall-clock 
2cbf0 74 69 6d 65 0a 2a 2a 20 6f 66 20 68 6f 77 20 6c  time.** of how l
2cc00 6f 6e 67 20 74 68 61 74 20 73 74 61 74 65 6d 65  ong that stateme
2cc10 6e 74 20 74 6f 6f 6b 20 74 6f 20 72 75 6e 2e 20  nt took to run. 
2cc20 20 5e 54 68 65 20 70 72 6f 66 69 6c 65 20 63 61   ^The profile ca
2cc30 6c 6c 62 61 63 6b 0a 2a 2a 20 74 69 6d 65 20 69  llback.** time i
2cc40 73 20 69 6e 20 75 6e 69 74 73 20 6f 66 20 6e 61  s in units of na
2cc50 6e 6f 73 65 63 6f 6e 64 73 2c 20 68 6f 77 65 76  noseconds, howev
2cc60 65 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 69  er the current i
2cc70 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 2a 2a  mplementation.**
2cc80 20 69 73 20 6f 6e 6c 79 20 63 61 70 61 62 6c 65   is only capable
2cc90 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 20   of millisecond 
2cca0 72 65 73 6f 6c 75 74 69 6f 6e 20 73 6f 20 74 68  resolution so th
2ccb0 65 20 73 69 78 20 6c 65 61 73 74 20 73 69 67 6e  e six least sign
2ccc0 69 66 69 63 61 6e 74 0a 2a 2a 20 64 69 67 69 74  ificant.** digit
2ccd0 73 20 69 6e 20 74 68 65 20 74 69 6d 65 20 61 72  s in the time ar
2cce0 65 20 6d 65 61 6e 69 6e 67 6c 65 73 73 2e 20 20  e meaningless.  
2ccf0 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
2cd00 6f 66 20 53 51 4c 69 74 65 0a 2a 2a 20 6d 69 67  of SQLite.** mig
2cd10 68 74 20 70 72 6f 76 69 64 65 20 67 72 65 61 74  ht provide great
2cd20 65 72 20 72 65 73 6f 6c 75 74 69 6f 6e 20 6f 6e  er resolution on
2cd30 20 74 68 65 20 70 72 6f 66 69 6c 65 72 20 63 61   the profiler ca
2cd40 6c 6c 62 61 63 6b 2e 20 20 49 6e 76 6f 6b 69 6e  llback.  Invokin
2cd50 67 0a 2a 2a 20 65 69 74 68 65 72 20 5b 73 71 6c  g.** either [sql
2cd60 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20 6f 72  ite3_trace()] or
2cd70 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f   [sqlite3_trace_
2cd80 76 32 28 29 5d 20 77 69 6c 6c 20 63 61 6e 63 65  v2()] will cance
2cd90 6c 20 74 68 65 0a 2a 2a 20 70 72 6f 66 69 6c 65  l the.** profile
2cda0 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2f 0a 53 51   callback..*/.SQ
2cdb0 4c 49 54 45 5f 41 50 49 20 53 51 4c 49 54 45 5f  LITE_API SQLITE_
2cdc0 44 45 50 52 45 43 41 54 45 44 20 76 6f 69 64 20  DEPRECATED void 
2cdd0 2a 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 73  *sqlite3_trace(s
2cde0 71 6c 69 74 65 33 2a 2c 0a 20 20 20 76 6f 69 64  qlite3*,.   void
2cdf0 28 2a 78 54 72 61 63 65 29 28 76 6f 69 64 2a 2c  (*xTrace)(void*,
2ce00 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c 20 76 6f  const char*), vo
2ce10 69 64 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  id*);.SQLITE_API
2ce20 20 53 51 4c 49 54 45 5f 44 45 50 52 45 43 41 54   SQLITE_DEPRECAT
2ce30 45 44 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33  ED void *sqlite3
2ce40 5f 70 72 6f 66 69 6c 65 28 73 71 6c 69 74 65 33  _profile(sqlite3
2ce50 2a 2c 0a 20 20 20 76 6f 69 64 28 2a 78 50 72 6f  *,.   void(*xPro
2ce60 66 69 6c 65 29 28 76 6f 69 64 2a 2c 63 6f 6e 73  file)(void*,cons
2ce70 74 20 63 68 61 72 2a 2c 73 71 6c 69 74 65 33 5f  t char*,sqlite3_
2ce80 75 69 6e 74 36 34 29 2c 20 76 6f 69 64 2a 29 3b  uint64), void*);
2ce90 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
2cea0 3a 20 53 51 4c 20 54 72 61 63 65 20 45 76 65 6e  : SQL Trace Even
2ceb0 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45 59 57 4f  t Codes.** KEYWO
2cec0 52 44 53 3a 20 53 51 4c 49 54 45 5f 54 52 41 43  RDS: SQLITE_TRAC
2ced0 45 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f  E.**.** These co
2cee0 6e 73 74 61 6e 74 73 20 69 64 65 6e 74 69 66 79  nstants identify
2cef0 20 63 6c 61 73 73 65 73 20 6f 66 20 65 76 65 6e   classes of even
2cf00 74 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 6d  ts that can be m
2cf10 6f 6e 69 74 6f 72 65 64 0a 2a 2a 20 75 73 69 6e  onitored.** usin
2cf20 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74  g the [sqlite3_t
2cf30 72 61 63 65 5f 76 32 28 29 5d 20 74 72 61 63 69  race_v2()] traci
2cf40 6e 67 20 6c 6f 67 69 63 2e 20 20 54 68 65 20 4d  ng logic.  The M
2cf50 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 74 6f 20   argument.** to 
2cf60 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76  [sqlite3_trace_v
2cf70 32 28 44 2c 4d 2c 58 2c 50 29 5d 20 69 73 20 61  2(D,M,X,P)] is a
2cf80 6e 20 4f 52 2d 65 64 20 63 6f 6d 62 69 6e 61 74  n OR-ed combinat
2cf90 69 6f 6e 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f  ion of one or mo
2cfa0 72 65 20 6f 66 0a 2a 2a 20 74 68 65 20 66 6f 6c  re of.** the fol
2cfb0 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73  lowing constants
2cfc0 2e 20 20 5e 54 68 65 20 66 69 72 73 74 20 61 72  .  ^The first ar
2cfd0 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 74 72  gument to the tr
2cfe0 61 63 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20  ace callback.** 
2cff0 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  is one of the fo
2d000 6c 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61 6e 74  llowing constant
2d010 73 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 74 72 61  s..**.** New tra
2d020 63 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 20 6d  cing constants m
2d030 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 66  ay be added in f
2d040 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 2e 0a  uture releases..
2d050 2a 2a 0a 2a 2a 20 5e 41 20 74 72 61 63 65 20 63  **.** ^A trace c
2d060 61 6c 6c 62 61 63 6b 20 68 61 73 20 66 6f 75 72  allback has four
2d070 20 61 72 67 75 6d 65 6e 74 73 3a 20 78 43 61 6c   arguments: xCal
2d080 6c 62 61 63 6b 28 54 2c 43 2c 50 2c 58 29 2e 0a  lback(T,C,P,X)..
2d090 2a 2a 20 5e 54 68 65 20 54 20 61 72 67 75 6d 65  ** ^The T argume
2d0a0 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65  nt is one of the
2d0b0 20 69 6e 74 65 67 65 72 20 74 79 70 65 20 63 6f   integer type co
2d0c0 64 65 73 20 61 62 6f 76 65 2e 0a 2a 2a 20 5e 54  des above..** ^T
2d0d0 68 65 20 43 20 61 72 67 75 6d 65 6e 74 20 69 73  he C argument is
2d0e0 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 63   a copy of the c
2d0f0 6f 6e 74 65 78 74 20 70 6f 69 6e 74 65 72 20 70  ontext pointer p
2d100 61 73 73 65 64 20 69 6e 20 61 73 20 74 68 65 0a  assed in as the.
2d110 2a 2a 20 66 6f 75 72 74 68 20 61 72 67 75 6d 65  ** fourth argume
2d120 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 74  nt to [sqlite3_t
2d130 72 61 63 65 5f 76 32 28 29 5d 2e 0a 2a 2a 20 54  race_v2()]..** T
2d140 68 65 20 50 20 61 6e 64 20 58 20 61 72 67 75 6d  he P and X argum
2d150 65 6e 74 73 20 61 72 65 20 70 6f 69 6e 74 65 72  ents are pointer
2d160 73 20 77 68 6f 73 65 20 6d 65 61 6e 69 6e 67 73  s whose meanings
2d170 20 64 65 70 65 6e 64 20 6f 6e 20 54 2e 0a 2a 2a   depend on T..**
2d180 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51  .** <dl>.** [[SQ
2d190 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d 54 5d  LITE_TRACE_STMT]
2d1a0 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52 41  ] <dt>SQLITE_TRA
2d1b0 43 45 5f 53 54 4d 54 3c 2f 64 74 3e 0a 2a 2a 20  CE_STMT</dt>.** 
2d1c0 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54  <dd>^An SQLITE_T
2d1d0 52 41 43 45 5f 53 54 4d 54 20 63 61 6c 6c 62 61  RACE_STMT callba
2d1e0 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68  ck is invoked wh
2d1f0 65 6e 20 61 20 70 72 65 70 61 72 65 64 20 73 74  en a prepared st
2d200 61 74 65 6d 65 6e 74 0a 2a 2a 20 66 69 72 73 74  atement.** first
2d210 20 62 65 67 69 6e 73 20 72 75 6e 6e 69 6e 67 20   begins running 
2d220 61 6e 64 20 70 6f 73 73 69 62 6c 79 20 61 74 20  and possibly at 
2d230 6f 74 68 65 72 20 74 69 6d 65 73 20 64 75 72 69  other times duri
2d240 6e 67 20 74 68 65 0a 2a 2a 20 65 78 65 63 75 74  ng the.** execut
2d250 69 6f 6e 20 6f 66 20 74 68 65 20 70 72 65 70 61  ion of the prepa
2d260 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2c 20 73  red statement, s
2d270 75 63 68 20 61 73 20 61 74 20 74 68 65 20 73 74  uch as at the st
2d280 61 72 74 20 6f 66 20 65 61 63 68 0a 2a 2a 20 74  art of each.** t
2d290 72 69 67 67 65 72 20 73 75 62 70 72 6f 67 72 61  rigger subprogra
2d2a0 6d 2e 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65  m. ^The P argume
2d2b0 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  nt is a pointer 
2d2c0 74 6f 20 74 68 65 0a 2a 2a 20 5b 70 72 65 70 61  to the.** [prepa
2d2d0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e 20  red statement]. 
2d2e0 5e 54 68 65 20 58 20 61 72 67 75 6d 65 6e 74 20  ^The X argument 
2d2f0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
2d300 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 0a 2a  a string which.*
2d310 2a 20 69 73 20 74 68 65 20 75 6e 65 78 70 61 6e  * is the unexpan
2d320 64 65 64 20 53 51 4c 20 74 65 78 74 20 6f 66 20  ded SQL text of 
2d330 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
2d340 74 65 6d 65 6e 74 20 6f 72 20 61 6e 20 53 51 4c  tement or an SQL
2d350 20 63 6f 6d 6d 65 6e 74 20 0a 2a 2a 20 74 68 61   comment .** tha
2d360 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20  t indicates the 
2d370 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20 61 20  invocation of a 
2d380 74 72 69 67 67 65 72 2e 20 20 5e 54 68 65 20 63  trigger.  ^The c
2d390 61 6c 6c 62 61 63 6b 20 63 61 6e 20 63 6f 6d 70  allback can comp
2d3a0 75 74 65 0a 2a 2a 20 74 68 65 20 73 61 6d 65 20  ute.** the same 
2d3b0 74 65 78 74 20 74 68 61 74 20 77 6f 75 6c 64 20  text that would 
2d3c0 68 61 76 65 20 62 65 65 6e 20 72 65 74 75 72 6e  have been return
2d3d0 65 64 20 62 79 20 74 68 65 20 6c 65 67 61 63 79  ed by the legacy
2d3e0 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28   [sqlite3_trace(
2d3f0 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20  )].** interface 
2d400 62 79 20 75 73 69 6e 67 20 74 68 65 20 58 20 61  by using the X a
2d410 72 67 75 6d 65 6e 74 20 77 68 65 6e 20 58 20 62  rgument when X b
2d420 65 67 69 6e 73 20 77 69 74 68 20 22 2d 2d 22 20  egins with "--" 
2d430 61 6e 64 20 69 6e 76 6f 6b 69 6e 67 0a 2a 2a 20  and invoking.** 
2d440 5b 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65  [sqlite3_expande
2d450 64 5f 73 71 6c 28 50 29 5d 20 6f 74 68 65 72 77  d_sql(P)] otherw
2d460 69 73 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  ise..**.** [[SQL
2d470 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c  ITE_TRACE_PROFIL
2d480 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54  E]] <dt>SQLITE_T
2d490 52 41 43 45 5f 50 52 4f 46 49 4c 45 3c 2f 64 74  RACE_PROFILE</dt
2d4a0 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53 51 4c  >.** <dd>^An SQL
2d4b0 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c  ITE_TRACE_PROFIL
2d4c0 45 20 63 61 6c 6c 62 61 63 6b 20 70 72 6f 76 69  E callback provi
2d4d0 64 65 73 20 61 70 70 72 6f 78 69 6d 61 74 65 6c  des approximatel
2d4e0 79 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20 69 6e  y the same.** in
2d4f0 66 6f 72 6d 61 74 69 6f 6e 20 61 73 20 69 73 20  formation as is 
2d500 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
2d510 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65  [sqlite3_profile
2d520 28 29 5d 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a  ()] callback..**
2d530 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74   ^The P argument
2d540 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
2d550 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20 73   the [prepared s
2d560 74 61 74 65 6d 65 6e 74 5d 20 61 6e 64 20 74 68  tatement] and th
2d570 65 0a 2a 2a 20 58 20 61 72 67 75 6d 65 6e 74 20  e.** X argument 
2d580 70 6f 69 6e 74 73 20 74 6f 20 61 20 36 34 2d 62  points to a 64-b
2d590 69 74 20 69 6e 74 65 67 65 72 20 77 68 69 63 68  it integer which
2d5a0 20 69 73 20 74 68 65 20 65 73 74 69 6d 61 74 65   is the estimate
2d5b0 64 20 6f 66 0a 2a 2a 20 74 68 65 20 6e 75 6d 62  d of.** the numb
2d5c0 65 72 20 6f 66 20 6e 61 6e 6f 73 65 63 6f 6e 64  er of nanosecond
2d5d0 20 74 68 61 74 20 74 68 65 20 70 72 65 70 61 72   that the prepar
2d5e0 65 64 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 6f  ed statement too
2d5f0 6b 20 74 6f 20 72 75 6e 2e 0a 2a 2a 20 5e 54 68  k to run..** ^Th
2d600 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 50  e SQLITE_TRACE_P
2d610 52 4f 46 49 4c 45 20 63 61 6c 6c 62 61 63 6b 20  ROFILE callback 
2d620 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20  is invoked when 
2d630 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 66 69  the statement fi
2d640 6e 69 73 68 65 73 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  nishes..**.** [[
2d650 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f 57  SQLITE_TRACE_ROW
2d660 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52  ]] <dt>SQLITE_TR
2d670 41 43 45 5f 52 4f 57 3c 2f 64 74 3e 0a 2a 2a 20  ACE_ROW</dt>.** 
2d680 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54  <dd>^An SQLITE_T
2d690 52 41 43 45 5f 52 4f 57 20 63 61 6c 6c 62 61 63  RACE_ROW callbac
2d6a0 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65  k is invoked whe
2d6b0 6e 65 76 65 72 20 61 20 70 72 65 70 61 72 65 64  never a prepared
2d6c0 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 67 65  .** statement ge
2d6d0 6e 65 72 61 74 65 73 20 61 20 73 69 6e 67 6c 65  nerates a single
2d6e0 20 72 6f 77 20 6f 66 20 72 65 73 75 6c 74 2e 20   row of result. 
2d6f0 20 0a 2a 2a 20 5e 54 68 65 20 50 20 61 72 67 75   .** ^The P argu
2d700 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65  ment is a pointe
2d710 72 20 74 6f 20 74 68 65 20 5b 70 72 65 70 61 72  r to the [prepar
2d720 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 61 6e  ed statement] an
2d730 64 20 74 68 65 0a 2a 2a 20 58 20 61 72 67 75 6d  d the.** X argum
2d740 65 6e 74 20 69 73 20 75 6e 75 73 65 64 2e 0a 2a  ent is unused..*
2d750 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54 52  *.** [[SQLITE_TR
2d760 41 43 45 5f 43 4c 4f 53 45 5d 5d 20 3c 64 74 3e  ACE_CLOSE]] <dt>
2d770 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f  SQLITE_TRACE_CLO
2d780 53 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e  SE</dt>.** <dd>^
2d790 41 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f  An SQLITE_TRACE_
2d7a0 43 4c 4f 53 45 20 63 61 6c 6c 62 61 63 6b 20 69  CLOSE callback i
2d7b0 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61  s invoked when a
2d7c0 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e   database.** con
2d7d0 6e 65 63 74 69 6f 6e 20 63 6c 6f 73 65 73 2e 0a  nection closes..
2d7e0 2a 2a 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65  ** ^The P argume
2d7f0 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  nt is a pointer 
2d800 74 6f 20 74 68 65 20 5b 64 61 74 61 62 61 73 65  to the [database
2d810 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 62 6a   connection] obj
2d820 65 63 74 0a 2a 2a 20 61 6e 64 20 74 68 65 20 58  ect.** and the X
2d830 20 61 72 67 75 6d 65 6e 74 20 69 73 20 75 6e 75   argument is unu
2d840 73 65 64 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f  sed..** </dl>.*/
2d850 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2d860 54 52 41 43 45 5f 53 54 4d 54 20 20 20 20 20 20  TRACE_STMT      
2d870 20 30 78 30 31 0a 23 64 65 66 69 6e 65 20 53 51   0x01.#define SQ
2d880 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49  LITE_TRACE_PROFI
2d890 4c 45 20 20 20 20 30 78 30 32 0a 23 64 65 66 69  LE    0x02.#defi
2d8a0 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f  ne SQLITE_TRACE_
2d8b0 52 4f 57 20 20 20 20 20 20 20 20 30 78 30 34 0a  ROW        0x04.
2d8c0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54  #define SQLITE_T
2d8d0 52 41 43 45 5f 43 4c 4f 53 45 20 20 20 20 20 20  RACE_CLOSE      
2d8e0 30 78 30 38 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  0x08../*.** CAPI
2d8f0 33 52 45 46 3a 20 53 51 4c 20 54 72 61 63 65 20  3REF: SQL Trace 
2d900 48 6f 6f 6b 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  Hook.** METHOD: 
2d910 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54  sqlite3.**.** ^T
2d920 68 65 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  he sqlite3_trace
2d930 5f 76 32 28 44 2c 4d 2c 58 2c 50 29 20 69 6e 74  _v2(D,M,X,P) int
2d940 65 72 66 61 63 65 20 72 65 67 69 73 74 65 72 73  erface registers
2d950 20 61 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63   a trace callbac
2d960 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 58 20  k.** function X 
2d970 61 67 61 69 6e 73 74 20 5b 64 61 74 61 62 61 73  against [databas
2d980 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 2c  e connection] D,
2d990 20 75 73 69 6e 67 20 70 72 6f 70 65 72 74 79 20   using property 
2d9a0 6d 61 73 6b 20 4d 0a 2a 2a 20 61 6e 64 20 63 6f  mask M.** and co
2d9b0 6e 74 65 78 74 20 70 6f 69 6e 74 65 72 20 50 2e  ntext pointer P.
2d9c0 20 20 5e 49 66 20 74 68 65 20 58 20 63 61 6c 6c    ^If the X call
2d9d0 62 61 63 6b 20 69 73 0a 2a 2a 20 4e 55 4c 4c 20  back is.** NULL 
2d9e0 6f 72 20 69 66 20 74 68 65 20 4d 20 6d 61 73 6b  or if the M mask
2d9f0 20 69 73 20 7a 65 72 6f 2c 20 74 68 65 6e 20 74   is zero, then t
2da00 72 61 63 69 6e 67 20 69 73 20 64 69 73 61 62 6c  racing is disabl
2da10 65 64 2e 20 20 54 68 65 0a 2a 2a 20 4d 20 61 72  ed.  The.** M ar
2da20 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62 65  gument should be
2da30 20 74 68 65 20 62 69 74 77 69 73 65 20 4f 52 2d   the bitwise OR-
2da40 65 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f  ed combination o
2da50 66 0a 2a 2a 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  f.** zero or mor
2da60 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5d  e [SQLITE_TRACE]
2da70 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 2a 2a 0a 2a   constants..**.*
2da80 2a 20 5e 45 61 63 68 20 63 61 6c 6c 20 74 6f 20  * ^Each call to 
2da90 65 69 74 68 65 72 20 73 71 6c 69 74 65 33 5f 74  either sqlite3_t
2daa0 72 61 63 65 28 29 20 6f 72 20 73 71 6c 69 74 65  race() or sqlite
2dab0 33 5f 74 72 61 63 65 5f 76 32 28 29 20 6f 76 65  3_trace_v2() ove
2dac0 72 72 69 64 65 73 20 0a 2a 2a 20 28 63 61 6e 63  rrides .** (canc
2dad0 65 6c 73 29 20 61 6e 79 20 70 72 69 6f 72 20 63  els) any prior c
2dae0 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f  alls to sqlite3_
2daf0 74 72 61 63 65 28 29 20 6f 72 20 73 71 6c 69 74  trace() or sqlit
2db00 65 33 5f 74 72 61 63 65 5f 76 32 28 29 2e 0a 2a  e3_trace_v2()..*
2db10 2a 0a 2a 2a 20 5e 54 68 65 20 58 20 63 61 6c 6c  *.** ^The X call
2db20 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
2db30 77 68 65 6e 65 76 65 72 20 61 6e 79 20 6f 66 20  whenever any of 
2db40 74 68 65 20 65 76 65 6e 74 73 20 69 64 65 6e 74  the events ident
2db50 69 66 69 65 64 20 62 79 20 0a 2a 2a 20 6d 61 73  ified by .** mas
2db60 6b 20 4d 20 6f 63 63 75 72 2e 20 20 5e 54 68 65  k M occur.  ^The
2db70 20 69 6e 74 65 67 65 72 20 72 65 74 75 72 6e 20   integer return 
2db80 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 63  value from the c
2db90 61 6c 6c 62 61 63 6b 20 69 73 20 63 75 72 72 65  allback is curre
2dba0 6e 74 6c 79 0a 2a 2a 20 69 67 6e 6f 72 65 64 2c  ntly.** ignored,
2dbb0 20 74 68 6f 75 67 68 20 74 68 69 73 20 6d 61 79   though this may
2dbc0 20 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75 72   change in futur
2dbd0 65 20 72 65 6c 65 61 73 65 73 2e 20 20 43 61 6c  e releases.  Cal
2dbe0 6c 62 61 63 6b 0a 2a 2a 20 69 6d 70 6c 65 6d 65  lback.** impleme
2dbf0 6e 74 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ntations should 
2dc00 72 65 74 75 72 6e 20 7a 65 72 6f 20 74 6f 20 65  return zero to e
2dc10 6e 73 75 72 65 20 66 75 74 75 72 65 20 63 6f 6d  nsure future com
2dc20 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 0a 2a  patibility..**.*
2dc30 2a 20 5e 41 20 74 72 61 63 65 20 63 61 6c 6c 62  * ^A trace callb
2dc40 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77  ack is invoked w
2dc50 69 74 68 20 66 6f 75 72 20 61 72 67 75 6d 65 6e  ith four argumen
2dc60 74 73 3a 20 63 61 6c 6c 62 61 63 6b 28 54 2c 43  ts: callback(T,C
2dc70 2c 50 2c 58 29 2e 0a 2a 2a 20 5e 54 68 65 20 54  ,P,X)..** ^The T
2dc80 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6e 65   argument is one
2dc90 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   of the [SQLITE_
2dca0 54 52 41 43 45 5d 0a 2a 2a 20 63 6f 6e 73 74 61  TRACE].** consta
2dcb0 6e 74 73 20 74 6f 20 69 6e 64 69 63 61 74 65 20  nts to indicate 
2dcc0 77 68 79 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  why the callback
2dcd0 20 77 61 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a   was invoked..**
2dce0 20 5e 54 68 65 20 43 20 61 72 67 75 6d 65 6e 74   ^The C argument
2dcf0 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68   is a copy of th
2dd00 65 20 63 6f 6e 74 65 78 74 20 70 6f 69 6e 74 65  e context pointe
2dd10 72 2e 0a 2a 2a 20 54 68 65 20 50 20 61 6e 64 20  r..** The P and 
2dd20 58 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  X arguments are 
2dd30 70 6f 69 6e 74 65 72 73 20 77 68 6f 73 65 20 6d  pointers whose m
2dd40 65 61 6e 69 6e 67 73 20 64 65 70 65 6e 64 20 6f  eanings depend o
2dd50 6e 20 54 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  n T..**.** The s
2dd60 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28  qlite3_trace_v2(
2dd70 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 69  ) interface is i
2dd80 6e 74 65 6e 64 65 64 20 74 6f 20 72 65 70 6c 61  ntended to repla
2dd90 63 65 20 74 68 65 20 6c 65 67 61 63 79 0a 2a 2a  ce the legacy.**
2dda0 20 69 6e 74 65 72 66 61 63 65 73 20 5b 73 71 6c   interfaces [sql
2ddb0 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20 61 6e  ite3_trace()] an
2ddc0 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69  d [sqlite3_profi
2ddd0 6c 65 28 29 5d 2c 20 62 6f 74 68 20 6f 66 20 77  le()], both of w
2dde0 68 69 63 68 0a 2a 2a 20 61 72 65 20 64 65 70 72  hich.** are depr
2ddf0 65 63 61 74 65 64 2e 0a 2a 2f 0a 53 51 4c 49 54  ecated..*/.SQLIT
2de00 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
2de10 33 5f 74 72 61 63 65 5f 76 32 28 0a 20 20 73 71  3_trace_v2(.  sq
2de20 6c 69 74 65 33 2a 2c 0a 20 20 75 6e 73 69 67 6e  lite3*,.  unsign
2de30 65 64 20 75 4d 61 73 6b 2c 0a 20 20 69 6e 74 28  ed uMask,.  int(
2de40 2a 78 43 61 6c 6c 62 61 63 6b 29 28 75 6e 73 69  *xCallback)(unsi
2de50 67 6e 65 64 2c 76 6f 69 64 2a 2c 76 6f 69 64 2a  gned,void*,void*
2de60 2c 76 6f 69 64 2a 29 2c 0a 20 20 76 6f 69 64 20  ,void*),.  void 
2de70 2a 70 43 74 78 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  *pCtx.);../*.** 
2de80 43 41 50 49 33 52 45 46 3a 20 51 75 65 72 79 20  CAPI3REF: Query 
2de90 50 72 6f 67 72 65 73 73 20 43 61 6c 6c 62 61 63  Progress Callbac
2dea0 6b 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  ks.** METHOD: sq
2deb0 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  lite3.**.** ^The
2dec0 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73   sqlite3_progres
2ded0 73 5f 68 61 6e 64 6c 65 72 28 44 2c 4e 2c 58 2c  s_handler(D,N,X,
2dee0 50 29 20 69 6e 74 65 72 66 61 63 65 20 63 61 75  P) interface cau
2def0 73 65 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  ses the callback
2df00 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 58 20 74  .** function X t
2df10 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20 70 65 72  o be invoked per
2df20 69 6f 64 69 63 61 6c 6c 79 20 64 75 72 69 6e 67  iodically during
2df30 20 6c 6f 6e 67 20 72 75 6e 6e 69 6e 67 20 63 61   long running ca
2df40 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74  lls to.** [sqlit
2df50 65 33 5f 65 78 65 63 28 29 5d 2c 20 5b 73 71 6c  e3_exec()], [sql
2df60 69 74 65 33 5f 73 74 65 70 28 29 5d 20 61 6e 64  ite3_step()] and
2df70 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61   [sqlite3_get_ta
2df80 62 6c 65 28 29 5d 20 66 6f 72 0a 2a 2a 20 64 61  ble()] for.** da
2df90 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2dfa0 6e 20 44 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65  n D.  An example
2dfb0 20 75 73 65 20 66 6f 72 20 74 68 69 73 0a 2a 2a   use for this.**
2dfc0 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 74 6f   interface is to
2dfd0 20 6b 65 65 70 20 61 20 47 55 49 20 75 70 64 61   keep a GUI upda
2dfe0 74 65 64 20 64 75 72 69 6e 67 20 61 20 6c 61 72  ted during a lar
2dff0 67 65 20 71 75 65 72 79 2e 0a 2a 2a 0a 2a 2a 20  ge query..**.** 
2e000 5e 54 68 65 20 70 61 72 61 6d 65 74 65 72 20 50  ^The parameter P
2e010 20 69 73 20 70 61 73 73 65 64 20 74 68 72 6f 75   is passed throu
2e020 67 68 20 61 73 20 74 68 65 20 6f 6e 6c 79 20 70  gh as the only p
2e030 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
2e040 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  .** callback fun
2e050 63 74 69 6f 6e 20 58 2e 20 20 5e 54 68 65 20 70  ction X.  ^The p
2e060 61 72 61 6d 65 74 65 72 20 4e 20 69 73 20 74 68  arameter N is th
2e070 65 20 61 70 70 72 6f 78 69 6d 61 74 65 20 6e 75  e approximate nu
2e080 6d 62 65 72 20 6f 66 20 0a 2a 2a 20 5b 76 69 72  mber of .** [vir
2e090 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73  tual machine ins
2e0a0 74 72 75 63 74 69 6f 6e 73 5d 20 74 68 61 74 20  tructions] that 
2e0b0 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 62 65  are evaluated be
2e0c0 74 77 65 65 6e 20 73 75 63 63 65 73 73 69 76 65  tween successive
2e0d0 0a 2a 2a 20 69 6e 76 6f 63 61 74 69 6f 6e 73 20  .** invocations 
2e0e0 6f 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  of the callback 
2e0f0 58 2e 20 20 5e 49 66 20 4e 20 69 73 20 6c 65 73  X.  ^If N is les
2e100 73 20 74 68 61 6e 20 6f 6e 65 20 74 68 65 6e 20  s than one then 
2e110 74 68 65 20 70 72 6f 67 72 65 73 73 0a 2a 2a 20  the progress.** 
2e120 68 61 6e 64 6c 65 72 20 69 73 20 64 69 73 61 62  handler is disab
2e130 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c 79  led..**.** ^Only
2e140 20 61 20 73 69 6e 67 6c 65 20 70 72 6f 67 72 65   a single progre
2e150 73 73 20 68 61 6e 64 6c 65 72 20 6d 61 79 20 62  ss handler may b
2e160 65 20 64 65 66 69 6e 65 64 20 61 74 20 6f 6e 65  e defined at one
2e170 20 74 69 6d 65 20 70 65 72 0a 2a 2a 20 5b 64 61   time per.** [da
2e180 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2e190 6e 5d 3b 20 73 65 74 74 69 6e 67 20 61 20 6e 65  n]; setting a ne
2e1a0 77 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c  w progress handl
2e1b0 65 72 20 63 61 6e 63 65 6c 73 20 74 68 65 0a 2a  er cancels the.*
2e1c0 2a 20 6f 6c 64 20 6f 6e 65 2e 20 20 5e 53 65 74  * old one.  ^Set
2e1d0 74 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 58  ting parameter X
2e1e0 20 74 6f 20 4e 55 4c 4c 20 64 69 73 61 62 6c 65   to NULL disable
2e1f0 73 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 68  s the progress h
2e200 61 6e 64 6c 65 72 2e 0a 2a 2a 20 5e 54 68 65 20  andler..** ^The 
2e210 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72  progress handler
2e220 20 69 73 20 61 6c 73 6f 20 64 69 73 61 62 6c 65   is also disable
2e230 64 20 62 79 20 73 65 74 74 69 6e 67 20 4e 20 74  d by setting N t
2e240 6f 20 61 20 76 61 6c 75 65 20 6c 65 73 73 0a 2a  o a value less.*
2e250 2a 20 74 68 61 6e 20 31 2e 0a 2a 2a 0a 2a 2a 20  * than 1..**.** 
2e260 5e 49 66 20 74 68 65 20 70 72 6f 67 72 65 73 73  ^If the progress
2e270 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e   callback return
2e280 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 20  s non-zero, the 
2e290 6f 70 65 72 61 74 69 6f 6e 20 69 73 0a 2a 2a 20  operation is.** 
2e2a0 69 6e 74 65 72 72 75 70 74 65 64 2e 20 20 54 68  interrupted.  Th
2e2b0 69 73 20 66 65 61 74 75 72 65 20 63 61 6e 20 62  is feature can b
2e2c0 65 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d  e used to implem
2e2d0 65 6e 74 20 61 0a 2a 2a 20 22 43 61 6e 63 65 6c  ent a.** "Cancel
2e2e0 22 20 62 75 74 74 6f 6e 20 6f 6e 20 61 20 47 55  " button on a GU
2e2f0 49 20 70 72 6f 67 72 65 73 73 20 64 69 61 6c 6f  I progress dialo
2e300 67 20 62 6f 78 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  g box..**.** The
2e310 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65   progress handle
2e320 72 20 63 61 6c 6c 62 61 63 6b 20 6d 75 73 74 20  r callback must 
2e330 6e 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e 67 20  not do anything 
2e340 74 68 61 74 20 77 69 6c 6c 20 6d 6f 64 69 66 79  that will modify
2e350 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61 73 65  .** the database
2e360 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74   connection that
2e370 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 70 72 6f   invoked the pro
2e380 67 72 65 73 73 20 68 61 6e 64 6c 65 72 2e 0a 2a  gress handler..*
2e390 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b 73 71 6c  * Note that [sql
2e3a0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
2e3b0 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
2e3c0 73 74 65 70 28 29 5d 20 62 6f 74 68 20 6d 6f 64  step()] both mod
2e3d0 69 66 79 20 74 68 65 69 72 0a 2a 2a 20 64 61 74  ify their.** dat
2e3e0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2e3f0 73 20 66 6f 72 20 74 68 65 20 6d 65 61 6e 69 6e  s for the meanin
2e400 67 20 6f 66 20 22 6d 6f 64 69 66 79 22 20 69 6e  g of "modify" in
2e410 20 74 68 69 73 20 70 61 72 61 67 72 61 70 68 2e   this paragraph.
2e420 0a 2a 2a 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  .**.*/.SQLITE_AP
2e430 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70  I void sqlite3_p
2e440 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28  rogress_handler(
2e450 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 2c 20 69  sqlite3*, int, i
2e460 6e 74 28 2a 29 28 76 6f 69 64 2a 29 2c 20 76 6f  nt(*)(void*), vo
2e470 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  id*);../*.** CAP
2e480 49 33 52 45 46 3a 20 4f 70 65 6e 69 6e 67 20 41  I3REF: Opening A
2e490 20 4e 65 77 20 44 61 74 61 62 61 73 65 20 43 6f   New Database Co
2e4a0 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 43 4f 4e 53  nnection.** CONS
2e4b0 54 52 55 43 54 4f 52 3a 20 73 71 6c 69 74 65 33  TRUCTOR: sqlite3
2e4c0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20 72 6f  .**.** ^These ro
2e4d0 75 74 69 6e 65 73 20 6f 70 65 6e 20 61 6e 20 53  utines open an S
2e4e0 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 66  QLite database f
2e4f0 69 6c 65 20 61 73 20 73 70 65 63 69 66 69 65 64  ile as specified
2e500 20 62 79 20 74 68 65 20 0a 2a 2a 20 66 69 6c 65   by the .** file
2e510 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 2e 20 5e  name argument. ^
2e520 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 61 72 67  The filename arg
2e530 75 6d 65 6e 74 20 69 73 20 69 6e 74 65 72 70 72  ument is interpr
2e540 65 74 65 64 20 61 73 20 55 54 46 2d 38 20 66 6f  eted as UTF-8 fo
2e550 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65  r.** sqlite3_ope
2e560 6e 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  n() and sqlite3_
2e570 6f 70 65 6e 5f 76 32 28 29 20 61 6e 64 20 61 73  open_v2() and as
2e580 20 55 54 46 2d 31 36 20 69 6e 20 74 68 65 20 6e   UTF-16 in the n
2e590 61 74 69 76 65 20 62 79 74 65 0a 2a 2a 20 6f 72  ative byte.** or
2e5a0 64 65 72 20 66 6f 72 20 73 71 6c 69 74 65 33 5f  der for sqlite3_
2e5b0 6f 70 65 6e 31 36 28 29 2e 20 5e 28 41 20 5b 64  open16(). ^(A [d
2e5c0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2e5d0 6f 6e 5d 20 68 61 6e 64 6c 65 20 69 73 20 75 73  on] handle is us
2e5e0 75 61 6c 6c 79 0a 2a 2a 20 72 65 74 75 72 6e 65  ually.** returne
2e5f0 64 20 69 6e 20 2a 70 70 44 62 2c 20 65 76 65 6e  d in *ppDb, even
2e600 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63   if an error occ
2e610 75 72 73 2e 20 20 54 68 65 20 6f 6e 6c 79 20 65  urs.  The only e
2e620 78 63 65 70 74 69 6f 6e 20 69 73 20 74 68 61 74  xception is that
2e630 0a 2a 2a 20 69 66 20 53 51 4c 69 74 65 20 69 73  .** if SQLite is
2e640 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63   unable to alloc
2e650 61 74 65 20 6d 65 6d 6f 72 79 20 74 6f 20 68 6f  ate memory to ho
2e660 6c 64 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5d  ld the [sqlite3]
2e670 20 6f 62 6a 65 63 74 2c 0a 2a 2a 20 61 20 4e 55   object,.** a NU
2e680 4c 4c 20 77 69 6c 6c 20 62 65 20 77 72 69 74 74  LL will be writt
2e690 65 6e 20 69 6e 74 6f 20 2a 70 70 44 62 20 69 6e  en into *ppDb in
2e6a0 73 74 65 61 64 20 6f 66 20 61 20 70 6f 69 6e 74  stead of a point
2e6b0 65 72 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74  er to the [sqlit
2e6c0 65 33 5d 0a 2a 2a 20 6f 62 6a 65 63 74 2e 29 5e  e3].** object.)^
2e6d0 20 5e 28 49 66 20 74 68 65 20 64 61 74 61 62 61   ^(If the databa
2e6e0 73 65 20 69 73 20 6f 70 65 6e 65 64 20 28 61 6e  se is opened (an
2e6f0 64 2f 6f 72 20 63 72 65 61 74 65 64 29 20 73 75  d/or created) su
2e700 63 63 65 73 73 66 75 6c 6c 79 2c 20 74 68 65 6e  ccessfully, then
2e710 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  .** [SQLITE_OK] 
2e720 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 4f 74  is returned.  Ot
2e730 68 65 72 77 69 73 65 20 61 6e 20 5b 65 72 72 6f  herwise an [erro
2e740 72 20 63 6f 64 65 5d 20 69 73 20 72 65 74 75 72  r code] is retur
2e750 6e 65 64 2e 29 5e 20 5e 54 68 65 0a 2a 2a 20 5b  ned.)^ ^The.** [
2e760 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29  sqlite3_errmsg()
2e770 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 65 72  ] or [sqlite3_er
2e780 72 6d 73 67 31 36 28 29 5d 20 72 6f 75 74 69 6e  rmsg16()] routin
2e790 65 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  es can be used t
2e7a0 6f 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 6e 20 45  o obtain.** an E
2e7b0 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 20  nglish language 
2e7c0 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
2e7d0 68 65 20 65 72 72 6f 72 20 66 6f 6c 6c 6f 77 69  he error followi
2e7e0 6e 67 20 61 20 66 61 69 6c 75 72 65 20 6f 66 20  ng a failure of 
2e7f0 61 6e 79 0a 2a 2a 20 6f 66 20 74 68 65 20 73 71  any.** of the sq
2e800 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 72 6f 75  lite3_open() rou
2e810 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  tines..**.** ^Th
2e820 65 20 64 65 66 61 75 6c 74 20 65 6e 63 6f 64 69  e default encodi
2e830 6e 67 20 77 69 6c 6c 20 62 65 20 55 54 46 2d 38  ng will be UTF-8
2e840 20 66 6f 72 20 64 61 74 61 62 61 73 65 73 20 63   for databases c
2e850 72 65 61 74 65 64 20 75 73 69 6e 67 0a 2a 2a 20  reated using.** 
2e860 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 6f  sqlite3_open() o
2e870 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
2e880 32 28 29 2e 20 20 5e 54 68 65 20 64 65 66 61 75  2().  ^The defau
2e890 6c 74 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 20  lt encoding for 
2e8a0 64 61 74 61 62 61 73 65 73 0a 2a 2a 20 63 72 65  databases.** cre
2e8b0 61 74 65 64 20 75 73 69 6e 67 20 73 71 6c 69 74  ated using sqlit
2e8c0 65 33 5f 6f 70 65 6e 31 36 28 29 20 77 69 6c 6c  e3_open16() will
2e8d0 20 62 65 20 55 54 46 2d 31 36 20 69 6e 20 74 68   be UTF-16 in th
2e8e0 65 20 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72  e native byte or
2e8f0 64 65 72 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 74 68  der..**.** Wheth
2e900 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 65 72 72  er or not an err
2e910 6f 72 20 6f 63 63 75 72 73 20 77 68 65 6e 20 69  or occurs when i
2e920 74 20 69 73 20 6f 70 65 6e 65 64 2c 20 72 65 73  t is opened, res
2e930 6f 75 72 63 65 73 0a 2a 2a 20 61 73 73 6f 63 69  ources.** associ
2e940 61 74 65 64 20 77 69 74 68 20 74 68 65 20 5b 64  ated with the [d
2e950 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2e960 6f 6e 5d 20 68 61 6e 64 6c 65 20 73 68 6f 75 6c  on] handle shoul
2e970 64 20 62 65 20 72 65 6c 65 61 73 65 64 20 62 79  d be released by
2e980 0a 2a 2a 20 70 61 73 73 69 6e 67 20 69 74 20 74  .** passing it t
2e990 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  o [sqlite3_close
2e9a0 28 29 5d 20 77 68 65 6e 20 69 74 20 69 73 20 6e  ()] when it is n
2e9b0 6f 20 6c 6f 6e 67 65 72 20 72 65 71 75 69 72 65  o longer require
2e9c0 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  d..**.** The sql
2e9d0 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69  ite3_open_v2() i
2e9e0 6e 74 65 72 66 61 63 65 20 77 6f 72 6b 73 20 6c  nterface works l
2e9f0 69 6b 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ike sqlite3_open
2ea00 28 29 0a 2a 2a 20 65 78 63 65 70 74 20 74 68 61  ().** except tha
2ea10 74 20 69 74 20 61 63 63 65 70 74 73 20 74 77 6f  t it accepts two
2ea20 20 61 64 64 69 74 69 6f 6e 61 6c 20 70 61 72 61   additional para
2ea30 6d 65 74 65 72 73 20 66 6f 72 20 61 64 64 69 74  meters for addit
2ea40 69 6f 6e 61 6c 20 63 6f 6e 74 72 6f 6c 0a 2a 2a  ional control.**
2ea50 20 6f 76 65 72 20 74 68 65 20 6e 65 77 20 64 61   over the new da
2ea60 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2ea70 6e 2e 20 20 5e 28 54 68 65 20 66 6c 61 67 73 20  n.  ^(The flags 
2ea80 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20  parameter to.** 
2ea90 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
2eaa0 29 20 63 61 6e 20 74 61 6b 65 20 6f 6e 65 20 6f  ) can take one o
2eab0 66 0a 2a 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69  f.** the followi
2eac0 6e 67 20 74 68 72 65 65 20 76 61 6c 75 65 73 2c  ng three values,
2ead0 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63 6f 6d 62   optionally comb
2eae0 69 6e 65 64 20 77 69 74 68 20 74 68 65 20 0a 2a  ined with the .*
2eaf0 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e  * [SQLITE_OPEN_N
2eb00 4f 4d 55 54 45 58 5d 2c 20 5b 53 51 4c 49 54 45  OMUTEX], [SQLITE
2eb10 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d  _OPEN_FULLMUTEX]
2eb20 2c 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53  , [SQLITE_OPEN_S
2eb30 48 41 52 45 44 43 41 43 48 45 5d 2c 0a 2a 2a 20  HAREDCACHE],.** 
2eb40 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49  [SQLITE_OPEN_PRI
2eb50 56 41 54 45 43 41 43 48 45 5d 2c 20 61 6e 64 2f  VATECACHE], and/
2eb60 6f 72 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  or [SQLITE_OPEN_
2eb70 55 52 49 5d 20 66 6c 61 67 73 3a 29 5e 0a 2a 2a  URI] flags:)^.**
2eb80 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5e 28 3c 64  .** <dl>.** ^(<d
2eb90 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  t>[SQLITE_OPEN_R
2eba0 45 41 44 4f 4e 4c 59 5d 3c 2f 64 74 3e 0a 2a 2a  EADONLY]</dt>.**
2ebb0 20 3c 64 64 3e 54 68 65 20 64 61 74 61 62 61 73   <dd>The databas
2ebc0 65 20 69 73 20 6f 70 65 6e 65 64 20 69 6e 20 72  e is opened in r
2ebd0 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 20 20  ead-only mode.  
2ebe0 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  If the database 
2ebf0 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 61 6c 72 65  does not.** alre
2ec00 61 64 79 20 65 78 69 73 74 2c 20 61 6e 20 65 72  ady exist, an er
2ec10 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
2ec20 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 28  </dd>)^.**.** ^(
2ec30 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  <dt>[SQLITE_OPEN
2ec40 5f 52 45 41 44 57 52 49 54 45 5d 3c 2f 64 74 3e  _READWRITE]</dt>
2ec50 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 64 61 74 61  .** <dd>The data
2ec60 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 66  base is opened f
2ec70 6f 72 20 72 65 61 64 69 6e 67 20 61 6e 64 20 77  or reading and w
2ec80 72 69 74 69 6e 67 20 69 66 20 70 6f 73 73 69 62  riting if possib
2ec90 6c 65 2c 20 6f 72 20 72 65 61 64 69 6e 67 0a 2a  le, or reading.*
2eca0 2a 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 66 69  * only if the fi
2ecb0 6c 65 20 69 73 20 77 72 69 74 65 20 70 72 6f 74  le is write prot
2ecc0 65 63 74 65 64 20 62 79 20 74 68 65 20 6f 70 65  ected by the ope
2ecd0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 20 20  rating system.  
2ece0 49 6e 20 65 69 74 68 65 72 0a 2a 2a 20 63 61 73  In either.** cas
2ecf0 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6d  e the database m
2ed00 75 73 74 20 61 6c 72 65 61 64 79 20 65 78 69 73  ust already exis
2ed10 74 2c 20 6f 74 68 65 72 77 69 73 65 20 61 6e 20  t, otherwise an 
2ed20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65  error is returne
2ed30 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20  d.</dd>)^.**.** 
2ed40 5e 28 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50  ^(<dt>[SQLITE_OP
2ed50 45 4e 5f 52 45 41 44 57 52 49 54 45 5d 20 7c 20  EN_READWRITE] | 
2ed60 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45  [SQLITE_OPEN_CRE
2ed70 41 54 45 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  ATE]</dt>.** <dd
2ed80 3e 54 68 65 20 64 61 74 61 62 61 73 65 20 69 73  >The database is
2ed90 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64   opened for read
2eda0 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67 2c  ing and writing,
2edb0 20 61 6e 64 20 69 73 20 63 72 65 61 74 65 64 20   and is created 
2edc0 69 66 0a 2a 2a 20 69 74 20 64 6f 65 73 20 6e 6f  if.** it does no
2edd0 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 2e  t already exist.
2ede0 20 54 68 69 73 20 69 73 20 74 68 65 20 62 65 68   This is the beh
2edf0 61 76 69 6f 72 20 74 68 61 74 20 69 73 20 61 6c  avior that is al
2ee00 77 61 79 73 20 75 73 65 64 20 66 6f 72 0a 2a 2a  ways used for.**
2ee10 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20   sqlite3_open() 
2ee20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  and sqlite3_open
2ee30 31 36 28 29 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 20  16().</dd>)^.** 
2ee40 3c 2f 64 6c 3e 0a 2a 2a 0a 2a 2a 20 49 66 20 74  </dl>.**.** If t
2ee50 68 65 20 33 72 64 20 70 61 72 61 6d 65 74 65 72  he 3rd parameter
2ee60 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   to sqlite3_open
2ee70 5f 76 32 28 29 20 69 73 20 6e 6f 74 20 6f 6e 65  _v2() is not one
2ee80 20 6f 66 20 74 68 65 0a 2a 2a 20 63 6f 6d 62 69   of the.** combi
2ee90 6e 61 74 69 6f 6e 73 20 73 68 6f 77 6e 20 61 62  nations shown ab
2eea0 6f 76 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63  ove optionally c
2eeb0 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 6f 74 68  ombined with oth
2eec0 65 72 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50  er.** [SQLITE_OP
2eed0 45 4e 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 53 51  EN_READONLY | SQ
2eee0 4c 49 54 45 5f 4f 50 45 4e 5f 2a 20 62 69 74 73  LITE_OPEN_* bits
2eef0 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 62 65  ].** then the be
2ef00 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69  havior is undefi
2ef10 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74  ned..**.** ^If t
2ef20 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  he [SQLITE_OPEN_
2ef30 4e 4f 4d 55 54 45 58 5d 20 66 6c 61 67 20 69 73  NOMUTEX] flag is
2ef40 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65 20 64   set, then the d
2ef50 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2ef60 6f 6e 0a 2a 2a 20 6f 70 65 6e 73 20 69 6e 20 74  on.** opens in t
2ef70 68 65 20 6d 75 6c 74 69 2d 74 68 72 65 61 64 20  he multi-thread 
2ef80 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
2ef90 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 20   as long as the 
2efa0 73 69 6e 67 6c 65 2d 74 68 72 65 61 64 0a 2a 2a  single-thread.**
2efb0 20 6d 6f 64 65 20 68 61 73 20 6e 6f 74 20 62 65   mode has not be
2efc0 65 6e 20 73 65 74 20 61 74 20 63 6f 6d 70 69 6c  en set at compil
2efd0 65 2d 74 69 6d 65 20 6f 72 20 73 74 61 72 74 2d  e-time or start-
2efe0 74 69 6d 65 2e 20 20 5e 49 66 20 74 68 65 0a 2a  time.  ^If the.*
2eff0 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46  * [SQLITE_OPEN_F
2f000 55 4c 4c 4d 55 54 45 58 5d 20 66 6c 61 67 20 69  ULLMUTEX] flag i
2f010 73 20 73 65 74 20 74 68 65 6e 20 74 68 65 20 64  s set then the d
2f020 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2f030 6f 6e 20 6f 70 65 6e 73 0a 2a 2a 20 69 6e 20 74  on opens.** in t
2f040 68 65 20 73 65 72 69 61 6c 69 7a 65 64 20 5b 74  he serialized [t
2f050 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 75  hreading mode] u
2f060 6e 6c 65 73 73 20 73 69 6e 67 6c 65 2d 74 68 72  nless single-thr
2f070 65 61 64 20 77 61 73 0a 2a 2a 20 70 72 65 76 69  ead was.** previ
2f080 6f 75 73 6c 79 20 73 65 6c 65 63 74 65 64 20 61  ously selected a
2f090 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  t compile-time o
2f0a0 72 20 73 74 61 72 74 2d 74 69 6d 65 2e 0a 2a 2a  r start-time..**
2f0b0 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50   ^The [SQLITE_OP
2f0c0 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 5d 20  EN_SHAREDCACHE] 
2f0d0 66 6c 61 67 20 63 61 75 73 65 73 20 74 68 65 20  flag causes the 
2f0e0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2f0f0 69 6f 6e 20 74 6f 20 62 65 0a 2a 2a 20 65 6c 69  ion to be.** eli
2f100 67 69 62 6c 65 20 74 6f 20 75 73 65 20 5b 73 68  gible to use [sh
2f110 61 72 65 64 20 63 61 63 68 65 20 6d 6f 64 65 5d  ared cache mode]
2f120 2c 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  , regardless of 
2f130 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 73  whether or not s
2f140 68 61 72 65 64 0a 2a 2a 20 63 61 63 68 65 20 69  hared.** cache i
2f150 73 20 65 6e 61 62 6c 65 64 20 75 73 69 6e 67 20  s enabled using 
2f160 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f  [sqlite3_enable_
2f170 73 68 61 72 65 64 5f 63 61 63 68 65 28 29 5d 2e  shared_cache()].
2f180 20 20 5e 54 68 65 0a 2a 2a 20 5b 53 51 4c 49 54    ^The.** [SQLIT
2f190 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41  E_OPEN_PRIVATECA
2f1a0 43 48 45 5d 20 66 6c 61 67 20 63 61 75 73 65 73  CHE] flag causes
2f1b0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
2f1c0 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 6e 6f 74 0a  nnection to not.
2f1d0 2a 2a 20 70 61 72 74 69 63 69 70 61 74 65 20 69  ** participate i
2f1e0 6e 20 5b 73 68 61 72 65 64 20 63 61 63 68 65 20  n [shared cache 
2f1f0 6d 6f 64 65 5d 20 65 76 65 6e 20 69 66 20 69 74  mode] even if it
2f200 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 0a   is enabled..**.
2f210 2a 2a 20 5e 54 68 65 20 66 6f 75 72 74 68 20 70  ** ^The fourth p
2f220 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
2f230 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69 73  te3_open_v2() is
2f240 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
2f250 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  .** [sqlite3_vfs
2f260 5d 20 6f 62 6a 65 63 74 20 74 68 61 74 20 64 65  ] object that de
2f270 66 69 6e 65 73 20 74 68 65 20 6f 70 65 72 61 74  fines the operat
2f280 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72  ing system inter
2f290 66 61 63 65 20 74 68 61 74 0a 2a 2a 20 74 68 65  face that.** the
2f2a0 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 63 6f   new database co
2f2b0 6e 6e 65 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20  nnection should 
2f2c0 75 73 65 2e 20 20 5e 49 66 20 74 68 65 20 66 6f  use.  ^If the fo
2f2d0 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69  urth parameter i
2f2e0 73 0a 2a 2a 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  s.** a NULL poin
2f2f0 74 65 72 20 74 68 65 6e 20 74 68 65 20 64 65 66  ter then the def
2f300 61 75 6c 74 20 5b 73 71 6c 69 74 65 33 5f 76 66  ault [sqlite3_vf
2f310 73 5d 20 6f 62 6a 65 63 74 20 69 73 20 75 73 65  s] object is use
2f320 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  d..**.** ^If the
2f330 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 22 3a 6d   filename is ":m
2f340 65 6d 6f 72 79 3a 22 2c 20 74 68 65 6e 20 61 20  emory:", then a 
2f350 70 72 69 76 61 74 65 2c 20 74 65 6d 70 6f 72 61  private, tempora
2f360 72 79 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  ry in-memory dat
2f370 61 62 61 73 65 0a 2a 2a 20 69 73 20 63 72 65 61  abase.** is crea
2f380 74 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  ted for the conn
2f390 65 63 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20 69  ection.  ^This i
2f3a0 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
2f3b0 65 20 77 69 6c 6c 20 76 61 6e 69 73 68 20 77 68  e will vanish wh
2f3c0 65 6e 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61  en.** the databa
2f3d0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  se connection is
2f3e0 20 63 6c 6f 73 65 64 2e 20 20 46 75 74 75 72 65   closed.  Future
2f3f0 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
2f400 69 74 65 20 6d 69 67 68 74 0a 2a 2a 20 6d 61 6b  ite might.** mak
2f410 65 20 75 73 65 20 6f 66 20 61 64 64 69 74 69 6f  e use of additio
2f420 6e 61 6c 20 73 70 65 63 69 61 6c 20 66 69 6c 65  nal special file
2f430 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67 69 6e  names that begin
2f440 20 77 69 74 68 20 74 68 65 20 22 3a 22 20 63 68   with the ":" ch
2f450 61 72 61 63 74 65 72 2e 0a 2a 2a 20 49 74 20 69  aracter..** It i
2f460 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68  s recommended th
2f470 61 74 20 77 68 65 6e 20 61 20 64 61 74 61 62 61  at when a databa
2f480 73 65 20 66 69 6c 65 6e 61 6d 65 20 61 63 74 75  se filename actu
2f490 61 6c 6c 79 20 64 6f 65 73 20 62 65 67 69 6e 20  ally does begin 
2f4a0 77 69 74 68 0a 2a 2a 20 61 20 22 3a 22 20 63 68  with.** a ":" ch
2f4b0 61 72 61 63 74 65 72 20 79 6f 75 20 73 68 6f 75  aracter you shou
2f4c0 6c 64 20 70 72 65 66 69 78 20 74 68 65 20 66 69  ld prefix the fi
2f4d0 6c 65 6e 61 6d 65 20 77 69 74 68 20 61 20 70 61  lename with a pa
2f4e0 74 68 6e 61 6d 65 20 73 75 63 68 20 61 73 0a 2a  thname such as.*
2f4f0 2a 20 22 2e 2f 22 20 74 6f 20 61 76 6f 69 64 20  * "./" to avoid 
2f500 61 6d 62 69 67 75 69 74 79 2e 0a 2a 2a 0a 2a 2a  ambiguity..**.**
2f510 20 5e 49 66 20 74 68 65 20 66 69 6c 65 6e 61 6d   ^If the filenam
2f520 65 20 69 73 20 61 6e 20 65 6d 70 74 79 20 73 74  e is an empty st
2f530 72 69 6e 67 2c 20 74 68 65 6e 20 61 20 70 72 69  ring, then a pri
2f540 76 61 74 65 2c 20 74 65 6d 70 6f 72 61 72 79 0a  vate, temporary.
2f550 2a 2a 20 6f 6e 2d 64 69 73 6b 20 64 61 74 61 62  ** on-disk datab
2f560 61 73 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61  ase will be crea
2f570 74 65 64 2e 20 20 5e 54 68 69 73 20 70 72 69 76  ted.  ^This priv
2f580 61 74 65 20 64 61 74 61 62 61 73 65 20 77 69 6c  ate database wil
2f590 6c 20 62 65 0a 2a 2a 20 61 75 74 6f 6d 61 74 69  l be.** automati
2f5a0 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 61 73  cally deleted as
2f5b0 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 64 61 74   soon as the dat
2f5c0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2f5d0 20 69 73 20 63 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a   is closed..**.*
2f5e0 2a 20 5b 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65  * [[URI filename
2f5f0 73 20 69 6e 20 73 71 6c 69 74 65 33 5f 6f 70 65  s in sqlite3_ope
2f600 6e 28 29 5d 5d 20 3c 68 33 3e 55 52 49 20 46 69  n()]] <h3>URI Fi
2f610 6c 65 6e 61 6d 65 73 3c 2f 68 33 3e 0a 2a 2a 0a  lenames</h3>.**.
2f620 2a 2a 20 5e 49 66 20 5b 55 52 49 20 66 69 6c 65  ** ^If [URI file
2f630 6e 61 6d 65 5d 20 69 6e 74 65 72 70 72 65 74 61  name] interpreta
2f640 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2c  tion is enabled,
2f650 20 61 6e 64 20 74 68 65 20 66 69 6c 65 6e 61 6d   and the filenam
2f660 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 62 65  e argument.** be
2f670 67 69 6e 73 20 77 69 74 68 20 22 66 69 6c 65 3a  gins with "file:
2f680 22 2c 20 74 68 65 6e 20 74 68 65 20 66 69 6c 65  ", then the file
2f690 6e 61 6d 65 20 69 73 20 69 6e 74 65 72 70 72 65  name is interpre
2f6a0 74 65 64 20 61 73 20 61 20 55 52 49 2e 20 5e 55  ted as a URI. ^U
2f6b0 52 49 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20 69  RI.** filename i
2f6c0 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 69 73  nterpretation is
2f6d0 20 65 6e 61 62 6c 65 64 20 69 66 20 74 68 65 20   enabled if the 
2f6e0 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49  [SQLITE_OPEN_URI
2f6f0 5d 20 66 6c 61 67 20 69 73 0a 2a 2a 20 73 65 74  ] flag is.** set
2f700 20 69 6e 20 74 68 65 20 74 68 69 72 64 20 61 72   in the third ar
2f710 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65  gument to sqlite
2f720 33 5f 6f 70 65 6e 5f 76 32 28 29 2c 20 6f 72 20  3_open_v2(), or 
2f730 69 66 20 69 74 20 68 61 73 0a 2a 2a 20 62 65 65  if it has.** bee
2f740 6e 20 65 6e 61 62 6c 65 64 20 67 6c 6f 62 61 6c  n enabled global
2f750 6c 79 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51  ly using the [SQ
2f760 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 5d  LITE_CONFIG_URI]
2f770 20 6f 70 74 69 6f 6e 20 77 69 74 68 20 74 68 65   option with the
2f780 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  .** [sqlite3_con
2f790 66 69 67 28 29 5d 20 6d 65 74 68 6f 64 20 6f 72  fig()] method or
2f7a0 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   by the [SQLITE_
2f7b0 55 53 45 5f 55 52 49 5d 20 63 6f 6d 70 69 6c 65  USE_URI] compile
2f7c0 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a  -time option..**
2f7d0 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 20 69 6e   URI filename in
2f7e0 74 65 72 70 72 65 74 61 74 69 6f 6e 20 69 73 20  terpretation is 
2f7f0 74 75 72 6e 65 64 20 6f 66 66 0a 2a 2a 20 62 79  turned off.** by
2f800 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 66 75   default, but fu
2f810 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
2f820 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20 65 6e   SQLite might en
2f830 61 62 6c 65 20 55 52 49 20 66 69 6c 65 6e 61 6d  able URI filenam
2f840 65 0a 2a 2a 20 69 6e 74 65 72 70 72 65 74 61 74  e.** interpretat
2f850 69 6f 6e 20 62 79 20 64 65 66 61 75 6c 74 2e 20  ion by default. 
2f860 20 53 65 65 20 22 5b 55 52 49 20 66 69 6c 65 6e   See "[URI filen
2f870 61 6d 65 73 5d 22 20 66 6f 72 20 61 64 64 69 74  ames]" for addit
2f880 69 6f 6e 61 6c 0a 2a 2a 20 69 6e 66 6f 72 6d 61  ional.** informa
2f890 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 55 52 49 20  tion..**.** URI 
2f8a0 66 69 6c 65 6e 61 6d 65 73 20 61 72 65 20 70 61  filenames are pa
2f8b0 72 73 65 64 20 61 63 63 6f 72 64 69 6e 67 20 74  rsed according t
2f8c0 6f 20 52 46 43 20 33 39 38 36 2e 20 5e 49 66 20  o RFC 3986. ^If 
2f8d0 74 68 65 20 55 52 49 20 63 6f 6e 74 61 69 6e 73  the URI contains
2f8e0 20 61 6e 0a 2a 2a 20 61 75 74 68 6f 72 69 74 79   an.** authority
2f8f0 2c 20 74 68 65 6e 20 69 74 20 6d 75 73 74 20 62  , then it must b
2f900 65 20 65 69 74 68 65 72 20 61 6e 20 65 6d 70 74  e either an empt
2f910 79 20 73 74 72 69 6e 67 20 6f 72 20 74 68 65 20  y string or the 
2f920 73 74 72 69 6e 67 20 0a 2a 2a 20 22 6c 6f 63 61  string .** "loca
2f930 6c 68 6f 73 74 22 2e 20 5e 49 66 20 74 68 65 20  lhost". ^If the 
2f940 61 75 74 68 6f 72 69 74 79 20 69 73 20 6e 6f 74  authority is not
2f950 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
2f960 20 6f 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2c   or "localhost",
2f970 20 61 6e 20 0a 2a 2a 20 65 72 72 6f 72 20 69 73   an .** error is
2f980 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65   returned to the
2f990 20 63 61 6c 6c 65 72 2e 20 5e 54 68 65 20 66 72   caller. ^The fr
2f9a0 61 67 6d 65 6e 74 20 63 6f 6d 70 6f 6e 65 6e 74  agment component
2f9b0 20 6f 66 20 61 20 55 52 49 2c 20 69 66 20 0a 2a   of a URI, if .*
2f9c0 2a 20 70 72 65 73 65 6e 74 2c 20 69 73 20 69 67  * present, is ig
2f9d0 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 53 51  nored..**.** ^SQ
2f9e0 4c 69 74 65 20 75 73 65 73 20 74 68 65 20 70 61  Lite uses the pa
2f9f0 74 68 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20  th component of 
2fa00 74 68 65 20 55 52 49 20 61 73 20 74 68 65 20 6e  the URI as the n
2fa10 61 6d 65 20 6f 66 20 74 68 65 20 64 69 73 6b 20  ame of the disk 
2fa20 66 69 6c 65 0a 2a 2a 20 77 68 69 63 68 20 63 6f  file.** which co
2fa30 6e 74 61 69 6e 73 20 74 68 65 20 64 61 74 61 62  ntains the datab
2fa40 61 73 65 2e 20 5e 49 66 20 74 68 65 20 70 61 74  ase. ^If the pat
2fa50 68 20 62 65 67 69 6e 73 20 77 69 74 68 20 61 20  h begins with a 
2fa60 27 2f 27 20 63 68 61 72 61 63 74 65 72 2c 20 0a  '/' character, .
2fa70 2a 2a 20 74 68 65 6e 20 69 74 20 69 73 20 69 6e  ** then it is in
2fa80 74 65 72 70 72 65 74 65 64 20 61 73 20 61 6e 20  terpreted as an 
2fa90 61 62 73 6f 6c 75 74 65 20 70 61 74 68 2e 20 5e  absolute path. ^
2faa0 49 66 20 74 68 65 20 70 61 74 68 20 64 6f 65 73  If the path does
2fab0 20 6e 6f 74 20 62 65 67 69 6e 20 0a 2a 2a 20 77   not begin .** w
2fac0 69 74 68 20 61 20 27 2f 27 20 28 6d 65 61 6e 69  ith a '/' (meani
2fad0 6e 67 20 74 68 61 74 20 74 68 65 20 61 75 74 68  ng that the auth
2fae0 6f 72 69 74 79 20 73 65 63 74 69 6f 6e 20 69 73  ority section is
2faf0 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
2fb00 65 20 55 52 49 29 0a 2a 2a 20 74 68 65 6e 20 74  e URI).** then t
2fb10 68 65 20 70 61 74 68 20 69 73 20 69 6e 74 65 72  he path is inter
2fb20 70 72 65 74 65 64 20 61 73 20 61 20 72 65 6c 61  preted as a rela
2fb30 74 69 76 65 20 70 61 74 68 2e 20 0a 2a 2a 20 5e  tive path. .** ^
2fb40 28 4f 6e 20 77 69 6e 64 6f 77 73 2c 20 74 68 65  (On windows, the
2fb50 20 66 69 72 73 74 20 63 6f 6d 70 6f 6e 65 6e 74   first component
2fb60 20 6f 66 20 61 6e 20 61 62 73 6f 6c 75 74 65 20   of an absolute 
2fb70 70 61 74 68 20 0a 2a 2a 20 69 73 20 61 20 64 72  path .** is a dr
2fb80 69 76 65 20 73 70 65 63 69 66 69 63 61 74 69 6f  ive specificatio
2fb90 6e 20 28 65 2e 67 2e 20 22 43 3a 22 29 2e 29 5e  n (e.g. "C:").)^
2fba0 0a 2a 2a 0a 2a 2a 20 5b 5b 63 6f 72 65 20 55 52  .**.** [[core UR
2fbb0 49 20 71 75 65 72 79 20 70 61 72 61 6d 65 74 65  I query paramete
2fbc0 72 73 5d 5d 0a 2a 2a 20 54 68 65 20 71 75 65 72  rs]].** The quer
2fbd0 79 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 61  y component of a
2fbe0 20 55 52 49 20 6d 61 79 20 63 6f 6e 74 61 69 6e   URI may contain
2fbf0 20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61 74   parameters that
2fc00 20 61 72 65 20 69 6e 74 65 72 70 72 65 74 65 64   are interpreted
2fc10 0a 2a 2a 20 65 69 74 68 65 72 20 62 79 20 53 51  .** either by SQ
2fc20 4c 69 74 65 20 69 74 73 65 6c 66 2c 20 6f 72 20  Lite itself, or 
2fc30 62 79 20 61 20 5b 56 46 53 20 7c 20 63 75 73 74  by a [VFS | cust
2fc40 6f 6d 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74  om VFS implement
2fc50 61 74 69 6f 6e 5d 2e 0a 2a 2a 20 53 51 4c 69 74  ation]..** SQLit
2fc60 65 20 61 6e 64 20 69 74 73 20 62 75 69 6c 74 2d  e and its built-
2fc70 69 6e 20 5b 56 46 53 65 73 5d 20 69 6e 74 65 72  in [VFSes] inter
2fc80 70 72 65 74 20 74 68 65 0a 2a 2a 20 66 6f 6c 6c  pret the.** foll
2fc90 6f 77 69 6e 67 20 71 75 65 72 79 20 70 61 72 61  owing query para
2fca0 6d 65 74 65 72 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75  meters:.**.** <u
2fcb0 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e 20 3c 62 3e  l>.**   <li> <b>
2fcc0 76 66 73 3c 2f 62 3e 3a 20 5e 54 68 65 20 22 76  vfs</b>: ^The "v
2fcd0 66 73 22 20 70 61 72 61 6d 65 74 65 72 20 6d 61  fs" parameter ma
2fce0 79 20 62 65 20 75 73 65 64 20 74 6f 20 73 70 65  y be used to spe
2fcf0 63 69 66 79 20 74 68 65 20 6e 61 6d 65 20 6f 66  cify the name of
2fd00 0a 2a 2a 20 20 20 20 20 61 20 56 46 53 20 6f 62  .**     a VFS ob
2fd10 6a 65 63 74 20 74 68 61 74 20 70 72 6f 76 69 64  ject that provid
2fd20 65 73 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67  es the operating
2fd30 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63   system interfac
2fd40 65 20 74 68 61 74 20 73 68 6f 75 6c 64 0a 2a 2a  e that should.**
2fd50 20 20 20 20 20 62 65 20 75 73 65 64 20 74 6f 20       be used to 
2fd60 61 63 63 65 73 73 20 74 68 65 20 64 61 74 61 62  access the datab
2fd70 61 73 65 20 66 69 6c 65 20 6f 6e 20 64 69 73 6b  ase file on disk
2fd80 2e 20 5e 49 66 20 74 68 69 73 20 6f 70 74 69 6f  . ^If this optio
2fd90 6e 20 69 73 20 73 65 74 20 74 6f 0a 2a 2a 20 20  n is set to.**  
2fda0 20 20 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69     an empty stri
2fdb0 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74 20 56  ng the default V
2fdc0 46 53 20 6f 62 6a 65 63 74 20 69 73 20 75 73 65  FS object is use
2fdd0 64 2e 20 5e 53 70 65 63 69 66 79 69 6e 67 20 61  d. ^Specifying a
2fde0 6e 20 75 6e 6b 6e 6f 77 6e 0a 2a 2a 20 20 20 20  n unknown.**    
2fdf0 20 56 46 53 20 69 73 20 61 6e 20 65 72 72 6f 72   VFS is an error
2fe00 2e 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6f 70  . ^If sqlite3_op
2fe10 65 6e 5f 76 32 28 29 20 69 73 20 75 73 65 64 20  en_v2() is used 
2fe20 61 6e 64 20 74 68 65 20 76 66 73 20 6f 70 74 69  and the vfs opti
2fe30 6f 6e 20 69 73 0a 2a 2a 20 20 20 20 20 70 72 65  on is.**     pre
2fe40 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 56  sent, then the V
2fe50 46 53 20 73 70 65 63 69 66 69 65 64 20 62 79 20  FS specified by 
2fe60 74 68 65 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  the option takes
2fe70 20 70 72 65 63 65 64 65 6e 63 65 20 6f 76 65 72   precedence over
2fe80 0a 2a 2a 20 20 20 20 20 74 68 65 20 76 61 6c 75  .**     the valu
2fe90 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20  e passed as the 
2fea0 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72  fourth parameter
2feb0 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   to sqlite3_open
2fec0 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 20 20 3c  _v2()..**.**   <
2fed0 6c 69 3e 20 3c 62 3e 6d 6f 64 65 3c 2f 62 3e 3a  li> <b>mode</b>:
2fee0 20 5e 28 54 68 65 20 6d 6f 64 65 20 70 61 72 61   ^(The mode para
2fef0 6d 65 74 65 72 20 6d 61 79 20 62 65 20 73 65 74  meter may be set
2ff00 20 74 6f 20 65 69 74 68 65 72 20 22 72 6f 22 2c   to either "ro",
2ff10 20 22 72 77 22 2c 0a 2a 2a 20 20 20 20 20 22 72   "rw",.**     "r
2ff20 77 63 22 2c 20 6f 72 20 22 6d 65 6d 6f 72 79 22  wc", or "memory"
2ff30 2e 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  . Attempting to 
2ff40 73 65 74 20 69 74 20 74 6f 20 61 6e 79 20 6f 74  set it to any ot
2ff50 68 65 72 20 76 61 6c 75 65 20 69 73 0a 2a 2a 20  her value is.** 
2ff60 20 20 20 20 61 6e 20 65 72 72 6f 72 29 5e 2e 20      an error)^. 
2ff70 0a 2a 2a 20 20 20 20 20 5e 49 66 20 22 72 6f 22  .**     ^If "ro"
2ff80 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 74   is specified, t
2ff90 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
2ffa0 20 69 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72   is opened for r
2ffb0 65 61 64 2d 6f 6e 6c 79 20 0a 2a 2a 20 20 20 20  ead-only .**    
2ffc0 20 61 63 63 65 73 73 2c 20 6a 75 73 74 20 61 73   access, just as
2ffd0 20 69 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   if the [SQLITE_
2ffe0 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 5d 20 66  OPEN_READONLY] f
2fff0 6c 61 67 20 68 61 64 20 62 65 65 6e 20 73 65 74  lag had been set
30000 20 69 6e 20 74 68 65 20 0a 2a 2a 20 20 20 20 20   in the .**     
30010 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74  third argument t
30020 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  o sqlite3_open_v
30030 32 28 29 2e 20 5e 49 66 20 74 68 65 20 6d 6f 64  2(). ^If the mod
30040 65 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 20  e option is set 
30050 74 6f 20 0a 2a 2a 20 20 20 20 20 22 72 77 22 2c  to .**     "rw",
30060 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62 61   then the databa
30070 73 65 20 69 73 20 6f 70 65 6e 65 64 20 66 6f 72  se is opened for
30080 20 72 65 61 64 2d 77 72 69 74 65 20 28 62 75 74   read-write (but
30090 20 6e 6f 74 20 63 72 65 61 74 65 29 20 0a 2a 2a   not create) .**
300a0 20 20 20 20 20 61 63 63 65 73 73 2c 20 61 73 20       access, as 
300b0 69 66 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  if SQLITE_OPEN_R
300c0 45 41 44 57 52 49 54 45 20 28 62 75 74 20 6e 6f  EADWRITE (but no
300d0 74 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52  t SQLITE_OPEN_CR
300e0 45 41 54 45 29 20 68 61 64 20 0a 2a 2a 20 20 20  EATE) had .**   
300f0 20 20 62 65 65 6e 20 73 65 74 2e 20 5e 56 61 6c    been set. ^Val
30100 75 65 20 22 72 77 63 22 20 69 73 20 65 71 75 69  ue "rwc" is equi
30110 76 61 6c 65 6e 74 20 74 6f 20 73 65 74 74 69 6e  valent to settin
30120 67 20 62 6f 74 68 20 0a 2a 2a 20 20 20 20 20 53  g both .**     S
30130 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57  QLITE_OPEN_READW
30140 52 49 54 45 20 61 6e 64 20 53 51 4c 49 54 45 5f  RITE and SQLITE_
30150 4f 50 45 4e 5f 43 52 45 41 54 45 2e 20 20 5e 49  OPEN_CREATE.  ^I
30160 66 20 74 68 65 20 6d 6f 64 65 20 6f 70 74 69 6f  f the mode optio
30170 6e 20 69 73 0a 2a 2a 20 20 20 20 20 73 65 74 20  n is.**     set 
30180 74 6f 20 22 6d 65 6d 6f 72 79 22 20 74 68 65 6e  to "memory" then
30190 20 61 20 70 75 72 65 20 5b 69 6e 2d 6d 65 6d 6f   a pure [in-memo
301a0 72 79 20 64 61 74 61 62 61 73 65 5d 20 74 68 61  ry database] tha
301b0 74 20 6e 65 76 65 72 20 72 65 61 64 73 0a 2a 2a  t never reads.**
301c0 20 20 20 20 20 6f 72 20 77 72 69 74 65 73 20 66       or writes f
301d0 72 6f 6d 20 64 69 73 6b 20 69 73 20 75 73 65 64  rom disk is used
301e0 2e 20 5e 49 74 20 69 73 20 61 6e 20 65 72 72 6f  . ^It is an erro
301f0 72 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 76  r to specify a v
30200 61 6c 75 65 20 66 6f 72 0a 2a 2a 20 20 20 20 20  alue for.**     
30210 74 68 65 20 6d 6f 64 65 20 70 61 72 61 6d 65 74  the mode paramet
30220 65 72 20 74 68 61 74 20 69 73 20 6c 65 73 73 20  er that is less 
30230 72 65 73 74 72 69 63 74 69 76 65 20 74 68 61 6e  restrictive than
30240 20 74 68 61 74 20 73 70 65 63 69 66 69 65 64 20   that specified 
30250 62 79 0a 2a 2a 20 20 20 20 20 74 68 65 20 66 6c  by.**     the fl
30260 61 67 73 20 70 61 73 73 65 64 20 69 6e 20 74 68  ags passed in th
30270 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65  e third paramete
30280 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65  r to sqlite3_ope
30290 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 20 20  n_v2()..**.**   
302a0 3c 6c 69 3e 20 3c 62 3e 63 61 63 68 65 3c 2f 62  <li> <b>cache</b
302b0 3e 3a 20 5e 54 68 65 20 63 61 63 68 65 20 70 61  >: ^The cache pa
302c0 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 73  rameter may be s
302d0 65 74 20 74 6f 20 65 69 74 68 65 72 20 22 73 68  et to either "sh
302e0 61 72 65 64 22 20 6f 72 0a 2a 2a 20 20 20 20 20  ared" or.**     
302f0 22 70 72 69 76 61 74 65 22 2e 20 5e 53 65 74 74  "private". ^Sett
30300 69 6e 67 20 69 74 20 74 6f 20 22 73 68 61 72 65  ing it to "share
30310 64 22 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74  d" is equivalent
30320 20 74 6f 20 73 65 74 74 69 6e 67 20 74 68 65 0a   to setting the.
30330 2a 2a 20 20 20 20 20 53 51 4c 49 54 45 5f 4f 50  **     SQLITE_OP
30340 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 20 62  EN_SHAREDCACHE b
30350 69 74 20 69 6e 20 74 68 65 20 66 6c 61 67 73 20  it in the flags 
30360 61 72 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20  argument passed 
30370 74 6f 0a 2a 2a 20 20 20 20 20 73 71 6c 69 74 65  to.**     sqlite
30380 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 5e 53 65  3_open_v2(). ^Se
30390 74 74 69 6e 67 20 74 68 65 20 63 61 63 68 65 20  tting the cache 
303a0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 22 70 72  parameter to "pr
303b0 69 76 61 74 65 22 20 69 73 20 0a 2a 2a 20 20 20  ivate" is .**   
303c0 20 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20    equivalent to 
303d0 73 65 74 74 69 6e 67 20 74 68 65 20 53 51 4c 49  setting the SQLI
303e0 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43  TE_OPEN_PRIVATEC
303f0 41 43 48 45 20 62 69 74 2e 0a 2a 2a 20 20 20 20  ACHE bit..**    
30400 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6f 70 65   ^If sqlite3_ope
30410 6e 5f 76 32 28 29 20 69 73 20 75 73 65 64 20 61  n_v2() is used a
30420 6e 64 20 74 68 65 20 22 63 61 63 68 65 22 20 70  nd the "cache" p
30430 61 72 61 6d 65 74 65 72 20 69 73 20 70 72 65 73  arameter is pres
30440 65 6e 74 20 69 6e 0a 2a 2a 20 20 20 20 20 61 20  ent in.**     a 
30450 55 52 49 20 66 69 6c 65 6e 61 6d 65 2c 20 69 74  URI filename, it
30460 73 20 76 61 6c 75 65 20 6f 76 65 72 72 69 64 65  s value override
30470 73 20 61 6e 79 20 62 65 68 61 76 69 6f 72 20 72  s any behavior r
30480 65 71 75 65 73 74 65 64 20 62 79 20 73 65 74 74  equested by sett
30490 69 6e 67 0a 2a 2a 20 20 20 20 20 53 51 4c 49 54  ing.**     SQLIT
304a0 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41  E_OPEN_PRIVATECA
304b0 43 48 45 20 6f 72 20 53 51 4c 49 54 45 5f 4f 50  CHE or SQLITE_OP
304c0 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 20 66  EN_SHAREDCACHE f
304d0 6c 61 67 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e  lag..**.**  <li>
304e0 20 3c 62 3e 70 73 6f 77 3c 2f 62 3e 3a 20 5e 54   <b>psow</b>: ^T
304f0 68 65 20 70 73 6f 77 20 70 61 72 61 6d 65 74 65  he psow paramete
30500 72 20 69 6e 64 69 63 61 74 65 73 20 77 68 65 74  r indicates whet
30510 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 0a 2a  her or not the.*
30520 2a 20 20 20 20 20 5b 70 6f 77 65 72 73 61 66 65  *     [powersafe
30530 20 6f 76 65 72 77 72 69 74 65 5d 20 70 72 6f 70   overwrite] prop
30540 65 72 74 79 20 64 6f 65 73 20 6f 72 20 64 6f 65  erty does or doe
30550 73 20 6e 6f 74 20 61 70 70 6c 79 20 74 6f 20 74  s not apply to t
30560 68 65 0a 2a 2a 20 20 20 20 20 73 74 6f 72 61 67  he.**     storag
30570 65 20 6d 65 64 69 61 20 6f 6e 20 77 68 69 63 68  e media on which
30580 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
30590 6c 65 20 72 65 73 69 64 65 73 2e 0a 2a 2a 0a 2a  le resides..**.*
305a0 2a 20 20 3c 6c 69 3e 20 3c 62 3e 6e 6f 6c 6f 63  *  <li> <b>noloc
305b0 6b 3c 2f 62 3e 3a 20 5e 54 68 65 20 6e 6f 6c 6f  k</b>: ^The nolo
305c0 63 6b 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  ck parameter is 
305d0 61 20 62 6f 6f 6c 65 61 6e 20 71 75 65 72 79 20  a boolean query 
305e0 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 20 20 20  parameter.**    
305f0 20 77 68 69 63 68 20 69 66 20 73 65 74 20 64 69   which if set di
30600 73 61 62 6c 65 73 20 66 69 6c 65 20 6c 6f 63 6b  sables file lock
30610 69 6e 67 20 69 6e 20 72 6f 6c 6c 62 61 63 6b 20  ing in rollback 
30620 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 73 2e 20 20  journal modes.  
30630 54 68 69 73 0a 2a 2a 20 20 20 20 20 69 73 20 75  This.**     is u
30640 73 65 66 75 6c 20 66 6f 72 20 61 63 63 65 73 73  seful for access
30650 69 6e 67 20 61 20 64 61 74 61 62 61 73 65 20 6f  ing a database o
30660 6e 20 61 20 66 69 6c 65 73 79 73 74 65 6d 20 74  n a filesystem t
30670 68 61 74 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20  hat does not.** 
30680 20 20 20 20 73 75 70 70 6f 72 74 20 6c 6f 63 6b      support lock
30690 69 6e 67 2e 20 20 43 61 75 74 69 6f 6e 3a 20 20  ing.  Caution:  
306a0 44 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74  Database corrupt
306b0 69 6f 6e 20 6d 69 67 68 74 20 72 65 73 75 6c 74  ion might result
306c0 20 69 66 20 74 77 6f 0a 2a 2a 20 20 20 20 20 6f   if two.**     o
306d0 72 20 6d 6f 72 65 20 70 72 6f 63 65 73 73 65 73  r more processes
306e0 20 77 72 69 74 65 20 74 6f 20 74 68 65 20 73 61   write to the sa
306f0 6d 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  me database and 
30700 61 6e 79 20 6f 6e 65 20 6f 66 20 74 68 6f 73 65  any one of those
30710 0a 2a 2a 20 20 20 20 20 70 72 6f 63 65 73 73 65  .**     processe
30720 73 20 75 73 65 73 20 6e 6f 6c 6f 63 6b 3d 31 2e  s uses nolock=1.
30730 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e  .**.**  <li> <b>
30740 69 6d 6d 75 74 61 62 6c 65 3c 2f 62 3e 3a 20 5e  immutable</b>: ^
30750 54 68 65 20 69 6d 6d 75 74 61 62 6c 65 20 70 61  The immutable pa
30760 72 61 6d 65 74 65 72 20 69 73 20 61 20 62 6f 6f  rameter is a boo
30770 6c 65 61 6e 20 71 75 65 72 79 0a 2a 2a 20 20 20  lean query.**   
30780 20 20 70 61 72 61 6d 65 74 65 72 20 74 68 61 74    parameter that
30790 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20   indicates that 
307a0 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
307b0 65 20 69 73 20 73 74 6f 72 65 64 20 6f 6e 0a 2a  e is stored on.*
307c0 2a 20 20 20 20 20 72 65 61 64 2d 6f 6e 6c 79 20  *     read-only 
307d0 6d 65 64 69 61 2e 20 20 5e 57 68 65 6e 20 69 6d  media.  ^When im
307e0 6d 75 74 61 62 6c 65 20 69 73 20 73 65 74 2c 20  mutable is set, 
307f0 53 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74  SQLite assumes t
30800 68 61 74 20 74 68 65 0a 2a 2a 20 20 20 20 20 64  hat the.**     d
30810 61 74 61 62 61 73 65 20 66 69 6c 65 20 63 61 6e  atabase file can
30820 6e 6f 74 20 62 65 20 63 68 61 6e 67 65 64 2c 20  not be changed, 
30830 65 76 65 6e 20 62 79 20 61 20 70 72 6f 63 65 73  even by a proces
30840 73 20 77 69 74 68 20 68 69 67 68 65 72 0a 2a 2a  s with higher.**
30850 20 20 20 20 20 70 72 69 76 69 6c 65 67 65 2c 20       privilege, 
30860 61 6e 64 20 73 6f 20 74 68 65 20 64 61 74 61 62  and so the datab
30870 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 72 65  ase is opened re
30880 61 64 2d 6f 6e 6c 79 20 61 6e 64 20 61 6c 6c 20  ad-only and all 
30890 6c 6f 63 6b 69 6e 67 0a 2a 2a 20 20 20 20 20 61  locking.**     a
308a0 6e 64 20 63 68 61 6e 67 65 20 64 65 74 65 63 74  nd change detect
308b0 69 6f 6e 20 69 73 20 64 69 73 61 62 6c 65 64 2e  ion is disabled.
308c0 20 20 43 61 75 74 69 6f 6e 3a 20 53 65 74 74 69    Caution: Setti
308d0 6e 67 20 74 68 65 20 69 6d 6d 75 74 61 62 6c 65  ng the immutable
308e0 0a 2a 2a 20 20 20 20 20 70 72 6f 70 65 72 74 79  .**     property
308f0 20 6f 6e 20 61 20 64 61 74 61 62 61 73 65 20 66   on a database f
30900 69 6c 65 20 74 68 61 74 20 64 6f 65 73 20 69 6e  ile that does in
30910 20 66 61 63 74 20 63 68 61 6e 67 65 20 63 61 6e   fact change can
30920 20 72 65 73 75 6c 74 0a 2a 2a 20 20 20 20 20 69   result.**     i
30930 6e 20 69 6e 63 6f 72 72 65 63 74 20 71 75 65 72  n incorrect quer
30940 79 20 72 65 73 75 6c 74 73 20 61 6e 64 2f 6f 72  y results and/or
30950 20 5b 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54   [SQLITE_CORRUPT
30960 5d 20 65 72 72 6f 72 73 2e 0a 2a 2a 20 20 20 20  ] errors..**    
30970 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49   See also: [SQLI
30980 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42  TE_IOCAP_IMMUTAB
30990 4c 45 5d 2e 0a 2a 2a 20 20 20 20 20 20 20 0a 2a  LE]..**       .*
309a0 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 5e 53  * </ul>.**.** ^S
309b0 70 65 63 69 66 79 69 6e 67 20 61 6e 20 75 6e 6b  pecifying an unk
309c0 6e 6f 77 6e 20 70 61 72 61 6d 65 74 65 72 20 69  nown parameter i
309d0 6e 20 74 68 65 20 71 75 65 72 79 20 63 6f 6d 70  n the query comp
309e0 6f 6e 65 6e 74 20 6f 66 20 61 20 55 52 49 20 69  onent of a URI i
309f0 73 20 6e 6f 74 20 61 6e 0a 2a 2a 20 65 72 72 6f  s not an.** erro
30a00 72 2e 20 20 46 75 74 75 72 65 20 76 65 72 73 69  r.  Future versi
30a10 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69  ons of SQLite mi
30a20 67 68 74 20 75 6e 64 65 72 73 74 61 6e 64 20 61  ght understand a
30a30 64 64 69 74 69 6f 6e 61 6c 20 71 75 65 72 79 0a  dditional query.
30a40 2a 2a 20 70 61 72 61 6d 65 74 65 72 73 2e 20 20  ** parameters.  
30a50 53 65 65 20 22 5b 71 75 65 72 79 20 70 61 72 61  See "[query para
30a60 6d 65 74 65 72 73 20 77 69 74 68 20 73 70 65 63  meters with spec
30a70 69 61 6c 20 6d 65 61 6e 69 6e 67 20 74 6f 20 53  ial meaning to S
30a80 51 4c 69 74 65 5d 22 20 66 6f 72 0a 2a 2a 20 61  QLite]" for.** a
30a90 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
30aa0 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 55  ation..**.** [[U
30ab0 52 49 20 66 69 6c 65 6e 61 6d 65 20 65 78 61 6d  RI filename exam
30ac0 70 6c 65 73 5d 5d 20 3c 68 33 3e 55 52 49 20 66  ples]] <h3>URI f
30ad0 69 6c 65 6e 61 6d 65 20 65 78 61 6d 70 6c 65 73  ilename examples
30ae0 3c 2f 68 33 3e 0a 2a 2a 0a 2a 2a 20 3c 74 61 62  </h3>.**.** <tab
30af0 6c 65 20 62 6f 72 64 65 72 3d 22 31 22 20 61 6c  le border="1" al
30b00 69 67 6e 3d 63 65 6e 74 65 72 20 63 65 6c 6c 70  ign=center cellp
30b10 61 64 64 69 6e 67 3d 35 3e 0a 2a 2a 20 3c 74 72  adding=5>.** <tr
30b20 3e 3c 74 68 3e 20 55 52 49 20 66 69 6c 65 6e 61  ><th> URI filena
30b30 6d 65 73 20 3c 74 68 3e 20 52 65 73 75 6c 74 73  mes <th> Results
30b40 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c  .** <tr><td> fil
30b50 65 3a 64 61 74 61 2e 64 62 20 3c 74 64 3e 20 0a  e:data.db <td> .
30b60 2a 2a 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e  **          Open
30b70 20 74 68 65 20 66 69 6c 65 20 22 64 61 74 61 2e   the file "data.
30b80 64 62 22 20 69 6e 20 74 68 65 20 63 75 72 72 65  db" in the curre
30b90 6e 74 20 64 69 72 65 63 74 6f 72 79 2e 0a 2a 2a  nt directory..**
30ba0 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 2f   <tr><td> file:/
30bb0 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64  home/fred/data.d
30bc0 62 3c 62 72 3e 0a 2a 2a 20 20 20 20 20 20 20 20  b<br>.**        
30bd0 20 20 66 69 6c 65 3a 2f 2f 2f 68 6f 6d 65 2f 66    file:///home/f
30be0 72 65 64 2f 64 61 74 61 2e 64 62 20 3c 62 72 3e  red/data.db <br>
30bf0 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 66 69   .**          fi
30c00 6c 65 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 2f 68  le://localhost/h
30c10 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62  ome/fred/data.db
30c20 20 3c 62 72 3e 20 3c 74 64 3e 20 0a 2a 2a 20 20   <br> <td> .**  
30c30 20 20 20 20 20 20 20 20 4f 70 65 6e 20 74 68 65          Open the
30c40 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 22   database file "
30c50 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e  /home/fred/data.
30c60 64 62 22 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e  db"..** <tr><td>
30c70 20 66 69 6c 65 3a 2f 2f 64 61 72 6b 73 74 61 72   file://darkstar
30c80 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e  /home/fred/data.
30c90 64 62 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20  db <td> .**     
30ca0 20 20 20 20 20 41 6e 20 65 72 72 6f 72 2e 20 22       An error. "
30cb0 64 61 72 6b 73 74 61 72 22 20 69 73 20 6e 6f 74  darkstar" is not
30cc0 20 61 20 72 65 63 6f 67 6e 69 7a 65 64 20 61 75   a recognized au
30cd0 74 68 6f 72 69 74 79 2e 0a 2a 2a 20 3c 74 72 3e  thority..** <tr>
30ce0 3c 74 64 20 73 74 79 6c 65 3d 22 77 68 69 74 65  <td style="white
30cf0 2d 73 70 61 63 65 3a 6e 6f 77 72 61 70 22 3e 20  -space:nowrap"> 
30d00 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 66 69 6c  .**          fil
30d10 65 3a 2f 2f 2f 43 3a 2f 44 6f 63 75 6d 65 6e 74  e:///C:/Document
30d20 73 25 32 30 61 6e 64 25 32 30 53 65 74 74 69 6e  s%20and%20Settin
30d30 67 73 2f 66 72 65 64 2f 44 65 73 6b 74 6f 70 2f  gs/fred/Desktop/
30d40 64 61 74 61 2e 64 62 0a 2a 2a 20 20 20 20 20 3c  data.db.**     <
30d50 74 64 3e 20 57 69 6e 64 6f 77 73 20 6f 6e 6c 79  td> Windows only
30d60 3a 20 4f 70 65 6e 20 74 68 65 20 66 69 6c 65 20  : Open the file 
30d70 22 64 61 74 61 2e 64 62 22 20 6f 6e 20 66 72 65  "data.db" on fre
30d80 64 27 73 20 64 65 73 6b 74 6f 70 20 6f 6e 20 64  d's desktop on d
30d90 72 69 76 65 0a 2a 2a 20 20 20 20 20 20 20 20 20  rive.**         
30da0 20 43 3a 2e 20 4e 6f 74 65 20 74 68 61 74 20 74   C:. Note that t
30db0 68 65 20 25 32 30 20 65 73 63 61 70 69 6e 67 20  he %20 escaping 
30dc0 69 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 20  in this example 
30dd0 69 73 20 6e 6f 74 20 73 74 72 69 63 74 6c 79 20  is not strictly 
30de0 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 6e 65 63  .**          nec
30df0 65 73 73 61 72 79 20 2d 20 73 70 61 63 65 20 63  essary - space c
30e00 68 61 72 61 63 74 65 72 73 20 63 61 6e 20 62 65  haracters can be
30e10 20 75 73 65 64 20 6c 69 74 65 72 61 6c 6c 79 0a   used literally.
30e20 2a 2a 20 20 20 20 20 20 20 20 20 20 69 6e 20 55  **          in U
30e30 52 49 20 66 69 6c 65 6e 61 6d 65 73 2e 0a 2a 2a  RI filenames..**
30e40 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 64   <tr><td> file:d
30e50 61 74 61 2e 64 62 3f 6d 6f 64 65 3d 72 6f 26 63  ata.db?mode=ro&c
30e60 61 63 68 65 3d 70 72 69 76 61 74 65 20 3c 74 64  ache=private <td
30e70 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 4f  > .**          O
30e80 70 65 6e 20 66 69 6c 65 20 22 64 61 74 61 2e 64  pen file "data.d
30e90 62 22 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e  b" in the curren
30ea0 74 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20  t directory for 
30eb0 72 65 61 64 2d 6f 6e 6c 79 20 61 63 63 65 73 73  read-only access
30ec0 2e 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 52 65  ..**          Re
30ed0 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74  gardless of whet
30ee0 68 65 72 20 6f 72 20 6e 6f 74 20 73 68 61 72 65  her or not share
30ef0 64 2d 63 61 63 68 65 20 6d 6f 64 65 20 69 73 20  d-cache mode is 
30f00 65 6e 61 62 6c 65 64 20 62 79 0a 2a 2a 20 20 20  enabled by.**   
30f10 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 2c 20         default, 
30f20 75 73 65 20 61 20 70 72 69 76 61 74 65 20 63 61  use a private ca
30f30 63 68 65 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e  che..** <tr><td>
30f40 20 66 69 6c 65 3a 2f 68 6f 6d 65 2f 66 72 65 64   file:/home/fred
30f50 2f 64 61 74 61 2e 64 62 3f 76 66 73 3d 75 6e 69  /data.db?vfs=uni
30f60 78 2d 64 6f 74 66 69 6c 65 20 3c 74 64 3e 0a 2a  x-dotfile <td>.*
30f70 2a 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e 20  *          Open 
30f80 66 69 6c 65 20 22 2f 68 6f 6d 65 2f 66 72 65 64  file "/home/fred
30f90 2f 64 61 74 61 2e 64 62 22 2e 20 55 73 65 20 74  /data.db". Use t
30fa0 68 65 20 73 70 65 63 69 61 6c 20 56 46 53 20 22  he special VFS "
30fb0 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 0a 2a 2a  unix-dotfile".**
30fc0 20 20 20 20 20 20 20 20 20 20 74 68 61 74 20 75            that u
30fd0 73 65 73 20 64 6f 74 2d 66 69 6c 65 73 20 69 6e  ses dot-files in
30fe0 20 70 6c 61 63 65 20 6f 66 20 70 6f 73 69 78 20   place of posix 
30ff0 61 64 76 69 73 6f 72 79 20 6c 6f 63 6b 69 6e 67  advisory locking
31000 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69  ..** <tr><td> fi
31010 6c 65 3a 64 61 74 61 2e 64 62 3f 6d 6f 64 65 3d  le:data.db?mode=
31020 72 65 61 64 6f 6e 6c 79 20 3c 74 64 3e 20 0a 2a  readonly <td> .*
31030 2a 20 20 20 20 20 20 20 20 20 20 41 6e 20 65 72  *          An er
31040 72 6f 72 2e 20 22 72 65 61 64 6f 6e 6c 79 22 20  ror. "readonly" 
31050 69 73 20 6e 6f 74 20 61 20 76 61 6c 69 64 20 6f  is not a valid o
31060 70 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 22 6d  ption for the "m
31070 6f 64 65 22 20 70 61 72 61 6d 65 74 65 72 2e 0a  ode" parameter..
31080 2a 2a 20 3c 2f 74 61 62 6c 65 3e 0a 2a 2a 0a 2a  ** </table>.**.*
31090 2a 20 5e 55 52 49 20 68 65 78 61 64 65 63 69 6d  * ^URI hexadecim
310a0 61 6c 20 65 73 63 61 70 65 20 73 65 71 75 65 6e  al escape sequen
310b0 63 65 73 20 28 25 48 48 29 20 61 72 65 20 73 75  ces (%HH) are su
310c0 70 70 6f 72 74 65 64 20 77 69 74 68 69 6e 20 74  pported within t
310d0 68 65 20 70 61 74 68 20 61 6e 64 0a 2a 2a 20 71  he path and.** q
310e0 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 73 20  uery components 
310f0 6f 66 20 61 20 55 52 49 2e 20 41 20 68 65 78 61  of a URI. A hexa
31100 64 65 63 69 6d 61 6c 20 65 73 63 61 70 65 20 73  decimal escape s
31110 65 71 75 65 6e 63 65 20 63 6f 6e 73 69 73 74 73  equence consists
31120 20 6f 66 20 61 0a 2a 2a 20 70 65 72 63 65 6e 74   of a.** percent
31130 20 73 69 67 6e 20 2d 20 22 25 22 20 2d 20 66 6f   sign - "%" - fo
31140 6c 6c 6f 77 65 64 20 62 79 20 65 78 61 63 74 6c  llowed by exactl
31150 79 20 74 77 6f 20 68 65 78 61 64 65 63 69 6d 61  y two hexadecima
31160 6c 20 64 69 67 69 74 73 20 0a 2a 2a 20 73 70 65  l digits .** spe
31170 63 69 66 79 69 6e 67 20 61 6e 20 6f 63 74 65 74  cifying an octet
31180 20 76 61 6c 75 65 2e 20 5e 42 65 66 6f 72 65 20   value. ^Before 
31190 74 68 65 20 70 61 74 68 20 6f 72 20 71 75 65 72  the path or quer
311a0 79 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20  y components of 
311b0 61 0a 2a 2a 20 55 52 49 20 66 69 6c 65 6e 61 6d  a.** URI filenam
311c0 65 20 61 72 65 20 69 6e 74 65 72 70 72 65 74 65  e are interprete
311d0 64 2c 20 74 68 65 79 20 61 72 65 20 65 6e 63 6f  d, they are enco
311e0 64 65 64 20 75 73 69 6e 67 20 55 54 46 2d 38 20  ded using UTF-8 
311f0 61 6e 64 20 61 6c 6c 20 0a 2a 2a 20 68 65 78 61  and all .** hexa
31200 64 65 63 69 6d 61 6c 20 65 73 63 61 70 65 20 73  decimal escape s
31210 65 71 75 65 6e 63 65 73 20 72 65 70 6c 61 63 65  equences replace
31220 64 20 62 79 20 61 20 73 69 6e 67 6c 65 20 62 79  d by a single by
31230 74 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  te containing th
31240 65 0a 2a 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69  e.** correspondi
31250 6e 67 20 6f 63 74 65 74 2e 20 49 66 20 74 68 69  ng octet. If thi
31260 73 20 70 72 6f 63 65 73 73 20 67 65 6e 65 72 61  s process genera
31270 74 65 73 20 61 6e 20 69 6e 76 61 6c 69 64 20 55  tes an invalid U
31280 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 2c 0a 2a  TF-8 encoding,.*
31290 2a 20 74 68 65 20 72 65 73 75 6c 74 73 20 61 72  * the results ar
312a0 65 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a  e undefined..**.
312b0 2a 2a 20 3c 62 3e 4e 6f 74 65 20 74 6f 20 57 69  ** <b>Note to Wi
312c0 6e 64 6f 77 73 20 75 73 65 72 73 3a 3c 2f 62 3e  ndows users:</b>
312d0 20 20 54 68 65 20 65 6e 63 6f 64 69 6e 67 20 75    The encoding u
312e0 73 65 64 20 66 6f 72 20 74 68 65 20 66 69 6c 65  sed for the file
312f0 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a  name argument.**
31300 20 6f 66 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   of sqlite3_open
31310 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f  () and sqlite3_o
31320 70 65 6e 5f 76 32 28 29 20 6d 75 73 74 20 62 65  pen_v2() must be
31330 20 55 54 46 2d 38 2c 20 6e 6f 74 20 77 68 61 74   UTF-8, not what
31340 65 76 65 72 0a 2a 2a 20 63 6f 64 65 70 61 67 65  ever.** codepage
31350 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 64 65   is currently de
31360 66 69 6e 65 64 2e 20 20 46 69 6c 65 6e 61 6d 65  fined.  Filename
31370 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 74  s containing int
31380 65 72 6e 61 74 69 6f 6e 61 6c 0a 2a 2a 20 63 68  ernational.** ch
31390 61 72 61 63 74 65 72 73 20 6d 75 73 74 20 62 65  aracters must be
313a0 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 55 54   converted to UT
313b0 46 2d 38 20 70 72 69 6f 72 20 74 6f 20 70 61 73  F-8 prior to pas
313c0 73 69 6e 67 20 74 68 65 6d 20 69 6e 74 6f 0a 2a  sing them into.*
313d0 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29  * sqlite3_open()
313e0 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   or sqlite3_open
313f0 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e  _v2()..**.** <b>
31400 4e 6f 74 65 20 74 6f 20 57 69 6e 64 6f 77 73 20  Note to Windows 
31410 52 75 6e 74 69 6d 65 20 75 73 65 72 73 3a 3c 2f  Runtime users:</
31420 62 3e 20 20 54 68 65 20 74 65 6d 70 6f 72 61 72  b>  The temporar
31430 79 20 64 69 72 65 63 74 6f 72 79 20 6d 75 73 74  y directory must
31440 20 62 65 20 73 65 74 0a 2a 2a 20 70 72 69 6f 72   be set.** prior
31450 20 74 6f 20 63 61 6c 6c 69 6e 67 20 73 71 6c 69   to calling sqli
31460 74 65 33 5f 6f 70 65 6e 28 29 20 6f 72 20 73 71  te3_open() or sq
31470 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e  lite3_open_v2().
31480 20 20 4f 74 68 65 72 77 69 73 65 2c 20 76 61 72    Otherwise, var
31490 69 6f 75 73 0a 2a 2a 20 66 65 61 74 75 72 65 73  ious.** features
314a0 20 74 68 61 74 20 72 65 71 75 69 72 65 20 74 68   that require th
314b0 65 20 75 73 65 20 6f 66 20 74 65 6d 70 6f 72 61  e use of tempora
314c0 72 79 20 66 69 6c 65 73 20 6d 61 79 20 66 61 69  ry files may fai
314d0 6c 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73  l..**.** See als
314e0 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 74 65 6d 70  o: [sqlite3_temp
314f0 5f 64 69 72 65 63 74 6f 72 79 5d 0a 2a 2f 0a 53  _directory].*/.S
31500 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
31510 6c 69 74 65 33 5f 6f 70 65 6e 28 0a 20 20 63 6f  lite3_open(.  co
31520 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61  nst char *filena
31530 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73  me,   /* Databas
31540 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d  e filename (UTF-
31550 38 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20  8) */.  sqlite3 
31560 2a 2a 70 70 44 62 20 20 20 20 20 20 20 20 20 20  **ppDb          
31570 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20 64  /* OUT: SQLite d
31580 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 53  b handle */.);.S
31590 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
315a0 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 0a 20 20  lite3_open16(.  
315b0 63 6f 6e 73 74 20 76 6f 69 64 20 2a 66 69 6c 65  const void *file
315c0 6e 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62  name,   /* Datab
315d0 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54  ase filename (UT
315e0 46 2d 31 36 29 20 2a 2f 0a 20 20 73 71 6c 69 74  F-16) */.  sqlit
315f0 65 33 20 2a 2a 70 70 44 62 20 20 20 20 20 20 20  e3 **ppDb       
31600 20 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74     /* OUT: SQLit
31610 65 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29  e db handle */.)
31620 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  ;.SQLITE_API int
31630 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
31640 28 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  (.  const char *
31650 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a 20 44  filename,   /* D
31660 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65  atabase filename
31670 20 28 55 54 46 2d 38 29 20 2a 2f 0a 20 20 73 71   (UTF-8) */.  sq
31680 6c 69 74 65 33 20 2a 2a 70 70 44 62 2c 20 20 20  lite3 **ppDb,   
31690 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 53 51        /* OUT: SQ
316a0 4c 69 74 65 20 64 62 20 68 61 6e 64 6c 65 20 2a  Lite db handle *
316b0 2f 0a 20 20 69 6e 74 20 66 6c 61 67 73 2c 20 20  /.  int flags,  
316c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 46              /* F
316d0 6c 61 67 73 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  lags */.  const 
316e0 63 68 61 72 20 2a 7a 56 66 73 20 20 20 20 20 20  char *zVfs      
316f0 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 56 46 53    /* Name of VFS
31700 20 6d 6f 64 75 6c 65 20 74 6f 20 75 73 65 20 2a   module to use *
31710 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  /.);../*.** CAPI
31720 33 52 45 46 3a 20 4f 62 74 61 69 6e 20 56 61 6c  3REF: Obtain Val
31730 75 65 73 20 46 6f 72 20 55 52 49 20 50 61 72 61  ues For URI Para
31740 6d 65 74 65 72 73 0a 2a 2a 0a 2a 2a 20 54 68 65  meters.**.** The
31750 73 65 20 61 72 65 20 75 74 69 6c 69 74 79 20 72  se are utility r
31760 6f 75 74 69 6e 65 73 2c 20 75 73 65 66 75 6c 20  outines, useful 
31770 74 6f 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74  to VFS implement
31780 61 74 69 6f 6e 73 2c 20 74 68 61 74 20 63 68 65  ations, that che
31790 63 6b 0a 2a 2a 20 74 6f 20 73 65 65 20 69 66 20  ck.** to see if 
317a0 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  a database file 
317b0 77 61 73 20 61 20 55 52 49 20 74 68 61 74 20 63  was a URI that c
317c0 6f 6e 74 61 69 6e 65 64 20 61 20 73 70 65 63 69  ontained a speci
317d0 66 69 63 20 71 75 65 72 79 20 0a 2a 2a 20 70 61  fic query .** pa
317e0 72 61 6d 65 74 65 72 2c 20 61 6e 64 20 69 66 20  rameter, and if 
317f0 73 6f 20 6f 62 74 61 69 6e 73 20 74 68 65 20 76  so obtains the v
31800 61 6c 75 65 20 6f 66 20 74 68 61 74 20 71 75 65  alue of that que
31810 72 79 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a  ry parameter..**
31820 0a 2a 2a 20 49 66 20 46 20 69 73 20 74 68 65 20  .** If F is the 
31830 64 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d  database filenam
31840 65 20 70 6f 69 6e 74 65 72 20 70 61 73 73 65 64  e pointer passed
31850 20 69 6e 74 6f 20 74 68 65 20 78 4f 70 65 6e 28   into the xOpen(
31860 29 20 6d 65 74 68 6f 64 20 6f 66 20 0a 2a 2a 20  ) method of .** 
31870 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61  a VFS implementa
31880 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 20 66 6c  tion when the fl
31890 61 67 73 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ags parameter to
318a0 20 78 4f 70 65 6e 28 29 20 68 61 73 20 6f 6e 65   xOpen() has one
318b0 20 6f 72 20 0a 2a 2a 20 6d 6f 72 65 20 6f 66 20   or .** more of 
318c0 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  the [SQLITE_OPEN
318d0 5f 55 52 49 5d 20 6f 72 20 5b 53 51 4c 49 54 45  _URI] or [SQLITE
318e0 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 44 42 5d 20 62  _OPEN_MAIN_DB] b
318f0 69 74 73 20 73 65 74 20 61 6e 64 0a 2a 2a 20 50  its set and.** P
31900 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
31910 74 68 65 20 71 75 65 72 79 20 70 61 72 61 6d 65  the query parame
31920 74 65 72 2c 20 74 68 65 6e 0a 2a 2a 20 73 71 6c  ter, then.** sql
31930 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d 65 74  ite3_uri_paramet
31940 65 72 28 46 2c 50 29 20 72 65 74 75 72 6e 73 20  er(F,P) returns 
31950 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
31960 20 50 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20   P.** parameter 
31970 69 66 20 69 74 20 65 78 69 73 74 73 20 6f 72 20  if it exists or 
31980 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69  a NULL pointer i
31990 66 20 50 20 64 6f 65 73 20 6e 6f 74 20 61 70 70  f P does not app
319a0 65 61 72 20 61 73 20 61 20 0a 2a 2a 20 71 75 65  ear as a .** que
319b0 72 79 20 70 61 72 61 6d 65 74 65 72 20 6f 6e 20  ry parameter on 
319c0 46 2e 20 20 49 66 20 50 20 69 73 20 61 20 71 75  F.  If P is a qu
319d0 65 72 79 20 70 61 72 61 6d 65 74 65 72 20 6f 66  ery parameter of
319e0 20 46 0a 2a 2a 20 68 61 73 20 6e 6f 20 65 78 70   F.** has no exp
319f0 6c 69 63 69 74 20 76 61 6c 75 65 2c 20 74 68 65  licit value, the
31a00 6e 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 70 61  n sqlite3_uri_pa
31a10 72 61 6d 65 74 65 72 28 46 2c 50 29 20 72 65 74  rameter(F,P) ret
31a20 75 72 6e 73 0a 2a 2a 20 61 20 70 6f 69 6e 74 65  urns.** a pointe
31a30 72 20 74 6f 20 61 6e 20 65 6d 70 74 79 20 73 74  r to an empty st
31a40 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ring..**.** The 
31a50 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c  sqlite3_uri_bool
31a60 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f 75 74 69  ean(F,P,B) routi
31a70 6e 65 20 61 73 73 75 6d 65 73 20 74 68 61 74 20  ne assumes that 
31a80 50 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 0a 2a  P is a boolean.*
31a90 2a 20 70 61 72 61 6d 65 74 65 72 20 61 6e 64 20  * parameter and 
31aa0 72 65 74 75 72 6e 73 20 74 72 75 65 20 28 31 29  returns true (1)
31ab0 20 6f 72 20 66 61 6c 73 65 20 28 30 29 20 61 63   or false (0) ac
31ac0 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 76  cording to the v
31ad0 61 6c 75 65 0a 2a 2a 20 6f 66 20 50 2e 20 20 54  alue.** of P.  T
31ae0 68 65 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62  he sqlite3_uri_b
31af0 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f  oolean(F,P,B) ro
31b00 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74 72  utine returns tr
31b10 75 65 20 28 31 29 20 69 66 20 74 68 65 0a 2a 2a  ue (1) if the.**
31b20 20 76 61 6c 75 65 20 6f 66 20 71 75 65 72 79 20   value of query 
31b30 70 61 72 61 6d 65 74 65 72 20 50 20 69 73 20 6f  parameter P is o
31b40 6e 65 20 6f 66 20 22 79 65 73 22 2c 20 22 74 72  ne of "yes", "tr
31b50 75 65 22 2c 20 6f 72 20 22 6f 6e 22 20 69 6e 20  ue", or "on" in 
31b60 61 6e 79 0a 2a 2a 20 63 61 73 65 20 6f 72 20 69  any.** case or i
31b70 66 20 74 68 65 20 76 61 6c 75 65 20 62 65 67 69  f the value begi
31b80 6e 73 20 77 69 74 68 20 61 20 6e 6f 6e 2d 7a 65  ns with a non-ze
31b90 72 6f 20 6e 75 6d 62 65 72 2e 20 20 54 68 65 20  ro number.  The 
31ba0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75 72 69 5f  .** sqlite3_uri_
31bb0 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72  boolean(F,P,B) r
31bc0 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 73 20  outines returns 
31bd0 66 61 6c 73 65 20 28 30 29 20 69 66 20 74 68 65  false (0) if the
31be0 20 76 61 6c 75 65 20 6f 66 0a 2a 2a 20 71 75 65   value of.** que
31bf0 72 79 20 70 61 72 61 6d 65 74 65 72 20 50 20 69  ry parameter P i
31c00 73 20 6f 6e 65 20 6f 66 20 22 6e 6f 22 2c 20 22  s one of "no", "
31c10 66 61 6c 73 65 22 2c 20 6f 72 20 22 6f 66 66 22  false", or "off"
31c20 20 69 6e 20 61 6e 79 20 63 61 73 65 20 6f 72 0a   in any case or.
31c30 2a 2a 20 69 66 20 74 68 65 20 76 61 6c 75 65 20  ** if the value 
31c40 62 65 67 69 6e 73 20 77 69 74 68 20 61 20 6e 75  begins with a nu
31c50 6d 65 72 69 63 20 7a 65 72 6f 2e 20 20 49 66 20  meric zero.  If 
31c60 50 20 69 73 20 6e 6f 74 20 61 20 71 75 65 72 79  P is not a query
31c70 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 6f 6e  .** parameter on
31c80 20 46 20 6f 72 20 69 66 20 74 68 65 20 76 61 6c   F or if the val
31c90 75 65 20 6f 66 20 50 20 69 73 20 64 6f 65 73 20  ue of P is does 
31ca0 6e 6f 74 20 6d 61 74 63 68 20 61 6e 79 20 6f 66  not match any of
31cb0 20 74 68 65 0a 2a 2a 20 61 62 6f 76 65 2c 20 74   the.** above, t
31cc0 68 65 6e 20 73 71 6c 69 74 65 33 5f 75 72 69 5f  hen sqlite3_uri_
31cd0 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72  boolean(F,P,B) r
31ce0 65 74 75 72 6e 73 20 28 42 21 3d 30 29 2e 0a 2a  eturns (B!=0)..*
31cf0 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
31d00 5f 75 72 69 5f 69 6e 74 36 34 28 46 2c 50 2c 44  _uri_int64(F,P,D
31d10 29 20 72 6f 75 74 69 6e 65 20 63 6f 6e 76 65 72  ) routine conver
31d20 74 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  ts the value of 
31d30 50 20 69 6e 74 6f 20 61 0a 2a 2a 20 36 34 2d 62  P into a.** 64-b
31d40 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65  it signed intege
31d50 72 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  r and returns th
31d60 61 74 20 69 6e 74 65 67 65 72 2c 20 6f 72 20 44  at integer, or D
31d70 20 69 66 20 50 20 64 6f 65 73 20 6e 6f 74 0a 2a   if P does not.*
31d80 2a 20 65 78 69 73 74 2e 20 20 49 66 20 74 68 65  * exist.  If the
31d90 20 76 61 6c 75 65 20 6f 66 20 50 20 69 73 20 73   value of P is s
31da0 6f 6d 65 74 68 69 6e 67 20 6f 74 68 65 72 20 74  omething other t
31db0 68 61 6e 20 61 6e 20 69 6e 74 65 67 65 72 2c 20  han an integer, 
31dc0 74 68 65 6e 0a 2a 2a 20 7a 65 72 6f 20 69 73 20  then.** zero is 
31dd0 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 20 0a 2a 2a  returned..** .**
31de0 20 49 66 20 46 20 69 73 20 61 20 4e 55 4c 4c 20   If F is a NULL 
31df0 70 6f 69 6e 74 65 72 2c 20 74 68 65 6e 20 73 71  pointer, then sq
31e00 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d 65  lite3_uri_parame
31e10 74 65 72 28 46 2c 50 29 20 72 65 74 75 72 6e 73  ter(F,P) returns
31e20 20 4e 55 4c 4c 20 61 6e 64 0a 2a 2a 20 73 71 6c   NULL and.** sql
31e30 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e  ite3_uri_boolean
31e40 28 46 2c 50 2c 42 29 20 72 65 74 75 72 6e 73 20  (F,P,B) returns 
31e50 42 2e 20 20 49 66 20 46 20 69 73 20 6e 6f 74 20  B.  If F is not 
31e60 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 61  a NULL pointer a
31e70 6e 64 0a 2a 2a 20 69 73 20 6e 6f 74 20 61 20 64  nd.** is not a d
31e80 61 74 61 62 61 73 65 20 66 69 6c 65 20 70 61 74  atabase file pat
31e90 68 6e 61 6d 65 20 70 6f 69 6e 74 65 72 20 74 68  hname pointer th
31ea0 61 74 20 53 51 4c 69 74 65 20 70 61 73 73 65 64  at SQLite passed
31eb0 20 69 6e 74 6f 20 74 68 65 20 78 4f 70 65 6e 0a   into the xOpen.
31ec0 2a 2a 20 56 46 53 20 6d 65 74 68 6f 64 2c 20 74  ** VFS method, t
31ed0 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72  hen the behavior
31ee0 20 6f 66 20 74 68 69 73 20 72 6f 75 74 69 6e 65   of this routine
31ef0 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 61 6e   is undefined an
31f00 64 20 70 72 6f 62 61 62 6c 79 0a 2a 2a 20 75 6e  d probably.** un
31f10 64 65 73 69 72 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a  desirable..**.**
31f20 20 53 65 65 20 74 68 65 20 5b 55 52 49 20 66 69   See the [URI fi
31f30 6c 65 6e 61 6d 65 5d 20 64 6f 63 75 6d 65 6e 74  lename] document
31f40 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69 74 69  ation for additi
31f50 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
31f60 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
31f70 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69  const char *sqli
31f80 74 65 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65  te3_uri_paramete
31f90 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46  r(const char *zF
31fa0 69 6c 65 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63  ilename, const c
31fb0 68 61 72 20 2a 7a 50 61 72 61 6d 29 3b 0a 53 51  har *zParam);.SQ
31fc0 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
31fd0 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e  ite3_uri_boolean
31fe0 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 69  (const char *zFi
31ff0 6c 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  le, const char *
32000 7a 50 61 72 61 6d 2c 20 69 6e 74 20 62 44 65 66  zParam, int bDef
32010 61 75 6c 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50  ault);.SQLITE_AP
32020 49 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  I sqlite3_int64 
32030 73 71 6c 69 74 65 33 5f 75 72 69 5f 69 6e 74 36  sqlite3_uri_int6
32040 34 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 63  4(const char*, c
32050 6f 6e 73 74 20 63 68 61 72 2a 2c 20 73 71 6c 69  onst char*, sqli
32060 74 65 33 5f 69 6e 74 36 34 29 3b 0a 0a 0a 2f 2a  te3_int64);.../*
32070 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 45 72  .** CAPI3REF: Er
32080 72 6f 72 20 43 6f 64 65 73 20 41 6e 64 20 4d 65  ror Codes And Me
32090 73 73 61 67 65 73 0a 2a 2a 20 4d 45 54 48 4f 44  ssages.** METHOD
320a0 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
320b0 5e 49 66 20 74 68 65 20 6d 6f 73 74 20 72 65 63  ^If the most rec
320c0 65 6e 74 20 73 71 6c 69 74 65 33 5f 2a 20 41 50  ent sqlite3_* AP
320d0 49 20 63 61 6c 6c 20 61 73 73 6f 63 69 61 74 65  I call associate
320e0 64 20 77 69 74 68 20 0a 2a 2a 20 5b 64 61 74 61  d with .** [data
320f0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
32100 20 44 20 66 61 69 6c 65 64 2c 20 74 68 65 6e 20   D failed, then 
32110 74 68 65 20 73 71 6c 69 74 65 33 5f 65 72 72 63  the sqlite3_errc
32120 6f 64 65 28 44 29 20 69 6e 74 65 72 66 61 63 65  ode(D) interface
32130 0a 2a 2a 20 72 65 74 75 72 6e 73 20 74 68 65 20  .** returns the 
32140 6e 75 6d 65 72 69 63 20 5b 72 65 73 75 6c 74 20  numeric [result 
32150 63 6f 64 65 5d 20 6f 72 20 5b 65 78 74 65 6e 64  code] or [extend
32160 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 5d 20  ed result code] 
32170 66 6f 72 20 74 68 61 74 0a 2a 2a 20 41 50 49 20  for that.** API 
32180 63 61 6c 6c 2e 0a 2a 2a 20 5e 54 68 65 20 73 71  call..** ^The sq
32190 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65  lite3_extended_e
321a0 72 72 63 6f 64 65 28 29 0a 2a 2a 20 69 6e 74 65  rrcode().** inte
321b0 72 66 61 63 65 20 69 73 20 74 68 65 20 73 61 6d  rface is the sam
321c0 65 20 65 78 63 65 70 74 20 74 68 61 74 20 69 74  e except that it
321d0 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e 73 20   always returns 
321e0 74 68 65 20 0a 2a 2a 20 5b 65 78 74 65 6e 64 65  the .** [extende
321f0 64 20 72 65 73 75 6c 74 20 63 6f 64 65 5d 20 65  d result code] e
32200 76 65 6e 20 77 68 65 6e 20 65 78 74 65 6e 64 65  ven when extende
32210 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61  d result codes a
32220 72 65 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2e 0a  re.** disabled..
32230 2a 2a 0a 2a 2a 20 54 68 65 20 76 61 6c 75 65 73  **.** The values
32240 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c   returned by sql
32250 69 74 65 33 5f 65 72 72 63 6f 64 65 28 29 20 61  ite3_errcode() a
32260 6e 64 2f 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33  nd/or.** sqlite3
32270 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64  _extended_errcod
32280 65 28 29 20 6d 69 67 68 74 20 63 68 61 6e 67 65  e() might change
32290 20 77 69 74 68 20 65 61 63 68 20 41 50 49 20 63   with each API c
322a0 61 6c 6c 2e 0a 2a 2a 20 45 78 63 65 70 74 2c 20  all..** Except, 
322b0 74 68 65 72 65 20 61 72 65 20 73 6f 6d 65 20 69  there are some i
322c0 6e 74 65 72 66 61 63 65 73 20 74 68 61 74 20 61  nterfaces that a
322d0 72 65 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f  re guaranteed to
322e0 20 6e 65 76 65 72 0a 2a 2a 20 63 68 61 6e 67 65   never.** change
322f0 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
32300 65 20 65 72 72 6f 72 20 63 6f 64 65 2e 20 20 54  e error code.  T
32310 68 65 20 65 72 72 6f 72 2d 63 6f 64 65 20 70 72  he error-code pr
32320 65 73 65 72 76 69 6e 67 0a 2a 2a 20 69 6e 74 65  eserving.** inte
32330 72 66 61 63 65 73 20 61 72 65 3a 0a 2a 2a 0a 2a  rfaces are:.**.*
32340 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 73  * <ul>.** <li> s
32350 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 29  qlite3_errcode()
32360 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65 33  .** <li> sqlite3
32370 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64  _extended_errcod
32380 65 28 29 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69  e().** <li> sqli
32390 74 65 33 5f 65 72 72 6d 73 67 28 29 0a 2a 2a 20  te3_errmsg().** 
323a0 3c 6c 69 3e 20 73 71 6c 69 74 65 33 5f 65 72 72  <li> sqlite3_err
323b0 6d 73 67 31 36 28 29 0a 2a 2a 20 3c 2f 75 6c 3e  msg16().** </ul>
323c0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
323d0 74 65 33 5f 65 72 72 6d 73 67 28 29 20 61 6e 64  te3_errmsg() and
323e0 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31   sqlite3_errmsg1
323f0 36 28 29 20 72 65 74 75 72 6e 20 45 6e 67 6c 69  6() return Engli
32400 73 68 2d 6c 61 6e 67 75 61 67 65 0a 2a 2a 20 74  sh-language.** t
32410 65 78 74 20 74 68 61 74 20 64 65 73 63 72 69 62  ext that describ
32420 65 73 20 74 68 65 20 65 72 72 6f 72 2c 20 61 73  es the error, as
32430 20 65 69 74 68 65 72 20 55 54 46 2d 38 20 6f 72   either UTF-8 or
32440 20 55 54 46 2d 31 36 20 72 65 73 70 65 63 74 69   UTF-16 respecti
32450 76 65 6c 79 2e 0a 2a 2a 20 5e 28 4d 65 6d 6f 72  vely..** ^(Memor
32460 79 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 65 72  y to hold the er
32470 72 6f 72 20 6d 65 73 73 61 67 65 20 73 74 72 69  ror message stri
32480 6e 67 20 69 73 20 6d 61 6e 61 67 65 64 20 69 6e  ng is managed in
32490 74 65 72 6e 61 6c 6c 79 2e 0a 2a 2a 20 54 68 65  ternally..** The
324a0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 65   application doe
324b0 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 77 6f  s not need to wo
324c0 72 72 79 20 61 62 6f 75 74 20 66 72 65 65 69 6e  rry about freein
324d0 67 20 74 68 65 20 72 65 73 75 6c 74 2e 0a 2a 2a  g the result..**
324e0 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20 65 72   However, the er
324f0 72 6f 72 20 73 74 72 69 6e 67 20 6d 69 67 68 74  ror string might
32500 20 62 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20   be overwritten 
32510 6f 72 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 62  or deallocated b
32520 79 0a 2a 2a 20 73 75 62 73 65 71 75 65 6e 74 20  y.** subsequent 
32530 63 61 6c 6c 73 20 74 6f 20 6f 74 68 65 72 20 53  calls to other S
32540 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 20  QLite interface 
32550 66 75 6e 63 74 69 6f 6e 73 2e 29 5e 0a 2a 2a 0a  functions.)^.**.
32560 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
32570 65 72 72 73 74 72 28 29 20 69 6e 74 65 72 66 61  errstr() interfa
32580 63 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 45  ce returns the E
32590 6e 67 6c 69 73 68 2d 6c 61 6e 67 75 61 67 65 20  nglish-language 
325a0 74 65 78 74 0a 2a 2a 20 74 68 61 74 20 64 65 73  text.** that des
325b0 63 72 69 62 65 73 20 74 68 65 20 5b 72 65 73 75  cribes the [resu
325c0 6c 74 20 63 6f 64 65 5d 2c 20 61 73 20 55 54 46  lt code], as UTF
325d0 2d 38 2e 0a 2a 2a 20 5e 28 4d 65 6d 6f 72 79 20  -8..** ^(Memory 
325e0 74 6f 20 68 6f 6c 64 20 74 68 65 20 65 72 72 6f  to hold the erro
325f0 72 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67  r message string
32600 20 69 73 20 6d 61 6e 61 67 65 64 20 69 6e 74 65   is managed inte
32610 72 6e 61 6c 6c 79 0a 2a 2a 20 61 6e 64 20 6d 75  rnally.** and mu
32620 73 74 20 6e 6f 74 20 62 65 20 66 72 65 65 64 20  st not be freed 
32630 62 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  by the applicati
32640 6f 6e 29 5e 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e  on)^..**.** When
32650 20 74 68 65 20 73 65 72 69 61 6c 69 7a 65 64 20   the serialized 
32660 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
32670 20 69 73 20 69 6e 20 75 73 65 2c 20 69 74 20 6d   is in use, it m
32680 69 67 68 74 20 62 65 20 74 68 65 0a 2a 2a 20 63  ight be the.** c
32690 61 73 65 20 74 68 61 74 20 61 20 73 65 63 6f 6e  ase that a secon
326a0 64 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 6f  d error occurs o
326b0 6e 20 61 20 73 65 70 61 72 61 74 65 20 74 68 72  n a separate thr
326c0 65 61 64 20 69 6e 20 62 65 74 77 65 65 6e 0a 2a  ead in between.*
326d0 2a 20 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68  * the time of th
326e0 65 20 66 69 72 73 74 20 65 72 72 6f 72 20 61 6e  e first error an
326f0 64 20 74 68 65 20 63 61 6c 6c 20 74 6f 20 74 68  d the call to th
32700 65 73 65 20 69 6e 74 65 72 66 61 63 65 73 2e 0a  ese interfaces..
32710 2a 2a 20 57 68 65 6e 20 74 68 61 74 20 68 61 70  ** When that hap
32720 70 65 6e 73 2c 20 74 68 65 20 73 65 63 6f 6e 64  pens, the second
32730 20 65 72 72 6f 72 20 77 69 6c 6c 20 62 65 20 72   error will be r
32740 65 70 6f 72 74 65 64 20 73 69 6e 63 65 20 74 68  eported since th
32750 65 73 65 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  ese.** interface
32760 73 20 61 6c 77 61 79 73 20 72 65 70 6f 72 74 20  s always report 
32770 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
32780 72 65 73 75 6c 74 2e 20 20 54 6f 20 61 76 6f 69  result.  To avoi
32790 64 0a 2a 2a 20 74 68 69 73 2c 20 65 61 63 68 20  d.** this, each 
327a0 74 68 72 65 61 64 20 63 61 6e 20 6f 62 74 61 69  thread can obtai
327b0 6e 20 65 78 63 6c 75 73 69 76 65 20 75 73 65 20  n exclusive use 
327c0 6f 66 20 74 68 65 20 5b 64 61 74 61 62 61 73 65  of the [database
327d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 0a 2a   connection] D.*
327e0 2a 20 62 79 20 69 6e 76 6f 6b 69 6e 67 20 5b 73  * by invoking [s
327f0 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 65 6e 74  qlite3_mutex_ent
32800 65 72 5d 28 5b 73 71 6c 69 74 65 33 5f 64 62 5f  er]([sqlite3_db_
32810 6d 75 74 65 78 5d 28 44 29 29 20 62 65 66 6f 72  mutex](D)) befor
32820 65 20 62 65 67 69 6e 6e 69 6e 67 0a 2a 2a 20 74  e beginning.** t
32830 6f 20 75 73 65 20 44 20 61 6e 64 20 69 6e 76 6f  o use D and invo
32840 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d 75  king [sqlite3_mu
32850 74 65 78 5f 6c 65 61 76 65 5d 28 5b 73 71 6c 69  tex_leave]([sqli
32860 74 65 33 5f 64 62 5f 6d 75 74 65 78 5d 28 44 29  te3_db_mutex](D)
32870 29 20 61 66 74 65 72 0a 2a 2a 20 61 6c 6c 20 63  ) after.** all c
32880 61 6c 6c 73 20 74 6f 20 74 68 65 20 69 6e 74 65  alls to the inte
32890 72 66 61 63 65 73 20 6c 69 73 74 65 64 20 68 65  rfaces listed he
328a0 72 65 20 61 72 65 20 63 6f 6d 70 6c 65 74 65 64  re are completed
328b0 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 20 69 6e  ..**.** If an in
328c0 74 65 72 66 61 63 65 20 66 61 69 6c 73 20 77 69  terface fails wi
328d0 74 68 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45  th SQLITE_MISUSE
328e0 2c 20 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65  , that means the
328f0 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 77 61   interface.** wa
32900 73 20 69 6e 76 6f 6b 65 64 20 69 6e 63 6f 72 72  s invoked incorr
32910 65 63 74 6c 79 20 62 79 20 74 68 65 20 61 70 70  ectly by the app
32920 6c 69 63 61 74 69 6f 6e 2e 20 20 49 6e 20 74 68  lication.  In th
32930 61 74 20 63 61 73 65 2c 20 74 68 65 0a 2a 2a 20  at case, the.** 
32940 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 20 6d  error code and m
32950 65 73 73 61 67 65 20 6d 61 79 20 6f 72 20 6d 61  essage may or ma
32960 79 20 6e 6f 74 20 62 65 20 73 65 74 2e 0a 2a 2f  y not be set..*/
32970 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
32980 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28  sqlite3_errcode(
32990 73 71 6c 69 74 65 33 20 2a 64 62 29 3b 0a 53 51  sqlite3 *db);.SQ
329a0 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
329b0 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72  ite3_extended_er
329c0 72 63 6f 64 65 28 73 71 6c 69 74 65 33 20 2a 64  rcode(sqlite3 *d
329d0 62 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63  b);.SQLITE_API c
329e0 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74  onst char *sqlit
329f0 65 33 5f 65 72 72 6d 73 67 28 73 71 6c 69 74 65  e3_errmsg(sqlite
32a00 33 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  3*);.SQLITE_API 
32a10 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69  const void *sqli
32a20 74 65 33 5f 65 72 72 6d 73 67 31 36 28 73 71 6c  te3_errmsg16(sql
32a30 69 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45 5f 41  ite3*);.SQLITE_A
32a40 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  PI const char *s
32a50 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28 69 6e  qlite3_errstr(in
32a60 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  t);../*.** CAPI3
32a70 52 45 46 3a 20 50 72 65 70 61 72 65 64 20 53 74  REF: Prepared St
32a80 61 74 65 6d 65 6e 74 20 4f 62 6a 65 63 74 0a 2a  atement Object.*
32a90 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 70 72 65  * KEYWORDS: {pre
32aa0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 7d  pared statement}
32ab0 20 7b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   {prepared state
32ac0 6d 65 6e 74 73 7d 0a 2a 2a 0a 2a 2a 20 41 6e 20  ments}.**.** An 
32ad0 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
32ae0 20 6f 62 6a 65 63 74 20 72 65 70 72 65 73 65 6e   object represen
32af0 74 73 20 61 20 73 69 6e 67 6c 65 20 53 51 4c 20  ts a single SQL 
32b00 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 0a 2a  statement that.*
32b10 2a 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69  * has been compi
32b20 6c 65 64 20 69 6e 74 6f 20 62 69 6e 61 72 79 20  led into binary 
32b30 66 6f 72 6d 20 61 6e 64 20 69 73 20 72 65 61 64  form and is read
32b40 79 20 74 6f 20 62 65 20 65 76 61 6c 75 61 74 65  y to be evaluate
32b50 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 6e 6b 20 6f  d..**.** Think o
32b60 66 20 65 61 63 68 20 53 51 4c 20 73 74 61 74 65  f each SQL state
32b70 6d 65 6e 74 20 61 73 20 61 20 73 65 70 61 72 61  ment as a separa
32b80 74 65 20 63 6f 6d 70 75 74 65 72 20 70 72 6f 67  te computer prog
32b90 72 61 6d 2e 20 20 54 68 65 0a 2a 2a 20 6f 72 69  ram.  The.** ori
32ba0 67 69 6e 61 6c 20 53 51 4c 20 74 65 78 74 20 69  ginal SQL text i
32bb0 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20  s source code.  
32bc0 41 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  A prepared state
32bd0 6d 65 6e 74 20 6f 62 6a 65 63 74 20 0a 2a 2a 20  ment object .** 
32be0 69 73 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20  is the compiled 
32bf0 6f 62 6a 65 63 74 20 63 6f 64 65 2e 20 20 41 6c  object code.  Al
32c00 6c 20 53 51 4c 20 6d 75 73 74 20 62 65 20 63 6f  l SQL must be co
32c10 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61 0a 2a  nverted into a.*
32c20 2a 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  * prepared state
32c30 6d 65 6e 74 20 62 65 66 6f 72 65 20 69 74 20 63  ment before it c
32c40 61 6e 20 62 65 20 72 75 6e 2e 0a 2a 2a 0a 2a 2a  an be run..**.**
32c50 20 54 68 65 20 6c 69 66 65 2d 63 79 63 6c 65 20   The life-cycle 
32c60 6f 66 20 61 20 70 72 65 70 61 72 65 64 20 73 74  of a prepared st
32c70 61 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74 20 75  atement object u
32c80 73 75 61 6c 6c 79 20 67 6f 65 73 20 6c 69 6b 65  sually goes like
32c90 20 74 68 69 73 3a 0a 2a 2a 0a 2a 2a 20 3c 6f 6c   this:.**.** <ol
32ca0 3e 0a 2a 2a 20 3c 6c 69 3e 20 43 72 65 61 74 65  >.** <li> Create
32cb0 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
32cc0 61 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74 20 75  atement object u
32cd0 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70 72  sing [sqlite3_pr
32ce0 65 70 61 72 65 5f 76 32 28 29 5d 2e 0a 2a 2a 20  epare_v2()]..** 
32cf0 3c 6c 69 3e 20 42 69 6e 64 20 76 61 6c 75 65 73  <li> Bind values
32d00 20 74 6f 20 5b 70 61 72 61 6d 65 74 65 72 73 5d   to [parameters]
32d10 20 75 73 69 6e 67 20 74 68 65 20 73 71 6c 69 74   using the sqlit
32d20 65 33 5f 62 69 6e 64 5f 2a 28 29 0a 2a 2a 20 20  e3_bind_*().**  
32d30 20 20 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a      interfaces..
32d40 2a 2a 20 3c 6c 69 3e 20 52 75 6e 20 74 68 65 20  ** <li> Run the 
32d50 53 51 4c 20 62 79 20 63 61 6c 6c 69 6e 67 20 5b  SQL by calling [
32d60 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20  sqlite3_step()] 
32d70 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65  one or more time
32d80 73 2e 0a 2a 2a 20 3c 6c 69 3e 20 52 65 73 65 74  s..** <li> Reset
32d90 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
32da0 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 5b 73  atement using [s
32db0 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20  qlite3_reset()] 
32dc0 74 68 65 6e 20 67 6f 20 62 61 63 6b 0a 2a 2a 20  then go back.** 
32dd0 20 20 20 20 20 74 6f 20 73 74 65 70 20 32 2e 20       to step 2. 
32de0 20 44 6f 20 74 68 69 73 20 7a 65 72 6f 20 6f 72   Do this zero or
32df0 20 6d 6f 72 65 20 74 69 6d 65 73 2e 0a 2a 2a 20   more times..** 
32e00 3c 6c 69 3e 20 44 65 73 74 72 6f 79 20 74 68 65  <li> Destroy the
32e10 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 20 5b 73   object using [s
32e20 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
32e30 29 5d 2e 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a 2f 0a  )]..** </ol>.*/.
32e40 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73  typedef struct s
32e50 71 6c 69 74 65 33 5f 73 74 6d 74 20 73 71 6c 69  qlite3_stmt sqli
32e60 74 65 33 5f 73 74 6d 74 3b 0a 0a 2f 2a 0a 2a 2a  te3_stmt;../*.**
32e70 20 43 41 50 49 33 52 45 46 3a 20 52 75 6e 2d 74   CAPI3REF: Run-t
32e80 69 6d 65 20 4c 69 6d 69 74 73 0a 2a 2a 20 4d 45  ime Limits.** ME
32e90 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  THOD: sqlite3.**
32ea0 0a 2a 2a 20 5e 28 54 68 69 73 20 69 6e 74 65 72  .** ^(This inter
32eb0 66 61 63 65 20 61 6c 6c 6f 77 73 20 74 68 65 20  face allows the 
32ec0 73 69 7a 65 20 6f 66 20 76 61 72 69 6f 75 73 20  size of various 
32ed0 63 6f 6e 73 74 72 75 63 74 73 20 74 6f 20 62 65  constructs to be
32ee0 20 6c 69 6d 69 74 65 64 0a 2a 2a 20 6f 6e 20 61   limited.** on a
32ef0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 79 20 63   connection by c
32f00 6f 6e 6e 65 63 74 69 6f 6e 20 62 61 73 69 73 2e  onnection basis.
32f10 20 20 54 68 65 20 66 69 72 73 74 20 70 61 72 61    The first para
32f20 6d 65 74 65 72 20 69 73 20 74 68 65 0a 2a 2a 20  meter is the.** 
32f30 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
32f40 74 69 6f 6e 5d 20 77 68 6f 73 65 20 6c 69 6d 69  tion] whose limi
32f50 74 20 69 73 20 74 6f 20 62 65 20 73 65 74 20 6f  t is to be set o
32f60 72 20 71 75 65 72 69 65 64 2e 20 20 54 68 65 0a  r queried.  The.
32f70 2a 2a 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  ** second parame
32f80 74 65 72 20 69 73 20 6f 6e 65 20 6f 66 20 74 68  ter is one of th
32f90 65 20 5b 6c 69 6d 69 74 20 63 61 74 65 67 6f 72  e [limit categor
32fa0 69 65 73 5d 20 74 68 61 74 20 64 65 66 69 6e 65  ies] that define
32fb0 20 61 0a 2a 2a 20 63 6c 61 73 73 20 6f 66 20 63   a.** class of c
32fc0 6f 6e 73 74 72 75 63 74 73 20 74 6f 20 62 65 20  onstructs to be 
32fd0 73 69 7a 65 20 6c 69 6d 69 74 65 64 2e 20 20 54  size limited.  T
32fe0 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74  he third paramet
32ff0 65 72 20 69 73 20 74 68 65 0a 2a 2a 20 6e 65 77  er is the.** new
33000 20 6c 69 6d 69 74 20 66 6f 72 20 74 68 61 74 20   limit for that 
33010 63 6f 6e 73 74 72 75 63 74 2e 29 5e 0a 2a 2a 0a  construct.)^.**.
33020 2a 2a 20 5e 49 66 20 74 68 65 20 6e 65 77 20 6c  ** ^If the new l
33030 69 6d 69 74 20 69 73 20 61 20 6e 65 67 61 74 69  imit is a negati
33040 76 65 20 6e 75 6d 62 65 72 2c 20 74 68 65 20 6c  ve number, the l
33050 69 6d 69 74 20 69 73 20 75 6e 63 68 61 6e 67 65  imit is unchange
33060 64 2e 0a 2a 2a 20 5e 28 46 6f 72 20 65 61 63 68  d..** ^(For each
33070 20 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 79 20   limit category 
33080 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 3c 69 3e  SQLITE_LIMIT_<i>
33090 4e 41 4d 45 3c 2f 69 3e 20 74 68 65 72 65 20 69  NAME</i> there i
330a0 73 20 61 20 0a 2a 2a 20 5b 6c 69 6d 69 74 73 20  s a .** [limits 
330b0 7c 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75  | hard upper bou
330c0 6e 64 5d 0a 2a 2a 20 73 65 74 20 61 74 20 63 6f  nd].** set at co
330d0 6d 70 69 6c 65 2d 74 69 6d 65 20 62 79 20 61 20  mpile-time by a 
330e0 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C preprocessor m
330f0 61 63 72 6f 20 63 61 6c 6c 65 64 0a 2a 2a 20 5b  acro called.** [
33100 6c 69 6d 69 74 73 20 7c 20 53 51 4c 49 54 45 5f  limits | SQLITE_
33110 4d 41 58 5f 3c 69 3e 4e 41 4d 45 3c 2f 69 3e 5d  MAX_<i>NAME</i>]
33120 2e 0a 2a 2a 20 28 54 68 65 20 22 5f 4c 49 4d 49  ..** (The "_LIMI
33130 54 5f 22 20 69 6e 20 74 68 65 20 6e 61 6d 65 20  T_" in the name 
33140 69 73 20 63 68 61 6e 67 65 64 20 74 6f 20 22 5f  is changed to "_
33150 4d 41 58 5f 22 2e 29 29 5e 0a 2a 2a 20 5e 41 74  MAX_".))^.** ^At
33160 74 65 6d 70 74 73 20 74 6f 20 69 6e 63 72 65 61  tempts to increa
33170 73 65 20 61 20 6c 69 6d 69 74 20 61 62 6f 76 65  se a limit above
33180 20 69 74 73 20 68 61 72 64 20 75 70 70 65 72 20   its hard upper 
33190 62 6f 75 6e 64 20 61 72 65 0a 2a 2a 20 73 69 6c  bound are.** sil
331a0 65 6e 74 6c 79 20 74 72 75 6e 63 61 74 65 64 20  ently truncated 
331b0 74 6f 20 74 68 65 20 68 61 72 64 20 75 70 70 65  to the hard uppe
331c0 72 20 62 6f 75 6e 64 2e 0a 2a 2a 0a 2a 2a 20 5e  r bound..**.** ^
331d0 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68  Regardless of wh
331e0 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
331f0 20 6c 69 6d 69 74 20 77 61 73 20 63 68 61 6e 67   limit was chang
33200 65 64 2c 20 74 68 65 20 0a 2a 2a 20 5b 73 71 6c  ed, the .** [sql
33210 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20 69 6e  ite3_limit()] in
33220 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20  terface returns 
33230 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75 65 20  the prior value 
33240 6f 66 20 74 68 65 20 6c 69 6d 69 74 2e 0a 2a 2a  of the limit..**
33250 20 5e 48 65 6e 63 65 2c 20 74 6f 20 66 69 6e 64   ^Hence, to find
33260 20 74 68 65 20 63 75 72 72 65 6e 74 20 76 61 6c   the current val
33270 75 65 20 6f 66 20 61 20 6c 69 6d 69 74 20 77 69  ue of a limit wi
33280 74 68 6f 75 74 20 63 68 61 6e 67 69 6e 67 20 69  thout changing i
33290 74 2c 0a 2a 2a 20 73 69 6d 70 6c 79 20 69 6e 76  t,.** simply inv
332a0 6f 6b 65 20 74 68 69 73 20 69 6e 74 65 72 66 61  oke this interfa
332b0 63 65 20 77 69 74 68 20 74 68 65 20 74 68 69 72  ce with the thir
332c0 64 20 70 61 72 61 6d 65 74 65 72 20 73 65 74 20  d parameter set 
332d0 74 6f 20 2d 31 2e 0a 2a 2a 0a 2a 2a 20 52 75 6e  to -1..**.** Run
332e0 2d 74 69 6d 65 20 6c 69 6d 69 74 73 20 61 72 65  -time limits are
332f0 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73   intended for us
33300 65 20 69 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  e in application
33310 73 20 74 68 61 74 20 6d 61 6e 61 67 65 0a 2a 2a  s that manage.**
33320 20 62 6f 74 68 20 74 68 65 69 72 20 6f 77 6e 20   both their own 
33330 69 6e 74 65 72 6e 61 6c 20 64 61 74 61 62 61 73  internal databas
33340 65 20 61 6e 64 20 61 6c 73 6f 20 64 61 74 61 62  e and also datab
33350 61 73 65 73 20 74 68 61 74 20 61 72 65 20 63 6f  ases that are co
33360 6e 74 72 6f 6c 6c 65 64 0a 2a 2a 20 62 79 20 75  ntrolled.** by u
33370 6e 74 72 75 73 74 65 64 20 65 78 74 65 72 6e 61  ntrusted externa
33380 6c 20 73 6f 75 72 63 65 73 2e 20 20 41 6e 20 65  l sources.  An e
33390 78 61 6d 70 6c 65 20 61 70 70 6c 69 63 61 74 69  xample applicati
333a0 6f 6e 20 6d 69 67 68 74 20 62 65 20 61 0a 2a 2a  on might be a.**
333b0 20 77 65 62 20 62 72 6f 77 73 65 72 20 74 68 61   web browser tha
333c0 74 20 68 61 73 20 69 74 73 20 6f 77 6e 20 64 61  t has its own da
333d0 74 61 62 61 73 65 73 20 66 6f 72 20 73 74 6f 72  tabases for stor
333e0 69 6e 67 20 68 69 73 74 6f 72 79 20 61 6e 64 0a  ing history and.
333f0 2a 2a 20 73 65 70 61 72 61 74 65 20 64 61 74 61  ** separate data
33400 62 61 73 65 73 20 63 6f 6e 74 72 6f 6c 6c 65 64  bases controlled
33410 20 62 79 20 4a 61 76 61 53 63 72 69 70 74 20 61   by JavaScript a
33420 70 70 6c 69 63 61 74 69 6f 6e 73 20 64 6f 77 6e  pplications down
33430 6c 6f 61 64 65 64 0a 2a 2a 20 6f 66 66 20 74 68  loaded.** off th
33440 65 20 49 6e 74 65 72 6e 65 74 2e 20 20 54 68 65  e Internet.  The
33450 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61 62 61   internal databa
33460 73 65 73 20 63 61 6e 20 62 65 20 67 69 76 65 6e  ses can be given
33470 20 74 68 65 0a 2a 2a 20 6c 61 72 67 65 2c 20 64   the.** large, d
33480 65 66 61 75 6c 74 20 6c 69 6d 69 74 73 2e 20 20  efault limits.  
33490 44 61 74 61 62 61 73 65 73 20 6d 61 6e 61 67 65  Databases manage
334a0 64 20 62 79 20 65 78 74 65 72 6e 61 6c 20 73 6f  d by external so
334b0 75 72 63 65 73 20 63 61 6e 0a 2a 2a 20 62 65 20  urces can.** be 
334c0 67 69 76 65 6e 20 6d 75 63 68 20 73 6d 61 6c 6c  given much small
334d0 65 72 20 6c 69 6d 69 74 73 20 64 65 73 69 67 6e  er limits design
334e0 65 64 20 74 6f 20 70 72 65 76 65 6e 74 20 61 20  ed to prevent a 
334f0 64 65 6e 69 61 6c 20 6f 66 20 73 65 72 76 69 63  denial of servic
33500 65 0a 2a 2a 20 61 74 74 61 63 6b 2e 20 20 44 65  e.** attack.  De
33510 76 65 6c 6f 70 65 72 73 20 6d 69 67 68 74 20 61  velopers might a
33520 6c 73 6f 20 77 61 6e 74 20 74 6f 20 75 73 65 20  lso want to use 
33530 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  the [sqlite3_set
33540 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d 0a 2a  _authorizer()].*
33550 2a 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 66  * interface to f
33560 75 72 74 68 65 72 20 63 6f 6e 74 72 6f 6c 20 75  urther control u
33570 6e 74 72 75 73 74 65 64 20 53 51 4c 2e 20 20 54  ntrusted SQL.  T
33580 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64  he size of the d
33590 61 74 61 62 61 73 65 0a 2a 2a 20 63 72 65 61 74  atabase.** creat
335a0 65 64 20 62 79 20 61 6e 20 75 6e 74 72 75 73 74  ed by an untrust
335b0 65 64 20 73 63 72 69 70 74 20 63 61 6e 20 62 65  ed script can be
335c0 20 63 6f 6e 74 61 69 6e 65 64 20 75 73 69 6e 67   contained using
335d0 20 74 68 65 0a 2a 2a 20 5b 6d 61 78 5f 70 61 67   the.** [max_pag
335e0 65 5f 63 6f 75 6e 74 5d 20 5b 50 52 41 47 4d 41  e_count] [PRAGMA
335f0 5d 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 72 75 6e  ]..**.** New run
33600 2d 74 69 6d 65 20 6c 69 6d 69 74 20 63 61 74 65  -time limit cate
33610 67 6f 72 69 65 73 20 6d 61 79 20 62 65 20 61 64  gories may be ad
33620 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65  ded in future re
33630 6c 65 61 73 65 73 2e 0a 2a 2f 0a 53 51 4c 49 54  leases..*/.SQLIT
33640 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
33650 33 5f 6c 69 6d 69 74 28 73 71 6c 69 74 65 33 2a  3_limit(sqlite3*
33660 2c 20 69 6e 74 20 69 64 2c 20 69 6e 74 20 6e 65  , int id, int ne
33670 77 56 61 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  wVal);../*.** CA
33680 50 49 33 52 45 46 3a 20 52 75 6e 2d 54 69 6d 65  PI3REF: Run-Time
33690 20 4c 69 6d 69 74 20 43 61 74 65 67 6f 72 69 65   Limit Categorie
336a0 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b  s.** KEYWORDS: {
336b0 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 79 7d 20  limit category} 
336c0 7b 2a 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 69  {*limit categori
336d0 65 73 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  es}.**.** These 
336e0 63 6f 6e 73 74 61 6e 74 73 20 64 65 66 69 6e 65  constants define
336f0 20 76 61 72 69 6f 75 73 20 70 65 72 66 6f 72 6d   various perform
33700 61 6e 63 65 20 6c 69 6d 69 74 73 0a 2a 2a 20 74  ance limits.** t
33710 68 61 74 20 63 61 6e 20 62 65 20 6c 6f 77 65 72  hat can be lower
33720 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75  ed at run-time u
33730 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6c 69  sing [sqlite3_li
33740 6d 69 74 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 73  mit()]..** The s
33750 79 6e 6f 70 73 69 73 20 6f 66 20 74 68 65 20 6d  ynopsis of the m
33760 65 61 6e 69 6e 67 73 20 6f 66 20 74 68 65 20 76  eanings of the v
33770 61 72 69 6f 75 73 20 6c 69 6d 69 74 73 20 69 73  arious limits is
33780 20 73 68 6f 77 6e 20 62 65 6c 6f 77 2e 0a 2a 2a   shown below..**
33790 20 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   Additional info
337a0 72 6d 61 74 69 6f 6e 20 69 73 20 61 76 61 69 6c  rmation is avail
337b0 61 62 6c 65 20 61 74 20 5b 6c 69 6d 69 74 73 20  able at [limits 
337c0 7c 20 4c 69 6d 69 74 73 20 69 6e 20 53 51 4c 69  | Limits in SQLi
337d0 74 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a  te]..**.** <dl>.
337e0 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  ** [[SQLITE_LIMI
337f0 54 5f 4c 45 4e 47 54 48 5d 5d 20 5e 28 3c 64 74  T_LENGTH]] ^(<dt
33800 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45  >SQLITE_LIMIT_LE
33810 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  NGTH</dt>.** <dd
33820 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 73 69 7a  >The maximum siz
33830 65 20 6f 66 20 61 6e 79 20 73 74 72 69 6e 67 20  e of any string 
33840 6f 72 20 42 4c 4f 42 20 6f 72 20 74 61 62 6c 65  or BLOB or table
33850 20 72 6f 77 2c 20 69 6e 20 62 79 74 65 73 2e 3c   row, in bytes.<
33860 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  dd>)^.**.** [[SQ
33870 4c 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c 5f 4c  LITE_LIMIT_SQL_L
33880 45 4e 47 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51  ENGTH]] ^(<dt>SQ
33890 4c 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c 5f 4c  LITE_LIMIT_SQL_L
338a0 45 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  ENGTH</dt>.** <d
338b0 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65  d>The maximum le
338c0 6e 67 74 68 20 6f 66 20 61 6e 20 53 51 4c 20 73  ngth of an SQL s
338d0 74 61 74 65 6d 65 6e 74 2c 20 69 6e 20 62 79 74  tatement, in byt
338e0 65 73 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a  es.</dd>)^.**.**
338f0 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
33900 43 4f 4c 55 4d 4e 5d 5d 20 5e 28 3c 64 74 3e 53  COLUMN]] ^(<dt>S
33910 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55  QLITE_LIMIT_COLU
33920 4d 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  MN</dt>.** <dd>T
33930 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
33940 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
33950 61 20 74 61 62 6c 65 20 64 65 66 69 6e 69 74 69  a table definiti
33960 6f 6e 20 6f 72 20 69 6e 20 74 68 65 0a 2a 2a 20  on or in the.** 
33970 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20  result set of a 
33980 5b 53 45 4c 45 43 54 5d 20 6f 72 20 74 68 65 20  [SELECT] or the 
33990 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
339a0 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20  f columns in an 
339b0 69 6e 64 65 78 0a 2a 2a 20 6f 72 20 69 6e 20 61  index.** or in a
339c0 6e 20 4f 52 44 45 52 20 42 59 20 6f 72 20 47 52  n ORDER BY or GR
339d0 4f 55 50 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f  OUP BY clause.</
339e0 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  dd>)^.**.** [[SQ
339f0 4c 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50 52 5f  LITE_LIMIT_EXPR_
33a00 44 45 50 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51  DEPTH]] ^(<dt>SQ
33a10 4c 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50 52 5f  LITE_LIMIT_EXPR_
33a20 44 45 50 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  DEPTH</dt>.** <d
33a30 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 64 65  d>The maximum de
33a40 70 74 68 20 6f 66 20 74 68 65 20 70 61 72 73 65  pth of the parse
33a50 20 74 72 65 65 20 6f 6e 20 61 6e 79 20 65 78 70   tree on any exp
33a60 72 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e 29 5e 0a  ression.</dd>)^.
33a70 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c  **.** [[SQLITE_L
33a80 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  IMIT_COMPOUND_SE
33a90 4c 45 43 54 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c  LECT]] ^(<dt>SQL
33aa0 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f 55  ITE_LIMIT_COMPOU
33ab0 4e 44 5f 53 45 4c 45 43 54 3c 2f 64 74 3e 0a 2a  ND_SELECT</dt>.*
33ac0 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75  * <dd>The maximu
33ad0 6d 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d  m number of term
33ae0 73 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20  s in a compound 
33af0 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
33b00 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b  .</dd>)^.**.** [
33b10 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 44  [SQLITE_LIMIT_VD
33b20 42 45 5f 4f 50 5d 5d 20 5e 28 3c 64 74 3e 53 51  BE_OP]] ^(<dt>SQ
33b30 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 44 42 45 5f  LITE_LIMIT_VDBE_
33b40 4f 50 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  OP</dt>.** <dd>T
33b50 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
33b60 72 20 6f 66 20 69 6e 73 74 72 75 63 74 69 6f 6e  r of instruction
33b70 73 20 69 6e 20 61 20 76 69 72 74 75 61 6c 20 6d  s in a virtual m
33b80 61 63 68 69 6e 65 20 70 72 6f 67 72 61 6d 0a 2a  achine program.*
33b90 2a 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d  * used to implem
33ba0 65 6e 74 20 61 6e 20 53 51 4c 20 73 74 61 74 65  ent an SQL state
33bb0 6d 65 6e 74 2e 20 20 49 66 20 5b 73 71 6c 69 74  ment.  If [sqlit
33bc0 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d  e3_prepare_v2()]
33bd0 20 6f 72 0a 2a 2a 20 74 68 65 20 65 71 75 69 76   or.** the equiv
33be0 61 6c 65 6e 74 20 74 72 69 65 73 20 74 6f 20 61  alent tries to a
33bf0 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f  llocate space fo
33c00 72 20 6d 6f 72 65 20 74 68 61 6e 20 74 68 69 73  r more than this
33c10 20 6d 61 6e 79 20 6f 70 63 6f 64 65 73 0a 2a 2a   many opcodes.**
33c20 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 70 72 65   in a single pre
33c30 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2c  pared statement,
33c40 20 61 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d   an SQLITE_NOMEM
33c50 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e   error is return
33c60 65 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a  ed.</dd>)^.**.**
33c70 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
33c80 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 5d 20 5e  FUNCTION_ARG]] ^
33c90 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49  (<dt>SQLITE_LIMI
33ca0 54 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 3c 2f  T_FUNCTION_ARG</
33cb0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
33cc0 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
33cd0 20 61 72 67 75 6d 65 6e 74 73 20 6f 6e 20 61 20   arguments on a 
33ce0 66 75 6e 63 74 69 6f 6e 2e 3c 2f 64 64 3e 29 5e  function.</dd>)^
33cf0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
33d00 4c 49 4d 49 54 5f 41 54 54 41 43 48 45 44 5d 5d  LIMIT_ATTACHED]]
33d10 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
33d20 4d 49 54 5f 41 54 54 41 43 48 45 44 3c 2f 64 74  MIT_ATTACHED</dt
33d30 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78  >.** <dd>The max
33d40 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 5b  imum number of [
33d50 41 54 54 41 43 48 20 7c 20 61 74 74 61 63 68 65  ATTACH | attache
33d60 64 20 64 61 74 61 62 61 73 65 73 5d 2e 29 5e 3c  d databases].)^<
33d70 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
33d80 49 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50  ITE_LIMIT_LIKE_P
33d90 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 5d 0a  ATTERN_LENGTH]].
33da0 2a 2a 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f  ** ^(<dt>SQLITE_
33db0 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45  LIMIT_LIKE_PATTE
33dc0 52 4e 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a 2a  RN_LENGTH</dt>.*
33dd0 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75  * <dd>The maximu
33de0 6d 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20  m length of the 
33df0 70 61 74 74 65 72 6e 20 61 72 67 75 6d 65 6e 74  pattern argument
33e00 20 74 6f 20 74 68 65 20 5b 4c 49 4b 45 5d 20 6f   to the [LIKE] o
33e10 72 0a 2a 2a 20 5b 47 4c 4f 42 5d 20 6f 70 65 72  r.** [GLOB] oper
33e20 61 74 6f 72 73 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a  ators.</dd>)^.**
33e30 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d  .** [[SQLITE_LIM
33e40 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42  IT_VARIABLE_NUMB
33e50 45 52 5d 5d 0a 2a 2a 20 5e 28 3c 64 74 3e 53 51  ER]].** ^(<dt>SQ
33e60 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49 41  LITE_LIMIT_VARIA
33e70 42 4c 45 5f 4e 55 4d 42 45 52 3c 2f 64 74 3e 0a  BLE_NUMBER</dt>.
33e80 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d  ** <dd>The maxim
33e90 75 6d 20 69 6e 64 65 78 20 6e 75 6d 62 65 72 20  um index number 
33ea0 6f 66 20 61 6e 79 20 5b 70 61 72 61 6d 65 74 65  of any [paramete
33eb0 72 5d 20 69 6e 20 61 6e 20 53 51 4c 20 73 74 61  r] in an SQL sta
33ec0 74 65 6d 65 6e 74 2e 29 5e 0a 2a 2a 0a 2a 2a 20  tement.)^.**.** 
33ed0 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 54  [[SQLITE_LIMIT_T
33ee0 52 49 47 47 45 52 5f 44 45 50 54 48 5d 5d 20 5e  RIGGER_DEPTH]] ^
33ef0 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49  (<dt>SQLITE_LIMI
33f00 54 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48 3c  T_TRIGGER_DEPTH<
33f10 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20  /dt>.** <dd>The 
33f20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66  maximum depth of
33f30 20 72 65 63 75 72 73 69 6f 6e 20 66 6f 72 20 74   recursion for t
33f40 72 69 67 67 65 72 73 2e 3c 2f 64 64 3e 29 5e 0a  riggers.</dd>)^.
33f50 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c  **.** [[SQLITE_L
33f60 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  IMIT_WORKER_THRE
33f70 41 44 53 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49  ADS]] ^(<dt>SQLI
33f80 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f  TE_LIMIT_WORKER_
33f90 54 48 52 45 41 44 53 3c 2f 64 74 3e 0a 2a 2a 20  THREADS</dt>.** 
33fa0 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
33fb0 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69  number of auxili
33fc0 61 72 79 20 77 6f 72 6b 65 72 20 74 68 72 65 61  ary worker threa
33fd0 64 73 20 74 68 61 74 20 61 20 73 69 6e 67 6c 65  ds that a single
33fe0 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74  .** [prepared st
33ff0 61 74 65 6d 65 6e 74 5d 20 6d 61 79 20 73 74 61  atement] may sta
34000 72 74 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 20 3c 2f  rt.</dd>)^.** </
34010 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  dl>.*/.#define S
34020 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47  QLITE_LIMIT_LENG
34030 54 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20  TH              
34040 20 20 20 20 20 20 30 0a 23 64 65 66 69 6e 65 20        0.#define 
34050 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c  SQLITE_LIMIT_SQL
34060 5f 4c 45 4e 47 54 48 20 20 20 20 20 20 20 20 20  _LENGTH         
34070 20 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65         1.#define
34080 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f   SQLITE_LIMIT_CO
34090 4c 55 4d 4e 20 20 20 20 20 20 20 20 20 20 20 20  LUMN            
340a0 20 20 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e          2.#defin
340b0 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 45  e SQLITE_LIMIT_E
340c0 58 50 52 5f 44 45 50 54 48 20 20 20 20 20 20 20  XPR_DEPTH       
340d0 20 20 20 20 20 20 20 20 20 33 0a 23 64 65 66 69           3.#defi
340e0 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  ne SQLITE_LIMIT_
340f0 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 20  COMPOUND_SELECT 
34100 20 20 20 20 20 20 20 20 20 20 34 0a 23 64 65 66            4.#def
34110 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54  ine SQLITE_LIMIT
34120 5f 56 44 42 45 5f 4f 50 20 20 20 20 20 20 20 20  _VDBE_OP        
34130 20 20 20 20 20 20 20 20 20 20 20 35 0a 23 64 65             5.#de
34140 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49  fine SQLITE_LIMI
34150 54 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 20 20  T_FUNCTION_ARG  
34160 20 20 20 20 20 20 20 20 20 20 20 20 36 0a 23 64              6.#d
34170 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d  efine SQLITE_LIM
34180 49 54 5f 41 54 54 41 43 48 45 44 20 20 20 20 20  IT_ATTACHED     
34190 20 20 20 20 20 20 20 20 20 20 20 20 20 37 0a 23               7.#
341a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49  define SQLITE_LI
341b0 4d 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e  MIT_LIKE_PATTERN
341c0 5f 4c 45 4e 47 54 48 20 20 20 20 20 20 20 38 0a  _LENGTH       8.
341d0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
341e0 49 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55  IMIT_VARIABLE_NU
341f0 4d 42 45 52 20 20 20 20 20 20 20 20 20 20 20 39  MBER           9
34200 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
34210 4c 49 4d 49 54 5f 54 52 49 47 47 45 52 5f 44 45  LIMIT_TRIGGER_DE
34220 50 54 48 20 20 20 20 20 20 20 20 20 20 20 20 31  PTH            1
34230 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
34240 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48  _LIMIT_WORKER_TH
34250 52 45 41 44 53 20 20 20 20 20 20 20 20 20 20 20  READS           
34260 31 31 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  11../*.** CAPI3R
34270 45 46 3a 20 50 72 65 70 61 72 65 20 46 6c 61 67  EF: Prepare Flag
34280 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f  s.**.** These co
34290 6e 73 74 61 6e 74 73 20 64 65 66 69 6e 65 20 76  nstants define v
342a0 61 72 69 6f 75 73 20 66 6c 61 67 73 20 74 68 61  arious flags tha
342b0 74 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20  t can be passed 
342c0 69 6e 74 6f 0a 2a 2a 20 22 70 72 65 70 46 6c 61  into.** "prepFla
342d0 67 73 22 20 70 61 72 61 6d 65 74 65 72 20 6f 66  gs" parameter of
342e0 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72   the [sqlite3_pr
342f0 65 70 61 72 65 5f 76 33 28 29 5d 20 61 6e 64 0a  epare_v3()] and.
34300 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ** [sqlite3_prep
34310 61 72 65 31 36 5f 76 33 28 29 5d 20 69 6e 74 65  are16_v3()] inte
34320 72 66 61 63 65 73 2e 0a 2a 2a 0a 2a 2a 20 4e 65  rfaces..**.** Ne
34330 77 20 66 6c 61 67 73 20 6d 61 79 20 62 65 20 61  w flags may be a
34340 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72  dded in future r
34350 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74  eleases of SQLit
34360 65 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a  e..**.** <dl>.**
34370 20 5b 5b 53 51 4c 49 54 45 5f 50 52 45 50 41 52   [[SQLITE_PREPAR
34380 45 5f 50 45 52 53 49 53 54 45 4e 54 5d 5d 20 5e  E_PERSISTENT]] ^
34390 28 3c 64 74 3e 53 51 4c 49 54 45 5f 50 52 45 50  (<dt>SQLITE_PREP
343a0 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54 3c 2f  ARE_PERSISTENT</
343b0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 53  dt>.** <dd>The S
343c0 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45  QLITE_PREPARE_PE
343d0 52 53 49 53 54 45 4e 54 20 66 6c 61 67 20 69 73  RSISTENT flag is
343e0 20 61 20 68 69 6e 74 20 74 6f 20 74 68 65 20 71   a hint to the q
343f0 75 65 72 79 20 70 6c 61 6e 6e 65 72 0a 2a 2a 20  uery planner.** 
34400 74 68 61 74 20 74 68 65 20 70 72 65 70 61 72 65  that the prepare
34410 64 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c  d statement will
34420 20 62 65 20 72 65 74 61 69 6e 65 64 20 66 6f 72   be retained for
34430 20 61 20 6c 6f 6e 67 20 74 69 6d 65 20 61 6e 64   a long time and
34440 0a 2a 2a 20 70 72 6f 62 61 62 6c 79 20 72 65 75  .** probably reu
34450 73 65 64 20 6d 61 6e 79 20 74 69 6d 65 73 2e 29  sed many times.)
34460 5e 20 5e 57 69 74 68 6f 75 74 20 74 68 69 73 20  ^ ^Without this 
34470 66 6c 61 67 2c 20 5b 73 71 6c 69 74 65 33 5f 70  flag, [sqlite3_p
34480 72 65 70 61 72 65 5f 76 33 28 29 5d 0a 2a 2a 20  repare_v3()].** 
34490 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  and [sqlite3_pre
344a0 70 61 72 65 31 36 5f 76 33 28 29 5d 20 61 73 73  pare16_v3()] ass
344b0 75 6d 65 20 74 68 61 74 20 74 68 65 20 70 72 65  ume that the pre
344c0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20  pared statement 
344d0 77 69 6c 6c 20 0a 2a 2a 20 62 65 20 75 73 65 64  will .** be used
344e0 20 6a 75 73 74 20 6f 6e 63 65 20 6f 72 20 61 74   just once or at
344f0 20 6d 6f 73 74 20 61 20 66 65 77 20 74 69 6d 65   most a few time
34500 73 20 61 6e 64 20 74 68 65 6e 20 64 65 73 74 72  s and then destr
34510 6f 79 65 64 20 75 73 69 6e 67 0a 2a 2a 20 5b 73  oyed using.** [s
34520 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
34530 29 5d 20 72 65 6c 61 74 69 76 65 6c 79 20 73 6f  )] relatively so
34540 6f 6e 2e 20 54 68 65 20 63 75 72 72 65 6e 74 20  on. The current 
34550 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61  implementation a
34560 63 74 73 0a 2a 2a 20 6f 6e 20 74 68 69 73 20 68  cts.** on this h
34570 69 6e 74 20 62 79 20 61 76 6f 69 64 69 6e 67 20  int by avoiding 
34580 74 68 65 20 75 73 65 20 6f 66 20 5b 6c 6f 6f 6b  the use of [look
34590 61 73 69 64 65 20 6d 65 6d 6f 72 79 5d 20 73 6f  aside memory] so
345a0 20 61 73 20 6e 6f 74 20 74 6f 0a 2a 2a 20 64 65   as not to.** de
345b0 70 6c 65 74 65 20 74 68 65 20 6c 69 6d 69 74 65  plete the limite
345c0 64 20 73 74 6f 72 65 20 6f 66 20 6c 6f 6f 6b 61  d store of looka
345d0 73 69 64 65 20 6d 65 6d 6f 72 79 2e 20 46 75 74  side memory. Fut
345e0 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a  ure versions of.
345f0 2a 2a 20 53 51 4c 69 74 65 20 6d 61 79 20 61 63  ** SQLite may ac
34600 74 20 6f 6e 20 74 68 69 73 20 68 69 6e 74 20 64  t on this hint d
34610 69 66 66 65 72 65 6e 74 6c 79 2e 0a 2a 2a 0a 2a  ifferently..**.*
34620 2a 20 5b 5b 53 51 4c 49 54 45 5f 50 52 45 50 41  * [[SQLITE_PREPA
34630 52 45 5f 4e 4f 52 4d 41 4c 49 5a 45 5d 5d 20 3c  RE_NORMALIZE]] <
34640 64 74 3e 53 51 4c 49 54 45 5f 50 52 45 50 41 52  dt>SQLITE_PREPAR
34650 45 5f 4e 4f 52 4d 41 4c 49 5a 45 3c 2f 64 74 3e  E_NORMALIZE</dt>
34660 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 53 51 4c 49  .** <dd>The SQLI
34670 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f 52 4d 41  TE_PREPARE_NORMA
34680 4c 49 5a 45 20 66 6c 61 67 20 69 73 20 61 20 6e  LIZE flag is a n
34690 6f 2d 6f 70 2e 20 54 68 69 73 20 66 6c 61 67 20  o-op. This flag 
346a0 75 73 65 64 0a 2a 2a 20 74 6f 20 62 65 20 72 65  used.** to be re
346b0 71 75 69 72 65 64 20 66 6f 72 20 61 6e 79 20 70  quired for any p
346c0 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
346d0 74 20 74 68 61 74 20 77 61 6e 74 65 64 20 74 6f  t that wanted to
346e0 20 75 73 65 20 74 68 65 0a 2a 2a 20 5b 73 71 6c   use the.** [sql
346f0 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65 64 5f  ite3_normalized_
34700 73 71 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65  sql()] interface
34710 2e 20 20 48 6f 77 65 76 65 72 2c 20 74 68 65 0a  .  However, the.
34720 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6e 6f 72 6d  ** [sqlite3_norm
34730 61 6c 69 7a 65 64 5f 73 71 6c 28 29 5d 20 69 6e  alized_sql()] in
34740 74 65 72 66 61 63 65 20 69 73 20 6e 6f 77 20 61  terface is now a
34750 76 61 69 6c 61 62 6c 65 20 74 6f 20 61 6c 6c 0a  vailable to all.
34760 2a 2a 20 70 72 65 70 61 72 65 64 20 73 74 61 74  ** prepared stat
34770 65 6d 65 6e 74 73 2c 20 72 65 67 61 72 64 6c 65  ements, regardle
34780 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72  ss of whether or
34790 20 6e 6f 74 20 74 68 65 79 20 75 73 65 20 74 68   not they use th
347a0 69 73 0a 2a 2a 20 66 6c 61 67 2e 0a 2a 2a 0a 2a  is.** flag..**.*
347b0 2a 20 5b 5b 53 51 4c 49 54 45 5f 50 52 45 50 41  * [[SQLITE_PREPA
347c0 52 45 5f 4e 4f 5f 56 54 41 42 5d 5d 20 3c 64 74  RE_NO_VTAB]] <dt
347d0 3e 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f  >SQLITE_PREPARE_
347e0 4e 4f 5f 56 54 41 42 3c 2f 64 74 3e 0a 2a 2a 20  NO_VTAB</dt>.** 
347f0 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 50  <dd>The SQLITE_P
34800 52 45 50 41 52 45 5f 4e 4f 5f 56 54 41 42 20 66  REPARE_NO_VTAB f
34810 6c 61 67 20 63 61 75 73 65 73 20 74 68 65 20 53  lag causes the S
34820 51 4c 20 63 6f 6d 70 69 6c 65 72 0a 2a 2a 20 74  QL compiler.** t
34830 6f 20 72 65 74 75 72 6e 20 61 6e 20 65 72 72 6f  o return an erro
34840 72 20 28 65 72 72 6f 72 20 63 6f 64 65 20 53 51  r (error code SQ
34850 4c 49 54 45 5f 45 52 52 4f 52 29 20 69 66 20 74  LITE_ERROR) if t
34860 68 65 20 73 74 61 74 65 6d 65 6e 74 20 75 73 65  he statement use
34870 73 0a 2a 2a 20 61 6e 79 20 76 69 72 74 75 61 6c  s.** any virtual
34880 20 74 61 62 6c 65 73 2e 0a 2a 2a 20 3c 2f 64 6c   tables..** </dl
34890 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  >.*/.#define SQL
348a0 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52 53  ITE_PREPARE_PERS
348b0 49 53 54 45 4e 54 20 20 20 20 20 20 20 20 20 20  ISTENT          
348c0 20 20 20 20 30 78 30 31 0a 23 64 65 66 69 6e 65      0x01.#define
348d0 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f   SQLITE_PREPARE_
348e0 4e 4f 52 4d 41 4c 49 5a 45 20 20 20 20 20 20 20  NORMALIZE       
348f0 20 20 20 20 20 20 20 20 30 78 30 32 0a 23 64 65          0x02.#de
34900 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52 45 50  fine SQLITE_PREP
34910 41 52 45 5f 4e 4f 5f 56 54 41 42 20 20 20 20 20  ARE_NO_VTAB     
34920 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 34              0x04
34930 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
34940 3a 20 43 6f 6d 70 69 6c 69 6e 67 20 41 6e 20 53  : Compiling An S
34950 51 4c 20 53 74 61 74 65 6d 65 6e 74 0a 2a 2a 20  QL Statement.** 
34960 4b 45 59 57 4f 52 44 53 3a 20 7b 53 51 4c 20 73  KEYWORDS: {SQL s
34970 74 61 74 65 6d 65 6e 74 20 63 6f 6d 70 69 6c 65  tatement compile
34980 72 7d 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  r}.** METHOD: sq
34990 6c 69 74 65 33 0a 2a 2a 20 43 4f 4e 53 54 52 55  lite3.** CONSTRU
349a0 43 54 4f 52 3a 20 73 71 6c 69 74 65 33 5f 73 74  CTOR: sqlite3_st
349b0 6d 74 0a 2a 2a 0a 2a 2a 20 54 6f 20 65 78 65 63  mt.**.** To exec
349c0 75 74 65 20 61 6e 20 53 51 4c 20 73 74 61 74 65  ute an SQL state
349d0 6d 65 6e 74 2c 20 69 74 20 6d 75 73 74 20 66 69  ment, it must fi
349e0 72 73 74 20 62 65 20 63 6f 6d 70 69 6c 65 64 20  rst be compiled 
349f0 69 6e 74 6f 20 61 20 62 79 74 65 2d 63 6f 64 65  into a byte-code
34a00 0a 2a 2a 20 70 72 6f 67 72 61 6d 20 75 73 69 6e  .** program usin
34a10 67 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 72  g one of these r
34a20 6f 75 74 69 6e 65 73 2e 20 20 4f 72 2c 20 69 6e  outines.  Or, in
34a30 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68   other words, th
34a40 65 73 65 20 72 6f 75 74 69 6e 65 73 0a 2a 2a 20  ese routines.** 
34a50 61 72 65 20 63 6f 6e 73 74 72 75 63 74 6f 72 73  are constructors
34a60 20 66 6f 72 20 74 68 65 20 5b 70 72 65 70 61 72   for the [prepar
34a70 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 6f 62  ed statement] ob
34a80 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ject..**.** The 
34a90 70 72 65 66 65 72 72 65 64 20 72 6f 75 74 69 6e  preferred routin
34aa0 65 20 74 6f 20 75 73 65 20 69 73 20 5b 73 71 6c  e to use is [sql
34ab0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
34ac0 29 5d 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c  )].  The.** [sql
34ad0 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20  ite3_prepare()] 
34ae0 69 6e 74 65 72 66 61 63 65 20 69 73 20 6c 65 67  interface is leg
34af0 61 63 79 20 61 6e 64 20 73 68 6f 75 6c 64 20 62  acy and should b
34b00 65 20 61 76 6f 69 64 65 64 2e 0a 2a 2a 20 5b 73  e avoided..** [s
34b10 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
34b20 33 28 29 5d 20 68 61 73 20 61 6e 20 65 78 74 72  3()] has an extr
34b30 61 20 22 70 72 65 70 46 6c 61 67 73 22 20 6f 70  a "prepFlags" op
34b40 74 69 6f 6e 20 74 68 61 74 20 69 73 20 75 73 65  tion that is use
34b50 64 0a 2a 2a 20 66 6f 72 20 73 70 65 63 69 61 6c  d.** for special
34b60 20 70 75 72 70 6f 73 65 73 2e 0a 2a 2a 0a 2a 2a   purposes..**.**
34b70 20 54 68 65 20 75 73 65 20 6f 66 20 74 68 65 20   The use of the 
34b80 55 54 46 2d 38 20 69 6e 74 65 72 66 61 63 65 73  UTF-8 interfaces
34b90 20 69 73 20 70 72 65 66 65 72 72 65 64 2c 20 61   is preferred, a
34ba0 73 20 53 51 4c 69 74 65 20 63 75 72 72 65 6e 74  s SQLite current
34bb0 6c 79 0a 2a 2a 20 64 6f 65 73 20 61 6c 6c 20 70  ly.** does all p
34bc0 61 72 73 69 6e 67 20 75 73 69 6e 67 20 55 54 46  arsing using UTF
34bd0 2d 38 2e 20 20 54 68 65 20 55 54 46 2d 31 36 20  -8.  The UTF-16 
34be0 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20 70  interfaces are p
34bf0 72 6f 76 69 64 65 64 0a 2a 2a 20 61 73 20 61 20  rovided.** as a 
34c00 63 6f 6e 76 65 6e 69 65 6e 63 65 2e 20 20 54 68  convenience.  Th
34c10 65 20 55 54 46 2d 31 36 20 69 6e 74 65 72 66 61  e UTF-16 interfa
34c20 63 65 73 20 77 6f 72 6b 20 62 79 20 63 6f 6e 76  ces work by conv
34c30 65 72 74 69 6e 67 20 74 68 65 0a 2a 2a 20 69 6e  erting the.** in
34c40 70 75 74 20 74 65 78 74 20 69 6e 74 6f 20 55 54  put text into UT
34c50 46 2d 38 2c 20 74 68 65 6e 20 69 6e 76 6f 6b 69  F-8, then invoki
34c60 6e 67 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  ng the correspon
34c70 64 69 6e 67 20 55 54 46 2d 38 20 69 6e 74 65 72  ding UTF-8 inter
34c80 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  face..**.** The 
34c90 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2c 20  first argument, 
34ca0 22 64 62 22 2c 20 69 73 20 61 20 5b 64 61 74 61  "db", is a [data
34cb0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
34cc0 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 61   obtained from a
34cd0 0a 2a 2a 20 70 72 69 6f 72 20 73 75 63 63 65 73  .** prior succes
34ce0 73 66 75 6c 20 63 61 6c 6c 20 74 6f 20 5b 73 71  sful call to [sq
34cf0 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b  lite3_open()], [
34d00 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
34d10 29 5d 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65  )] or.** [sqlite
34d20 33 5f 6f 70 65 6e 31 36 28 29 5d 2e 20 20 54 68  3_open16()].  Th
34d30 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
34d40 63 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 68  ction must not h
34d50 61 76 65 20 62 65 65 6e 20 63 6c 6f 73 65 64 2e  ave been closed.
34d60 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e  .**.** The secon
34d70 64 20 61 72 67 75 6d 65 6e 74 2c 20 22 7a 53 71  d argument, "zSq
34d80 6c 22 2c 20 69 73 20 74 68 65 20 73 74 61 74 65  l", is the state
34d90 6d 65 6e 74 20 74 6f 20 62 65 20 63 6f 6d 70 69  ment to be compi
34da0 6c 65 64 2c 20 65 6e 63 6f 64 65 64 0a 2a 2a 20  led, encoded.** 
34db0 61 73 20 65 69 74 68 65 72 20 55 54 46 2d 38 20  as either UTF-8 
34dc0 6f 72 20 55 54 46 2d 31 36 2e 20 20 54 68 65 20  or UTF-16.  The 
34dd0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
34de0 29 2c 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  ), sqlite3_prepa
34df0 72 65 5f 76 32 28 29 2c 0a 2a 2a 20 61 6e 64 20  re_v2(),.** and 
34e00 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
34e10 76 33 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63  v3().** interfac
34e20 65 73 20 75 73 65 20 55 54 46 2d 38 2c 20 61 6e  es use UTF-8, an
34e30 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  d sqlite3_prepar
34e40 65 31 36 28 29 2c 20 73 71 6c 69 74 65 33 5f 70  e16(), sqlite3_p
34e50 72 65 70 61 72 65 31 36 5f 76 32 28 29 2c 0a 2a  repare16_v2(),.*
34e60 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72  * and sqlite3_pr
34e70 65 70 61 72 65 31 36 5f 76 33 28 29 20 75 73 65  epare16_v3() use
34e80 20 55 54 46 2d 31 36 2e 0a 2a 2a 0a 2a 2a 20 5e   UTF-16..**.** ^
34e90 49 66 20 74 68 65 20 6e 42 79 74 65 20 61 72 67  If the nByte arg
34ea0 75 6d 65 6e 74 20 69 73 20 6e 65 67 61 74 69 76  ument is negativ
34eb0 65 2c 20 74 68 65 6e 20 7a 53 71 6c 20 69 73 20  e, then zSql is 
34ec0 72 65 61 64 20 75 70 20 74 6f 20 74 68 65 0a 2a  read up to the.*
34ed0 2a 20 66 69 72 73 74 20 7a 65 72 6f 20 74 65 72  * first zero ter
34ee0 6d 69 6e 61 74 6f 72 2e 20 5e 49 66 20 6e 42 79  minator. ^If nBy
34ef0 74 65 20 69 73 20 70 6f 73 69 74 69 76 65 2c 20  te is positive, 
34f00 74 68 65 6e 20 69 74 20 69 73 20 74 68 65 0a 2a  then it is the.*
34f10 2a 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  * number of byte
34f20 73 20 72 65 61 64 20 66 72 6f 6d 20 7a 53 71 6c  s read from zSql
34f30 2e 20 20 5e 49 66 20 6e 42 79 74 65 20 69 73 20  .  ^If nByte is 
34f40 7a 65 72 6f 2c 20 74 68 65 6e 20 6e 6f 20 70 72  zero, then no pr
34f50 65 70 61 72 65 64 0a 2a 2a 20 73 74 61 74 65 6d  epared.** statem
34f60 65 6e 74 20 69 73 20 67 65 6e 65 72 61 74 65 64  ent is generated
34f70 2e 0a 2a 2a 20 49 66 20 74 68 65 20 63 61 6c 6c  ..** If the call
34f80 65 72 20 6b 6e 6f 77 73 20 74 68 61 74 20 74 68  er knows that th
34f90 65 20 73 75 70 70 6c 69 65 64 20 73 74 72 69 6e  e supplied strin
34fa0 67 20 69 73 20 6e 75 6c 2d 74 65 72 6d 69 6e 61  g is nul-termina
34fb0 74 65 64 2c 20 74 68 65 6e 0a 2a 2a 20 74 68 65  ted, then.** the
34fc0 72 65 20 69 73 20 61 20 73 6d 61 6c 6c 20 70 65  re is a small pe
34fd0 72 66 6f 72 6d 61 6e 63 65 20 61 64 76 61 6e 74  rformance advant
34fe0 61 67 65 20 74 6f 20 70 61 73 73 69 6e 67 20 61  age to passing a
34ff0 6e 20 6e 42 79 74 65 20 70 61 72 61 6d 65 74 65  n nByte paramete
35000 72 20 74 68 61 74 0a 2a 2a 20 69 73 20 74 68 65  r that.** is the
35010 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
35020 20 69 6e 20 74 68 65 20 69 6e 70 75 74 20 73 74   in the input st
35030 72 69 6e 67 20 3c 69 3e 69 6e 63 6c 75 64 69 6e  ring <i>includin
35040 67 3c 2f 69 3e 0a 2a 2a 20 74 68 65 20 6e 75 6c  g</i>.** the nul
35050 2d 74 65 72 6d 69 6e 61 74 6f 72 2e 0a 2a 2a 0a  -terminator..**.
35060 2a 2a 20 5e 49 66 20 70 7a 54 61 69 6c 20 69 73  ** ^If pzTail is
35070 20 6e 6f 74 20 4e 55 4c 4c 20 74 68 65 6e 20 2a   not NULL then *
35080 70 7a 54 61 69 6c 20 69 73 20 6d 61 64 65 20 74  pzTail is made t
35090 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 66  o point to the f
350a0 69 72 73 74 20 62 79 74 65 0a 2a 2a 20 70 61 73  irst byte.** pas
350b0 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65  t the end of the
350c0 20 66 69 72 73 74 20 53 51 4c 20 73 74 61 74 65   first SQL state
350d0 6d 65 6e 74 20 69 6e 20 7a 53 71 6c 2e 20 20 54  ment in zSql.  T
350e0 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 6f 6e  hese routines on
350f0 6c 79 0a 2a 2a 20 63 6f 6d 70 69 6c 65 20 74 68  ly.** compile th
35100 65 20 66 69 72 73 74 20 73 74 61 74 65 6d 65 6e  e first statemen
35110 74 20 69 6e 20 7a 53 71 6c 2c 20 73 6f 20 2a 70  t in zSql, so *p
35120 7a 54 61 69 6c 20 69 73 20 6c 65 66 74 20 70 6f  zTail is left po
35130 69 6e 74 69 6e 67 20 74 6f 0a 2a 2a 20 77 68 61  inting to.** wha
35140 74 20 72 65 6d 61 69 6e 73 20 75 6e 63 6f 6d 70  t remains uncomp
35150 69 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 2a 70 70  iled..**.** ^*pp
35160 53 74 6d 74 20 69 73 20 6c 65 66 74 20 70 6f 69  Stmt is left poi
35170 6e 74 69 6e 67 20 74 6f 20 61 20 63 6f 6d 70 69  nting to a compi
35180 6c 65 64 20 5b 70 72 65 70 61 72 65 64 20 73 74  led [prepared st
35190 61 74 65 6d 65 6e 74 5d 20 74 68 61 74 20 63 61  atement] that ca
351a0 6e 20 62 65 0a 2a 2a 20 65 78 65 63 75 74 65 64  n be.** executed
351b0 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
351c0 73 74 65 70 28 29 5d 2e 20 20 5e 49 66 20 74 68  step()].  ^If th
351d0 65 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72 2c  ere is an error,
351e0 20 2a 70 70 53 74 6d 74 20 69 73 20 73 65 74 0a   *ppStmt is set.
351f0 2a 2a 20 74 6f 20 4e 55 4c 4c 2e 20 20 5e 49 66  ** to NULL.  ^If
35200 20 74 68 65 20 69 6e 70 75 74 20 74 65 78 74 20   the input text 
35210 63 6f 6e 74 61 69 6e 73 20 6e 6f 20 53 51 4c 20  contains no SQL 
35220 28 69 66 20 74 68 65 20 69 6e 70 75 74 20 69 73  (if the input is
35230 20 61 6e 20 65 6d 70 74 79 0a 2a 2a 20 73 74 72   an empty.** str
35240 69 6e 67 20 6f 72 20 61 20 63 6f 6d 6d 65 6e 74  ing or a comment
35250 29 20 74 68 65 6e 20 2a 70 70 53 74 6d 74 20 69  ) then *ppStmt i
35260 73 20 73 65 74 20 74 6f 20 4e 55 4c 4c 2e 0a 2a  s set to NULL..*
35270 2a 20 54 68 65 20 63 61 6c 6c 69 6e 67 20 70 72  * The calling pr
35280 6f 63 65 64 75 72 65 20 69 73 20 72 65 73 70 6f  ocedure is respo
35290 6e 73 69 62 6c 65 20 66 6f 72 20 64 65 6c 65 74  nsible for delet
352a0 69 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c 65 64  ing the compiled
352b0 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  .** SQL statemen
352c0 74 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33  t using [sqlite3
352d0 5f 66 69 6e 61 6c 69 7a 65 28 29 5d 20 61 66 74  _finalize()] aft
352e0 65 72 20 69 74 20 68 61 73 20 66 69 6e 69 73 68  er it has finish
352f0 65 64 20 77 69 74 68 20 69 74 2e 0a 2a 2a 20 70  ed with it..** p
35300 70 53 74 6d 74 20 6d 61 79 20 6e 6f 74 20 62 65  pStmt may not be
35310 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e   NULL..**.** ^On
35320 20 73 75 63 63 65 73 73 2c 20 74 68 65 20 73 71   success, the sq
35330 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20  lite3_prepare() 
35340 66 61 6d 69 6c 79 20 6f 66 20 72 6f 75 74 69 6e  family of routin
35350 65 73 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  es return [SQLIT
35360 45 5f 4f 4b 5d 3b 0a 2a 2a 20 6f 74 68 65 72 77  E_OK];.** otherw
35370 69 73 65 20 61 6e 20 5b 65 72 72 6f 72 20 63 6f  ise an [error co
35380 64 65 5d 20 69 73 20 72 65 74 75 72 6e 65 64 2e  de] is returned.
35390 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
353a0 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 2c  e3_prepare_v2(),
353b0 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
353c0 5f 76 33 28 29 2c 20 73 71 6c 69 74 65 33 5f 70  _v3(), sqlite3_p
353d0 72 65 70 61 72 65 31 36 5f 76 32 28 29 2c 0a 2a  repare16_v2(),.*
353e0 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72  * and sqlite3_pr
353f0 65 70 61 72 65 31 36 5f 76 33 28 29 20 69 6e 74  epare16_v3() int
35400 65 72 66 61 63 65 73 20 61 72 65 20 72 65 63 6f  erfaces are reco
35410 6d 6d 65 6e 64 65 64 20 66 6f 72 20 61 6c 6c 20  mmended for all 
35420 6e 65 77 20 70 72 6f 67 72 61 6d 73 2e 0a 2a 2a  new programs..**
35430 20 54 68 65 20 6f 6c 64 65 72 20 69 6e 74 65 72   The older inter
35440 66 61 63 65 73 20 28 73 71 6c 69 74 65 33 5f 70  faces (sqlite3_p
35450 72 65 70 61 72 65 28 29 20 61 6e 64 20 73 71 6c  repare() and sql
35460 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29  ite3_prepare16()
35470 29 0a 2a 2a 20 61 72 65 20 72 65 74 61 69 6e 65  ).** are retaine
35480 64 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73 20  d for backwards 
35490 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2c 20 62  compatibility, b
354a0 75 74 20 74 68 65 69 72 20 75 73 65 20 69 73 20  ut their use is 
354b0 64 69 73 63 6f 75 72 61 67 65 64 2e 0a 2a 2a 20  discouraged..** 
354c0 5e 49 6e 20 74 68 65 20 22 76 58 22 20 69 6e 74  ^In the "vX" int
354d0 65 72 66 61 63 65 73 2c 20 74 68 65 20 70 72 65  erfaces, the pre
354e0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 0a  pared statement.
354f0 2a 2a 20 74 68 61 74 20 69 73 20 72 65 74 75 72  ** that is retur
35500 6e 65 64 20 28 74 68 65 20 5b 73 71 6c 69 74 65  ned (the [sqlite
35510 33 5f 73 74 6d 74 5d 20 6f 62 6a 65 63 74 29 20  3_stmt] object) 
35520 63 6f 6e 74 61 69 6e 73 20 61 20 63 6f 70 79 20  contains a copy 
35530 6f 66 20 74 68 65 0a 2a 2a 20 6f 72 69 67 69 6e  of the.** origin
35540 61 6c 20 53 51 4c 20 74 65 78 74 2e 20 54 68 69  al SQL text. Thi
35550 73 20 63 61 75 73 65 73 20 74 68 65 20 5b 73 71  s causes the [sq
35560 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 69 6e  lite3_step()] in
35570 74 65 72 66 61 63 65 20 74 6f 0a 2a 2a 20 62 65  terface to.** be
35580 68 61 76 65 20 64 69 66 66 65 72 65 6e 74 6c 79  have differently
35590 20 69 6e 20 74 68 72 65 65 20 77 61 79 73 3a 0a   in three ways:.
355a0 2a 2a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c  **.** <ol>.** <l
355b0 69 3e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 64 61  i>.** ^If the da
355c0 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 63 68  tabase schema ch
355d0 61 6e 67 65 73 2c 20 69 6e 73 74 65 61 64 20 6f  anges, instead o
355e0 66 20 72 65 74 75 72 6e 69 6e 67 20 5b 53 51 4c  f returning [SQL
355f0 49 54 45 5f 53 43 48 45 4d 41 5d 20 61 73 20 69  ITE_SCHEMA] as i
35600 74 0a 2a 2a 20 61 6c 77 61 79 73 20 75 73 65 64  t.** always used
35610 20 74 6f 20 64 6f 2c 20 5b 73 71 6c 69 74 65 33   to do, [sqlite3
35620 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 20 61 75  _step()] will au
35630 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 63 6f  tomatically reco
35640 6d 70 69 6c 65 20 74 68 65 20 53 51 4c 0a 2a 2a  mpile the SQL.**
35650 20 73 74 61 74 65 6d 65 6e 74 20 61 6e 64 20 74   statement and t
35660 72 79 20 74 6f 20 72 75 6e 20 69 74 20 61 67 61  ry to run it aga
35670 69 6e 2e 20 41 73 20 6d 61 6e 79 20 61 73 20 5b  in. As many as [
35680 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d  SQLITE_MAX_SCHEM
35690 41 5f 52 45 54 52 59 5d 0a 2a 2a 20 72 65 74 72  A_RETRY].** retr
356a0 69 65 73 20 77 69 6c 6c 20 6f 63 63 75 72 20 62  ies will occur b
356b0 65 66 6f 72 65 20 73 71 6c 69 74 65 33 5f 73 74  efore sqlite3_st
356c0 65 70 28 29 20 67 69 76 65 73 20 75 70 20 61 6e  ep() gives up an
356d0 64 20 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72  d returns an err
356e0 6f 72 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 0a  or..** </li>.**.
356f0 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 57 68 65 6e  ** <li>.** ^When
35700 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73   an error occurs
35710 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  , [sqlite3_step(
35720 29 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 6f  )] will return o
35730 6e 65 20 6f 66 20 74 68 65 20 64 65 74 61 69 6c  ne of the detail
35740 65 64 0a 2a 2a 20 5b 65 72 72 6f 72 20 63 6f 64  ed.** [error cod
35750 65 73 5d 20 6f 72 20 5b 65 78 74 65 6e 64 65 64  es] or [extended
35760 20 65 72 72 6f 72 20 63 6f 64 65 73 5d 2e 20 20   error codes].  
35770 5e 54 68 65 20 6c 65 67 61 63 79 20 62 65 68 61  ^The legacy beha
35780 76 69 6f 72 20 77 61 73 20 74 68 61 74 0a 2a 2a  vior was that.**
35790 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
357a0 5d 20 77 6f 75 6c 64 20 6f 6e 6c 79 20 72 65 74  ] would only ret
357b0 75 72 6e 20 61 20 67 65 6e 65 72 69 63 20 5b 53  urn a generic [S
357c0 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 72 65 73  QLITE_ERROR] res
357d0 75 6c 74 20 63 6f 64 65 0a 2a 2a 20 61 6e 64 20  ult code.** and 
357e0 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
357f0 77 6f 75 6c 64 20 68 61 76 65 20 74 6f 20 6d 61  would have to ma
35800 6b 65 20 61 20 73 65 63 6f 6e 64 20 63 61 6c 6c  ke a second call
35810 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73   to [sqlite3_res
35820 65 74 28 29 5d 0a 2a 2a 20 69 6e 20 6f 72 64 65  et()].** in orde
35830 72 20 74 6f 20 66 69 6e 64 20 74 68 65 20 75 6e  r to find the un
35840 64 65 72 6c 79 69 6e 67 20 63 61 75 73 65 20 6f  derlying cause o
35850 66 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e 20 57  f the problem. W
35860 69 74 68 20 74 68 65 20 22 76 32 22 20 70 72 65  ith the "v2" pre
35870 70 61 72 65 0a 2a 2a 20 69 6e 74 65 72 66 61 63  pare.** interfac
35880 65 73 2c 20 74 68 65 20 75 6e 64 65 72 6c 79 69  es, the underlyi
35890 6e 67 20 72 65 61 73 6f 6e 20 66 6f 72 20 74 68  ng reason for th
358a0 65 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72  e error is retur
358b0 6e 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e  ned immediately.
358c0 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a 20  .** </li>.**.** 
358d0 3c 6c 69 3e 0a 2a 2a 20 5e 49 66 20 74 68 65 20  <li>.** ^If the 
358e0 73 70 65 63 69 66 69 63 20 76 61 6c 75 65 20 62  specific value b
358f0 6f 75 6e 64 20 74 6f 20 5b 70 61 72 61 6d 65 74  ound to [paramet
35900 65 72 20 7c 20 68 6f 73 74 20 70 61 72 61 6d 65  er | host parame
35910 74 65 72 5d 20 69 6e 20 74 68 65 20 0a 2a 2a 20  ter] in the .** 
35920 57 48 45 52 45 20 63 6c 61 75 73 65 20 6d 69 67  WHERE clause mig
35930 68 74 20 69 6e 66 6c 75 65 6e 63 65 20 74 68 65  ht influence the
35940 20 63 68 6f 69 63 65 20 6f 66 20 71 75 65 72 79   choice of query
35950 20 70 6c 61 6e 20 66 6f 72 20 61 20 73 74 61 74   plan for a stat
35960 65 6d 65 6e 74 2c 0a 2a 2a 20 74 68 65 6e 20 74  ement,.** then t
35970 68 65 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c  he statement wil
35980 6c 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c  l be automatical
35990 6c 79 20 72 65 63 6f 6d 70 69 6c 65 64 2c 20 61  ly recompiled, a
359a0 73 20 69 66 20 74 68 65 72 65 20 68 61 64 20 62  s if there had b
359b0 65 65 6e 20 0a 2a 2a 20 61 20 73 63 68 65 6d 61  een .** a schema
359c0 20 63 68 61 6e 67 65 2c 20 6f 6e 20 74 68 65 20   change, on the 
359d0 66 69 72 73 74 20 20 5b 73 71 6c 69 74 65 33 5f  first  [sqlite3_
359e0 73 74 65 70 28 29 5d 20 63 61 6c 6c 20 66 6f 6c  step()] call fol
359f0 6c 6f 77 69 6e 67 20 61 6e 79 20 63 68 61 6e 67  lowing any chang
35a00 65 0a 2a 2a 20 74 6f 20 74 68 65 20 5b 73 71 6c  e.** to the [sql
35a10 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 20 7c  ite3_bind_text |
35a20 20 62 69 6e 64 69 6e 67 73 5d 20 6f 66 20 74 68   bindings] of th
35a30 61 74 20 5b 70 61 72 61 6d 65 74 65 72 5d 2e 20  at [parameter]. 
35a40 0a 2a 2a 20 5e 54 68 65 20 73 70 65 63 69 66 69  .** ^The specifi
35a50 63 20 76 61 6c 75 65 20 6f 66 20 57 48 45 52 45  c value of WHERE
35a60 2d 63 6c 61 75 73 65 20 5b 70 61 72 61 6d 65 74  -clause [paramet
35a70 65 72 5d 20 6d 69 67 68 74 20 69 6e 66 6c 75 65  er] might influe
35a80 6e 63 65 20 74 68 65 20 0a 2a 2a 20 63 68 6f 69  nce the .** choi
35a90 63 65 20 6f 66 20 71 75 65 72 79 20 70 6c 61 6e  ce of query plan
35aa0 20 69 66 20 74 68 65 20 70 61 72 61 6d 65 74 65   if the paramete
35ab0 72 20 69 73 20 74 68 65 20 6c 65 66 74 2d 68 61  r is the left-ha
35ac0 6e 64 20 73 69 64 65 20 6f 66 20 61 20 5b 4c 49  nd side of a [LI
35ad0 4b 45 5d 0a 2a 2a 20 6f 72 20 5b 47 4c 4f 42 5d  KE].** or [GLOB]
35ae0 20 6f 70 65 72 61 74 6f 72 20 6f 72 20 69 66 20   operator or if 
35af0 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 69 73  the parameter is
35b00 20 63 6f 6d 70 61 72 65 64 20 74 6f 20 61 6e 20   compared to an 
35b10 69 6e 64 65 78 65 64 20 63 6f 6c 75 6d 6e 0a 2a  indexed column.*
35b20 2a 20 61 6e 64 20 74 68 65 20 5b 53 51 4c 49 54  * and the [SQLIT
35b30 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20  E_ENABLE_STAT3] 
35b40 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
35b50 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a  ion is enabled..
35b60 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 20 3c 2f 6f 6c  ** </li>.** </ol
35b70 3e 0a 2a 2a 0a 2a 2a 20 3c 70 3e 5e 73 71 6c 69  >.**.** <p>^sqli
35b80 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29  te3_prepare_v3()
35b90 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20 73 71   differs from sq
35ba0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
35bb0 28 29 20 6f 6e 6c 79 20 69 6e 20 68 61 76 69 6e  () only in havin
35bc0 67 0a 2a 2a 20 74 68 65 20 65 78 74 72 61 20 70  g.** the extra p
35bd0 72 65 70 46 6c 61 67 73 20 70 61 72 61 6d 65 74  repFlags paramet
35be0 65 72 2c 20 77 68 69 63 68 20 69 73 20 61 20 62  er, which is a b
35bf0 69 74 20 61 72 72 61 79 20 63 6f 6e 73 69 73 74  it array consist
35c00 69 6e 67 20 6f 66 20 7a 65 72 6f 20 6f 72 0a 2a  ing of zero or.*
35c10 2a 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 5b 53  * more of the [S
35c20 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45  QLITE_PREPARE_PE
35c30 52 53 49 53 54 45 4e 54 7c 53 51 4c 49 54 45 5f  RSISTENT|SQLITE_
35c40 50 52 45 50 41 52 45 5f 2a 5d 20 66 6c 61 67 73  PREPARE_*] flags
35c50 2e 20 20 5e 54 68 65 0a 2a 2a 20 73 71 6c 69 74  .  ^The.** sqlit
35c60 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 20  e3_prepare_v2() 
35c70 69 6e 74 65 72 66 61 63 65 20 77 6f 72 6b 73 20  interface works 
35c80 65 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65  exactly the same
35c90 20 61 73 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70   as.** sqlite3_p
35ca0 72 65 70 61 72 65 5f 76 33 28 29 20 77 69 74 68  repare_v3() with
35cb0 20 61 20 7a 65 72 6f 20 70 72 65 70 46 6c 61 67   a zero prepFlag
35cc0 73 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2f 0a  s parameter..*/.
35cd0 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
35ce0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 0a  qlite3_prepare(.
35cf0 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20    sqlite3 *db,  
35d00 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74            /* Dat
35d10 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a  abase handle */.
35d20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53    const char *zS
35d30 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ql,       /* SQL
35d40 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d   statement, UTF-
35d50 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69  8 encoded */.  i
35d60 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20  nt nByte,       
35d70 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75         /* Maximu
35d80 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c  m length of zSql
35d90 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20   in bytes. */.  
35da0 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70  sqlite3_stmt **p
35db0 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20  pStmt,  /* OUT: 
35dc0 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65  Statement handle
35dd0 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   */.  const char
35de0 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a   **pzTail     /*
35df0 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f   OUT: Pointer to
35e00 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20   unused portion 
35e10 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51  of zSql */.);.SQ
35e20 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
35e30 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
35e40 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  .  sqlite3 *db, 
35e50 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61             /* Da
35e60 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f  tabase handle */
35e70 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  .  const char *z
35e80 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51  Sql,       /* SQ
35e90 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46  L statement, UTF
35ea0 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20  -8 encoded */.  
35eb0 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20  int nByte,      
35ec0 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d          /* Maxim
35ed0 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71  um length of zSq
35ee0 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20  l in bytes. */. 
35ef0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a   sqlite3_stmt **
35f00 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a  ppStmt,  /* OUT:
35f10 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c   Statement handl
35f20 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61  e */.  const cha
35f30 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f  r **pzTail     /
35f40 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74  * OUT: Pointer t
35f50 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e  o unused portion
35f60 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53   of zSql */.);.S
35f70 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
35f80 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33  lite3_prepare_v3
35f90 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c  (.  sqlite3 *db,
35fa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44              /* D
35fb0 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a  atabase handle *
35fc0 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
35fd0 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53  zSql,       /* S
35fe0 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54  QL statement, UT
35ff0 46 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20  F-8 encoded */. 
36000 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20   int nByte,     
36010 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69           /* Maxi
36020 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53  mum length of zS
36030 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a  ql in bytes. */.
36040 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 70    unsigned int p
36050 72 65 70 46 6c 61 67 73 2c 20 2f 2a 20 5a 65 72  repFlags, /* Zer
36060 6f 20 6f 72 20 6d 6f 72 65 20 53 51 4c 49 54 45  o or more SQLITE
36070 5f 50 52 45 50 41 52 45 5f 20 66 6c 61 67 73 20  _PREPARE_ flags 
36080 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d  */.  sqlite3_stm
36090 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20  t **ppStmt,  /* 
360a0 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68  OUT: Statement h
360b0 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
360c0 20 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20   char **pzTail  
360d0 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74     /* OUT: Point
360e0 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72  er to unused por
360f0 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a  tion of zSql */.
36100 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
36110 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  t sqlite3_prepar
36120 65 31 36 28 0a 20 20 73 71 6c 69 74 65 33 20 2a  e16(.  sqlite3 *
36130 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f  db,            /
36140 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c  * Database handl
36150 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69  e */.  const voi
36160 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f  d *zSql,       /
36170 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c  * SQL statement,
36180 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65 64 20   UTF-16 encoded 
36190 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c 20  */.  int nByte, 
361a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
361b0 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f  Maximum length o
361c0 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e  f zSql in bytes.
361d0 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74   */.  sqlite3_st
361e0 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a  mt **ppStmt,  /*
361f0 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20   OUT: Statement 
36200 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73  handle */.  cons
36210 74 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20  t void **pzTail 
36220 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e      /* OUT: Poin
36230 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f  ter to unused po
36240 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f  rtion of zSql */
36250 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .);.SQLITE_API i
36260 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nt sqlite3_prepa
36270 72 65 31 36 5f 76 32 28 0a 20 20 73 71 6c 69 74  re16_v2(.  sqlit
36280 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20  e3 *db,         
36290 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68     /* Database h
362a0 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
362b0 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20   void *zSql,    
362c0 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d     /* SQL statem
362d0 65 6e 74 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f  ent, UTF-16 enco
362e0 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79  ded */.  int nBy
362f0 74 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  te,             
36300 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67   /* Maximum leng
36310 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79  th of zSql in by
36320 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65  tes. */.  sqlite
36330 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c  3_stmt **ppStmt,
36340 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d    /* OUT: Statem
36350 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ent handle */.  
36360 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54  const void **pzT
36370 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20  ail     /* OUT: 
36380 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65  Pointer to unuse
36390 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71  d portion of zSq
363a0 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41  l */.);.SQLITE_A
363b0 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70  PI int sqlite3_p
363c0 72 65 70 61 72 65 31 36 5f 76 33 28 0a 20 20 73  repare16_v3(.  s
363d0 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20  qlite3 *db,     
363e0 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61         /* Databa
363f0 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63  se handle */.  c
36400 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c  onst void *zSql,
36410 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74         /* SQL st
36420 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20  atement, UTF-16 
36430 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74  encoded */.  int
36440 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20 20 20   nByte,         
36450 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20       /* Maximum 
36460 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69  length of zSql i
36470 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 75 6e  n bytes. */.  un
36480 73 69 67 6e 65 64 20 69 6e 74 20 70 72 65 70 46  signed int prepF
36490 6c 61 67 73 2c 20 2f 2a 20 5a 65 72 6f 20 6f 72  lags, /* Zero or
364a0 20 6d 6f 72 65 20 53 51 4c 49 54 45 5f 50 52 45   more SQLITE_PRE
364b0 50 41 52 45 5f 20 66 6c 61 67 73 20 2a 2f 0a 20  PARE_ flags */. 
364c0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a   sqlite3_stmt **
364d0 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a  ppStmt,  /* OUT:
364e0 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c   Statement handl
364f0 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69  e */.  const voi
36500 64 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f  d **pzTail     /
36510 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74  * OUT: Pointer t
36520 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e  o unused portion
36530 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 0a   of zSql */.);..
36540 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
36550 52 65 74 72 69 65 76 69 6e 67 20 53 74 61 74 65  Retrieving State
36560 6d 65 6e 74 20 53 51 4c 0a 2a 2a 20 4d 45 54 48  ment SQL.** METH
36570 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  OD: sqlite3_stmt
36580 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
36590 74 65 33 5f 73 71 6c 28 50 29 20 69 6e 74 65 72  te3_sql(P) inter
365a0 66 61 63 65 20 72 65 74 75 72 6e 73 20 61 20 70  face returns a p
365b0 6f 69 6e 74 65 72 20 74 6f 20 61 20 63 6f 70 79  ointer to a copy
365c0 20 6f 66 20 74 68 65 20 55 54 46 2d 38 0a 2a 2a   of the UTF-8.**
365d0 20 53 51 4c 20 74 65 78 74 20 75 73 65 64 20 74   SQL text used t
365e0 6f 20 63 72 65 61 74 65 20 5b 70 72 65 70 61 72  o create [prepar
365f0 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 50 20  ed statement] P 
36600 69 66 20 50 20 77 61 73 0a 2a 2a 20 63 72 65 61  if P was.** crea
36610 74 65 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f  ted by [sqlite3_
36620 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c 20 5b  prepare_v2()], [
36630 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
36640 76 33 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74  v3()],.** [sqlit
36650 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28  e3_prepare16_v2(
36660 29 5d 2c 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f  )], or [sqlite3_
36670 70 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d 2e  prepare16_v3()].
36680 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
36690 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 50 29  _expanded_sql(P)
366a0 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72   interface retur
366b0 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  ns a pointer to 
366c0 61 20 55 54 46 2d 38 0a 2a 2a 20 73 74 72 69 6e  a UTF-8.** strin
366d0 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  g containing the
366e0 20 53 51 4c 20 74 65 78 74 20 6f 66 20 70 72 65   SQL text of pre
366f0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20  pared statement 
36700 50 20 77 69 74 68 0a 2a 2a 20 5b 62 6f 75 6e 64  P with.** [bound
36710 20 70 61 72 61 6d 65 74 65 72 73 5d 20 65 78 70   parameters] exp
36720 61 6e 64 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 73  anded..** ^The s
36730 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65  qlite3_normalize
36740 64 5f 73 71 6c 28 50 29 20 69 6e 74 65 72 66 61  d_sql(P) interfa
36750 63 65 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69  ce returns a poi
36760 6e 74 65 72 20 74 6f 20 61 20 55 54 46 2d 38 0a  nter to a UTF-8.
36770 2a 2a 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69  ** string contai
36780 6e 69 6e 67 20 74 68 65 20 6e 6f 72 6d 61 6c 69  ning the normali
36790 7a 65 64 20 53 51 4c 20 74 65 78 74 20 6f 66 20  zed SQL text of 
367a0 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
367b0 6e 74 20 50 2e 20 20 54 68 65 0a 2a 2a 20 73 65  nt P.  The.** se
367c0 6d 61 6e 74 69 63 73 20 75 73 65 64 20 74 6f 20  mantics used to 
367d0 6e 6f 72 6d 61 6c 69 7a 65 20 61 20 53 51 4c 20  normalize a SQL 
367e0 73 74 61 74 65 6d 65 6e 74 20 61 72 65 20 75 6e  statement are un
367f0 73 70 65 63 69 66 69 65 64 20 61 6e 64 20 73 75  specified and su
36800 62 6a 65 63 74 0a 2a 2a 20 74 6f 20 63 68 61 6e  bject.** to chan
36810 67 65 2e 20 20 41 74 20 61 20 6d 69 6e 69 6d 75  ge.  At a minimu
36820 6d 2c 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65  m, literal value
36830 73 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63  s will be replac
36840 65 64 20 77 69 74 68 20 73 75 69 74 61 62 6c 65  ed with suitable
36850 0a 2a 2a 20 70 6c 61 63 65 68 6f 6c 64 65 72 73  .** placeholders
36860 2e 0a 2a 2a 0a 2a 2a 20 5e 28 46 6f 72 20 65 78  ..**.** ^(For ex
36870 61 6d 70 6c 65 2c 20 69 66 20 61 20 70 72 65 70  ample, if a prep
36880 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69  ared statement i
36890 73 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20  s created using 
368a0 74 68 65 20 53 51 4c 0a 2a 2a 20 74 65 78 74 20  the SQL.** text 
368b0 22 53 45 4c 45 43 54 20 24 61 62 63 2c 3a 78 79  "SELECT $abc,:xy
368c0 7a 22 20 61 6e 64 20 69 66 20 70 61 72 61 6d 65  z" and if parame
368d0 74 65 72 20 24 61 62 63 20 69 73 20 62 6f 75 6e  ter $abc is boun
368e0 64 20 74 6f 20 69 6e 74 65 67 65 72 20 32 33 34  d to integer 234
368f0 35 0a 2a 2a 20 61 6e 64 20 70 61 72 61 6d 65 74  5.** and paramet
36900 65 72 20 3a 78 79 7a 20 69 73 20 75 6e 62 6f 75  er :xyz is unbou
36910 6e 64 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33  nd, then sqlite3
36920 5f 73 71 6c 28 29 20 77 69 6c 6c 20 72 65 74 75  _sql() will retu
36930 72 6e 0a 2a 2a 20 74 68 65 20 6f 72 69 67 69 6e  rn.** the origin
36940 61 6c 20 73 74 72 69 6e 67 2c 20 22 53 45 4c 45  al string, "SELE
36950 43 54 20 24 61 62 63 2c 3a 78 79 7a 22 20 62 75  CT $abc,:xyz" bu
36960 74 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64  t sqlite3_expand
36970 65 64 5f 73 71 6c 28 29 0a 2a 2a 20 77 69 6c 6c  ed_sql().** will
36980 20 72 65 74 75 72 6e 20 22 53 45 4c 45 43 54 20   return "SELECT 
36990 32 33 34 35 2c 4e 55 4c 4c 22 2e 29 5e 0a 2a 2a  2345,NULL".)^.**
369a0 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
369b0 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 29 20  _expanded_sql() 
369c0 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e  interface return
369d0 73 20 4e 55 4c 4c 20 69 66 20 69 6e 73 75 66 66  s NULL if insuff
369e0 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 0a 2a 2a  icient memory.**
369f0 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f   is available to
36a00 20 68 6f 6c 64 20 74 68 65 20 72 65 73 75 6c 74   hold the result
36a10 2c 20 6f 72 20 69 66 20 74 68 65 20 72 65 73 75  , or if the resu
36a20 6c 74 20 77 6f 75 6c 64 20 65 78 63 65 65 64 20  lt would exceed 
36a30 74 68 65 0a 2a 2a 20 74 68 65 20 6d 61 78 69 6d  the.** the maxim
36a40 75 6d 20 73 74 72 69 6e 67 20 6c 65 6e 67 74 68  um string length
36a50 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74   determined by t
36a60 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  he [SQLITE_LIMIT
36a70 5f 4c 45 4e 47 54 48 5d 2e 0a 2a 2a 0a 2a 2a 20  _LENGTH]..**.** 
36a80 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 54 52 41  ^The [SQLITE_TRA
36a90 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d 20 63  CE_SIZE_LIMIT] c
36aa0 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
36ab0 6f 6e 20 6c 69 6d 69 74 73 20 74 68 65 20 73 69  on limits the si
36ac0 7a 65 20 6f 66 0a 2a 2a 20 62 6f 75 6e 64 20 70  ze of.** bound p
36ad0 61 72 61 6d 65 74 65 72 20 65 78 70 61 6e 73 69  arameter expansi
36ae0 6f 6e 73 2e 20 20 5e 54 68 65 20 5b 53 51 4c 49  ons.  ^The [SQLI
36af0 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 5d 20 63  TE_OMIT_TRACE] c
36b00 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a 20 6f  ompile-time.** o
36b10 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73 71 6c  ption causes sql
36b20 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71  ite3_expanded_sq
36b30 6c 28 29 20 74 6f 20 61 6c 77 61 79 73 20 72 65  l() to always re
36b40 74 75 72 6e 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a  turn NULL..**.**
36b50 20 5e 54 68 65 20 73 74 72 69 6e 67 73 20 72 65   ^The strings re
36b60 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65  turned by sqlite
36b70 33 5f 73 71 6c 28 50 29 20 61 6e 64 20 73 71 6c  3_sql(P) and sql
36b80 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65 64 5f  ite3_normalized_
36b90 73 71 6c 28 50 29 0a 2a 2a 20 61 72 65 20 6d 61  sql(P).** are ma
36ba0 6e 61 67 65 64 20 62 79 20 53 51 4c 69 74 65 20  naged by SQLite 
36bb0 61 6e 64 20 61 72 65 20 61 75 74 6f 6d 61 74 69  and are automati
36bc0 63 61 6c 6c 79 20 66 72 65 65 64 20 77 68 65 6e  cally freed when
36bd0 20 74 68 65 20 70 72 65 70 61 72 65 64 0a 2a 2a   the prepared.**
36be0 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 66 69   statement is fi
36bf0 6e 61 6c 69 7a 65 64 2e 0a 2a 2a 20 5e 54 68 65  nalized..** ^The
36c00 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e 65 64   string returned
36c10 20 62 79 20 73 71 6c 69 74 65 33 5f 65 78 70 61   by sqlite3_expa
36c20 6e 64 65 64 5f 73 71 6c 28 50 29 2c 20 6f 6e 20  nded_sql(P), on 
36c30 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 0a  the other hand,.
36c40 2a 2a 20 69 73 20 6f 62 74 61 69 6e 65 64 20 66  ** is obtained f
36c50 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  rom [sqlite3_mal
36c60 6c 6f 63 28 29 5d 20 61 6e 64 20 6d 75 73 74 20  loc()] and must 
36c70 62 65 20 66 72 65 65 20 62 79 20 74 68 65 20 61  be free by the a
36c80 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 62 79  pplication.** by
36c90 20 70 61 73 73 69 6e 67 20 69 74 20 74 6f 20 5b   passing it to [
36ca0 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 2e  sqlite3_free()].
36cb0 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63  .*/.SQLITE_API c
36cc0 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74  onst char *sqlit
36cd0 65 33 5f 73 71 6c 28 73 71 6c 69 74 65 33 5f 73  e3_sql(sqlite3_s
36ce0 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 53 51 4c  tmt *pStmt);.SQL
36cf0 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a 73 71  ITE_API char *sq
36d00 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73  lite3_expanded_s
36d10 71 6c 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  ql(sqlite3_stmt 
36d20 2a 70 53 74 6d 74 29 3b 0a 53 51 4c 49 54 45 5f  *pStmt);.SQLITE_
36d30 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  API const char *
36d40 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a  sqlite3_normaliz
36d50 65 64 5f 73 71 6c 28 73 71 6c 69 74 65 33 5f 73  ed_sql(sqlite3_s
36d60 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a  tmt *pStmt);../*
36d70 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65  .** CAPI3REF: De
36d80 74 65 72 6d 69 6e 65 20 49 66 20 41 6e 20 53 51  termine If An SQ
36d90 4c 20 53 74 61 74 65 6d 65 6e 74 20 57 72 69 74  L Statement Writ
36da0 65 73 20 54 68 65 20 44 61 74 61 62 61 73 65 0a  es The Database.
36db0 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
36dc0 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54  e3_stmt.**.** ^T
36dd0 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f  he sqlite3_stmt_
36de0 72 65 61 64 6f 6e 6c 79 28 58 29 20 69 6e 74 65  readonly(X) inte
36df0 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 74 72  rface returns tr
36e00 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20 69 66  ue (non-zero) if
36e10 0a 2a 2a 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20  .** and only if 
36e20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20 73 74  the [prepared st
36e30 61 74 65 6d 65 6e 74 5d 20 58 20 6d 61 6b 65 73  atement] X makes
36e40 20 6e 6f 20 64 69 72 65 63 74 20 63 68 61 6e 67   no direct chang
36e50 65 73 20 74 6f 0a 2a 2a 20 74 68 65 20 63 6f 6e  es to.** the con
36e60 74 65 6e 74 20 6f 66 20 74 68 65 20 64 61 74 61  tent of the data
36e70 62 61 73 65 20 66 69 6c 65 2e 0a 2a 2a 0a 2a 2a  base file..**.**
36e80 20 4e 6f 74 65 20 74 68 61 74 20 5b 61 70 70 6c   Note that [appl
36e90 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20  ication-defined 
36ea0 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 6f  SQL functions] o
36eb0 72 0a 2a 2a 20 5b 76 69 72 74 75 61 6c 20 74 61  r.** [virtual ta
36ec0 62 6c 65 73 5d 20 6d 69 67 68 74 20 63 68 61 6e  bles] might chan
36ed0 67 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ge the database 
36ee0 69 6e 64 69 72 65 63 74 6c 79 20 61 73 20 61 20  indirectly as a 
36ef0 73 69 64 65 20 65 66 66 65 63 74 2e 20 20 0a 2a  side effect.  .*
36f00 2a 20 5e 28 46 6f 72 20 65 78 61 6d 70 6c 65 2c  * ^(For example,
36f10 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69   if an applicati
36f20 6f 6e 20 64 65 66 69 6e 65 73 20 61 20 66 75 6e  on defines a fun
36f30 63 74 69 6f 6e 20 22 65 76 61 6c 28 29 22 20 74  ction "eval()" t
36f40 68 61 74 20 0a 2a 2a 20 63 61 6c 6c 73 20 5b 73  hat .** calls [s
36f50 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d 2c 20  qlite3_exec()], 
36f60 74 68 65 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69  then the followi
36f70 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ng SQL statement
36f80 20 77 6f 75 6c 64 0a 2a 2a 20 63 68 61 6e 67 65   would.** change
36f90 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
36fa0 6c 65 20 74 68 72 6f 75 67 68 20 73 69 64 65 2d  le through side-
36fb0 65 66 66 65 63 74 73 3a 0a 2a 2a 0a 2a 2a 20 3c  effects:.**.** <
36fc0 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
36fd0 0a 2a 2a 20 20 20 20 53 45 4c 45 43 54 20 65 76  .**    SELECT ev
36fe0 61 6c 28 27 44 45 4c 45 54 45 20 46 52 4f 4d 20  al('DELETE FROM 
36ff0 74 31 27 29 20 46 52 4f 4d 20 74 32 3b 0a 2a 2a  t1') FROM t2;.**
37000 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75   </pre></blockqu
37010 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 42 75 74 20 62  ote>.**.** But b
37020 65 63 61 75 73 65 20 74 68 65 20 5b 53 45 4c 45  ecause the [SELE
37030 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 20 64 6f  CT] statement do
37040 65 73 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68  es not change th
37050 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 0a  e database file.
37060 2a 2a 20 64 69 72 65 63 74 6c 79 2c 20 73 71 6c  ** directly, sql
37070 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e  ite3_stmt_readon
37080 6c 79 28 29 20 77 6f 75 6c 64 20 73 74 69 6c 6c  ly() would still
37090 20 72 65 74 75 72 6e 20 74 72 75 65 2e 29 5e 0a   return true.)^.
370a0 2a 2a 0a 2a 2a 20 5e 54 72 61 6e 73 61 63 74 69  **.** ^Transacti
370b0 6f 6e 20 63 6f 6e 74 72 6f 6c 20 73 74 61 74 65  on control state
370c0 6d 65 6e 74 73 20 73 75 63 68 20 61 73 20 5b 42  ments such as [B
370d0 45 47 49 4e 5d 2c 20 5b 43 4f 4d 4d 49 54 5d 2c  EGIN], [COMMIT],
370e0 20 5b 52 4f 4c 4c 42 41 43 4b 5d 2c 0a 2a 2a 20   [ROLLBACK],.** 
370f0 5b 53 41 56 45 50 4f 49 4e 54 5d 2c 20 61 6e 64  [SAVEPOINT], and
37100 20 5b 52 45 4c 45 41 53 45 5d 20 63 61 75 73 65   [RELEASE] cause
37110 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
37120 61 64 6f 6e 6c 79 28 29 20 74 6f 20 72 65 74 75  adonly() to retu
37130 72 6e 20 74 72 75 65 2c 0a 2a 2a 20 73 69 6e 63  rn true,.** sinc
37140 65 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 73  e the statements
37150 20 74 68 65 6d 73 65 6c 76 65 73 20 64 6f 20 6e   themselves do n
37160 6f 74 20 61 63 74 75 61 6c 6c 79 20 6d 6f 64 69  ot actually modi
37170 66 79 20 74 68 65 20 64 61 74 61 62 61 73 65 20  fy the database 
37180 62 75 74 0a 2a 2a 20 72 61 74 68 65 72 20 74 68  but.** rather th
37190 65 79 20 63 6f 6e 74 72 6f 6c 20 74 68 65 20 74  ey control the t
371a0 69 6d 69 6e 67 20 6f 66 20 77 68 65 6e 20 6f 74  iming of when ot
371b0 68 65 72 20 73 74 61 74 65 6d 65 6e 74 73 20 6d  her statements m
371c0 6f 64 69 66 79 20 74 68 65 20 0a 2a 2a 20 64 61  odify the .** da
371d0 74 61 62 61 73 65 2e 20 20 5e 54 68 65 20 5b 41  tabase.  ^The [A
371e0 54 54 41 43 48 5d 20 61 6e 64 20 5b 44 45 54 41  TTACH] and [DETA
371f0 43 48 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 61  CH] statements a
37200 6c 73 6f 20 63 61 75 73 65 0a 2a 2a 20 73 71 6c  lso cause.** sql
37210 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e  ite3_stmt_readon
37220 6c 79 28 29 20 74 6f 20 72 65 74 75 72 6e 20 74  ly() to return t
37230 72 75 65 20 73 69 6e 63 65 2c 20 77 68 69 6c 65  rue since, while
37240 20 74 68 6f 73 65 20 73 74 61 74 65 6d 65 6e 74   those statement
37250 73 0a 2a 2a 20 63 68 61 6e 67 65 20 74 68 65 20  s.** change the 
37260 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 66  configuration of
37270 20 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e   a database conn
37280 65 63 74 69 6f 6e 2c 20 74 68 65 79 20 64 6f 20  ection, they do 
37290 6e 6f 74 20 6d 61 6b 65 20 0a 2a 2a 20 63 68 61  not make .** cha
372a0 6e 67 65 73 20 74 6f 20 74 68 65 20 63 6f 6e 74  nges to the cont
372b0 65 6e 74 20 6f 66 20 74 68 65 20 64 61 74 61 62  ent of the datab
372c0 61 73 65 20 66 69 6c 65 73 20 6f 6e 20 64 69 73  ase files on dis
372d0 6b 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  k..** ^The sqlit
372e0 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79  e3_stmt_readonly
372f0 28 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 74  () interface ret
37300 75 72 6e 73 20 74 72 75 65 20 66 6f 72 20 5b 42  urns true for [B
37310 45 47 49 4e 5d 20 73 69 6e 63 65 0a 2a 2a 20 5b  EGIN] since.** [
37320 42 45 47 49 4e 5d 20 6d 65 72 65 6c 79 20 73 65  BEGIN] merely se
37330 74 73 20 69 6e 74 65 72 6e 61 6c 20 66 6c 61 67  ts internal flag
37340 73 2c 20 62 75 74 20 74 68 65 20 5b 42 45 47 49  s, but the [BEGI
37350 4e 7c 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54  N|BEGIN IMMEDIAT
37360 45 5d 20 61 6e 64 0a 2a 2a 20 5b 42 45 47 49 4e  E] and.** [BEGIN
37370 7c 42 45 47 49 4e 20 45 58 43 4c 55 53 49 56 45  |BEGIN EXCLUSIVE
37380 5d 20 63 6f 6d 6d 61 6e 64 73 20 64 6f 20 74 6f  ] commands do to
37390 75 63 68 20 74 68 65 20 64 61 74 61 62 61 73 65  uch the database
373a0 20 61 6e 64 20 73 6f 0a 2a 2a 20 73 71 6c 69 74   and so.** sqlit
373b0 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79  e3_stmt_readonly
373c0 28 29 20 72 65 74 75 72 6e 73 20 66 61 6c 73 65  () returns false
373d0 20 66 6f 72 20 74 68 6f 73 65 20 63 6f 6d 6d 61   for those comma
373e0 6e 64 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  nds..*/.SQLITE_A
373f0 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73  PI int sqlite3_s
37400 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 73 71 6c  tmt_readonly(sql
37410 69 74 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74  ite3_stmt *pStmt
37420 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
37430 45 46 3a 20 51 75 65 72 79 20 54 68 65 20 45 58  EF: Query The EX
37440 50 4c 41 49 4e 20 53 65 74 74 69 6e 67 20 46 6f  PLAIN Setting Fo
37450 72 20 41 20 50 72 65 70 61 72 65 64 20 53 74 61  r A Prepared Sta
37460 74 65 6d 65 6e 74 0a 2a 2a 20 4d 45 54 48 4f 44  tement.** METHOD
37470 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a  : sqlite3_stmt.*
37480 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
37490 33 5f 73 74 6d 74 5f 69 73 65 78 70 6c 61 69 6e  3_stmt_isexplain
374a0 28 53 29 20 69 6e 74 65 72 66 61 63 65 20 72 65  (S) interface re
374b0 74 75 72 6e 73 20 31 20 69 66 20 74 68 65 0a 2a  turns 1 if the.*
374c0 2a 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  * prepared state
374d0 6d 65 6e 74 20 53 20 69 73 20 61 6e 20 45 58 50  ment S is an EXP
374e0 4c 41 49 4e 20 73 74 61 74 65 6d 65 6e 74 2c 20  LAIN statement, 
374f0 6f 72 20 32 20 69 66 20 74 68 65 0a 2a 2a 20 73  or 2 if the.** s
37500 74 61 74 65 6d 65 6e 74 20 53 20 69 73 20 61 6e  tatement S is an
37510 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50   EXPLAIN QUERY P
37520 4c 41 4e 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  LAN..** ^The sql
37530 69 74 65 33 5f 73 74 6d 74 5f 69 73 65 78 70 6c  ite3_stmt_isexpl
37540 61 69 6e 28 53 29 20 69 6e 74 65 72 66 61 63 65  ain(S) interface
37550 20 72 65 74 75 72 6e 73 20 30 20 69 66 20 53 20   returns 0 if S 
37560 69 73 0a 2a 2a 20 61 6e 20 6f 72 64 69 6e 61 72  is.** an ordinar
37570 79 20 73 74 61 74 65 6d 65 6e 74 20 6f 72 20 61  y statement or a
37580 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a   NULL pointer..*
37590 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
375a0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 69 73   sqlite3_stmt_is
375b0 65 78 70 6c 61 69 6e 28 73 71 6c 69 74 65 33 5f  explain(sqlite3_
375c0 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f  stmt *pStmt);../
375d0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44  *.** CAPI3REF: D
375e0 65 74 65 72 6d 69 6e 65 20 49 66 20 41 20 50 72  etermine If A Pr
375f0 65 70 61 72 65 64 20 53 74 61 74 65 6d 65 6e 74  epared Statement
37600 20 48 61 73 20 42 65 65 6e 20 52 65 73 65 74 0a   Has Been Reset.
37610 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
37620 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54  e3_stmt.**.** ^T
37630 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f  he sqlite3_stmt_
37640 62 75 73 79 28 53 29 20 69 6e 74 65 72 66 61 63  busy(S) interfac
37650 65 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 28  e returns true (
37660 6e 6f 6e 2d 7a 65 72 6f 29 20 69 66 20 74 68 65  non-zero) if the
37670 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74  .** [prepared st
37680 61 74 65 6d 65 6e 74 5d 20 53 20 68 61 73 20 62  atement] S has b
37690 65 65 6e 20 73 74 65 70 70 65 64 20 61 74 20 6c  een stepped at l
376a0 65 61 73 74 20 6f 6e 63 65 20 75 73 69 6e 67 20  east once using 
376b0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  .** [sqlite3_ste
376c0 70 28 53 29 5d 20 62 75 74 20 68 61 73 20 6e 65  p(S)] but has ne
376d0 69 74 68 65 72 20 72 75 6e 20 74 6f 20 63 6f 6d  ither run to com
376e0 70 6c 65 74 69 6f 6e 20 28 72 65 74 75 72 6e 65  pletion (returne
376f0 64 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 44 4f 4e  d.** [SQLITE_DON
37700 45 5d 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  E] from [sqlite3
37710 5f 73 74 65 70 28 53 29 5d 29 20 6e 6f 72 0a 2a  _step(S)]) nor.*
37720 2a 20 62 65 65 6e 20 72 65 73 65 74 20 75 73 69  * been reset usi
37730 6e 67 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65  ng [sqlite3_rese
37740 74 28 53 29 5d 2e 20 20 5e 54 68 65 20 73 71 6c  t(S)].  ^The sql
37750 69 74 65 33 5f 73 74 6d 74 5f 62 75 73 79 28 53  ite3_stmt_busy(S
37760 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 72  ).** interface r
37770 65 74 75 72 6e 73 20 66 61 6c 73 65 20 69 66 20  eturns false if 
37780 53 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  S is a NULL poin
37790 74 65 72 2e 20 20 49 66 20 53 20 69 73 20 6e 6f  ter.  If S is no
377a0 74 20 61 20 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69  t a .** NULL poi
377b0 6e 74 65 72 20 61 6e 64 20 69 73 20 6e 6f 74 20  nter and is not 
377c0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 76  a pointer to a v
377d0 61 6c 69 64 20 5b 70 72 65 70 61 72 65 64 20 73  alid [prepared s
377e0 74 61 74 65 6d 65 6e 74 5d 0a 2a 2a 20 6f 62 6a  tatement].** obj
377f0 65 63 74 2c 20 74 68 65 6e 20 74 68 65 20 62 65  ect, then the be
37800 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69  havior is undefi
37810 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62 6c 79  ned and probably
37820 20 75 6e 64 65 73 69 72 61 62 6c 65 2e 0a 2a 2a   undesirable..**
37830 0a 2a 2a 20 54 68 69 73 20 69 6e 74 65 72 66 61  .** This interfa
37840 63 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 69  ce can be used i
37850 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 5b 73  n combination [s
37860 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74  qlite3_next_stmt
37870 28 29 5d 0a 2a 2a 20 74 6f 20 6c 6f 63 61 74 65  ()].** to locate
37880 20 61 6c 6c 20 70 72 65 70 61 72 65 64 20 73 74   all prepared st
37890 61 74 65 6d 65 6e 74 73 20 61 73 73 6f 63 69 61  atements associa
378a0 74 65 64 20 77 69 74 68 20 61 20 64 61 74 61 62  ted with a datab
378b0 61 73 65 20 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69  ase .** connecti
378c0 6f 6e 20 74 68 61 74 20 61 72 65 20 69 6e 20 6e  on that are in n
378d0 65 65 64 20 6f 66 20 62 65 69 6e 67 20 72 65 73  eed of being res
378e0 65 74 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65  et.  This can be
378f0 20 75 73 65 64 2c 0a 2a 2a 20 66 6f 72 20 65 78   used,.** for ex
37900 61 6d 70 6c 65 2c 20 69 6e 20 64 69 61 67 6e 6f  ample, in diagno
37910 73 74 69 63 20 72 6f 75 74 69 6e 65 73 20 74 6f  stic routines to
37920 20 73 65 61 72 63 68 20 66 6f 72 20 70 72 65 70   search for prep
37930 61 72 65 64 20 0a 2a 2a 20 73 74 61 74 65 6d 65  ared .** stateme
37940 6e 74 73 20 74 68 61 74 20 61 72 65 20 68 6f 6c  nts that are hol
37950 64 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74 69  ding a transacti
37960 6f 6e 20 6f 70 65 6e 2e 0a 2a 2f 0a 53 51 4c 49  on open..*/.SQLI
37970 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
37980 65 33 5f 73 74 6d 74 5f 62 75 73 79 28 73 71 6c  e3_stmt_busy(sql
37990 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a  ite3_stmt*);../*
379a0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 79  .** CAPI3REF: Dy
379b0 6e 61 6d 69 63 61 6c 6c 79 20 54 79 70 65 64 20  namically Typed 
379c0 56 61 6c 75 65 20 4f 62 6a 65 63 74 0a 2a 2a 20  Value Object.** 
379d0 4b 45 59 57 4f 52 44 53 3a 20 7b 70 72 6f 74 65  KEYWORDS: {prote
379e0 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  cted sqlite3_val
379f0 75 65 7d 20 7b 75 6e 70 72 6f 74 65 63 74 65 64  ue} {unprotected
37a00 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 7d 0a   sqlite3_value}.
37a10 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 75 73 65  **.** SQLite use
37a20 73 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 61  s the sqlite3_va
37a30 6c 75 65 20 6f 62 6a 65 63 74 20 74 6f 20 72 65  lue object to re
37a40 70 72 65 73 65 6e 74 20 61 6c 6c 20 76 61 6c 75  present all valu
37a50 65 73 0a 2a 2a 20 74 68 61 74 20 63 61 6e 20 62  es.** that can b
37a60 65 20 73 74 6f 72 65 64 20 69 6e 20 61 20 64 61  e stored in a da
37a70 74 61 62 61 73 65 20 74 61 62 6c 65 2e 20 53 51  tabase table. SQ
37a80 4c 69 74 65 20 75 73 65 73 20 64 79 6e 61 6d 69  Lite uses dynami
37a90 63 20 74 79 70 69 6e 67 0a 2a 2a 20 66 6f 72 20  c typing.** for 
37aa0 74 68 65 20 76 61 6c 75 65 73 20 69 74 20 73 74  the values it st
37ab0 6f 72 65 73 2e 20 20 5e 56 61 6c 75 65 73 20 73  ores.  ^Values s
37ac0 74 6f 72 65 64 20 69 6e 20 73 71 6c 69 74 65 33  tored in sqlite3
37ad0 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 0a 2a  _value objects.*
37ae0 2a 20 63 61 6e 20 62 65 20 69 6e 74 65 67 65 72  * can be integer
37af0 73 2c 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e  s, floating poin
37b00 74 20 76 61 6c 75 65 73 2c 20 73 74 72 69 6e 67  t values, string
37b10 73 2c 20 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c  s, BLOBs, or NUL
37b20 4c 2e 0a 2a 2a 0a 2a 2a 20 41 6e 20 73 71 6c 69  L..**.** An sqli
37b30 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74  te3_value object
37b40 20 6d 61 79 20 62 65 20 65 69 74 68 65 72 20 22   may be either "
37b50 70 72 6f 74 65 63 74 65 64 22 20 6f 72 20 22 75  protected" or "u
37b60 6e 70 72 6f 74 65 63 74 65 64 22 2e 0a 2a 2a 20  nprotected"..** 
37b70 53 6f 6d 65 20 69 6e 74 65 72 66 61 63 65 73 20  Some interfaces 
37b80 72 65 71 75 69 72 65 20 61 20 70 72 6f 74 65 63  require a protec
37b90 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ted sqlite3_valu
37ba0 65 2e 20 20 4f 74 68 65 72 20 69 6e 74 65 72 66  e.  Other interf
37bb0 61 63 65 73 0a 2a 2a 20 77 69 6c 6c 20 61 63 63  aces.** will acc
37bc0 65 70 74 20 65 69 74 68 65 72 20 61 20 70 72 6f  ept either a pro
37bd0 74 65 63 74 65 64 20 6f 72 20 61 6e 20 75 6e 70  tected or an unp
37be0 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33  rotected sqlite3
37bf0 5f 76 61 6c 75 65 2e 0a 2a 2a 20 45 76 65 72 79  _value..** Every
37c00 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20   interface that 
37c10 61 63 63 65 70 74 73 20 73 71 6c 69 74 65 33 5f  accepts sqlite3_
37c20 76 61 6c 75 65 20 61 72 67 75 6d 65 6e 74 73 20  value arguments 
37c30 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 77 68 65  specifies.** whe
37c40 74 68 65 72 20 6f 72 20 6e 6f 74 20 69 74 20 72  ther or not it r
37c50 65 71 75 69 72 65 73 20 61 20 70 72 6f 74 65 63  equires a protec
37c60 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ted sqlite3_valu
37c70 65 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c 69  e.  The.** [sqli
37c80 74 65 33 5f 76 61 6c 75 65 5f 64 75 70 28 29 5d  te3_value_dup()]
37c90 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62   interface can b
37ca0 65 20 75 73 65 64 20 74 6f 20 63 6f 6e 73 74 72  e used to constr
37cb0 75 63 74 20 61 20 6e 65 77 20 0a 2a 2a 20 70 72  uct a new .** pr
37cc0 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f  otected sqlite3_
37cd0 76 61 6c 75 65 20 66 72 6f 6d 20 61 6e 20 75 6e  value from an un
37ce0 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65  protected sqlite
37cf0 33 5f 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 54  3_value..**.** T
37d00 68 65 20 74 65 72 6d 73 20 22 70 72 6f 74 65 63  he terms "protec
37d10 74 65 64 22 20 61 6e 64 20 22 75 6e 70 72 6f 74  ted" and "unprot
37d20 65 63 74 65 64 22 20 72 65 66 65 72 20 74 6f 20  ected" refer to 
37d30 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 0a 2a  whether or not.*
37d40 2a 20 61 20 6d 75 74 65 78 20 69 73 20 68 65 6c  * a mutex is hel
37d50 64 2e 20 20 41 6e 20 69 6e 74 65 72 6e 61 6c 20  d.  An internal 
37d60 6d 75 74 65 78 20 69 73 20 68 65 6c 64 20 66 6f  mutex is held fo
37d70 72 20 61 20 70 72 6f 74 65 63 74 65 64 0a 2a 2a  r a protected.**
37d80 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f   sqlite3_value o
37d90 62 6a 65 63 74 20 62 75 74 20 6e 6f 20 6d 75 74  bject but no mut
37da0 65 78 20 69 73 20 68 65 6c 64 20 66 6f 72 20 61  ex is held for a
37db0 6e 20 75 6e 70 72 6f 74 65 63 74 65 64 0a 2a 2a  n unprotected.**
37dc0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f   sqlite3_value o
37dd0 62 6a 65 63 74 2e 20 20 49 66 20 53 51 4c 69 74  bject.  If SQLit
37de0 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 74 6f  e is compiled to
37df0 20 62 65 20 73 69 6e 67 6c 65 2d 74 68 72 65 61   be single-threa
37e00 64 65 64 0a 2a 2a 20 28 77 69 74 68 20 5b 53 51  ded.** (with [SQ
37e10 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
37e20 30 5d 20 61 6e 64 20 77 69 74 68 20 5b 73 71 6c  0] and with [sql
37e30 69 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28  ite3_threadsafe(
37e40 29 5d 20 72 65 74 75 72 6e 69 6e 67 20 30 29 0a  )] returning 0).
37e50 2a 2a 20 6f 72 20 69 66 20 53 51 4c 69 74 65 20  ** or if SQLite 
37e60 69 73 20 72 75 6e 20 69 6e 20 6f 6e 65 20 6f 66  is run in one of
37e70 20 72 65 64 75 63 65 64 20 6d 75 74 65 78 20 6d   reduced mutex m
37e80 6f 64 65 73 20 0a 2a 2a 20 5b 53 51 4c 49 54 45  odes .** [SQLITE
37e90 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48  _CONFIG_SINGLETH
37ea0 52 45 41 44 5d 20 6f 72 20 5b 53 51 4c 49 54 45  READ] or [SQLITE
37eb0 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52  _CONFIG_MULTITHR
37ec0 45 41 44 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65  EAD].** then the
37ed0 72 65 20 69 73 20 6e 6f 20 64 69 73 74 69 6e 63  re is no distinc
37ee0 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 70 72 6f  tion between pro
37ef0 74 65 63 74 65 64 20 61 6e 64 20 75 6e 70 72 6f  tected and unpro
37f00 74 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65  tected.** sqlite
37f10 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20  3_value objects 
37f20 61 6e 64 20 74 68 65 79 20 63 61 6e 20 62 65 20  and they can be 
37f30 75 73 65 64 20 69 6e 74 65 72 63 68 61 6e 67 65  used interchange
37f40 61 62 6c 79 2e 20 20 48 6f 77 65 76 65 72 2c 0a  ably.  However,.
37f50 2a 2a 20 66 6f 72 20 6d 61 78 69 6d 75 6d 20 63  ** for maximum c
37f60 6f 64 65 20 70 6f 72 74 61 62 69 6c 69 74 79 20  ode portability 
37f70 69 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65  it is recommende
37f80 64 20 74 68 61 74 20 61 70 70 6c 69 63 61 74 69  d that applicati
37f90 6f 6e 73 0a 2a 2a 20 73 74 69 6c 6c 20 6d 61 6b  ons.** still mak
37fa0 65 20 74 68 65 20 64 69 73 74 69 6e 63 74 69 6f  e the distinctio
37fb0 6e 20 62 65 74 77 65 65 6e 20 70 72 6f 74 65 63  n between protec
37fc0 74 65 64 20 61 6e 64 20 75 6e 70 72 6f 74 65 63  ted and unprotec
37fd0 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 76  ted.** sqlite3_v
37fe0 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 65 76 65  alue objects eve
37ff0 6e 20 77 68 65 6e 20 6e 6f 74 20 73 74 72 69 63  n when not stric
38000 74 6c 79 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a  tly required..**
38010 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
38020 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 74  _value objects t
38030 68 61 74 20 61 72 65 20 70 61 73 73 65 64 20 61  hat are passed a
38040 73 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 74  s parameters int
38050 6f 20 74 68 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65  o the.** impleme
38060 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 61 70 70 6c  ntation of [appl
38070 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20  ication-defined 
38080 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61  SQL functions] a
38090 72 65 20 70 72 6f 74 65 63 74 65 64 2e 0a 2a 2a  re protected..**
380a0 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 76 61   ^The sqlite3_va
380b0 6c 75 65 20 6f 62 6a 65 63 74 20 72 65 74 75 72  lue object retur
380c0 6e 65 64 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74  ned by.** [sqlit
380d0 65 33 5f 63 6f 6c 75 6d 6e 5f 76 61 6c 75 65 28  e3_column_value(
380e0 29 5d 20 69 73 20 75 6e 70 72 6f 74 65 63 74 65  )] is unprotecte
380f0 64 2e 0a 2a 2a 20 55 6e 70 72 6f 74 65 63 74 65  d..** Unprotecte
38100 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  d sqlite3_value 
38110 6f 62 6a 65 63 74 73 20 6d 61 79 20 6f 6e 6c 79  objects may only
38120 20 62 65 20 75 73 65 64 20 61 73 20 61 72 67 75   be used as argu
38130 6d 65 6e 74 73 0a 2a 2a 20 74 6f 20 5b 73 71 6c  ments.** to [sql
38140 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75  ite3_result_valu
38150 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 62  e()], [sqlite3_b
38160 69 6e 64 5f 76 61 6c 75 65 28 29 5d 2c 20 61 6e  ind_value()], an
38170 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 61  d.** [sqlite3_va
38180 6c 75 65 5f 64 75 70 28 29 5d 2e 0a 2a 2a 20 54  lue_dup()]..** T
38190 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75  he [sqlite3_valu
381a0 65 5f 62 6c 6f 62 20 7c 20 73 71 6c 69 74 65 33  e_blob | sqlite3
381b0 5f 76 61 6c 75 65 5f 74 79 70 65 28 29 5d 20 66  _value_type()] f
381c0 61 6d 69 6c 79 20 6f 66 0a 2a 2a 20 69 6e 74 65  amily of.** inte
381d0 72 66 61 63 65 73 20 72 65 71 75 69 72 65 20 70  rfaces require p
381e0 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33  rotected sqlite3
381f0 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 2e 0a  _value objects..
38200 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
38210 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  t sqlite3_value 
38220 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 3b 0a 0a  sqlite3_value;..
38230 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
38240 53 51 4c 20 46 75 6e 63 74 69 6f 6e 20 43 6f 6e  SQL Function Con
38250 74 65 78 74 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a  text Object.**.*
38260 2a 20 54 68 65 20 63 6f 6e 74 65 78 74 20 69 6e  * The context in
38270 20 77 68 69 63 68 20 61 6e 20 53 51 4c 20 66 75   which an SQL fu
38280 6e 63 74 69 6f 6e 20 65 78 65 63 75 74 65 73 20  nction executes 
38290 69 73 20 73 74 6f 72 65 64 20 69 6e 20 61 6e 0a  is stored in an.
382a0 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65  ** sqlite3_conte
382b0 78 74 20 6f 62 6a 65 63 74 2e 20 20 5e 41 20 70  xt object.  ^A p
382c0 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 73 71 6c  ointer to an sql
382d0 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 6f 62 6a  ite3_context obj
382e0 65 63 74 0a 2a 2a 20 69 73 20 61 6c 77 61 79 73  ect.** is always
382f0 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
38300 20 74 6f 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e   to [application
38310 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e  -defined SQL fun
38320 63 74 69 6f 6e 73 5d 2e 0a 2a 2a 20 54 68 65 20  ctions]..** The 
38330 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
38340 6e 65 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ned SQL function
38350 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
38360 77 69 6c 6c 20 70 61 73 73 20 74 68 69 73 0a 2a  will pass this.*
38370 2a 20 70 6f 69 6e 74 65 72 20 74 68 72 6f 75 67  * pointer throug
38380 68 20 69 6e 74 6f 20 63 61 6c 6c 73 20 74 6f 20  h into calls to 
38390 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  [sqlite3_result_
383a0 69 6e 74 20 7c 20 73 71 6c 69 74 65 33 5f 72 65  int | sqlite3_re
383b0 73 75 6c 74 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c  sult()],.** [sql
383c0 69 74 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63  ite3_aggregate_c
383d0 6f 6e 74 65 78 74 28 29 5d 2c 20 5b 73 71 6c 69  ontext()], [sqli
383e0 74 65 33 5f 75 73 65 72 5f 64 61 74 61 28 29 5d  te3_user_data()]
383f0 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f  ,.** [sqlite3_co
38400 6e 74 65 78 74 5f 64 62 5f 68 61 6e 64 6c 65 28  ntext_db_handle(
38410 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 67 65 74  )], [sqlite3_get
38420 5f 61 75 78 64 61 74 61 28 29 5d 2c 0a 2a 2a 20  _auxdata()],.** 
38430 61 6e 64 2f 6f 72 20 5b 73 71 6c 69 74 65 33 5f  and/or [sqlite3_
38440 73 65 74 5f 61 75 78 64 61 74 61 28 29 5d 2e 0a  set_auxdata()]..
38450 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
38460 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
38470 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78  t sqlite3_contex
38480 74 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  t;../*.** CAPI3R
38490 45 46 3a 20 42 69 6e 64 69 6e 67 20 56 61 6c 75  EF: Binding Valu
384a0 65 73 20 54 6f 20 50 72 65 70 61 72 65 64 20 53  es To Prepared S
384b0 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 4b 45 59  tatements.** KEY
384c0 57 4f 52 44 53 3a 20 7b 68 6f 73 74 20 70 61 72  WORDS: {host par
384d0 61 6d 65 74 65 72 7d 20 7b 68 6f 73 74 20 70 61  ameter} {host pa
384e0 72 61 6d 65 74 65 72 73 7d 20 7b 68 6f 73 74 20  rameters} {host 
384f0 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 7d 0a  parameter name}.
38500 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 53 51  ** KEYWORDS: {SQ
38510 4c 20 70 61 72 61 6d 65 74 65 72 7d 20 7b 53 51  L parameter} {SQ
38520 4c 20 70 61 72 61 6d 65 74 65 72 73 7d 20 7b 70  L parameters} {p
38530 61 72 61 6d 65 74 65 72 20 62 69 6e 64 69 6e 67  arameter binding
38540 7d 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  }.** METHOD: sql
38550 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20  ite3_stmt.**.** 
38560 5e 28 49 6e 20 74 68 65 20 53 51 4c 20 73 74 61  ^(In the SQL sta
38570 74 65 6d 65 6e 74 20 74 65 78 74 20 69 6e 70 75  tement text inpu
38580 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 70 72  t to [sqlite3_pr
38590 65 70 61 72 65 5f 76 32 28 29 5d 20 61 6e 64 20  epare_v2()] and 
385a0 69 74