System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 09f562b4f4eb5ecc71fc07e62b5b1a76c9778bd5:


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 33 30 2e 30 2e 20 20  ersion 3.30.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 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
24e0: 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 56 54 41  E_ENABLE_STMTVTA
24f0: 42 0a 20 20 22 45 4e 41 42 4c 45 5f 53 54 4d 54  B.  "ENABLE_STMT
2500: 56 54 41 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69  VTAB",.#endif.#i
2510: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
2520: 53 54 4d 54 5f 53 43 41 4e 53 54 41 54 55 53 0a  STMT_SCANSTATUS.
2530: 20 20 22 45 4e 41 42 4c 45 5f 53 54 4d 54 5f 53    "ENABLE_STMT_S
2540: 43 41 4e 53 54 41 54 55 53 22 2c 0a 23 65 6e 64  CANSTATUS",.#end
2550: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2560: 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c  ABLE_UNKNOWN_SQL
2570: 5f 46 55 4e 43 54 49 4f 4e 0a 20 20 22 45 4e 41  _FUNCTION.  "ENA
2580: 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f  BLE_UNKNOWN_SQL_
2590: 46 55 4e 43 54 49 4f 4e 22 2c 0a 23 65 6e 64 69  FUNCTION",.#endi
25a0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
25b0: 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46  BLE_UNLOCK_NOTIF
25c0: 59 0a 20 20 22 45 4e 41 42 4c 45 5f 55 4e 4c 4f  Y.  "ENABLE_UNLO
25d0: 43 4b 5f 4e 4f 54 49 46 59 22 2c 0a 23 65 6e 64  CK_NOTIFY",.#end
25e0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
25f0: 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45  ABLE_UPDATE_DELE
2600: 54 45 5f 4c 49 4d 49 54 0a 20 20 22 45 4e 41 42  TE_LIMIT.  "ENAB
2610: 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45  LE_UPDATE_DELETE
2620: 5f 4c 49 4d 49 54 22 2c 0a 23 65 6e 64 69 66 0a  _LIMIT",.#endif.
2630: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
2640: 45 5f 55 52 49 5f 30 30 5f 45 52 52 4f 52 0a 20  E_URI_00_ERROR. 
2650: 20 22 45 4e 41 42 4c 45 5f 55 52 49 5f 30 30 5f   "ENABLE_URI_00_
2660: 45 52 52 4f 52 22 2c 0a 23 65 6e 64 69 66 0a 23  ERROR",.#endif.#
2670: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2680: 5f 56 46 53 54 52 41 43 45 0a 20 20 22 45 4e 41  _VFSTRACE.  "ENA
2690: 42 4c 45 5f 56 46 53 54 52 41 43 45 22 2c 0a 23  BLE_VFSTRACE",.#
26a0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
26b0: 5f 45 4e 41 42 4c 45 5f 57 48 45 52 45 54 52 41  _ENABLE_WHERETRA
26c0: 43 45 0a 20 20 22 45 4e 41 42 4c 45 5f 57 48 45  CE.  "ENABLE_WHE
26d0: 52 45 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66  RETRACE",.#endif
26e0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
26f0: 4c 45 5f 5a 49 50 56 46 53 0a 20 20 22 45 4e 41  LE_ZIPVFS.  "ENA
2700: 42 4c 45 5f 5a 49 50 56 46 53 22 2c 0a 23 65 6e  BLE_ZIPVFS",.#en
2710: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
2720: 58 50 4c 41 49 4e 5f 45 53 54 49 4d 41 54 45 44  XPLAIN_ESTIMATED
2730: 5f 52 4f 57 53 0a 20 20 22 45 58 50 4c 41 49 4e  _ROWS.  "EXPLAIN
2740: 5f 45 53 54 49 4d 41 54 45 44 5f 52 4f 57 53 22  _ESTIMATED_ROWS"
2750: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2760: 49 54 45 5f 45 58 54 52 41 5f 49 46 4e 55 4c 4c  ITE_EXTRA_IFNULL
2770: 52 4f 57 0a 20 20 22 45 58 54 52 41 5f 49 46 4e  ROW.  "EXTRA_IFN
2780: 55 4c 4c 52 4f 57 22 2c 0a 23 65 6e 64 69 66 0a  ULLROW",.#endif.
2790: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 45 58  #ifdef SQLITE_EX
27a0: 54 52 41 5f 49 4e 49 54 0a 20 20 22 45 58 54 52  TRA_INIT.  "EXTR
27b0: 41 5f 49 4e 49 54 3d 22 20 43 54 49 4d 45 4f 50  A_INIT=" CTIMEOP
27c0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 45 58 54  T_VAL(SQLITE_EXT
27d0: 52 41 5f 49 4e 49 54 29 2c 0a 23 65 6e 64 69 66  RA_INIT),.#endif
27e0: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 45  .#ifdef SQLITE_E
27f0: 58 54 52 41 5f 53 48 55 54 44 4f 57 4e 0a 20 20  XTRA_SHUTDOWN.  
2800: 22 45 58 54 52 41 5f 53 48 55 54 44 4f 57 4e 3d  "EXTRA_SHUTDOWN=
2810: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2820: 51 4c 49 54 45 5f 45 58 54 52 41 5f 53 48 55 54  QLITE_EXTRA_SHUT
2830: 44 4f 57 4e 29 2c 0a 23 65 6e 64 69 66 0a 23 69  DOWN),.#endif.#i
2840: 66 64 65 66 20 53 51 4c 49 54 45 5f 46 54 53 33  fdef SQLITE_FTS3
2850: 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 0a  _MAX_EXPR_DEPTH.
2860: 20 20 22 46 54 53 33 5f 4d 41 58 5f 45 58 50 52    "FTS3_MAX_EXPR
2870: 5f 44 45 50 54 48 3d 22 20 43 54 49 4d 45 4f 50  _DEPTH=" CTIMEOP
2880: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 46 54 53  T_VAL(SQLITE_FTS
2890: 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48  3_MAX_EXPR_DEPTH
28a0: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ),.#endif.#if SQ
28b0: 4c 49 54 45 5f 46 54 53 35 5f 45 4e 41 42 4c 45  LITE_FTS5_ENABLE
28c0: 5f 54 45 53 54 5f 4d 49 0a 20 20 22 46 54 53 35  _TEST_MI.  "FTS5
28d0: 5f 45 4e 41 42 4c 45 5f 54 45 53 54 5f 4d 49 22  _ENABLE_TEST_MI"
28e0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
28f0: 49 54 45 5f 46 54 53 35 5f 4e 4f 5f 57 49 54 48  ITE_FTS5_NO_WITH
2900: 4f 55 54 5f 52 4f 57 49 44 0a 20 20 22 46 54 53  OUT_ROWID.  "FTS
2910: 35 5f 4e 4f 5f 57 49 54 48 4f 55 54 5f 52 4f 57  5_NO_WITHOUT_ROW
2920: 49 44 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ID",.#endif.#if 
2930: 53 51 4c 49 54 45 5f 48 41 53 5f 43 4f 44 45 43  SQLITE_HAS_CODEC
2940: 0a 20 20 22 48 41 53 5f 43 4f 44 45 43 22 2c 0a  .  "HAS_CODEC",.
2950: 23 65 6e 64 69 66 0a 23 69 66 20 48 41 56 45 5f  #endif.#if HAVE_
2960: 49 53 4e 41 4e 20 7c 7c 20 53 51 4c 49 54 45 5f  ISNAN || SQLITE_
2970: 48 41 56 45 5f 49 53 4e 41 4e 0a 20 20 22 48 41  HAVE_ISNAN.  "HA
2980: 56 45 5f 49 53 4e 41 4e 22 2c 0a 23 65 6e 64 69  VE_ISNAN",.#endi
2990: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 48 4f 4d  f.#if SQLITE_HOM
29a0: 45 47 52 4f 57 4e 5f 52 45 43 55 52 53 49 56 45  EGROWN_RECURSIVE
29b0: 5f 4d 55 54 45 58 0a 20 20 22 48 4f 4d 45 47 52  _MUTEX.  "HOMEGR
29c0: 4f 57 4e 5f 52 45 43 55 52 53 49 56 45 5f 4d 55  OWN_RECURSIVE_MU
29d0: 54 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  TEX",.#endif.#if
29e0: 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5f 41   SQLITE_IGNORE_A
29f0: 46 50 5f 4c 4f 43 4b 5f 45 52 52 4f 52 53 0a 20  FP_LOCK_ERRORS. 
2a00: 20 22 49 47 4e 4f 52 45 5f 41 46 50 5f 4c 4f 43   "IGNORE_AFP_LOC
2a10: 4b 5f 45 52 52 4f 52 53 22 2c 0a 23 65 6e 64 69  K_ERRORS",.#endi
2a20: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 49 47 4e  f.#if SQLITE_IGN
2a30: 4f 52 45 5f 46 4c 4f 43 4b 5f 4c 4f 43 4b 5f 45  ORE_FLOCK_LOCK_E
2a40: 52 52 4f 52 53 0a 20 20 22 49 47 4e 4f 52 45 5f  RRORS.  "IGNORE_
2a50: 46 4c 4f 43 4b 5f 4c 4f 43 4b 5f 45 52 52 4f 52  FLOCK_LOCK_ERROR
2a60: 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  S",.#endif.#if S
2a70: 51 4c 49 54 45 5f 49 4e 4c 49 4e 45 5f 4d 45 4d  QLITE_INLINE_MEM
2a80: 43 50 59 0a 20 20 22 49 4e 4c 49 4e 45 5f 4d 45  CPY.  "INLINE_ME
2a90: 4d 43 50 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69  MCPY",.#endif.#i
2aa0: 66 20 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54  f SQLITE_INT64_T
2ab0: 59 50 45 0a 20 20 22 49 4e 54 36 34 5f 54 59 50  YPE.  "INT64_TYP
2ac0: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  E",.#endif.#ifde
2ad0: 66 20 53 51 4c 49 54 45 5f 49 4e 54 45 47 52 49  f SQLITE_INTEGRI
2ae0: 54 59 5f 43 48 45 43 4b 5f 45 52 52 4f 52 5f 4d  TY_CHECK_ERROR_M
2af0: 41 58 0a 20 20 22 49 4e 54 45 47 52 49 54 59 5f  AX.  "INTEGRITY_
2b00: 43 48 45 43 4b 5f 45 52 52 4f 52 5f 4d 41 58 3d  CHECK_ERROR_MAX=
2b10: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2b20: 51 4c 49 54 45 5f 49 4e 54 45 47 52 49 54 59 5f  QLITE_INTEGRITY_
2b30: 43 48 45 43 4b 5f 45 52 52 4f 52 5f 4d 41 58 29  CHECK_ERROR_MAX)
2b40: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2b50: 49 54 45 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f  ITE_LIKE_DOESNT_
2b60: 4d 41 54 43 48 5f 42 4c 4f 42 53 0a 20 20 22 4c  MATCH_BLOBS.  "L
2b70: 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54 43 48  IKE_DOESNT_MATCH
2b80: 5f 42 4c 4f 42 53 22 2c 0a 23 65 6e 64 69 66 0a  _BLOBS",.#endif.
2b90: 23 69 66 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f  #if SQLITE_LOCK_
2ba0: 54 52 41 43 45 0a 20 20 22 4c 4f 43 4b 5f 54 52  TRACE.  "LOCK_TR
2bb0: 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ACE",.#endif.#if
2bc0: 20 53 51 4c 49 54 45 5f 4c 4f 47 5f 43 41 43 48   SQLITE_LOG_CACH
2bd0: 45 5f 53 50 49 4c 4c 0a 20 20 22 4c 4f 47 5f 43  E_SPILL.  "LOG_C
2be0: 41 43 48 45 5f 53 50 49 4c 4c 22 2c 0a 23 65 6e  ACHE_SPILL",.#en
2bf0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
2c00: 45 5f 4d 41 4c 4c 4f 43 5f 53 4f 46 54 5f 4c 49  E_MALLOC_SOFT_LI
2c10: 4d 49 54 0a 20 20 22 4d 41 4c 4c 4f 43 5f 53 4f  MIT.  "MALLOC_SO
2c20: 46 54 5f 4c 49 4d 49 54 3d 22 20 43 54 49 4d 45  FT_LIMIT=" CTIME
2c30: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
2c40: 41 4c 4c 4f 43 5f 53 4f 46 54 5f 4c 49 4d 49 54  ALLOC_SOFT_LIMIT
2c50: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
2c60: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54 41   SQLITE_MAX_ATTA
2c70: 43 48 45 44 0a 20 20 22 4d 41 58 5f 41 54 54 41  CHED.  "MAX_ATTA
2c80: 43 48 45 44 3d 22 20 43 54 49 4d 45 4f 50 54 5f  CHED=" CTIMEOPT_
2c90: 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 41  VAL(SQLITE_MAX_A
2ca0: 54 54 41 43 48 45 44 29 2c 0a 23 65 6e 64 69 66  TTACHED),.#endif
2cb0: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d  .#ifdef SQLITE_M
2cc0: 41 58 5f 43 4f 4c 55 4d 4e 0a 20 20 22 4d 41 58  AX_COLUMN.  "MAX
2cd0: 5f 43 4f 4c 55 4d 4e 3d 22 20 43 54 49 4d 45 4f  _COLUMN=" CTIMEO
2ce0: 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41  PT_VAL(SQLITE_MA
2cf0: 58 5f 43 4f 4c 55 4d 4e 29 2c 0a 23 65 6e 64 69  X_COLUMN),.#endi
2d00: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
2d10: 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c  MAX_COMPOUND_SEL
2d20: 45 43 54 0a 20 20 22 4d 41 58 5f 43 4f 4d 50 4f  ECT.  "MAX_COMPO
2d30: 55 4e 44 5f 53 45 4c 45 43 54 3d 22 20 43 54 49  UND_SELECT=" CTI
2d40: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2d50: 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  _MAX_COMPOUND_SE
2d60: 4c 45 43 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69  LECT),.#endif.#i
2d70: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
2d80: 44 45 46 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a  DEFAULT_PAGE_SIZ
2d90: 45 0a 20 20 22 4d 41 58 5f 44 45 46 41 55 4c 54  E.  "MAX_DEFAULT
2da0: 5f 50 41 47 45 5f 53 49 5a 45 3d 22 20 43 54 49  _PAGE_SIZE=" CTI
2db0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2dc0: 5f 4d 41 58 5f 44 45 46 41 55 4c 54 5f 50 41 47  _MAX_DEFAULT_PAG
2dd0: 45 5f 53 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a  E_SIZE),.#endif.
2de0: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41  #ifdef SQLITE_MA
2df0: 58 5f 45 58 50 52 5f 44 45 50 54 48 0a 20 20 22  X_EXPR_DEPTH.  "
2e00: 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 22  MAX_EXPR_DEPTH="
2e10: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2e20: 4c 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45  LITE_MAX_EXPR_DE
2e30: 50 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  PTH),.#endif.#if
2e40: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 46  def SQLITE_MAX_F
2e50: 55 4e 43 54 49 4f 4e 5f 41 52 47 0a 20 20 22 4d  UNCTION_ARG.  "M
2e60: 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 3d  AX_FUNCTION_ARG=
2e70: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2e80: 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43 54 49  QLITE_MAX_FUNCTI
2e90: 4f 4e 5f 41 52 47 29 2c 0a 23 65 6e 64 69 66 0a  ON_ARG),.#endif.
2ea0: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41  #ifdef SQLITE_MA
2eb0: 58 5f 4c 45 4e 47 54 48 0a 20 20 22 4d 41 58 5f  X_LENGTH.  "MAX_
2ec0: 4c 45 4e 47 54 48 3d 22 20 43 54 49 4d 45 4f 50  LENGTH=" CTIMEOP
2ed0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
2ee0: 5f 4c 45 4e 47 54 48 29 2c 0a 23 65 6e 64 69 66  _LENGTH),.#endif
2ef0: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d  .#ifdef SQLITE_M
2f00: 41 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f  AX_LIKE_PATTERN_
2f10: 4c 45 4e 47 54 48 0a 20 20 22 4d 41 58 5f 4c 49  LENGTH.  "MAX_LI
2f20: 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54  KE_PATTERN_LENGT
2f30: 48 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  H=" CTIMEOPT_VAL
2f40: 28 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b 45  (SQLITE_MAX_LIKE
2f50: 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 29  _PATTERN_LENGTH)
2f60: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
2f70: 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52  SQLITE_MAX_MEMOR
2f80: 59 0a 20 20 22 4d 41 58 5f 4d 45 4d 4f 52 59 3d  Y.  "MAX_MEMORY=
2f90: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2fa0: 51 4c 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52 59  QLITE_MAX_MEMORY
2fb0: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
2fc0: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50   SQLITE_MAX_MMAP
2fd0: 5f 53 49 5a 45 0a 20 20 22 4d 41 58 5f 4d 4d 41  _SIZE.  "MAX_MMA
2fe0: 50 5f 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50  P_SIZE=" CTIMEOP
2ff0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
3000: 5f 4d 4d 41 50 5f 53 49 5a 45 29 2c 0a 23 65 6e  _MMAP_SIZE),.#en
3010: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
3020: 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 5f  E_MAX_MMAP_SIZE_
3030: 0a 20 20 22 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a  .  "MAX_MMAP_SIZ
3040: 45 5f 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  E_=" CTIMEOPT_VA
3050: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41  L(SQLITE_MAX_MMA
3060: 50 5f 53 49 5a 45 5f 29 2c 0a 23 65 6e 64 69 66  P_SIZE_),.#endif
3070: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d  .#ifdef SQLITE_M
3080: 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 0a 20 20  AX_PAGE_COUNT.  
3090: 22 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 3d  "MAX_PAGE_COUNT=
30a0: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
30b0: 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43  QLITE_MAX_PAGE_C
30c0: 4f 55 4e 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69  OUNT),.#endif.#i
30d0: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
30e0: 50 41 47 45 5f 53 49 5a 45 0a 20 20 22 4d 41 58  PAGE_SIZE.  "MAX
30f0: 5f 50 41 47 45 5f 53 49 5a 45 3d 22 20 43 54 49  _PAGE_SIZE=" CTI
3100: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
3110: 5f 4d 41 58 5f 50 41 47 45 5f 53 49 5a 45 29 2c  _MAX_PAGE_SIZE),
3120: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
3130: 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41  QLITE_MAX_SCHEMA
3140: 5f 52 45 54 52 59 0a 20 20 22 4d 41 58 5f 53 43  _RETRY.  "MAX_SC
3150: 48 45 4d 41 5f 52 45 54 52 59 3d 22 20 43 54 49  HEMA_RETRY=" CTI
3160: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
3170: 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52  _MAX_SCHEMA_RETR
3180: 59 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  Y),.#endif.#ifde
3190: 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51 4c  f SQLITE_MAX_SQL
31a0: 5f 4c 45 4e 47 54 48 0a 20 20 22 4d 41 58 5f 53  _LENGTH.  "MAX_S
31b0: 51 4c 5f 4c 45 4e 47 54 48 3d 22 20 43 54 49 4d  QL_LENGTH=" CTIM
31c0: 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f  EOPT_VAL(SQLITE_
31d0: 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 29 2c  MAX_SQL_LENGTH),
31e0: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
31f0: 51 4c 49 54 45 5f 4d 41 58 5f 54 52 49 47 47 45  QLITE_MAX_TRIGGE
3200: 52 5f 44 45 50 54 48 0a 20 20 22 4d 41 58 5f 54  R_DEPTH.  "MAX_T
3210: 52 49 47 47 45 52 5f 44 45 50 54 48 3d 22 20 43  RIGGER_DEPTH=" C
3220: 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49  TIMEOPT_VAL(SQLI
3230: 54 45 5f 4d 41 58 5f 54 52 49 47 47 45 52 5f 44  TE_MAX_TRIGGER_D
3240: 45 50 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69  EPTH),.#endif.#i
3250: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
3260: 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 0a  VARIABLE_NUMBER.
3270: 20 20 22 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f    "MAX_VARIABLE_
3280: 4e 55 4d 42 45 52 3d 22 20 43 54 49 4d 45 4f 50  NUMBER=" CTIMEOP
3290: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
32a0: 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52  _VARIABLE_NUMBER
32b0: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
32c0: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 56 44 42 45   SQLITE_MAX_VDBE
32d0: 5f 4f 50 0a 20 20 22 4d 41 58 5f 56 44 42 45 5f  _OP.  "MAX_VDBE_
32e0: 4f 50 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  OP=" CTIMEOPT_VA
32f0: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 56 44 42  L(SQLITE_MAX_VDB
3300: 45 5f 4f 50 29 2c 0a 23 65 6e 64 69 66 0a 23 69  E_OP),.#endif.#i
3310: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
3320: 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 0a 20  WORKER_THREADS. 
3330: 20 22 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52   "MAX_WORKER_THR
3340: 45 41 44 53 3d 22 20 43 54 49 4d 45 4f 50 54 5f  EADS=" CTIMEOPT_
3350: 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 57  VAL(SQLITE_MAX_W
3360: 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 29 2c 0a  ORKER_THREADS),.
3370: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3380: 45 5f 4d 45 4d 44 45 42 55 47 0a 20 20 22 4d 45  E_MEMDEBUG.  "ME
3390: 4d 44 45 42 55 47 22 2c 0a 23 65 6e 64 69 66 0a  MDEBUG",.#endif.
33a0: 23 69 66 20 53 51 4c 49 54 45 5f 4d 49 58 45 44  #if SQLITE_MIXED
33b0: 5f 45 4e 44 49 41 4e 5f 36 34 42 49 54 5f 46 4c  _ENDIAN_64BIT_FL
33c0: 4f 41 54 0a 20 20 22 4d 49 58 45 44 5f 45 4e 44  OAT.  "MIXED_END
33d0: 49 41 4e 5f 36 34 42 49 54 5f 46 4c 4f 41 54 22  IAN_64BIT_FLOAT"
33e0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
33f0: 49 54 45 5f 4d 4d 41 50 5f 52 45 41 44 57 52 49  ITE_MMAP_READWRI
3400: 54 45 0a 20 20 22 4d 4d 41 50 5f 52 45 41 44 57  TE.  "MMAP_READW
3410: 52 49 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RITE",.#endif.#i
3420: 66 20 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 4e  f SQLITE_MUTEX_N
3430: 4f 4f 50 0a 20 20 22 4d 55 54 45 58 5f 4e 4f 4f  OOP.  "MUTEX_NOO
3440: 50 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  P",.#endif.#if S
3450: 51 4c 49 54 45 5f 4d 55 54 45 58 5f 4e 52 45 46  QLITE_MUTEX_NREF
3460: 0a 20 20 22 4d 55 54 45 58 5f 4e 52 45 46 22 2c  .  "MUTEX_NREF",
3470: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3480: 54 45 5f 4d 55 54 45 58 5f 4f 4d 49 54 0a 20 20  TE_MUTEX_OMIT.  
3490: 22 4d 55 54 45 58 5f 4f 4d 49 54 22 2c 0a 23 65  "MUTEX_OMIT",.#e
34a0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
34b0: 4d 55 54 45 58 5f 50 54 48 52 45 41 44 53 0a 20  MUTEX_PTHREADS. 
34c0: 20 22 4d 55 54 45 58 5f 50 54 48 52 45 41 44 53   "MUTEX_PTHREADS
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 57 33 32 0a 20  LITE_MUTEX_W32. 
34f0: 20 22 4d 55 54 45 58 5f 57 33 32 22 2c 0a 23 65   "MUTEX_W32",.#e
3500: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3510: 4e 45 45 44 5f 45 52 52 5f 4e 41 4d 45 0a 20 20  NEED_ERR_NAME.  
3520: 22 4e 45 45 44 5f 45 52 52 5f 4e 41 4d 45 22 2c  "NEED_ERR_NAME",
3530: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3540: 54 45 5f 4e 4f 49 4e 4c 49 4e 45 0a 20 20 22 4e  TE_NOINLINE.  "N
3550: 4f 49 4e 4c 49 4e 45 22 2c 0a 23 65 6e 64 69 66  OINLINE",.#endif
3560: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4e 4f 5f 53  .#if SQLITE_NO_S
3570: 59 4e 43 0a 20 20 22 4e 4f 5f 53 59 4e 43 22 2c  YNC.  "NO_SYNC",
3580: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3590: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
35a0: 4c 45 0a 20 20 22 4f 4d 49 54 5f 41 4c 54 45 52  LE.  "OMIT_ALTER
35b0: 54 41 42 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23  TABLE",.#endif.#
35c0: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  if SQLITE_OMIT_A
35d0: 4e 41 4c 59 5a 45 0a 20 20 22 4f 4d 49 54 5f 41  NALYZE.  "OMIT_A
35e0: 4e 41 4c 59 5a 45 22 2c 0a 23 65 6e 64 69 66 0a  NALYZE",.#endif.
35f0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3600: 41 54 54 41 43 48 0a 20 20 22 4f 4d 49 54 5f 41  ATTACH.  "OMIT_A
3610: 54 54 41 43 48 22 2c 0a 23 65 6e 64 69 66 0a 23  TTACH",.#endif.#
3620: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  if SQLITE_OMIT_A
3630: 55 54 48 4f 52 49 5a 41 54 49 4f 4e 0a 20 20 22  UTHORIZATION.  "
3640: 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49  OMIT_AUTHORIZATI
3650: 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ON",.#endif.#if 
3660: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
3670: 49 4e 43 52 45 4d 45 4e 54 0a 20 20 22 4f 4d 49  INCREMENT.  "OMI
3680: 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 22  T_AUTOINCREMENT"
3690: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
36a0: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
36b0: 54 0a 20 20 22 4f 4d 49 54 5f 41 55 54 4f 49 4e  T.  "OMIT_AUTOIN
36c0: 49 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  IT",.#endif.#if 
36d0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
36e0: 4d 41 54 49 43 5f 49 4e 44 45 58 0a 20 20 22 4f  MATIC_INDEX.  "O
36f0: 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e  MIT_AUTOMATIC_IN
3700: 44 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  DEX",.#endif.#if
3710: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54   SQLITE_OMIT_AUT
3720: 4f 52 45 53 45 54 0a 20 20 22 4f 4d 49 54 5f 41  ORESET.  "OMIT_A
3730: 55 54 4f 52 45 53 45 54 22 2c 0a 23 65 6e 64 69  UTORESET",.#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 56 41 43 55 55 4d 0a 20 20 22  T_AUTOVACUUM.  "
3760: 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 22  OMIT_AUTOVACUUM"
3770: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3780: 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e  ITE_OMIT_BETWEEN
3790: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 0a 20 20  _OPTIMIZATION.  
37a0: 22 4f 4d 49 54 5f 42 45 54 57 45 45 4e 5f 4f 50  "OMIT_BETWEEN_OP
37b0: 54 49 4d 49 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e  TIMIZATION",.#en
37c0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
37d0: 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52 41 4c  MIT_BLOB_LITERAL
37e0: 0a 20 20 22 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49  .  "OMIT_BLOB_LI
37f0: 54 45 52 41 4c 22 2c 0a 23 65 6e 64 69 66 0a 23  TERAL",.#endif.#
3800: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42  if SQLITE_OMIT_B
3810: 54 52 45 45 43 4f 55 4e 54 0a 20 20 22 4f 4d 49  TREECOUNT.  "OMI
3820: 54 5f 42 54 52 45 45 43 4f 55 4e 54 22 2c 0a 23  T_BTREECOUNT",.#
3830: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3840: 5f 4f 4d 49 54 5f 43 41 53 54 0a 20 20 22 4f 4d  _OMIT_CAST.  "OM
3850: 49 54 5f 43 41 53 54 22 2c 0a 23 65 6e 64 69 66  IT_CAST",.#endif
3860: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3870: 5f 43 48 45 43 4b 0a 20 20 22 4f 4d 49 54 5f 43  _CHECK.  "OMIT_C
3880: 48 45 43 4b 22 2c 0a 23 65 6e 64 69 66 0a 23 69  HECK",.#endif.#i
3890: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f  f SQLITE_OMIT_CO
38a0: 4d 50 4c 45 54 45 0a 20 20 22 4f 4d 49 54 5f 43  MPLETE.  "OMIT_C
38b0: 4f 4d 50 4c 45 54 45 22 2c 0a 23 65 6e 64 69 66  OMPLETE",.#endif
38c0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
38d0: 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54  _COMPOUND_SELECT
38e0: 0a 20 20 22 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e  .  "OMIT_COMPOUN
38f0: 44 5f 53 45 4c 45 43 54 22 2c 0a 23 65 6e 64 69  D_SELECT",.#endi
3900: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3910: 54 5f 43 4f 4e 46 4c 49 43 54 5f 43 4c 41 55 53  T_CONFLICT_CLAUS
3920: 45 0a 20 20 22 4f 4d 49 54 5f 43 4f 4e 46 4c 49  E.  "OMIT_CONFLI
3930: 43 54 5f 43 4c 41 55 53 45 22 2c 0a 23 65 6e 64  CT_CLAUSE",.#end
3940: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3950: 49 54 5f 43 54 45 0a 20 20 22 4f 4d 49 54 5f 43  IT_CTE.  "OMIT_C
3960: 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  TE",.#endif.#if 
3970: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 41 54 45  SQLITE_OMIT_DATE
3980: 54 49 4d 45 5f 46 55 4e 43 53 0a 20 20 22 4f 4d  TIME_FUNCS.  "OM
3990: 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55 4e 43  IT_DATETIME_FUNC
39a0: 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  S",.#endif.#if S
39b0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 43 4c 54  QLITE_OMIT_DECLT
39c0: 59 50 45 0a 20 20 22 4f 4d 49 54 5f 44 45 43 4c  YPE.  "OMIT_DECL
39d0: 54 59 50 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  TYPE",.#endif.#i
39e0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45  f SQLITE_OMIT_DE
39f0: 50 52 45 43 41 54 45 44 0a 20 20 22 4f 4d 49 54  PRECATED.  "OMIT
3a00: 5f 44 45 50 52 45 43 41 54 45 44 22 2c 0a 23 65  _DEPRECATED",.#e
3a10: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3a20: 4f 4d 49 54 5f 44 49 53 4b 49 4f 0a 20 20 22 4f  OMIT_DISKIO.  "O
3a30: 4d 49 54 5f 44 49 53 4b 49 4f 22 2c 0a 23 65 6e  MIT_DISKIO",.#en
3a40: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3a50: 4d 49 54 5f 45 58 50 4c 41 49 4e 0a 20 20 22 4f  MIT_EXPLAIN.  "O
3a60: 4d 49 54 5f 45 58 50 4c 41 49 4e 22 2c 0a 23 65  MIT_EXPLAIN",.#e
3a70: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3a80: 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41  OMIT_FLAG_PRAGMA
3a90: 53 0a 20 20 22 4f 4d 49 54 5f 46 4c 41 47 5f 50  S.  "OMIT_FLAG_P
3aa0: 52 41 47 4d 41 53 22 2c 0a 23 65 6e 64 69 66 0a  RAGMAS",.#endif.
3ab0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3ac0: 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 0a 20  FLOATING_POINT. 
3ad0: 20 22 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f   "OMIT_FLOATING_
3ae0: 50 4f 49 4e 54 22 2c 0a 23 65 6e 64 69 66 0a 23  POINT",.#endif.#
3af0: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  if SQLITE_OMIT_F
3b00: 4f 52 45 49 47 4e 5f 4b 45 59 0a 20 20 22 4f 4d  OREIGN_KEY.  "OM
3b10: 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 22 2c  IT_FOREIGN_KEY",
3b20: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3b30: 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c  TE_OMIT_GET_TABL
3b40: 45 0a 20 20 22 4f 4d 49 54 5f 47 45 54 5f 54 41  E.  "OMIT_GET_TA
3b50: 42 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  BLE",.#endif.#if
3b60: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 48 45 58   SQLITE_OMIT_HEX
3b70: 5f 49 4e 54 45 47 45 52 0a 20 20 22 4f 4d 49 54  _INTEGER.  "OMIT
3b80: 5f 48 45 58 5f 49 4e 54 45 47 45 52 22 2c 0a 23  _HEX_INTEGER",.#
3b90: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3ba0: 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 0a 20  _OMIT_INCRBLOB. 
3bb0: 20 22 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 22   "OMIT_INCRBLOB"
3bc0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3bd0: 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49  ITE_OMIT_INTEGRI
3be0: 54 59 5f 43 48 45 43 4b 0a 20 20 22 4f 4d 49 54  TY_CHECK.  "OMIT
3bf0: 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43 4b  _INTEGRITY_CHECK
3c00: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3c10: 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f  LITE_OMIT_LIKE_O
3c20: 50 54 49 4d 49 5a 41 54 49 4f 4e 0a 20 20 22 4f  PTIMIZATION.  "O
3c30: 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a  MIT_LIKE_OPTIMIZ
3c40: 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23  ATION",.#endif.#
3c50: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  if SQLITE_OMIT_L
3c60: 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 0a 20 20  OAD_EXTENSION.  
3c70: 22 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e  "OMIT_LOAD_EXTEN
3c80: 53 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69  SION",.#endif.#i
3c90: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f  f SQLITE_OMIT_LO
3ca0: 43 41 4c 54 49 4d 45 0a 20 20 22 4f 4d 49 54 5f  CALTIME.  "OMIT_
3cb0: 4c 4f 43 41 4c 54 49 4d 45 22 2c 0a 23 65 6e 64  LOCALTIME",.#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 4f 4b 41 53 49 44 45 0a 20 20 22  IT_LOOKASIDE.  "
3ce0: 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 22 2c  OMIT_LOOKASIDE",
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 4d 45 4d 4f 52 59 44 42  TE_OMIT_MEMORYDB
3d10: 0a 20 20 22 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44  .  "OMIT_MEMORYD
3d20: 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  B",.#endif.#if S
3d30: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50  QLITE_OMIT_OR_OP
3d40: 54 49 4d 49 5a 41 54 49 4f 4e 0a 20 20 22 4f 4d  TIMIZATION.  "OM
3d50: 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49  IT_OR_OPTIMIZATI
3d60: 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ON",.#endif.#if 
3d70: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45  SQLITE_OMIT_PAGE
3d80: 52 5f 50 52 41 47 4d 41 53 0a 20 20 22 4f 4d 49  R_PRAGMAS.  "OMI
3d90: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 22  T_PAGER_PRAGMAS"
3da0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3db0: 49 54 45 5f 4f 4d 49 54 5f 50 41 52 53 45 52 5f  ITE_OMIT_PARSER_
3dc0: 54 52 41 43 45 0a 20 20 22 4f 4d 49 54 5f 50 41  TRACE.  "OMIT_PA
3dd0: 52 53 45 52 5f 54 52 41 43 45 22 2c 0a 23 65 6e  RSER_TRACE",.#en
3de0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3df0: 4d 49 54 5f 50 4f 50 45 4e 0a 20 20 22 4f 4d 49  MIT_POPEN.  "OMI
3e00: 54 5f 50 4f 50 45 4e 22 2c 0a 23 65 6e 64 69 66  T_POPEN",.#endif
3e10: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3e20: 5f 50 52 41 47 4d 41 0a 20 20 22 4f 4d 49 54 5f  _PRAGMA.  "OMIT_
3e30: 50 52 41 47 4d 41 22 2c 0a 23 65 6e 64 69 66 0a  PRAGMA",.#endif.
3e40: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3e50: 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43  PROGRESS_CALLBAC
3e60: 4b 0a 20 20 22 4f 4d 49 54 5f 50 52 4f 47 52 45  K.  "OMIT_PROGRE
3e70: 53 53 5f 43 41 4c 4c 42 41 43 4b 22 2c 0a 23 65  SS_CALLBACK",.#e
3e80: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3e90: 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43  OMIT_QUICKBALANC
3ea0: 45 0a 20 20 22 4f 4d 49 54 5f 51 55 49 43 4b 42  E.  "OMIT_QUICKB
3eb0: 41 4c 41 4e 43 45 22 2c 0a 23 65 6e 64 69 66 0a  ALANCE",.#endif.
3ec0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3ed0: 52 45 49 4e 44 45 58 0a 20 20 22 4f 4d 49 54 5f  REINDEX.  "OMIT_
3ee0: 52 45 49 4e 44 45 58 22 2c 0a 23 65 6e 64 69 66  REINDEX",.#endif
3ef0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3f00: 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 0a  _SCHEMA_PRAGMAS.
3f10: 20 20 22 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50    "OMIT_SCHEMA_P
3f20: 52 41 47 4d 41 53 22 2c 0a 23 65 6e 64 69 66 0a  RAGMAS",.#endif.
3f30: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3f40: 53 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50  SCHEMA_VERSION_P
3f50: 52 41 47 4d 41 53 0a 20 20 22 4f 4d 49 54 5f 53  RAGMAS.  "OMIT_S
3f60: 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52  CHEMA_VERSION_PR
3f70: 41 47 4d 41 53 22 2c 0a 23 65 6e 64 69 66 0a 23  AGMAS",.#endif.#
3f80: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  if SQLITE_OMIT_S
3f90: 48 41 52 45 44 5f 43 41 43 48 45 0a 20 20 22 4f  HARED_CACHE.  "O
3fa0: 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45  MIT_SHARED_CACHE
3fb0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3fc0: 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 55 54 44 4f  LITE_OMIT_SHUTDO
3fd0: 57 4e 5f 44 49 52 45 43 54 4f 52 49 45 53 0a 20  WN_DIRECTORIES. 
3fe0: 20 22 4f 4d 49 54 5f 53 48 55 54 44 4f 57 4e 5f   "OMIT_SHUTDOWN_
3ff0: 44 49 52 45 43 54 4f 52 49 45 53 22 2c 0a 23 65  DIRECTORIES",.#e
4000: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
4010: 4f 4d 49 54 5f 53 55 42 51 55 45 52 59 0a 20 20  OMIT_SUBQUERY.  
4020: 22 4f 4d 49 54 5f 53 55 42 51 55 45 52 59 22 2c  "OMIT_SUBQUERY",
4030: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4040: 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49  TE_OMIT_TCL_VARI
4050: 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f 54 43 4c  ABLE.  "OMIT_TCL
4060: 5f 56 41 52 49 41 42 4c 45 22 2c 0a 23 65 6e 64  _VARIABLE",.#end
4070: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
4080: 49 54 5f 54 45 4d 50 44 42 0a 20 20 22 4f 4d 49  IT_TEMPDB.  "OMI
4090: 54 5f 54 45 4d 50 44 42 22 2c 0a 23 65 6e 64 69  T_TEMPDB",.#endi
40a0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
40b0: 54 5f 54 45 53 54 5f 43 4f 4e 54 52 4f 4c 0a 20  T_TEST_CONTROL. 
40c0: 20 22 4f 4d 49 54 5f 54 45 53 54 5f 43 4f 4e 54   "OMIT_TEST_CONT
40d0: 52 4f 4c 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ROL",.#endif.#if
40e0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41   SQLITE_OMIT_TRA
40f0: 43 45 0a 20 20 22 4f 4d 49 54 5f 54 52 41 43 45  CE.  "OMIT_TRACE
4100: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4110: 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45  LITE_OMIT_TRIGGE
4120: 52 0a 20 20 22 4f 4d 49 54 5f 54 52 49 47 47 45  R.  "OMIT_TRIGGE
4130: 52 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  R",.#endif.#if S
4140: 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43  QLITE_OMIT_TRUNC
4150: 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  ATE_OPTIMIZATION
4160: 0a 20 20 22 4f 4d 49 54 5f 54 52 55 4e 43 41 54  .  "OMIT_TRUNCAT
4170: 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 22 2c  E_OPTIMIZATION",
4180: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4190: 54 45 5f 4f 4d 49 54 5f 55 54 46 31 36 0a 20 20  TE_OMIT_UTF16.  
41a0: 22 4f 4d 49 54 5f 55 54 46 31 36 22 2c 0a 23 65  "OMIT_UTF16",.#e
41b0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
41c0: 4f 4d 49 54 5f 56 41 43 55 55 4d 0a 20 20 22 4f  OMIT_VACUUM.  "O
41d0: 4d 49 54 5f 56 41 43 55 55 4d 22 2c 0a 23 65 6e  MIT_VACUUM",.#en
41e0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
41f0: 4d 49 54 5f 56 49 45 57 0a 20 20 22 4f 4d 49 54  MIT_VIEW.  "OMIT
4200: 5f 56 49 45 57 22 2c 0a 23 65 6e 64 69 66 0a 23  _VIEW",.#endif.#
4210: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56  if SQLITE_OMIT_V
4220: 49 52 54 55 41 4c 54 41 42 4c 45 0a 20 20 22 4f  IRTUALTABLE.  "O
4230: 4d 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45  MIT_VIRTUALTABLE
4240: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4250: 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 0a 20 20  LITE_OMIT_WAL.  
4260: 22 4f 4d 49 54 5f 57 41 4c 22 2c 0a 23 65 6e 64  "OMIT_WAL",.#end
4270: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
4280: 49 54 5f 57 53 44 0a 20 20 22 4f 4d 49 54 5f 57  IT_WSD.  "OMIT_W
4290: 53 44 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  SD",.#endif.#if 
42a0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52  SQLITE_OMIT_XFER
42b0: 5f 4f 50 54 0a 20 20 22 4f 4d 49 54 5f 58 46 45  _OPT.  "OMIT_XFE
42c0: 52 5f 4f 50 54 22 2c 0a 23 65 6e 64 69 66 0a 23  R_OPT",.#endif.#
42d0: 69 66 20 53 51 4c 49 54 45 5f 50 43 41 43 48 45  if SQLITE_PCACHE
42e0: 5f 53 45 50 41 52 41 54 45 5f 48 45 41 44 45 52  _SEPARATE_HEADER
42f0: 0a 20 20 22 50 43 41 43 48 45 5f 53 45 50 41 52  .  "PCACHE_SEPAR
4300: 41 54 45 5f 48 45 41 44 45 52 22 2c 0a 23 65 6e  ATE_HEADER",.#en
4310: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50  dif.#if SQLITE_P
4320: 45 52 46 4f 52 4d 41 4e 43 45 5f 54 52 41 43 45  ERFORMANCE_TRACE
4330: 0a 20 20 22 50 45 52 46 4f 52 4d 41 4e 43 45 5f  .  "PERFORMANCE_
4340: 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23  TRACE",.#endif.#
4350: 69 66 20 53 51 4c 49 54 45 5f 50 4f 57 45 52 53  if SQLITE_POWERS
4360: 41 46 45 5f 4f 56 45 52 57 52 49 54 45 0a 20 20  AFE_OVERWRITE.  
4370: 22 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  "POWERSAFE_OVERW
4380: 52 49 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RITE",.#endif.#i
4390: 66 20 53 51 4c 49 54 45 5f 50 52 45 46 45 52 5f  f SQLITE_PREFER_
43a0: 50 52 4f 58 59 5f 4c 4f 43 4b 49 4e 47 0a 20 20  PROXY_LOCKING.  
43b0: 22 50 52 45 46 45 52 5f 50 52 4f 58 59 5f 4c 4f  "PREFER_PROXY_LO
43c0: 43 4b 49 4e 47 22 2c 0a 23 65 6e 64 69 66 0a 23  CKING",.#endif.#
43d0: 69 66 20 53 51 4c 49 54 45 5f 50 52 4f 58 59 5f  if SQLITE_PROXY_
43e0: 44 45 42 55 47 0a 20 20 22 50 52 4f 58 59 5f 44  DEBUG.  "PROXY_D
43f0: 45 42 55 47 22 2c 0a 23 65 6e 64 69 66 0a 23 69  EBUG",.#endif.#i
4400: 66 20 53 51 4c 49 54 45 5f 52 45 56 45 52 53 45  f SQLITE_REVERSE
4410: 5f 55 4e 4f 52 44 45 52 45 44 5f 53 45 4c 45 43  _UNORDERED_SELEC
4420: 54 53 0a 20 20 22 52 45 56 45 52 53 45 5f 55 4e  TS.  "REVERSE_UN
4430: 4f 52 44 45 52 45 44 5f 53 45 4c 45 43 54 53 22  ORDERED_SELECTS"
4440: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4450: 49 54 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f 4e  ITE_RTREE_INT_ON
4460: 4c 59 0a 20 20 22 52 54 52 45 45 5f 49 4e 54 5f  LY.  "RTREE_INT_
4470: 4f 4e 4c 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ONLY",.#endif.#i
4480: 66 20 53 51 4c 49 54 45 5f 53 45 43 55 52 45 5f  f SQLITE_SECURE_
4490: 44 45 4c 45 54 45 0a 20 20 22 53 45 43 55 52 45  DELETE.  "SECURE
44a0: 5f 44 45 4c 45 54 45 22 2c 0a 23 65 6e 64 69 66  _DELETE",.#endif
44b0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 4d 41 4c  .#if SQLITE_SMAL
44c0: 4c 5f 53 54 41 43 4b 0a 20 20 22 53 4d 41 4c 4c  L_STACK.  "SMALL
44d0: 5f 53 54 41 43 4b 22 2c 0a 23 65 6e 64 69 66 0a  _STACK",.#endif.
44e0: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 53 4f  #ifdef SQLITE_SO
44f0: 52 54 45 52 5f 50 4d 41 53 5a 0a 20 20 22 53 4f  RTER_PMASZ.  "SO
4500: 52 54 45 52 5f 50 4d 41 53 5a 3d 22 20 43 54 49  RTER_PMASZ=" CTI
4510: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
4520: 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 29 2c 0a  _SORTER_PMASZ),.
4530: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
4540: 45 5f 53 4f 55 4e 44 45 58 0a 20 20 22 53 4f 55  E_SOUNDEX.  "SOU
4550: 4e 44 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23 69  NDEX",.#endif.#i
4560: 66 64 65 66 20 53 51 4c 49 54 45 5f 53 54 41 54  fdef SQLITE_STAT
4570: 34 5f 53 41 4d 50 4c 45 53 0a 20 20 22 53 54 41  4_SAMPLES.  "STA
4580: 54 34 5f 53 41 4d 50 4c 45 53 3d 22 20 43 54 49  T4_SAMPLES=" CTI
4590: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
45a0: 5f 53 54 41 54 34 5f 53 41 4d 50 4c 45 53 29 2c  _STAT4_SAMPLES),
45b0: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
45c0: 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53  QLITE_STMTJRNL_S
45d0: 50 49 4c 4c 0a 20 20 22 53 54 4d 54 4a 52 4e 4c  PILL.  "STMTJRNL
45e0: 5f 53 50 49 4c 4c 3d 22 20 43 54 49 4d 45 4f 50  _SPILL=" CTIMEOP
45f0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 53 54 4d  T_VAL(SQLITE_STM
4600: 54 4a 52 4e 4c 5f 53 50 49 4c 4c 29 2c 0a 23 65  TJRNL_SPILL),.#e
4610: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
4620: 53 55 42 53 54 52 5f 43 4f 4d 50 41 54 49 42 49  SUBSTR_COMPATIBI
4630: 4c 49 54 59 0a 20 20 22 53 55 42 53 54 52 5f 43  LITY.  "SUBSTR_C
4640: 4f 4d 50 41 54 49 42 49 4c 49 54 59 22 2c 0a 23  OMPATIBILITY",.#
4650: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
4660: 5f 53 59 53 54 45 4d 5f 4d 41 4c 4c 4f 43 0a 20  _SYSTEM_MALLOC. 
4670: 20 22 53 59 53 54 45 4d 5f 4d 41 4c 4c 4f 43 22   "SYSTEM_MALLOC"
4680: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4690: 49 54 45 5f 54 43 4c 0a 20 20 22 54 43 4c 22 2c  ITE_TCL.  "TCL",
46a0: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
46b0: 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45  QLITE_TEMP_STORE
46c0: 0a 20 20 22 54 45 4d 50 5f 53 54 4f 52 45 3d 22  .  "TEMP_STORE="
46d0: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
46e0: 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 29  LITE_TEMP_STORE)
46f0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4700: 49 54 45 5f 54 45 53 54 0a 20 20 22 54 45 53 54  ITE_TEST.  "TEST
4710: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  ",.#endif.#if de
4720: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 54 48 52  fined(SQLITE_THR
4730: 45 41 44 53 41 46 45 29 0a 20 20 22 54 48 52 45  EADSAFE).  "THRE
4740: 41 44 53 41 46 45 3d 22 20 43 54 49 4d 45 4f 50  ADSAFE=" CTIMEOP
4750: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 54 48 52  T_VAL(SQLITE_THR
4760: 45 41 44 53 41 46 45 29 2c 0a 23 65 6c 69 66 20  EADSAFE),.#elif 
4770: 64 65 66 69 6e 65 64 28 54 48 52 45 41 44 53 41  defined(THREADSA
4780: 46 45 29 0a 20 20 22 54 48 52 45 41 44 53 41 46  FE).  "THREADSAF
4790: 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  E=" CTIMEOPT_VAL
47a0: 28 54 48 52 45 41 44 53 41 46 45 29 2c 0a 23 65  (THREADSAFE),.#e
47b0: 6c 73 65 0a 20 20 22 54 48 52 45 41 44 53 41 46  lse.  "THREADSAF
47c0: 45 3d 31 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  E=1",.#endif.#if
47d0: 20 53 51 4c 49 54 45 5f 55 4e 4c 49 4e 4b 5f 41   SQLITE_UNLINK_A
47e0: 46 54 45 52 5f 43 4c 4f 53 45 0a 20 20 22 55 4e  FTER_CLOSE.  "UN
47f0: 4c 49 4e 4b 5f 41 46 54 45 52 5f 43 4c 4f 53 45  LINK_AFTER_CLOSE
4800: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4810: 4c 49 54 45 5f 55 4e 54 45 53 54 41 42 4c 45 0a  LITE_UNTESTABLE.
4820: 20 20 22 55 4e 54 45 53 54 41 42 4c 45 22 2c 0a    "UNTESTABLE",.
4830: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
4840: 45 5f 55 53 45 52 5f 41 55 54 48 45 4e 54 49 43  E_USER_AUTHENTIC
4850: 41 54 49 4f 4e 0a 20 20 22 55 53 45 52 5f 41 55  ATION.  "USER_AU
4860: 54 48 45 4e 54 49 43 41 54 49 4f 4e 22 2c 0a 23  THENTICATION",.#
4870: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
4880: 5f 55 53 45 5f 41 4c 4c 4f 43 41 0a 20 20 22 55  _USE_ALLOCA.  "U
4890: 53 45 5f 41 4c 4c 4f 43 41 22 2c 0a 23 65 6e 64  SE_ALLOCA",.#end
48a0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 55 53  if.#if SQLITE_US
48b0: 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 0a 20 20  E_FCNTL_TRACE.  
48c0: 22 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45  "USE_FCNTL_TRACE
48d0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
48e0: 4c 49 54 45 5f 55 53 45 5f 55 52 49 0a 20 20 22  LITE_USE_URI.  "
48f0: 55 53 45 5f 55 52 49 22 2c 0a 23 65 6e 64 69 66  USE_URI",.#endif
4900: 0a 23 69 66 20 53 51 4c 49 54 45 5f 56 44 42 45  .#if SQLITE_VDBE
4910: 5f 43 4f 56 45 52 41 47 45 0a 20 20 22 56 44 42  _COVERAGE.  "VDB
4920: 45 5f 43 4f 56 45 52 41 47 45 22 2c 0a 23 65 6e  E_COVERAGE",.#en
4930: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 57  dif.#if SQLITE_W
4940: 49 4e 33 32 5f 4d 41 4c 4c 4f 43 0a 20 20 22 57  IN32_MALLOC.  "W
4950: 49 4e 33 32 5f 4d 41 4c 4c 4f 43 22 2c 0a 23 65  IN32_MALLOC",.#e
4960: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
4970: 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 0a 20 20 22 5a  ZERO_MALLOC.  "Z
4980: 45 52 4f 5f 4d 41 4c 4c 4f 43 22 2c 0a 23 65 6e  ERO_MALLOC",.#en
4990: 64 69 66 0a 2f 2a 20 0a 2a 2a 20 45 4e 44 20 43  dif./* .** END C
49a0: 4f 44 45 20 47 45 4e 45 52 41 54 45 44 20 42 59  ODE GENERATED BY
49b0: 20 74 6f 6f 6c 2f 6d 6b 63 74 69 6d 65 2e 74 63   tool/mkctime.tc
49c0: 6c 20 0a 2a 2f 0a 7d 3b 0a 0a 53 51 4c 49 54 45  l .*/.};..SQLITE
49d0: 5f 50 52 49 56 41 54 45 20 63 6f 6e 73 74 20 63  _PRIVATE const c
49e0: 68 61 72 20 2a 2a 73 71 6c 69 74 65 33 43 6f 6d  har **sqlite3Com
49f0: 70 69 6c 65 4f 70 74 69 6f 6e 73 28 69 6e 74 20  pileOptions(int 
4a00: 2a 70 6e 4f 70 74 29 7b 0a 20 20 2a 70 6e 4f 70  *pnOpt){.  *pnOp
4a10: 74 20 3d 20 73 69 7a 65 6f 66 28 73 71 6c 69 74  t = sizeof(sqlit
4a20: 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70 74 29 20  e3azCompileOpt) 
4a30: 2f 20 73 69 7a 65 6f 66 28 73 71 6c 69 74 65 33  / sizeof(sqlite3
4a40: 61 7a 43 6f 6d 70 69 6c 65 4f 70 74 5b 30 5d 29  azCompileOpt[0])
4a50: 3b 0a 20 20 72 65 74 75 72 6e 20 28 63 6f 6e 73  ;.  return (cons
4a60: 74 20 63 68 61 72 2a 2a 29 73 71 6c 69 74 65 33  t char**)sqlite3
4a70: 61 7a 43 6f 6d 70 69 6c 65 4f 70 74 3b 0a 7d 0a  azCompileOpt;.}.
4a80: 0a 23 65 6e 64 69 66 20 2f 2a 20 53 51 4c 49 54  .#endif /* SQLIT
4a90: 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50  E_OMIT_COMPILEOP
4aa0: 54 49 4f 4e 5f 44 49 41 47 53 20 2a 2f 0a 0a 2f  TION_DIAGS */../
4ab0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 45  ************** E
4ac0: 6e 64 20 6f 66 20 63 74 69 6d 65 2e 63 20 2a 2a  nd of ctime.c **
4ad0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ae0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4af0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f  *************/./
4b00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42  ************** B
4b10: 65 67 69 6e 20 66 69 6c 65 20 73 71 6c 69 74 65  egin file sqlite
4b20: 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  Int.h **********
4b30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f  *************/./
4b50: 2a 0a 2a 2a 20 32 30 30 31 20 53 65 70 74 65 6d  *.** 2001 Septem
4b60: 62 65 72 20 31 35 0a 2a 2a 0a 2a 2a 20 54 68 65  ber 15.**.** The
4b70: 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d   author disclaim
4b80: 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74  s copyright to t
4b90: 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e  his source code.
4ba0: 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a    In place of.**
4bb0: 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c   a legal notice,
4bc0: 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73 73   here is a bless
4bd0: 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61  ing:.**.**    Ma
4be0: 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e  y you do good an
4bf0: 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20  d not evil..**  
4c00: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
4c10: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
4c20: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
4c30: 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20  ive others..**  
4c40: 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20    May you share 
4c50: 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61  freely, never ta
4c60: 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79  king more than y
4c70: 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a  ou give..**.****
4c80: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4c90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ca0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4cb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4cc0: 2a 2a 2a 2a 2a 0a 2a 2a 20 49 6e 74 65 72 6e 61  *****.** Interna
4cd0: 6c 20 69 6e 74 65 72 66 61 63 65 20 64 65 66 69  l interface defi
4ce0: 6e 69 74 69 6f 6e 73 20 66 6f 72 20 53 51 4c 69  nitions for SQLi
4cf0: 74 65 2e 0a 2a 2a 0a 2a 2f 0a 23 69 66 6e 64 65  te..**.*/.#ifnde
4d00: 66 20 53 51 4c 49 54 45 49 4e 54 5f 48 0a 23 64  f SQLITEINT_H.#d
4d10: 65 66 69 6e 65 20 53 51 4c 49 54 45 49 4e 54 5f  efine SQLITEINT_
4d20: 48 0a 0a 2f 2a 20 53 70 65 63 69 61 6c 20 43 6f  H../* Special Co
4d30: 6d 6d 65 6e 74 73 3a 0a 2a 2a 0a 2a 2a 20 53 6f  mments:.**.** So
4d40: 6d 65 20 63 6f 6d 6d 65 6e 74 73 20 68 61 76 65  me comments have
4d50: 20 73 70 65 63 69 61 6c 20 6d 65 61 6e 69 6e 67   special meaning
4d60: 20 74 6f 20 74 68 65 20 74 6f 6f 6c 73 20 74 68   to the tools th
4d70: 61 74 20 6d 65 61 73 75 72 65 20 74 65 73 74 0a  at measure test.
4d80: 2a 2a 20 63 6f 76 65 72 61 67 65 3a 0a 2a 2a 0a  ** coverage:.**.
4d90: 2a 2a 20 20 20 20 4e 4f 5f 54 45 53 54 20 20 20  **    NO_TEST   
4da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4db0: 20 20 2d 20 54 68 65 20 62 72 61 6e 63 68 65 73    - The branches
4dc0: 20 6f 6e 20 74 68 69 73 20 6c 69 6e 65 20 61 72   on this line ar
4dd0: 65 20 6e 6f 74 0a 2a 2a 20 20 20 20 20 20 20 20  e not.**        
4de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4df0: 20 20 20 20 20 20 20 20 20 20 6d 65 61 73 75 72            measur
4e00: 65 64 20 62 79 20 62 72 61 6e 63 68 20 63 6f 76  ed by branch cov
4e10: 65 72 61 67 65 2e 20 20 54 68 69 73 20 69 73 0a  erage.  This is.
4e20: 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  **              
4e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e40: 20 20 20 20 75 73 65 64 20 6f 6e 20 6c 69 6e 65      used on line
4e50: 73 20 6f 66 20 63 6f 64 65 20 74 68 61 74 20 61  s of code that a
4e60: 63 74 75 61 6c 6c 79 0a 2a 2a 20 20 20 20 20 20  ctually.**      
4e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e80: 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 70 6c              impl
4e90: 65 6d 65 6e 74 20 70 61 72 74 73 20 6f 66 20 63  ement parts of c
4ea0: 6f 76 65 72 61 67 65 20 74 65 73 74 69 6e 67 2e  overage testing.
4eb0: 0a 2a 2a 0a 2a 2a 20 20 20 20 4f 50 54 49 4d 49  .**.**    OPTIMI
4ec0: 5a 41 54 49 4f 4e 2d 49 46 2d 54 52 55 45 20 20  ZATION-IF-TRUE  
4ed0: 20 20 20 20 20 20 2d 20 54 68 69 73 20 62 72 61        - This bra
4ee0: 6e 63 68 20 69 73 20 61 6c 6c 6f 77 65 64 20 74  nch is allowed t
4ef0: 6f 20 61 6c 77 61 79 20 62 65 20 66 61 6c 73 65  o alway be false
4f00: 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  .**             
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f20: 20 20 20 20 20 61 6e 64 20 74 68 65 20 63 6f 72       and the cor
4f30: 72 65 63 74 20 61 6e 73 77 65 72 20 69 73 20 73  rect answer is s
4f40: 74 69 6c 6c 20 6f 62 74 61 69 6e 65 64 2c 0a 2a  till obtained,.*
4f50: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
4f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f70: 20 20 20 74 68 6f 75 67 68 20 70 65 72 68 61 70     though perhap
4f80: 73 20 6d 6f 72 65 20 73 6c 6f 77 6c 79 2e 0a 2a  s more slowly..*
4f90: 2a 0a 2a 2a 20 20 20 20 4f 50 54 49 4d 49 5a 41  *.**    OPTIMIZA
4fa0: 54 49 4f 4e 2d 49 46 2d 46 41 4c 53 45 20 20 20  TION-IF-FALSE   
4fb0: 20 20 20 20 2d 20 54 68 69 73 20 62 72 61 6e 63      - This branc
4fc0: 68 20 69 73 20 61 6c 6c 6f 77 65 64 20 74 6f 20  h is allowed to 
4fd0: 61 6c 77 61 79 20 62 65 20 74 72 75 65 0a 2a 2a  alway be true.**
4fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5000: 20 20 61 6e 64 20 74 68 65 20 63 6f 72 72 65 63    and the correc
5010: 74 20 61 6e 73 77 65 72 20 69 73 20 73 74 69 6c  t answer is stil
5020: 6c 20 6f 62 74 61 69 6e 65 64 2c 0a 2a 2a 20 20  l obtained,.**  
5030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5050: 74 68 6f 75 67 68 20 70 65 72 68 61 70 73 20 6d  though perhaps m
5060: 6f 72 65 20 73 6c 6f 77 6c 79 2e 0a 2a 2a 0a 2a  ore slowly..**.*
5070: 2a 20 20 20 20 50 52 45 56 45 4e 54 53 2d 48 41  *    PREVENTS-HA
5080: 52 4d 4c 45 53 53 2d 4f 56 45 52 52 45 41 44 20  RMLESS-OVERREAD 
5090: 20 2d 20 54 68 69 73 20 62 72 61 6e 63 68 20 70   - This branch p
50a0: 72 65 76 65 6e 74 73 20 61 20 62 75 66 66 65 72  revents a buffer
50b0: 20 6f 76 65 72 72 65 61 64 0a 2a 2a 20 20 20 20   overread.**    
50c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
50e0: 61 74 20 77 6f 75 6c 64 20 62 65 20 68 61 72 6d  at would be harm
50f0: 6c 65 73 73 20 61 6e 64 20 75 6e 64 65 74 65 63  less and undetec
5100: 74 61 62 6c 65 0a 2a 2a 20 20 20 20 20 20 20 20  table.**        
5110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5120: 20 20 20 20 20 20 20 20 20 20 69 66 20 69 74 20            if it 
5130: 64 69 64 20 6f 63 63 75 72 2e 20 20 0a 2a 2a 0a  did occur.  .**.
5140: 2a 2a 20 49 6e 20 61 6c 6c 20 63 61 73 65 73 2c  ** In all cases,
5150: 20 74 68 65 20 73 70 65 63 69 61 6c 20 63 6f 6d   the special com
5160: 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 65 6e 63  ment must be enc
5170: 6c 6f 73 65 64 20 69 6e 20 74 68 65 20 75 73 75  losed in the usu
5180: 61 6c 0a 2a 2a 20 73 6c 61 73 68 2d 61 73 74 65  al.** slash-aste
5190: 72 69 73 6b 2e 2e 2e 61 73 74 65 72 69 73 6b 2d  risk...asterisk-
51a0: 73 6c 61 73 68 20 63 6f 6d 6d 65 6e 74 20 6d 61  slash comment ma
51b0: 72 6b 73 2c 20 77 69 74 68 20 6e 6f 20 73 70 61  rks, with no spa
51c0: 63 65 73 20 62 65 74 77 65 65 6e 20 74 68 65 20  ces between the 
51d0: 0a 2a 2a 20 61 73 74 65 72 69 73 6b 73 20 61 6e  .** asterisks an
51e0: 64 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 74 65  d the comment te
51f0: 78 74 2e 0a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 4d 61  xt..*/../*.** Ma
5200: 6b 65 20 73 75 72 65 20 74 68 65 20 54 63 6c 20  ke sure the Tcl 
5210: 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69  calling conventi
5220: 6f 6e 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  on macro is defi
5230: 6e 65 64 2e 20 20 54 68 69 73 20 6d 61 63 72 6f  ned.  This macro
5240: 20 69 73 0a 2a 2a 20 6f 6e 6c 79 20 75 73 65 64   is.** only used
5250: 20 62 79 20 74 65 73 74 20 63 6f 64 65 20 61 6e   by test code an
5260: 64 20 54 63 6c 20 69 6e 74 65 67 72 61 74 69 6f  d Tcl integratio
5270: 6e 20 63 6f 64 65 2e 0a 2a 2f 0a 23 69 66 6e 64  n code..*/.#ifnd
5280: 65 66 20 53 51 4c 49 54 45 5f 54 43 4c 41 50 49  ef SQLITE_TCLAPI
5290: 0a 23 20 20 64 65 66 69 6e 65 20 53 51 4c 49 54  .#  define SQLIT
52a0: 45 5f 54 43 4c 41 50 49 0a 23 65 6e 64 69 66 0a  E_TCLAPI.#endif.
52b0: 0a 2f 2a 0a 2a 2a 20 49 6e 63 6c 75 64 65 20 74  ./*.** Include t
52c0: 68 65 20 68 65 61 64 65 72 20 66 69 6c 65 20 75  he header file u
52d0: 73 65 64 20 74 6f 20 63 75 73 74 6f 6d 69 7a 65  sed to customize
52e0: 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 6f 70   the compiler op
52f0: 74 69 6f 6e 73 20 66 6f 72 20 4d 53 56 43 2e 0a  tions for MSVC..
5300: 2a 2a 20 54 68 69 73 20 73 68 6f 75 6c 64 20 62  ** This should b
5310: 65 20 64 6f 6e 65 20 66 69 72 73 74 20 73 6f 20  e done first so 
5320: 74 68 61 74 20 69 74 20 63 61 6e 20 73 75 63 63  that it can succ
5330: 65 73 73 66 75 6c 6c 79 20 70 72 65 76 65 6e 74  essfully prevent
5340: 20 73 70 75 72 69 6f 75 73 0a 2a 2a 20 63 6f 6d   spurious.** com
5350: 70 69 6c 65 72 20 77 61 72 6e 69 6e 67 73 20 64  piler warnings d
5360: 75 65 20 74 6f 20 73 75 62 73 65 71 75 65 6e 74  ue to subsequent
5370: 20 63 6f 6e 74 65 6e 74 20 69 6e 20 74 68 69 73   content in this
5380: 20 66 69 6c 65 20 61 6e 64 20 6f 74 68 65 72 20   file and other 
5390: 66 69 6c 65 73 0a 2a 2a 20 74 68 61 74 20 61 72  files.** that ar
53a0: 65 20 69 6e 63 6c 75 64 65 64 20 62 79 20 74 68  e included by th
53b0: 69 73 20 66 69 6c 65 2e 0a 2a 2f 0a 2f 2a 2a 2a  is file..*/./***
53c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 49 6e 63 6c  *********** Incl
53d0: 75 64 65 20 6d 73 76 63 2e 68 20 69 6e 20 74 68  ude msvc.h in th
53e0: 65 20 6d 69 64 64 6c 65 20 6f 66 20 73 71 6c 69  e middle of sqli
53f0: 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a  teInt.h ********
5400: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a  **********/./***
5410: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69  *********** Begi
5420: 6e 20 66 69 6c 65 20 6d 73 76 63 2e 68 20 2a 2a  n file msvc.h **
5430: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5440: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5450: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a  **********/./*.*
5460: 2a 20 32 30 31 35 20 4a 61 6e 75 61 72 79 20 31  * 2015 January 1
5470: 32 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68  2.**.** The auth
5480: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
5490: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
54a0: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
54b0: 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65  place of.** a le
54c0: 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65  gal notice, here
54d0: 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a   is a blessing:.
54e0: 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75  **.**    May you
54f0: 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74   do good and not
5500: 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79   evil..**    May
5510: 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76   you find forgiv
5520: 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65  eness for yourse
5530: 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f  lf and forgive o
5540: 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79  thers..**    May
5550: 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c   you share freel
5560: 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20  y, never taking 
5570: 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69  more than you gi
5580: 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ve..**.*********
5590: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55d0: 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 54 68 69 73  *****.**.** This
55e0: 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 63   file contains c
55f0: 6f 64 65 20 74 68 61 74 20 69 73 20 73 70 65 63  ode that is spec
5600: 69 66 69 63 20 74 6f 20 4d 53 56 43 2e 0a 2a 2f  ific to MSVC..*/
5610: 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f  .#ifndef SQLITE_
5620: 4d 53 56 43 5f 48 0a 23 64 65 66 69 6e 65 20 53  MSVC_H.#define S
5630: 51 4c 49 54 45 5f 4d 53 56 43 5f 48 0a 0a 23 69  QLITE_MSVC_H..#i
5640: 66 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56  f defined(_MSC_V
5650: 45 52 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  ER).#pragma warn
5660: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 30  ing(disable : 40
5670: 35 34 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  54).#pragma warn
5680: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 30  ing(disable : 40
5690: 35 35 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  55).#pragma warn
56a0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
56b0: 30 30 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  00).#pragma warn
56c0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
56d0: 32 37 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  27).#pragma warn
56e0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
56f0: 33 30 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  30).#pragma warn
5700: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
5710: 35 32 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  52).#pragma warn
5720: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
5730: 38 39 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  89).#pragma warn
5740: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 32  ing(disable : 42
5750: 30 36 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  06).#pragma warn
5760: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 32  ing(disable : 42
5770: 31 30 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  10).#pragma warn
5780: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 32  ing(disable : 42
5790: 33 32 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  32).#pragma warn
57a0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 32  ing(disable : 42
57b0: 34 34 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  44).#pragma warn
57c0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 33  ing(disable : 43
57d0: 30 35 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  05).#pragma warn
57e0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 33  ing(disable : 43
57f0: 30 36 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  06).#pragma warn
5800: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 37  ing(disable : 47
5810: 30 32 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  02).#pragma warn
5820: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 37  ing(disable : 47
5830: 30 36 29 0a 23 65 6e 64 69 66 20 2f 2a 20 64 65  06).#endif /* de
5840: 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20  fined(_MSC_VER) 
5850: 2a 2f 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28  */..#if defined(
5860: 5f 4d 53 43 5f 56 45 52 29 20 26 26 20 21 64 65  _MSC_VER) && !de
5870: 66 69 6e 65 64 28 5f 57 49 4e 36 34 29 0a 23 75  fined(_WIN64).#u
5880: 6e 64 65 66 20 53 51 4c 49 54 45 5f 34 5f 42 59  ndef SQLITE_4_BY
5890: 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f  TE_ALIGNED_MALLO
58a0: 43 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  C.#define SQLITE
58b0: 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44 5f  _4_BYTE_ALIGNED_
58c0: 4d 41 4c 4c 4f 43 0a 23 65 6e 64 69 66 20 2f 2a  MALLOC.#endif /*
58d0: 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45   defined(_MSC_VE
58e0: 52 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f  R) && !defined(_
58f0: 57 49 4e 36 34 29 20 2a 2f 0a 0a 23 65 6e 64 69  WIN64) */..#endi
5900: 66 20 2f 2a 20 53 51 4c 49 54 45 5f 4d 53 56 43  f /* SQLITE_MSVC
5910: 5f 48 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a  _H */../********
5920: 2a 2a 2a 2a 2a 2a 20 45 6e 64 20 6f 66 20 6d 73  ****** End of ms
5930: 76 63 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  vc.h ***********
5940: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5950: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5960: 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a  *****/./********
5970: 2a 2a 2a 2a 2a 2a 20 43 6f 6e 74 69 6e 75 69 6e  ****** Continuin
5980: 67 20 77 68 65 72 65 20 77 65 20 6c 65 66 74 20  g where we left 
5990: 6f 66 66 20 69 6e 20 73 71 6c 69 74 65 49 6e 74  off in sqliteInt
59a0: 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .h *************
59b0: 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 53 70  *****/../*.** Sp
59c0: 65 63 69 61 6c 20 73 65 74 75 70 20 66 6f 72 20  ecial setup for 
59d0: 56 78 57 6f 72 6b 73 0a 2a 2f 0a 2f 2a 2a 2a 2a  VxWorks.*/./****
59e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 49 6e 63 6c 75  ********** Inclu
59f0: 64 65 20 76 78 77 6f 72 6b 73 2e 68 20 69 6e 20  de vxworks.h in 
5a00: 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 73 71  the middle of sq
5a10: 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a  liteInt.h ******
5a20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a  *********/./****
5a30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e  ********** Begin
5a40: 20 66 69 6c 65 20 76 78 77 6f 72 6b 73 2e 68 20   file vxworks.h 
5a50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5a60: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5a70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a  *********/./*.**
5a80: 20 32 30 31 35 2d 30 33 2d 30 32 0a 2a 2a 0a 2a   2015-03-02.**.*
5a90: 2a 20 54 68 65 20 61 75 74 68 6f 72 20 64 69 73  * The author dis
5aa0: 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74  claims copyright
5ab0: 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20   to this source 
5ac0: 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20  code.  In place 
5ad0: 6f 66 0a 2a 2a 20 61 20 6c 65 67 61 6c 20 6e 6f  of.** a legal no
5ae0: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
5af0: 62 6c 65 73 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20  blessing:.**.** 
5b00: 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f     May you do go
5b10: 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e  od and not evil.
5b20: 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 66  .**    May you f
5b30: 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20  ind forgiveness 
5b40: 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64  for yourself and
5b50: 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e   forgive others.
5b60: 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 73  .**    May you s
5b70: 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76  hare freely, nev
5b80: 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74  er taking more t
5b90: 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 2a 2a  han you give..**
5ba0: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .***************
5bb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5bc0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5bd0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5be0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a  ***************.
5bf0: 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 69 6c 65 20  **.** This file 
5c00: 63 6f 6e 74 61 69 6e 73 20 63 6f 64 65 20 74 68  contains code th
5c10: 61 74 20 69 73 20 73 70 65 63 69 66 69 63 20 74  at is specific t
5c20: 6f 20 57 69 6e 64 20 52 69 76 65 72 27 73 20 56  o Wind River's V
5c30: 78 57 6f 72 6b 73 0a 2a 2f 0a 23 69 66 20 64 65  xWorks.*/.#if de
5c40: 66 69 6e 65 64 28 5f 5f 52 54 50 5f 5f 29 20 7c  fined(__RTP__) |
5c50: 7c 20 64 65 66 69 6e 65 64 28 5f 57 52 53 5f 4b  | defined(_WRS_K
5c60: 45 52 4e 45 4c 29 0a 2f 2a 20 54 68 69 73 20 69  ERNEL)./* This i
5c70: 73 20 56 78 57 6f 72 6b 73 2e 20 20 53 65 74 20  s VxWorks.  Set 
5c80: 75 70 20 74 68 69 6e 67 73 20 73 70 65 63 69 61  up things specia
5c90: 6c 6c 79 20 66 6f 72 20 74 68 61 74 20 4f 53 0a  lly for that OS.
5ca0: 2a 2f 0a 23 69 6e 63 6c 75 64 65 20 3c 76 78 57  */.#include <vxW
5cb0: 6f 72 6b 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65  orks.h>.#include
5cc0: 20 3c 70 74 68 72 65 61 64 2e 68 3e 20 20 2f 2a   <pthread.h>  /*
5cd0: 20 61 6d 61 6c 67 61 6d 61 74 6f 72 3a 20 64 6f   amalgamator: do
5ce0: 6e 74 63 61 63 68 65 20 2a 2f 0a 23 64 65 66 69  ntcache */.#defi
5cf0: 6e 65 20 4f 53 5f 56 58 57 4f 52 4b 53 20 31 0a  ne OS_VXWORKS 1.
5d00: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
5d10: 53 5f 4f 54 48 45 52 20 30 0a 23 64 65 66 69 6e  S_OTHER 0.#defin
5d20: 65 20 53 51 4c 49 54 45 5f 48 4f 4d 45 47 52 4f  e SQLITE_HOMEGRO
5d30: 57 4e 5f 52 45 43 55 52 53 49 56 45 5f 4d 55 54  WN_RECURSIVE_MUT
5d40: 45 58 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c  EX 1.#define SQL
5d50: 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58  ITE_OMIT_LOAD_EX
5d60: 54 45 4e 53 49 4f 4e 20 31 0a 23 64 65 66 69 6e  TENSION 1.#defin
5d70: 65 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  e SQLITE_ENABLE_
5d80: 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 20 30 0a  LOCKING_STYLE 0.
5d90: 23 64 65 66 69 6e 65 20 48 41 56 45 5f 55 54 49  #define HAVE_UTI
5da0: 4d 45 20 31 0a 23 65 6c 73 65 0a 2f 2a 20 54 68  ME 1.#else./* Th
5db0: 69 73 20 69 73 20 6e 6f 74 20 56 78 57 6f 72 6b  is is not VxWork
5dc0: 73 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4f 53  s. */.#define OS
5dd0: 5f 56 58 57 4f 52 4b 53 20 30 0a 23 64 65 66 69  _VXWORKS 0.#defi
5de0: 6e 65 20 48 41 56 45 5f 46 43 48 4f 57 4e 20 31  ne HAVE_FCHOWN 1
5df0: 0a 23 64 65 66 69 6e 65 20 48 41 56 45 5f 52 45  .#define HAVE_RE
5e00: 41 44 4c 49 4e 4b 20 31 0a 23 64 65 66 69 6e 65  ADLINK 1.#define
5e10: 20 48 41 56 45 5f 4c 53 54 41 54 20 31 0a 23 65   HAVE_LSTAT 1.#e
5e20: 6e 64 69 66 20 2f 2a 20 64 65 66 69 6e 65 64 28  ndif /* defined(
5e30: 5f 57 52 53 5f 4b 45 52 4e 45 4c 29 20 2a 2f 0a  _WRS_KERNEL) */.
5e40: 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ./**************
5e50: 20 45 6e 64 20 6f 66 20 76 78 77 6f 72 6b 73 2e   End of vxworks.
5e60: 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  h **************
5e70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5e80: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f  ***************/
5e90: 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ./**************
5ea0: 20 43 6f 6e 74 69 6e 75 69 6e 67 20 77 68 65 72   Continuing wher
5eb0: 65 20 77 65 20 6c 65 66 74 20 6f 66 66 20 69 6e  e we left off in
5ec0: 20 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a   sqliteInt.h ***
5ed0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f  ***************/
5ee0: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 23 64  ../*.** These #d
5ef0: 65 66 69 6e 65 73 20 73 68 6f 75 6c 64 20 65 6e  efines should en
5f00: 61 62 6c 65 20 3e 32 47 42 20 66 69 6c 65 20 73  able >2GB file s
5f10: 75 70 70 6f 72 74 20 6f 6e 20 50 4f 53 49 58 20  upport on POSIX 
5f20: 69 66 20 74 68 65 0a 2a 2a 20 75 6e 64 65 72 6c  if the.** underl
5f30: 79 69 6e 67 20 6f 70 65 72 61 74 69 6e 67 20 73  ying operating s
5f40: 79 73 74 65 6d 20 73 75 70 70 6f 72 74 73 20 69  ystem supports i
5f50: 74 2e 20 20 49 66 20 74 68 65 20 4f 53 20 6c 61  t.  If the OS la
5f60: 63 6b 73 0a 2a 2a 20 6c 61 72 67 65 20 66 69 6c  cks.** large fil
5f70: 65 20 73 75 70 70 6f 72 74 2c 20 6f 72 20 69 66  e support, or if
5f80: 20 74 68 65 20 4f 53 20 69 73 20 77 69 6e 64 6f   the OS is windo
5f90: 77 73 2c 20 74 68 65 73 65 20 73 68 6f 75 6c 64  ws, these should
5fa0: 20 62 65 20 6e 6f 2d 6f 70 73 2e 0a 2a 2a 0a 2a   be no-ops..**.*
5fb0: 2a 20 54 69 63 6b 65 74 20 23 32 37 33 39 3a 20  * Ticket #2739: 
5fc0: 20 54 68 65 20 5f 4c 41 52 47 45 46 49 4c 45 5f   The _LARGEFILE_
5fd0: 53 4f 55 52 43 45 20 6d 61 63 72 6f 20 6d 75 73  SOURCE macro mus
5fe0: 74 20 61 70 70 65 61 72 20 62 65 66 6f 72 65 20  t appear before 
5ff0: 61 6e 79 0a 2a 2a 20 73 79 73 74 65 6d 20 23 69  any.** system #i
6000: 6e 63 6c 75 64 65 73 2e 20 20 48 65 6e 63 65 2c  ncludes.  Hence,
6010: 20 74 68 69 73 20 62 6c 6f 63 6b 20 6f 66 20 63   this block of c
6020: 6f 64 65 20 6d 75 73 74 20 62 65 20 74 68 65 20  ode must be the 
6030: 76 65 72 79 20 66 69 72 73 74 0a 2a 2a 20 63 6f  very first.** co
6040: 64 65 20 69 6e 20 61 6c 6c 20 73 6f 75 72 63 65  de in all source
6050: 20 66 69 6c 65 73 2e 0a 2a 2a 0a 2a 2a 20 4c 61   files..**.** La
6060: 72 67 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74  rge file support
6070: 20 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64   can be disabled
6080: 20 75 73 69 6e 67 20 74 68 65 20 2d 44 53 51 4c   using the -DSQL
6090: 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53 20  ITE_DISABLE_LFS 
60a0: 73 77 69 74 63 68 0a 2a 2a 20 6f 6e 20 74 68 65  switch.** on the
60b0: 20 63 6f 6d 70 69 6c 65 72 20 63 6f 6d 6d 61 6e   compiler comman
60c0: 64 20 6c 69 6e 65 2e 20 20 54 68 69 73 20 69 73  d line.  This is
60d0: 20 6e 65 63 65 73 73 61 72 79 20 69 66 20 79 6f   necessary if yo
60e0: 75 20 61 72 65 20 63 6f 6d 70 69 6c 69 6e 67 0a  u are compiling.
60f0: 2a 2a 20 6f 6e 20 61 20 72 65 63 65 6e 74 20 6d  ** on a recent m
6100: 61 63 68 69 6e 65 20 28 65 78 3a 20 52 65 64 20  achine (ex: Red 
6110: 48 61 74 20 37 2e 32 29 20 62 75 74 20 79 6f 75  Hat 7.2) but you
6120: 20 77 61 6e 74 20 79 6f 75 72 20 63 6f 64 65 20   want your code 
6130: 74 6f 20 77 6f 72 6b 0a 2a 2a 20 6f 6e 20 61 6e  to work.** on an
6140: 20 6f 6c 64 65 72 20 6d 61 63 68 69 6e 65 20 28   older machine (
6150: 65 78 3a 20 52 65 64 20 48 61 74 20 36 2e 30 29  ex: Red Hat 6.0)
6160: 2e 20 20 49 66 20 79 6f 75 20 63 6f 6d 70 69 6c  .  If you compil
6170: 65 20 6f 6e 20 52 65 64 20 48 61 74 20 37 2e 32  e on Red Hat 7.2
6180: 0a 2a 2a 20 77 69 74 68 6f 75 74 20 74 68 69 73  .** without this
6190: 20 6f 70 74 69 6f 6e 2c 20 4c 46 53 20 69 73 20   option, LFS is 
61a0: 65 6e 61 62 6c 65 2e 20 20 42 75 74 20 4c 46 53  enable.  But LFS
61b0: 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 20   does not exist 
61c0: 69 6e 20 74 68 65 20 6b 65 72 6e 65 6c 0a 2a 2a  in the kernel.**
61d0: 20 69 6e 20 52 65 64 20 48 61 74 20 36 2e 30 2c   in Red Hat 6.0,
61e0: 20 73 6f 20 74 68 65 20 63 6f 64 65 20 77 6f 6e   so the code won
61f0: 27 74 20 77 6f 72 6b 2e 20 20 48 65 6e 63 65 2c  't work.  Hence,
6200: 20 66 6f 72 20 6d 61 78 69 6d 75 6d 20 62 69 6e   for maximum bin
6210: 61 72 79 0a 2a 2a 20 70 6f 72 74 61 62 69 6c 69  ary.** portabili
6220: 74 79 20 79 6f 75 20 73 68 6f 75 6c 64 20 6f 6d  ty you should om
6230: 69 74 20 4c 46 53 2e 0a 2a 2a 0a 2a 2a 20 54 68  it LFS..**.** Th
6240: 65 20 70 72 65 76 69 6f 75 73 20 70 61 72 61 67  e previous parag
6250: 72 61 70 68 20 77 61 73 20 77 72 69 74 74 65 6e  raph was written
6260: 20 69 6e 20 32 30 30 35 2e 20 20 28 54 68 69 73   in 2005.  (This
6270: 20 70 61 72 61 67 72 61 70 68 20 69 73 20 77 72   paragraph is wr
6280: 69 74 74 65 6e 0a 2a 2a 20 6f 6e 20 32 30 30 38  itten.** on 2008
6290: 2d 31 31 2d 32 38 2e 29 20 54 68 65 73 65 20 64  -11-28.) These d
62a0: 61 79 73 2c 20 61 6c 6c 20 4c 69 6e 75 78 20 6b  ays, all Linux k
62b0: 65 72 6e 65 6c 73 20 73 75 70 70 6f 72 74 20 6c  ernels support l
62c0: 61 72 67 65 20 66 69 6c 65 73 2c 20 73 6f 0a 2a  arge files, so.*
62d0: 2a 20 79 6f 75 20 73 68 6f 75 6c 64 20 70 72 6f  * you should pro
62e0: 62 61 62 6c 79 20 6c 65 61 76 65 20 4c 46 53 20  bably leave LFS 
62f0: 65 6e 61 62 6c 65 64 2e 20 20 42 75 74 20 73 6f  enabled.  But so
6300: 6d 65 20 65 6d 62 65 64 64 65 64 20 70 6c 61 74  me embedded plat
6310: 66 6f 72 6d 73 20 6d 69 67 68 74 0a 2a 2a 20 6c  forms might.** l
6320: 61 63 6b 20 4c 46 53 20 69 6e 20 77 68 69 63 68  ack LFS in which
6330: 20 63 61 73 65 20 74 68 65 20 53 51 4c 49 54 45   case the SQLITE
6340: 5f 44 49 53 41 42 4c 45 5f 4c 46 53 20 6d 61 63  _DISABLE_LFS mac
6350: 72 6f 20 6d 69 67 68 74 20 73 74 69 6c 6c 20 62  ro might still b
6360: 65 20 75 73 65 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20  e useful..**.** 
6370: 53 69 6d 69 6c 61 72 20 69 73 20 74 72 75 65 20  Similar is true 
6380: 66 6f 72 20 4d 61 63 20 4f 53 20 58 2e 20 20 4c  for Mac OS X.  L
6390: 46 53 20 69 73 20 6f 6e 6c 79 20 73 75 70 70 6f  FS is only suppo
63a0: 72 74 65 64 20 6f 6e 20 4d 61 63 20 4f 53 20 58  rted on Mac OS X
63b0: 20 39 20 61 6e 64 20 6c 61 74 65 72 2e 0a 2a 2f   9 and later..*/
63c0: 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f  .#ifndef SQLITE_
63d0: 44 49 53 41 42 4c 45 5f 4c 46 53 0a 23 20 64 65  DISABLE_LFS.# de
63e0: 66 69 6e 65 20 5f 4c 41 52 47 45 5f 46 49 4c 45  fine _LARGE_FILE
63f0: 20 20 20 20 20 20 20 31 0a 23 20 69 66 6e 64 65         1.# ifnde
6400: 66 20 5f 46 49 4c 45 5f 4f 46 46 53 45 54 5f 42  f _FILE_OFFSET_B
6410: 49 54 53 0a 23 20 20 20 64 65 66 69 6e 65 20 5f  ITS.#   define _
6420: 46 49 4c 45 5f 4f 46 46 53 45 54 5f 42 49 54 53  FILE_OFFSET_BITS
6430: 20 36 34 0a 23 20 65 6e 64 69 66 0a 23 20 64 65   64.# endif.# de
6440: 66 69 6e 65 20 5f 4c 41 52 47 45 46 49 4c 45 5f  fine _LARGEFILE_
6450: 53 4f 55 52 43 45 20 31 0a 23 65 6e 64 69 66 0a  SOURCE 1.#endif.
6460: 0a 2f 2a 20 54 68 65 20 47 43 43 5f 56 45 52 53  ./* The GCC_VERS
6470: 49 4f 4e 20 61 6e 64 20 4d 53 56 43 5f 56 45 52  ION and MSVC_VER
6480: 53 49 4f 4e 20 6d 61 63 72 6f 73 20 61 72 65 20  SION macros are 
6490: 75 73 65 64 20 74 6f 0a 2a 2a 20 63 6f 6e 64 69  used to.** condi
64a0: 74 69 6f 6e 61 6c 6c 79 20 69 6e 63 6c 75 64 65  tionally include
64b0: 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 66   optimizations f
64c0: 6f 72 20 65 61 63 68 20 6f 66 20 74 68 65 73 65  or each of these
64d0: 20 63 6f 6d 70 69 6c 65 72 73 2e 20 20 41 0a 2a   compilers.  A.*
64e0: 2a 20 76 61 6c 75 65 20 6f 66 20 30 20 6d 65 61  * value of 0 mea
64f0: 6e 73 20 74 68 61 74 20 63 6f 6d 70 69 6c 65 72  ns that compiler
6500: 20 69 73 20 6e 6f 74 20 62 65 69 6e 67 20 75 73   is not being us
6510: 65 64 2e 20 20 54 68 65 0a 2a 2a 20 53 51 4c 49  ed.  The.** SQLI
6520: 54 45 5f 44 49 53 41 42 4c 45 5f 49 4e 54 52 49  TE_DISABLE_INTRI
6530: 4e 53 49 43 20 6d 61 63 72 6f 20 6d 65 61 6e 73  NSIC macro means
6540: 20 64 6f 20 6e 6f 74 20 75 73 65 20 61 6e 79 20   do not use any 
6550: 63 6f 6d 70 69 6c 65 72 2d 73 70 65 63 69 66 69  compiler-specifi
6560: 63 0a 2a 2a 20 6f 70 74 69 6d 69 7a 61 74 69 6f  c.** optimizatio
6570: 6e 73 2c 20 61 6e 64 20 68 65 6e 63 65 20 73 65  ns, and hence se
6580: 74 20 61 6c 6c 20 63 6f 6d 70 69 6c 65 72 20 6d  t all compiler m
6590: 61 63 72 6f 73 20 74 6f 20 30 0a 2a 2a 0a 2a 2a  acros to 0.**.**
65a0: 20 54 68 65 72 65 20 77 61 73 20 6f 6e 63 65 20   There was once 
65b0: 61 6c 73 6f 20 61 20 43 4c 41 4e 47 5f 56 45 52  also a CLANG_VER
65c0: 53 49 4f 4e 20 6d 61 63 72 6f 2e 20 20 48 6f 77  SION macro.  How
65d0: 65 76 65 72 2c 20 77 65 20 6c 65 61 72 6e 20 74  ever, we learn t
65e0: 68 61 74 20 74 68 65 0a 2a 2a 20 76 65 72 73 69  hat the.** versi
65f0: 6f 6e 20 6e 75 6d 62 65 72 73 20 69 6e 20 63 6c  on numbers in cl
6600: 61 6e 67 20 61 72 65 20 66 6f 72 20 22 6d 61 72  ang are for "mar
6610: 6b 65 74 69 6e 67 22 20 6f 6e 6c 79 20 61 6e 64  keting" only and
6620: 20 61 72 65 20 69 6e 63 6f 6e 73 69 73 74 65 6e   are inconsisten
6630: 74 0a 2a 2a 20 61 6e 64 20 75 6e 72 65 6c 69 61  t.** and unrelia
6640: 62 6c 65 2e 20 20 46 6f 72 74 75 6e 61 74 65 6c  ble.  Fortunatel
6650: 79 2c 20 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20  y, all versions 
6660: 6f 66 20 63 6c 61 6e 67 20 61 6c 73 6f 20 72 65  of clang also re
6670: 63 6f 67 6e 69 7a 65 20 74 68 65 0a 2a 2a 20 67  cognize the.** g
6680: 63 63 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65  cc version numbe
6690: 72 73 20 61 6e 64 20 68 61 76 65 20 72 65 61 73  rs and have reas
66a0: 6f 6e 61 62 6c 65 20 73 65 74 74 69 6e 67 73 20  onable settings 
66b0: 66 6f 72 20 67 63 63 20 76 65 72 73 69 6f 6e 20  for gcc version 
66c0: 6e 75 6d 62 65 72 73 2c 0a 2a 2a 20 73 6f 20 74  numbers,.** so t
66d0: 68 65 20 47 43 43 5f 56 45 52 53 49 4f 4e 20 6d  he GCC_VERSION m
66e0: 61 63 72 6f 20 77 69 6c 6c 20 62 65 20 73 65 74  acro will be set
66f0: 20 74 6f 20 61 20 63 6f 72 72 65 63 74 20 6e 6f   to a correct no
6700: 6e 2d 7a 65 72 6f 20 76 61 6c 75 65 20 65 76 65  n-zero value eve
6710: 6e 0a 2a 2a 20 77 68 65 6e 20 63 6f 6d 70 69 6c  n.** when compil
6720: 69 6e 67 20 77 69 74 68 20 63 6c 61 6e 67 2e 0a  ing with clang..
6730: 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  */.#if defined(_
6740: 5f 47 4e 55 43 5f 5f 29 20 26 26 20 21 64 65 66  _GNUC__) && !def
6750: 69 6e 65 64 28 53 51 4c 49 54 45 5f 44 49 53 41  ined(SQLITE_DISA
6760: 42 4c 45 5f 49 4e 54 52 49 4e 53 49 43 29 0a 23  BLE_INTRINSIC).#
6770: 20 64 65 66 69 6e 65 20 47 43 43 5f 56 45 52 53   define GCC_VERS
6780: 49 4f 4e 20 28 5f 5f 47 4e 55 43 5f 5f 2a 31 30  ION (__GNUC__*10
6790: 30 30 30 30 30 2b 5f 5f 47 4e 55 43 5f 4d 49 4e  00000+__GNUC_MIN
67a0: 4f 52 5f 5f 2a 31 30 30 30 2b 5f 5f 47 4e 55 43  OR__*1000+__GNUC
67b0: 5f 50 41 54 43 48 4c 45 56 45 4c 5f 5f 29 0a 23  _PATCHLEVEL__).#
67c0: 65 6c 73 65 0a 23 20 64 65 66 69 6e 65 20 47 43  else.# define GC
67d0: 43 5f 56 45 52 53 49 4f 4e 20 30 0a 23 65 6e 64  C_VERSION 0.#end
67e0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  if.#if defined(_
67f0: 4d 53 43 5f 56 45 52 29 20 26 26 20 21 64 65 66  MSC_VER) && !def
6800: 69 6e 65 64 28 53 51 4c 49 54 45 5f 44 49 53 41  ined(SQLITE_DISA
6810: 42 4c 45 5f 49 4e 54 52 49 4e 53 49 43 29 0a 23  BLE_INTRINSIC).#
6820: 20 64 65 66 69 6e 65 20 4d 53 56 43 5f 56 45 52   define MSVC_VER
6830: 53 49 4f 4e 20 5f 4d 53 43 5f 56 45 52 0a 23 65  SION _MSC_VER.#e
6840: 6c 73 65 0a 23 20 64 65 66 69 6e 65 20 4d 53 56  lse.# define MSV
6850: 43 5f 56 45 52 53 49 4f 4e 20 30 0a 23 65 6e 64  C_VERSION 0.#end
6860: 69 66 0a 0a 2f 2a 20 4e 65 65 64 65 64 20 66 6f  if../* Needed fo
6870: 72 20 76 61 72 69 6f 75 73 20 64 65 66 69 6e 69  r various defini
6880: 74 69 6f 6e 73 2e 2e 2e 20 2a 2f 0a 23 69 66 20  tions... */.#if 
6890: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
68a0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 47  ) && !defined(_G
68b0: 4e 55 5f 53 4f 55 52 43 45 29 0a 23 20 64 65 66  NU_SOURCE).# def
68c0: 69 6e 65 20 5f 47 4e 55 5f 53 4f 55 52 43 45 0a  ine _GNU_SOURCE.
68d0: 23 65 6e 64 69 66 0a 0a 23 69 66 20 64 65 66 69  #endif..#if defi
68e0: 6e 65 64 28 5f 5f 4f 70 65 6e 42 53 44 5f 5f 29  ned(__OpenBSD__)
68f0: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 42 53   && !defined(_BS
6900: 44 5f 53 4f 55 52 43 45 29 0a 23 20 64 65 66 69  D_SOURCE).# defi
6910: 6e 65 20 5f 42 53 44 5f 53 4f 55 52 43 45 0a 23  ne _BSD_SOURCE.#
6920: 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 46 6f 72  endif../*.** For
6930: 20 4d 69 6e 47 57 2c 20 63 68 65 63 6b 20 74 6f   MinGW, check to
6940: 20 73 65 65 20 69 66 20 77 65 20 63 61 6e 20 69   see if we can i
6950: 6e 63 6c 75 64 65 20 74 68 65 20 68 65 61 64 65  nclude the heade
6960: 72 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e  r file containin
6970: 67 20 69 74 73 0a 2a 2a 20 76 65 72 73 69 6f 6e  g its.** version
6980: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 61 6d   information, am
6990: 6f 6e 67 20 6f 74 68 65 72 20 74 68 69 6e 67 73  ong other things
69a0: 2e 20 20 4e 6f 72 6d 61 6c 6c 79 2c 20 74 68 69  .  Normally, thi
69b0: 73 20 69 6e 74 65 72 6e 61 6c 20 4d 69 6e 47 57  s internal MinGW
69c0: 0a 2a 2a 20 68 65 61 64 65 72 20 66 69 6c 65 20  .** header file 
69d0: 77 6f 75 6c 64 20 5b 6f 6e 6c 79 5d 20 62 65 20  would [only] be 
69e0: 69 6e 63 6c 75 64 65 64 20 61 75 74 6f 6d 61 74  included automat
69f0: 69 63 61 6c 6c 79 20 62 79 20 6f 74 68 65 72 20  ically by other 
6a00: 4d 69 6e 47 57 20 68 65 61 64 65 72 0a 2a 2a 20  MinGW header.** 
6a10: 66 69 6c 65 73 3b 20 68 6f 77 65 76 65 72 2c 20  files; however, 
6a20: 74 68 65 20 63 6f 6e 74 61 69 6e 65 64 20 76 65  the contained ve
6a30: 72 73 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f  rsion informatio
6a40: 6e 20 69 73 20 6e 6f 77 20 72 65 71 75 69 72 65  n is now require
6a50: 64 20 62 79 20 74 68 69 73 0a 2a 2a 20 68 65 61  d by this.** hea
6a60: 64 65 72 20 66 69 6c 65 20 74 6f 20 77 6f 72 6b  der file to work
6a70: 20 61 72 6f 75 6e 64 20 62 69 6e 61 72 79 20 63   around binary c
6a80: 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 69 73 73  ompatibility iss
6a90: 75 65 73 20 28 73 65 65 20 62 65 6c 6f 77 29 20  ues (see below) 
6aa0: 61 6e 64 0a 2a 2a 20 74 68 69 73 20 69 73 20 74  and.** this is t
6ab0: 68 65 20 6f 6e 6c 79 20 6b 6e 6f 77 6e 20 77 61  he only known wa
6ac0: 79 20 74 6f 20 72 65 6c 69 61 62 6c 79 20 6f 62  y to reliably ob
6ad0: 74 61 69 6e 20 69 74 2e 20 20 54 68 69 73 20 65  tain it.  This e
6ae0: 6e 74 69 72 65 20 23 69 66 20 62 6c 6f 63 6b 0a  ntire #if block.
6af0: 2a 2a 20 77 6f 75 6c 64 20 62 65 20 63 6f 6d 70  ** would be comp
6b00: 6c 65 74 65 6c 79 20 75 6e 6e 65 63 65 73 73 61  letely unnecessa
6b10: 72 79 20 69 66 20 74 68 65 72 65 20 77 61 73 20  ry if there was 
6b20: 61 6e 79 20 6f 74 68 65 72 20 77 61 79 20 6f 66  any other way of
6b30: 20 64 65 74 65 63 74 69 6e 67 0a 2a 2a 20 4d 69   detecting.** Mi
6b40: 6e 47 57 20 76 69 61 20 74 68 65 69 72 20 70 72  nGW via their pr
6b50: 65 70 72 6f 63 65 73 73 6f 72 20 28 65 2e 67 2e  eprocessor (e.g.
6b60: 20 69 66 20 74 68 65 79 20 63 75 73 74 6f 6d 69   if they customi
6b70: 7a 65 64 20 74 68 65 69 72 20 47 43 43 20 74 6f  zed their GCC to
6b80: 20 64 65 66 69 6e 65 0a 2a 2a 20 73 6f 6d 65 20   define.** some 
6b90: 4d 69 6e 47 57 2d 73 70 65 63 69 66 69 63 20 6d  MinGW-specific m
6ba0: 61 63 72 6f 73 29 2e 20 20 57 68 65 6e 20 63 6f  acros).  When co
6bb0: 6d 70 69 6c 69 6e 67 20 66 6f 72 20 4d 69 6e 47  mpiling for MinG
6bc0: 57 2c 20 65 69 74 68 65 72 20 74 68 65 0a 2a 2a  W, either the.**
6bd0: 20 5f 48 41 56 45 5f 4d 49 4e 47 57 5f 48 20 6f   _HAVE_MINGW_H o
6be0: 72 20 5f 48 41 56 45 5f 5f 4d 49 4e 47 57 5f 48  r _HAVE__MINGW_H
6bf0: 20 28 6e 6f 74 65 20 74 68 65 20 65 78 74 72 61   (note the extra
6c00: 20 75 6e 64 65 72 73 63 6f 72 65 29 20 6d 61 63   underscore) mac
6c10: 72 6f 20 6d 75 73 74 20 62 65 0a 2a 2a 20 64 65  ro must be.** de
6c20: 66 69 6e 65 64 3b 20 6f 74 68 65 72 77 69 73 65  fined; otherwise
6c30: 2c 20 64 65 74 65 63 74 69 6f 6e 20 6f 66 20 63  , detection of c
6c40: 6f 6e 64 69 74 69 6f 6e 73 20 73 70 65 63 69 66  onditions specif
6c50: 69 63 20 74 6f 20 4d 69 6e 47 57 20 77 69 6c 6c  ic to MinGW will
6c60: 20 62 65 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2e   be.** disabled.
6c70: 0a 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28  .*/.#if defined(
6c80: 5f 48 41 56 45 5f 4d 49 4e 47 57 5f 48 29 0a 23  _HAVE_MINGW_H).#
6c90: 20 69 6e 63 6c 75 64 65 20 22 6d 69 6e 67 77 2e   include "mingw.
6ca0: 68 22 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64  h".#elif defined
6cb0: 28 5f 48 41 56 45 5f 5f 4d 49 4e 47 57 5f 48 29  (_HAVE__MINGW_H)
6cc0: 0a 23 20 69 6e 63 6c 75 64 65 20 22 5f 6d 69 6e  .# include "_min
6cd0: 67 77 2e 68 22 0a 23 65 6e 64 69 66 0a 0a 2f 2a  gw.h".#endif../*
6ce0: 0a 2a 2a 20 46 6f 72 20 4d 69 6e 47 57 20 76 65  .** For MinGW ve
6cf0: 72 73 69 6f 6e 20 34 2e 78 20 28 61 6e 64 20 68  rsion 4.x (and h
6d00: 69 67 68 65 72 29 2c 20 63 68 65 63 6b 20 74 6f  igher), check to
6d10: 20 73 65 65 20 69 66 20 74 68 65 20 5f 55 53 45   see if the _USE
6d20: 5f 33 32 42 49 54 5f 54 49 4d 45 5f 54 0a 2a 2a  _32BIT_TIME_T.**
6d30: 20 64 65 66 69 6e 65 20 69 73 20 72 65 71 75 69   define is requi
6d40: 72 65 64 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20  red to maintain 
6d50: 62 69 6e 61 72 79 20 63 6f 6d 70 61 74 69 62 69  binary compatibi
6d60: 6c 69 74 79 20 77 69 74 68 20 74 68 65 20 4d 53  lity with the MS
6d70: 56 43 20 72 75 6e 74 69 6d 65 0a 2a 2a 20 6c 69  VC runtime.** li
6d80: 62 72 61 72 79 20 69 6e 20 75 73 65 20 28 65 2e  brary in use (e.
6d90: 67 2e 20 66 6f 72 20 57 69 6e 64 6f 77 73 20 58  g. for Windows X
6da0: 50 29 2e 0a 2a 2f 0a 23 69 66 20 21 64 65 66 69  P)..*/.#if !defi
6db0: 6e 65 64 28 5f 55 53 45 5f 33 32 42 49 54 5f 54  ned(_USE_32BIT_T
6dc0: 49 4d 45 5f 54 29 20 26 26 20 21 64 65 66 69 6e  IME_T) && !defin
6dd0: 65 64 28 5f 55 53 45 5f 36 34 42 49 54 5f 54 49  ed(_USE_64BIT_TI
6de0: 4d 45 5f 54 29 20 26 26 20 5c 0a 20 20 20 20 64  ME_T) && \.    d
6df0: 65 66 69 6e 65 64 28 5f 57 49 4e 33 32 29 20 26  efined(_WIN32) &
6e00: 26 20 21 64 65 66 69 6e 65 64 28 5f 57 49 4e 36  & !defined(_WIN6
6e10: 34 29 20 26 26 20 5c 0a 20 20 20 20 64 65 66 69  4) && \.    defi
6e20: 6e 65 64 28 5f 5f 4d 49 4e 47 57 5f 4d 41 4a 4f  ned(__MINGW_MAJO
6e30: 52 5f 56 45 52 53 49 4f 4e 29 20 26 26 20 5f 5f  R_VERSION) && __
6e40: 4d 49 4e 47 57 5f 4d 41 4a 4f 52 5f 56 45 52 53  MINGW_MAJOR_VERS
6e50: 49 4f 4e 20 3e 3d 20 34 20 26 26 20 5c 0a 20 20  ION >= 4 && \.  
6e60: 20 20 64 65 66 69 6e 65 64 28 5f 5f 4d 53 56 43    defined(__MSVC
6e70: 52 54 5f 5f 29 0a 23 20 64 65 66 69 6e 65 20 5f  RT__).# define _
6e80: 55 53 45 5f 33 32 42 49 54 5f 54 49 4d 45 5f 54  USE_32BIT_TIME_T
6e90: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 54 68 65 20  .#endif../* The 
6ea0: 70 75 62 6c 69 63 20 53 51 4c 69 74 65 20 69 6e  public SQLite in
6eb0: 74 65 72 66 61 63 65 2e 20 20 54 68 65 20 5f 46  terface.  The _F
6ec0: 49 4c 45 5f 4f 46 46 53 45 54 5f 42 49 54 53 20  ILE_OFFSET_BITS 
6ed0: 6d 61 63 72 6f 20 6d 75 73 74 20 61 70 70 65 61  macro must appea
6ee0: 72 0a 2a 2a 20 66 69 72 73 74 20 69 6e 20 51 4e  r.** first in QN
6ef0: 58 2e 20 20 41 6c 73 6f 2c 20 74 68 65 20 5f 55  X.  Also, the _U
6f00: 53 45 5f 33 32 42 49 54 5f 54 49 4d 45 5f 54 20  SE_32BIT_TIME_T 
6f10: 6d 61 63 72 6f 20 6d 75 73 74 20 61 70 70 65 61  macro must appea
6f20: 72 20 66 69 72 73 74 20 66 6f 72 0a 2a 2a 20 4d  r first for.** M
6f30: 69 6e 47 57 2e 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a  inGW..*/./******
6f40: 2a 2a 2a 2a 2a 2a 2a 2a 20 49 6e 63 6c 75 64 65  ******** Include
6f50: 20 73 71 6c 69 74 65 33 2e 68 20 69 6e 20 74 68   sqlite3.h in th
6f60: 65 20 6d 69 64 64 6c 65 20 6f 66 20 73 71 6c 69  e middle of sqli
6f70: 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a  teInt.h ********
6f80: 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a  *******/./******
6f90: 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20 66  ******** Begin f
6fa0: 69 6c 65 20 73 71 6c 69 74 65 33 2e 68 20 2a 2a  ile sqlite3.h **
6fb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6fc0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6fd0: 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32  *******/./*.** 2
6fe0: 30 30 31 2d 30 39 2d 31 35 0a 2a 2a 0a 2a 2a 20  001-09-15.**.** 
6ff0: 54 68 65 20 61 75 74 68 6f 72 20 64 69 73 63 6c  The author discl
7000: 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74 20 74  aims copyright t
7010: 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20 63 6f  o this source co
7020: 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f 66  de.  In place of
7030: 0a 2a 2a 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69  .** a legal noti
7040: 63 65 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c  ce, here is a bl
7050: 65 73 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20  essing:.**.**   
7060: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
7070: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a   and not evil..*
7080: 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e  *    May you fin
7090: 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f  d forgiveness fo
70a0: 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66  r yourself and f
70b0: 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a  orgive others..*
70c0: 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61  *    May you sha
70d0: 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72  re freely, never
70e0: 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61   taking more tha
70f0: 6e 20 79 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a  n you give..**.*
7100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
7110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
7120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
7130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
7140: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 54 68 69 73  ********.** This
7150: 20 68 65 61 64 65 72 20 66 69 6c 65 20 64 65 66   header file def
7160: 69 6e 65 73 20 74 68 65 20 69 6e 74 65 72 66 61  ines the interfa
7170: 63 65 20 74 68 61 74 20 74 68 65 20 53 51 4c 69  ce that the SQLi
7180: 74 65 20 6c 69 62 72 61 72 79 0a 2a 2a 20 70 72  te library.** pr
7190: 65 73 65 6e 74 73 20 74 6f 20 63 6c 69 65 6e 74  esents to client
71a0: 20 70 72 6f 67 72 61 6d 73 2e 20 20 49 66 20 61   programs.  If a
71b0: 20 43 2d 66 75 6e 63 74 69 6f 6e 2c 20 73 74 72   C-function, str
71c0: 75 63 74 75 72 65 2c 20 64 61 74 61 74 79 70 65  ucture, datatype
71d0: 2c 0a 2a 2a 20 6f 72 20 63 6f 6e 73 74 61 6e 74  ,.** or constant
71e0: 20 64 65 66 69 6e 69 74 69 6f 6e 20 64 6f 65 73   definition does
71f0: 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74   not appear in t
7200: 68 69 73 20 66 69 6c 65 2c 20 74 68 65 6e 20 69  his file, then i
7210: 74 20 69 73 0a 2a 2a 20 6e 6f 74 20 61 20 70 75  t is.** not a pu
7220: 62 6c 69 73 68 65 64 20 41 50 49 20 6f 66 20 53  blished API of S
7230: 51 4c 69 74 65 2c 20 69 73 20 73 75 62 6a 65 63  QLite, is subjec
7240: 74 20 74 6f 20 63 68 61 6e 67 65 20 77 69 74 68  t to change with
7250: 6f 75 74 0a 2a 2a 20 6e 6f 74 69 63 65 2c 20 61  out.** notice, a
7260: 6e 64 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65  nd should not be
7270: 20 72 65 66 65 72 65 6e 63 65 64 20 62 79 20 70   referenced by p
7280: 72 6f 67 72 61 6d 73 20 74 68 61 74 20 75 73 65  rograms that use
7290: 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 53   SQLite..**.** S
72a0: 6f 6d 65 20 6f 66 20 74 68 65 20 64 65 66 69 6e  ome of the defin
72b0: 69 74 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20  itions that are 
72c0: 69 6e 20 74 68 69 73 20 66 69 6c 65 20 61 72 65  in this file are
72d0: 20 6d 61 72 6b 65 64 20 61 73 0a 2a 2a 20 22 65   marked as.** "e
72e0: 78 70 65 72 69 6d 65 6e 74 61 6c 22 2e 20 20 45  xperimental".  E
72f0: 78 70 65 72 69 6d 65 6e 74 61 6c 20 69 6e 74 65  xperimental inte
7300: 72 66 61 63 65 73 20 61 72 65 20 6e 6f 72 6d 61  rfaces are norma
7310: 6c 6c 79 20 6e 65 77 0a 2a 2a 20 66 65 61 74 75  lly new.** featu
7320: 72 65 73 20 72 65 63 65 6e 74 6c 79 20 61 64 64  res recently add
7330: 65 64 20 74 6f 20 53 51 4c 69 74 65 2e 20 20 57  ed to SQLite.  W
7340: 65 20 64 6f 20 6e 6f 74 20 61 6e 74 69 63 69 70  e do not anticip
7350: 61 74 65 20 63 68 61 6e 67 65 73 0a 2a 2a 20 74  ate changes.** t
7360: 6f 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 69  o experimental i
7370: 6e 74 65 72 66 61 63 65 73 20 62 75 74 20 72 65  nterfaces but re
7380: 73 65 72 76 65 20 74 68 65 20 72 69 67 68 74 20  serve the right 
7390: 74 6f 20 6d 61 6b 65 20 6d 69 6e 6f 72 20 63 68  to make minor ch
73a0: 61 6e 67 65 73 0a 2a 2a 20 69 66 20 65 78 70 65  anges.** if expe
73b0: 72 69 65 6e 63 65 20 66 72 6f 6d 20 75 73 65 20  rience from use 
73c0: 22 69 6e 20 74 68 65 20 77 69 6c 64 22 20 73 75  "in the wild" su
73d0: 67 67 65 73 74 20 73 75 63 68 20 63 68 61 6e 67  ggest such chang
73e0: 65 73 20 61 72 65 20 70 72 75 64 65 6e 74 2e 0a  es are prudent..
73f0: 2a 2a 0a 2a 2a 20 54 68 65 20 6f 66 66 69 63 69  **.** The offici
7400: 61 6c 20 43 2d 6c 61 6e 67 75 61 67 65 20 41 50  al C-language AP
7410: 49 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20  I documentation 
7420: 66 6f 72 20 53 51 4c 69 74 65 20 69 73 20 64 65  for SQLite is de
7430: 72 69 76 65 64 0a 2a 2a 20 66 72 6f 6d 20 63 6f  rived.** from co
7440: 6d 6d 65 6e 74 73 20 69 6e 20 74 68 69 73 20 66  mments in this f
7450: 69 6c 65 2e 20 20 54 68 69 73 20 66 69 6c 65 20  ile.  This file 
7460: 69 73 20 74 68 65 20 61 75 74 68 6f 72 69 74 61  is the authorita
7470: 74 69 76 65 20 73 6f 75 72 63 65 0a 2a 2a 20 6f  tive source.** o
7480: 6e 20 68 6f 77 20 53 51 4c 69 74 65 20 69 6e 74  n how SQLite int
7490: 65 72 66 61 63 65 73 20 61 72 65 20 73 75 70 70  erfaces are supp
74a0: 6f 73 65 64 20 74 6f 20 6f 70 65 72 61 74 65 2e  osed to operate.
74b0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6e 61 6d 65 20  .**.** The name 
74c0: 6f 66 20 74 68 69 73 20 66 69 6c 65 20 75 6e 64  of this file und
74d0: 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  er configuration
74e0: 20 6d 61 6e 61 67 65 6d 65 6e 74 20 69 73 20 22   management is "
74f0: 73 71 6c 69 74 65 2e 68 2e 69 6e 22 2e 0a 2a 2a  sqlite.h.in"..**
7500: 20 54 68 65 20 6d 61 6b 65 66 69 6c 65 20 6d 61   The makefile ma
7510: 6b 65 73 20 73 6f 6d 65 20 6d 69 6e 6f 72 20 63  kes some minor c
7520: 68 61 6e 67 65 73 20 74 6f 20 74 68 69 73 20 66  hanges to this f
7530: 69 6c 65 20 28 73 75 63 68 20 61 73 20 69 6e 73  ile (such as ins
7540: 65 72 74 69 6e 67 0a 2a 2a 20 74 68 65 20 76 65  erting.** the ve
7550: 72 73 69 6f 6e 20 6e 75 6d 62 65 72 29 20 61 6e  rsion number) an
7560: 64 20 63 68 61 6e 67 65 73 20 69 74 73 20 6e 61  d changes its na
7570: 6d 65 20 74 6f 20 22 73 71 6c 69 74 65 33 2e 68  me to "sqlite3.h
7580: 22 20 61 73 0a 2a 2a 20 70 61 72 74 20 6f 66 20  " as.** part of 
7590: 74 68 65 20 62 75 69 6c 64 20 70 72 6f 63 65 73  the build proces
75a0: 73 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51  s..*/.#ifndef SQ
75b0: 4c 49 54 45 33 5f 48 0a 23 64 65 66 69 6e 65 20  LITE3_H.#define 
75c0: 53 51 4c 49 54 45 33 5f 48 0a 23 69 6e 63 6c 75  SQLITE3_H.#inclu
75d0: 64 65 20 3c 73 74 64 61 72 67 2e 68 3e 20 20 20  de <stdarg.h>   
75e0: 20 20 2f 2a 20 4e 65 65 64 65 64 20 66 6f 72 20    /* Needed for 
75f0: 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f  the definition o
7600: 66 20 76 61 5f 6c 69 73 74 20 2a 2f 0a 0a 2f 2a  f va_list */../*
7610: 0a 2a 2a 20 4d 61 6b 65 20 73 75 72 65 20 77 65  .** Make sure we
7620: 20 63 61 6e 20 63 61 6c 6c 20 74 68 69 73 20 73   can call this s
7630: 74 75 66 66 20 66 72 6f 6d 20 43 2b 2b 2e 0a 2a  tuff from C++..*
7640: 2f 0a 23 69 66 20 30 0a 65 78 74 65 72 6e 20 22  /.#if 0.extern "
7650: 43 22 20 7b 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a  C" {.#endif.../*
7660: 0a 2a 2a 20 50 72 6f 76 69 64 65 20 74 68 65 20  .** Provide the 
7670: 61 62 69 6c 69 74 79 20 74 6f 20 6f 76 65 72 72  ability to overr
7680: 69 64 65 20 6c 69 6e 6b 61 67 65 20 66 65 61 74  ide linkage feat
7690: 75 72 65 73 20 6f 66 20 74 68 65 20 69 6e 74 65  ures of the inte
76a0: 72 66 61 63 65 2e 0a 2a 2f 0a 23 69 66 6e 64 65  rface..*/.#ifnde
76b0: 66 20 53 51 4c 49 54 45 5f 45 58 54 45 52 4e 0a  f SQLITE_EXTERN.
76c0: 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  # define SQLITE_
76d0: 45 58 54 45 52 4e 20 65 78 74 65 72 6e 0a 23 65  EXTERN extern.#e
76e0: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 53 51 4c  ndif.#ifndef SQL
76f0: 49 54 45 5f 41 50 49 0a 23 20 64 65 66 69 6e 65  ITE_API.# define
7700: 20 53 51 4c 49 54 45 5f 41 50 49 0a 23 65 6e 64   SQLITE_API.#end
7710: 69 66 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54  if.#ifndef SQLIT
7720: 45 5f 43 44 45 43 4c 0a 23 20 64 65 66 69 6e 65  E_CDECL.# define
7730: 20 53 51 4c 49 54 45 5f 43 44 45 43 4c 0a 23 65   SQLITE_CDECL.#e
7740: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 53 51 4c  ndif.#ifndef SQL
7750: 49 54 45 5f 41 50 49 43 41 4c 4c 0a 23 20 64 65  ITE_APICALL.# de
7760: 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 50 49 43  fine SQLITE_APIC
7770: 41 4c 4c 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  ALL.#endif.#ifnd
7780: 65 66 20 53 51 4c 49 54 45 5f 53 54 44 43 41 4c  ef SQLITE_STDCAL
7790: 4c 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54  L.# define SQLIT
77a0: 45 5f 53 54 44 43 41 4c 4c 20 53 51 4c 49 54 45  E_STDCALL SQLITE
77b0: 5f 41 50 49 43 41 4c 4c 0a 23 65 6e 64 69 66 0a  _APICALL.#endif.
77c0: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 43  #ifndef SQLITE_C
77d0: 41 4c 4c 42 41 43 4b 0a 23 20 64 65 66 69 6e 65  ALLBACK.# define
77e0: 20 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b   SQLITE_CALLBACK
77f0: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
7800: 53 51 4c 49 54 45 5f 53 59 53 41 50 49 0a 23 20  SQLITE_SYSAPI.# 
7810: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 59  define SQLITE_SY
7820: 53 41 50 49 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a  SAPI.#endif../*.
7830: 2a 2a 20 54 68 65 73 65 20 6e 6f 2d 6f 70 20 6d  ** These no-op m
7840: 61 63 72 6f 73 20 61 72 65 20 75 73 65 64 20 69  acros are used i
7850: 6e 20 66 72 6f 6e 74 20 6f 66 20 69 6e 74 65 72  n front of inter
7860: 66 61 63 65 73 20 74 6f 20 6d 61 72 6b 20 74 68  faces to mark th
7870: 6f 73 65 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  ose.** interface
7880: 73 20 61 73 20 65 69 74 68 65 72 20 64 65 70 72  s as either depr
7890: 65 63 61 74 65 64 20 6f 72 20 65 78 70 65 72 69  ecated or experi
78a0: 6d 65 6e 74 61 6c 2e 20 20 4e 65 77 20 61 70 70  mental.  New app
78b0: 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 73 68 6f  lications.** sho
78c0: 75 6c 64 20 6e 6f 74 20 75 73 65 20 64 65 70 72  uld not use depr
78d0: 65 63 61 74 65 64 20 69 6e 74 65 72 66 61 63 65  ecated interface
78e0: 73 20 2d 20 74 68 65 79 20 61 72 65 20 73 75 70  s - they are sup
78f0: 70 6f 72 74 65 64 20 66 6f 72 20 62 61 63 6b 77  ported for backw
7900: 61 72 64 73 0a 2a 2a 20 63 6f 6d 70 61 74 69 62  ards.** compatib
7910: 69 6c 69 74 79 20 6f 6e 6c 79 2e 20 20 41 70 70  ility only.  App
7920: 6c 69 63 61 74 69 6f 6e 20 77 72 69 74 65 72 73  lication writers
7930: 20 73 68 6f 75 6c 64 20 62 65 20 61 77 61 72 65   should be aware
7940: 20 74 68 61 74 0a 2a 2a 20 65 78 70 65 72 69 6d   that.** experim
7950: 65 6e 74 61 6c 20 69 6e 74 65 72 66 61 63 65 73  ental interfaces
7960: 20 61 72 65 20 73 75 62 6a 65 63 74 20 74 6f 20   are subject to 
7970: 63 68 61 6e 67 65 20 69 6e 20 70 6f 69 6e 74 20  change in point 
7980: 72 65 6c 65 61 73 65 73 2e 0a 2a 2a 0a 2a 2a 20  releases..**.** 
7990: 54 68 65 73 65 20 6d 61 63 72 6f 73 20 75 73 65  These macros use
79a0: 64 20 74 6f 20 72 65 73 6f 6c 76 65 20 74 6f 20  d to resolve to 
79b0: 76 61 72 69 6f 75 73 20 6b 69 6e 64 73 20 6f 66  various kinds of
79c0: 20 63 6f 6d 70 69 6c 65 72 20 6d 61 67 69 63 20   compiler magic 
79d0: 74 68 61 74 0a 2a 2a 20 77 6f 75 6c 64 20 67 65  that.** would ge
79e0: 6e 65 72 61 74 65 20 77 61 72 6e 69 6e 67 20 6d  nerate warning m
79f0: 65 73 73 61 67 65 73 20 77 68 65 6e 20 74 68 65  essages when the
7a00: 79 20 77 65 72 65 20 75 73 65 64 2e 20 20 42 75  y were used.  Bu
7a10: 74 20 74 68 61 74 0a 2a 2a 20 63 6f 6d 70 69 6c  t that.** compil
7a20: 65 72 20 6d 61 67 69 63 20 65 6e 64 65 64 20 75  er magic ended u
7a30: 70 20 67 65 6e 65 72 61 74 69 6e 67 20 73 75 63  p generating suc
7a40: 68 20 61 20 66 6c 75 72 72 79 20 6f 66 20 62 75  h a flurry of bu
7a50: 67 20 72 65 70 6f 72 74 73 0a 2a 2a 20 74 68 61  g reports.** tha
7a60: 74 20 77 65 20 68 61 76 65 20 74 61 6b 65 6e 20  t we have taken 
7a70: 69 74 20 61 6c 6c 20 6f 75 74 20 61 6e 64 20 67  it all out and g
7a80: 6f 6e 65 20 62 61 63 6b 20 74 6f 20 75 73 69 6e  one back to usin
7a90: 67 20 73 69 6d 70 6c 65 0a 2a 2a 20 6e 6f 6f 70  g simple.** noop
7aa0: 20 6d 61 63 72 6f 73 2e 0a 2a 2f 0a 23 64 65 66   macros..*/.#def
7ab0: 69 6e 65 20 53 51 4c 49 54 45 5f 44 45 50 52 45  ine SQLITE_DEPRE
7ac0: 43 41 54 45 44 0a 23 64 65 66 69 6e 65 20 53 51  CATED.#define SQ
7ad0: 4c 49 54 45 5f 45 58 50 45 52 49 4d 45 4e 54 41  LITE_EXPERIMENTA
7ae0: 4c 0a 0a 2f 2a 0a 2a 2a 20 45 6e 73 75 72 65 20  L../*.** Ensure 
7af0: 74 68 65 73 65 20 73 79 6d 62 6f 6c 73 20 77 65  these symbols we
7b00: 72 65 20 6e 6f 74 20 64 65 66 69 6e 65 64 20 62  re not defined b
7b10: 79 20 73 6f 6d 65 20 70 72 65 76 69 6f 75 73 20  y some previous 
7b20: 68 65 61 64 65 72 20 66 69 6c 65 2e 0a 2a 2f 0a  header file..*/.
7b30: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 56 45  #ifdef SQLITE_VE
7b40: 52 53 49 4f 4e 0a 23 20 75 6e 64 65 66 20 53 51  RSION.# undef SQ
7b50: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 0a 23 65 6e  LITE_VERSION.#en
7b60: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
7b70: 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52  E_VERSION_NUMBER
7b80: 0a 23 20 75 6e 64 65 66 20 53 51 4c 49 54 45 5f  .# undef SQLITE_
7b90: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23  VERSION_NUMBER.#
7ba0: 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  endif../*.** CAP
7bb0: 49 33 52 45 46 3a 20 43 6f 6d 70 69 6c 65 2d 54  I3REF: Compile-T
7bc0: 69 6d 65 20 4c 69 62 72 61 72 79 20 56 65 72 73  ime Library Vers
7bd0: 69 6f 6e 20 4e 75 6d 62 65 72 73 0a 2a 2a 0a 2a  ion Numbers.**.*
7be0: 2a 20 5e 28 54 68 65 20 5b 53 51 4c 49 54 45 5f  * ^(The [SQLITE_
7bf0: 56 45 52 53 49 4f 4e 5d 20 43 20 70 72 65 70 72  VERSION] C prepr
7c00: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 6e  ocessor macro in
7c10: 20 74 68 65 20 73 71 6c 69 74 65 33 2e 68 20 68   the sqlite3.h h
7c20: 65 61 64 65 72 0a 2a 2a 20 65 76 61 6c 75 61 74  eader.** evaluat
7c30: 65 73 20 74 6f 20 61 20 73 74 72 69 6e 67 20 6c  es to a string l
7c40: 69 74 65 72 61 6c 20 74 68 61 74 20 69 73 20 74  iteral that is t
7c50: 68 65 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  he SQLite versio
7c60: 6e 20 69 6e 20 74 68 65 0a 2a 2a 20 66 6f 72 6d  n in the.** form
7c70: 61 74 20 22 58 2e 59 2e 5a 22 20 77 68 65 72 65  at "X.Y.Z" where
7c80: 20 58 20 69 73 20 74 68 65 20 6d 61 6a 6f 72 20   X is the major 
7c90: 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 28  version number (
7ca0: 61 6c 77 61 79 73 20 33 20 66 6f 72 0a 2a 2a 20  always 3 for.** 
7cb0: 53 51 4c 69 74 65 33 29 20 61 6e 64 20 59 20 69  SQLite3) and Y i
7cc0: 73 20 74 68 65 20 6d 69 6e 6f 72 20 76 65 72 73  s the minor vers
7cd0: 69 6f 6e 20 6e 75 6d 62 65 72 20 61 6e 64 20 5a  ion number and Z
7ce0: 20 69 73 20 74 68 65 20 72 65 6c 65 61 73 65 20   is the release 
7cf0: 6e 75 6d 62 65 72 2e 29 5e 0a 2a 2a 20 5e 28 54  number.)^.** ^(T
7d00: 68 65 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49  he [SQLITE_VERSI
7d10: 4f 4e 5f 4e 55 4d 42 45 52 5d 20 43 20 70 72 65  ON_NUMBER] C pre
7d20: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
7d30: 72 65 73 6f 6c 76 65 73 20 74 6f 20 61 6e 20 69  resolves to an i
7d40: 6e 74 65 67 65 72 0a 2a 2a 20 77 69 74 68 20 74  nteger.** with t
7d50: 68 65 20 76 61 6c 75 65 20 28 58 2a 31 30 30 30  he value (X*1000
7d60: 30 30 30 20 2b 20 59 2a 31 30 30 30 20 2b 20 5a  000 + Y*1000 + Z
7d70: 29 20 77 68 65 72 65 20 58 2c 20 59 2c 20 61 6e  ) where X, Y, an
7d80: 64 20 5a 20 61 72 65 20 74 68 65 20 73 61 6d 65  d Z are the same
7d90: 0a 2a 2a 20 6e 75 6d 62 65 72 73 20 75 73 65 64  .** numbers used
7da0: 20 69 6e 20 5b 53 51 4c 49 54 45 5f 56 45 52 53   in [SQLITE_VERS
7db0: 49 4f 4e 5d 2e 29 5e 0a 2a 2a 20 54 68 65 20 53  ION].)^.** The S
7dc0: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55  QLITE_VERSION_NU
7dd0: 4d 42 45 52 20 66 6f 72 20 61 6e 79 20 67 69 76  MBER for any giv
7de0: 65 6e 20 72 65 6c 65 61 73 65 20 6f 66 20 53 51  en release of SQ
7df0: 4c 69 74 65 20 77 69 6c 6c 20 61 6c 73 6f 0a 2a  Lite will also.*
7e00: 2a 20 62 65 20 6c 61 72 67 65 72 20 74 68 61 6e  * be larger than
7e10: 20 74 68 65 20 72 65 6c 65 61 73 65 20 66 72 6f   the release fro
7e20: 6d 20 77 68 69 63 68 20 69 74 20 69 73 20 64 65  m which it is de
7e30: 72 69 76 65 64 2e 20 20 45 69 74 68 65 72 20 59  rived.  Either Y
7e40: 20 77 69 6c 6c 0a 2a 2a 20 62 65 20 68 65 6c 64   will.** be held
7e50: 20 63 6f 6e 73 74 61 6e 74 20 61 6e 64 20 5a 20   constant and Z 
7e60: 77 69 6c 6c 20 62 65 20 69 6e 63 72 65 6d 65 6e  will be incremen
7e70: 74 65 64 20 6f 72 20 65 6c 73 65 20 59 20 77 69  ted or else Y wi
7e80: 6c 6c 20 62 65 20 69 6e 63 72 65 6d 65 6e 74 65  ll be incremente
7e90: 64 0a 2a 2a 20 61 6e 64 20 5a 20 77 69 6c 6c 20  d.** and Z will 
7ea0: 62 65 20 72 65 73 65 74 20 74 6f 20 7a 65 72 6f  be reset to zero
7eb0: 2e 0a 2a 2a 0a 2a 2a 20 53 69 6e 63 65 20 5b 76  ..**.** Since [v
7ec0: 65 72 73 69 6f 6e 20 33 2e 36 2e 31 38 5d 20 28  ersion 3.6.18] (
7ed0: 5b 64 61 74 65 6f 66 3a 33 2e 36 2e 31 38 5d 29  [dateof:3.6.18])
7ee0: 2c 20 0a 2a 2a 20 53 51 4c 69 74 65 20 73 6f 75  , .** SQLite sou
7ef0: 72 63 65 20 63 6f 64 65 20 68 61 73 20 62 65 65  rce code has bee
7f00: 6e 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 0a  n stored in the.
7f10: 2a 2a 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70  ** <a href="http
7f20: 3a 2f 2f 77 77 77 2e 66 6f 73 73 69 6c 2d 73 63  ://www.fossil-sc
7f30: 6d 2e 6f 72 67 2f 22 3e 46 6f 73 73 69 6c 20 63  m.org/">Fossil c
7f40: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6d 61 6e  onfiguration man
7f50: 61 67 65 6d 65 6e 74 0a 2a 2a 20 73 79 73 74 65  agement.** syste
7f60: 6d 3c 2f 61 3e 2e 20 20 5e 54 68 65 20 53 51 4c  m</a>.  ^The SQL
7f70: 49 54 45 5f 53 4f 55 52 43 45 5f 49 44 20 6d 61  ITE_SOURCE_ID ma
7f80: 63 72 6f 20 65 76 61 6c 75 61 74 65 73 20 74 6f  cro evaluates to
7f90: 0a 2a 2a 20 61 20 73 74 72 69 6e 67 20 77 68 69  .** a string whi
7fa0: 63 68 20 69 64 65 6e 74 69 66 69 65 73 20 61 20  ch identifies a 
7fb0: 70 61 72 74 69 63 75 6c 61 72 20 63 68 65 63 6b  particular check
7fc0: 2d 69 6e 20 6f 66 20 53 51 4c 69 74 65 0a 2a 2a  -in of SQLite.**
7fd0: 20 77 69 74 68 69 6e 20 69 74 73 20 63 6f 6e 66   within its conf
7fe0: 69 67 75 72 61 74 69 6f 6e 20 6d 61 6e 61 67 65  iguration manage
7ff0: 6d 65 6e 74 20 73 79 73 74 65 6d 2e 20 20 5e 54  ment system.  ^T
8000: 68 65 20 53 51 4c 49 54 45 5f 53 4f 55 52 43 45  he SQLITE_SOURCE
8010: 5f 49 44 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f  _ID.** string co
8020: 6e 74 61 69 6e 73 20 74 68 65 20 64 61 74 65 20  ntains the date 
8030: 61 6e 64 20 74 69 6d 65 20 6f 66 20 74 68 65 20  and time of the 
8040: 63 68 65 63 6b 2d 69 6e 20 28 55 54 43 29 20 61  check-in (UTC) a
8050: 6e 64 20 61 20 53 48 41 31 0a 2a 2a 20 6f 72 20  nd a SHA1.** or 
8060: 53 48 41 33 2d 32 35 36 20 68 61 73 68 20 6f 66  SHA3-256 hash of
8070: 20 74 68 65 20 65 6e 74 69 72 65 20 73 6f 75 72   the entire sour
8080: 63 65 20 74 72 65 65 2e 20 20 49 66 20 74 68 65  ce tree.  If the
8090: 20 73 6f 75 72 63 65 20 63 6f 64 65 20 68 61 73   source code has
80a0: 0a 2a 2a 20 62 65 65 6e 20 65 64 69 74 65 64 20  .** been edited 
80b0: 69 6e 20 61 6e 79 20 77 61 79 20 73 69 6e 63 65  in any way since
80c0: 20 69 74 20 77 61 73 20 6c 61 73 74 20 63 68 65   it was last che
80d0: 63 6b 65 64 20 69 6e 2c 20 74 68 65 6e 20 74 68  cked in, then th
80e0: 65 20 6c 61 73 74 0a 2a 2a 20 66 6f 75 72 20 68  e last.** four h
80f0: 65 78 61 64 65 63 69 6d 61 6c 20 64 69 67 69 74  exadecimal digit
8100: 73 20 6f 66 20 74 68 65 20 68 61 73 68 20 6d 61  s of the hash ma
8110: 79 20 62 65 20 6d 6f 64 69 66 69 65 64 2e 0a 2a  y be modified..*
8120: 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b  *.** See also: [
8130: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
8140: 6f 6e 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74  on()],.** [sqlit
8150: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75  e3_libversion_nu
8160: 6d 62 65 72 28 29 5d 2c 20 5b 73 71 6c 69 74 65  mber()], [sqlite
8170: 33 5f 73 6f 75 72 63 65 69 64 28 29 5d 2c 0a 2a  3_sourceid()],.*
8180: 2a 20 5b 73 71 6c 69 74 65 5f 76 65 72 73 69 6f  * [sqlite_versio
8190: 6e 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  n()] and [sqlite
81a0: 5f 73 6f 75 72 63 65 5f 69 64 28 29 5d 2e 0a 2a  _source_id()]..*
81b0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
81c0: 5f 56 45 52 53 49 4f 4e 20 20 20 20 20 20 20 20  _VERSION        
81d0: 22 33 2e 33 30 2e 30 22 0a 23 64 65 66 69 6e 65  "3.30.0".#define
81e0: 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f   SQLITE_VERSION_
81f0: 4e 55 4d 42 45 52 20 33 30 33 30 30 30 30 0a 23  NUMBER 3030000.#
8200: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 4f  define SQLITE_SO
8210: 55 52 43 45 5f 49 44 20 20 20 20 20 20 22 32 30  URCE_ID      "20
8220: 31 39 2d 31 30 2d 30 34 20 31 35 3a 30 33 3a 31  19-10-04 15:03:1
8230: 37 20 63 32 30 61 33 35 33 33 36 34 33 32 30 32  7 c20a3533643202
8240: 35 34 34 35 66 39 66 37 65 32 38 39 64 30 63 63  5445f9f7e289d0cc
8250: 33 65 34 30 30 33 66 62 31 37 66 34 35 61 34 63  3e4003fb17f45a4c
8260: 65 37 34 63 36 32 36 39 63 34 30 37 63 36 65 30  e74c6269c407c6e0
8270: 39 66 22 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  9f"../*.** CAPI3
8280: 52 45 46 3a 20 52 75 6e 2d 54 69 6d 65 20 4c 69  REF: Run-Time Li
8290: 62 72 61 72 79 20 56 65 72 73 69 6f 6e 20 4e 75  brary Version Nu
82a0: 6d 62 65 72 73 0a 2a 2a 20 4b 45 59 57 4f 52 44  mbers.** KEYWORD
82b0: 53 3a 20 73 71 6c 69 74 65 33 5f 76 65 72 73 69  S: sqlite3_versi
82c0: 6f 6e 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63  on sqlite3_sourc
82d0: 65 69 64 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  eid.**.** These 
82e0: 69 6e 74 65 72 66 61 63 65 73 20 70 72 6f 76 69  interfaces provi
82f0: 64 65 20 74 68 65 20 73 61 6d 65 20 69 6e 66 6f  de the same info
8300: 72 6d 61 74 69 6f 6e 20 61 73 20 74 68 65 20 5b  rmation as the [
8310: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d 2c  SQLITE_VERSION],
8320: 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 56 45 52 53  .** [SQLITE_VERS
8330: 49 4f 4e 5f 4e 55 4d 42 45 52 5d 2c 20 61 6e 64  ION_NUMBER], and
8340: 20 5b 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f   [SQLITE_SOURCE_
8350: 49 44 5d 20 43 20 70 72 65 70 72 6f 63 65 73 73  ID] C preprocess
8360: 6f 72 20 6d 61 63 72 6f 73 0a 2a 2a 20 62 75 74  or macros.** but
8370: 20 61 72 65 20 61 73 73 6f 63 69 61 74 65 64 20   are associated 
8380: 77 69 74 68 20 74 68 65 20 6c 69 62 72 61 72 79  with the library
8390: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
83a0: 68 65 61 64 65 72 20 66 69 6c 65 2e 20 20 5e 28  header file.  ^(
83b0: 43 61 75 74 69 6f 75 73 0a 2a 2a 20 70 72 6f 67  Cautious.** prog
83c0: 72 61 6d 6d 65 72 73 20 6d 69 67 68 74 20 69 6e  rammers might in
83d0: 63 6c 75 64 65 20 61 73 73 65 72 74 28 29 20 73  clude assert() s
83e0: 74 61 74 65 6d 65 6e 74 73 20 69 6e 20 74 68 65  tatements in the
83f0: 69 72 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 74  ir application t
8400: 6f 0a 2a 2a 20 76 65 72 69 66 79 20 74 68 61 74  o.** verify that
8410: 20 76 61 6c 75 65 73 20 72 65 74 75 72 6e 65 64   values returned
8420: 20 62 79 20 74 68 65 73 65 20 69 6e 74 65 72 66   by these interf
8430: 61 63 65 73 20 6d 61 74 63 68 20 74 68 65 20 6d  aces match the m
8440: 61 63 72 6f 73 20 69 6e 0a 2a 2a 20 74 68 65 20  acros in.** the 
8450: 68 65 61 64 65 72 2c 20 61 6e 64 20 74 68 75 73  header, and thus
8460: 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65   ensure that the
8470: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a   application is.
8480: 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  ** compiled with
8490: 20 6d 61 74 63 68 69 6e 67 20 6c 69 62 72 61 72   matching librar
84a0: 79 20 61 6e 64 20 68 65 61 64 65 72 20 66 69 6c  y and header fil
84b0: 65 73 2e 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b  es..**.** <block
84c0: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 61  quote><pre>.** a
84d0: 73 73 65 72 74 28 20 73 71 6c 69 74 65 33 5f 6c  ssert( sqlite3_l
84e0: 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72  ibversion_number
84f0: 28 29 3d 3d 53 51 4c 49 54 45 5f 56 45 52 53 49  ()==SQLITE_VERSI
8500: 4f 4e 5f 4e 55 4d 42 45 52 20 29 3b 0a 2a 2a 20  ON_NUMBER );.** 
8510: 61 73 73 65 72 74 28 20 73 74 72 6e 63 6d 70 28  assert( strncmp(
8520: 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64  sqlite3_sourceid
8530: 28 29 2c 53 51 4c 49 54 45 5f 53 4f 55 52 43 45  (),SQLITE_SOURCE
8540: 5f 49 44 2c 38 30 29 3d 3d 30 20 29 3b 0a 2a 2a  _ID,80)==0 );.**
8550: 20 61 73 73 65 72 74 28 20 73 74 72 63 6d 70 28   assert( strcmp(
8560: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
8570: 6f 6e 28 29 2c 53 51 4c 49 54 45 5f 56 45 52 53  on(),SQLITE_VERS
8580: 49 4f 4e 29 3d 3d 30 20 29 3b 0a 2a 2a 20 3c 2f  ION)==0 );.** </
8590: 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  pre></blockquote
85a0: 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  >)^.**.** ^The s
85b0: 71 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d  qlite3_version[]
85c0: 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74   string constant
85d0: 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 74 65   contains the te
85e0: 78 74 20 6f 66 20 5b 53 51 4c 49 54 45 5f 56 45  xt of [SQLITE_VE
85f0: 52 53 49 4f 4e 5d 0a 2a 2a 20 6d 61 63 72 6f 2e  RSION].** macro.
8600: 20 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 6c    ^The sqlite3_l
8610: 69 62 76 65 72 73 69 6f 6e 28 29 20 66 75 6e 63  ibversion() func
8620: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 70  tion returns a p
8630: 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0a 2a 2a  ointer to the.**
8640: 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
8650: 76 65 72 73 69 6f 6e 5b 5d 20 73 74 72 69 6e 67  version[] string
8660: 20 63 6f 6e 73 74 61 6e 74 2e 20 20 54 68 65 20   constant.  The 
8670: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
8680: 6f 6e 28 29 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e  on().** function
8690: 20 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72   is provided for
86a0: 20 75 73 65 20 69 6e 20 44 4c 4c 73 20 73 69 6e   use in DLLs sin
86b0: 63 65 20 44 4c 4c 20 75 73 65 72 73 20 75 73 75  ce DLL users usu
86c0: 61 6c 6c 79 20 64 6f 20 6e 6f 74 20 68 61 76 65  ally do not have
86d0: 0a 2a 2a 20 64 69 72 65 63 74 20 61 63 63 65 73  .** direct acces
86e0: 73 20 74 6f 20 73 74 72 69 6e 67 20 63 6f 6e 73  s to string cons
86f0: 74 61 6e 74 73 20 77 69 74 68 69 6e 20 74 68 65  tants within the
8700: 20 44 4c 4c 2e 20 20 5e 54 68 65 0a 2a 2a 20 73   DLL.  ^The.** s
8710: 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f  qlite3_libversio
8720: 6e 5f 6e 75 6d 62 65 72 28 29 20 66 75 6e 63 74  n_number() funct
8730: 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 6e 20 69  ion returns an i
8740: 6e 74 65 67 65 72 20 65 71 75 61 6c 20 74 6f 0a  nteger equal to.
8750: 2a 2a 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49  ** [SQLITE_VERSI
8760: 4f 4e 5f 4e 55 4d 42 45 52 5d 2e 20 20 5e 28 54  ON_NUMBER].  ^(T
8770: 68 65 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63  he sqlite3_sourc
8780: 65 69 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  eid() function r
8790: 65 74 75 72 6e 73 20 0a 2a 2a 20 61 20 70 6f 69  eturns .** a poi
87a0: 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69 6e 67  nter to a string
87b0: 20 63 6f 6e 73 74 61 6e 74 20 77 68 6f 73 65 20   constant whose 
87c0: 76 61 6c 75 65 20 69 73 20 74 68 65 20 73 61 6d  value is the sam
87d0: 65 20 61 73 20 74 68 65 20 0a 2a 2a 20 5b 53 51  e as the .** [SQ
87e0: 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44 5d 20  LITE_SOURCE_ID] 
87f0: 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C preprocessor m
8800: 61 63 72 6f 2e 20 20 45 78 63 65 70 74 20 69 66  acro.  Except if
8810: 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74   SQLite is built
8820: 0a 2a 2a 20 75 73 69 6e 67 20 61 6e 20 65 64 69  .** using an edi
8830: 74 65 64 20 63 6f 70 79 20 6f 66 20 5b 74 68 65  ted copy of [the
8840: 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20   amalgamation], 
8850: 74 68 65 6e 20 74 68 65 20 6c 61 73 74 20 66 6f  then the last fo
8860: 75 72 20 63 68 61 72 61 63 74 65 72 73 0a 2a 2a  ur characters.**
8870: 20 6f 66 20 74 68 65 20 68 61 73 68 20 6d 69 67   of the hash mig
8880: 68 74 20 62 65 20 64 69 66 66 65 72 65 6e 74 20  ht be different 
8890: 66 72 6f 6d 20 5b 53 51 4c 49 54 45 5f 53 4f 55  from [SQLITE_SOU
88a0: 52 43 45 5f 49 44 5d 2e 29 5e 0a 2a 2a 0a 2a 2a  RCE_ID].)^.**.**
88b0: 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71 6c 69   See also: [sqli
88c0: 74 65 5f 76 65 72 73 69 6f 6e 28 29 5d 20 61 6e  te_version()] an
88d0: 64 20 5b 73 71 6c 69 74 65 5f 73 6f 75 72 63 65  d [sqlite_source
88e0: 5f 69 64 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54  _id()]..*/.SQLIT
88f0: 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72  E_API const char
8900: 20 73 71 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e   sqlite3_version
8910: 5b 5d 20 3d 20 53 51 4c 49 54 45 5f 56 45 52 53  [] = SQLITE_VERS
8920: 49 4f 4e 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  ION;.SQLITE_API 
8930: 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69  const char *sqli
8940: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 76  te3_libversion(v
8950: 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  oid);.SQLITE_API
8960: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c   const char *sql
8970: 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 76 6f  ite3_sourceid(vo
8980: 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  id);.SQLITE_API 
8990: 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  int sqlite3_libv
89a0: 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 76 6f  ersion_number(vo
89b0: 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  id);../*.** CAPI
89c0: 33 52 45 46 3a 20 52 75 6e 2d 54 69 6d 65 20 4c  3REF: Run-Time L
89d0: 69 62 72 61 72 79 20 43 6f 6d 70 69 6c 61 74 69  ibrary Compilati
89e0: 6f 6e 20 4f 70 74 69 6f 6e 73 20 44 69 61 67 6e  on Options Diagn
89f0: 6f 73 74 69 63 73 0a 2a 2a 0a 2a 2a 20 5e 54 68  ostics.**.** ^Th
8a00: 65 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c  e sqlite3_compil
8a10: 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 20 66  eoption_used() f
8a20: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
8a30: 30 20 6f 72 20 31 20 0a 2a 2a 20 69 6e 64 69 63  0 or 1 .** indic
8a40: 61 74 69 6e 67 20 77 68 65 74 68 65 72 20 74 68  ating whether th
8a50: 65 20 73 70 65 63 69 66 69 65 64 20 6f 70 74 69  e specified opti
8a60: 6f 6e 20 77 61 73 20 64 65 66 69 6e 65 64 20 61  on was defined a
8a70: 74 20 0a 2a 2a 20 63 6f 6d 70 69 6c 65 20 74 69  t .** compile ti
8a80: 6d 65 2e 20 20 5e 54 68 65 20 53 51 4c 49 54 45  me.  ^The SQLITE
8a90: 5f 20 70 72 65 66 69 78 20 6d 61 79 20 62 65 20  _ prefix may be 
8aa0: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65  omitted from the
8ab0: 20 0a 2a 2a 20 6f 70 74 69 6f 6e 20 6e 61 6d 65   .** option name
8ac0: 20 70 61 73 73 65 64 20 74 6f 20 73 71 6c 69 74   passed to sqlit
8ad0: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
8ae0: 5f 75 73 65 64 28 29 2e 20 20 0a 2a 2a 0a 2a 2a  _used().  .**.**
8af0: 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6f   ^The sqlite3_co
8b00: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
8b10: 29 20 66 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 77  ) function allow
8b20: 73 20 69 74 65 72 61 74 69 6e 67 0a 2a 2a 20 6f  s iterating.** o
8b30: 76 65 72 20 74 68 65 20 6c 69 73 74 20 6f 66 20  ver the list of 
8b40: 6f 70 74 69 6f 6e 73 20 74 68 61 74 20 77 65 72  options that wer
8b50: 65 20 64 65 66 69 6e 65 64 20 61 74 20 63 6f 6d  e defined at com
8b60: 70 69 6c 65 20 74 69 6d 65 20 62 79 0a 2a 2a 20  pile time by.** 
8b70: 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20 4e 2d  returning the N-
8b80: 74 68 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20  th compile time 
8b90: 6f 70 74 69 6f 6e 20 73 74 72 69 6e 67 2e 20 20  option string.  
8ba0: 5e 49 66 20 4e 20 69 73 20 6f 75 74 20 6f 66 20  ^If N is out of 
8bb0: 72 61 6e 67 65 2c 0a 2a 2a 20 73 71 6c 69 74 65  range,.** sqlite
8bc0: 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
8bd0: 67 65 74 28 29 20 72 65 74 75 72 6e 73 20 61 20  get() returns a 
8be0: 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e  NULL pointer.  ^
8bf0: 54 68 65 20 53 51 4c 49 54 45 5f 20 0a 2a 2a 20  The SQLITE_ .** 
8c00: 70 72 65 66 69 78 20 69 73 20 6f 6d 69 74 74 65  prefix is omitte
8c10: 64 20 66 72 6f 6d 20 61 6e 79 20 73 74 72 69 6e  d from any strin
8c20: 67 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 0a  gs returned by .
8c30: 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69  ** sqlite3_compi
8c40: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 2e 0a  leoption_get()..
8c50: 2a 2a 0a 2a 2a 20 5e 53 75 70 70 6f 72 74 20 66  **.** ^Support f
8c60: 6f 72 20 74 68 65 20 64 69 61 67 6e 6f 73 74 69  or the diagnosti
8c70: 63 20 66 75 6e 63 74 69 6f 6e 73 20 73 71 6c 69  c functions sqli
8c80: 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
8c90: 6e 5f 75 73 65 64 28 29 0a 2a 2a 20 61 6e 64 20  n_used().** and 
8ca0: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
8cb0: 70 74 69 6f 6e 5f 67 65 74 28 29 20 6d 61 79 20  ption_get() may 
8cc0: 62 65 20 6f 6d 69 74 74 65 64 20 62 79 20 73 70  be omitted by sp
8cd0: 65 63 69 66 79 69 6e 67 20 74 68 65 20 0a 2a 2a  ecifying the .**
8ce0: 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f   [SQLITE_OMIT_CO
8cf0: 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47  MPILEOPTION_DIAG
8d00: 53 5d 20 6f 70 74 69 6f 6e 20 61 74 20 63 6f 6d  S] option at com
8d10: 70 69 6c 65 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a  pile time..**.**
8d20: 20 53 65 65 20 61 6c 73 6f 3a 20 53 51 4c 20 66   See also: SQL f
8d30: 75 6e 63 74 69 6f 6e 73 20 5b 73 71 6c 69 74 65  unctions [sqlite
8d40: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
8d50: 73 65 64 28 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73  sed()] and.** [s
8d60: 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74  qlite_compileopt
8d70: 69 6f 6e 5f 67 65 74 28 29 5d 20 61 6e 64 20 74  ion_get()] and t
8d80: 68 65 20 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69  he [compile_opti
8d90: 6f 6e 73 20 70 72 61 67 6d 61 5d 2e 0a 2a 2f 0a  ons pragma]..*/.
8da0: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 4f  #ifndef SQLITE_O
8db0: 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f  MIT_COMPILEOPTIO
8dc0: 4e 5f 44 49 41 47 53 0a 53 51 4c 49 54 45 5f 41  N_DIAGS.SQLITE_A
8dd0: 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  PI int sqlite3_c
8de0: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
8df0: 64 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4f  d(const char *zO
8e00: 70 74 4e 61 6d 65 29 3b 0a 53 51 4c 49 54 45 5f  ptName);.SQLITE_
8e10: 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  API const char *
8e20: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
8e30: 70 74 69 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29  ption_get(int N)
8e40: 3b 0a 23 65 6c 73 65 0a 23 20 64 65 66 69 6e 65  ;.#else.# define
8e50: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
8e60: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 58 29 20 30  option_used(X) 0
8e70: 0a 23 20 64 65 66 69 6e 65 20 73 71 6c 69 74 65  .# define sqlite
8e80: 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f  3_compileoption_
8e90: 67 65 74 28 58 29 20 20 28 28 76 6f 69 64 2a 29  get(X)  ((void*)
8ea0: 30 29 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a  0).#endif../*.**
8eb0: 20 43 41 50 49 33 52 45 46 3a 20 54 65 73 74 20   CAPI3REF: Test 
8ec0: 54 6f 20 53 65 65 20 49 66 20 54 68 65 20 4c 69  To See If The Li
8ed0: 62 72 61 72 79 20 49 73 20 54 68 72 65 61 64 73  brary Is Threads
8ee0: 61 66 65 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  afe.**.** ^The s
8ef0: 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61 66  qlite3_threadsaf
8f00: 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  e() function ret
8f10: 75 72 6e 73 20 7a 65 72 6f 20 69 66 20 61 6e 64  urns zero if and
8f20: 20 6f 6e 6c 79 20 69 66 0a 2a 2a 20 53 51 4c 69   only if.** SQLi
8f30: 74 65 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20  te was compiled 
8f40: 77 69 74 68 20 6d 75 74 65 78 69 6e 67 20 63 6f  with mutexing co
8f50: 64 65 20 6f 6d 69 74 74 65 64 20 64 75 65 20 74  de omitted due t
8f60: 6f 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45  o the.** [SQLITE
8f70: 5f 54 48 52 45 41 44 53 41 46 45 5d 20 63 6f 6d  _THREADSAFE] com
8f80: 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
8f90: 20 62 65 69 6e 67 20 73 65 74 20 74 6f 20 30 2e   being set to 0.
8fa0: 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 63 61  .**.** SQLite ca
8fb0: 6e 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 77 69  n be compiled wi
8fc0: 74 68 20 6f 72 20 77 69 74 68 6f 75 74 20 6d 75  th or without mu
8fd0: 74 65 78 65 73 2e 20 20 57 68 65 6e 0a 2a 2a 20  texes.  When.** 
8fe0: 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45  the [SQLITE_THRE
8ff0: 41 44 53 41 46 45 5d 20 43 20 70 72 65 70 72 6f  ADSAFE] C prepro
9000: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 69 73 20  cessor macro is 
9010: 31 20 6f 72 20 32 2c 20 6d 75 74 65 78 65 73 0a  1 or 2, mutexes.
9020: 2a 2a 20 61 72 65 20 65 6e 61 62 6c 65 64 20 61  ** are enabled a
9030: 6e 64 20 53 51 4c 69 74 65 20 69 73 20 74 68 72  nd SQLite is thr
9040: 65 61 64 73 61 66 65 2e 20 20 57 68 65 6e 20 74  eadsafe.  When t
9050: 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 54 48  he.** [SQLITE_TH
9060: 52 45 41 44 53 41 46 45 5d 20 6d 61 63 72 6f 20  READSAFE] macro 
9070: 69 73 20 30 2c 20 0a 2a 2a 20 74 68 65 20 6d 75  is 0, .** the mu
9080: 74 65 78 65 73 20 61 72 65 20 6f 6d 69 74 74 65  texes are omitte
9090: 64 2e 20 20 57 69 74 68 6f 75 74 20 74 68 65 20  d.  Without the 
90a0: 6d 75 74 65 78 65 73 2c 20 69 74 20 69 73 20 6e  mutexes, it is n
90b0: 6f 74 20 73 61 66 65 0a 2a 2a 20 74 6f 20 75 73  ot safe.** to us
90c0: 65 20 53 51 4c 69 74 65 20 63 6f 6e 63 75 72 72  e SQLite concurr
90d0: 65 6e 74 6c 79 20 66 72 6f 6d 20 6d 6f 72 65 20  ently from more 
90e0: 74 68 61 6e 20 6f 6e 65 20 74 68 72 65 61 64 2e  than one thread.
90f0: 0a 2a 2a 0a 2a 2a 20 45 6e 61 62 6c 69 6e 67 20  .**.** Enabling 
9100: 6d 75 74 65 78 65 73 20 69 6e 63 75 72 73 20 61  mutexes incurs a
9110: 20 6d 65 61 73 75 72 61 62 6c 65 20 70 65 72 66   measurable perf
9120: 6f 72 6d 61 6e 63 65 20 70 65 6e 61 6c 74 79 2e  ormance penalty.
9130: 0a 2a 2a 20 53 6f 20 69 66 20 73 70 65 65 64 20  .** So if speed 
9140: 69 73 20 6f 66 20 75 74 6d 6f 73 74 20 69 6d 70  is of utmost imp
9150: 6f 72 74 61 6e 63 65 2c 20 69 74 20 6d 61 6b 65  ortance, it make
9160: 73 20 73 65 6e 73 65 20 74 6f 20 64 69 73 61 62  s sense to disab
9170: 6c 65 0a 2a 2a 20 74 68 65 20 6d 75 74 65 78 65  le.** the mutexe
9180: 73 2e 20 20 42 75 74 20 66 6f 72 20 6d 61 78 69  s.  But for maxi
9190: 6d 75 6d 20 73 61 66 65 74 79 2c 20 6d 75 74 65  mum safety, mute
91a0: 78 65 73 20 73 68 6f 75 6c 64 20 62 65 20 65 6e  xes should be en
91b0: 61 62 6c 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 64  abled..** ^The d
91c0: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
91d0: 69 73 20 66 6f 72 20 6d 75 74 65 78 65 73 20 74  is for mutexes t
91e0: 6f 20 62 65 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a  o be enabled..**
91f0: 0a 2a 2a 20 54 68 69 73 20 69 6e 74 65 72 66 61  .** This interfa
9200: 63 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 62  ce can be used b
9210: 79 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  y an application
9220: 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68   to make sure th
9230: 61 74 20 74 68 65 0a 2a 2a 20 76 65 72 73 69 6f  at the.** versio
9240: 6e 20 6f 66 20 53 51 4c 69 74 65 20 74 68 61 74  n of SQLite that
9250: 20 69 74 20 69 73 20 6c 69 6e 6b 69 6e 67 20 61   it is linking a
9260: 67 61 69 6e 73 74 20 77 61 73 20 63 6f 6d 70 69  gainst was compi
9270: 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20  led with.** the 
9280: 64 65 73 69 72 65 64 20 73 65 74 74 69 6e 67 20  desired setting 
9290: 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54  of the [SQLITE_T
92a0: 48 52 45 41 44 53 41 46 45 5d 20 6d 61 63 72 6f  HREADSAFE] macro
92b0: 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 6e 74  ..**.** This int
92c0: 65 72 66 61 63 65 20 6f 6e 6c 79 20 72 65 70 6f  erface only repo
92d0: 72 74 73 20 6f 6e 20 74 68 65 20 63 6f 6d 70 69  rts on the compi
92e0: 6c 65 2d 74 69 6d 65 20 6d 75 74 65 78 20 73 65  le-time mutex se
92f0: 74 74 69 6e 67 0a 2a 2a 20 6f 66 20 74 68 65 20  tting.** of the 
9300: 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41  [SQLITE_THREADSA
9310: 46 45 5d 20 66 6c 61 67 2e 20 20 49 66 20 53 51  FE] flag.  If SQ
9320: 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  Lite is compiled
9330: 20 77 69 74 68 0a 2a 2a 20 53 51 4c 49 54 45 5f   with.** SQLITE_
9340: 54 48 52 45 41 44 53 41 46 45 3d 31 20 6f 72 20  THREADSAFE=1 or 
9350: 3d 32 20 74 68 65 6e 20 6d 75 74 65 78 65 73 20  =2 then mutexes 
9360: 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20 64  are enabled by d
9370: 65 66 61 75 6c 74 20 62 75 74 0a 2a 2a 20 63 61  efault but.** ca
9380: 6e 20 62 65 20 66 75 6c 6c 79 20 6f 72 20 70 61  n be fully or pa
9390: 72 74 69 61 6c 6c 79 20 64 69 73 61 62 6c 65 64  rtially disabled
93a0: 20 75 73 69 6e 67 20 61 20 63 61 6c 6c 20 74 6f   using a call to
93b0: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
93c0: 28 29 5d 0a 2a 2a 20 77 69 74 68 20 74 68 65 20  ()].** with the 
93d0: 76 65 72 62 73 20 5b 53 51 4c 49 54 45 5f 43 4f  verbs [SQLITE_CO
93e0: 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41  NFIG_SINGLETHREA
93f0: 44 5d 2c 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  D], [SQLITE_CONF
9400: 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 2c  IG_MULTITHREAD],
9410: 0a 2a 2a 20 6f 72 20 5b 53 51 4c 49 54 45 5f 43  .** or [SQLITE_C
9420: 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44  ONFIG_SERIALIZED
9430: 5d 2e 20 20 5e 28 54 68 65 20 72 65 74 75 72 6e  ].  ^(The return
9440: 20 76 61 6c 75 65 20 6f 66 20 74 68 65 0a 2a 2a   value of the.**
9450: 20 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73   sqlite3_threads
9460: 61 66 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 73  afe() function s
9470: 68 6f 77 73 20 6f 6e 6c 79 20 74 68 65 20 63 6f  hows only the co
9480: 6d 70 69 6c 65 2d 74 69 6d 65 20 73 65 74 74 69  mpile-time setti
9490: 6e 67 20 6f 66 0a 2a 2a 20 74 68 72 65 61 64 20  ng of.** thread 
94a0: 73 61 66 65 74 79 2c 20 6e 6f 74 20 61 6e 79 20  safety, not any 
94b0: 72 75 6e 2d 74 69 6d 65 20 63 68 61 6e 67 65 73  run-time changes
94c0: 20 74 6f 20 74 68 61 74 20 73 65 74 74 69 6e 67   to that setting
94d0: 20 6d 61 64 65 20 62 79 0a 2a 2a 20 73 71 6c 69   made by.** sqli
94e0: 74 65 33 5f 63 6f 6e 66 69 67 28 29 2e 20 49 6e  te3_config(). In
94f0: 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68   other words, th
9500: 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 66  e return value f
9510: 72 6f 6d 20 73 71 6c 69 74 65 33 5f 74 68 72 65  rom sqlite3_thre
9520: 61 64 73 61 66 65 28 29 0a 2a 2a 20 69 73 20 75  adsafe().** is u
9530: 6e 63 68 61 6e 67 65 64 20 62 79 20 63 61 6c 6c  nchanged by call
9540: 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 63 6f 6e  s to sqlite3_con
9550: 66 69 67 28 29 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53  fig().)^.**.** S
9560: 65 65 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e  ee the [threadin
9570: 67 20 6d 6f 64 65 5d 20 64 6f 63 75 6d 65 6e 74  g mode] document
9580: 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69 74 69  ation for additi
9590: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
95a0: 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
95b0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 68 72 65  int sqlite3_thre
95c0: 61 64 73 61 66 65 28 76 6f 69 64 29 3b 0a 0a 2f  adsafe(void);../
95d0: 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44  *.** CAPI3REF: D
95e0: 61 74 61 62 61 73 65 20 43 6f 6e 6e 65 63 74 69  atabase Connecti
95f0: 6f 6e 20 48 61 6e 64 6c 65 0a 2a 2a 20 4b 45 59  on Handle.** KEY
9600: 57 4f 52 44 53 3a 20 7b 64 61 74 61 62 61 73 65  WORDS: {database
9610: 20 63 6f 6e 6e 65 63 74 69 6f 6e 7d 20 7b 64 61   connection} {da
9620: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
9630: 6e 73 7d 0a 2a 2a 0a 2a 2a 20 45 61 63 68 20 6f  ns}.**.** Each o
9640: 70 65 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62  pen SQLite datab
9650: 61 73 65 20 69 73 20 72 65 70 72 65 73 65 6e 74  ase is represent
9660: 65 64 20 62 79 20 61 20 70 6f 69 6e 74 65 72 20  ed by a pointer 
9670: 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  to an instance o
9680: 66 0a 2a 2a 20 74 68 65 20 6f 70 61 71 75 65 20  f.** the opaque 
9690: 73 74 72 75 63 74 75 72 65 20 6e 61 6d 65 64 20  structure named 
96a0: 22 73 71 6c 69 74 65 33 22 2e 20 20 49 74 20 69  "sqlite3".  It i
96b0: 73 20 75 73 65 66 75 6c 20 74 6f 20 74 68 69 6e  s useful to thin
96c0: 6b 20 6f 66 20 61 6e 20 73 71 6c 69 74 65 33 0a  k of an sqlite3.
96d0: 2a 2a 20 70 6f 69 6e 74 65 72 20 61 73 20 61 6e  ** pointer as an
96e0: 20 6f 62 6a 65 63 74 2e 20 20 54 68 65 20 5b 73   object.  The [s
96f0: 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20  qlite3_open()], 
9700: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28  [sqlite3_open16(
9710: 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69  )], and.** [sqli
9720: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 69  te3_open_v2()] i
9730: 6e 74 65 72 66 61 63 65 73 20 61 72 65 20 69 74  nterfaces are it
9740: 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 73 2c 20  s constructors, 
9750: 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f  and [sqlite3_clo
9760: 73 65 28 29 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71  se()].** and [sq
9770: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29  lite3_close_v2()
9780: 5d 20 61 72 65 20 69 74 73 20 64 65 73 74 72 75  ] are its destru
9790: 63 74 6f 72 73 2e 20 20 54 68 65 72 65 20 61 72  ctors.  There ar
97a0: 65 20 6d 61 6e 79 20 6f 74 68 65 72 0a 2a 2a 20  e many other.** 
97b0: 69 6e 74 65 72 66 61 63 65 73 20 28 73 75 63 68  interfaces (such
97c0: 20 61 73 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   as.** [sqlite3_
97d0: 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c 20 5b  prepare_v2()], [
97e0: 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f 66  sqlite3_create_f
97f0: 75 6e 63 74 69 6f 6e 28 29 5d 2c 20 61 6e 64 0a  unction()], and.
9800: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79  ** [sqlite3_busy
9810: 5f 74 69 6d 65 6f 75 74 28 29 5d 20 74 6f 20 6e  _timeout()] to n
9820: 61 6d 65 20 62 75 74 20 74 68 72 65 65 29 20 74  ame but three) t
9830: 68 61 74 20 61 72 65 20 6d 65 74 68 6f 64 73 20  hat are methods 
9840: 6f 6e 20 61 6e 0a 2a 2a 20 73 71 6c 69 74 65 33  on an.** sqlite3
9850: 20 6f 62 6a 65 63 74 2e 0a 2a 2f 0a 74 79 70 65   object..*/.type
9860: 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
9870: 65 33 20 73 71 6c 69 74 65 33 3b 0a 0a 2f 2a 0a  e3 sqlite3;../*.
9880: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 36 34 2d  ** CAPI3REF: 64-
9890: 42 69 74 20 49 6e 74 65 67 65 72 20 54 79 70 65  Bit Integer Type
98a0: 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 73  s.** KEYWORDS: s
98b0: 71 6c 69 74 65 5f 69 6e 74 36 34 20 73 71 6c 69  qlite_int64 sqli
98c0: 74 65 5f 75 69 6e 74 36 34 0a 2a 2a 0a 2a 2a 20  te_uint64.**.** 
98d0: 42 65 63 61 75 73 65 20 74 68 65 72 65 20 69 73  Because there is
98e0: 20 6e 6f 20 63 72 6f 73 73 2d 70 6c 61 74 66 6f   no cross-platfo
98f0: 72 6d 20 77 61 79 20 74 6f 20 73 70 65 63 69 66  rm way to specif
9900: 79 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72  y 64-bit integer
9910: 20 74 79 70 65 73 0a 2a 2a 20 53 51 4c 69 74 65   types.** SQLite
9920: 20 69 6e 63 6c 75 64 65 73 20 74 79 70 65 64 65   includes typede
9930: 66 73 20 66 6f 72 20 36 34 2d 62 69 74 20 73 69  fs for 64-bit si
9940: 67 6e 65 64 20 61 6e 64 20 75 6e 73 69 67 6e 65  gned and unsigne
9950: 64 20 69 6e 74 65 67 65 72 73 2e 0a 2a 2a 0a 2a  d integers..**.*
9960: 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e  * The sqlite3_in
9970: 74 36 34 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  t64 and sqlite3_
9980: 75 69 6e 74 36 34 20 61 72 65 20 74 68 65 20 70  uint64 are the p
9990: 72 65 66 65 72 72 65 64 20 74 79 70 65 20 64 65  referred type de
99a0: 66 69 6e 69 74 69 6f 6e 73 2e 0a 2a 2a 20 54 68  finitions..** Th
99b0: 65 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 20 61  e sqlite_int64 a
99c0: 6e 64 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34  nd sqlite_uint64
99d0: 20 74 79 70 65 73 20 61 72 65 20 73 75 70 70 6f   types are suppo
99e0: 72 74 65 64 20 66 6f 72 20 62 61 63 6b 77 61 72  rted for backwar
99f0: 64 73 0a 2a 2a 20 63 6f 6d 70 61 74 69 62 69 6c  ds.** compatibil
9a00: 69 74 79 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20  ity only..**.** 
9a10: 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74  ^The sqlite3_int
9a20: 36 34 20 61 6e 64 20 73 71 6c 69 74 65 5f 69 6e  64 and sqlite_in
9a30: 74 36 34 20 74 79 70 65 73 20 63 61 6e 20 73 74  t64 types can st
9a40: 6f 72 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75  ore integer valu
9a50: 65 73 0a 2a 2a 20 62 65 74 77 65 65 6e 20 2d 39  es.** between -9
9a60: 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35 38  2233720368547758
9a70: 30 38 20 61 6e 64 20 2b 39 32 32 33 33 37 32 30  08 and +92233720
9a80: 33 36 38 35 34 37 37 35 38 30 37 20 69 6e 63 6c  36854775807 incl
9a90: 75 73 69 76 65 2e 20 20 5e 54 68 65 0a 2a 2a 20  usive.  ^The.** 
9aa0: 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 20 61  sqlite3_uint64 a
9ab0: 6e 64 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34  nd sqlite_uint64
9ac0: 20 74 79 70 65 73 20 63 61 6e 20 73 74 6f 72 65   types can store
9ad0: 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 20   integer values 
9ae0: 0a 2a 2a 20 62 65 74 77 65 65 6e 20 30 20 61 6e  .** between 0 an
9af0: 64 20 2b 31 38 34 34 36 37 34 34 30 37 33 37 30  d +1844674407370
9b00: 39 35 35 31 36 31 35 20 69 6e 63 6c 75 73 69 76  9551615 inclusiv
9b10: 65 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c  e..*/.#ifdef SQL
9b20: 49 54 45 5f 49 4e 54 36 34 5f 54 59 50 45 0a 20  ITE_INT64_TYPE. 
9b30: 20 74 79 70 65 64 65 66 20 53 51 4c 49 54 45 5f   typedef SQLITE_
9b40: 49 4e 54 36 34 5f 54 59 50 45 20 73 71 6c 69 74  INT64_TYPE sqlit
9b50: 65 5f 69 6e 74 36 34 3b 0a 23 20 69 66 64 65 66  e_int64;.# ifdef
9b60: 20 53 51 4c 49 54 45 5f 55 49 4e 54 36 34 5f 54   SQLITE_UINT64_T
9b70: 59 50 45 0a 20 20 20 20 74 79 70 65 64 65 66 20  YPE.    typedef 
9b80: 53 51 4c 49 54 45 5f 55 49 4e 54 36 34 5f 54 59  SQLITE_UINT64_TY
9b90: 50 45 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34  PE sqlite_uint64
9ba0: 3b 0a 23 20 65 6c 73 65 20 20 0a 20 20 20 20 74  ;.# else  .    t
9bb0: 79 70 65 64 65 66 20 75 6e 73 69 67 6e 65 64 20  ypedef unsigned 
9bc0: 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59 50  SQLITE_INT64_TYP
9bd0: 45 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b  E sqlite_uint64;
9be0: 0a 23 20 65 6e 64 69 66 0a 23 65 6c 69 66 20 64  .# endif.#elif d
9bf0: 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29  efined(_MSC_VER)
9c00: 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f 5f 42 4f   || defined(__BO
9c10: 52 4c 41 4e 44 43 5f 5f 29 0a 20 20 74 79 70 65  RLANDC__).  type
9c20: 64 65 66 20 5f 5f 69 6e 74 36 34 20 73 71 6c 69  def __int64 sqli
9c30: 74 65 5f 69 6e 74 36 34 3b 0a 20 20 74 79 70 65  te_int64;.  type
9c40: 64 65 66 20 75 6e 73 69 67 6e 65 64 20 5f 5f 69  def unsigned __i
9c50: 6e 74 36 34 20 73 71 6c 69 74 65 5f 75 69 6e 74  nt64 sqlite_uint
9c60: 36 34 3b 0a 23 65 6c 73 65 0a 20 20 74 79 70 65  64;.#else.  type
9c70: 64 65 66 20 6c 6f 6e 67 20 6c 6f 6e 67 20 69 6e  def long long in
9c80: 74 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a  t sqlite_int64;.
9c90: 20 20 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e    typedef unsign
9ca0: 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 20 69 6e 74  ed long long int
9cb0: 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a   sqlite_uint64;.
9cc0: 23 65 6e 64 69 66 0a 74 79 70 65 64 65 66 20 73  #endif.typedef s
9cd0: 71 6c 69 74 65 5f 69 6e 74 36 34 20 73 71 6c 69  qlite_int64 sqli
9ce0: 74 65 33 5f 69 6e 74 36 34 3b 0a 74 79 70 65 64  te3_int64;.typed
9cf0: 65 66 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34  ef sqlite_uint64
9d00: 20 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 3b   sqlite3_uint64;
9d10: 0a 0a 2f 2a 0a 2a 2a 20 49 66 20 63 6f 6d 70 69  ../*.** If compi
9d20: 6c 69 6e 67 20 66 6f 72 20 61 20 70 72 6f 63 65  ling for a proce
9d30: 73 73 6f 72 20 74 68 61 74 20 6c 61 63 6b 73 20  ssor that lacks 
9d40: 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 73  floating point s
9d50: 75 70 70 6f 72 74 2c 0a 2a 2a 20 73 75 62 73 74  upport,.** subst
9d60: 69 74 75 74 65 20 69 6e 74 65 67 65 72 20 66 6f  itute integer fo
9d70: 72 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74  r floating-point
9d80: 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49  ..*/.#ifdef SQLI
9d90: 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47  TE_OMIT_FLOATING
9da0: 5f 50 4f 49 4e 54 0a 23 20 64 65 66 69 6e 65 20  _POINT.# define 
9db0: 64 6f 75 62 6c 65 20 73 71 6c 69 74 65 33 5f 69  double sqlite3_i
9dc0: 6e 74 36 34 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a  nt64.#endif../*.
9dd0: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6c 6f  ** CAPI3REF: Clo
9de0: 73 69 6e 67 20 41 20 44 61 74 61 62 61 73 65 20  sing A Database 
9df0: 43 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 44 45  Connection.** DE
9e00: 53 54 52 55 43 54 4f 52 3a 20 73 71 6c 69 74 65  STRUCTOR: sqlite
9e10: 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  3.**.** ^The sql
9e20: 69 74 65 33 5f 63 6c 6f 73 65 28 29 20 61 6e 64  ite3_close() and
9e30: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76   sqlite3_close_v
9e40: 32 28 29 20 72 6f 75 74 69 6e 65 73 20 61 72 65  2() routines are
9e50: 20 64 65 73 74 72 75 63 74 6f 72 73 0a 2a 2a 20   destructors.** 
9e60: 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33  for the [sqlite3
9e70: 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 20 5e 43 61  ] object..** ^Ca
9e80: 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 63  lls to sqlite3_c
9e90: 6c 6f 73 65 28 29 20 61 6e 64 20 73 71 6c 69 74  lose() and sqlit
9ea0: 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 72 65  e3_close_v2() re
9eb0: 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d  turn [SQLITE_OK]
9ec0: 20 69 66 0a 2a 2a 20 74 68 65 20 5b 73 71 6c 69   if.** the [sqli
9ed0: 74 65 33 5d 20 6f 62 6a 65 63 74 20 69 73 20 73  te3] object is s
9ee0: 75 63 63 65 73 73 66 75 6c 6c 79 20 64 65 73 74  uccessfully dest
9ef0: 72 6f 79 65 64 20 61 6e 64 20 61 6c 6c 20 61 73  royed and all as
9f00: 73 6f 63 69 61 74 65 64 0a 2a 2a 20 72 65 73 6f  sociated.** reso
9f10: 75 72 63 65 73 20 61 72 65 20 64 65 61 6c 6c 6f  urces are deallo
9f20: 63 61 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  cated..**.** ^If
9f30: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
9f40: 6e 6e 65 63 74 69 6f 6e 20 69 73 20 61 73 73 6f  nnection is asso
9f50: 63 69 61 74 65 64 20 77 69 74 68 20 75 6e 66 69  ciated with unfi
9f60: 6e 61 6c 69 7a 65 64 20 70 72 65 70 61 72 65 64  nalized prepared
9f70: 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  .** statements o
9f80: 72 20 75 6e 66 69 6e 69 73 68 65 64 20 73 71 6c  r unfinished sql
9f90: 69 74 65 33 5f 62 61 63 6b 75 70 20 6f 62 6a 65  ite3_backup obje
9fa0: 63 74 73 20 74 68 65 6e 20 73 71 6c 69 74 65 33  cts then sqlite3
9fb0: 5f 63 6c 6f 73 65 28 29 0a 2a 2a 20 77 69 6c 6c  _close().** will
9fc0: 20 6c 65 61 76 65 20 74 68 65 20 64 61 74 61 62   leave the datab
9fd0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  ase connection o
9fe0: 70 65 6e 20 61 6e 64 20 72 65 74 75 72 6e 20 5b  pen and return [
9ff0: 53 51 4c 49 54 45 5f 42 55 53 59 5d 2e 0a 2a 2a  SQLITE_BUSY]..**
a000: 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 63 6c 6f   ^If sqlite3_clo
a010: 73 65 5f 76 32 28 29 20 69 73 20 63 61 6c 6c 65  se_v2() is calle
a020: 64 20 77 69 74 68 20 75 6e 66 69 6e 61 6c 69 7a  d with unfinaliz
a030: 65 64 20 70 72 65 70 61 72 65 64 20 73 74 61 74  ed prepared stat
a040: 65 6d 65 6e 74 73 0a 2a 2a 20 61 6e 64 2f 6f 72  ements.** and/or
a050: 20 75 6e 66 69 6e 69 73 68 65 64 20 73 71 6c 69   unfinished sqli
a060: 74 65 33 5f 62 61 63 6b 75 70 73 2c 20 74 68 65  te3_backups, the
a070: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  n the database c
a080: 6f 6e 6e 65 63 74 69 6f 6e 20 62 65 63 6f 6d 65  onnection become
a090: 73 0a 2a 2a 20 61 6e 20 75 6e 75 73 61 62 6c 65  s.** an unusable
a0a0: 20 22 7a 6f 6d 62 69 65 22 20 77 68 69 63 68 20   "zombie" which 
a0b0: 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c  will automatical
a0c0: 6c 79 20 62 65 20 64 65 61 6c 6c 6f 63 61 74 65  ly be deallocate
a0d0: 64 20 77 68 65 6e 20 74 68 65 0a 2a 2a 20 6c 61  d when the.** la
a0e0: 73 74 20 70 72 65 70 61 72 65 64 20 73 74 61 74  st prepared stat
a0f0: 65 6d 65 6e 74 20 69 73 20 66 69 6e 61 6c 69 7a  ement is finaliz
a100: 65 64 20 6f 72 20 74 68 65 20 6c 61 73 74 20 73  ed or the last s
a110: 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 20 69 73  qlite3_backup is
a120: 0a 2a 2a 20 66 69 6e 69 73 68 65 64 2e 20 20 54  .** finished.  T
a130: 68 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  he sqlite3_close
a140: 5f 76 32 28 29 20 69 6e 74 65 72 66 61 63 65 20  _v2() interface 
a150: 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  is intended for 
a160: 75 73 65 20 77 69 74 68 0a 2a 2a 20 68 6f 73 74  use with.** host
a170: 20 6c 61 6e 67 75 61 67 65 73 20 74 68 61 74 20   languages that 
a180: 61 72 65 20 67 61 72 62 61 67 65 20 63 6f 6c 6c  are garbage coll
a190: 65 63 74 65 64 2c 20 61 6e 64 20 77 68 65 72 65  ected, and where
a1a0: 20 74 68 65 20 6f 72 64 65 72 20 69 6e 20 77 68   the order in wh
a1b0: 69 63 68 0a 2a 2a 20 64 65 73 74 72 75 63 74 6f  ich.** destructo
a1c0: 72 73 20 61 72 65 20 63 61 6c 6c 65 64 20 69 73  rs are called is
a1d0: 20 61 72 62 69 74 72 61 72 79 2e 0a 2a 2a 0a 2a   arbitrary..**.*
a1e0: 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 73  * Applications s
a1f0: 68 6f 75 6c 64 20 5b 73 71 6c 69 74 65 33 5f 66  hould [sqlite3_f
a200: 69 6e 61 6c 69 7a 65 20 7c 20 66 69 6e 61 6c 69  inalize | finali
a210: 7a 65 5d 20 61 6c 6c 20 5b 70 72 65 70 61 72 65  ze] all [prepare
a220: 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 2c 0a 2a  d statements],.*
a230: 2a 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f  * [sqlite3_blob_
a240: 63 6c 6f 73 65 20 7c 20 63 6c 6f 73 65 5d 20 61  close | close] a
a250: 6c 6c 20 5b 42 4c 4f 42 20 68 61 6e 64 6c 65 73  ll [BLOB handles
a260: 5d 2c 20 61 6e 64 20 0a 2a 2a 20 5b 73 71 6c 69  ], and .** [sqli
a270: 74 65 33 5f 62 61 63 6b 75 70 5f 66 69 6e 69 73  te3_backup_finis
a280: 68 20 7c 20 66 69 6e 69 73 68 5d 20 61 6c 6c 20  h | finish] all 
a290: 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5d  [sqlite3_backup]
a2a0: 20 6f 62 6a 65 63 74 73 20 61 73 73 6f 63 69 61   objects associa
a2b0: 74 65 64 0a 2a 2a 20 77 69 74 68 20 74 68 65 20  ted.** with the 
a2c0: 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74  [sqlite3] object
a2d0: 20 70 72 69 6f 72 20 74 6f 20 61 74 74 65 6d 70   prior to attemp
a2e0: 74 69 6e 67 20 74 6f 20 63 6c 6f 73 65 20 74 68  ting to close th
a2f0: 65 20 6f 62 6a 65 63 74 2e 20 20 5e 49 66 0a 2a  e object.  ^If.*
a300: 2a 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f  * sqlite3_close_
a310: 76 32 28 29 20 69 73 20 63 61 6c 6c 65 64 20 6f  v2() is called o
a320: 6e 20 61 20 5b 64 61 74 61 62 61 73 65 20 63 6f  n a [database co
a330: 6e 6e 65 63 74 69 6f 6e 5d 20 74 68 61 74 20 73  nnection] that s
a340: 74 69 6c 6c 20 68 61 73 0a 2a 2a 20 6f 75 74 73  till has.** outs
a350: 74 61 6e 64 69 6e 67 20 5b 70 72 65 70 61 72 65  tanding [prepare
a360: 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 2c 20 5b  d statements], [
a370: 42 4c 4f 42 20 68 61 6e 64 6c 65 73 5d 2c 20 61  BLOB handles], a
a380: 6e 64 2f 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65  nd/or.** [sqlite
a390: 33 5f 62 61 63 6b 75 70 5d 20 6f 62 6a 65 63 74  3_backup] object
a3a0: 73 20 74 68 65 6e 20 69 74 20 72 65 74 75 72 6e  s then it return
a3b0: 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 61 6e  s [SQLITE_OK] an
a3c0: 64 20 74 68 65 20 64 65 61 6c 6c 6f 63 61 74 69  d the deallocati
a3d0: 6f 6e 0a 2a 2a 20 6f 66 20 72 65 73 6f 75 72 63  on.** of resourc
a3e0: 65 73 20 69 73 20 64 65 66 65 72 72 65 64 20 75  es is deferred u
a3f0: 6e 74 69 6c 20 61 6c 6c 20 5b 70 72 65 70 61 72  ntil all [prepar
a400: 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 2c 20  ed statements], 
a410: 5b 42 4c 4f 42 20 68 61 6e 64 6c 65 73 5d 2c 0a  [BLOB handles],.
a420: 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  ** and [sqlite3_
a430: 62 61 63 6b 75 70 5d 20 6f 62 6a 65 63 74 73 20  backup] objects 
a440: 61 72 65 20 61 6c 73 6f 20 64 65 73 74 72 6f 79  are also destroy
a450: 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e  ed..**.** ^If an
a460: 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63   [sqlite3] objec
a470: 74 20 69 73 20 64 65 73 74 72 6f 79 65 64 20 77  t is destroyed w
a480: 68 69 6c 65 20 61 20 74 72 61 6e 73 61 63 74 69  hile a transacti
a490: 6f 6e 20 69 73 20 6f 70 65 6e 2c 0a 2a 2a 20 74  on is open,.** t
a4a0: 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  he transaction i
a4b0: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
a4c0: 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a 2a 0a  rolled back..**.
a4d0: 2a 2a 20 54 68 65 20 43 20 70 61 72 61 6d 65 74  ** The C paramet
a4e0: 65 72 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  er to [sqlite3_c
a4f0: 6c 6f 73 65 28 43 29 5d 20 61 6e 64 20 5b 73 71  lose(C)] and [sq
a500: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 43  lite3_close_v2(C
a510: 29 5d 0a 2a 2a 20 6d 75 73 74 20 62 65 20 65 69  )].** must be ei
a520: 74 68 65 72 20 61 20 4e 55 4c 4c 0a 2a 2a 20 70  ther a NULL.** p
a530: 6f 69 6e 74 65 72 20 6f 72 20 61 6e 20 5b 73 71  ointer or an [sq
a540: 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74 20 70 6f  lite3] object po
a550: 69 6e 74 65 72 20 6f 62 74 61 69 6e 65 64 0a 2a  inter obtained.*
a560: 2a 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f  * from [sqlite3_
a570: 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65  open()], [sqlite
a580: 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 6f 72 0a  3_open16()], or.
a590: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ** [sqlite3_open
a5a0: 5f 76 32 28 29 5d 2c 20 61 6e 64 20 6e 6f 74 20  _v2()], and not 
a5b0: 70 72 65 76 69 6f 75 73 6c 79 20 63 6c 6f 73 65  previously close
a5c0: 64 2e 0a 2a 2a 20 5e 43 61 6c 6c 69 6e 67 20 73  d..** ^Calling s
a5d0: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29 20 6f  qlite3_close() o
a5e0: 72 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f  r sqlite3_close_
a5f0: 76 32 28 29 20 77 69 74 68 20 61 20 4e 55 4c 4c  v2() with a NULL
a600: 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 61 72 67 75   pointer.** argu
a610: 6d 65 6e 74 20 69 73 20 61 20 68 61 72 6d 6c 65  ment is a harmle
a620: 73 73 20 6e 6f 2d 6f 70 2e 0a 2a 2f 0a 53 51 4c  ss no-op..*/.SQL
a630: 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
a640: 74 65 33 5f 63 6c 6f 73 65 28 73 71 6c 69 74 65  te3_close(sqlite
a650: 33 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  3*);.SQLITE_API 
a660: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  int sqlite3_clos
a670: 65 5f 76 32 28 73 71 6c 69 74 65 33 2a 29 3b 0a  e_v2(sqlite3*);.
a680: 0a 2f 2a 0a 2a 2a 20 54 68 65 20 74 79 70 65 20  ./*.** The type 
a690: 66 6f 72 20 61 20 63 61 6c 6c 62 61 63 6b 20 66  for a callback f
a6a0: 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20 54 68 69 73  unction..** This
a6b0: 20 69 73 20 6c 65 67 61 63 79 20 61 6e 64 20 64   is legacy and d
a6c0: 65 70 72 65 63 61 74 65 64 2e 20 20 49 74 20 69  eprecated.  It i
a6d0: 73 20 69 6e 63 6c 75 64 65 64 20 66 6f 72 20 68  s included for h
a6e0: 69 73 74 6f 72 69 63 61 6c 0a 2a 2a 20 63 6f 6d  istorical.** com
a6f0: 70 61 74 69 62 69 6c 69 74 79 20 61 6e 64 20 69  patibility and i
a700: 73 20 6e 6f 74 20 64 6f 63 75 6d 65 6e 74 65 64  s not documented
a710: 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 69 6e 74  ..*/.typedef int
a720: 20 28 2a 73 71 6c 69 74 65 33 5f 63 61 6c 6c 62   (*sqlite3_callb
a730: 61 63 6b 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63  ack)(void*,int,c
a740: 68 61 72 2a 2a 2c 20 63 68 61 72 2a 2a 29 3b 0a  har**, char**);.
a750: 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
a760: 20 4f 6e 65 2d 53 74 65 70 20 51 75 65 72 79 20   One-Step Query 
a770: 45 78 65 63 75 74 69 6f 6e 20 49 6e 74 65 72 66  Execution Interf
a780: 61 63 65 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  ace.** METHOD: s
a790: 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65  qlite3.**.** The
a7a0: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
a7b0: 69 6e 74 65 72 66 61 63 65 20 69 73 20 61 20 63  interface is a c
a7c0: 6f 6e 76 65 6e 69 65 6e 63 65 20 77 72 61 70 70  onvenience wrapp
a7d0: 65 72 20 61 72 6f 75 6e 64 0a 2a 2a 20 5b 73 71  er around.** [sq
a7e0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
a7f0: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74  ()], [sqlite3_st
a800: 65 70 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69  ep()], and [sqli
a810: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d 2c  te3_finalize()],
a820: 0a 2a 2a 20 74 68 61 74 20 61 6c 6c 6f 77 73 20  .** that allows 
a830: 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 74  an application t
a840: 6f 20 72 75 6e 20 6d 75 6c 74 69 70 6c 65 20 73  o run multiple s
a850: 74 61 74 65 6d 65 6e 74 73 20 6f 66 20 53 51 4c  tatements of SQL
a860: 0a 2a 2a 20 77 69 74 68 6f 75 74 20 68 61 76 69  .** without havi
a870: 6e 67 20 74 6f 20 75 73 65 20 61 20 6c 6f 74 20  ng to use a lot 
a880: 6f 66 20 43 20 63 6f 64 65 2e 20 0a 2a 2a 0a 2a  of C code. .**.*
a890: 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65  * ^The sqlite3_e
a8a0: 78 65 63 28 29 20 69 6e 74 65 72 66 61 63 65 20  xec() interface 
a8b0: 72 75 6e 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  runs zero or mor
a8c0: 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 2c  e UTF-8 encoded,
a8d0: 0a 2a 2a 20 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65  .** semicolon-se
a8e0: 70 61 72 61 74 65 20 53 51 4c 20 73 74 61 74 65  parate SQL state
a8f0: 6d 65 6e 74 73 20 70 61 73 73 65 64 20 69 6e 74  ments passed int
a900: 6f 20 69 74 73 20 32 6e 64 20 61 72 67 75 6d 65  o its 2nd argume
a910: 6e 74 2c 0a 2a 2a 20 69 6e 20 74 68 65 20 63 6f  nt,.** in the co
a920: 6e 74 65 78 74 20 6f 66 20 74 68 65 20 5b 64 61  ntext of the [da
a930: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
a940: 6e 5d 20 70 61 73 73 65 64 20 69 6e 20 61 73 20  n] passed in as 
a950: 69 74 73 20 31 73 74 0a 2a 2a 20 61 72 67 75 6d  its 1st.** argum
a960: 65 6e 74 2e 20 20 5e 49 66 20 74 68 65 20 63 61  ent.  ^If the ca
a970: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
a980: 6f 66 20 74 68 65 20 33 72 64 20 61 72 67 75 6d  of the 3rd argum
a990: 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65  ent to.** sqlite
a9a0: 33 5f 65 78 65 63 28 29 20 69 73 20 6e 6f 74 20  3_exec() is not 
a9b0: 4e 55 4c 4c 2c 20 74 68 65 6e 20 69 74 20 69 73  NULL, then it is
a9c0: 20 69 6e 76 6f 6b 65 64 20 66 6f 72 20 65 61 63   invoked for eac
a9d0: 68 20 72 65 73 75 6c 74 20 72 6f 77 0a 2a 2a 20  h result row.** 
a9e0: 63 6f 6d 69 6e 67 20 6f 75 74 20 6f 66 20 74 68  coming out of th
a9f0: 65 20 65 76 61 6c 75 61 74 65 64 20 53 51 4c 20  e evaluated SQL 
aa00: 73 74 61 74 65 6d 65 6e 74 73 2e 20 20 5e 54 68  statements.  ^Th
aa10: 65 20 34 74 68 20 61 72 67 75 6d 65 6e 74 20 74  e 4th argument t
aa20: 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78 65  o.** sqlite3_exe
aa30: 63 28 29 20 69 73 20 72 65 6c 61 79 65 64 20 74  c() is relayed t
aa40: 68 72 6f 75 67 68 20 74 6f 20 74 68 65 20 31 73  hrough to the 1s
aa50: 74 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 65 61  t argument of ea
aa60: 63 68 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69  ch.** callback i
aa70: 6e 76 6f 63 61 74 69 6f 6e 2e 20 20 5e 49 66 20  nvocation.  ^If 
aa80: 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 70 6f 69  the callback poi
aa90: 6e 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  nter to sqlite3_
aaa0: 65 78 65 63 28 29 0a 2a 2a 20 69 73 20 4e 55 4c  exec().** is NUL
aab0: 4c 2c 20 74 68 65 6e 20 6e 6f 20 63 61 6c 6c 62  L, then no callb
aac0: 61 63 6b 20 69 73 20 65 76 65 72 20 69 6e 76 6f  ack is ever invo
aad0: 6b 65 64 20 61 6e 64 20 72 65 73 75 6c 74 20 72  ked and result r
aae0: 6f 77 73 20 61 72 65 0a 2a 2a 20 69 67 6e 6f 72  ows are.** ignor
aaf0: 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e  ed..**.** ^If an
ab00: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 77 68   error occurs wh
ab10: 69 6c 65 20 65 76 61 6c 75 61 74 69 6e 67 20 74  ile evaluating t
ab20: 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
ab30: 73 20 70 61 73 73 65 64 20 69 6e 74 6f 0a 2a 2a  s passed into.**
ab40: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 2c   sqlite3_exec(),
ab50: 20 74 68 65 6e 20 65 78 65 63 75 74 69 6f 6e 20   then execution 
ab60: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 73  of the current s
ab70: 74 61 74 65 6d 65 6e 74 20 73 74 6f 70 73 20 61  tatement stops a
ab80: 6e 64 0a 2a 2a 20 73 75 62 73 65 71 75 65 6e 74  nd.** subsequent
ab90: 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20   statements are 
aba0: 73 6b 69 70 70 65 64 2e 20 20 5e 49 66 20 74 68  skipped.  ^If th
abb0: 65 20 35 74 68 20 70 61 72 61 6d 65 74 65 72 20  e 5th parameter 
abc0: 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  to sqlite3_exec(
abd0: 29 0a 2a 2a 20 69 73 20 6e 6f 74 20 4e 55 4c 4c  ).** is not NULL
abe0: 20 74 68 65 6e 20 61 6e 79 20 65 72 72 6f 72 20   then any error 
abf0: 6d 65 73 73 61 67 65 20 69 73 20 77 72 69 74 74  message is writt
ac00: 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72 79 20 6f  en into memory o
ac10: 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20  btained.** from 
ac20: 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
ac30: 29 5d 20 61 6e 64 20 70 61 73 73 65 64 20 62 61  )] and passed ba
ac40: 63 6b 20 74 68 72 6f 75 67 68 20 74 68 65 20 35  ck through the 5
ac50: 74 68 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a  th parameter..**
ac60: 20 54 6f 20 61 76 6f 69 64 20 6d 65 6d 6f 72 79   To avoid memory
ac70: 20 6c 65 61 6b 73 2c 20 74 68 65 20 61 70 70 6c   leaks, the appl
ac80: 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 69  ication should i
ac90: 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 66  nvoke [sqlite3_f
aca0: 72 65 65 28 29 5d 0a 2a 2a 20 6f 6e 20 65 72 72  ree()].** on err
acb0: 6f 72 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e  or message strin
acc0: 67 73 20 72 65 74 75 72 6e 65 64 20 74 68 72 6f  gs returned thro
acd0: 75 67 68 20 74 68 65 20 35 74 68 20 70 61 72 61  ugh the 5th para
ace0: 6d 65 74 65 72 20 6f 66 0a 2a 2a 20 73 71 6c 69  meter of.** sqli
acf0: 74 65 33 5f 65 78 65 63 28 29 20 61 66 74 65 72  te3_exec() after
ad00: 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61   the error messa
ad10: 67 65 20 73 74 72 69 6e 67 20 69 73 20 6e 6f 20  ge string is no 
ad20: 6c 6f 6e 67 65 72 20 6e 65 65 64 65 64 2e 0a 2a  longer needed..*
ad30: 2a 20 5e 49 66 20 74 68 65 20 35 74 68 20 70 61  * ^If the 5th pa
ad40: 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74  rameter to sqlit
ad50: 65 33 5f 65 78 65 63 28 29 20 69 73 20 6e 6f 74  e3_exec() is not
ad60: 20 4e 55 4c 4c 20 61 6e 64 20 6e 6f 20 65 72 72   NULL and no err
ad70: 6f 72 73 0a 2a 2a 20 6f 63 63 75 72 2c 20 74 68  ors.** occur, th
ad80: 65 6e 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  en sqlite3_exec(
ad90: 29 20 73 65 74 73 20 74 68 65 20 70 6f 69 6e 74  ) sets the point
ada0: 65 72 20 69 6e 20 69 74 73 20 35 74 68 20 70 61  er in its 5th pa
adb0: 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 4e 55  rameter to.** NU
adc0: 4c 4c 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e  LL before return
add0: 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61  ing..**.** ^If a
ade0: 6e 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  n sqlite3_exec()
adf0: 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e   callback return
ae00: 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 20  s non-zero, the 
ae10: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 0a 2a  sqlite3_exec().*
ae20: 2a 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  * routine return
ae30: 73 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 77  s SQLITE_ABORT w
ae40: 69 74 68 6f 75 74 20 69 6e 76 6f 6b 69 6e 67 20  ithout invoking 
ae50: 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 61 67 61  the callback aga
ae60: 69 6e 20 61 6e 64 0a 2a 2a 20 77 69 74 68 6f 75  in and.** withou
ae70: 74 20 72 75 6e 6e 69 6e 67 20 61 6e 79 20 73 75  t running any su
ae80: 62 73 65 71 75 65 6e 74 20 53 51 4c 20 73 74 61  bsequent SQL sta
ae90: 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e  tements..**.** ^
aea0: 54 68 65 20 32 6e 64 20 61 72 67 75 6d 65 6e 74  The 2nd argument
aeb0: 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
aec0: 65 78 65 63 28 29 20 63 61 6c 6c 62 61 63 6b 20  exec() callback 
aed0: 66 75 6e 63 74 69 6f 6e 20 69 73 20 74 68 65 0a  function is the.
aee0: 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  ** number of col
aef0: 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75  umns in the resu
af00: 6c 74 2e 20 20 5e 54 68 65 20 33 72 64 20 61 72  lt.  ^The 3rd ar
af10: 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 73 71  gument to the sq
af20: 6c 69 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20  lite3_exec().** 
af30: 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20 61  callback is an a
af40: 72 72 61 79 20 6f 66 20 70 6f 69 6e 74 65 72 73  rray of pointers
af50: 20 74 6f 20 73 74 72 69 6e 67 73 20 6f 62 74 61   to strings obta
af60: 69 6e 65 64 20 61 73 20 69 66 20 66 72 6f 6d 0a  ined as if from.
af70: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ** [sqlite3_colu
af80: 6d 6e 5f 74 65 78 74 28 29 5d 2c 20 6f 6e 65 20  mn_text()], one 
af90: 66 6f 72 20 65 61 63 68 20 63 6f 6c 75 6d 6e 2e  for each column.
afa0: 20 20 5e 49 66 20 61 6e 20 65 6c 65 6d 65 6e 74    ^If an element
afb0: 20 6f 66 20 61 0a 2a 2a 20 72 65 73 75 6c 74 20   of a.** result 
afc0: 72 6f 77 20 69 73 20 4e 55 4c 4c 20 74 68 65 6e  row is NULL then
afd0: 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
afe0: 6e 67 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65  ng string pointe
aff0: 72 20 66 6f 72 20 74 68 65 0a 2a 2a 20 73 71 6c  r for the.** sql
b000: 69 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c 6c  ite3_exec() call
b010: 62 61 63 6b 20 69 73 20 61 20 4e 55 4c 4c 20 70  back is a NULL p
b020: 6f 69 6e 74 65 72 2e 20 20 5e 54 68 65 20 34 74  ointer.  ^The 4t
b030: 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68  h argument to th
b040: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78 65  e.** sqlite3_exe
b050: 63 28 29 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  c() callback is 
b060: 61 6e 20 61 72 72 61 79 20 6f 66 20 70 6f 69 6e  an array of poin
b070: 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73 20  ters to strings 
b080: 77 68 65 72 65 20 65 61 63 68 0a 2a 2a 20 65 6e  where each.** en
b090: 74 72 79 20 72 65 70 72 65 73 65 6e 74 73 20 74  try represents t
b0a0: 68 65 20 6e 61 6d 65 20 6f 66 20 63 6f 72 72 65  he name of corre
b0b0: 73 70 6f 6e 64 69 6e 67 20 72 65 73 75 6c 74 20  sponding result 
b0c0: 63 6f 6c 75 6d 6e 20 61 73 20 6f 62 74 61 69 6e  column as obtain
b0d0: 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c 69  ed.** from [sqli
b0e0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28  te3_column_name(
b0f0: 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68  )]..**.** ^If th
b100: 65 20 32 6e 64 20 70 61 72 61 6d 65 74 65 72 20  e 2nd parameter 
b110: 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  to sqlite3_exec(
b120: 29 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  ) is a NULL poin
b130: 74 65 72 2c 20 61 20 70 6f 69 6e 74 65 72 0a 2a  ter, a pointer.*
b140: 2a 20 74 6f 20 61 6e 20 65 6d 70 74 79 20 73 74  * to an empty st
b150: 72 69 6e 67 2c 20 6f 72 20 61 20 70 6f 69 6e 74  ring, or a point
b160: 65 72 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73  er that contains
b170: 20 6f 6e 6c 79 20 77 68 69 74 65 73 70 61 63 65   only whitespace
b180: 20 61 6e 64 2f 6f 72 20 0a 2a 2a 20 53 51 4c 20   and/or .** SQL 
b190: 63 6f 6d 6d 65 6e 74 73 2c 20 74 68 65 6e 20 6e  comments, then n
b1a0: 6f 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  o SQL statements
b1b0: 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 61   are evaluated a
b1c0: 6e 64 20 74 68 65 20 64 61 74 61 62 61 73 65 0a  nd the database.
b1d0: 2a 2a 20 69 73 20 6e 6f 74 20 63 68 61 6e 67 65  ** is not change
b1e0: 64 2e 0a 2a 2a 0a 2a 2a 20 52 65 73 74 72 69 63  d..**.** Restric
b1f0: 74 69 6f 6e 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c  tions:.**.** <ul
b200: 3e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 61 70  >.** <li> The ap
b210: 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 65  plication must e
b220: 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20 31  nsure that the 1
b230: 73 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  st parameter to 
b240: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 0a 2a  sqlite3_exec().*
b250: 2a 20 20 20 20 20 20 69 73 20 61 20 76 61 6c 69  *      is a vali
b260: 64 20 61 6e 64 20 6f 70 65 6e 20 5b 64 61 74 61  d and open [data
b270: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
b280: 2e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 61 70  ..** <li> The ap
b290: 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e  plication must n
b2a0: 6f 74 20 63 6c 6f 73 65 20 74 68 65 20 5b 64 61  ot close the [da
b2b0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
b2c0: 6e 5d 20 73 70 65 63 69 66 69 65 64 20 62 79 0a  n] specified by.
b2d0: 2a 2a 20 20 20 20 20 20 74 68 65 20 31 73 74 20  **      the 1st 
b2e0: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c  parameter to sql
b2f0: 69 74 65 33 5f 65 78 65 63 28 29 20 77 68 69 6c  ite3_exec() whil
b300: 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  e sqlite3_exec()
b310: 20 69 73 20 72 75 6e 6e 69 6e 67 2e 0a 2a 2a 20   is running..** 
b320: 3c 6c 69 3e 20 54 68 65 20 61 70 70 6c 69 63 61  <li> The applica
b330: 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 6d 6f  tion must not mo
b340: 64 69 66 79 20 74 68 65 20 53 51 4c 20 73 74 61  dify the SQL sta
b350: 74 65 6d 65 6e 74 20 74 65 78 74 20 70 61 73 73  tement text pass
b360: 65 64 20 69 6e 74 6f 0a 2a 2a 20 20 20 20 20 20  ed into.**      
b370: 74 68 65 20 32 6e 64 20 70 61 72 61 6d 65 74 65  the 2nd paramete
b380: 72 20 6f 66 20 73 71 6c 69 74 65 33 5f 65 78 65  r of sqlite3_exe
b390: 63 28 29 20 77 68 69 6c 65 20 73 71 6c 69 74 65  c() while sqlite
b3a0: 33 5f 65 78 65 63 28 29 20 69 73 20 72 75 6e 6e  3_exec() is runn
b3b0: 69 6e 67 2e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f  ing..** </ul>.*/
b3c0: 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
b3d0: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 0a 20 20  sqlite3_exec(.  
b3e0: 73 71 6c 69 74 65 33 2a 2c 20 20 20 20 20 20 20  sqlite3*,       
b3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b400: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 41 6e             /* An
b410: 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 2a   open database *
b420: 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
b430: 73 71 6c 2c 20 20 20 20 20 20 20 20 20 20 20 20  sql,            
b440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
b450: 2a 20 53 51 4c 20 74 6f 20 62 65 20 65 76 61 6c  * SQL to be eval
b460: 75 61 74 65 64 20 2a 2f 0a 20 20 69 6e 74 20 28  uated */.  int (
b470: 2a 63 61 6c 6c 62 61 63 6b 29 28 76 6f 69 64 2a  *callback)(void*
b480: 2c 69 6e 74 2c 63 68 61 72 2a 2a 2c 63 68 61 72  ,int,char**,char
b490: 2a 2a 29 2c 20 20 2f 2a 20 43 61 6c 6c 62 61 63  **),  /* Callbac
b4a0: 6b 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20  k function */.  
b4b0: 76 6f 69 64 20 2a 2c 20 20 20 20 20 20 20 20 20  void *,         
b4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b4d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 31 73             /* 1s
b4e0: 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 63 61  t argument to ca
b4f0: 6c 6c 62 61 63 6b 20 2a 2f 0a 20 20 63 68 61 72  llback */.  char
b500: 20 2a 2a 65 72 72 6d 73 67 20 20 20 20 20 20 20   **errmsg       
b510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b520: 20 20 20 20 20 20 20 2f 2a 20 45 72 72 6f 72 20         /* Error 
b530: 6d 73 67 20 77 72 69 74 74 65 6e 20 68 65 72 65  msg written here
b540: 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41   */.);../*.** CA
b550: 50 49 33 52 45 46 3a 20 52 65 73 75 6c 74 20 43  PI3REF: Result C
b560: 6f 64 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53  odes.** KEYWORDS
b570: 3a 20 7b 72 65 73 75 6c 74 20 63 6f 64 65 20 64  : {result code d
b580: 65 66 69 6e 69 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a  efinitions}.**.*
b590: 2a 20 4d 61 6e 79 20 53 51 4c 69 74 65 20 66 75  * Many SQLite fu
b5a0: 6e 63 74 69 6f 6e 73 20 72 65 74 75 72 6e 20 61  nctions return a
b5b0: 6e 20 69 6e 74 65 67 65 72 20 72 65 73 75 6c 74  n integer result
b5c0: 20 63 6f 64 65 20 66 72 6f 6d 20 74 68 65 20 73   code from the s
b5d0: 65 74 20 73 68 6f 77 6e 0a 2a 2a 20 68 65 72 65  et shown.** here
b5e0: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 69 6e 64   in order to ind
b5f0: 69 63 61 74 65 20 73 75 63 63 65 73 73 20 6f 72  icate success or
b600: 20 66 61 69 6c 75 72 65 2e 0a 2a 2a 0a 2a 2a 20   failure..**.** 
b610: 4e 65 77 20 65 72 72 6f 72 20 63 6f 64 65 73 20  New error codes 
b620: 6d 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20  may be added in 
b630: 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  future versions 
b640: 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a  of SQLite..**.**
b650: 20 53 65 65 20 61 6c 73 6f 3a 20 5b 65 78 74 65   See also: [exte
b660: 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65  nded result code
b670: 20 64 65 66 69 6e 69 74 69 6f 6e 73 5d 0a 2a 2f   definitions].*/
b680: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b690: 4f 4b 20 20 20 20 20 20 20 20 20 20 20 30 20 20  OK           0  
b6a0: 20 2f 2a 20 53 75 63 63 65 73 73 66 75 6c 20 72   /* Successful r
b6b0: 65 73 75 6c 74 20 2a 2f 0a 2f 2a 20 62 65 67 69  esult */./* begi
b6c0: 6e 6e 69 6e 67 2d 6f 66 2d 65 72 72 6f 72 2d 63  nning-of-error-c
b6d0: 6f 64 65 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20  odes */.#define 
b6e0: 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 20 20 20  SQLITE_ERROR    
b6f0: 20 20 20 20 31 20 20 20 2f 2a 20 47 65 6e 65 72      1   /* Gener
b700: 69 63 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66  ic error */.#def
b710: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45 52  ine SQLITE_INTER
b720: 4e 41 4c 20 20 20 20 20 32 20 20 20 2f 2a 20 49  NAL     2   /* I
b730: 6e 74 65 72 6e 61 6c 20 6c 6f 67 69 63 20 65 72  nternal logic er
b740: 72 6f 72 20 69 6e 20 53 51 4c 69 74 65 20 2a 2f  ror in SQLite */
b750: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b760: 50 45 52 4d 20 20 20 20 20 20 20 20 20 33 20 20  PERM         3  
b770: 20 2f 2a 20 41 63 63 65 73 73 20 70 65 72 6d 69   /* Access permi
b780: 73 73 69 6f 6e 20 64 65 6e 69 65 64 20 2a 2f 0a  ssion denied */.
b790: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41  #define SQLITE_A
b7a0: 42 4f 52 54 20 20 20 20 20 20 20 20 34 20 20 20  BORT        4   
b7b0: 2f 2a 20 43 61 6c 6c 62 61 63 6b 20 72 6f 75 74  /* Callback rout
b7c0: 69 6e 65 20 72 65 71 75 65 73 74 65 64 20 61 6e  ine requested an
b7d0: 20 61 62 6f 72 74 20 2a 2f 0a 23 64 65 66 69 6e   abort */.#defin
b7e0: 65 20 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20  e SQLITE_BUSY   
b7f0: 20 20 20 20 20 20 35 20 20 20 2f 2a 20 54 68 65        5   /* The
b800: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69   database file i
b810: 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66  s locked */.#def
b820: 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  ine SQLITE_LOCKE
b830: 44 20 20 20 20 20 20 20 36 20 20 20 2f 2a 20 41  D       6   /* A
b840: 20 74 61 62 6c 65 20 69 6e 20 74 68 65 20 64 61   table in the da
b850: 74 61 62 61 73 65 20 69 73 20 6c 6f 63 6b 65 64  tabase is locked
b860: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
b870: 54 45 5f 4e 4f 4d 45 4d 20 20 20 20 20 20 20 20  TE_NOMEM        
b880: 37 20 20 20 2f 2a 20 41 20 6d 61 6c 6c 6f 63 28  7   /* A malloc(
b890: 29 20 66 61 69 6c 65 64 20 2a 2f 0a 23 64 65 66  ) failed */.#def
b8a0: 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f  ine SQLITE_READO
b8b0: 4e 4c 59 20 20 20 20 20 38 20 20 20 2f 2a 20 41  NLY     8   /* A
b8c0: 74 74 65 6d 70 74 20 74 6f 20 77 72 69 74 65 20  ttempt to write 
b8d0: 61 20 72 65 61 64 6f 6e 6c 79 20 64 61 74 61 62  a readonly datab
b8e0: 61 73 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ase */.#define S
b8f0: 51 4c 49 54 45 5f 49 4e 54 45 52 52 55 50 54 20  QLITE_INTERRUPT 
b900: 20 20 20 39 20 20 20 2f 2a 20 4f 70 65 72 61 74     9   /* Operat
b910: 69 6f 6e 20 74 65 72 6d 69 6e 61 74 65 64 20 62  ion terminated b
b920: 79 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  y sqlite3_interr
b930: 75 70 74 28 29 2a 2f 0a 23 64 65 66 69 6e 65 20  upt()*/.#define 
b940: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 20 20 20  SQLITE_IOERR    
b950: 20 20 20 31 30 20 20 20 2f 2a 20 53 6f 6d 65 20     10   /* Some 
b960: 6b 69 6e 64 20 6f 66 20 64 69 73 6b 20 49 2f 4f  kind of disk I/O
b970: 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 20   error occurred 
b980: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
b990: 45 5f 43 4f 52 52 55 50 54 20 20 20 20 20 31 31  E_CORRUPT     11
b9a0: 20 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62 61     /* The databa
b9b0: 73 65 20 64 69 73 6b 20 69 6d 61 67 65 20 69 73  se disk image is
b9c0: 20 6d 61 6c 66 6f 72 6d 65 64 20 2a 2f 0a 23 64   malformed */.#d
b9d0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54  efine SQLITE_NOT
b9e0: 46 4f 55 4e 44 20 20 20 20 31 32 20 20 20 2f 2a  FOUND    12   /*
b9f0: 20 55 6e 6b 6e 6f 77 6e 20 6f 70 63 6f 64 65 20   Unknown opcode 
ba00: 69 6e 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  in sqlite3_file_
ba10: 63 6f 6e 74 72 6f 6c 28 29 20 2a 2f 0a 23 64 65  control() */.#de
ba20: 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 55 4c 4c  fine SQLITE_FULL
ba30: 20 20 20 20 20 20 20 20 31 33 20 20 20 2f 2a 20          13   /* 
ba40: 49 6e 73 65 72 74 69 6f 6e 20 66 61 69 6c 65 64  Insertion failed
ba50: 20 62 65 63 61 75 73 65 20 64 61 74 61 62 61 73   because databas
ba60: 65 20 69 73 20 66 75 6c 6c 20 2a 2f 0a 23 64 65  e is full */.#de
ba70: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54  fine SQLITE_CANT
ba80: 4f 50 45 4e 20 20 20 20 31 34 20 20 20 2f 2a 20  OPEN    14   /* 
ba90: 55 6e 61 62 6c 65 20 74 6f 20 6f 70 65 6e 20 74  Unable to open t
baa0: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
bab0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
bac0: 54 45 5f 50 52 4f 54 4f 43 4f 4c 20 20 20 20 31  TE_PROTOCOL    1
bad0: 35 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20  5   /* Database 
bae0: 6c 6f 63 6b 20 70 72 6f 74 6f 63 6f 6c 20 65 72  lock protocol er
baf0: 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ror */.#define S
bb00: 51 4c 49 54 45 5f 45 4d 50 54 59 20 20 20 20 20  QLITE_EMPTY     
bb10: 20 20 31 36 20 20 20 2f 2a 20 49 6e 74 65 72 6e    16   /* Intern
bb20: 61 6c 20 75 73 65 20 6f 6e 6c 79 20 2a 2f 0a 23  al use only */.#
bb30: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 43  define SQLITE_SC
bb40: 48 45 4d 41 20 20 20 20 20 20 31 37 20 20 20 2f  HEMA      17   /
bb50: 2a 20 54 68 65 20 64 61 74 61 62 61 73 65 20 73  * The database s
bb60: 63 68 65 6d 61 20 63 68 61 6e 67 65 64 20 2a 2f  chema changed */
bb70: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
bb80: 54 4f 4f 42 49 47 20 20 20 20 20 20 31 38 20 20  TOOBIG      18  
bb90: 20 2f 2a 20 53 74 72 69 6e 67 20 6f 72 20 42 4c   /* String or BL
bba0: 4f 42 20 65 78 63 65 65 64 73 20 73 69 7a 65 20  OB exceeds size 
bbb0: 6c 69 6d 69 74 20 2a 2f 0a 23 64 65 66 69 6e 65  limit */.#define
bbc0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
bbd0: 4e 54 20 20 31 39 20 20 20 2f 2a 20 41 62 6f 72  NT  19   /* Abor
bbe0: 74 20 64 75 65 20 74 6f 20 63 6f 6e 73 74 72 61  t due to constra
bbf0: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 2a 2f  int violation */
bc00: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
bc10: 4d 49 53 4d 41 54 43 48 20 20 20 20 32 30 20 20  MISMATCH    20  
bc20: 20 2f 2a 20 44 61 74 61 20 74 79 70 65 20 6d 69   /* Data type mi
bc30: 73 6d 61 74 63 68 20 2a 2f 0a 23 64 65 66 69 6e  smatch */.#defin
bc40: 65 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 20  e SQLITE_MISUSE 
bc50: 20 20 20 20 20 32 31 20 20 20 2f 2a 20 4c 69 62       21   /* Lib
bc60: 72 61 72 79 20 75 73 65 64 20 69 6e 63 6f 72 72  rary used incorr
bc70: 65 63 74 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65  ectly */.#define
bc80: 20 53 51 4c 49 54 45 5f 4e 4f 4c 46 53 20 20 20   SQLITE_NOLFS   
bc90: 20 20 20 20 32 32 20 20 20 2f 2a 20 55 73 65 73      22   /* Uses
bca0: 20 4f 53 20 66 65 61 74 75 72 65 73 20 6e 6f 74   OS features not
bcb0: 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 68 6f   supported on ho
bcc0: 73 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  st */.#define SQ
bcd0: 4c 49 54 45 5f 41 55 54 48 20 20 20 20 20 20 20  LITE_AUTH       
bce0: 20 32 33 20 20 20 2f 2a 20 41 75 74 68 6f 72 69   23   /* Authori
bcf0: 7a 61 74 69 6f 6e 20 64 65 6e 69 65 64 20 2a 2f  zation denied */
bd00: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
bd10: 46 4f 52 4d 41 54 20 20 20 20 20 20 32 34 20 20  FORMAT      24  
bd20: 20 2f 2a 20 4e 6f 74 20 75 73 65 64 20 2a 2f 0a   /* Not used */.
bd30: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
bd40: 41 4e 47 45 20 20 20 20 20 20 20 32 35 20 20 20  ANGE       25   
bd50: 2f 2a 20 32 6e 64 20 70 61 72 61 6d 65 74 65 72  /* 2nd parameter
bd60: 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64   to sqlite3_bind
bd70: 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 20 2a 2f   out of range */
bd80: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
bd90: 4e 4f 54 41 44 42 20 20 20 20 20 20 32 36 20 20  NOTADB      26  
bda0: 20 2f 2a 20 46 69 6c 65 20 6f 70 65 6e 65 64 20   /* File opened 
bdb0: 74 68 61 74 20 69 73 20 6e 6f 74 20 61 20 64 61  that is not a da
bdc0: 74 61 62 61 73 65 20 66 69 6c 65 20 2a 2f 0a 23  tabase file */.#
bdd0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f  define SQLITE_NO
bde0: 54 49 43 45 20 20 20 20 20 20 32 37 20 20 20 2f  TICE      27   /
bdf0: 2a 20 4e 6f 74 69 66 69 63 61 74 69 6f 6e 73 20  * Notifications 
be00: 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6c 6f 67  from sqlite3_log
be10: 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  () */.#define SQ
be20: 4c 49 54 45 5f 57 41 52 4e 49 4e 47 20 20 20 20  LITE_WARNING    
be30: 20 32 38 20 20 20 2f 2a 20 57 61 72 6e 69 6e 67   28   /* Warning
be40: 73 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6c  s from sqlite3_l
be50: 6f 67 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20  og() */.#define 
be60: 53 51 4c 49 54 45 5f 52 4f 57 20 20 20 20 20 20  SQLITE_ROW      
be70: 20 20 20 31 30 30 20 20 2f 2a 20 73 71 6c 69 74     100  /* sqlit
be80: 65 33 5f 73 74 65 70 28 29 20 68 61 73 20 61 6e  e3_step() has an
be90: 6f 74 68 65 72 20 72 6f 77 20 72 65 61 64 79 20  other row ready 
bea0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
beb0: 45 5f 44 4f 4e 45 20 20 20 20 20 20 20 20 31 30  E_DONE        10
bec0: 31 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 73 74  1  /* sqlite3_st
bed0: 65 70 28 29 20 68 61 73 20 66 69 6e 69 73 68 65  ep() has finishe
bee0: 64 20 65 78 65 63 75 74 69 6e 67 20 2a 2f 0a 2f  d executing */./
bef0: 2a 20 65 6e 64 2d 6f 66 2d 65 72 72 6f 72 2d 63  * end-of-error-c
bf00: 6f 64 65 73 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43  odes */../*.** C
bf10: 41 50 49 33 52 45 46 3a 20 45 78 74 65 6e 64 65  API3REF: Extende
bf20: 64 20 52 65 73 75 6c 74 20 43 6f 64 65 73 0a 2a  d Result Codes.*
bf30: 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 65 78 74  * KEYWORDS: {ext
bf40: 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
bf50: 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 7d 0a 2a  e definitions}.*
bf60: 2a 0a 2a 2a 20 49 6e 20 69 74 73 20 64 65 66 61  *.** In its defa
bf70: 75 6c 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ult configuratio
bf80: 6e 2c 20 53 51 4c 69 74 65 20 41 50 49 20 72 6f  n, SQLite API ro
bf90: 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20 6f 6e  utines return on
bfa0: 65 20 6f 66 20 33 30 20 69 6e 74 65 67 65 72 0a  e of 30 integer.
bfb0: 2a 2a 20 5b 72 65 73 75 6c 74 20 63 6f 64 65 73  ** [result codes
bfc0: 5d 2e 20 20 48 6f 77 65 76 65 72 2c 20 65 78 70  ].  However, exp
bfd0: 65 72 69 65 6e 63 65 20 68 61 73 20 73 68 6f 77  erience has show
bfe0: 6e 20 74 68 61 74 20 6d 61 6e 79 20 6f 66 0a 2a  n that many of.*
bff0: 2a 20 74 68 65 73 65 20 72 65 73 75 6c 74 20 63  * these result c
c000: 6f 64 65 73 20 61 72 65 20 74 6f 6f 20 63 6f 61  odes are too coa
c010: 72 73 65 2d 67 72 61 69 6e 65 64 2e 20 20 54 68  rse-grained.  Th
c020: 65 79 20 64 6f 20 6e 6f 74 20 70 72 6f 76 69 64  ey do not provid
c030: 65 20 61 73 0a 2a 2a 20 6d 75 63 68 20 69 6e 66  e as.** much inf
c040: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 70  ormation about p
c050: 72 6f 62 6c 65 6d 73 20 61 73 20 70 72 6f 67 72  roblems as progr
c060: 61 6d 6d 65 72 73 20 6d 69 67 68 74 20 6c 69 6b  ammers might lik
c070: 65 2e 20 20 49 6e 20 61 6e 20 65 66 66 6f 72 74  e.  In an effort
c080: 20 74 6f 0a 2a 2a 20 61 64 64 72 65 73 73 20 74   to.** address t
c090: 68 69 73 2c 20 6e 65 77 65 72 20 76 65 72 73 69  his, newer versi
c0a0: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 28 76  ons of SQLite (v
c0b0: 65 72 73 69 6f 6e 20 33 2e 33 2e 38 20 5b 64 61  ersion 3.3.8 [da
c0c0: 74 65 6f 66 3a 33 2e 33 2e 38 5d 0a 2a 2a 20 61  teof:3.3.8].** a
c0d0: 6e 64 20 6c 61 74 65 72 29 20 69 6e 63 6c 75 64  nd later) includ
c0e0: 65 0a 2a 2a 20 73 75 70 70 6f 72 74 20 66 6f 72  e.** support for
c0f0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 72 65 73 75   additional resu
c100: 6c 74 20 63 6f 64 65 73 20 74 68 61 74 20 70 72  lt codes that pr
c110: 6f 76 69 64 65 20 6d 6f 72 65 20 64 65 74 61 69  ovide more detai
c120: 6c 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a  led information.
c130: 2a 2a 20 61 62 6f 75 74 20 65 72 72 6f 72 73 2e  ** about errors.
c140: 20 54 68 65 73 65 20 5b 65 78 74 65 6e 64 65 64   These [extended
c150: 20 72 65 73 75 6c 74 20 63 6f 64 65 73 5d 20 61   result codes] a
c160: 72 65 20 65 6e 61 62 6c 65 64 20 6f 72 20 64 69  re enabled or di
c170: 73 61 62 6c 65 64 0a 2a 2a 20 6f 6e 20 61 20 70  sabled.** on a p
c180: 65 72 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  er database conn
c190: 65 63 74 69 6f 6e 20 62 61 73 69 73 20 75 73 69  ection basis usi
c1a0: 6e 67 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  ng the.** [sqlit
c1b0: 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75  e3_extended_resu
c1c0: 6c 74 5f 63 6f 64 65 73 28 29 5d 20 41 50 49 2e  lt_codes()] API.
c1d0: 20 20 4f 72 2c 20 74 68 65 20 65 78 74 65 6e 64    Or, the extend
c1e0: 65 64 20 63 6f 64 65 20 66 6f 72 0a 2a 2a 20 74  ed code for.** t
c1f0: 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 65  he most recent e
c200: 72 72 6f 72 20 63 61 6e 20 62 65 20 6f 62 74 61  rror can be obta
c210: 69 6e 65 64 20 75 73 69 6e 67 0a 2a 2a 20 5b 73  ined using.** [s
c220: 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
c230: 65 72 72 63 6f 64 65 28 29 5d 2e 0a 2a 2f 0a 23  errcode()]..*/.#
c240: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 52  define SQLITE_ER
c250: 52 4f 52 5f 4d 49 53 53 49 4e 47 5f 43 4f 4c 4c  ROR_MISSING_COLL
c260: 53 45 51 20 20 20 28 53 51 4c 49 54 45 5f 45 52  SEQ   (SQLITE_ER
c270: 52 4f 52 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  ROR | (1<<8)).#d
c280: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 52 52  efine SQLITE_ERR
c290: 4f 52 5f 52 45 54 52 59 20 20 20 20 20 20 20 20  OR_RETRY        
c2a0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 45 52 52       (SQLITE_ERR
c2b0: 4f 52 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  OR | (2<<8)).#de
c2c0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 52 52 4f  fine SQLITE_ERRO
c2d0: 52 5f 53 4e 41 50 53 48 4f 54 20 20 20 20 20 20  R_SNAPSHOT      
c2e0: 20 20 20 20 28 53 51 4c 49 54 45 5f 45 52 52 4f      (SQLITE_ERRO
c2f0: 52 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64 65 66  R | (3<<8)).#def
c300: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c310: 5f 52 45 41 44 20 20 20 20 20 20 20 20 20 20 20  _READ           
c320: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c330: 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69   | (1<<8)).#defi
c340: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
c350: 53 48 4f 52 54 5f 52 45 41 44 20 20 20 20 20 20  SHORT_READ      
c360: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
c370: 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (2<<8)).#defin
c380: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 57  e SQLITE_IOERR_W
c390: 52 49 54 45 20 20 20 20 20 20 20 20 20 20 20 20  RITE            
c3a0: 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   (SQLITE_IOERR |
c3b0: 20 28 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (3<<8)).#define
c3c0: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53   SQLITE_IOERR_FS
c3d0: 59 4e 43 20 20 20 20 20 20 20 20 20 20 20 20 20  YNC             
c3e0: 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  (SQLITE_IOERR | 
c3f0: 28 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (4<<8)).#define 
c400: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52  SQLITE_IOERR_DIR
c410: 5f 46 53 59 4e 43 20 20 20 20 20 20 20 20 20 28  _FSYNC         (
c420: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c430: 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  5<<8)).#define S
c440: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 54 52 55 4e  QLITE_IOERR_TRUN
c450: 43 41 54 45 20 20 20 20 20 20 20 20 20 20 28 53  CATE          (S
c460: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 36  QLITE_IOERR | (6
c470: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
c480: 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53 54 41 54  LITE_IOERR_FSTAT
c490: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51               (SQ
c4a0: 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 37 3c  LITE_IOERR | (7<
c4b0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
c4c0: 49 54 45 5f 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b  ITE_IOERR_UNLOCK
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c              (SQL
c4e0: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 38 3c 3c  ITE_IOERR | (8<<
c4f0: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c500: 54 45 5f 49 4f 45 52 52 5f 52 44 4c 4f 43 4b 20  TE_IOERR_RDLOCK 
c510: 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49             (SQLI
c520: 54 45 5f 49 4f 45 52 52 20 7c 20 28 39 3c 3c 38  TE_IOERR | (9<<8
c530: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c540: 45 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45 20 20  E_IOERR_DELETE  
c550: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c560: 45 5f 49 4f 45 52 52 20 7c 20 28 31 30 3c 3c 38  E_IOERR | (10<<8
c570: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c580: 45 5f 49 4f 45 52 52 5f 42 4c 4f 43 4b 45 44 20  E_IOERR_BLOCKED 
c590: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c5a0: 45 5f 49 4f 45 52 52 20 7c 20 28 31 31 3c 3c 38  E_IOERR | (11<<8
c5b0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c5c0: 45 5f 49 4f 45 52 52 5f 4e 4f 4d 45 4d 20 20 20  E_IOERR_NOMEM   
c5d0: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c5e0: 45 5f 49 4f 45 52 52 20 7c 20 28 31 32 3c 3c 38  E_IOERR | (12<<8
c5f0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c600: 45 5f 49 4f 45 52 52 5f 41 43 43 45 53 53 20 20  E_IOERR_ACCESS  
c610: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c620: 45 5f 49 4f 45 52 52 20 7c 20 28 31 33 3c 3c 38  E_IOERR | (13<<8
c630: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c640: 45 5f 49 4f 45 52 52 5f 43 48 45 43 4b 52 45 53  E_IOERR_CHECKRES
c650: 45 52 56 45 44 4c 4f 43 4b 20 28 53 51 4c 49 54  ERVEDLOCK (SQLIT
c660: 45 5f 49 4f 45 52 52 20 7c 20 28 31 34 3c 3c 38  E_IOERR | (14<<8
c670: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c680: 45 5f 49 4f 45 52 52 5f 4c 4f 43 4b 20 20 20 20  E_IOERR_LOCK    
c690: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c6a0: 45 5f 49 4f 45 52 52 20 7c 20 28 31 35 3c 3c 38  E_IOERR | (15<<8
c6b0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c6c0: 45 5f 49 4f 45 52 52 5f 43 4c 4f 53 45 20 20 20  E_IOERR_CLOSE   
c6d0: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c6e0: 45 5f 49 4f 45 52 52 20 7c 20 28 31 36 3c 3c 38  E_IOERR | (16<<8
c6f0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c700: 45 5f 49 4f 45 52 52 5f 44 49 52 5f 43 4c 4f 53  E_IOERR_DIR_CLOS
c710: 45 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54  E         (SQLIT
c720: 45 5f 49 4f 45 52 52 20 7c 20 28 31 37 3c 3c 38  E_IOERR | (17<<8
c730: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c740: 45 5f 49 4f 45 52 52 5f 53 48 4d 4f 50 45 4e 20  E_IOERR_SHMOPEN 
c750: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c760: 45 5f 49 4f 45 52 52 20 7c 20 28 31 38 3c 3c 38  E_IOERR | (18<<8
c770: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c780: 45 5f 49 4f 45 52 52 5f 53 48 4d 53 49 5a 45 20  E_IOERR_SHMSIZE 
c790: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c7a0: 45 5f 49 4f 45 52 52 20 7c 20 28 31 39 3c 3c 38  E_IOERR | (19<<8
c7b0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c7c0: 45 5f 49 4f 45 52 52 5f 53 48 4d 4c 4f 43 4b 20  E_IOERR_SHMLOCK 
c7d0: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c7e0: 45 5f 49 4f 45 52 52 20 7c 20 28 32 30 3c 3c 38  E_IOERR | (20<<8
c7f0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c800: 45 5f 49 4f 45 52 52 5f 53 48 4d 4d 41 50 20 20  E_IOERR_SHMMAP  
c810: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c820: 45 5f 49 4f 45 52 52 20 7c 20 28 32 31 3c 3c 38  E_IOERR | (21<<8
c830: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c840: 45 5f 49 4f 45 52 52 5f 53 45 45 4b 20 20 20 20  E_IOERR_SEEK    
c850: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c860: 45 5f 49 4f 45 52 52 20 7c 20 28 32 32 3c 3c 38  E_IOERR | (22<<8
c870: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c880: 45 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45 5f 4e  E_IOERR_DELETE_N
c890: 4f 45 4e 54 20 20 20 20 20 20 28 53 51 4c 49 54  OENT      (SQLIT
c8a0: 45 5f 49 4f 45 52 52 20 7c 20 28 32 33 3c 3c 38  E_IOERR | (23<<8
c8b0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c8c0: 45 5f 49 4f 45 52 52 5f 4d 4d 41 50 20 20 20 20  E_IOERR_MMAP    
c8d0: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c8e0: 45 5f 49 4f 45 52 52 20 7c 20 28 32 34 3c 3c 38  E_IOERR | (24<<8
c8f0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c900: 45 5f 49 4f 45 52 52 5f 47 45 54 54 45 4d 50 50  E_IOERR_GETTEMPP
c910: 41 54 48 20 20 20 20 20 20 20 28 53 51 4c 49 54  ATH       (SQLIT
c920: 45 5f 49 4f 45 52 52 20 7c 20 28 32 35 3c 3c 38  E_IOERR | (25<<8
c930: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c940: 45 5f 49 4f 45 52 52 5f 43 4f 4e 56 50 41 54 48  E_IOERR_CONVPATH
c950: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c960: 45 5f 49 4f 45 52 52 20 7c 20 28 32 36 3c 3c 38  E_IOERR | (26<<8
c970: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c980: 45 5f 49 4f 45 52 52 5f 56 4e 4f 44 45 20 20 20  E_IOERR_VNODE   
c990: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c9a0: 45 5f 49 4f 45 52 52 20 7c 20 28 32 37 3c 3c 38  E_IOERR | (27<<8
c9b0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c9c0: 45 5f 49 4f 45 52 52 5f 41 55 54 48 20 20 20 20  E_IOERR_AUTH    
c9d0: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c9e0: 45 5f 49 4f 45 52 52 20 7c 20 28 32 38 3c 3c 38  E_IOERR | (28<<8
c9f0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
ca00: 45 5f 49 4f 45 52 52 5f 42 45 47 49 4e 5f 41 54  E_IOERR_BEGIN_AT
ca10: 4f 4d 49 43 20 20 20 20 20 20 28 53 51 4c 49 54  OMIC      (SQLIT
ca20: 45 5f 49 4f 45 52 52 20 7c 20 28 32 39 3c 3c 38  E_IOERR | (29<<8
ca30: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
ca40: 45 5f 49 4f 45 52 52 5f 43 4f 4d 4d 49 54 5f 41  E_IOERR_COMMIT_A
ca50: 54 4f 4d 49 43 20 20 20 20 20 28 53 51 4c 49 54  TOMIC     (SQLIT
ca60: 45 5f 49 4f 45 52 52 20 7c 20 28 33 30 3c 3c 38  E_IOERR | (30<<8
ca70: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
ca80: 45 5f 49 4f 45 52 52 5f 52 4f 4c 4c 42 41 43 4b  E_IOERR_ROLLBACK
ca90: 5f 41 54 4f 4d 49 43 20 20 20 28 53 51 4c 49 54  _ATOMIC   (SQLIT
caa0: 45 5f 49 4f 45 52 52 20 7c 20 28 33 31 3c 3c 38  E_IOERR | (31<<8
cab0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
cac0: 45 5f 4c 4f 43 4b 45 44 5f 53 48 41 52 45 44 43  E_LOCKED_SHAREDC
cad0: 41 43 48 45 20 20 20 20 20 20 28 53 51 4c 49 54  ACHE      (SQLIT
cae0: 45 5f 4c 4f 43 4b 45 44 20 7c 20 20 28 31 3c 3c  E_LOCKED |  (1<<
caf0: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
cb00: 54 45 5f 4c 4f 43 4b 45 44 5f 56 54 41 42 20 20  TE_LOCKED_VTAB  
cb10: 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49             (SQLI
cb20: 54 45 5f 4c 4f 43 4b 45 44 20 7c 20 20 28 32 3c  TE_LOCKED |  (2<
cb30: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cb40: 49 54 45 5f 42 55 53 59 5f 52 45 43 4f 56 45 52  ITE_BUSY_RECOVER
cb50: 59 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c  Y           (SQL
cb60: 49 54 45 5f 42 55 53 59 20 20 20 7c 20 20 28 31  ITE_BUSY   |  (1
cb70: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
cb80: 4c 49 54 45 5f 42 55 53 59 5f 53 4e 41 50 53 48  LITE_BUSY_SNAPSH
cb90: 4f 54 20 20 20 20 20 20 20 20 20 20 20 28 53 51  OT           (SQ
cba0: 4c 49 54 45 5f 42 55 53 59 20 20 20 7c 20 20 28  LITE_BUSY   |  (
cbb0: 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  2<<8)).#define S
cbc0: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 4e  QLITE_CANTOPEN_N
cbd0: 4f 54 45 4d 50 44 49 52 20 20 20 20 20 20 28 53  OTEMPDIR      (S
cbe0: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c  QLITE_CANTOPEN |
cbf0: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
cc00: 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e   SQLITE_CANTOPEN
cc10: 5f 49 53 44 49 52 20 20 20 20 20 20 20 20 20 20  _ISDIR          
cc20: 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e  (SQLITE_CANTOPEN
cc30: 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69   | (2<<8)).#defi
cc40: 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  ne SQLITE_CANTOP
cc50: 45 4e 5f 46 55 4c 4c 50 41 54 48 20 20 20 20 20  EN_FULLPATH     
cc60: 20 20 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50    (SQLITE_CANTOP
cc70: 45 4e 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64 65  EN | (3<<8)).#de
cc80: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54  fine SQLITE_CANT
cc90: 4f 50 45 4e 5f 43 4f 4e 56 50 41 54 48 20 20 20  OPEN_CONVPATH   
cca0: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 41 4e 54      (SQLITE_CANT
ccb0: 4f 50 45 4e 20 7c 20 28 34 3c 3c 38 29 29 0a 23  OPEN | (4<<8)).#
ccc0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41  define SQLITE_CA
ccd0: 4e 54 4f 50 45 4e 5f 44 49 52 54 59 57 41 4c 20  NTOPEN_DIRTYWAL 
cce0: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43 41        (SQLITE_CA
ccf0: 4e 54 4f 50 45 4e 20 7c 20 28 35 3c 3c 38 29 29  NTOPEN | (5<<8))
cd00: 20 2f 2a 20 4e 6f 74 20 55 73 65 64 20 2a 2f 0a   /* Not Used */.
cd10: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
cd20: 4f 52 52 55 50 54 5f 56 54 41 42 20 20 20 20 20  ORRUPT_VTAB     
cd30: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43         (SQLITE_C
cd40: 4f 52 52 55 50 54 20 7c 20 28 31 3c 3c 38 29 29  ORRUPT | (1<<8))
cd50: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cd60: 43 4f 52 52 55 50 54 5f 53 45 51 55 45 4e 43 45  CORRUPT_SEQUENCE
cd70: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
cd80: 43 4f 52 52 55 50 54 20 7c 20 28 32 3c 3c 38 29  CORRUPT | (2<<8)
cd90: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
cda0: 5f 52 45 41 44 4f 4e 4c 59 5f 52 45 43 4f 56 45  _READONLY_RECOVE
cdb0: 52 59 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  RY       (SQLITE
cdc0: 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 31 3c 3c  _READONLY | (1<<
cdd0: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
cde0: 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 43 41 4e 54  TE_READONLY_CANT
cdf0: 4c 4f 43 4b 20 20 20 20 20 20 20 28 53 51 4c 49  LOCK       (SQLI
ce00: 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 32  TE_READONLY | (2
ce10: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
ce20: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 52 4f  LITE_READONLY_RO
ce30: 4c 4c 42 41 43 4b 20 20 20 20 20 20 20 28 53 51  LLBACK       (SQ
ce40: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20  LITE_READONLY | 
ce50: 28 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (3<<8)).#define 
ce60: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f  SQLITE_READONLY_
ce70: 44 42 4d 4f 56 45 44 20 20 20 20 20 20 20 20 28  DBMOVED        (
ce80: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20  SQLITE_READONLY 
ce90: 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (4<<8)).#defin
cea0: 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c  e SQLITE_READONL
ceb0: 59 5f 43 41 4e 54 49 4e 49 54 20 20 20 20 20 20  Y_CANTINIT      
cec0: 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c   (SQLITE_READONL
ced0: 59 20 7c 20 28 35 3c 3c 38 29 29 0a 23 64 65 66  Y | (5<<8)).#def
cee0: 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f  ine SQLITE_READO
cef0: 4e 4c 59 5f 44 49 52 45 43 54 4f 52 59 20 20 20  NLY_DIRECTORY   
cf00: 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f     (SQLITE_READO
cf10: 4e 4c 59 20 7c 20 28 36 3c 3c 38 29 29 0a 23 64  NLY | (6<<8)).#d
cf20: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 42 4f  efine SQLITE_ABO
cf30: 52 54 5f 52 4f 4c 4c 42 41 43 4b 20 20 20 20 20  RT_ROLLBACK     
cf40: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 41 42 4f       (SQLITE_ABO
cf50: 52 54 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  RT | (2<<8)).#de
cf60: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
cf70: 54 52 41 49 4e 54 5f 43 48 45 43 4b 20 20 20 20  TRAINT_CHECK    
cf80: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
cf90: 54 52 41 49 4e 54 20 7c 20 28 31 3c 3c 38 29 29  TRAINT | (1<<8))
cfa0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cfb0: 43 4f 4e 53 54 52 41 49 4e 54 5f 43 4f 4d 4d 49  CONSTRAINT_COMMI
cfc0: 54 48 4f 4f 4b 20 20 20 28 53 51 4c 49 54 45 5f  THOOK   (SQLITE_
cfd0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 32 3c  CONSTRAINT | (2<
cfe0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cff0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 46  ITE_CONSTRAINT_F
d000: 4f 52 45 49 47 4e 4b 45 59 20 20 20 28 53 51 4c  OREIGNKEY   (SQL
d010: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
d020: 20 28 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (3<<8)).#define
d030: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
d040: 4e 54 5f 46 55 4e 43 54 49 4f 4e 20 20 20 20 20  NT_FUNCTION     
d050: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
d060: 4e 54 20 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65  NT | (4<<8)).#de
d070: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
d080: 54 52 41 49 4e 54 5f 4e 4f 54 4e 55 4c 4c 20 20  TRAINT_NOTNULL  
d090: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
d0a0: 54 52 41 49 4e 54 20 7c 20 28 35 3c 3c 38 29 29  TRAINT | (5<<8))
d0b0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
d0c0: 43 4f 4e 53 54 52 41 49 4e 54 5f 50 52 49 4d 41  CONSTRAINT_PRIMA
d0d0: 52 59 4b 45 59 20 20 20 28 53 51 4c 49 54 45 5f  RYKEY   (SQLITE_
d0e0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 36 3c  CONSTRAINT | (6<
d0f0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
d100: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 54  ITE_CONSTRAINT_T
d110: 52 49 47 47 45 52 20 20 20 20 20 20 28 53 51 4c  RIGGER      (SQL
d120: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
d130: 20 28 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (7<<8)).#define
d140: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
d150: 4e 54 5f 55 4e 49 51 55 45 20 20 20 20 20 20 20  NT_UNIQUE       
d160: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
d170: 4e 54 20 7c 20 28 38 3c 3c 38 29 29 0a 23 64 65  NT | (8<<8)).#de
d180: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
d190: 54 52 41 49 4e 54 5f 56 54 41 42 20 20 20 20 20  TRAINT_VTAB     
d1a0: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
d1b0: 54 52 41 49 4e 54 20 7c 20 28 39 3c 3c 38 29 29  TRAINT | (9<<8))
d1c0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
d1d0: 43 4f 4e 53 54 52 41 49 4e 54 5f 52 4f 57 49 44  CONSTRAINT_ROWID
d1e0: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
d1f0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 28 31 30 3c  CONSTRAINT |(10<
d200: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
d210: 49 54 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f 56  ITE_NOTICE_RECOV
d220: 45 52 5f 57 41 4c 20 20 20 20 20 20 28 53 51 4c  ER_WAL      (SQL
d230: 49 54 45 5f 4e 4f 54 49 43 45 20 7c 20 28 31 3c  ITE_NOTICE | (1<
d240: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
d250: 49 54 45 5f 4e 4f 54 49 43 45 5f 52 45 43 4f 56  ITE_NOTICE_RECOV
d260: 45 52 5f 52 4f 4c 4c 42 41 43 4b 20 28 53 51 4c  ER_ROLLBACK (SQL
d270: 49 54 45 5f 4e 4f 54 49 43 45 20 7c 20 28 32 3c  ITE_NOTICE | (2<
d280: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
d290: 49 54 45 5f 57 41 52 4e 49 4e 47 5f 41 55 54 4f  ITE_WARNING_AUTO
d2a0: 49 4e 44 45 58 20 20 20 20 20 20 20 28 53 51 4c  INDEX       (SQL
d2b0: 49 54 45 5f 57 41 52 4e 49 4e 47 20 7c 20 28 31  ITE_WARNING | (1
d2c0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
d2d0: 4c 49 54 45 5f 41 55 54 48 5f 55 53 45 52 20 20  LITE_AUTH_USER  
d2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51               (SQ
d2f0: 4c 49 54 45 5f 41 55 54 48 20 7c 20 28 31 3c 3c  LITE_AUTH | (1<<
d300: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
d310: 54 45 5f 4f 4b 5f 4c 4f 41 44 5f 50 45 52 4d 41  TE_OK_LOAD_PERMA
d320: 4e 45 4e 54 4c 59 20 20 20 20 20 28 53 51 4c 49  NENTLY     (SQLI
d330: 54 45 5f 4f 4b 20 7c 20 28 31 3c 3c 38 29 29 0a  TE_OK | (1<<8)).
d340: 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
d350: 20 46 6c 61 67 73 20 46 6f 72 20 46 69 6c 65 20   Flags For File 
d360: 4f 70 65 6e 20 4f 70 65 72 61 74 69 6f 6e 73 0a  Open Operations.
d370: 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 62 69 74 20  **.** These bit 
d380: 76 61 6c 75 65 73 20 61 72 65 20 69 6e 74 65 6e  values are inten
d390: 64 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20 74  ded for use in t
d3a0: 68 65 0a 2a 2a 20 33 72 64 20 70 61 72 61 6d 65  he.** 3rd parame
d3b0: 74 65 72 20 74 6f 20 74 68 65 20 5b 73 71 6c 69  ter to the [sqli
d3c0: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 69  te3_open_v2()] i
d3d0: 6e 74 65 72 66 61 63 65 20 61 6e 64 0a 2a 2a 20  nterface and.** 
d3e0: 69 6e 20 74 68 65 20 34 74 68 20 70 61 72 61 6d  in the 4th param
d3f0: 65 74 65 72 20 74 6f 20 74 68 65 20 5b 73 71 6c  eter to the [sql
d400: 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20  ite3_vfs.xOpen] 
d410: 6d 65 74 68 6f 64 2e 0a 2a 2f 0a 23 64 65 66 69  method..*/.#defi
d420: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  ne SQLITE_OPEN_R
d430: 45 41 44 4f 4e 4c 59 20 20 20 20 20 20 20 20 20  EADONLY         
d440: 30 78 30 30 30 30 30 30 30 31 20 20 2f 2a 20 4f  0x00000001  /* O
d450: 6b 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  k for sqlite3_op
d460: 65 6e 5f 76 32 28 29 20 2a 2f 0a 23 64 65 66 69  en_v2() */.#defi
d470: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  ne SQLITE_OPEN_R
d480: 45 41 44 57 52 49 54 45 20 20 20 20 20 20 20 20  EADWRITE        
d490: 30 78 30 30 30 30 30 30 30 32 20 20 2f 2a 20 4f  0x00000002  /* O
d4a0: 6b 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  k for sqlite3_op
d4b0: 65 6e 5f 76 32 28 29 20 2a 2f 0a 23 64 65 66 69  en_v2() */.#defi
d4c0: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43  ne SQLITE_OPEN_C
d4d0: 52 45 41 54 45 20 20 20 20 20 20 20 20 20 20 20  REATE           
d4e0: 30 78 30 30 30 30 30 30 30 34 20 20 2f 2a 20 4f  0x00000004  /* O
d4f0: 6b 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  k for sqlite3_op
d500: 65 6e 5f 76 32 28 29 20 2a 2f 0a 23 64 65 66 69  en_v2() */.#defi
d510: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44  ne SQLITE_OPEN_D
d520: 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 20 20 20 20  ELETEONCLOSE    
d530: 30 78 30 30 30 30 30 30 30 38 20 20 2f 2a 20 56  0x00000008  /* V
d540: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d550: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 45  ne SQLITE_OPEN_E
d560: 58 43 4c 55 53 49 56 45 20 20 20 20 20 20 20 20  XCLUSIVE        
d570: 30 78 30 30 30 30 30 30 31 30 20 20 2f 2a 20 56  0x00000010  /* V
d580: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d590: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 41  ne SQLITE_OPEN_A
d5a0: 55 54 4f 50 52 4f 58 59 20 20 20 20 20 20 20 20  UTOPROXY        
d5b0: 30 78 30 30 30 30 30 30 32 30 20 20 2f 2a 20 56  0x00000020  /* V
d5c0: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d5d0: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55  ne SQLITE_OPEN_U
d5e0: 52 49 20 20 20 20 20 20 20 20 20 20 20 20 20 20  RI              
d5f0: 30 78 30 30 30 30 30 30 34 30 20 20 2f 2a 20 4f  0x00000040  /* O
d600: 6b 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  k for sqlite3_op
d610: 65 6e 5f 76 32 28 29 20 2a 2f 0a 23 64 65 66 69  en_v2() */.#defi
d620: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d  ne SQLITE_OPEN_M
d630: 45 4d 4f 52 59 20 20 20 20 20 20 20 20 20 20 20  EMORY           
d640: 30 78 30 30 30 30 30 30 38 30 20 20 2f 2a 20 4f  0x00000080  /* O
d650: 6b 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  k for sqlite3_op
d660: 65 6e 5f 76 32 28 29 20 2a 2f 0a 23 64 65 66 69  en_v2() */.#defi
d670: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d  ne SQLITE_OPEN_M
d680: 41 49 4e 5f 44 42 20 20 20 20 20 20 20 20 20 20  AIN_DB          
d690: 30 78 30 30 30 30 30 31 30 30 20 20 2f 2a 20 56  0x00000100  /* V
d6a0: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d6b0: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 54  ne SQLITE_OPEN_T
d6c0: 45 4d 50 5f 44 42 20 20 20 20 20 20 20 20 20 20  EMP_DB          
d6d0: 30 78 30 30 30 30 30 32 30 30 20 20 2f 2a 20 56  0x00000200  /* V
d6e0: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d6f0: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 54  ne SQLITE_OPEN_T
d700: 52 41 4e 53 49 45 4e 54 5f 44 42 20 20 20 20 20  RANSIENT_DB     
d710: 30 78 30 30 30 30 30 34 30 30 20 20 2f 2a 20 56  0x00000400  /* V
d720: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d730: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d  ne SQLITE_OPEN_M
d740: 41 49 4e 5f 4a 4f 55 52 4e 41 4c 20 20 20 20 20  AIN_JOURNAL     
d750: 30 78 30 30 30 30 30 38 30 30 20 20 2f 2a 20 56  0x00000800  /* V
d760: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d770: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 54  ne SQLITE_OPEN_T
d780: 45 4d 50 5f 4a 4f 55 52 4e 41 4c 20 20 20 20 20  EMP_JOURNAL     
d790: 30 78 30 30 30 30 31 30 30 30 20 20 2f 2a 20 56  0x00001000  /* V
d7a0: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d7b0: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53  ne SQLITE_OPEN_S
d7c0: 55 42 4a 4f 55 52 4e 41 4c 20 20 20 20 20 20 20  UBJOURNAL       
d7d0: 30 78 30 30 30 30 32 30 30 30 20 20 2f 2a 20 56  0x00002000  /* V
d7e0: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d7f0: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d  ne SQLITE_OPEN_M
d800: 41 53 54 45 52 5f 4a 4f 55 52 4e 41 4c 20 20 20  ASTER_JOURNAL   
d810: 30 78 30 30 30 30 34 30 30 30 20 20 2f 2a 20 56  0x00004000  /* V
d820: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  FS only */.#defi
d830: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e  ne SQLITE_OPEN_N
d840: 4f 4d 55 54 45 58 20 20 20 20 20 20 20 20 20 20  OMUTEX          
d850: 30 78 30 30 30 30 38 30 30 30 20 20 2f 2a 20 4f  0x00008000  /* O
d860: 6b 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  k for sqlite3_op
d870: 65 6e 5f 76 32 28 29 20 2a 2f 0a 23 64 65 66 69  en_v2() */.#defi
d880: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46  ne SQLITE_OPEN_F
d890: 55 4c 4c 4d 55 54 45 58 20 20 20 20 20 20 20 20  ULLMUTEX        
d8a0: 30 78 30 30 30 31 30 30 30 30 20 20 2f 2a 20 4f  0x00010000  /* O
d8b0: 6b 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  k for sqlite3_op
d8c0: 65 6e 5f 76 32 28 29 20 2a 2f 0a 23 64 65 66 69  en_v2() */.#defi
d8d0: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53  ne SQLITE_OPEN_S
d8e0: 48 41 52 45 44 43 41 43 48 45 20 20 20 20 20 20  HAREDCACHE      
d8f0: 30 78 30 30 30 32 30 30 30 30 20 20 2f 2a 20 4f  0x00020000  /* O
d900: 6b 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  k for sqlite3_op
d910: 65 6e 5f 76 32 28 29 20 2a 2f 0a 23 64 65 66 69  en_v2() */.#defi
d920: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 50  ne SQLITE_OPEN_P
d930: 52 49 56 41 54 45 43 41 43 48 45 20 20 20 20 20  RIVATECACHE     
d940: 30 78 30 30 30 34 30 30 30 30 20 20 2f 2a 20 4f  0x00040000  /* O
d950: 6b 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  k for sqlite3_op
d960: 65 6e 5f 76 32 28 29 20 2a 2f 0a 23 64 65 66 69  en_v2() */.#defi
d970: 6e 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 57  ne SQLITE_OPEN_W
d980: 41 4c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  AL              
d990: 30 78 30 30 30 38 30 30 30 30 20 20 2f 2a 20 56  0x00080000  /* V
d9a0: 46 53 20 6f 6e 6c 79 20 2a 2f 0a 0a 2f 2a 20 52  FS only */../* R
d9b0: 65 73 65 72 76 65 64 3a 20 20 20 20 20 20 20 20  eserved:        
d9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9d0: 20 30 78 30 30 46 30 30 30 30 30 20 2a 2f 0a 0a   0x00F00000 */..
d9e0: 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
d9f0: 44 65 76 69 63 65 20 43 68 61 72 61 63 74 65 72  Device Character
da00: 69 73 74 69 63 73 0a 2a 2a 0a 2a 2a 20 54 68 65  istics.**.** The
da10: 20 78 44 65 76 69 63 65 43 68 61 72 61 63 74 65   xDeviceCharacte
da20: 72 69 73 74 69 63 73 20 6d 65 74 68 6f 64 20 6f  ristics method o
da30: 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  f the [sqlite3_i
da40: 6f 5f 6d 65 74 68 6f 64 73 5d 0a 2a 2a 20 6f 62  o_methods].** ob
da50: 6a 65 63 74 20 72 65 74 75 72 6e 73 20 61 6e 20  ject returns an 
da60: 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
da70: 20 61 20 76 65 63 74 6f 72 20 6f 66 20 74 68 65   a vector of the
da80: 73 65 0a 2a 2a 20 62 69 74 20 76 61 6c 75 65 73  se.** bit values
da90: 20 65 78 70 72 65 73 73 69 6e 67 20 49 2f 4f 20   expressing I/O 
daa0: 63 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20  characteristics 
dab0: 6f 66 20 74 68 65 20 6d 61 73 73 20 73 74 6f 72  of the mass stor
dac0: 61 67 65 0a 2a 2a 20 64 65 76 69 63 65 20 74 68  age.** device th
dad0: 61 74 20 68 6f 6c 64 73 20 74 68 65 20 66 69 6c  at holds the fil
dae0: 65 20 74 68 61 74 20 74 68 65 20 5b 73 71 6c 69  e that the [sqli
daf0: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 0a  te3_io_methods].
db00: 2a 2a 20 72 65 66 65 72 73 20 74 6f 2e 0a 2a 2a  ** refers to..**
db10: 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 49  .** The SQLITE_I
db20: 4f 43 41 50 5f 41 54 4f 4d 49 43 20 70 72 6f 70  OCAP_ATOMIC prop
db30: 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61 74 20  erty means that 
db40: 61 6c 6c 20 77 72 69 74 65 73 20 6f 66 0a 2a 2a  all writes of.**
db50: 20 61 6e 79 20 73 69 7a 65 20 61 72 65 20 61 74   any size are at
db60: 6f 6d 69 63 2e 20 20 54 68 65 20 53 51 4c 49 54  omic.  The SQLIT
db70: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 6e 6e  E_IOCAP_ATOMICnn
db80: 6e 20 76 61 6c 75 65 73 0a 2a 2a 20 6d 65 61 6e  n values.** mean
db90: 20 74 68 61 74 20 77 72 69 74 65 73 20 6f 66 20   that writes of 
dba0: 62 6c 6f 63 6b 73 20 74 68 61 74 20 61 72 65 20  blocks that are 
dbb0: 6e 6e 6e 20 62 79 74 65 73 20 69 6e 20 73 69 7a  nnn bytes in siz
dbc0: 65 20 61 6e 64 0a 2a 2a 20 61 72 65 20 61 6c 69  e and.** are ali
dbd0: 67 6e 65 64 20 74 6f 20 61 6e 20 61 64 64 72 65  gned to an addre
dbe0: 73 73 20 77 68 69 63 68 20 69 73 20 61 6e 20 69  ss which is an i
dbf0: 6e 74 65 67 65 72 20 6d 75 6c 74 69 70 6c 65 20  nteger multiple 
dc00: 6f 66 0a 2a 2a 20 6e 6e 6e 20 61 72 65 20 61 74  of.** nnn are at
dc10: 6f 6d 69 63 2e 20 20 54 68 65 20 53 51 4c 49 54  omic.  The SQLIT
dc20: 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f 41 50 50  E_IOCAP_SAFE_APP
dc30: 45 4e 44 20 76 61 6c 75 65 20 6d 65 61 6e 73 0a  END value means.
dc40: 2a 2a 20 74 68 61 74 20 77 68 65 6e 20 64 61 74  ** that when dat
dc50: 61 20 69 73 20 61 70 70 65 6e 64 65 64 20 74 6f  a is appended to
dc60: 20 61 20 66 69 6c 65 2c 20 74 68 65 20 64 61 74   a file, the dat
dc70: 61 20 69 73 20 61 70 70 65 6e 64 65 64 0a 2a 2a  a is appended.**
dc80: 20 66 69 72 73 74 20 74 68 65 6e 20 74 68 65 20   first then the 
dc90: 73 69 7a 65 20 6f 66 20 74 68 65 20 66 69 6c 65  size of the file
dca0: 20 69 73 20 65 78 74 65 6e 64 65 64 2c 20 6e 65   is extended, ne
dcb0: 76 65 72 20 74 68 65 20 6f 74 68 65 72 0a 2a 2a  ver the other.**
dcc0: 20 77 61 79 20 61 72 6f 75 6e 64 2e 20 20 54 68   way around.  Th
dcd0: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53  e SQLITE_IOCAP_S
dce0: 45 51 55 45 4e 54 49 41 4c 20 70 72 6f 70 65 72  EQUENTIAL proper
dcf0: 74 79 20 6d 65 61 6e 73 20 74 68 61 74 0a 2a 2a  ty means that.**
dd00: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20   information is 
dd10: 77 72 69 74 74 65 6e 20 74 6f 20 64 69 73 6b 20  written to disk 
dd20: 69 6e 20 74 68 65 20 73 61 6d 65 20 6f 72 64 65  in the same orde
dd30: 72 20 61 73 20 63 61 6c 6c 73 0a 2a 2a 20 74 6f  r as calls.** to
dd40: 20 78 57 72 69 74 65 28 29 2e 20 20 54 68 65 20   xWrite().  The 
dd50: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57  SQLITE_IOCAP_POW
dd60: 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
dd70: 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20   property means 
dd80: 74 68 61 74 0a 2a 2a 20 61 66 74 65 72 20 72 65  that.** after re
dd90: 62 6f 6f 74 20 66 6f 6c 6c 6f 77 69 6e 67 20 61  boot following a
dda0: 20 63 72 61 73 68 20 6f 72 20 70 6f 77 65 72 20   crash or power 
ddb0: 6c 6f 73 73 2c 20 74 68 65 20 6f 6e 6c 79 20 62  loss, the only b
ddc0: 79 74 65 73 20 69 6e 20 61 0a 2a 2a 20 66 69 6c  ytes in a.** fil
ddd0: 65 20 74 68 61 74 20 77 65 72 65 20 77 72 69 74  e that were writ
dde0: 74 65 6e 20 61 74 20 74 68 65 20 61 70 70 6c 69  ten at the appli
ddf0: 63 61 74 69 6f 6e 20 6c 65 76 65 6c 20 6d 69 67  cation level mig
de00: 68 74 20 68 61 76 65 20 63 68 61 6e 67 65 64 0a  ht have changed.
de10: 2a 2a 20 61 6e 64 20 74 68 61 74 20 61 64 6a 61  ** and that adja
de20: 63 65 6e 74 20 62 79 74 65 73 2c 20 65 76 65 6e  cent bytes, even
de30: 20 62 79 74 65 73 20 77 69 74 68 69 6e 20 74 68   bytes within th
de40: 65 20 73 61 6d 65 20 73 65 63 74 6f 72 20 61 72  e same sector ar
de50: 65 0a 2a 2a 20 67 75 61 72 61 6e 74 65 65 64 20  e.** guaranteed 
de60: 74 6f 20 62 65 20 75 6e 63 68 61 6e 67 65 64 2e  to be unchanged.
de70: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43    The SQLITE_IOC
de80: 41 50 5f 55 4e 44 45 4c 45 54 41 42 4c 45 5f 57  AP_UNDELETABLE_W
de90: 48 45 4e 5f 4f 50 45 4e 0a 2a 2a 20 66 6c 61 67  HEN_OPEN.** flag
dea0: 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20   indicates that 
deb0: 61 20 66 69 6c 65 20 63 61 6e 6e 6f 74 20 62 65  a file cannot be
dec0: 20 64 65 6c 65 74 65 64 20 77 68 65 6e 20 6f 70   deleted when op
ded0: 65 6e 2e 20 20 54 68 65 0a 2a 2a 20 53 51 4c 49  en.  The.** SQLI
dee0: 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42  TE_IOCAP_IMMUTAB
def0: 4c 45 20 66 6c 61 67 20 69 6e 64 69 63 61 74 65  LE flag indicate
df00: 73 20 74 68 61 74 20 74 68 65 20 66 69 6c 65 20  s that the file 
df10: 69 73 20 6f 6e 0a 2a 2a 20 72 65 61 64 2d 6f 6e  is on.** read-on
df20: 6c 79 20 6d 65 64 69 61 20 61 6e 64 20 63 61 6e  ly media and can
df30: 6e 6f 74 20 62 65 20 63 68 61 6e 67 65 64 20 65  not be changed e
df40: 76 65 6e 20 62 79 20 70 72 6f 63 65 73 73 65 73  ven by processes
df50: 20 77 69 74 68 0a 2a 2a 20 65 6c 65 76 61 74 65   with.** elevate
df60: 64 20 70 72 69 76 69 6c 65 67 65 73 2e 0a 2a 2a  d privileges..**
df70: 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 49  .** The SQLITE_I
df80: 4f 43 41 50 5f 42 41 54 43 48 5f 41 54 4f 4d 49  OCAP_BATCH_ATOMI
df90: 43 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73  C property means
dfa0: 20 74 68 61 74 20 74 68 65 20 75 6e 64 65 72 6c   that the underl
dfb0: 79 69 6e 67 0a 2a 2a 20 66 69 6c 65 73 79 73 74  ying.** filesyst
dfc0: 65 6d 20 73 75 70 70 6f 72 74 73 20 64 6f 69 6e  em supports doin
dfd0: 67 20 6d 75 6c 74 69 70 6c 65 20 77 72 69 74 65  g multiple write
dfe0: 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 74 6f 6d   operations atom
dff0: 69 63 61 6c 6c 79 20 77 68 65 6e 20 74 68 6f 73  ically when thos
e000: 65 0a 2a 2a 20 77 72 69 74 65 20 6f 70 65 72 61  e.** write opera
e010: 74 69 6f 6e 73 20 61 72 65 20 62 72 61 63 6b 65  tions are bracke
e020: 74 65 64 20 62 79 20 5b 53 51 4c 49 54 45 5f 46  ted by [SQLITE_F
e030: 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49  CNTL_BEGIN_ATOMI
e040: 43 5f 57 52 49 54 45 5d 20 61 6e 64 0a 2a 2a 20  C_WRITE] and.** 
e050: 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f  [SQLITE_FCNTL_CO
e060: 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54  MMIT_ATOMIC_WRIT
e070: 45 5d 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  E]..*/.#define S
e080: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
e090: 49 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20  IC              
e0a0: 20 20 20 30 78 30 30 30 30 30 30 30 31 0a 23 64     0x00000001.#d
e0b0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43  efine SQLITE_IOC
e0c0: 41 50 5f 41 54 4f 4d 49 43 35 31 32 20 20 20 20  AP_ATOMIC512    
e0d0: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30            0x0000
e0e0: 30 30 30 32 0a 23 64 65 66 69 6e 65 20 53 51 4c  0002.#define SQL
e0f0: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
e100: 31 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  1K              
e110: 20 30 78 30 30 30 30 30 30 30 34 0a 23 64 65 66   0x00000004.#def
e120: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  ine SQLITE_IOCAP
e130: 5f 41 54 4f 4d 49 43 32 4b 20 20 20 20 20 20 20  _ATOMIC2K       
e140: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
e150: 30 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  08.#define SQLIT
e160: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 34 4b  E_IOCAP_ATOMIC4K
e170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30                 0
e180: 78 30 30 30 30 30 30 31 30 0a 23 64 65 66 69 6e  x00000010.#defin
e190: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41  e SQLITE_IOCAP_A
e1a0: 54 4f 4d 49 43 38 4b 20 20 20 20 20 20 20 20 20  TOMIC8K         
e1b0: 20 20 20 20 20 20 30 78 30 30 30 30 30 30 32 30        0x00000020
e1c0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e1d0: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31 36 4b 20  IOCAP_ATOMIC16K 
e1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30               0x0
e1f0: 30 30 30 30 30 34 30 0a 23 64 65 66 69 6e 65 20  0000040.#define 
e200: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
e210: 4d 49 43 33 32 4b 20 20 20 20 20 20 20 20 20 20  MIC32K          
e220: 20 20 20 20 30 78 30 30 30 30 30 30 38 30 0a 23      0x00000080.#
e230: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
e240: 43 41 50 5f 41 54 4f 4d 49 43 36 34 4b 20 20 20  CAP_ATOMIC64K   
e250: 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30             0x000
e260: 30 30 31 30 30 0a 23 64 65 66 69 6e 65 20 53 51  00100.#define SQ
e270: 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f  LITE_IOCAP_SAFE_
e280: 41 50 50 45 4e 44 20 20 20 20 20 20 20 20 20 20  APPEND          
e290: 20 20 30 78 30 30 30 30 30 32 30 30 0a 23 64 65    0x00000200.#de
e2a0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41  fine SQLITE_IOCA
e2b0: 50 5f 53 45 51 55 45 4e 54 49 41 4c 20 20 20 20  P_SEQUENTIAL    
e2c0: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30           0x00000
e2d0: 34 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  400.#define SQLI
e2e0: 54 45 5f 49 4f 43 41 50 5f 55 4e 44 45 4c 45 54  TE_IOCAP_UNDELET
e2f0: 41 42 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e 20 20  ABLE_WHEN_OPEN  
e300: 30 78 30 30 30 30 30 38 30 30 0a 23 64 65 66 69  0x00000800.#defi
e310: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  ne SQLITE_IOCAP_
e320: 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52  POWERSAFE_OVERWR
e330: 49 54 45 20 20 20 20 30 78 30 30 30 30 31 30 30  ITE    0x0000100
e340: 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
e350: 5f 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42 4c 45  _IOCAP_IMMUTABLE
e360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78                0x
e370: 30 30 30 30 32 30 30 30 0a 23 64 65 66 69 6e 65  00002000.#define
e380: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 42 41   SQLITE_IOCAP_BA
e390: 54 43 48 5f 41 54 4f 4d 49 43 20 20 20 20 20 20  TCH_ATOMIC      
e3a0: 20 20 20 20 20 30 78 30 30 30 30 34 30 30 30 0a       0x00004000.
e3b0: 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
e3c0: 20 46 69 6c 65 20 4c 6f 63 6b 69 6e 67 20 4c 65   File Locking Le
e3d0: 76 65 6c 73 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74  vels.**.** SQLit
e3e0: 65 20 75 73 65 73 20 6f 6e 65 20 6f 66 20 74 68  e uses one of th
e3f0: 65 73 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75  ese integer valu
e400: 65 73 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64  es as the second
e410: 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  .** argument to 
e420: 63 61 6c 6c 73 20 69 74 20 6d 61 6b 65 73 20 74  calls it makes t
e430: 6f 20 74 68 65 20 78 4c 6f 63 6b 28 29 20 61 6e  o the xLock() an
e440: 64 20 78 55 6e 6c 6f 63 6b 28 29 20 6d 65 74 68  d xUnlock() meth
e450: 6f 64 73 0a 2a 2a 20 6f 66 20 61 6e 20 5b 73 71  ods.** of an [sq
e460: 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73  lite3_io_methods
e470: 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2f 0a 23 64 65  ] object..*/.#de
e480: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
e490: 5f 4e 4f 4e 45 20 20 20 20 20 20 20 20 20 20 30  _NONE          0
e4a0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e4b0: 4c 4f 43 4b 5f 53 48 41 52 45 44 20 20 20 20 20  LOCK_SHARED     
e4c0: 20 20 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c     1.#define SQL
e4d0: 49 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52 56 45  ITE_LOCK_RESERVE
e4e0: 44 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65  D      2.#define
e4f0: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 50 45 4e   SQLITE_LOCK_PEN
e500: 44 49 4e 47 20 20 20 20 20 20 20 33 0a 23 64 65  DING       3.#de
e510: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
e520: 5f 45 58 43 4c 55 53 49 56 45 20 20 20 20 20 34  _EXCLUSIVE     4
e530: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
e540: 3a 20 53 79 6e 63 68 72 6f 6e 69 7a 61 74 69 6f  : Synchronizatio
e550: 6e 20 54 79 70 65 20 46 6c 61 67 73 0a 2a 2a 0a  n Type Flags.**.
e560: 2a 2a 20 57 68 65 6e 20 53 51 4c 69 74 65 20 69  ** When SQLite i
e570: 6e 76 6f 6b 65 73 20 74 68 65 20 78 53 79 6e 63  nvokes the xSync
e580: 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 61 6e 0a  () method of an.
e590: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  ** [sqlite3_io_m
e5a0: 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 69  ethods] object i
e5b0: 74 20 75 73 65 73 20 61 20 63 6f 6d 62 69 6e 61  t uses a combina
e5c0: 74 69 6f 6e 20 6f 66 0a 2a 2a 20 74 68 65 73 65  tion of.** these
e5d0: 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 20   integer values 
e5e0: 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72  as the second ar
e5f0: 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 57 68  gument..**.** Wh
e600: 65 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 53 59  en the SQLITE_SY
e610: 4e 43 5f 44 41 54 41 4f 4e 4c 59 20 66 6c 61 67  NC_DATAONLY flag
e620: 20 69 73 20 75 73 65 64 2c 20 69 74 20 6d 65 61   is used, it mea
e630: 6e 73 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 73  ns that the.** s
e640: 79 6e 63 20 6f 70 65 72 61 74 69 6f 6e 20 6f 6e  ync operation on
e650: 6c 79 20 6e 65 65 64 73 20 74 6f 20 66 6c 75 73  ly needs to flus
e660: 68 20 64 61 74 61 20 74 6f 20 6d 61 73 73 20 73  h data to mass s
e670: 74 6f 72 61 67 65 2e 20 20 49 6e 6f 64 65 0a 2a  torage.  Inode.*
e680: 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6e 65  * information ne
e690: 65 64 20 6e 6f 74 20 62 65 20 66 6c 75 73 68 65  ed not be flushe
e6a0: 64 2e 20 49 66 20 74 68 65 20 6c 6f 77 65 72 20  d. If the lower 
e6b0: 66 6f 75 72 20 62 69 74 73 20 6f 66 20 74 68 65  four bits of the
e6c0: 20 66 6c 61 67 0a 2a 2a 20 65 71 75 61 6c 20 53   flag.** equal S
e6d0: 51 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41  QLITE_SYNC_NORMA
e6e0: 4c 2c 20 74 68 61 74 20 6d 65 61 6e 73 20 74 6f  L, that means to
e6f0: 20 75 73 65 20 6e 6f 72 6d 61 6c 20 66 73 79 6e   use normal fsyn
e700: 63 28 29 20 73 65 6d 61 6e 74 69 63 73 2e 0a 2a  c() semantics..*
e710: 2a 20 49 66 20 74 68 65 20 6c 6f 77 65 72 20 66  * If the lower f
e720: 6f 75 72 20 62 69 74 73 20 65 71 75 61 6c 20 53  our bits equal S
e730: 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 2c  QLITE_SYNC_FULL,
e740: 20 74 68 61 74 20 6d 65 61 6e 73 0a 2a 2a 20 74   that means.** t
e750: 6f 20 75 73 65 20 4d 61 63 20 4f 53 20 58 20 73  o use Mac OS X s
e760: 74 79 6c 65 20 66 75 6c 6c 73 79 6e 63 20 69 6e  tyle fullsync in
e770: 73 74 65 61 64 20 6f 66 20 66 73 79 6e 63 28 29  stead of fsync()
e780: 2e 0a 2a 2a 0a 2a 2a 20 44 6f 20 6e 6f 74 20 63  ..**.** Do not c
e790: 6f 6e 66 75 73 65 20 74 68 65 20 53 51 4c 49 54  onfuse the SQLIT
e7a0: 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c 20 61 6e  E_SYNC_NORMAL an
e7b0: 64 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55  d SQLITE_SYNC_FU
e7c0: 4c 4c 20 66 6c 61 67 73 0a 2a 2a 20 77 69 74 68  LL flags.** with
e7d0: 20 74 68 65 20 5b 50 52 41 47 4d 41 20 73 79 6e   the [PRAGMA syn
e7e0: 63 68 72 6f 6e 6f 75 73 5d 3d 4e 4f 52 4d 41 4c  chronous]=NORMAL
e7f0: 20 61 6e 64 20 5b 50 52 41 47 4d 41 20 73 79 6e   and [PRAGMA syn
e800: 63 68 72 6f 6e 6f 75 73 5d 3d 46 55 4c 4c 0a 2a  chronous]=FULL.*
e810: 2a 20 73 65 74 74 69 6e 67 73 2e 20 20 54 68 65  * settings.  The
e820: 20 5b 73 79 6e 63 68 72 6f 6e 6f 75 73 20 70 72   [synchronous pr
e830: 61 67 6d 61 5d 20 64 65 74 65 72 6d 69 6e 65 73  agma] determines
e840: 20 77 68 65 6e 20 63 61 6c 6c 73 20 74 6f 20 74   when calls to t
e850: 68 65 0a 2a 2a 20 78 53 79 6e 63 20 56 46 53 20  he.** xSync VFS 
e860: 6d 65 74 68 6f 64 20 6f 63 63 75 72 20 61 6e 64  method occur and
e870: 20 61 70 70 6c 69 65 73 20 75 6e 69 66 6f 72 6d   applies uniform
e880: 6c 79 20 61 63 72 6f 73 73 20 61 6c 6c 20 70 6c  ly across all pl
e890: 61 74 66 6f 72 6d 73 2e 0a 2a 2a 20 54 68 65 20  atforms..** The 
e8a0: 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d  SQLITE_SYNC_NORM
e8b0: 41 4c 20 61 6e 64 20 53 51 4c 49 54 45 5f 53 59  AL and SQLITE_SY
e8c0: 4e 43 5f 46 55 4c 4c 20 66 6c 61 67 73 20 64 65  NC_FULL flags de
e8d0: 74 65 72 6d 69 6e 65 20 68 6f 77 0a 2a 2a 20 65  termine how.** e
e8e0: 6e 65 72 67 65 74 69 63 20 6f 72 20 72 69 67 6f  nergetic or rigo
e8f0: 72 6f 75 73 20 6f 72 20 66 6f 72 63 65 66 75 6c  rous or forceful
e900: 20 74 68 65 20 73 79 6e 63 20 6f 70 65 72 61 74   the sync operat
e910: 69 6f 6e 73 20 61 72 65 20 61 6e 64 0a 2a 2a 20  ions are and.** 
e920: 6f 6e 6c 79 20 6d 61 6b 65 20 61 20 64 69 66 66  only make a diff
e930: 65 72 65 6e 63 65 20 6f 6e 20 4d 61 63 20 4f 53  erence on Mac OS
e940: 58 20 66 6f 72 20 74 68 65 20 64 65 66 61 75 6c  X for the defaul
e950: 74 20 53 51 4c 69 74 65 20 63 6f 64 65 2e 0a 2a  t SQLite code..*
e960: 2a 20 28 54 68 69 72 64 2d 70 61 72 74 79 20 56  * (Third-party V
e970: 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  FS implementatio
e980: 6e 73 20 6d 69 67 68 74 20 61 6c 73 6f 20 6d 61  ns might also ma
e990: 6b 65 20 74 68 65 20 64 69 73 74 69 6e 63 74 69  ke the distincti
e9a0: 6f 6e 0a 2a 2a 20 62 65 74 77 65 65 6e 20 53 51  on.** between SQ
e9b0: 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c  LITE_SYNC_NORMAL
e9c0: 20 61 6e 64 20 53 51 4c 49 54 45 5f 53 59 4e 43   and SQLITE_SYNC
e9d0: 5f 46 55 4c 4c 2c 20 62 75 74 20 61 6d 6f 6e 67  _FULL, but among
e9e0: 20 74 68 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6e   the.** operatin
e9f0: 67 20 73 79 73 74 65 6d 73 20 6e 61 74 69 76 65  g systems native
ea00: 6c 79 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  ly supported by 
ea10: 53 51 4c 69 74 65 2c 20 6f 6e 6c 79 20 4d 61 63  SQLite, only Mac
ea20: 20 4f 53 58 0a 2a 2a 20 63 61 72 65 73 20 61 62   OSX.** cares ab
ea30: 6f 75 74 20 74 68 65 20 64 69 66 66 65 72 65 6e  out the differen
ea40: 63 65 2e 29 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  ce.).*/.#define 
ea50: 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d  SQLITE_SYNC_NORM
ea60: 41 4c 20 20 20 20 20 20 20 20 30 78 30 30 30 30  AL        0x0000
ea70: 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  2.#define SQLITE
ea80: 5f 53 59 4e 43 5f 46 55 4c 4c 20 20 20 20 20 20  _SYNC_FULL      
ea90: 20 20 20 20 30 78 30 30 30 30 33 0a 23 64 65 66      0x00003.#def
eaa0: 69 6e 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f  ine SQLITE_SYNC_
eab0: 44 41 54 41 4f 4e 4c 59 20 20 20 20 20 20 30 78  DATAONLY      0x
eac0: 30 30 30 31 30 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  00010../*.** CAP
ead0: 49 33 52 45 46 3a 20 4f 53 20 49 6e 74 65 72 66  I3REF: OS Interf
eae0: 61 63 65 20 4f 70 65 6e 20 46 69 6c 65 20 48 61  ace Open File Ha
eaf0: 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20 41 6e 20 5b 73  ndle.**.** An [s
eb00: 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a  qlite3_file] obj
eb10: 65 63 74 20 72 65 70 72 65 73 65 6e 74 73 20 61  ect represents a
eb20: 6e 20 6f 70 65 6e 20 66 69 6c 65 20 69 6e 20 74  n open file in t
eb30: 68 65 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  he .** [sqlite3_
eb40: 76 66 73 20 7c 20 4f 53 20 69 6e 74 65 72 66 61  vfs | OS interfa
eb50: 63 65 20 6c 61 79 65 72 5d 2e 20 20 49 6e 64 69  ce layer].  Indi
eb60: 76 69 64 75 61 6c 20 4f 53 20 69 6e 74 65 72 66  vidual OS interf
eb70: 61 63 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74  ace.** implement
eb80: 61 74 69 6f 6e 73 20 77 69 6c 6c 0a 2a 2a 20 77  ations will.** w
eb90: 61 6e 74 20 74 6f 20 73 75 62 63 6c 61 73 73 20  ant to subclass 
eba0: 74 68 69 73 20 6f 62 6a 65 63 74 20 62 79 20 61  this object by a
ebb0: 70 70 65 6e 64 69 6e 67 20 61 64 64 69 74 69 6f  ppending additio
ebc0: 6e 61 6c 20 66 69 65 6c 64 73 0a 2a 2a 20 66 6f  nal fields.** fo
ebd0: 72 20 74 68 65 69 72 20 6f 77 6e 20 75 73 65 2e  r their own use.
ebe0: 20 20 54 68 65 20 70 4d 65 74 68 6f 64 73 20 65    The pMethods e
ebf0: 6e 74 72 79 20 69 73 20 61 20 70 6f 69 6e 74 65  ntry is a pointe
ec00: 72 20 74 6f 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69  r to an.** [sqli
ec10: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
ec20: 6f 62 6a 65 63 74 20 74 68 61 74 20 64 65 66 69  object that defi
ec30: 6e 65 73 20 6d 65 74 68 6f 64 73 20 66 6f 72 20  nes methods for 
ec40: 70 65 72 66 6f 72 6d 69 6e 67 0a 2a 2a 20 49 2f  performing.** I/
ec50: 4f 20 6f 70 65 72 61 74 69 6f 6e 73 20 6f 6e 20  O operations on 
ec60: 74 68 65 20 6f 70 65 6e 20 66 69 6c 65 2e 0a 2a  the open file..*
ec70: 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74  /.typedef struct
ec80: 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 20 73 71   sqlite3_file sq
ec90: 6c 69 74 65 33 5f 66 69 6c 65 3b 0a 73 74 72 75  lite3_file;.stru
eca0: 63 74 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 20  ct sqlite3_file 
ecb0: 7b 0a 20 20 63 6f 6e 73 74 20 73 74 72 75 63 74  {.  const struct
ecc0: 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68   sqlite3_io_meth
ecd0: 6f 64 73 20 2a 70 4d 65 74 68 6f 64 73 3b 20 20  ods *pMethods;  
ece0: 2f 2a 20 4d 65 74 68 6f 64 73 20 66 6f 72 20 61  /* Methods for a
ecf0: 6e 20 6f 70 65 6e 20 66 69 6c 65 20 2a 2f 0a 7d  n open file */.}
ed00: 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
ed10: 46 3a 20 4f 53 20 49 6e 74 65 72 66 61 63 65 20  F: OS Interface 
ed20: 46 69 6c 65 20 56 69 72 74 75 61 6c 20 4d 65 74  File Virtual Met
ed30: 68 6f 64 73 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a  hods Object.**.*
ed40: 2a 20 45 76 65 72 79 20 66 69 6c 65 20 6f 70 65  * Every file ope
ed50: 6e 65 64 20 62 79 20 74 68 65 20 5b 73 71 6c 69  ned by the [sqli
ed60: 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 6d  te3_vfs.xOpen] m
ed70: 65 74 68 6f 64 20 70 6f 70 75 6c 61 74 65 73 20  ethod populates 
ed80: 61 6e 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66  an.** [sqlite3_f
ed90: 69 6c 65 5d 20 6f 62 6a 65 63 74 20 28 6f 72 2c  ile] object (or,
eda0: 20 6d 6f 72 65 20 63 6f 6d 6d 6f 6e 6c 79 2c 20   more commonly, 
edb0: 61 20 73 75 62 63 6c 61 73 73 20 6f 66 20 74 68  a subclass of th
edc0: 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69  e.** [sqlite3_fi
edd0: 6c 65 5d 20 6f 62 6a 65 63 74 29 20 77 69 74 68  le] object) with
ede0: 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
edf0: 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
ee00: 73 20 6f 62 6a 65 63 74 2e 0a 2a 2a 20 54 68 69  s object..** Thi
ee10: 73 20 6f 62 6a 65 63 74 20 64 65 66 69 6e 65 73  s object defines
ee20: 20 74 68 65 20 6d 65 74 68 6f 64 73 20 75 73 65   the methods use
ee30: 64 20 74 6f 20 70 65 72 66 6f 72 6d 20 76 61 72  d to perform var
ee40: 69 6f 75 73 20 6f 70 65 72 61 74 69 6f 6e 73 0a  ious operations.
ee50: 2a 2a 20 61 67 61 69 6e 73 74 20 74 68 65 20 6f  ** against the o
ee60: 70 65 6e 20 66 69 6c 65 20 72 65 70 72 65 73 65  pen file represe
ee70: 6e 74 65 64 20 62 79 20 74 68 65 20 5b 73 71 6c  nted by the [sql
ee80: 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63  ite3_file] objec
ee90: 74 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20  t..**.** If the 
eea0: 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70  [sqlite3_vfs.xOp
eeb0: 65 6e 5d 20 6d 65 74 68 6f 64 20 73 65 74 73 20  en] method sets 
eec0: 74 68 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  the sqlite3_file
eed0: 2e 70 4d 65 74 68 6f 64 73 20 65 6c 65 6d 65 6e  .pMethods elemen
eee0: 74 20 0a 2a 2a 20 74 6f 20 61 20 6e 6f 6e 2d 4e  t .** to a non-N
eef0: 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 74 68 65  ULL pointer, the
ef00: 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6f  n the sqlite3_io
ef10: 5f 6d 65 74 68 6f 64 73 2e 78 43 6c 6f 73 65 20  _methods.xClose 
ef20: 6d 65 74 68 6f 64 0a 2a 2a 20 6d 61 79 20 62 65  method.** may be
ef30: 20 69 6e 76 6f 6b 65 64 20 65 76 65 6e 20 69 66   invoked even if
ef40: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66   the [sqlite3_vf
ef50: 73 2e 78 4f 70 65 6e 5d 20 72 65 70 6f 72 74 65  s.xOpen] reporte
ef60: 64 20 74 68 61 74 20 69 74 20 66 61 69 6c 65 64  d that it failed
ef70: 2e 20 20 54 68 65 0a 2a 2a 20 6f 6e 6c 79 20 77  .  The.** only w
ef80: 61 79 20 74 6f 20 70 72 65 76 65 6e 74 20 61 20  ay to prevent a 
ef90: 63 61 6c 6c 20 74 6f 20 78 43 6c 6f 73 65 20 66  call to xClose f
efa0: 6f 6c 6c 6f 77 69 6e 67 20 61 20 66 61 69 6c 65  ollowing a faile
efb0: 64 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78  d [sqlite3_vfs.x
efc0: 4f 70 65 6e 5d 0a 2a 2a 20 69 73 20 66 6f 72 20  Open].** is for 
efd0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  the [sqlite3_vfs
efe0: 2e 78 4f 70 65 6e 5d 20 74 6f 20 73 65 74 20 74  .xOpen] to set t
eff0: 68 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 2e  he sqlite3_file.
f000: 70 4d 65 74 68 6f 64 73 20 65 6c 65 6d 65 6e 74  pMethods element
f010: 0a 2a 2a 20 74 6f 20 4e 55 4c 4c 2e 0a 2a 2a 0a  .** to NULL..**.
f020: 2a 2a 20 54 68 65 20 66 6c 61 67 73 20 61 72 67  ** The flags arg
f030: 75 6d 65 6e 74 20 74 6f 20 78 53 79 6e 63 20 6d  ument to xSync m
f040: 61 79 20 62 65 20 6f 6e 65 20 6f 66 20 5b 53 51  ay be one of [SQ
f050: 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c  LITE_SYNC_NORMAL
f060: 5d 20 6f 72 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  ] or.** [SQLITE_
f070: 53 59 4e 43 5f 46 55 4c 4c 5d 2e 20 20 54 68 65  SYNC_FULL].  The
f080: 20 66 69 72 73 74 20 63 68 6f 69 63 65 20 69 73   first choice is
f090: 20 74 68 65 20 6e 6f 72 6d 61 6c 20 66 73 79 6e   the normal fsyn
f0a0: 63 28 29 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f  c()..** The seco
f0b0: 6e 64 20 63 68 6f 69 63 65 20 69 73 20 61 20 4d  nd choice is a M
f0c0: 61 63 20 4f 53 20 58 20 73 74 79 6c 65 20 66 75  ac OS X style fu
f0d0: 6c 6c 73 79 6e 63 2e 20 20 54 68 65 20 5b 53 51  llsync.  The [SQ
f0e0: 4c 49 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f 4e  LITE_SYNC_DATAON
f0f0: 4c 59 5d 0a 2a 2a 20 66 6c 61 67 20 6d 61 79 20  LY].** flag may 
f100: 62 65 20 4f 52 65 64 20 69 6e 20 74 6f 20 69 6e  be ORed in to in
f110: 64 69 63 61 74 65 20 74 68 61 74 20 6f 6e 6c 79  dicate that only
f120: 20 74 68 65 20 64 61 74 61 20 6f 66 20 74 68 65   the data of the
f130: 20 66 69 6c 65 0a 2a 2a 20 61 6e 64 20 6e 6f 74   file.** and not
f140: 20 69 74 73 20 69 6e 6f 64 65 20 6e 65 65 64 73   its inode needs
f150: 20 74 6f 20 62 65 20 73 79 6e 63 65 64 2e 0a 2a   to be synced..*
f160: 2a 0a 2a 2a 20 54 68 65 20 69 6e 74 65 67 65 72  *.** The integer
f170: 20 76 61 6c 75 65 73 20 74 6f 20 78 4c 6f 63 6b   values to xLock
f180: 28 29 20 61 6e 64 20 78 55 6e 6c 6f 63 6b 28 29  () and xUnlock()
f190: 20 61 72 65 20 6f 6e 65 20 6f 66 0a 2a 2a 20 3c   are one of.** <
f1a0: 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  ul>.** <li> [SQL
f1b0: 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e 45 5d 2c 0a  ITE_LOCK_NONE],.
f1c0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f1d0: 4c 4f 43 4b 5f 53 48 41 52 45 44 5d 2c 0a 2a 2a  LOCK_SHARED],.**
f1e0: 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f   <li> [SQLITE_LO
f1f0: 43 4b 5f 52 45 53 45 52 56 45 44 5d 2c 0a 2a 2a  CK_RESERVED],.**
f200: 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f   <li> [SQLITE_LO
f210: 43 4b 5f 50 45 4e 44 49 4e 47 5d 2c 20 6f 72 0a  CK_PENDING], or.
f220: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f230: 4c 4f 43 4b 5f 45 58 43 4c 55 53 49 56 45 5d 2e  LOCK_EXCLUSIVE].
f240: 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 20 78 4c 6f  .** </ul>.** xLo
f250: 63 6b 28 29 20 69 6e 63 72 65 61 73 65 73 20 74  ck() increases t
f260: 68 65 20 6c 6f 63 6b 2e 20 78 55 6e 6c 6f 63 6b  he lock. xUnlock
f270: 28 29 20 64 65 63 72 65 61 73 65 73 20 74 68 65  () decreases the
f280: 20 6c 6f 63 6b 2e 0a 2a 2a 20 54 68 65 20 78 43   lock..** The xC
f290: 68 65 63 6b 52 65 73 65 72 76 65 64 4c 6f 63 6b  heckReservedLock
f2a0: 28 29 20 6d 65 74 68 6f 64 20 63 68 65 63 6b 73  () method checks
f2b0: 20 77 68 65 74 68 65 72 20 61 6e 79 20 64 61 74   whether any dat
f2c0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
f2d0: 2c 0a 2a 2a 20 65 69 74 68 65 72 20 69 6e 20 74  ,.** either in t
f2e0: 68 69 73 20 70 72 6f 63 65 73 73 20 6f 72 20 69  his process or i
f2f0: 6e 20 73 6f 6d 65 20 6f 74 68 65 72 20 70 72 6f  n some other pro
f300: 63 65 73 73 2c 20 69 73 20 68 6f 6c 64 69 6e 67  cess, is holding
f310: 20 61 20 52 45 53 45 52 56 45 44 2c 0a 2a 2a 20   a RESERVED,.** 
f320: 50 45 4e 44 49 4e 47 2c 20 6f 72 20 45 58 43 4c  PENDING, or EXCL
f330: 55 53 49 56 45 20 6c 6f 63 6b 20 6f 6e 20 74 68  USIVE lock on th
f340: 65 20 66 69 6c 65 2e 20 20 49 74 20 72 65 74 75  e file.  It retu
f350: 72 6e 73 20 74 72 75 65 0a 2a 2a 20 69 66 20 73  rns true.** if s
f360: 75 63 68 20 61 20 6c 6f 63 6b 20 65 78 69 73 74  uch a lock exist
f370: 73 20 61 6e 64 20 66 61 6c 73 65 20 6f 74 68 65  s and false othe
f380: 72 77 69 73 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  rwise..**.** The
f390: 20 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 28 29 20   xFileControl() 
f3a0: 6d 65 74 68 6f 64 20 69 73 20 61 20 67 65 6e 65  method is a gene
f3b0: 72 69 63 20 69 6e 74 65 72 66 61 63 65 20 74 68  ric interface th
f3c0: 61 74 20 61 6c 6c 6f 77 73 20 63 75 73 74 6f 6d  at allows custom
f3d0: 0a 2a 2a 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  .** VFS implemen
f3e0: 74 61 74 69 6f 6e 73 20 74 6f 20 64 69 72 65 63  tations to direc
f3f0: 74 6c 79 20 63 6f 6e 74 72 6f 6c 20 61 6e 20 6f  tly control an o
f400: 70 65 6e 20 66 69 6c 65 20 75 73 69 6e 67 20 74  pen file using t
f410: 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66  he.** [sqlite3_f
f420: 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 69  ile_control()] i
f430: 6e 74 65 72 66 61 63 65 2e 20 20 54 68 65 20 73  nterface.  The s
f440: 65 63 6f 6e 64 20 22 6f 70 22 20 61 72 67 75 6d  econd "op" argum
f450: 65 6e 74 20 69 73 20 61 6e 0a 2a 2a 20 69 6e 74  ent is an.** int
f460: 65 67 65 72 20 6f 70 63 6f 64 65 2e 20 20 54 68  eger opcode.  Th
f470: 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74  e third argument
f480: 20 69 73 20 61 20 67 65 6e 65 72 69 63 20 70 6f   is a generic po
f490: 69 6e 74 65 72 20 69 6e 74 65 6e 64 65 64 20 74  inter intended t
f4a0: 6f 0a 2a 2a 20 70 6f 69 6e 74 20 74 6f 20 61 20  o.** point to a 
f4b0: 73 74 72 75 63 74 75 72 65 20 74 68 61 74 20 6d  structure that m
f4c0: 61 79 20 63 6f 6e 74 61 69 6e 20 61 72 67 75 6d  ay contain argum
f4d0: 65 6e 74 73 20 6f 72 20 73 70 61 63 65 20 69 6e  ents or space in
f4e0: 20 77 68 69 63 68 20 74 6f 0a 2a 2a 20 77 72 69   which to.** wri
f4f0: 74 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 73  te return values
f500: 2e 20 20 50 6f 74 65 6e 74 69 61 6c 20 75 73 65  .  Potential use
f510: 73 20 66 6f 72 20 78 46 69 6c 65 43 6f 6e 74 72  s for xFileContr
f520: 6f 6c 28 29 20 6d 69 67 68 74 20 62 65 0a 2a 2a  ol() might be.**
f530: 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f 20 65 6e   functions to en
f540: 61 62 6c 65 20 62 6c 6f 63 6b 69 6e 67 20 6c 6f  able blocking lo
f550: 63 6b 73 20 77 69 74 68 20 74 69 6d 65 6f 75 74  cks with timeout
f560: 73 2c 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65  s, to change the
f570: 0a 2a 2a 20 6c 6f 63 6b 69 6e 67 20 73 74 72 61  .** locking stra
f580: 74 65 67 79 20 28 66 6f 72 20 65 78 61 6d 70 6c  tegy (for exampl
f590: 65 20 74 6f 20 75 73 65 20 64 6f 74 2d 66 69 6c  e to use dot-fil
f5a0: 65 20 6c 6f 63 6b 73 29 2c 20 74 6f 20 69 6e 71  e locks), to inq
f5b0: 75 69 72 65 0a 2a 2a 20 61 62 6f 75 74 20 74 68  uire.** about th
f5c0: 65 20 73 74 61 74 75 73 20 6f 66 20 61 20 6c 6f  e status of a lo
f5d0: 63 6b 2c 20 6f 72 20 74 6f 20 62 72 65 61 6b 20  ck, or to break 
f5e0: 73 74 61 6c 65 20 6c 6f 63 6b 73 2e 20 20 54 68  stale locks.  Th
f5f0: 65 20 53 51 4c 69 74 65 0a 2a 2a 20 63 6f 72 65  e SQLite.** core
f600: 20 72 65 73 65 72 76 65 73 20 61 6c 6c 20 6f 70   reserves all op
f610: 63 6f 64 65 73 20 6c 65 73 73 20 74 68 61 6e 20  codes less than 
f620: 31 30 30 20 66 6f 72 20 69 74 73 20 6f 77 6e 20  100 for its own 
f630: 75 73 65 2e 0a 2a 2a 20 41 20 5b 66 69 6c 65 20  use..** A [file 
f640: 63 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64 65 73 20  control opcodes 
f650: 7c 20 6c 69 73 74 20 6f 66 20 6f 70 63 6f 64 65  | list of opcode
f660: 73 5d 20 6c 65 73 73 20 74 68 61 6e 20 31 30 30  s] less than 100
f670: 20 69 73 20 61 76 61 69 6c 61 62 6c 65 2e 0a 2a   is available..*
f680: 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 74  * Applications t
f690: 68 61 74 20 64 65 66 69 6e 65 20 61 20 63 75 73  hat define a cus
f6a0: 74 6f 6d 20 78 46 69 6c 65 43 6f 6e 74 72 6f 6c  tom xFileControl
f6b0: 20 6d 65 74 68 6f 64 20 73 68 6f 75 6c 64 20 75   method should u
f6c0: 73 65 20 6f 70 63 6f 64 65 73 0a 2a 2a 20 67 72  se opcodes.** gr
f6d0: 65 61 74 65 72 20 74 68 61 6e 20 31 30 30 20 74  eater than 100 t
f6e0: 6f 20 61 76 6f 69 64 20 63 6f 6e 66 6c 69 63 74  o avoid conflict
f6f0: 73 2e 20 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  s.  VFS implemen
f700: 74 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 0a 2a  tations should.*
f710: 2a 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45  * return [SQLITE
f720: 5f 4e 4f 54 46 4f 55 4e 44 5d 20 66 6f 72 20 66  _NOTFOUND] for f
f730: 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70 63 6f  ile control opco
f740: 64 65 73 20 74 68 61 74 20 74 68 65 79 20 64 6f  des that they do
f750: 20 6e 6f 74 0a 2a 2a 20 72 65 63 6f 67 6e 69 7a   not.** recogniz
f760: 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 53 65  e..**.** The xSe
f770: 63 74 6f 72 53 69 7a 65 28 29 20 6d 65 74 68 6f  ctorSize() metho
f780: 64 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 65  d returns the se
f790: 63 74 6f 72 20 73 69 7a 65 20 6f 66 20 74 68 65  ctor size of the
f7a0: 0a 2a 2a 20 64 65 76 69 63 65 20 74 68 61 74 20  .** device that 
f7b0: 75 6e 64 65 72 6c 69 65 73 20 74 68 65 20 66 69  underlies the fi
f7c0: 6c 65 2e 20 20 54 68 65 20 73 65 63 74 6f 72 20  le.  The sector 
f7d0: 73 69 7a 65 20 69 73 20 74 68 65 0a 2a 2a 20 6d  size is the.** m
f7e0: 69 6e 69 6d 75 6d 20 77 72 69 74 65 20 74 68 61  inimum write tha
f7f0: 74 20 63 61 6e 20 62 65 20 70 65 72 66 6f 72 6d  t can be perform
f800: 65 64 20 77 69 74 68 6f 75 74 20 64 69 73 74 75  ed without distu
f810: 72 62 69 6e 67 0a 2a 2a 20 6f 74 68 65 72 20 62  rbing.** other b
f820: 79 74 65 73 20 69 6e 20 74 68 65 20 66 69 6c 65  ytes in the file
f830: 2e 20 20 54 68 65 20 78 44 65 76 69 63 65 43 68  .  The xDeviceCh
f840: 61 72 61 63 74 65 72 69 73 74 69 63 73 28 29 0a  aracteristics().
f850: 2a 2a 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  ** method return
f860: 73 20 61 20 62 69 74 20 76 65 63 74 6f 72 20 64  s a bit vector d
f870: 65 73 63 72 69 62 69 6e 67 20 62 65 68 61 76 69  escribing behavi
f880: 6f 72 73 20 6f 66 20 74 68 65 0a 2a 2a 20 75 6e  ors of the.** un
f890: 64 65 72 6c 79 69 6e 67 20 64 65 76 69 63 65 3a  derlying device:
f8a0: 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c  .**.** <ul>.** <
f8b0: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41  li> [SQLITE_IOCA
f8c0: 50 5f 41 54 4f 4d 49 43 5d 0a 2a 2a 20 3c 6c 69  P_ATOMIC].** <li
f8d0: 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  > [SQLITE_IOCAP_
f8e0: 41 54 4f 4d 49 43 35 31 32 5d 0a 2a 2a 20 3c 6c  ATOMIC512].** <l
f8f0: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
f900: 5f 41 54 4f 4d 49 43 31 4b 5d 0a 2a 2a 20 3c 6c  _ATOMIC1K].** <l
f910: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
f920: 5f 41 54 4f 4d 49 43 32 4b 5d 0a 2a 2a 20 3c 6c  _ATOMIC2K].** <l
f930: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
f940: 5f 41 54 4f 4d 49 43 34 4b 5d 0a 2a 2a 20 3c 6c  _ATOMIC4K].** <l
f950: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
f960: 5f 41 54 4f 4d 49 43 38 4b 5d 0a 2a 2a 20 3c 6c  _ATOMIC8K].** <l
f970: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
f980: 5f 41 54 4f 4d 49 43 31 36 4b 5d 0a 2a 2a 20 3c  _ATOMIC16K].** <
f990: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41  li> [SQLITE_IOCA
f9a0: 50 5f 41 54 4f 4d 49 43 33 32 4b 5d 0a 2a 2a 20  P_ATOMIC32K].** 
f9b0: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43  <li> [SQLITE_IOC
f9c0: 41 50 5f 41 54 4f 4d 49 43 36 34 4b 5d 0a 2a 2a  AP_ATOMIC64K].**
f9d0: 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f   <li> [SQLITE_IO
f9e0: 43 41 50 5f 53 41 46 45 5f 41 50 50 45 4e 44 5d  CAP_SAFE_APPEND]
f9f0: 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
fa00: 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e 54 49 41  _IOCAP_SEQUENTIA
fa10: 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  L].** <li> [SQLI
fa20: 54 45 5f 49 4f 43 41 50 5f 55 4e 44 45 4c 45 54  TE_IOCAP_UNDELET
fa30: 41 42 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e 5d 0a  ABLE_WHEN_OPEN].
fa40: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
fa50: 49 4f 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f  IOCAP_POWERSAFE_
fa60: 4f 56 45 52 57 52 49 54 45 5d 0a 2a 2a 20 3c 6c  OVERWRITE].** <l
fa70: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
fa80: 5f 49 4d 4d 55 54 41 42 4c 45 5d 0a 2a 2a 20 3c  _IMMUTABLE].** <
fa90: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41  li> [SQLITE_IOCA
faa0: 50 5f 42 41 54 43 48 5f 41 54 4f 4d 49 43 5d 0a  P_BATCH_ATOMIC].
fab0: 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 54  ** </ul>.**.** T
fac0: 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  he SQLITE_IOCAP_
fad0: 41 54 4f 4d 49 43 20 70 72 6f 70 65 72 74 79 20  ATOMIC property 
fae0: 6d 65 61 6e 73 20 74 68 61 74 20 61 6c 6c 20 77  means that all w
faf0: 72 69 74 65 73 20 6f 66 0a 2a 2a 20 61 6e 79 20  rites of.** any 
fb00: 73 69 7a 65 20 61 72 65 20 61 74 6f 6d 69 63 2e  size are atomic.
fb10: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43    The SQLITE_IOC
fb20: 41 50 5f 41 54 4f 4d 49 43 6e 6e 6e 20 76 61 6c  AP_ATOMICnnn val
fb30: 75 65 73 0a 2a 2a 20 6d 65 61 6e 20 74 68 61 74  ues.** mean that
fb40: 20 77 72 69 74 65 73 20 6f 66 20 62 6c 6f 63 6b   writes of block
fb50: 73 20 74 68 61 74 20 61 72 65 20 6e 6e 6e 20 62  s that are nnn b
fb60: 79 74 65 73 20 69 6e 20 73 69 7a 65 20 61 6e 64  ytes in size and
fb70: 0a 2a 2a 20 61 72 65 20 61 6c 69 67 6e 65 64 20  .** are aligned 
fb80: 74 6f 20 61 6e 20 61 64 64 72 65 73 73 20 77 68  to an address wh
fb90: 69 63 68 20 69 73 20 61 6e 20 69 6e 74 65 67 65  ich is an intege
fba0: 72 20 6d 75 6c 74 69 70 6c 65 20 6f 66 0a 2a 2a  r multiple of.**
fbb0: 20 6e 6e 6e 20 61 72 65 20 61 74 6f 6d 69 63 2e   nnn are atomic.
fbc0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43    The SQLITE_IOC
fbd0: 41 50 5f 53 41 46 45 5f 41 50 50 45 4e 44 20 76  AP_SAFE_APPEND v
fbe0: 61 6c 75 65 20 6d 65 61 6e 73 0a 2a 2a 20 74 68  alue means.** th
fbf0: 61 74 20 77 68 65 6e 20 64 61 74 61 20 69 73 20  at when data is 
fc00: 61 70 70 65 6e 64 65 64 20 74 6f 20 61 20 66 69  appended to a fi
fc10: 6c 65 2c 20 74 68 65 20 64 61 74 61 20 69 73 20  le, the data is 
fc20: 61 70 70 65 6e 64 65 64 0a 2a 2a 20 66 69 72 73  appended.** firs
fc30: 74 20 74 68 65 6e 20 74 68 65 20 73 69 7a 65 20  t then the size 
fc40: 6f 66 20 74 68 65 20 66 69 6c 65 20 69 73 20 65  of the file is e
fc50: 78 74 65 6e 64 65 64 2c 20 6e 65 76 65 72 20 74  xtended, never t
fc60: 68 65 20 6f 74 68 65 72 0a 2a 2a 20 77 61 79 20  he other.** way 
fc70: 61 72 6f 75 6e 64 2e 20 20 54 68 65 20 53 51 4c  around.  The SQL
fc80: 49 54 45 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e  ITE_IOCAP_SEQUEN
fc90: 54 49 41 4c 20 70 72 6f 70 65 72 74 79 20 6d 65  TIAL property me
fca0: 61 6e 73 20 74 68 61 74 0a 2a 2a 20 69 6e 66 6f  ans that.** info
fcb0: 72 6d 61 74 69 6f 6e 20 69 73 20 77 72 69 74 74  rmation is writt
fcc0: 65 6e 20 74 6f 20 64 69 73 6b 20 69 6e 20 74 68  en to disk in th
fcd0: 65 20 73 61 6d 65 20 6f 72 64 65 72 20 61 73 20  e same order as 
fce0: 63 61 6c 6c 73 0a 2a 2a 20 74 6f 20 78 57 72 69  calls.** to xWri
fcf0: 74 65 28 29 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 78  te()..**.** If x
fd00: 52 65 61 64 28 29 20 72 65 74 75 72 6e 73 20 53  Read() returns S
fd10: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4f 52  QLITE_IOERR_SHOR
fd20: 54 5f 52 45 41 44 20 69 74 20 6d 75 73 74 20 61  T_READ it must a
fd30: 6c 73 6f 20 66 69 6c 6c 0a 2a 2a 20 69 6e 20 74  lso fill.** in t
fd40: 68 65 20 75 6e 72 65 61 64 20 70 6f 72 74 69 6f  he unread portio
fd50: 6e 73 20 6f 66 20 74 68 65 20 62 75 66 66 65 72  ns of the buffer
fd60: 20 77 69 74 68 20 7a 65 72 6f 73 2e 20 20 41 20   with zeros.  A 
fd70: 56 46 53 20 74 68 61 74 0a 2a 2a 20 66 61 69 6c  VFS that.** fail
fd80: 73 20 74 6f 20 7a 65 72 6f 2d 66 69 6c 6c 20 73  s to zero-fill s
fd90: 68 6f 72 74 20 72 65 61 64 73 20 6d 69 67 68 74  hort reads might
fda0: 20 73 65 65 6d 20 74 6f 20 77 6f 72 6b 2e 20 20   seem to work.  
fdb0: 48 6f 77 65 76 65 72 2c 0a 2a 2a 20 66 61 69 6c  However,.** fail
fdc0: 75 72 65 20 74 6f 20 7a 65 72 6f 2d 66 69 6c 6c  ure to zero-fill
fdd0: 20 73 68 6f 72 74 20 72 65 61 64 73 20 77 69 6c   short reads wil
fde0: 6c 20 65 76 65 6e 74 75 61 6c 6c 79 20 6c 65 61  l eventually lea
fdf0: 64 20 74 6f 0a 2a 2a 20 64 61 74 61 62 61 73 65  d to.** database
fe00: 20 63 6f 72 72 75 70 74 69 6f 6e 2e 0a 2a 2f 0a   corruption..*/.
fe10: 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73  typedef struct s
fe20: 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
fe30: 73 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74  s sqlite3_io_met
fe40: 68 6f 64 73 3b 0a 73 74 72 75 63 74 20 73 71 6c  hods;.struct sql
fe50: 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 20  ite3_io_methods 
fe60: 7b 0a 20 20 69 6e 74 20 69 56 65 72 73 69 6f 6e  {.  int iVersion
fe70: 3b 0a 20 20 69 6e 74 20 28 2a 78 43 6c 6f 73 65  ;.  int (*xClose
fe80: 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 29  )(sqlite3_file*)
fe90: 3b 0a 20 20 69 6e 74 20 28 2a 78 52 65 61 64 29  ;.  int (*xRead)
fea0: 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20  (sqlite3_file*, 
feb0: 76 6f 69 64 2a 2c 20 69 6e 74 20 69 41 6d 74 2c  void*, int iAmt,
fec0: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 69   sqlite3_int64 i
fed0: 4f 66 73 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78  Ofst);.  int (*x
fee0: 57 72 69 74 65 29 28 73 71 6c 69 74 65 33 5f 66  Write)(sqlite3_f
fef0: 69 6c 65 2a 2c 20 63 6f 6e 73 74 20 76 6f 69 64  ile*, const void
ff00: 2a 2c 20 69 6e 74 20 69 41 6d 74 2c 20 73 71 6c  *, int iAmt, sql
ff10: 69 74 65 33 5f 69 6e 74 36 34 20 69 4f 66 73 74  ite3_int64 iOfst
ff20: 29 3b 0a 20 20 69 6e 74 20 28 2a 78 54 72 75 6e  );.  int (*xTrun
ff30: 63 61 74 65 29 28 73 71 6c 69 74 65 33 5f 66 69  cate)(sqlite3_fi
ff40: 6c 65 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  le*, sqlite3_int
ff50: 36 34 20 73 69 7a 65 29 3b 0a 20 20 69 6e 74 20  64 size);.  int 
ff60: 28 2a 78 53 79 6e 63 29 28 73 71 6c 69 74 65 33  (*xSync)(sqlite3
ff70: 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 66 6c 61 67  _file*, int flag
ff80: 73 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46 69 6c  s);.  int (*xFil
ff90: 65 53 69 7a 65 29 28 73 71 6c 69 74 65 33 5f 66  eSize)(sqlite3_f
ffa0: 69 6c 65 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e  ile*, sqlite3_in
ffb0: 74 36 34 20 2a 70 53 69 7a 65 29 3b 0a 20 20 69  t64 *pSize);.  i
ffc0: 6e 74 20 28 2a 78 4c 6f 63 6b 29 28 73 71 6c 69  nt (*xLock)(sqli
ffd0: 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 29 3b  te3_file*, int);
ffe0: 0a 20 20 69 6e 74 20 28 2a 78 55 6e 6c 6f 63 6b  .  int (*xUnlock
fff0: 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c  )(sqlite3_file*,
10000 20 69 6e 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78   int);.  int (*x
10010 43 68 65 63 6b 52 65 73 65 72 76 65 64 4c 6f 63  CheckReservedLoc
10020 6b 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  k)(sqlite3_file*
10030 2c 20 69 6e 74 20 2a 70 52 65 73 4f 75 74 29 3b  , int *pResOut);
10040 0a 20 20 69 6e 74 20 28 2a 78 46 69 6c 65 43 6f  .  int (*xFileCo
10050 6e 74 72 6f 6c 29 28 73 71 6c 69 74 65 33 5f 66  ntrol)(sqlite3_f
10060 69 6c 65 2a 2c 20 69 6e 74 20 6f 70 2c 20 76 6f  ile*, int op, vo
10070 69 64 20 2a 70 41 72 67 29 3b 0a 20 20 69 6e 74  id *pArg);.  int
10080 20 28 2a 78 53 65 63 74 6f 72 53 69 7a 65 29 28   (*xSectorSize)(
10090 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 29 3b 0a  sqlite3_file*);.
100a0 20 20 69 6e 74 20 28 2a 78 44 65 76 69 63 65 43    int (*xDeviceC
100b0 68 61 72 61 63 74 65 72 69 73 74 69 63 73 29 28  haracteristics)(
100c0 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 29 3b 0a  sqlite3_file*);.
100d0 20 20 2f 2a 20 4d 65 74 68 6f 64 73 20 61 62 6f    /* Methods abo
100e0 76 65 20 61 72 65 20 76 61 6c 69 64 20 66 6f 72  ve are valid for
100f0 20 76 65 72 73 69 6f 6e 20 31 20 2a 2f 0a 20 20   version 1 */.  
10100 69 6e 74 20 28 2a 78 53 68 6d 4d 61 70 29 28 73  int (*xShmMap)(s
10110 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e  qlite3_file*, in
10120 74 20 69 50 67 2c 20 69 6e 74 20 70 67 73 7a 2c  t iPg, int pgsz,
10130 20 69 6e 74 2c 20 76 6f 69 64 20 76 6f 6c 61 74   int, void volat
10140 69 6c 65 2a 2a 29 3b 0a 20 20 69 6e 74 20 28 2a  ile**);.  int (*
10150 78 53 68 6d 4c 6f 63 6b 29 28 73 71 6c 69 74 65  xShmLock)(sqlite
10160 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 6f 66 66  3_file*, int off
10170 73 65 74 2c 20 69 6e 74 20 6e 2c 20 69 6e 74 20  set, int n, int 
10180 66 6c 61 67 73 29 3b 0a 20 20 76 6f 69 64 20 28  flags);.  void (
10190 2a 78 53 68 6d 42 61 72 72 69 65 72 29 28 73 71  *xShmBarrier)(sq
101a0 6c 69 74 65 33 5f 66 69 6c 65 2a 29 3b 0a 20 20  lite3_file*);.  
101b0 69 6e 74 20 28 2a 78 53 68 6d 55 6e 6d 61 70 29  int (*xShmUnmap)
101c0 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20  (sqlite3_file*, 
101d0 69 6e 74 20 64 65 6c 65 74 65 46 6c 61 67 29 3b  int deleteFlag);
101e0 0a 20 20 2f 2a 20 4d 65 74 68 6f 64 73 20 61 62  .  /* Methods ab
101f0 6f 76 65 20 61 72 65 20 76 61 6c 69 64 20 66 6f  ove are valid fo
10200 72 20 76 65 72 73 69 6f 6e 20 32 20 2a 2f 0a 20  r version 2 */. 
10210 20 69 6e 74 20 28 2a 78 46 65 74 63 68 29 28 73   int (*xFetch)(s
10220 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71  qlite3_file*, sq
10230 6c 69 74 65 33 5f 69 6e 74 36 34 20 69 4f 66 73  lite3_int64 iOfs
10240 74 2c 20 69 6e 74 20 69 41 6d 74 2c 20 76 6f 69  t, int iAmt, voi
10250 64 20 2a 2a 70 70 29 3b 0a 20 20 69 6e 74 20 28  d **pp);.  int (
10260 2a 78 55 6e 66 65 74 63 68 29 28 73 71 6c 69 74  *xUnfetch)(sqlit
10270 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c 69 74 65  e3_file*, sqlite
10280 33 5f 69 6e 74 36 34 20 69 4f 66 73 74 2c 20 76  3_int64 iOfst, v
10290 6f 69 64 20 2a 70 29 3b 0a 20 20 2f 2a 20 4d 65  oid *p);.  /* Me
102a0 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20  thods above are 
102b0 76 61 6c 69 64 20 66 6f 72 20 76 65 72 73 69 6f  valid for versio
102c0 6e 20 33 20 2a 2f 0a 20 20 2f 2a 20 41 64 64 69  n 3 */.  /* Addi
102d0 74 69 6f 6e 61 6c 20 6d 65 74 68 6f 64 73 20 6d  tional methods m
102e0 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 66  ay be added in f
102f0 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 2a  uture releases *
10300 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  /.};../*.** CAPI
10310 33 52 45 46 3a 20 53 74 61 6e 64 61 72 64 20 46  3REF: Standard F
10320 69 6c 65 20 43 6f 6e 74 72 6f 6c 20 4f 70 63 6f  ile Control Opco
10330 64 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a  des.** KEYWORDS:
10340 20 7b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f   {file control o
10350 70 63 6f 64 65 73 7d 20 7b 66 69 6c 65 20 63 6f  pcodes} {file co
10360 6e 74 72 6f 6c 20 6f 70 63 6f 64 65 7d 0a 2a 2a  ntrol opcode}.**
10370 0a 2a 2a 20 54 68 65 73 65 20 69 6e 74 65 67 65  .** These intege
10380 72 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65 20  r constants are 
10390 6f 70 63 6f 64 65 73 20 66 6f 72 20 74 68 65 20  opcodes for the 
103a0 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74  xFileControl met
103b0 68 6f 64 0a 2a 2a 20 6f 66 20 74 68 65 20 5b 73  hod.** of the [s
103c0 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
103d0 73 5d 20 6f 62 6a 65 63 74 20 61 6e 64 20 66 6f  s] object and fo
103e0 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66  r the [sqlite3_f
103f0 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 0a 2a  ile_control()].*
10400 2a 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 0a  * interface..**.
10410 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 5b  ** <ul>.** <li>[
10420 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f  [SQLITE_FCNTL_LO
10430 43 4b 53 54 41 54 45 5d 5d 0a 2a 2a 20 54 68 65  CKSTATE]].** The
10440 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c   [SQLITE_FCNTL_L
10450 4f 43 4b 53 54 41 54 45 5d 20 6f 70 63 6f 64 65  OCKSTATE] opcode
10460 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65 62   is used for deb
10470 75 67 67 69 6e 67 2e 20 20 54 68 69 73 0a 2a 2a  ugging.  This.**
10480 20 6f 70 63 6f 64 65 20 63 61 75 73 65 73 20 74   opcode causes t
10490 68 65 20 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 20  he xFileControl 
104a0 6d 65 74 68 6f 64 20 74 6f 20 77 72 69 74 65 20  method to write 
104b0 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 74  the current stat
104c0 65 20 6f 66 0a 2a 2a 20 74 68 65 20 6c 6f 63 6b  e of.** the lock
104d0 20 28 6f 6e 65 20 6f 66 20 5b 53 51 4c 49 54 45   (one of [SQLITE
104e0 5f 4c 4f 43 4b 5f 4e 4f 4e 45 5d 2c 20 5b 53 51  _LOCK_NONE], [SQ
104f0 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41 52 45 44  LITE_LOCK_SHARED
10500 5d 2c 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4c 4f  ],.** [SQLITE_LO
10510 43 4b 5f 52 45 53 45 52 56 45 44 5d 2c 20 5b 53  CK_RESERVED], [S
10520 51 4c 49 54 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49  QLITE_LOCK_PENDI
10530 4e 47 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f  NG], or [SQLITE_
10540 4c 4f 43 4b 5f 45 58 43 4c 55 53 49 56 45 5d 29  LOCK_EXCLUSIVE])
10550 0a 2a 2a 20 69 6e 74 6f 20 61 6e 20 69 6e 74 65  .** into an inte
10560 67 65 72 20 74 68 61 74 20 74 68 65 20 70 41 72  ger that the pAr
10570 67 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74  g argument point
10580 73 20 74 6f 2e 20 54 68 69 73 20 63 61 70 61 62  s to. This capab
10590 69 6c 69 74 79 0a 2a 2a 20 69 73 20 75 73 65 64  ility.** is used
105a0 20 64 75 72 69 6e 67 20 74 65 73 74 69 6e 67 20   during testing 
105b0 61 6e 64 20 69 73 20 6f 6e 6c 79 20 61 76 61 69  and is only avai
105c0 6c 61 62 6c 65 20 77 68 65 6e 20 74 68 65 20 53  lable when the S
105d0 51 4c 49 54 45 5f 54 45 53 54 0a 2a 2a 20 63 6f  QLITE_TEST.** co
105e0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
105f0 6e 20 69 73 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a  n is used..**.**
10600 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
10610 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e 54 5d 5d 0a  NTL_SIZE_HINT]].
10620 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
10630 43 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e 54 5d 20  CNTL_SIZE_HINT] 
10640 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 62  opcode is used b
10650 79 20 53 51 4c 69 74 65 20 74 6f 20 67 69 76 65  y SQLite to give
10660 20 74 68 65 20 56 46 53 0a 2a 2a 20 6c 61 79 65   the VFS.** laye
10670 72 20 61 20 68 69 6e 74 20 6f 66 20 68 6f 77 20  r a hint of how 
10680 6c 61 72 67 65 20 74 68 65 20 64 61 74 61 62 61  large the databa
10690 73 65 20 66 69 6c 65 20 77 69 6c 6c 20 67 72 6f  se file will gro
106a0 77 20 74 6f 20 62 65 20 64 75 72 69 6e 67 20 74  w to be during t
106b0 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20 74 72  he.** current tr
106c0 61 6e 73 61 63 74 69 6f 6e 2e 20 20 54 68 69 73  ansaction.  This
106d0 20 68 69 6e 74 20 69 73 20 6e 6f 74 20 67 75 61   hint is not gua
106e0 72 61 6e 74 65 65 64 20 74 6f 20 62 65 20 61 63  ranteed to be ac
106f0 63 75 72 61 74 65 20 62 75 74 20 69 74 0a 2a 2a  curate but it.**
10700 20 69 73 20 6f 66 74 65 6e 20 63 6c 6f 73 65 2e   is often close.
10710 20 20 54 68 65 20 75 6e 64 65 72 6c 79 69 6e 67    The underlying
10720 20 56 46 53 20 6d 69 67 68 74 20 63 68 6f 6f 73   VFS might choos
10730 65 20 74 6f 20 70 72 65 61 6c 6c 6f 63 61 74 65  e to preallocate
10740 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 66 69 6c   database.** fil
10750 65 20 73 70 61 63 65 20 62 61 73 65 64 20 6f 6e  e space based on
10760 20 74 68 69 73 20 68 69 6e 74 20 69 6e 20 6f 72   this hint in or
10770 64 65 72 20 74 6f 20 68 65 6c 70 20 77 72 69 74  der to help writ
10780 65 73 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  es to the databa
10790 73 65 0a 2a 2a 20 66 69 6c 65 20 72 75 6e 20 66  se.** file run f
107a0 61 73 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  aster..**.** <li
107b0 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
107c0 53 49 5a 45 5f 4c 49 4d 49 54 5d 5d 0a 2a 2a 20  SIZE_LIMIT]].** 
107d0 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
107e0 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d 20 6f 70  L_SIZE_LIMIT] op
107f0 63 6f 64 65 20 69 73 20 75 73 65 64 20 62 79 20  code is used by 
10800 69 6e 2d 6d 65 6d 6f 72 79 20 56 46 53 20 74 68  in-memory VFS th
10810 61 74 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 73  at.** implements
10820 20 5b 73 71 6c 69 74 65 33 5f 64 65 73 65 72 69   [sqlite3_deseri
10830 61 6c 69 7a 65 28 29 5d 20 74 6f 20 73 65 74 20  alize()] to set 
10840 61 6e 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f  an upper bound o
10850 6e 20 74 68 65 20 73 69 7a 65 0a 2a 2a 20 6f 66  n the size.** of
10860 20 74 68 65 20 69 6e 2d 6d 65 6d 6f 72 79 20 64   the in-memory d
10870 61 74 61 62 61 73 65 2e 20 20 54 68 65 20 61 72  atabase.  The ar
10880 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e  gument is a poin
10890 74 65 72 20 74 6f 20 61 20 5b 73 71 6c 69 74 65  ter to a [sqlite
108a0 33 5f 69 6e 74 36 34 5d 2e 0a 2a 2a 20 49 66 20  3_int64]..** If 
108b0 74 68 65 20 69 6e 74 65 67 65 72 20 70 6f 69 6e  the integer poin
108c0 74 65 64 20 74 6f 20 69 73 20 6e 65 67 61 74 69  ted to is negati
108d0 76 65 2c 20 74 68 65 6e 20 69 74 20 69 73 20 66  ve, then it is f
108e0 69 6c 6c 65 64 20 69 6e 20 77 69 74 68 20 74 68  illed in with th
108f0 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20 6c 69 6d  e.** current lim
10900 69 74 2e 20 20 4f 74 68 65 72 77 69 73 65 20 74  it.  Otherwise t
10910 68 65 20 6c 69 6d 69 74 20 69 73 20 73 65 74 20  he limit is set 
10920 74 6f 20 74 68 65 20 6c 61 72 67 65 72 20 6f 66  to the larger of
10930 20 74 68 65 20 76 61 6c 75 65 0a 2a 2a 20 6f 66   the value.** of
10940 20 74 68 65 20 69 6e 74 65 67 65 72 20 70 6f 69   the integer poi
10950 6e 74 65 64 20 74 6f 20 61 6e 64 20 74 68 65 20  nted to and the 
10960 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 73 65  current database
10970 20 73 69 7a 65 2e 20 20 54 68 65 20 69 6e 74 65   size.  The inte
10980 67 65 72 0a 2a 2a 20 70 6f 69 6e 74 65 64 20 74  ger.** pointed t
10990 6f 20 69 73 20 73 65 74 20 74 6f 20 74 68 65 20  o is set to the 
109a0 6e 65 77 20 6c 69 6d 69 74 2e 0a 2a 2a 0a 2a 2a  new limit..**.**
109b0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
109c0 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49 5a 45 5d 5d  NTL_CHUNK_SIZE]]
109d0 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
109e0 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49 5a 45  FCNTL_CHUNK_SIZE
109f0 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64  ] opcode is used
10a00 20 74 6f 20 72 65 71 75 65 73 74 20 74 68 61 74   to request that
10a10 20 74 68 65 20 56 46 53 0a 2a 2a 20 65 78 74 65   the VFS.** exte
10a20 6e 64 73 20 61 6e 64 20 74 72 75 6e 63 61 74 65  nds and truncate
10a30 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  s the database f
10a40 69 6c 65 20 69 6e 20 63 68 75 6e 6b 73 20 6f 66  ile in chunks of
10a50 20 61 20 73 69 7a 65 20 73 70 65 63 69 66 69 65   a size specifie
10a60 64 0a 2a 2a 20 62 79 20 74 68 65 20 75 73 65 72  d.** by the user
10a70 2e 20 54 68 65 20 66 6f 75 72 74 68 20 61 72 67  . The fourth arg
10a80 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65  ument to [sqlite
10a90 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29  3_file_control()
10aa0 5d 20 73 68 6f 75 6c 64 20 0a 2a 2a 20 70 6f 69  ] should .** poi
10ab0 6e 74 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  nt to an integer
10ac0 20 28 74 79 70 65 20 69 6e 74 29 20 63 6f 6e 74   (type int) cont
10ad0 61 69 6e 69 6e 67 20 74 68 65 20 6e 65 77 20 63  aining the new c
10ae0 68 75 6e 6b 2d 73 69 7a 65 20 74 6f 20 75 73 65  hunk-size to use
10af0 0a 2a 2a 20 66 6f 72 20 74 68 65 20 6e 6f 6d 69  .** for the nomi
10b00 6e 61 74 65 64 20 64 61 74 61 62 61 73 65 2e 20  nated database. 
10b10 41 6c 6c 6f 63 61 74 69 6e 67 20 64 61 74 61 62  Allocating datab
10b20 61 73 65 20 66 69 6c 65 20 73 70 61 63 65 20 69  ase file space i
10b30 6e 20 6c 61 72 67 65 0a 2a 2a 20 63 68 75 6e 6b  n large.** chunk
10b40 73 20 28 73 61 79 20 31 4d 42 20 61 74 20 61 20  s (say 1MB at a 
10b50 74 69 6d 65 29 2c 20 6d 61 79 20 72 65 64 75 63  time), may reduc
10b60 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 20 66 72  e file-system fr
10b70 61 67 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 0a  agmentation and.
10b80 2a 2a 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f  ** improve perfo
10b90 72 6d 61 6e 63 65 20 6f 6e 20 73 6f 6d 65 20 73  rmance on some s
10ba0 79 73 74 65 6d 73 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  ystems..**.** <l
10bb0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
10bc0 5f 46 49 4c 45 5f 50 4f 49 4e 54 45 52 5d 5d 0a  _FILE_POINTER]].
10bd0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
10be0 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45  CNTL_FILE_POINTE
10bf0 52 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65  R] opcode is use
10c00 64 20 74 6f 20 6f 62 74 61 69 6e 20 61 20 70 6f  d to obtain a po
10c10 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 74 68 65 20  inter.** to the 
10c20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f  [sqlite3_file] o
10c30 62 6a 65 63 74 20 61 73 73 6f 63 69 61 74 65 64  bject associated
10c40 20 77 69 74 68 20 61 20 70 61 72 74 69 63 75 6c   with a particul
10c50 61 72 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63  ar database.** c
10c60 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 53 65 65 20  onnection.  See 
10c70 61 6c 73 6f 20 5b 53 51 4c 49 54 45 5f 46 43 4e  also [SQLITE_FCN
10c80 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54  TL_JOURNAL_POINT
10c90 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ER]..**.** <li>[
10ca0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4a 4f  [SQLITE_FCNTL_JO
10cb0 55 52 4e 41 4c 5f 50 4f 49 4e 54 45 52 5d 5d 0a  URNAL_POINTER]].
10cc0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
10cd0 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49  CNTL_JOURNAL_POI
10ce0 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 69 73 20  NTER] opcode is 
10cf0 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 61  used to obtain a
10d00 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 74   pointer.** to t
10d10 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  he [sqlite3_file
10d20 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f 63 69 61  ] object associa
10d30 74 65 64 20 77 69 74 68 20 74 68 65 20 6a 6f 75  ted with the jou
10d40 72 6e 61 6c 20 66 69 6c 65 20 28 65 69 74 68 65  rnal file (eithe
10d50 72 0a 2a 2a 20 74 68 65 20 5b 72 6f 6c 6c 62 61  r.** the [rollba
10d60 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 6f 72 20 74  ck journal] or t
10d70 68 65 20 5b 77 72 69 74 65 2d 61 68 65 61 64 20  he [write-ahead 
10d80 6c 6f 67 5d 29 20 66 6f 72 20 61 20 70 61 72 74  log]) for a part
10d90 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 0a  icular database.
10da0 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  ** connection.  
10db0 53 65 65 20 61 6c 73 6f 20 5b 53 51 4c 49 54 45  See also [SQLITE
10dc0 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e  _FCNTL_FILE_POIN
10dd0 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  TER]..**.** <li>
10de0 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53  [[SQLITE_FCNTL_S
10df0 59 4e 43 5f 4f 4d 49 54 54 45 44 5d 5d 0a 2a 2a  YNC_OMITTED]].**
10e00 20 4e 6f 20 6c 6f 6e 67 65 72 20 69 6e 20 75 73   No longer in us
10e10 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  e..**.** <li>[[S
10e20 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43  QLITE_FCNTL_SYNC
10e30 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  ]].** The [SQLIT
10e40 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 5d 20 6f 70  E_FCNTL_SYNC] op
10e50 63 6f 64 65 20 69 73 20 67 65 6e 65 72 61 74 65  code is generate
10e60 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20  d internally by 
10e70 53 51 4c 69 74 65 20 61 6e 64 0a 2a 2a 20 73 65  SQLite and.** se
10e80 6e 74 20 74 6f 20 74 68 65 20 56 46 53 20 69 6d  nt to the VFS im
10e90 6d 65 64 69 61 74 65 6c 79 20 62 65 66 6f 72 65  mediately before
10ea0 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f   the xSync metho
10eb0 64 20 69 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 20  d is invoked on 
10ec0 61 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 66 69  a.** database fi
10ed0 6c 65 20 64 65 73 63 72 69 70 74 6f 72 2e 20 4f  le descriptor. O
10ee0 72 2c 20 69 66 20 74 68 65 20 78 53 79 6e 63 20  r, if the xSync 
10ef0 6d 65 74 68 6f 64 20 69 73 20 6e 6f 74 20 69 6e  method is not in
10f00 76 6f 6b 65 64 20 0a 2a 2a 20 62 65 63 61 75 73  voked .** becaus
10f10 65 20 74 68 65 20 75 73 65 72 20 68 61 73 20 63  e the user has c
10f20 6f 6e 66 69 67 75 72 65 64 20 53 51 4c 69 74 65  onfigured SQLite
10f30 20 77 69 74 68 20 0a 2a 2a 20 5b 50 52 41 47 4d   with .** [PRAGM
10f40 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 7c 20  A synchronous | 
10f50 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
10f60 75 73 3d 4f 46 46 5d 20 69 74 20 69 73 20 69 6e  us=OFF] it is in
10f70 76 6f 6b 65 64 20 69 6e 20 70 6c 61 63 65 20 0a  voked in place .
10f80 2a 2a 20 6f 66 20 74 68 65 20 78 53 79 6e 63 20  ** of the xSync 
10f90 6d 65 74 68 6f 64 2e 20 49 6e 20 6d 6f 73 74 20  method. In most 
10fa0 63 61 73 65 73 2c 20 74 68 65 20 70 6f 69 6e 74  cases, the point
10fb0 65 72 20 61 72 67 75 6d 65 6e 74 20 70 61 73 73  er argument pass
10fc0 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 69 73 20  ed with.** this 
10fd0 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 20 69 73 20  file-control is 
10fe0 4e 55 4c 4c 2e 20 48 6f 77 65 76 65 72 2c 20 69  NULL. However, i
10ff0 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
11000 69 6c 65 20 69 73 20 62 65 69 6e 67 20 73 79 6e  ile is being syn
11010 63 65 64 0a 2a 2a 20 61 73 20 70 61 72 74 20 6f  ced.** as part o
11020 66 20 61 20 6d 75 6c 74 69 2d 64 61 74 61 62 61  f a multi-databa
11030 73 65 20 63 6f 6d 6d 69 74 2c 20 74 68 65 20 61  se commit, the a
11040 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 73 20 74  rgument points t
11050 6f 20 61 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74  o a nul-terminat
11060 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f 6e  ed.** string con
11070 74 61 69 6e 69 6e 67 20 74 68 65 20 74 72 61 6e  taining the tran
11080 73 61 63 74 69 6f 6e 73 20 6d 61 73 74 65 72 2d  sactions master-
11090 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 6e 61 6d  journal file nam
110a0 65 2e 20 56 46 53 65 73 20 74 68 61 74 20 0a 2a  e. VFSes that .*
110b0 2a 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20 74 68  * do not need th
110c0 69 73 20 73 69 67 6e 61 6c 20 73 68 6f 75 6c 64  is signal should
110d0 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65   silently ignore
110e0 20 74 68 69 73 20 6f 70 63 6f 64 65 2e 20 41 70   this opcode. Ap
110f0 70 6c 69 63 61 74 69 6f 6e 73 20 0a 2a 2a 20 73  plications .** s
11100 68 6f 75 6c 64 20 6e 6f 74 20 63 61 6c 6c 20 5b  hould not call [
11110 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
11120 74 72 6f 6c 28 29 5d 20 77 69 74 68 20 74 68 69  trol()] with thi
11130 73 20 6f 70 63 6f 64 65 20 61 73 20 64 6f 69 6e  s opcode as doin
11140 67 20 73 6f 20 6d 61 79 20 0a 2a 2a 20 64 69 73  g so may .** dis
11150 72 75 70 74 20 74 68 65 20 6f 70 65 72 61 74 69  rupt the operati
11160 6f 6e 20 6f 66 20 74 68 65 20 73 70 65 63 69 61  on of the specia
11170 6c 69 7a 65 64 20 56 46 53 65 73 20 74 68 61 74  lized VFSes that
11180 20 64 6f 20 72 65 71 75 69 72 65 20 69 74 2e 20   do require it. 
11190 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51   .**.** <li>[[SQ
111a0 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49  LITE_FCNTL_COMMI
111b0 54 5f 50 48 41 53 45 54 57 4f 5d 5d 0a 2a 2a 20  T_PHASETWO]].** 
111c0 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
111d0 4c 5f 43 4f 4d 4d 49 54 5f 50 48 41 53 45 54 57  L_COMMIT_PHASETW
111e0 4f 5d 20 6f 70 63 6f 64 65 20 69 73 20 67 65 6e  O] opcode is gen
111f0 65 72 61 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c  erated internall
11200 79 20 62 79 20 53 51 4c 69 74 65 0a 2a 2a 20 61  y by SQLite.** a
11210 6e 64 20 73 65 6e 74 20 74 6f 20 74 68 65 20 56  nd sent to the V
11220 46 53 20 61 66 74 65 72 20 61 20 74 72 61 6e 73  FS after a trans
11230 61 63 74 69 6f 6e 20 68 61 73 20 62 65 65 6e 20  action has been 
11240 63 6f 6d 6d 69 74 74 65 64 20 69 6d 6d 65 64 69  committed immedi
11250 61 74 65 6c 79 0a 2a 2a 20 62 75 74 20 62 65 66  ately.** but bef
11260 6f 72 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ore the database
11270 20 69 73 20 75 6e 6c 6f 63 6b 65 64 2e 20 56 46   is unlocked. VF
11280 53 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20  Ses that do not 
11290 6e 65 65 64 20 74 68 69 73 20 73 69 67 6e 61 6c  need this signal
112a0 0a 2a 2a 20 73 68 6f 75 6c 64 20 73 69 6c 65 6e  .** should silen
112b0 74 6c 79 20 69 67 6e 6f 72 65 20 74 68 69 73 20  tly ignore this 
112c0 6f 70 63 6f 64 65 2e 20 41 70 70 6c 69 63 61 74  opcode. Applicat
112d0 69 6f 6e 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20  ions should not 
112e0 63 61 6c 6c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  call.** [sqlite3
112f0 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d  _file_control()]
11300 20 77 69 74 68 20 74 68 69 73 20 6f 70 63 6f 64   with this opcod
11310 65 20 61 73 20 64 6f 69 6e 67 20 73 6f 20 6d 61  e as doing so ma
11320 79 20 64 69 73 72 75 70 74 20 74 68 65 20 0a 2a  y disrupt the .*
11330 2a 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74  * operation of t
11340 68 65 20 73 70 65 63 69 61 6c 69 7a 65 64 20 56  he specialized V
11350 46 53 65 73 20 74 68 61 74 20 64 6f 20 72 65 71  FSes that do req
11360 75 69 72 65 20 69 74 2e 20 20 0a 2a 2a 0a 2a 2a  uire it.  .**.**
11370 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
11380 4e 54 4c 5f 57 49 4e 33 32 5f 41 56 5f 52 45 54  NTL_WIN32_AV_RET
11390 52 59 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51  RY]].** ^The [SQ
113a0 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32  LITE_FCNTL_WIN32
113b0 5f 41 56 5f 52 45 54 52 59 5d 20 6f 70 63 6f 64  _AV_RETRY] opcod
113c0 65 20 69 73 20 75 73 65 64 20 74 6f 20 63 6f 6e  e is used to con
113d0 66 69 67 75 72 65 20 61 75 74 6f 6d 61 74 69 63  figure automatic
113e0 0a 2a 2a 20 72 65 74 72 79 20 63 6f 75 6e 74 73  .** retry counts
113f0 20 61 6e 64 20 69 6e 74 65 72 76 61 6c 73 20 66   and intervals f
11400 6f 72 20 63 65 72 74 61 69 6e 20 64 69 73 6b 20  or certain disk 
11410 49 2f 4f 20 6f 70 65 72 61 74 69 6f 6e 73 20 66  I/O operations f
11420 6f 72 20 74 68 65 0a 2a 2a 20 77 69 6e 64 6f 77  or the.** window
11430 73 20 5b 56 46 53 5d 20 69 6e 20 6f 72 64 65 72  s [VFS] in order
11440 20 74 6f 20 70 72 6f 76 69 64 65 20 72 6f 62 75   to provide robu
11450 73 74 6e 65 73 73 20 69 6e 20 74 68 65 20 70 72  stness in the pr
11460 65 73 65 6e 63 65 20 6f 66 0a 2a 2a 20 61 6e 74  esence of.** ant
11470 69 2d 76 69 72 75 73 20 70 72 6f 67 72 61 6d 73  i-virus programs
11480 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74  .  By default, t
11490 68 65 20 77 69 6e 64 6f 77 73 20 56 46 53 20 77  he windows VFS w
114a0 69 6c 6c 20 72 65 74 72 79 20 66 69 6c 65 20 72  ill retry file r
114b0 65 61 64 2c 0a 2a 2a 20 66 69 6c 65 20 77 72 69  ead,.** file wri
114c0 74 65 2c 20 61 6e 64 20 66 69 6c 65 20 64 65 6c  te, and file del
114d0 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 75  ete operations u
114e0 70 20 74 6f 20 31 30 20 74 69 6d 65 73 2c 20 77  p to 10 times, w
114f0 69 74 68 20 61 20 64 65 6c 61 79 0a 2a 2a 20 6f  ith a delay.** o
11500 66 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  f 25 millisecond
11510 73 20 62 65 66 6f 72 65 20 74 68 65 20 66 69 72  s before the fir
11520 73 74 20 72 65 74 72 79 20 61 6e 64 20 77 69 74  st retry and wit
11530 68 20 74 68 65 20 64 65 6c 61 79 20 69 6e 63 72  h the delay incr
11540 65 61 73 69 6e 67 0a 2a 2a 20 62 79 20 61 6e 20  easing.** by an 
11550 61 64 64 69 74 69 6f 6e 61 6c 20 32 35 20 6d 69  additional 25 mi
11560 6c 6c 69 73 65 63 6f 6e 64 73 20 77 69 74 68 20  lliseconds with 
11570 65 61 63 68 20 73 75 62 73 65 71 75 65 6e 74 20  each subsequent 
11580 72 65 74 72 79 2e 20 20 54 68 69 73 0a 2a 2a 20  retry.  This.** 
11590 6f 70 63 6f 64 65 20 61 6c 6c 6f 77 73 20 74 68  opcode allows th
115a0 65 73 65 20 74 77 6f 20 76 61 6c 75 65 73 20 28  ese two values (
115b0 31 30 20 72 65 74 72 69 65 73 20 61 6e 64 20 32  10 retries and 2
115c0 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 6f  5 milliseconds o
115d0 66 20 64 65 6c 61 79 29 0a 2a 2a 20 74 6f 20 62  f delay).** to b
115e0 65 20 61 64 6a 75 73 74 65 64 2e 20 20 54 68 65  e adjusted.  The
115f0 20 76 61 6c 75 65 73 20 61 72 65 20 63 68 61 6e   values are chan
11600 67 65 64 20 66 6f 72 20 61 6c 6c 20 64 61 74 61  ged for all data
11610 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
11620 0a 2a 2a 20 77 69 74 68 69 6e 20 74 68 65 20 73  .** within the s
11630 61 6d 65 20 70 72 6f 63 65 73 73 2e 20 20 54 68  ame process.  Th
11640 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  e argument is a 
11650 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 61 72  pointer to an ar
11660 72 61 79 20 6f 66 20 74 77 6f 0a 2a 2a 20 69 6e  ray of two.** in
11670 74 65 67 65 72 73 20 77 68 65 72 65 20 74 68 65  tegers where the
11680 20 66 69 72 73 74 20 69 6e 74 65 67 65 72 20 69   first integer i
11690 73 20 74 68 65 20 6e 65 77 20 72 65 74 72 79 20  s the new retry 
116a0 63 6f 75 6e 74 20 61 6e 64 20 74 68 65 20 73 65  count and the se
116b0 63 6f 6e 64 0a 2a 2a 20 69 6e 74 65 67 65 72 20  cond.** integer 
116c0 69 73 20 74 68 65 20 64 65 6c 61 79 2e 20 20 49  is the delay.  I
116d0 66 20 65 69 74 68 65 72 20 69 6e 74 65 67 65 72  f either integer
116e0 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68   is negative, th
116f0 65 6e 20 74 68 65 20 73 65 74 74 69 6e 67 0a 2a  en the setting.*
11700 2a 20 69 73 20 6e 6f 74 20 63 68 61 6e 67 65 64  * is not changed
11710 20 62 75 74 20 69 6e 73 74 65 61 64 20 74 68 65   but instead the
11720 20 70 72 69 6f 72 20 76 61 6c 75 65 20 6f 66 20   prior value of 
11730 74 68 61 74 20 73 65 74 74 69 6e 67 20 69 73 20  that setting is 
11740 77 72 69 74 74 65 6e 0a 2a 2a 20 69 6e 74 6f 20  written.** into 
11750 74 68 65 20 61 72 72 61 79 20 65 6e 74 72 79 2c  the array entry,
11760 20 61 6c 6c 6f 77 69 6e 67 20 74 68 65 20 63 75   allowing the cu
11770 72 72 65 6e 74 20 72 65 74 72 79 20 73 65 74 74  rrent retry sett
11780 69 6e 67 73 20 74 6f 20 62 65 0a 2a 2a 20 69 6e  ings to be.** in
11790 74 65 72 72 6f 67 61 74 65 64 2e 20 20 54 68 65  terrogated.  The
117a0 20 7a 44 62 4e 61 6d 65 20 70 61 72 61 6d 65 74   zDbName paramet
117b0 65 72 20 69 73 20 69 67 6e 6f 72 65 64 2e 0a 2a  er is ignored..*
117c0 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
117d0 45 5f 46 43 4e 54 4c 5f 50 45 52 53 49 53 54 5f  E_FCNTL_PERSIST_
117e0 57 41 4c 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53  WAL]].** ^The [S
117f0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 45 52 53  QLITE_FCNTL_PERS
11800 49 53 54 5f 57 41 4c 5d 20 6f 70 63 6f 64 65 20  IST_WAL] opcode 
11810 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20 6f  is used to set o
11820 72 20 71 75 65 72 79 20 74 68 65 0a 2a 2a 20 70  r query the.** p
11830 65 72 73 69 73 74 65 6e 74 20 5b 57 41 4c 20 7c  ersistent [WAL |
11840 20 57 72 69 74 65 20 41 68 65 61 64 20 4c 6f 67   Write Ahead Log
11850 5d 20 73 65 74 74 69 6e 67 2e 20 20 42 79 20 64  ] setting.  By d
11860 65 66 61 75 6c 74 2c 20 74 68 65 20 61 75 78 69  efault, the auxi
11870 6c 69 61 72 79 0a 2a 2a 20 77 72 69 74 65 20 61  liary.** write a
11880 68 65 61 64 20 6c 6f 67 20 28 5b 57 41 4c 20 66  head log ([WAL f
11890 69 6c 65 5d 29 20 61 6e 64 20 73 68 61 72 65 64  ile]) and shared
118a0 20 6d 65 6d 6f 72 79 0a 2a 2a 20 66 69 6c 65 73   memory.** files
118b0 20 75 73 65 64 20 66 6f 72 20 74 72 61 6e 73 61   used for transa
118c0 63 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 0a 2a 2a  ction control.**
118d0 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
118e0 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 20  ly deleted when 
118f0 74 68 65 20 6c 61 74 65 73 74 20 63 6f 6e 6e 65  the latest conne
11900 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74  ction to the dat
11910 61 62 61 73 65 0a 2a 2a 20 63 6c 6f 73 65 73 2e  abase.** closes.
11920 20 20 53 65 74 74 69 6e 67 20 70 65 72 73 69 73    Setting persis
11930 74 65 6e 74 20 57 41 4c 20 6d 6f 64 65 20 63 61  tent WAL mode ca
11940 75 73 65 73 20 74 68 6f 73 65 20 66 69 6c 65 73  uses those files
11950 20 74 6f 20 70 65 72 73 69 73 74 20 61 66 74 65   to persist afte
11960 72 0a 2a 2a 20 63 6c 6f 73 65 2e 20 20 50 65 72  r.** close.  Per
11970 73 69 73 74 69 6e 67 20 74 68 65 20 66 69 6c 65  sisting the file
11980 73 20 69 73 20 75 73 65 66 75 6c 20 77 68 65 6e  s is useful when
11990 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 65 73   other processes
119a0 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 2a 2a 20   that do not.** 
119b0 68 61 76 65 20 77 72 69 74 65 20 70 65 72 6d 69  have write permi
119c0 73 73 69 6f 6e 20 6f 6e 20 74 68 65 20 64 69 72  ssion on the dir
119d0 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
119e0 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  g the database f
119f0 69 6c 65 20 77 61 6e 74 0a 2a 2a 20 74 6f 20 72  ile want.** to r
11a00 65 61 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ead the database
11a10 20 66 69 6c 65 2c 20 61 73 20 74 68 65 20 57 41   file, as the WA
11a20 4c 20 61 6e 64 20 73 68 61 72 65 64 20 6d 65 6d  L and shared mem
11a30 6f 72 79 20 66 69 6c 65 73 20 6d 75 73 74 20 65  ory files must e
11a40 78 69 73 74 0a 2a 2a 20 69 6e 20 6f 72 64 65 72  xist.** in order
11a50 20 66 6f 72 20 74 68 65 20 64 61 74 61 62 61 73   for the databas
11a60 65 20 74 6f 20 62 65 20 72 65 61 64 61 62 6c 65  e to be readable
11a70 2e 20 20 54 68 65 20 66 6f 75 72 74 68 20 70 61  .  The fourth pa
11a80 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 5b 73  rameter to.** [s
11a90 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
11aa0 72 6f 6c 28 29 5d 20 66 6f 72 20 74 68 69 73 20  rol()] for this 
11ab0 6f 70 63 6f 64 65 20 73 68 6f 75 6c 64 20 62 65  opcode should be
11ac0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
11ad0 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20 54 68 61   integer..** Tha
11ae0 74 20 69 6e 74 65 67 65 72 20 69 73 20 30 20 74  t integer is 0 t
11af0 6f 20 64 69 73 61 62 6c 65 20 70 65 72 73 69 73  o disable persis
11b00 74 65 6e 74 20 57 41 4c 20 6d 6f 64 65 20 6f 72  tent WAL mode or
11b10 20 31 20 74 6f 20 65 6e 61 62 6c 65 20 70 65 72   1 to enable per
11b20 73 69 73 74 65 6e 74 0a 2a 2a 20 57 41 4c 20 6d  sistent.** WAL m
11b30 6f 64 65 2e 20 20 49 66 20 74 68 65 20 69 6e 74  ode.  If the int
11b40 65 67 65 72 20 69 73 20 2d 31 2c 20 74 68 65 6e  eger is -1, then
11b50 20 69 74 20 69 73 20 6f 76 65 72 77 72 69 74 74   it is overwritt
11b60 65 6e 20 77 69 74 68 20 74 68 65 20 63 75 72 72  en with the curr
11b70 65 6e 74 0a 2a 2a 20 57 41 4c 20 70 65 72 73 69  ent.** WAL persi
11b80 73 74 65 6e 63 65 20 73 65 74 74 69 6e 67 2e 0a  stence setting..
11b90 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
11ba0 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45 52 53 41  TE_FCNTL_POWERSA
11bb0 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 5d 0a 2a  FE_OVERWRITE]].*
11bc0 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  * ^The [SQLITE_F
11bd0 43 4e 54 4c 5f 50 4f 57 45 52 53 41 46 45 5f 4f  CNTL_POWERSAFE_O
11be0 56 45 52 57 52 49 54 45 5d 20 6f 70 63 6f 64 65  VERWRITE] opcode
11bf0 20 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20   is used to set 
11c00 6f 72 20 71 75 65 72 79 20 74 68 65 0a 2a 2a 20  or query the.** 
11c10 70 65 72 73 69 73 74 65 6e 74 20 22 70 6f 77 65  persistent "powe
11c20 72 73 61 66 65 2d 6f 76 65 72 77 72 69 74 65 22  rsafe-overwrite"
11c30 20 6f 72 20 22 50 53 4f 57 22 20 73 65 74 74 69   or "PSOW" setti
11c40 6e 67 2e 20 20 54 68 65 20 50 53 4f 57 20 73 65  ng.  The PSOW se
11c50 74 74 69 6e 67 0a 2a 2a 20 64 65 74 65 72 6d 69  tting.** determi
11c60 6e 65 73 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  nes the [SQLITE_
11c70 49 4f 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f  IOCAP_POWERSAFE_
11c80 4f 56 45 52 57 52 49 54 45 5d 20 62 69 74 20 6f  OVERWRITE] bit o
11c90 66 20 74 68 65 0a 2a 2a 20 78 44 65 76 69 63 65  f the.** xDevice
11ca0 43 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20  Characteristics 
11cb0 6d 65 74 68 6f 64 73 2e 20 54 68 65 20 66 6f 75  methods. The fou
11cc0 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f  rth parameter to
11cd0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  .** [sqlite3_fil
11ce0 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 66 6f 72  e_control()] for
11cf0 20 74 68 69 73 20 6f 70 63 6f 64 65 20 73 68 6f   this opcode sho
11d00 75 6c 64 20 62 65 20 61 20 70 6f 69 6e 74 65 72  uld be a pointer
11d10 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a   to an integer..
11d20 2a 2a 20 54 68 61 74 20 69 6e 74 65 67 65 72 20  ** That integer 
11d30 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20  is 0 to disable 
11d40 7a 65 72 6f 2d 64 61 6d 61 67 65 20 6d 6f 64 65  zero-damage mode
11d50 20 6f 72 20 31 20 74 6f 20 65 6e 61 62 6c 65 20   or 1 to enable 
11d60 7a 65 72 6f 2d 64 61 6d 61 67 65 0a 2a 2a 20 6d  zero-damage.** m
11d70 6f 64 65 2e 20 20 49 66 20 74 68 65 20 69 6e 74  ode.  If the int
11d80 65 67 65 72 20 69 73 20 2d 31 2c 20 74 68 65 6e  eger is -1, then
11d90 20 69 74 20 69 73 20 6f 76 65 72 77 72 69 74 74   it is overwritt
11da0 65 6e 20 77 69 74 68 20 74 68 65 20 63 75 72 72  en with the curr
11db0 65 6e 74 0a 2a 2a 20 7a 65 72 6f 2d 64 61 6d 61  ent.** zero-dama
11dc0 67 65 20 6d 6f 64 65 20 73 65 74 74 69 6e 67 2e  ge mode setting.
11dd0 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
11de0 49 54 45 5f 46 43 4e 54 4c 5f 4f 56 45 52 57 52  ITE_FCNTL_OVERWR
11df0 49 54 45 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53  ITE]].** ^The [S
11e00 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f 56 45 52  QLITE_FCNTL_OVER
11e10 57 52 49 54 45 5d 20 6f 70 63 6f 64 65 20 69 73  WRITE] opcode is
11e20 20 69 6e 76 6f 6b 65 64 20 62 79 20 53 51 4c 69   invoked by SQLi
11e30 74 65 20 61 66 74 65 72 20 6f 70 65 6e 69 6e 67  te after opening
11e40 0a 2a 2a 20 61 20 77 72 69 74 65 20 74 72 61 6e  .** a write tran
11e50 73 61 63 74 69 6f 6e 20 74 6f 20 69 6e 64 69 63  saction to indic
11e60 61 74 65 20 74 68 61 74 2c 20 75 6e 6c 65 73 73  ate that, unless
11e70 20 69 74 20 69 73 20 72 6f 6c 6c 65 64 20 62 61   it is rolled ba
11e80 63 6b 20 66 6f 72 20 73 6f 6d 65 0a 2a 2a 20 72  ck for some.** r
11e90 65 61 73 6f 6e 2c 20 74 68 65 20 65 6e 74 69 72  eason, the entir
11ea0 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
11eb0 77 69 6c 6c 20 62 65 20 6f 76 65 72 77 72 69 74  will be overwrit
11ec0 74 65 6e 20 62 79 20 74 68 65 20 63 75 72 72 65  ten by the curre
11ed0 6e 74 20 0a 2a 2a 20 74 72 61 6e 73 61 63 74 69  nt .** transacti
11ee0 6f 6e 2e 20 54 68 69 73 20 69 73 20 75 73 65 64  on. This is used
11ef0 20 62 79 20 56 41 43 55 55 4d 20 6f 70 65 72 61   by VACUUM opera
11f00 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  tions..**.** <li
11f10 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
11f20 56 46 53 4e 41 4d 45 5d 5d 0a 2a 2a 20 5e 54 68  VFSNAME]].** ^Th
11f30 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
11f40 56 46 53 4e 41 4d 45 5d 20 6f 70 63 6f 64 65 20  VFSNAME] opcode 
11f50 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f  can be used to o
11f60 62 74 61 69 6e 20 74 68 65 20 6e 61 6d 65 73 20  btain the names 
11f70 6f 66 0a 2a 2a 20 61 6c 6c 20 5b 56 46 53 65 73  of.** all [VFSes
11f80 5d 20 69 6e 20 74 68 65 20 56 46 53 20 73 74 61  ] in the VFS sta
11f90 63 6b 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 61  ck.  The names a
11fa0 72 65 20 6f 66 20 61 6c 6c 20 56 46 53 20 73 68  re of all VFS sh
11fb0 69 6d 73 20 61 6e 64 20 74 68 65 0a 2a 2a 20 66  ims and the.** f
11fc0 69 6e 61 6c 20 62 6f 74 74 6f 6d 2d 6c 65 76 65  inal bottom-leve
11fd0 6c 20 56 46 53 20 61 72 65 20 77 72 69 74 74 65  l VFS are writte
11fe0 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72 79 20 6f 62  n into memory ob
11ff0 74 61 69 6e 65 64 20 66 72 6f 6d 20 0a 2a 2a 20  tained from .** 
12000 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
12010 29 5d 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c  )] and the resul
12020 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 74  t is stored in t
12030 68 65 20 63 68 61 72 2a 20 76 61 72 69 61 62 6c  he char* variabl
12040 65 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 66 6f  e.** that the fo
12050 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 6f  urth parameter o
12060 66 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  f [sqlite3_file_
12070 63 6f 6e 74 72 6f 6c 28 29 5d 20 70 6f 69 6e 74  control()] point
12080 73 20 74 6f 2e 0a 2a 2a 20 54 68 65 20 63 61 6c  s to..** The cal
12090 6c 65 72 20 69 73 20 72 65 73 70 6f 6e 73 69 62  ler is responsib
120a0 6c 65 20 66 6f 72 20 66 72 65 65 69 6e 67 20 74  le for freeing t
120b0 68 65 20 6d 65 6d 6f 72 79 20 77 68 65 6e 20 64  he memory when d
120c0 6f 6e 65 2e 20 20 41 73 20 77 69 74 68 0a 2a 2a  one.  As with.**
120d0 20 61 6c 6c 20 66 69 6c 65 2d 63 6f 6e 74 72 6f   all file-contro
120e0 6c 20 61 63 74 69 6f 6e 73 2c 20 74 68 65 72 65  l actions, there
120f0 20 69 73 20 6e 6f 20 67 75 61 72 61 6e 74 65 65   is no guarantee
12100 20 74 68 61 74 20 74 68 69 73 20 77 69 6c 6c 20   that this will 
12110 61 63 74 75 61 6c 6c 79 0a 2a 2a 20 64 6f 20 61  actually.** do a
12120 6e 79 74 68 69 6e 67 2e 20 20 43 61 6c 6c 65 72  nything.  Caller
12130 73 20 73 68 6f 75 6c 64 20 69 6e 69 74 69 61 6c  s should initial
12140 69 7a 65 20 74 68 65 20 63 68 61 72 2a 20 76 61  ize the char* va
12150 72 69 61 62 6c 65 20 74 6f 20 61 20 4e 55 4c 4c  riable to a NULL
12160 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 69 6e 20 63  .** pointer in c
12170 61 73 65 20 74 68 69 73 20 66 69 6c 65 2d 63 6f  ase this file-co
12180 6e 74 72 6f 6c 20 69 73 20 6e 6f 74 20 69 6d 70  ntrol is not imp
12190 6c 65 6d 65 6e 74 65 64 2e 20 20 54 68 69 73 20  lemented.  This 
121a0 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a 20  file-control.** 
121b0 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  is intended for 
121c0 64 69 61 67 6e 6f 73 74 69 63 20 75 73 65 20 6f  diagnostic use o
121d0 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  nly..**.** <li>[
121e0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 56 46  [SQLITE_FCNTL_VF
121f0 53 5f 50 4f 49 4e 54 45 52 5d 5d 0a 2a 2a 20 5e  S_POINTER]].** ^
12200 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
12210 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 5d 20 6f  L_VFS_POINTER] o
12220 70 63 6f 64 65 20 66 69 6e 64 73 20 61 20 70 6f  pcode finds a po
12230 69 6e 74 65 72 20 74 6f 20 74 68 65 20 74 6f 70  inter to the top
12240 2d 6c 65 76 65 6c 0a 2a 2a 20 5b 56 46 53 65 73  -level.** [VFSes
12250 5d 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75  ] currently in u
12260 73 65 2e 20 20 5e 28 54 68 65 20 61 72 67 75 6d  se.  ^(The argum
12270 65 6e 74 20 58 20 69 6e 0a 2a 2a 20 73 71 6c 69  ent X in.** sqli
12280 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c  te3_file_control
12290 28 64 62 2c 53 51 4c 49 54 45 5f 46 43 4e 54 4c  (db,SQLITE_FCNTL
122a0 5f 56 46 53 5f 50 4f 49 4e 54 45 52 2c 58 29 20  _VFS_POINTER,X) 
122b0 6d 75 73 74 20 62 65 0a 2a 2a 20 6f 66 20 74 79  must be.** of ty
122c0 70 65 20 22 5b 73 71 6c 69 74 65 33 5f 76 66 73  pe "[sqlite3_vfs
122d0 5d 20 2a 2a 22 2e 20 20 54 68 69 73 20 6f 70 63  ] **".  This opc
122e0 6f 64 65 73 20 77 69 6c 6c 20 73 65 74 20 2a 58  odes will set *X
122f0 0a 2a 2a 20 74 6f 20 61 20 70 6f 69 6e 74 65 72  .** to a pointer
12300 20 74 6f 20 74 68 65 20 74 6f 70 2d 6c 65 76 65   to the top-leve
12310 6c 20 56 46 53 2e 29 5e 0a 2a 2a 20 5e 57 68 65  l VFS.)^.** ^Whe
12320 6e 20 74 68 65 72 65 20 61 72 65 20 6d 75 6c 74  n there are mult
12330 69 70 6c 65 20 56 46 53 20 73 68 69 6d 73 20 69  iple VFS shims i
12340 6e 20 74 68 65 20 73 74 61 63 6b 2c 20 74 68 69  n the stack, thi
12350 73 20 6f 70 63 6f 64 65 20 66 69 6e 64 73 20 74  s opcode finds t
12360 68 65 0a 2a 2a 20 75 70 70 65 72 2d 6d 6f 73 74  he.** upper-most
12370 20 73 68 69 6d 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a   shim only..**.*
12380 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12390 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 5d 0a 2a 2a  CNTL_PRAGMA]].**
123a0 20 5e 57 68 65 6e 65 76 65 72 20 61 20 5b 50 52   ^Whenever a [PR
123b0 41 47 4d 41 5d 20 73 74 61 74 65 6d 65 6e 74 20  AGMA] statement 
123c0 69 73 20 70 61 72 73 65 64 2c 20 61 6e 20 5b 53  is parsed, an [S
123d0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47  QLITE_FCNTL_PRAG
123e0 4d 41 5d 20 0a 2a 2a 20 66 69 6c 65 20 63 6f 6e  MA] .** file con
123f0 74 72 6f 6c 20 69 73 20 73 65 6e 74 20 74 6f 20  trol is sent to 
12400 74 68 65 20 6f 70 65 6e 20 5b 73 71 6c 69 74 65  the open [sqlite
12410 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 63  3_file] object c
12420 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 2a 2a 20  orresponding.** 
12430 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
12440 66 69 6c 65 20 74 6f 20 77 68 69 63 68 20 74 68  file to which th
12450 65 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d 65  e pragma stateme
12460 6e 74 20 72 65 66 65 72 73 2e 20 5e 54 68 65 20  nt refers. ^The 
12470 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 74 6f 20 74  argument.** to t
12480 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
12490 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65 20 63 6f  _PRAGMA] file co
124a0 6e 74 72 6f 6c 20 69 73 20 61 6e 20 61 72 72 61  ntrol is an arra
124b0 79 20 6f 66 0a 2a 2a 20 70 6f 69 6e 74 65 72 73  y of.** pointers
124c0 20 74 6f 20 73 74 72 69 6e 67 73 20 28 63 68 61   to strings (cha
124d0 72 2a 2a 29 20 69 6e 20 77 68 69 63 68 20 74 68  r**) in which th
124e0 65 20 73 65 63 6f 6e 64 20 65 6c 65 6d 65 6e 74  e second element
124f0 20 6f 66 20 74 68 65 20 61 72 72 61 79 0a 2a 2a   of the array.**
12500 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
12510 74 68 65 20 70 72 61 67 6d 61 20 61 6e 64 20 74  the pragma and t
12520 68 65 20 74 68 69 72 64 20 65 6c 65 6d 65 6e 74  he third element
12530 20 69 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74   is the argument
12540 20 74 6f 20 74 68 65 0a 2a 2a 20 70 72 61 67 6d   to the.** pragm
12550 61 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68 65  a or NULL if the
12560 20 70 72 61 67 6d 61 20 68 61 73 20 6e 6f 20 61   pragma has no a
12570 72 67 75 6d 65 6e 74 2e 20 20 5e 54 68 65 20 68  rgument.  ^The h
12580 61 6e 64 6c 65 72 20 66 6f 72 20 61 6e 0a 2a 2a  andler for an.**
12590 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50   [SQLITE_FCNTL_P
125a0 52 41 47 4d 41 5d 20 66 69 6c 65 20 63 6f 6e 74  RAGMA] file cont
125b0 72 6f 6c 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c  rol can optional
125c0 6c 79 20 6d 61 6b 65 20 74 68 65 20 66 69 72 73  ly make the firs
125d0 74 20 65 6c 65 6d 65 6e 74 0a 2a 2a 20 6f 66 20  t element.** of 
125e0 74 68 65 20 63 68 61 72 2a 2a 20 61 72 67 75 6d  the char** argum
125f0 65 6e 74 20 70 6f 69 6e 74 20 74 6f 20 61 20 73  ent point to a s
12600 74 72 69 6e 67 20 6f 62 74 61 69 6e 65 64 20 66  tring obtained f
12610 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 70 72  rom [sqlite3_mpr
12620 69 6e 74 66 28 29 5d 0a 2a 2a 20 6f 72 20 74 68  intf()].** or th
12630 65 20 65 71 75 69 76 61 6c 65 6e 74 20 61 6e 64  e equivalent and
12640 20 74 68 61 74 20 73 74 72 69 6e 67 20 77 69 6c   that string wil
12650 6c 20 62 65 63 6f 6d 65 20 74 68 65 20 72 65 73  l become the res
12660 75 6c 74 20 6f 66 20 74 68 65 20 70 72 61 67 6d  ult of the pragm
12670 61 20 6f 72 0a 2a 2a 20 74 68 65 20 65 72 72 6f  a or.** the erro
12680 72 20 6d 65 73 73 61 67 65 20 69 66 20 74 68 65  r message if the
12690 20 70 72 61 67 6d 61 20 66 61 69 6c 73 2e 20 5e   pragma fails. ^
126a0 49 66 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  If the.** [SQLIT
126b0 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20  E_FCNTL_PRAGMA] 
126c0 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74  file control ret
126d0 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4e 4f 54  urns [SQLITE_NOT
126e0 46 4f 55 4e 44 5d 2c 20 74 68 65 6e 20 6e 6f 72  FOUND], then nor
126f0 6d 61 6c 20 0a 2a 2a 20 5b 50 52 41 47 4d 41 5d  mal .** [PRAGMA]
12700 20 70 72 6f 63 65 73 73 69 6e 67 20 63 6f 6e 74   processing cont
12710 69 6e 75 65 73 2e 20 20 5e 49 66 20 74 68 65 20  inues.  ^If the 
12720 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52  [SQLITE_FCNTL_PR
12730 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65 20 63 6f  AGMA].** file co
12740 6e 74 72 6f 6c 20 72 65 74 75 72 6e 73 20 5b 53  ntrol returns [S
12750 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74 68 65 6e 20  QLITE_OK], then 
12760 74 68 65 20 70 61 72 73 65 72 20 61 73 73 75 6d  the parser assum
12770 65 73 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 56  es that the.** V
12780 46 53 20 68 61 73 20 68 61 6e 64 6c 65 64 20 74  FS has handled t
12790 68 65 20 50 52 41 47 4d 41 20 69 74 73 65 6c 66  he PRAGMA itself
127a0 20 61 6e 64 20 74 68 65 20 70 61 72 73 65 72 20   and the parser 
127b0 67 65 6e 65 72 61 74 65 73 20 61 20 6e 6f 2d 6f  generates a no-o
127c0 70 0a 2a 2a 20 70 72 65 70 61 72 65 64 20 73 74  p.** prepared st
127d0 61 74 65 6d 65 6e 74 20 69 66 20 72 65 73 75 6c  atement if resul
127e0 74 20 73 74 72 69 6e 67 20 69 73 20 4e 55 4c 4c  t string is NULL
127f0 2c 20 6f 72 20 74 68 61 74 20 72 65 74 75 72 6e  , or that return
12800 73 20 61 20 63 6f 70 79 0a 2a 2a 20 6f 66 20 74  s a copy.** of t
12810 68 65 20 72 65 73 75 6c 74 20 73 74 72 69 6e 67  he result string
12820 20 69 66 20 74 68 65 20 73 74 72 69 6e 67 20 69   if the string i
12830 73 20 6e 6f 6e 2d 4e 55 4c 4c 2e 0a 2a 2a 20 5e  s non-NULL..** ^
12840 49 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46  If the [SQLITE_F
12850 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c  CNTL_PRAGMA] fil
12860 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75 72 6e  e control return
12870 73 0a 2a 2a 20 61 6e 79 20 72 65 73 75 6c 74 20  s.** any result 
12880 63 6f 64 65 20 6f 74 68 65 72 20 74 68 61 6e 20  code other than 
12890 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 72 20 5b  [SQLITE_OK] or [
128a0 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 5d  SQLITE_NOTFOUND]
128b0 2c 20 74 68 61 74 20 6d 65 61 6e 73 0a 2a 2a 20  , that means.** 
128c0 74 68 61 74 20 74 68 65 20 56 46 53 20 65 6e 63  that the VFS enc
128d0 6f 75 6e 74 65 72 65 64 20 61 6e 20 65 72 72 6f  ountered an erro
128e0 72 20 77 68 69 6c 65 20 68 61 6e 64 6c 69 6e 67  r while handling
128f0 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 61 6e   the [PRAGMA] an
12900 64 20 74 68 65 0a 2a 2a 20 63 6f 6d 70 69 6c 61  d the.** compila
12910 74 69 6f 6e 20 6f 66 20 74 68 65 20 50 52 41 47  tion of the PRAG
12920 4d 41 20 66 61 69 6c 73 20 77 69 74 68 20 61 6e  MA fails with an
12930 20 65 72 72 6f 72 2e 20 20 5e 54 68 65 20 5b 53   error.  ^The [S
12940 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47  QLITE_FCNTL_PRAG
12950 4d 41 5d 0a 2a 2a 20 66 69 6c 65 20 63 6f 6e 74  MA].** file cont
12960 72 6f 6c 20 6f 63 63 75 72 73 20 61 74 20 74 68  rol occurs at th
12970 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 70  e beginning of p
12980 72 61 67 6d 61 20 73 74 61 74 65 6d 65 6e 74 20  ragma statement 
12990 61 6e 61 6c 79 73 69 73 20 61 6e 64 20 73 6f 0a  analysis and so.
129a0 2a 2a 20 69 74 20 69 73 20 61 62 6c 65 20 74 6f  ** it is able to
129b0 20 6f 76 65 72 72 69 64 65 20 62 75 69 6c 74 2d   override built-
129c0 69 6e 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74  in [PRAGMA] stat
129d0 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  ements..**.** <l
129e0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
129f0 5f 42 55 53 59 48 41 4e 44 4c 45 52 5d 5d 0a 2a  _BUSYHANDLER]].*
12a00 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  * ^The [SQLITE_F
12a10 43 4e 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52  CNTL_BUSYHANDLER
12a20 5d 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e 74 72 6f  ].** file-contro
12a30 6c 20 6d 61 79 20 62 65 20 69 6e 76 6f 6b 65 64  l may be invoked
12a40 20 62 79 20 53 51 4c 69 74 65 20 6f 6e 20 74 68   by SQLite on th
12a50 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
12a60 68 61 6e 64 6c 65 0a 2a 2a 20 73 68 6f 72 74 6c  handle.** shortl
12a70 79 20 61 66 74 65 72 20 69 74 20 69 73 20 6f 70  y after it is op
12a80 65 6e 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f  ened in order to
12a90 20 70 72 6f 76 69 64 65 20 61 20 63 75 73 74 6f   provide a custo
12aa0 6d 20 56 46 53 20 77 69 74 68 20 61 63 63 65 73  m VFS with acces
12ab0 73 0a 2a 2a 20 74 6f 20 74 68 65 20 63 6f 6e 6e  s.** to the conn
12ac0 65 63 74 69 6f 6e 73 20 62 75 73 79 2d 68 61 6e  ections busy-han
12ad0 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b 2e 20 54  dler callback. T
12ae0 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f  he argument is o
12af0 66 20 74 79 70 65 20 28 76 6f 69 64 20 2a 2a 29  f type (void **)
12b00 0a 2a 2a 20 2d 20 61 6e 20 61 72 72 61 79 20 6f  .** - an array o
12b10 66 20 74 77 6f 20 28 76 6f 69 64 20 2a 29 20 76  f two (void *) v
12b20 61 6c 75 65 73 2e 20 54 68 65 20 66 69 72 73 74  alues. The first
12b30 20 28 76 6f 69 64 20 2a 29 20 61 63 74 75 61 6c   (void *) actual
12b40 6c 79 20 70 6f 69 6e 74 73 0a 2a 2a 20 74 6f 20  ly points.** to 
12b50 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 79  a function of ty
12b60 70 65 20 28 69 6e 74 20 28 2a 29 28 76 6f 69 64  pe (int (*)(void
12b70 20 2a 29 29 2e 20 49 6e 20 6f 72 64 65 72 20 74   *)). In order t
12b80 6f 20 69 6e 76 6f 6b 65 20 74 68 65 20 63 6f 6e  o invoke the con
12b90 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20 62 75 73 79  nections.** busy
12ba0 2d 68 61 6e 64 6c 65 72 2c 20 74 68 69 73 20 66  -handler, this f
12bb0 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62  unction should b
12bc0 65 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74  e invoked with t
12bd0 68 65 20 73 65 63 6f 6e 64 20 28 76 6f 69 64 20  he second (void 
12be0 2a 29 20 69 6e 0a 2a 2a 20 74 68 65 20 61 72 72  *) in.** the arr
12bf0 61 79 20 61 73 20 74 68 65 20 6f 6e 6c 79 20 61  ay as the only a
12c00 72 67 75 6d 65 6e 74 2e 20 49 66 20 69 74 20 72  rgument. If it r
12c10 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eturns non-zero,
12c20 20 74 68 65 6e 20 74 68 65 20 6f 70 65 72 61 74   then the operat
12c30 69 6f 6e 0a 2a 2a 20 73 68 6f 75 6c 64 20 62 65  ion.** should be
12c40 20 72 65 74 72 69 65 64 2e 20 49 66 20 69 74 20   retried. If it 
12c50 72 65 74 75 72 6e 73 20 7a 65 72 6f 2c 20 74 68  returns zero, th
12c60 65 20 63 75 73 74 6f 6d 20 56 46 53 20 73 68 6f  e custom VFS sho
12c70 75 6c 64 20 61 62 61 6e 64 6f 6e 20 74 68 65 0a  uld abandon the.
12c80 2a 2a 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61  ** current opera
12c90 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  tion..**.** <li>
12ca0 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54  [[SQLITE_FCNTL_T
12cb0 45 4d 50 46 49 4c 45 4e 41 4d 45 5d 5d 0a 2a 2a  EMPFILENAME]].**
12cc0 20 5e 41 70 70 6c 69 63 61 74 69 6f 6e 20 63 61   ^Application ca
12cd0 6e 20 69 6e 76 6f 6b 65 20 74 68 65 20 5b 53 51  n invoke the [SQ
12ce0 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 45 4d 50 46  LITE_FCNTL_TEMPF
12cf0 49 4c 45 4e 41 4d 45 5d 20 66 69 6c 65 2d 63 6f  ILENAME] file-co
12d00 6e 74 72 6f 6c 0a 2a 2a 20 74 6f 20 68 61 76 65  ntrol.** to have
12d10 20 53 51 4c 69 74 65 20 67 65 6e 65 72 61 74 65   SQLite generate
12d20 20 61 0a 2a 2a 20 74 65 6d 70 6f 72 61 72 79 20   a.** temporary 
12d30 66 69 6c 65 6e 61 6d 65 20 75 73 69 6e 67 20 74  filename using t
12d40 68 65 20 73 61 6d 65 20 61 6c 67 6f 72 69 74 68  he same algorith
12d50 6d 20 74 68 61 74 20 69 73 20 66 6f 6c 6c 6f 77  m that is follow
12d60 65 64 20 74 6f 20 67 65 6e 65 72 61 74 65 0a 2a  ed to generate.*
12d70 2a 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65  * temporary file
12d80 6e 61 6d 65 73 20 66 6f 72 20 54 45 4d 50 20 74  names for TEMP t
12d90 61 62 6c 65 73 20 61 6e 64 20 6f 74 68 65 72 20  ables and other 
12da0 69 6e 74 65 72 6e 61 6c 20 75 73 65 73 2e 20 20  internal uses.  
12db0 54 68 65 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20  The.** argument 
12dc0 73 68 6f 75 6c 64 20 62 65 20 61 20 63 68 61 72  should be a char
12dd0 2a 2a 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65  ** which will be
12de0 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65   filled with the
12df0 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a 20 77 72 69   filename.** wri
12e00 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72 79  tten into memory
12e10 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 5b   obtained from [
12e20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
12e30 5d 2e 20 20 54 68 65 20 63 61 6c 6c 65 72 20 73  ].  The caller s
12e40 68 6f 75 6c 64 0a 2a 2a 20 69 6e 76 6f 6b 65 20  hould.** invoke 
12e50 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d  [sqlite3_free()]
12e60 20 6f 6e 20 74 68 65 20 72 65 73 75 6c 74 20 74   on the result t
12e70 6f 20 61 76 6f 69 64 20 61 20 6d 65 6d 6f 72 79  o avoid a memory
12e80 20 6c 65 61 6b 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69   leak..**.** <li
12e90 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
12ea0 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a 2a 2a 20 54  MMAP_SIZE]].** T
12eb0 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
12ec0 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 66 69 6c 65  _MMAP_SIZE] file
12ed0 20 63 6f 6e 74 72 6f 6c 20 69 73 20 75 73 65 64   control is used
12ee0 20 74 6f 20 71 75 65 72 79 20 6f 72 20 73 65 74   to query or set
12ef0 20 74 68 65 0a 2a 2a 20 6d 61 78 69 6d 75 6d 20   the.** maximum 
12f00 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
12f10 74 68 61 74 20 77 69 6c 6c 20 62 65 20 75 73 65  that will be use
12f20 64 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70  d for memory-map
12f30 70 65 64 20 49 2f 4f 2e 0a 2a 2a 20 54 68 65 20  ped I/O..** The 
12f40 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f  argument is a po
12f50 69 6e 74 65 72 20 74 6f 20 61 20 76 61 6c 75 65  inter to a value
12f60 20 6f 66 20 74 79 70 65 20 73 71 6c 69 74 65 33   of type sqlite3
12f70 5f 69 6e 74 36 34 20 74 68 61 74 0a 2a 2a 20 69  _int64 that.** i
12f80 73 20 61 6e 20 61 64 76 69 73 6f 72 79 20 6d 61  s an advisory ma
12f90 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
12fa0 62 79 74 65 73 20 69 6e 20 74 68 65 20 66 69 6c  bytes in the fil
12fb0 65 20 74 6f 20 6d 65 6d 6f 72 79 20 6d 61 70 2e  e to memory map.
12fc0 20 20 54 68 65 0a 2a 2a 20 70 6f 69 6e 74 65 72    The.** pointer
12fd0 20 69 73 20 6f 76 65 72 77 72 69 74 74 65 6e 20   is overwritten 
12fe0 77 69 74 68 20 74 68 65 20 6f 6c 64 20 76 61 6c  with the old val
12ff0 75 65 2e 20 20 54 68 65 20 6c 69 6d 69 74 20 69  ue.  The limit i
13000 73 20 6e 6f 74 20 63 68 61 6e 67 65 64 20 69 66  s not changed if
13010 0a 2a 2a 20 74 68 65 20 76 61 6c 75 65 20 6f 72  .** the value or
13020 69 67 69 6e 61 6c 6c 79 20 70 6f 69 6e 74 65 64  iginally pointed
13030 20 74 6f 20 69 73 20 6e 65 67 61 74 69 76 65 2c   to is negative,
13040 20 61 6e 64 20 73 6f 20 74 68 65 20 63 75 72 72   and so the curr
13050 65 6e 74 20 6c 69 6d 69 74 20 0a 2a 2a 20 63 61  ent limit .** ca
13060 6e 20 62 65 20 71 75 65 72 69 65 64 20 62 79 20  n be queried by 
13070 70 61 73 73 69 6e 67 20 69 6e 20 61 20 70 6f 69  passing in a poi
13080 6e 74 65 72 20 74 6f 20 61 20 6e 65 67 61 74 69  nter to a negati
13090 76 65 20 6e 75 6d 62 65 72 2e 20 20 54 68 69 73  ve number.  This
130a0 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  .** file-control
130b0 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e 61   is used interna
130c0 6c 6c 79 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  lly to implement
130d0 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69   [PRAGMA mmap_si
130e0 7a 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ze]..**.** <li>[
130f0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52  [SQLITE_FCNTL_TR
13100 41 43 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51  ACE]].** The [SQ
13110 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45  LITE_FCNTL_TRACE
13120 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 70  ] file control p
13130 72 6f 76 69 64 65 73 20 61 64 76 69 73 6f 72 79  rovides advisory
13140 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20   information.** 
13150 74 6f 20 74 68 65 20 56 46 53 20 61 62 6f 75 74  to the VFS about
13160 20 77 68 61 74 20 74 68 65 20 68 69 67 68 65 72   what the higher
13170 20 6c 61 79 65 72 73 20 6f 66 20 74 68 65 20 53   layers of the S
13180 51 4c 69 74 65 20 73 74 61 63 6b 20 61 72 65 20  QLite stack are 
13190 64 6f 69 6e 67 2e 0a 2a 2a 20 54 68 69 73 20 66  doing..** This f
131a0 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 75  ile control is u
131b0 73 65 64 20 62 79 20 73 6f 6d 65 20 56 46 53 20  sed by some VFS 
131c0 61 63 74 69 76 69 74 79 20 74 72 61 63 69 6e 67  activity tracing
131d0 20 5b 73 68 69 6d 73 5d 2e 0a 2a 2a 20 54 68 65   [shims]..** The
131e0 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 7a   argument is a z
131f0 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 73  ero-terminated s
13200 74 72 69 6e 67 2e 20 20 48 69 67 68 65 72 20 6c  tring.  Higher l
13210 61 79 65 72 73 20 69 6e 20 74 68 65 0a 2a 2a 20  ayers in the.** 
13220 53 51 4c 69 74 65 20 73 74 61 63 6b 20 6d 61 79  SQLite stack may
13230 20 67 65 6e 65 72 61 74 65 20 69 6e 73 74 61 6e   generate instan
13240 63 65 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65  ces of this file
13250 20 63 6f 6e 74 72 6f 6c 20 69 66 0a 2a 2a 20 74   control if.** t
13260 68 65 20 5b 53 51 4c 49 54 45 5f 55 53 45 5f 46  he [SQLITE_USE_F
13270 43 4e 54 4c 5f 54 52 41 43 45 5d 20 63 6f 6d 70  CNTL_TRACE] comp
13280 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
13290 69 73 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 0a 2a  is enabled..**.*
132a0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
132b0 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56 45 44 5d 5d  CNTL_HAS_MOVED]]
132c0 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
132d0 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56 45 44 5d  FCNTL_HAS_MOVED]
132e0 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 6e   file control in
132f0 74 65 72 70 72 65 74 73 20 69 74 73 20 61 72 67  terprets its arg
13300 75 6d 65 6e 74 20 61 73 20 61 0a 2a 2a 20 70 6f  ument as a.** po
13310 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65  inter to an inte
13320 67 65 72 20 61 6e 64 20 69 74 20 77 72 69 74 65  ger and it write
13330 73 20 61 20 62 6f 6f 6c 65 61 6e 20 69 6e 74 6f  s a boolean into
13340 20 74 68 61 74 20 69 6e 74 65 67 65 72 20 64 65   that integer de
13350 70 65 6e 64 69 6e 67 0a 2a 2a 20 6f 6e 20 77 68  pending.** on wh
13360 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
13370 20 66 69 6c 65 20 68 61 73 20 62 65 65 6e 20 72   file has been r
13380 65 6e 61 6d 65 64 2c 20 6d 6f 76 65 64 2c 20 6f  enamed, moved, o
13390 72 20 64 65 6c 65 74 65 64 20 73 69 6e 63 65 20  r deleted since 
133a0 69 74 0a 2a 2a 20 77 61 73 20 66 69 72 73 74 20  it.** was first 
133b0 6f 70 65 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  opened..**.** <l
133c0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
133d0 5f 57 49 4e 33 32 5f 47 45 54 5f 48 41 4e 44 4c  _WIN32_GET_HANDL
133e0 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  E]].** The [SQLI
133f0 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 47  TE_FCNTL_WIN32_G
13400 45 54 5f 48 41 4e 44 4c 45 5d 20 6f 70 63 6f 64  ET_HANDLE] opcod
13410 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  e can be used to
13420 20 6f 62 74 61 69 6e 20 74 68 65 0a 2a 2a 20 75   obtain the.** u
13430 6e 64 65 72 6c 79 69 6e 67 20 6e 61 74 69 76 65  nderlying native
13440 20 66 69 6c 65 20 68 61 6e 64 6c 65 20 61 73 73   file handle ass
13450 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20 66  ociated with a f
13460 69 6c 65 20 68 61 6e 64 6c 65 2e 20 20 54 68 69  ile handle.  Thi
13470 73 20 66 69 6c 65 0a 2a 2a 20 63 6f 6e 74 72 6f  s file.** contro
13480 6c 20 69 6e 74 65 72 70 72 65 74 73 20 69 74 73  l interprets its
13490 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 20 70   argument as a p
134a0 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69  ointer to a nati
134b0 76 65 20 66 69 6c 65 20 68 61 6e 64 6c 65 20 61  ve file handle a
134c0 6e 64 0a 2a 2a 20 77 72 69 74 65 73 20 74 68 65  nd.** writes the
134d0 20 72 65 73 75 6c 74 69 6e 67 20 76 61 6c 75 65   resulting value
134e0 20 74 68 65 72 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c   there..**.** <l
134f0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
13500 5f 57 49 4e 33 32 5f 53 45 54 5f 48 41 4e 44 4c  _WIN32_SET_HANDL
13510 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  E]].** The [SQLI
13520 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 53  TE_FCNTL_WIN32_S
13530 45 54 5f 48 41 4e 44 4c 45 5d 20 6f 70 63 6f 64  ET_HANDLE] opcod
13540 65 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65  e is used for de
13550 62 75 67 67 69 6e 67 2e 20 20 54 68 69 73 0a 2a  bugging.  This.*
13560 2a 20 6f 70 63 6f 64 65 20 63 61 75 73 65 73 20  * opcode causes 
13570 74 68 65 20 78 46 69 6c 65 43 6f 6e 74 72 6f 6c  the xFileControl
13580 20 6d 65 74 68 6f 64 20 74 6f 20 73 77 61 70 20   method to swap 
13590 74 68 65 20 66 69 6c 65 20 68 61 6e 64 6c 65 20  the file handle 
135a0 77 69 74 68 20 74 68 65 20 6f 6e 65 0a 2a 2a 20  with the one.** 
135b0 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74 68  pointed to by th
135c0 65 20 70 41 72 67 20 61 72 67 75 6d 65 6e 74 2e  e pArg argument.
135d0 20 20 54 68 69 73 20 63 61 70 61 62 69 6c 69 74    This capabilit
135e0 79 20 69 73 20 75 73 65 64 20 64 75 72 69 6e 67  y is used during
135f0 20 74 65 73 74 69 6e 67 0a 2a 2a 20 61 6e 64 20   testing.** and 
13600 6f 6e 6c 79 20 6e 65 65 64 73 20 74 6f 20 62 65  only needs to be
13610 20 73 75 70 70 6f 72 74 65 64 20 77 68 65 6e 20   supported when 
13620 53 51 4c 49 54 45 5f 54 45 53 54 20 69 73 20 64  SQLITE_TEST is d
13630 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  efined..**.** <l
13640 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
13650 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 5d 0a 2a 2a 20  _WAL_BLOCK]].** 
13660 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
13670 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 20 69 73 20  L_WAL_BLOCK] is 
13680 61 20 73 69 67 6e 61 6c 20 74 6f 20 74 68 65 20  a signal to the 
13690 56 46 53 20 6c 61 79 65 72 20 74 68 61 74 20 69  VFS layer that i
136a0 74 20 6d 69 67 68 74 0a 2a 2a 20 62 65 20 61 64  t might.** be ad
136b0 76 61 6e 74 61 67 65 6f 75 73 20 74 6f 20 62 6c  vantageous to bl
136c0 6f 63 6b 20 6f 6e 20 74 68 65 20 6e 65 78 74 20  ock on the next 
136d0 57 41 4c 20 6c 6f 63 6b 20 69 66 20 74 68 65 20  WAL lock if the 
136e0 6c 6f 63 6b 20 69 73 20 6e 6f 74 20 69 6d 6d 65  lock is not imme
136f0 64 69 61 74 65 6c 79 0a 2a 2a 20 61 76 61 69 6c  diately.** avail
13700 61 62 6c 65 2e 20 20 54 68 65 20 57 41 4c 20 73  able.  The WAL s
13710 75 62 73 79 73 74 65 6d 20 69 73 73 75 65 73 20  ubsystem issues 
13720 74 68 69 73 20 73 69 67 6e 61 6c 20 64 75 72 69  this signal duri
13730 6e 67 20 72 61 72 65 0a 2a 2a 20 63 69 72 63 75  ng rare.** circu
13740 6d 73 74 61 6e 63 65 73 20 69 6e 20 6f 72 64 65  mstances in orde
13750 72 20 74 6f 20 66 69 78 20 61 20 70 72 6f 62 6c  r to fix a probl
13760 65 6d 20 77 69 74 68 20 70 72 69 6f 72 69 74 79  em with priority
13770 20 69 6e 76 65 72 73 69 6f 6e 2e 0a 2a 2a 20 41   inversion..** A
13780 70 70 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f 75  pplications shou
13790 6c 64 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20  ld <em>not</em> 
137a0 75 73 65 20 74 68 69 73 20 66 69 6c 65 2d 63 6f  use this file-co
137b0 6e 74 72 6f 6c 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  ntrol..**.** <li
137c0 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
137d0 5a 49 50 56 46 53 5d 5d 0a 2a 2a 20 54 68 65 20  ZIPVFS]].** The 
137e0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 5a 49  [SQLITE_FCNTL_ZI
137f0 50 56 46 53 5d 20 6f 70 63 6f 64 65 20 69 73 20  PVFS] opcode is 
13800 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 7a  implemented by z
13810 69 70 76 66 73 20 6f 6e 6c 79 2e 20 41 6c 6c 20  ipvfs only. All 
13820 6f 74 68 65 72 0a 2a 2a 20 56 46 53 20 73 68 6f  other.** VFS sho
13830 75 6c 64 20 72 65 74 75 72 6e 20 53 51 4c 49 54  uld return SQLIT
13840 45 5f 4e 4f 54 46 4f 55 4e 44 20 66 6f 72 20 74  E_NOTFOUND for t
13850 68 69 73 20 6f 70 63 6f 64 65 2e 0a 2a 2a 0a 2a  his opcode..**.*
13860 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13870 43 4e 54 4c 5f 52 42 55 5d 5d 0a 2a 2a 20 54 68  CNTL_RBU]].** Th
13880 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
13890 52 42 55 5d 20 6f 70 63 6f 64 65 20 69 73 20 69  RBU] opcode is i
138a0 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 74 68  mplemented by th
138b0 65 20 73 70 65 63 69 61 6c 20 56 46 53 20 75 73  e special VFS us
138c0 65 64 20 62 79 0a 2a 2a 20 74 68 65 20 52 42 55  ed by.** the RBU
138d0 20 65 78 74 65 6e 73 69 6f 6e 20 6f 6e 6c 79 2e   extension only.
138e0 20 20 41 6c 6c 20 6f 74 68 65 72 20 56 46 53 20    All other VFS 
138f0 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 53 51  should return SQ
13900 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 66 6f  LITE_NOTFOUND fo
13910 72 0a 2a 2a 20 74 68 69 73 20 6f 70 63 6f 64 65  r.** this opcode
13920 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  .  .**.** <li>[[
13930 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47  SQLITE_FCNTL_BEG
13940 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d  IN_ATOMIC_WRITE]
13950 5d 0a 2a 2a 20 49 66 20 74 68 65 20 5b 53 51 4c  ].** If the [SQL
13960 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f  ITE_FCNTL_BEGIN_
13970 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70  ATOMIC_WRITE] op
13980 63 6f 64 65 20 72 65 74 75 72 6e 73 20 53 51 4c  code returns SQL
13990 49 54 45 5f 4f 4b 2c 20 74 68 65 6e 0a 2a 2a 20  ITE_OK, then.** 
139a0 74 68 65 20 66 69 6c 65 20 64 65 73 63 72 69 70  the file descrip
139b0 74 6f 72 20 69 73 20 70 6c 61 63 65 64 20 69 6e  tor is placed in
139c0 20 22 62 61 74 63 68 20 77 72 69 74 65 20 6d 6f   "batch write mo
139d0 64 65 22 2c 20 77 68 69 63 68 0a 2a 2a 20 6d 65  de", which.** me
139e0 61 6e 73 20 61 6c 6c 20 73 75 62 73 65 71 75 65  ans all subseque
139f0 6e 74 20 77 72 69 74 65 20 6f 70 65 72 61 74 69  nt write operati
13a00 6f 6e 73 20 77 69 6c 6c 20 62 65 20 64 65 66 65  ons will be defe
13a10 72 72 65 64 20 61 6e 64 20 64 6f 6e 65 0a 2a 2a  rred and done.**
13a20 20 61 74 6f 6d 69 63 61 6c 6c 79 20 61 74 20 74   atomically at t
13a30 68 65 20 6e 65 78 74 20 5b 53 51 4c 49 54 45 5f  he next [SQLITE_
13a40 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
13a50 4d 49 43 5f 57 52 49 54 45 5d 2e 20 20 53 79 73  MIC_WRITE].  Sys
13a60 74 65 6d 73 0a 2a 2a 20 74 68 61 74 20 64 6f 20  tems.** that do 
13a70 6e 6f 74 20 73 75 70 70 6f 72 74 20 62 61 74 63  not support batc
13a80 68 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 20  h atomic writes 
13a90 77 69 6c 6c 20 72 65 74 75 72 6e 20 53 51 4c 49  will return SQLI
13aa0 54 45 5f 4e 4f 54 46 4f 55 4e 44 2e 0a 2a 2a 20  TE_NOTFOUND..** 
13ab0 5e 46 6f 6c 6c 6f 77 69 6e 67 20 61 20 73 75 63  ^Following a suc
13ac0 63 65 73 73 66 75 6c 20 53 51 4c 49 54 45 5f 46  cessful SQLITE_F
13ad0 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49  CNTL_BEGIN_ATOMI
13ae0 43 5f 57 52 49 54 45 20 61 6e 64 20 70 72 69 6f  C_WRITE and prio
13af0 72 20 74 6f 0a 2a 2a 20 74 68 65 20 63 6c 6f 73  r to.** the clos
13b00 69 6e 67 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  ing [SQLITE_FCNT
13b10 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f  L_COMMIT_ATOMIC_
13b20 57 52 49 54 45 5d 20 6f 72 0a 2a 2a 20 5b 53 51  WRITE] or.** [SQ
13b30 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c 4c 42  LITE_FCNTL_ROLLB
13b40 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  ACK_ATOMIC_WRITE
13b50 5d 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6d  ], SQLite will m
13b60 61 6b 65 0a 2a 2a 20 6e 6f 20 56 46 53 20 69 6e  ake.** no VFS in
13b70 74 65 72 66 61 63 65 20 63 61 6c 6c 73 20 6f 6e  terface calls on
13b80 20 74 68 65 20 73 61 6d 65 20 5b 73 71 6c 69 74   the same [sqlit
13b90 65 33 5f 66 69 6c 65 5d 20 66 69 6c 65 20 64 65  e3_file] file de
13ba0 73 63 72 69 70 74 6f 72 0a 2a 2a 20 65 78 63 65  scriptor.** exce
13bb0 70 74 20 66 6f 72 20 63 61 6c 6c 73 20 74 6f 20  pt for calls to 
13bc0 74 68 65 20 78 57 72 69 74 65 20 6d 65 74 68 6f  the xWrite metho
13bd0 64 20 61 6e 64 20 74 68 65 20 78 46 69 6c 65 43  d and the xFileC
13be0 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 0a 2a 2a  ontrol method.**
13bf0 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 46 43   with [SQLITE_FC
13c00 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e 54 5d 2e 0a  NTL_SIZE_HINT]..
13c10 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
13c20 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f  TE_FCNTL_COMMIT_
13c30 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 5d 0a 2a  ATOMIC_WRITE]].*
13c40 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
13c50 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49  NTL_COMMIT_ATOMI
13c60 43 5f 57 52 49 54 45 5d 20 6f 70 63 6f 64 65 20  C_WRITE] opcode 
13c70 63 61 75 73 65 73 20 61 6c 6c 20 77 72 69 74 65  causes all write
13c80 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 73 20 73  .** operations s
13c90 69 6e 63 65 20 74 68 65 20 70 72 65 76 69 6f 75  ince the previou
13ca0 73 20 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c  s successful cal
13cb0 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51 4c 49 54 45  l to .** [SQLITE
13cc0 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f  _FCNTL_BEGIN_ATO
13cd0 4d 49 43 5f 57 52 49 54 45 5d 20 74 6f 20 62 65  MIC_WRITE] to be
13ce0 20 70 65 72 66 6f 72 6d 65 64 20 61 74 6f 6d 69   performed atomi
13cf0 63 61 6c 6c 79 2e 0a 2a 2a 20 54 68 69 73 20 66  cally..** This f
13d00 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75  ile control retu
13d10 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  rns [SQLITE_OK] 
13d20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74  if and only if t
13d30 68 65 20 77 72 69 74 65 73 20 77 65 72 65 0a 2a  he writes were.*
13d40 2a 20 61 6c 6c 20 70 65 72 66 6f 72 6d 65 64 20  * all performed 
13d50 73 75 63 63 65 73 73 66 75 6c 6c 79 20 61 6e 64  successfully and
13d60 20 68 61 76 65 20 62 65 65 6e 20 63 6f 6d 6d 69   have been commi
13d70 74 74 65 64 20 74 6f 20 70 65 72 73 69 73 74 65  tted to persiste
13d80 6e 74 20 73 74 6f 72 61 67 65 2e 0a 2a 2a 20 5e  nt storage..** ^
13d90 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68  Regardless of wh
13da0 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 69 74 20  ether or not it 
13db0 69 73 20 73 75 63 63 65 73 73 66 75 6c 2c 20 74  is successful, t
13dc0 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  his file control
13dd0 20 74 61 6b 65 73 0a 2a 2a 20 74 68 65 20 66 69   takes.** the fi
13de0 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 6f 75  le descriptor ou
13df0 74 20 6f 66 20 62 61 74 63 68 20 77 72 69 74 65  t of batch write
13e00 20 6d 6f 64 65 20 73 6f 20 74 68 61 74 20 61 6c   mode so that al
13e10 6c 20 73 75 62 73 65 71 75 65 6e 74 0a 2a 2a 20  l subsequent.** 
13e20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 73  write operations
13e30 20 61 72 65 20 69 6e 64 65 70 65 6e 64 65 6e 74   are independent
13e40 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c  ..** ^SQLite wil
13e50 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20 53  l never invoke S
13e60 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d  QLITE_FCNTL_COMM
13e70 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 20  IT_ATOMIC_WRITE 
13e80 77 69 74 68 6f 75 74 0a 2a 2a 20 61 20 70 72 69  without.** a pri
13e90 6f 72 20 73 75 63 63 65 73 73 66 75 6c 20 63 61  or successful ca
13ea0 6c 6c 20 74 6f 20 5b 53 51 4c 49 54 45 5f 46 43  ll to [SQLITE_FC
13eb0 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43  NTL_BEGIN_ATOMIC
13ec0 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  _WRITE]..**.** <
13ed0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
13ee0 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49  L_ROLLBACK_ATOMI
13ef0 43 5f 57 52 49 54 45 5d 5d 0a 2a 2a 20 54 68 65  C_WRITE]].** The
13f00 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52   [SQLITE_FCNTL_R
13f10 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57  OLLBACK_ATOMIC_W
13f20 52 49 54 45 5d 20 6f 70 63 6f 64 65 20 63 61 75  RITE] opcode cau
13f30 73 65 73 20 61 6c 6c 20 77 72 69 74 65 0a 2a 2a  ses all write.**
13f40 20 6f 70 65 72 61 74 69 6f 6e 73 20 73 69 6e 63   operations sinc
13f50 65 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73  e the previous s
13f60 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c 20 74  uccessful call t
13f70 6f 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43  o .** [SQLITE_FC
13f80 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43  NTL_BEGIN_ATOMIC
13f90 5f 57 52 49 54 45 5d 20 74 6f 20 62 65 20 72 6f  _WRITE] to be ro
13fa0 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a 2a 20 5e 54  lled back..** ^T
13fb0 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  his file control
13fc0 20 74 61 6b 65 73 20 74 68 65 20 66 69 6c 65 20   takes the file 
13fd0 64 65 73 63 72 69 70 74 6f 72 20 6f 75 74 20 6f  descriptor out o
13fe0 66 20 62 61 74 63 68 20 77 72 69 74 65 20 6d 6f  f batch write mo
13ff0 64 65 0a 2a 2a 20 73 6f 20 74 68 61 74 20 61 6c  de.** so that al
14000 6c 20 73 75 62 73 65 71 75 65 6e 74 20 77 72 69  l subsequent wri
14010 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 72  te operations ar
14020 65 20 69 6e 64 65 70 65 6e 64 65 6e 74 2e 0a 2a  e independent..*
14030 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e  * ^SQLite will n
14040 65 76 65 72 20 69 6e 76 6f 6b 65 20 53 51 4c 49  ever invoke SQLI
14050 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41 43  TE_FCNTL_ROLLBAC
14060 4b 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 20 77  K_ATOMIC_WRITE w
14070 69 74 68 6f 75 74 0a 2a 2a 20 61 20 70 72 69 6f  ithout.** a prio
14080 72 20 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c  r successful cal
14090 6c 20 74 6f 20 5b 53 51 4c 49 54 45 5f 46 43 4e  l to [SQLITE_FCN
140a0 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f  TL_BEGIN_ATOMIC_
140b0 57 52 49 54 45 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  WRITE]..**.** <l
140c0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
140d0 5f 4c 4f 43 4b 5f 54 49 4d 45 4f 55 54 5d 5d 0a  _LOCK_TIMEOUT]].
140e0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
140f0 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49 4d 45 4f 55  CNTL_LOCK_TIMEOU
14100 54 5d 20 6f 70 63 6f 64 65 20 63 61 75 73 65 73  T] opcode causes
14110 20 61 74 74 65 6d 70 74 73 20 74 6f 20 6f 62 74   attempts to obt
14120 61 69 6e 0a 2a 2a 20 61 20 66 69 6c 65 20 6c 6f  ain.** a file lo
14130 63 6b 20 75 73 69 6e 67 20 74 68 65 20 78 4c 6f  ck using the xLo
14140 63 6b 20 6f 72 20 78 53 68 6d 4c 6f 63 6b 20 6d  ck or xShmLock m
14150 65 74 68 6f 64 73 20 6f 66 20 74 68 65 20 56 46  ethods of the VF
14160 53 20 74 6f 20 77 61 69 74 0a 2a 2a 20 66 6f 72  S to wait.** for
14170 20 75 70 20 74 6f 20 4d 20 6d 69 6c 6c 69 73 65   up to M millise
14180 63 6f 6e 64 73 20 62 65 66 6f 72 65 20 66 61 69  conds before fai
14190 6c 69 6e 67 2c 20 77 68 65 72 65 20 4d 20 69 73  ling, where M is
141a0 20 74 68 65 20 73 69 6e 67 6c 65 20 0a 2a 2a 20   the single .** 
141b0 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72  unsigned integer
141c0 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a   parameter..**.*
141d0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
141e0 43 4e 54 4c 5f 44 41 54 41 5f 56 45 52 53 49 4f  CNTL_DATA_VERSIO
141f0 4e 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  N]].** The [SQLI
14200 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56 45  TE_FCNTL_DATA_VE
14210 52 53 49 4f 4e 5d 20 6f 70 63 6f 64 65 20 69 73  RSION] opcode is
14220 20 75 73 65 64 20 74 6f 20 64 65 74 65 63 74 20   used to detect 
14230 63 68 61 6e 67 65 73 20 74 6f 0a 2a 2a 20 61 20  changes to.** a 
14240 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 20  database file.  
14250 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  The argument is 
14260 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 33  a pointer to a 3
14270 32 2d 62 69 74 20 75 6e 73 69 67 6e 65 64 20 69  2-bit unsigned i
14280 6e 74 65 67 65 72 2e 0a 2a 2a 20 54 68 65 20 22  nteger..** The "
14290 64 61 74 61 20 76 65 72 73 69 6f 6e 22 20 66 6f  data version" fo
142a0 72 20 74 68 65 20 70 61 67 65 72 20 69 73 20 77  r the pager is w
142b0 72 69 74 74 65 6e 20 69 6e 74 6f 20 74 68 65 20  ritten into the 
142c0 70 6f 69 6e 74 65 72 2e 20 20 54 68 65 0a 2a 2a  pointer.  The.**
142d0 20 22 64 61 74 61 20 76 65 72 73 69 6f 6e 22 20   "data version" 
142e0 63 68 61 6e 67 65 73 20 77 68 65 6e 65 76 65 72  changes whenever
142f0 20 61 6e 79 20 63 68 61 6e 67 65 20 6f 63 63 75   any change occu
14300 72 73 20 74 6f 20 74 68 65 20 63 6f 72 72 65 73  rs to the corres
14310 70 6f 6e 64 69 6e 67 0a 2a 2a 20 64 61 74 61 62  ponding.** datab
14320 61 73 65 20 66 69 6c 65 2c 20 65 69 74 68 65 72  ase file, either
14330 20 74 68 72 6f 75 67 68 20 53 51 4c 20 73 74 61   through SQL sta
14340 74 65 6d 65 6e 74 73 20 6f 6e 20 74 68 65 20 73  tements on the s
14350 61 6d 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20  ame database.** 
14360 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 72 20 74 68  connection or th
14370 72 6f 75 67 68 20 74 72 61 6e 73 61 63 74 69 6f  rough transactio
14380 6e 73 20 63 6f 6d 6d 69 74 74 65 64 20 62 79 20  ns committed by 
14390 73 65 70 61 72 61 74 65 20 64 61 74 61 62 61 73  separate databas
143a0 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  e.** connections
143b0 20 70 6f 73 73 69 62 6c 79 20 69 6e 20 6f 74 68   possibly in oth
143c0 65 72 20 70 72 6f 63 65 73 73 65 73 2e 20 54 68  er processes. Th
143d0 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c  e [sqlite3_total
143e0 5f 63 68 61 6e 67 65 73 28 29 5d 0a 2a 2a 20 69  _changes()].** i
143f0 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20  nterface can be 
14400 75 73 65 64 20 74 6f 20 66 69 6e 64 20 69 66 20  used to find if 
14410 61 6e 79 20 64 61 74 61 62 61 73 65 20 6f 6e 20  any database on 
14420 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68  the connection h
14430 61 73 20 63 68 61 6e 67 65 64 2c 0a 2a 2a 20 62  as changed,.** b
14440 75 74 20 74 68 61 74 20 69 6e 74 65 72 66 61 63  ut that interfac
14450 65 20 72 65 73 70 6f 6e 64 73 20 74 6f 20 63 68  e responds to ch
14460 61 6e 67 65 73 20 6f 6e 20 54 45 4d 50 20 61 73  anges on TEMP as
14470 20 77 65 6c 6c 20 61 73 20 4d 41 49 4e 20 61 6e   well as MAIN an
14480 64 20 64 6f 65 73 0a 2a 2a 20 6e 6f 74 20 70 72  d does.** not pr
14490 6f 76 69 64 65 20 61 20 6d 65 63 68 61 6e 69 73  ovide a mechanis
144a0 6d 20 74 6f 20 64 65 74 65 63 74 20 63 68 61 6e  m to detect chan
144b0 67 65 73 20 74 6f 20 4d 41 49 4e 20 6f 6e 6c 79  ges to MAIN only
144c0 2e 20 20 41 6c 73 6f 2c 20 74 68 65 0a 2a 2a 20  .  Also, the.** 
144d0 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63  [sqlite3_total_c
144e0 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66  hanges()] interf
144f0 61 63 65 20 72 65 73 70 6f 6e 64 73 20 74 6f 20  ace responds to 
14500 69 6e 74 65 72 6e 61 6c 20 63 68 61 6e 67 65 73  internal changes
14510 20 6f 6e 6c 79 20 61 6e 64 0a 2a 2a 20 6f 6d 69   only and.** omi
14520 74 73 20 63 68 61 6e 67 65 73 20 6d 61 64 65 20  ts changes made 
14530 62 79 20 6f 74 68 65 72 20 64 61 74 61 62 61 73  by other databas
14540 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 20 20  e connections.  
14550 54 68 65 0a 2a 2a 20 5b 50 52 41 47 4d 41 20 64  The.** [PRAGMA d
14560 61 74 61 5f 76 65 72 73 69 6f 6e 5d 20 63 6f 6d  ata_version] com
14570 6d 61 6e 64 20 70 72 6f 76 69 64 65 20 61 20 6d  mand provide a m
14580 65 63 68 61 6e 69 73 6d 20 74 6f 20 64 65 74 65  echanism to dete
14590 63 74 20 63 68 61 6e 67 65 73 20 74 6f 0a 2a 2a  ct changes to.**
145a0 20 61 20 73 69 6e 67 6c 65 20 61 74 74 61 63 68   a single attach
145b0 65 64 20 64 61 74 61 62 61 73 65 20 74 68 61 74  ed database that
145c0 20 6f 63 63 75 72 20 64 75 65 20 74 6f 20 6f 74   occur due to ot
145d0 68 65 72 20 64 61 74 61 62 61 73 65 20 63 6f 6e  her database con
145e0 6e 65 63 74 69 6f 6e 73 2c 0a 2a 2a 20 62 75 74  nections,.** but
145f0 20 6f 6d 69 74 73 20 63 68 61 6e 67 65 73 20 69   omits changes i
14600 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 74 68  mplemented by th
14610 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
14620 63 74 69 6f 6e 20 6f 6e 20 77 68 69 63 68 20 69  ction on which i
14630 74 20 69 73 0a 2a 2a 20 63 61 6c 6c 65 64 2e 20  t is.** called. 
14640 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72   This file contr
14650 6f 6c 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 6d  ol is the only m
14660 65 63 68 61 6e 69 73 6d 20 74 6f 20 64 65 74 65  echanism to dete
14670 63 74 20 63 68 61 6e 67 65 73 20 74 68 61 74 0a  ct changes that.
14680 2a 2a 20 68 61 70 70 65 6e 20 65 69 74 68 65 72  ** happen either
14690 20 69 6e 74 65 72 6e 61 6c 6c 79 20 6f 72 20 65   internally or e
146a0 78 74 65 72 6e 61 6c 6c 79 20 61 6e 64 20 74 68  xternally and th
146b0 61 74 20 61 72 65 20 61 73 73 6f 63 69 61 74 65  at are associate
146c0 64 20 77 69 74 68 0a 2a 2a 20 61 20 70 61 72 74  d with.** a part
146d0 69 63 75 6c 61 72 20 61 74 74 61 63 68 65 64 20  icular attached 
146e0 64 61 74 61 62 61 73 65 2e 0a 2a 2a 20 3c 2f 75  database..** </u
146f0 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  l>.*/.#define SQ
14700 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 53  LITE_FCNTL_LOCKS
14710 54 41 54 45 20 20 20 20 20 20 20 20 20 20 20 20  TATE            
14720 20 20 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c     1.#define SQL
14730 49 54 45 5f 46 43 4e 54 4c 5f 47 45 54 5f 4c 4f  ITE_FCNTL_GET_LO
14740 43 4b 50 52 4f 58 59 46 49 4c 45 20 20 20 20 20  CKPROXYFILE     
14750 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    2.#define SQLI
14760 54 45 5f 46 43 4e 54 4c 5f 53 45 54 5f 4c 4f 43  TE_FCNTL_SET_LOC
14770 4b 50 52 4f 58 59 46 49 4c 45 20 20 20 20 20 20  KPROXYFILE      
14780 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   3.#define SQLIT
14790 45 5f 46 43 4e 54 4c 5f 4c 41 53 54 5f 45 52 52  E_FCNTL_LAST_ERR
147a0 4e 4f 20 20 20 20 20 20 20 20 20 20 20 20 20 20  NO              
147b0 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  4.#define SQLITE
147c0 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e 54  _FCNTL_SIZE_HINT
147d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 35                 5
147e0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
147f0 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49 5a 45  FCNTL_CHUNK_SIZE
14800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 36 0a                6.
14810 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14820 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45  CNTL_FILE_POINTE
14830 52 20 20 20 20 20 20 20 20 20 20 20 20 37 0a 23  R            7.#
14840 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14850 4e 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44  NTL_SYNC_OMITTED
14860 20 20 20 20 20 20 20 20 20 20 20 20 38 0a 23 64              8.#d
14870 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14880 54 4c 5f 57 49 4e 33 32 5f 41 56 5f 52 45 54 52  TL_WIN32_AV_RETR
14890 59 20 20 20 20 20 20 20 20 20 20 39 0a 23 64 65  Y          9.#de
148a0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
148b0 4c 5f 50 45 52 53 49 53 54 5f 57 41 4c 20 20 20  L_PERSIST_WAL   
148c0 20 20 20 20 20 20 20 20 20 31 30 0a 23 64 65 66           10.#def
148d0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
148e0 5f 4f 56 45 52 57 52 49 54 45 20 20 20 20 20 20  _OVERWRITE      
148f0 20 20 20 20 20 20 20 20 31 31 0a 23 64 65 66 69          11.#defi
14900 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14910 56 46 53 4e 41 4d 45 20 20 20 20 20 20 20 20 20  VFSNAME         
14920 20 20 20 20 20 20 20 31 32 0a 23 64 65 66 69 6e         12.#defin
14930 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50  e SQLITE_FCNTL_P
14940 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49  OWERSAFE_OVERWRI
14950 54 45 20 20 20 20 31 33 0a 23 64 65 66 69 6e 65  TE    13.#define
14960 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52   SQLITE_FCNTL_PR
14970 41 47 4d 41 20 20 20 20 20 20 20 20 20 20 20 20  AGMA            
14980 20 20 20 20 20 31 34 0a 23 64 65 66 69 6e 65 20       14.#define 
14990 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 55 53  SQLITE_FCNTL_BUS
149a0 59 48 41 4e 44 4c 45 52 20 20 20 20 20 20 20 20  YHANDLER        
149b0 20 20 20 20 31 35 0a 23 64 65 66 69 6e 65 20 53      15.#define S
149c0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 45 4d 50  QLITE_FCNTL_TEMP
149d0 46 49 4c 45 4e 41 4d 45 20 20 20 20 20 20 20 20  FILENAME        
149e0 20 20 20 31 36 0a 23 64 65 66 69 6e 65 20 53 51     16.#define SQ
149f0 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f  LITE_FCNTL_MMAP_
14a00 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 20  SIZE            
14a10 20 20 31 38 0a 23 64 65 66 69 6e 65 20 53 51 4c    18.#define SQL
14a20 49 54 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 20  ITE_FCNTL_TRACE 
14a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a40 20 31 39 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   19.#define SQLI
14a50 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56  TE_FCNTL_HAS_MOV
14a60 45 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ED              
14a70 32 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  20.#define SQLIT
14a80 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 20 20 20 20  E_FCNTL_SYNC    
14a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
14aa0 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
14ab0 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48  _FCNTL_COMMIT_PH
14ac0 41 53 45 54 57 4f 20 20 20 20 20 20 20 20 32 32  ASETWO        22
14ad0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
14ae0 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f  FCNTL_WIN32_SET_
14af0 48 41 4e 44 4c 45 20 20 20 20 20 20 20 32 33 0a  HANDLE       23.
14b00 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14b10 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 20 20  CNTL_WAL_BLOCK  
14b20 20 20 20 20 20 20 20 20 20 20 20 20 32 34 0a 23              24.#
14b30 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14b40 4e 54 4c 5f 5a 49 50 56 46 53 20 20 20 20 20 20  NTL_ZIPVFS      
14b50 20 20 20 20 20 20 20 20 20 20 20 32 35 0a 23 64             25.#d
14b60 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14b70 54 4c 5f 52 42 55 20 20 20 20 20 20 20 20 20 20  TL_RBU          
14b80 20 20 20 20 20 20 20 20 20 20 32 36 0a 23 64 65            26.#de
14b90 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
14ba0 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 20 20 20  L_VFS_POINTER   
14bb0 20 20 20 20 20 20 20 20 20 32 37 0a 23 64 65 66           27.#def
14bc0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
14bd0 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54 45 52  _JOURNAL_POINTER
14be0 20 20 20 20 20 20 20 20 32 38 0a 23 64 65 66 69          28.#defi
14bf0 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14c00 57 49 4e 33 32 5f 47 45 54 5f 48 41 4e 44 4c 45  WIN32_GET_HANDLE
14c10 20 20 20 20 20 20 20 32 39 0a 23 64 65 66 69 6e         29.#defin
14c20 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50  e SQLITE_FCNTL_P
14c30 44 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20  DB              
14c40 20 20 20 20 20 20 33 30 0a 23 64 65 66 69 6e 65        30.#define
14c50 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45   SQLITE_FCNTL_BE
14c60 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  GIN_ATOMIC_WRITE
14c70 20 20 20 20 20 33 31 0a 23 64 65 66 69 6e 65 20       31.#define 
14c80 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d  SQLITE_FCNTL_COM
14c90 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  MIT_ATOMIC_WRITE
14ca0 20 20 20 20 33 32 0a 23 64 65 66 69 6e 65 20 53      32.#define S
14cb0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c 4c  QLITE_FCNTL_ROLL
14cc0 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52 49 54  BACK_ATOMIC_WRIT
14cd0 45 20 20 33 33 0a 23 64 65 66 69 6e 65 20 53 51  E  33.#define SQ
14ce0 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 5f  LITE_FCNTL_LOCK_
14cf0 54 49 4d 45 4f 55 54 20 20 20 20 20 20 20 20 20  TIMEOUT         
14d00 20 20 33 34 0a 23 64 65 66 69 6e 65 20 53 51 4c    34.#define SQL
14d10 49 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56  ITE_FCNTL_DATA_V
14d20 45 52 53 49 4f 4e 20 20 20 20 20 20 20 20 20 20  ERSION          
14d30 20 33 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   35.#define SQLI
14d40 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 4c 49  TE_FCNTL_SIZE_LI
14d50 4d 49 54 20 20 20 20 20 20 20 20 20 20 20 20 20  MIT             
14d60 33 36 0a 0a 2f 2a 20 64 65 70 72 65 63 61 74 65  36../* deprecate
14d70 64 20 6e 61 6d 65 73 20 2a 2f 0a 23 64 65 66 69  d names */.#defi
14d80 6e 65 20 53 51 4c 49 54 45 5f 47 45 54 5f 4c 4f  ne SQLITE_GET_LO
14d90 43 4b 50 52 4f 58 59 46 49 4c 45 20 20 20 20 20  CKPROXYFILE     
14da0 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 47 45   SQLITE_FCNTL_GE
14db0 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 0a  T_LOCKPROXYFILE.
14dc0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
14dd0 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
14de0 20 20 20 20 20 20 53 51 4c 49 54 45 5f 46 43 4e        SQLITE_FCN
14df0 54 4c 5f 53 45 54 5f 4c 4f 43 4b 50 52 4f 58 59  TL_SET_LOCKPROXY
14e00 46 49 4c 45 0a 23 64 65 66 69 6e 65 20 53 51 4c  FILE.#define SQL
14e10 49 54 45 5f 4c 41 53 54 5f 45 52 52 4e 4f 20 20  ITE_LAST_ERRNO  
14e20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 49 54             SQLIT
14e30 45 5f 46 43 4e 54 4c 5f 4c 41 53 54 5f 45 52 52  E_FCNTL_LAST_ERR
14e40 4e 4f 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  NO.../*.** CAPI3
14e50 52 45 46 3a 20 4d 75 74 65 78 20 48 61 6e 64 6c  REF: Mutex Handl
14e60 65 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6d 75 74 65  e.**.** The mute
14e70 78 20 6d 6f 64 75 6c 65 20 77 69 74 68 69 6e 20  x module within 
14e80 53 51 4c 69 74 65 20 64 65 66 69 6e 65 73 20 5b  SQLite defines [
14e90 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5d 20 74  sqlite3_mutex] t
14ea0 6f 20 62 65 20 61 6e 0a 2a 2a 20 61 62 73 74 72  o be an.** abstr
14eb0 61 63 74 20 74 79 70 65 20 66 6f 72 20 61 20 6d  act type for a m
14ec0 75 74 65 78 20 6f 62 6a 65 63 74 2e 20 20 54 68  utex object.  Th
14ed0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e 65  e SQLite core ne
14ee0 76 65 72 20 6c 6f 6f 6b 73 0a 2a 2a 20 61 74 20  ver looks.** at 
14ef0 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 72 65 70  the internal rep
14f00 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61  resentation of a
14f10 6e 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  n [sqlite3_mutex
14f20 5d 2e 20 20 49 74 20 6f 6e 6c 79 0a 2a 2a 20 64  ].  It only.** d
14f30 65 61 6c 73 20 77 69 74 68 20 70 6f 69 6e 74 65  eals with pointe
14f40 72 73 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74  rs to the [sqlit
14f50 65 33 5f 6d 75 74 65 78 5d 20 6f 62 6a 65 63 74  e3_mutex] object
14f60 2e 0a 2a 2a 0a 2a 2a 20 4d 75 74 65 78 65 73 20  ..**.** Mutexes 
14f70 61 72 65 20 63 72 65 61 74 65 64 20 75 73 69 6e  are created usin
14f80 67 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  g [sqlite3_mutex
14f90 5f 61 6c 6c 6f 63 28 29 5d 2e 0a 2a 2f 0a 74 79  _alloc()]..*/.ty
14fa0 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c  pedef struct sql
14fb0 69 74 65 33 5f 6d 75 74 65 78 20 73 71 6c 69 74  ite3_mutex sqlit
14fc0 65 33 5f 6d 75 74 65 78 3b 0a 0a 2f 2a 0a 2a 2a  e3_mutex;../*.**
14fd0 20 43 41 50 49 33 52 45 46 3a 20 4c 6f 61 64 61   CAPI3REF: Loada
14fe0 62 6c 65 20 45 78 74 65 6e 73 69 6f 6e 20 54 68  ble Extension Th
14ff0 75 6e 6b 0a 2a 2a 0a 2a 2a 20 41 20 70 6f 69 6e  unk.**.** A poin
15000 74 65 72 20 74 6f 20 74 68 65 20 6f 70 61 71 75  ter to the opaqu
15010 65 20 73 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f  e sqlite3_api_ro
15020 75 74 69 6e 65 73 20 73 74 72 75 63 74 75 72 65  utines structure
15030 20 69 73 20 70 61 73 73 65 64 20 61 73 0a 2a 2a   is passed as.**
15040 20 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d   the third param
15050 65 74 65 72 20 74 6f 20 65 6e 74 72 79 20 70 6f  eter to entry po
15060 69 6e 74 73 20 6f 66 20 5b 6c 6f 61 64 61 62 6c  ints of [loadabl
15070 65 20 65 78 74 65 6e 73 69 6f 6e 73 5d 2e 20 20  e extensions].  
15080 54 68 69 73 0a 2a 2a 20 73 74 72 75 63 74 75 72  This.** structur
15090 65 20 6d 75 73 74 20 62 65 20 74 79 70 65 64 65  e must be typede
150a0 66 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  fed in order to 
150b0 77 6f 72 6b 20 61 72 6f 75 6e 64 20 63 6f 6d 70  work around comp
150c0 69 6c 65 72 20 77 61 72 6e 69 6e 67 73 0a 2a 2a  iler warnings.**
150d0 20 6f 6e 20 73 6f 6d 65 20 70 6c 61 74 66 6f 72   on some platfor
150e0 6d 73 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73  ms..*/.typedef s
150f0 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 61 70  truct sqlite3_ap
15100 69 5f 72 6f 75 74 69 6e 65 73 20 73 71 6c 69 74  i_routines sqlit
15110 65 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 3b  e3_api_routines;
15120 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
15130 3a 20 4f 53 20 49 6e 74 65 72 66 61 63 65 20 4f  : OS Interface O
15140 62 6a 65 63 74 0a 2a 2a 0a 2a 2a 20 41 6e 20 69  bject.**.** An i
15150 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 73  nstance of the s
15160 71 6c 69 74 65 33 5f 76 66 73 20 6f 62 6a 65 63  qlite3_vfs objec
15170 74 20 64 65 66 69 6e 65 73 20 74 68 65 20 69 6e  t defines the in
15180 74 65 72 66 61 63 65 20 62 65 74 77 65 65 6e 0a  terface between.
15190 2a 2a 20 74 68 65 20 53 51 4c 69 74 65 20 63 6f  ** the SQLite co
151a0 72 65 20 61 6e 64 20 74 68 65 20 75 6e 64 65 72  re and the under
151b0 6c 79 69 6e 67 20 6f 70 65 72 61 74 69 6e 67 20  lying operating 
151c0 73 79 73 74 65 6d 2e 20 20 54 68 65 20 22 76 66  system.  The "vf
151d0 73 22 0a 2a 2a 20 69 6e 20 74 68 65 20 6e 61 6d  s".** in the nam
151e0 65 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20  e of the object 
151f0 73 74 61 6e 64 73 20 66 6f 72 20 22 76 69 72 74  stands for "virt
15200 75 61 6c 20 66 69 6c 65 20 73 79 73 74 65 6d 22  ual file system"
15210 2e 20 20 53 65 65 0a 2a 2a 20 74 68 65 20 5b 56  .  See.** the [V
15220 46 53 20 7c 20 56 46 53 20 64 6f 63 75 6d 65 6e  FS | VFS documen
15230 74 61 74 69 6f 6e 5d 20 66 6f 72 20 66 75 72 74  tation] for furt
15240 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  her information.
15250 0a 2a 2a 0a 2a 2a 20 54 68 65 20 56 46 53 20 69  .**.** The VFS i
15260 6e 74 65 72 66 61 63 65 20 69 73 20 73 6f 6d 65  nterface is some
15270 74 69 6d 65 73 20 65 78 74 65 6e 64 65 64 20 62  times extended b
15280 79 20 61 64 64 69 6e 67 20 6e 65 77 20 6d 65 74  y adding new met
15290 68 6f 64 73 20 6f 6e 74 6f 0a 2a 2a 20 74 68 65  hods onto.** the
152a0 20 65 6e 64 2e 20 20 45 61 63 68 20 74 69 6d 65   end.  Each time
152b0 20 73 75 63 68 20 61 6e 20 65 78 74 65 6e 73 69   such an extensi
152c0 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 69  on occurs, the i
152d0 56 65 72 73 69 6f 6e 20 66 69 65 6c 64 0a 2a 2a  Version field.**
152e0 20 69 73 20 69 6e 63 72 65 6d 65 6e 74 65 64 2e   is incremented.
152f0 20 20 54 68 65 20 69 56 65 72 73 69 6f 6e 20 76    The iVersion v
15300 61 6c 75 65 20 73 74 61 72 74 65 64 20 6f 75 74  alue started out
15310 20 61 73 20 31 20 69 6e 0a 2a 2a 20 53 51 4c 69   as 1 in.** SQLi
15320 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 35 2e  te [version 3.5.
15330 30 5d 20 6f 6e 20 5b 64 61 74 65 6f 66 3a 33 2e  0] on [dateof:3.
15340 35 2e 30 5d 2c 20 74 68 65 6e 20 69 6e 63 72 65  5.0], then incre
15350 61 73 65 64 20 74 6f 20 32 0a 2a 2a 20 77 69 74  ased to 2.** wit
15360 68 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f  h SQLite [versio
15370 6e 20 33 2e 37 2e 30 5d 20 6f 6e 20 5b 64 61 74  n 3.7.0] on [dat
15380 65 6f 66 3a 33 2e 37 2e 30 5d 2c 20 61 6e 64 20  eof:3.7.0], and 
15390 74 68 65 6e 20 69 6e 63 72 65 61 73 65 64 0a 2a  then increased.*
153a0 2a 20 74 6f 20 33 20 77 69 74 68 20 53 51 4c 69  * to 3 with SQLi
153b0 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 37 2e  te [version 3.7.
153c0 36 5d 20 6f 6e 20 5b 64 61 74 65 6f 66 3a 33 2e  6] on [dateof:3.
153d0 37 2e 36 5d 2e 20 20 41 64 64 69 74 69 6f 6e 61  7.6].  Additiona
153e0 6c 20 66 69 65 6c 64 73 0a 2a 2a 20 6d 61 79 20  l fields.** may 
153f0 62 65 20 61 70 70 65 6e 64 65 64 20 74 6f 20 74  be appended to t
15400 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6f  he sqlite3_vfs o
15410 62 6a 65 63 74 20 61 6e 64 20 74 68 65 20 69 56  bject and the iV
15420 65 72 73 69 6f 6e 20 76 61 6c 75 65 0a 2a 2a 20  ersion value.** 
15430 6d 61 79 20 69 6e 63 72 65 61 73 65 20 61 67 61  may increase aga
15440 69 6e 20 69 6e 20 66 75 74 75 72 65 20 76 65 72  in in future ver
15450 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e  sions of SQLite.
15460 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 74 68  .** Note that th
15470 65 20 73 74 72 75 63 74 75 72 65 0a 2a 2a 20 6f  e structure.** o
15480 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66  f the sqlite3_vf
15490 73 20 6f 62 6a 65 63 74 20 63 68 61 6e 67 65 73  s object changes
154a0 20 69 6e 20 74 68 65 20 74 72 61 6e 73 69 74 69   in the transiti
154b0 6f 6e 20 66 72 6f 6d 0a 2a 2a 20 53 51 4c 69 74  on from.** SQLit
154c0 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 35 2e 39  e [version 3.5.9
154d0 5d 20 74 6f 20 5b 76 65 72 73 69 6f 6e 20 33 2e  ] to [version 3.
154e0 36 2e 30 5d 20 6f 6e 20 5b 64 61 74 65 6f 66 3a  6.0] on [dateof:
154f0 33 2e 36 2e 30 5d 0a 2a 2a 20 61 6e 64 20 79 65  3.6.0].** and ye
15500 74 20 74 68 65 20 69 56 65 72 73 69 6f 6e 20 66  t the iVersion f
15510 69 65 6c 64 20 77 61 73 20 6e 6f 74 20 6d 6f 64  ield was not mod
15520 69 66 69 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  ified..**.** The
15530 20 73 7a 4f 73 46 69 6c 65 20 66 69 65 6c 64 20   szOsFile field 
15540 69 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  is the size of t
15550 68 65 20 73 75 62 63 6c 61 73 73 65 64 20 5b 73  he subclassed [s
15560 71 6c 69 74 65 33 5f 66 69 6c 65 5d 0a 2a 2a 20  qlite3_file].** 
15570 73 74 72 75 63 74 75 72 65 20 75 73 65 64 20 62  structure used b
15580 79 20 74 68 69 73 20 56 46 53 2e 20 20 6d 78 50  y this VFS.  mxP
15590 61 74 68 6e 61 6d 65 20 69 73 20 74 68 65 20 6d  athname is the m
155a0 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66  aximum length of
155b0 0a 2a 2a 20 61 20 70 61 74 68 6e 61 6d 65 20 69  .** a pathname i
155c0 6e 20 74 68 69 73 20 56 46 53 2e 0a 2a 2a 0a 2a  n this VFS..**.*
155d0 2a 20 52 65 67 69 73 74 65 72 65 64 20 73 71 6c  * Registered sql
155e0 69 74 65 33 5f 76 66 73 20 6f 62 6a 65 63 74 73  ite3_vfs objects
155f0 20 61 72 65 20 6b 65 70 74 20 6f 6e 20 61 20 6c   are kept on a l
15600 69 6e 6b 65 64 20 6c 69 73 74 20 66 6f 72 6d 65  inked list forme
15610 64 20 62 79 0a 2a 2a 20 74 68 65 20 70 4e 65 78  d by.** the pNex
15620 74 20 70 6f 69 6e 74 65 72 2e 20 20 54 68 65 20  t pointer.  The 
15630 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65 67  [sqlite3_vfs_reg
15640 69 73 74 65 72 28 29 5d 0a 2a 2a 20 61 6e 64 20  ister()].** and 
15650 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 75 6e 72  [sqlite3_vfs_unr
15660 65 67 69 73 74 65 72 28 29 5d 20 69 6e 74 65 72  egister()] inter
15670 66 61 63 65 73 20 6d 61 6e 61 67 65 20 74 68 69  faces manage thi
15680 73 20 6c 69 73 74 0a 2a 2a 20 69 6e 20 61 20 74  s list.** in a t
15690 68 72 65 61 64 2d 73 61 66 65 20 77 61 79 2e 20  hread-safe way. 
156a0 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66   The [sqlite3_vf
156b0 73 5f 66 69 6e 64 28 29 5d 20 69 6e 74 65 72 66  s_find()] interf
156c0 61 63 65 0a 2a 2a 20 73 65 61 72 63 68 65 73 20  ace.** searches 
156d0 74 68 65 20 6c 69 73 74 2e 20 20 4e 65 69 74 68  the list.  Neith
156e0 65 72 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  er the applicati
156f0 6f 6e 20 63 6f 64 65 20 6e 6f 72 20 74 68 65 20  on code nor the 
15700 56 46 53 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74  VFS.** implement
15710 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 75 73 65  ation should use
15720 20 74 68 65 20 70 4e 65 78 74 20 70 6f 69 6e 74   the pNext point
15730 65 72 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 4e  er..**.** The pN
15740 65 78 74 20 66 69 65 6c 64 20 69 73 20 74 68 65  ext field is the
15750 20 6f 6e 6c 79 20 66 69 65 6c 64 20 69 6e 20 74   only field in t
15760 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 0a 2a  he sqlite3_vfs.*
15770 2a 20 73 74 72 75 63 74 75 72 65 20 74 68 61 74  * structure that
15780 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 65 76 65   SQLite will eve
15790 72 20 6d 6f 64 69 66 79 2e 20 20 53 51 4c 69 74  r modify.  SQLit
157a0 65 20 77 69 6c 6c 20 6f 6e 6c 79 20 61 63 63 65  e will only acce
157b0 73 73 0a 2a 2a 20 6f 72 20 6d 6f 64 69 66 79 20  ss.** or modify 
157c0 74 68 69 73 20 66 69 65 6c 64 20 77 68 69 6c 65  this field while
157d0 20 68 6f 6c 64 69 6e 67 20 61 20 70 61 72 74 69   holding a parti
157e0 63 75 6c 61 72 20 73 74 61 74 69 63 20 6d 75 74  cular static mut
157f0 65 78 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69  ex..** The appli
15800 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e 65  cation should ne
15810 76 65 72 20 6d 6f 64 69 66 79 20 61 6e 79 74 68  ver modify anyth
15820 69 6e 67 20 77 69 74 68 69 6e 20 74 68 65 20 73  ing within the s
15830 71 6c 69 74 65 33 5f 76 66 73 0a 2a 2a 20 6f 62  qlite3_vfs.** ob
15840 6a 65 63 74 20 6f 6e 63 65 20 74 68 65 20 6f 62  ject once the ob
15850 6a 65 63 74 20 68 61 73 20 62 65 65 6e 20 72 65  ject has been re
15860 67 69 73 74 65 72 65 64 2e 0a 2a 2a 0a 2a 2a 20  gistered..**.** 
15870 54 68 65 20 7a 4e 61 6d 65 20 66 69 65 6c 64 20  The zName field 
15880 68 6f 6c 64 73 20 74 68 65 20 6e 61 6d 65 20 6f  holds the name o
15890 66 20 74 68 65 20 56 46 53 20 6d 6f 64 75 6c 65  f the VFS module
158a0 2e 20 20 54 68 65 20 6e 61 6d 65 20 6d 75 73 74  .  The name must
158b0 0a 2a 2a 20 62 65 20 75 6e 69 71 75 65 20 61 63  .** be unique ac
158c0 72 6f 73 73 20 61 6c 6c 20 56 46 53 20 6d 6f 64  ross all VFS mod
158d0 75 6c 65 73 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 73 71  ules..**.** [[sq
158e0 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d  lite3_vfs.xOpen]
158f0 5d 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 67 75 61  ].** ^SQLite gua
15900 72 61 6e 74 65 65 73 20 74 68 61 74 20 74 68 65  rantees that the
15910 20 7a 46 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d   zFilename param
15920 65 74 65 72 20 74 6f 20 78 4f 70 65 6e 0a 2a 2a  eter to xOpen.**
15930 20 69 73 20 65 69 74 68 65 72 20 61 20 4e 55 4c   is either a NUL
15940 4c 20 70 6f 69 6e 74 65 72 20 6f 72 20 73 74 72  L pointer or str
15950 69 6e 67 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20  ing obtained.** 
15960 66 72 6f 6d 20 78 46 75 6c 6c 50 61 74 68 6e 61  from xFullPathna
15970 6d 65 28 29 20 77 69 74 68 20 61 6e 20 6f 70 74  me() with an opt
15980 69 6f 6e 61 6c 20 73 75 66 66 69 78 20 61 64 64  ional suffix add
15990 65 64 2e 0a 2a 2a 20 5e 49 66 20 61 20 73 75 66  ed..** ^If a suf
159a0 66 69 78 20 69 73 20 61 64 64 65 64 20 74 6f 20  fix is added to 
159b0 74 68 65 20 7a 46 69 6c 65 6e 61 6d 65 20 70 61  the zFilename pa
159c0 72 61 6d 65 74 65 72 2c 20 69 74 20 77 69 6c 6c  rameter, it will
159d0 0a 2a 2a 20 63 6f 6e 73 69 73 74 20 6f 66 20 61  .** consist of a
159e0 20 73 69 6e 67 6c 65 20 22 2d 22 20 63 68 61 72   single "-" char
159f0 61 63 74 65 72 20 66 6f 6c 6c 6f 77 65 64 20 62  acter followed b
15a00 79 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 0a 2a  y no more than.*
15a10 2a 20 31 31 20 61 6c 70 68 61 6e 75 6d 65 72 69  * 11 alphanumeri
15a20 63 20 61 6e 64 2f 6f 72 20 22 2d 22 20 63 68 61  c and/or "-" cha
15a30 72 61 63 74 65 72 73 2e 0a 2a 2a 20 5e 53 51 4c  racters..** ^SQL
15a40 69 74 65 20 66 75 72 74 68 65 72 20 67 75 61 72  ite further guar
15a50 61 6e 74 65 65 73 20 74 68 61 74 0a 2a 2a 20 74  antees that.** t
15a60 68 65 20 73 74 72 69 6e 67 20 77 69 6c 6c 20 62  he string will b
15a70 65 20 76 61 6c 69 64 20 61 6e 64 20 75 6e 63 68  e valid and unch
15a80 61 6e 67 65 64 20 75 6e 74 69 6c 20 78 43 6c 6f  anged until xClo
15a90 73 65 28 29 20 69 73 0a 2a 2a 20 63 61 6c 6c 65  se() is.** calle
15aa0 64 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74 68  d. Because of th
15ab0 65 20 70 72 65 76 69 6f 75 73 20 73 65 6e 74 65  e previous sente
15ac0 6e 63 65 2c 0a 2a 2a 20 74 68 65 20 5b 73 71 6c  nce,.** the [sql
15ad0 69 74 65 33 5f 66 69 6c 65 5d 20 63 61 6e 20 73  ite3_file] can s
15ae0 61 66 65 6c 79 20 73 74 6f 72 65 20 61 20 70 6f  afely store a po
15af0 69 6e 74 65 72 20 74 6f 20 74 68 65 0a 2a 2a 20  inter to the.** 
15b00 66 69 6c 65 6e 61 6d 65 20 69 66 20 69 74 20 6e  filename if it n
15b10 65 65 64 73 20 74 6f 20 72 65 6d 65 6d 62 65 72  eeds to remember
15b20 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 66 6f   the filename fo
15b30 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e 2e 0a 2a  r some reason..*
15b40 2a 20 49 66 20 74 68 65 20 7a 46 69 6c 65 6e 61  * If the zFilena
15b50 6d 65 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  me parameter to 
15b60 78 4f 70 65 6e 20 69 73 20 61 20 4e 55 4c 4c 20  xOpen is a NULL 
15b70 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 78 4f 70  pointer then xOp
15b80 65 6e 0a 2a 2a 20 6d 75 73 74 20 69 6e 76 65 6e  en.** must inven
15b90 74 20 69 74 73 20 6f 77 6e 20 74 65 6d 70 6f 72  t its own tempor
15ba0 61 72 79 20 6e 61 6d 65 20 66 6f 72 20 74 68 65  ary name for the
15bb0 20 66 69 6c 65 2e 20 20 5e 57 68 65 6e 65 76 65   file.  ^Wheneve
15bc0 72 20 74 68 65 20 0a 2a 2a 20 78 46 69 6c 65 6e  r the .** xFilen
15bd0 61 6d 65 20 70 61 72 61 6d 65 74 65 72 20 69 73  ame parameter is
15be0 20 4e 55 4c 4c 20 69 74 20 77 69 6c 6c 20 61 6c   NULL it will al
15bf0 73 6f 20 62 65 20 74 68 65 20 63 61 73 65 20 74  so be the case t
15c00 68 61 74 20 74 68 65 0a 2a 2a 20 66 6c 61 67 73  hat the.** flags
15c10 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c 20   parameter will 
15c20 69 6e 63 6c 75 64 65 20 5b 53 51 4c 49 54 45 5f  include [SQLITE_
15c30 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f  OPEN_DELETEONCLO
15c40 53 45 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66  SE]..**.** The f
15c50 6c 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f  lags argument to
15c60 20 78 4f 70 65 6e 28 29 20 69 6e 63 6c 75 64 65   xOpen() include
15c70 73 20 61 6c 6c 20 62 69 74 73 20 73 65 74 20 69  s all bits set i
15c80 6e 0a 2a 2a 20 74 68 65 20 66 6c 61 67 73 20 61  n.** the flags a
15c90 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c 69  rgument to [sqli
15ca0 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2e 20  te3_open_v2()]. 
15cb0 20 4f 72 20 69 66 20 5b 73 71 6c 69 74 65 33 5f   Or if [sqlite3_
15cc0 6f 70 65 6e 28 29 5d 0a 2a 2a 20 6f 72 20 5b 73  open()].** or [s
15cd0 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d  qlite3_open16()]
15ce0 20 69 73 20 75 73 65 64 2c 20 74 68 65 6e 20 66   is used, then f
15cf0 6c 61 67 73 20 69 6e 63 6c 75 64 65 73 20 61 74  lags includes at
15d00 20 6c 65 61 73 74 0a 2a 2a 20 5b 53 51 4c 49 54   least.** [SQLIT
15d10 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45  E_OPEN_READWRITE
15d20 5d 20 7c 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  ] | [SQLITE_OPEN
15d30 5f 43 52 45 41 54 45 5d 2e 20 0a 2a 2a 20 49 66  _CREATE]. .** If
15d40 20 78 4f 70 65 6e 28 29 20 6f 70 65 6e 73 20 61   xOpen() opens a
15d50 20 66 69 6c 65 20 72 65 61 64 2d 6f 6e 6c 79 20   file read-only 
15d60 74 68 65 6e 20 69 74 20 73 65 74 73 20 2a 70 4f  then it sets *pO
15d70 75 74 46 6c 61 67 73 20 74 6f 0a 2a 2a 20 69 6e  utFlags to.** in
15d80 63 6c 75 64 65 20 5b 53 51 4c 49 54 45 5f 4f 50  clude [SQLITE_OP
15d90 45 4e 5f 52 45 41 44 4f 4e 4c 59 5d 2e 20 20 4f  EN_READONLY].  O
15da0 74 68 65 72 20 62 69 74 73 20 69 6e 20 2a 70 4f  ther bits in *pO
15db0 75 74 46 6c 61 67 73 20 6d 61 79 20 62 65 20 73  utFlags may be s
15dc0 65 74 2e 0a 2a 2a 0a 2a 2a 20 5e 28 53 51 4c 69  et..**.** ^(SQLi
15dd0 74 65 20 77 69 6c 6c 20 61 6c 73 6f 20 61 64 64  te will also add
15de0 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c   one of the foll
15df0 6f 77 69 6e 67 20 66 6c 61 67 73 20 74 6f 20 74  owing flags to t
15e00 68 65 20 78 4f 70 65 6e 28 29 0a 2a 2a 20 63 61  he xOpen().** ca
15e10 6c 6c 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ll, depending on
15e20 20 74 68 65 20 6f 62 6a 65 63 74 20 62 65 69 6e   the object bein
15e30 67 20 6f 70 65 6e 65 64 3a 0a 2a 2a 0a 2a 2a 20  g opened:.**.** 
15e40 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53  <ul>.** <li>  [S
15e50 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f  QLITE_OPEN_MAIN_
15e60 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51  DB].** <li>  [SQ
15e70 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 4a  LITE_OPEN_MAIN_J
15e80 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20  OURNAL].** <li> 
15e90 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 54 45   [SQLITE_OPEN_TE
15ea0 4d 50 5f 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20 20  MP_DB].** <li>  
15eb0 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 54 45 4d  [SQLITE_OPEN_TEM
15ec0 50 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c  P_JOURNAL].** <l
15ed0 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  i>  [SQLITE_OPEN
15ee0 5f 54 52 41 4e 53 49 45 4e 54 5f 44 42 5d 0a 2a  _TRANSIENT_DB].*
15ef0 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f  * <li>  [SQLITE_
15f00 4f 50 45 4e 5f 53 55 42 4a 4f 55 52 4e 41 4c 5d  OPEN_SUBJOURNAL]
15f10 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54  .** <li>  [SQLIT
15f20 45 5f 4f 50 45 4e 5f 4d 41 53 54 45 52 5f 4a 4f  E_OPEN_MASTER_JO
15f30 55 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20  URNAL].** <li>  
15f40 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 57 41 4c  [SQLITE_OPEN_WAL
15f50 5d 0a 2a 2a 20 3c 2f 75 6c 3e 29 5e 0a 2a 2a 0a  ].** </ul>)^.**.
15f60 2a 2a 20 54 68 65 20 66 69 6c 65 20 49 2f 4f 20  ** The file I/O 
15f70 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63  implementation c
15f80 61 6e 20 75 73 65 20 74 68 65 20 6f 62 6a 65 63  an use the objec
15f90 74 20 74 79 70 65 20 66 6c 61 67 73 20 74 6f 0a  t type flags to.
15fa0 2a 2a 20 63 68 61 6e 67 65 20 74 68 65 20 77 61  ** change the wa
15fb0 79 20 69 74 20 64 65 61 6c 73 20 77 69 74 68 20  y it deals with 
15fc0 66 69 6c 65 73 2e 20 20 46 6f 72 20 65 78 61 6d  files.  For exam
15fd0 70 6c 65 2c 20 61 6e 20 61 70 70 6c 69 63 61 74  ple, an applicat
15fe0 69 6f 6e 0a 2a 2a 20 74 68 61 74 20 64 6f 65 73  ion.** that does
15ff0 20 6e 6f 74 20 63 61 72 65 20 61 62 6f 75 74 20   not care about 
16000 63 72 61 73 68 20 72 65 63 6f 76 65 72 79 20 6f  crash recovery o
16010 72 20 72 6f 6c 6c 62 61 63 6b 20 6d 69 67 68 74  r rollback might
16020 20 6d 61 6b 65 0a 2a 2a 20 74 68 65 20 6f 70 65   make.** the ope
16030 6e 20 6f 66 20 61 20 6a 6f 75 72 6e 61 6c 20 66  n of a journal f
16040 69 6c 65 20 61 20 6e 6f 2d 6f 70 2e 20 20 57 72  ile a no-op.  Wr
16050 69 74 65 73 20 74 6f 20 74 68 69 73 20 6a 6f 75  ites to this jou
16060 72 6e 61 6c 20 77 6f 75 6c 64 0a 2a 2a 20 61 6c  rnal would.** al
16070 73 6f 20 62 65 20 6e 6f 2d 6f 70 73 2c 20 61 6e  so be no-ops, an
16080 64 20 61 6e 79 20 61 74 74 65 6d 70 74 20 74 6f  d any attempt to
16090 20 72 65 61 64 20 74 68 65 20 6a 6f 75 72 6e 61   read the journa
160a0 6c 20 77 6f 75 6c 64 20 72 65 74 75 72 6e 0a 2a  l would return.*
160b0 2a 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 2e 20  * SQLITE_IOERR. 
160c0 20 4f 72 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e   Or the implemen
160d0 74 61 74 69 6f 6e 20 6d 69 67 68 74 20 72 65 63  tation might rec
160e0 6f 67 6e 69 7a 65 20 74 68 61 74 20 61 20 64 61  ognize that a da
160f0 74 61 62 61 73 65 0a 2a 2a 20 66 69 6c 65 20 77  tabase.** file w
16100 69 6c 6c 20 62 65 20 64 6f 69 6e 67 20 70 61 67  ill be doing pag
16110 65 2d 61 6c 69 67 6e 65 64 20 73 65 63 74 6f 72  e-aligned sector
16120 20 72 65 61 64 73 20 61 6e 64 20 77 72 69 74 65   reads and write
16130 73 20 69 6e 20 61 20 72 61 6e 64 6f 6d 0a 2a 2a  s in a random.**
16140 20 6f 72 64 65 72 20 61 6e 64 20 73 65 74 20 75   order and set u
16150 70 20 69 74 73 20 49 2f 4f 20 73 75 62 73 79 73  p its I/O subsys
16160 74 65 6d 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e  tem accordingly.
16170 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 6d 69  .**.** SQLite mi
16180 67 68 74 20 61 6c 73 6f 20 61 64 64 20 6f 6e 65  ght also add one
16190 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
161a0 67 20 66 6c 61 67 73 20 74 6f 20 74 68 65 20 78  g flags to the x
161b0 4f 70 65 6e 20 6d 65 74 68 6f 64 3a 0a 2a 2a 0a  Open method:.**.
161c0 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20  ** <ul>.** <li> 
161d0 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c  [SQLITE_OPEN_DEL
161e0 45 54 45 4f 4e 43 4c 4f 53 45 5d 0a 2a 2a 20 3c  ETEONCLOSE].** <
161f0 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  li> [SQLITE_OPEN
16200 5f 45 58 43 4c 55 53 49 56 45 5d 0a 2a 2a 20 3c  _EXCLUSIVE].** <
16210 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b  /ul>.**.** The [
16220 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45  SQLITE_OPEN_DELE
16230 54 45 4f 4e 43 4c 4f 53 45 5d 20 66 6c 61 67 20  TEONCLOSE] flag 
16240 6d 65 61 6e 73 20 74 68 65 20 66 69 6c 65 20 73  means the file s
16250 68 6f 75 6c 64 20 62 65 0a 2a 2a 20 64 65 6c 65  hould be.** dele
16260 74 65 64 20 77 68 65 6e 20 69 74 20 69 73 20 63  ted when it is c
16270 6c 6f 73 65 64 2e 20 20 5e 54 68 65 20 5b 53 51  losed.  ^The [SQ
16280 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45  LITE_OPEN_DELETE
16290 4f 4e 43 4c 4f 53 45 5d 0a 2a 2a 20 77 69 6c 6c  ONCLOSE].** will
162a0 20 62 65 20 73 65 74 20 66 6f 72 20 54 45 4d 50   be set for TEMP
162b0 20 64 61 74 61 62 61 73 65 73 20 61 6e 64 20 74   databases and t
162c0 68 65 69 72 20 6a 6f 75 72 6e 61 6c 73 2c 20 74  heir journals, t
162d0 72 61 6e 73 69 65 6e 74 0a 2a 2a 20 64 61 74 61  ransient.** data
162e0 62 61 73 65 73 2c 20 61 6e 64 20 73 75 62 6a 6f  bases, and subjo
162f0 75 72 6e 61 6c 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54  urnals..**.** ^T
16300 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  he [SQLITE_OPEN_
16310 45 58 43 4c 55 53 49 56 45 5d 20 66 6c 61 67 20  EXCLUSIVE] flag 
16320 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 20 69  is always used i
16330 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 0a 2a 2a  n conjunction.**
16340 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54   with the [SQLIT
16350 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 5d 20 66  E_OPEN_CREATE] f
16360 6c 61 67 2c 20 77 68 69 63 68 20 61 72 65 20 62  lag, which are b
16370 6f 74 68 20 64 69 72 65 63 74 6c 79 0a 2a 2a 20  oth directly.** 
16380 61 6e 61 6c 6f 67 6f 75 73 20 74 6f 20 74 68 65  analogous to the
16390 20 4f 5f 45 58 43 4c 20 61 6e 64 20 4f 5f 43 52   O_EXCL and O_CR
163a0 45 41 54 20 66 6c 61 67 73 20 6f 66 20 74 68 65  EAT flags of the
163b0 20 50 4f 53 49 58 20 6f 70 65 6e 28 29 0a 2a 2a   POSIX open().**
163c0 20 41 50 49 2e 20 20 54 68 65 20 53 51 4c 49 54   API.  The SQLIT
163d0 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45  E_OPEN_EXCLUSIVE
163e0 20 66 6c 61 67 2c 20 77 68 65 6e 20 70 61 69 72   flag, when pair
163f0 65 64 20 77 69 74 68 20 74 68 65 20 0a 2a 2a 20  ed with the .** 
16400 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41  SQLITE_OPEN_CREA
16410 54 45 2c 20 69 73 20 75 73 65 64 20 74 6f 20 69  TE, is used to i
16420 6e 64 69 63 61 74 65 20 74 68 61 74 20 66 69 6c  ndicate that fil
16430 65 20 73 68 6f 75 6c 64 20 61 6c 77 61 79 73 0a  e should always.
16440 2a 2a 20 62 65 20 63 72 65 61 74 65 64 2c 20 61  ** be created, a
16450 6e 64 20 74 68 61 74 20 69 74 20 69 73 20 61 6e  nd that it is an
16460 20 65 72 72 6f 72 20 69 66 20 69 74 20 61 6c 72   error if it alr
16470 65 61 64 79 20 65 78 69 73 74 73 2e 0a 2a 2a 20  eady exists..** 
16480 49 74 20 69 73 20 3c 69 3e 6e 6f 74 3c 2f 69 3e  It is <i>not</i>
16490 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61 74   used to indicat
164a0 65 20 74 68 65 20 66 69 6c 65 20 73 68 6f 75 6c  e the file shoul
164b0 64 20 62 65 20 6f 70 65 6e 65 64 20 0a 2a 2a 20  d be opened .** 
164c0 66 6f 72 20 65 78 63 6c 75 73 69 76 65 20 61 63  for exclusive ac
164d0 63 65 73 73 2e 0a 2a 2a 0a 2a 2a 20 5e 41 74 20  cess..**.** ^At 
164e0 6c 65 61 73 74 20 73 7a 4f 73 46 69 6c 65 20 62  least szOsFile b
164f0 79 74 65 73 20 6f 66 20 6d 65 6d 6f 72 79 20 61  ytes of memory a
16500 72 65 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20  re allocated by 
16510 53 51 4c 69 74 65 0a 2a 2a 20 74 6f 20 68 6f 6c  SQLite.** to hol
16520 64 20 74 68 65 20 20 5b 73 71 6c 69 74 65 33 5f  d the  [sqlite3_
16530 66 69 6c 65 5d 20 73 74 72 75 63 74 75 72 65 20  file] structure 
16540 70 61 73 73 65 64 20 61 73 20 74 68 65 20 74 68  passed as the th
16550 69 72 64 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20  ird.** argument 
16560 74 6f 20 78 4f 70 65 6e 2e 20 20 54 68 65 20 78  to xOpen.  The x
16570 4f 70 65 6e 20 6d 65 74 68 6f 64 20 64 6f 65 73  Open method does
16580 20 6e 6f 74 20 68 61 76 65 20 74 6f 0a 2a 2a 20   not have to.** 
16590 61 6c 6c 6f 63 61 74 65 20 74 68 65 20 73 74 72  allocate the str
165a0 75 63 74 75 72 65 3b 20 69 74 20 73 68 6f 75 6c  ucture; it shoul
165b0 64 20 6a 75 73 74 20 66 69 6c 6c 20 69 74 20 69  d just fill it i
165c0 6e 2e 20 20 4e 6f 74 65 20 74 68 61 74 0a 2a 2a  n.  Note that.**
165d0 20 74 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f   the xOpen metho
165e0 64 20 6d 75 73 74 20 73 65 74 20 74 68 65 20 73  d must set the s
165f0 71 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74  qlite3_file.pMet
16600 68 6f 64 73 20 74 6f 20 65 69 74 68 65 72 0a 2a  hods to either.*
16610 2a 20 61 20 76 61 6c 69 64 20 5b 73 71 6c 69 74  * a valid [sqlit
16620 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f  e3_io_methods] o
16630 62 6a 65 63 74 20 6f 72 20 74 6f 20 4e 55 4c 4c  bject or to NULL
16640 2e 20 20 78 4f 70 65 6e 20 6d 75 73 74 20 64 6f  .  xOpen must do
16650 0a 2a 2a 20 74 68 69 73 20 65 76 65 6e 20 69 66  .** this even if
16660 20 74 68 65 20 6f 70 65 6e 20 66 61 69 6c 73 2e   the open fails.
16670 20 20 53 51 4c 69 74 65 20 65 78 70 65 63 74 73    SQLite expects
16680 20 74 68 61 74 20 74 68 65 20 73 71 6c 69 74 65   that the sqlite
16690 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73 0a  3_file.pMethods.
166a0 2a 2a 20 65 6c 65 6d 65 6e 74 20 77 69 6c 6c 20  ** element will 
166b0 62 65 20 76 61 6c 69 64 20 61 66 74 65 72 20 78  be valid after x
166c0 4f 70 65 6e 20 72 65 74 75 72 6e 73 20 72 65 67  Open returns reg
166d0 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65 20 73  ardless of the s
166e0 75 63 63 65 73 73 0a 2a 2a 20 6f 72 20 66 61 69  uccess.** or fai
166f0 6c 75 72 65 20 6f 66 20 74 68 65 20 78 4f 70 65  lure of the xOpe
16700 6e 20 63 61 6c 6c 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  n call..**.** [[
16710 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 41 63 63  sqlite3_vfs.xAcc
16720 65 73 73 5d 5d 0a 2a 2a 20 5e 54 68 65 20 66 6c  ess]].** ^The fl
16730 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ags argument to 
16740 78 41 63 63 65 73 73 28 29 20 6d 61 79 20 62 65  xAccess() may be
16750 20 5b 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f   [SQLITE_ACCESS_
16760 45 58 49 53 54 53 5d 0a 2a 2a 20 74 6f 20 74 65  EXISTS].** to te
16770 73 74 20 66 6f 72 20 74 68 65 20 65 78 69 73 74  st for the exist
16780 65 6e 63 65 20 6f 66 20 61 20 66 69 6c 65 2c 20  ence of a file, 
16790 6f 72 20 5b 53 51 4c 49 54 45 5f 41 43 43 45 53  or [SQLITE_ACCES
167a0 53 5f 52 45 41 44 57 52 49 54 45 5d 20 74 6f 0a  S_READWRITE] to.
167b0 2a 2a 20 74 65 73 74 20 77 68 65 74 68 65 72 20  ** test whether 
167c0 61 20 66 69 6c 65 20 69 73 20 72 65 61 64 61 62  a file is readab
167d0 6c 65 20 61 6e 64 20 77 72 69 74 61 62 6c 65 2c  le and writable,
167e0 20 6f 72 20 5b 53 51 4c 49 54 45 5f 41 43 43 45   or [SQLITE_ACCE
167f0 53 53 5f 52 45 41 44 5d 0a 2a 2a 20 74 6f 20 74  SS_READ].** to t
16800 65 73 74 20 77 68 65 74 68 65 72 20 61 20 66 69  est whether a fi
16810 6c 65 20 69 73 20 61 74 20 6c 65 61 73 74 20 72  le is at least r
16820 65 61 64 61 62 6c 65 2e 20 20 54 68 65 20 53 51  eadable.  The SQ
16830 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44  LITE_ACCESS_READ
16840 0a 2a 2a 20 66 6c 61 67 20 69 73 20 6e 65 76 65  .** flag is neve
16850 72 20 61 63 74 75 61 6c 6c 79 20 75 73 65 64 20  r actually used 
16860 61 6e 64 20 69 73 20 6e 6f 74 20 69 6d 70 6c 65  and is not imple
16870 6d 65 6e 74 65 64 20 69 6e 20 74 68 65 20 62 75  mented in the bu
16880 69 6c 74 2d 69 6e 0a 2a 2a 20 56 46 53 65 73 20  ilt-in.** VFSes 
16890 6f 66 20 53 51 4c 69 74 65 2e 20 20 54 68 65 20  of SQLite.  The 
168a0 66 69 6c 65 20 69 73 20 6e 61 6d 65 64 20 62 79  file is named by
168b0 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   the second argu
168c0 6d 65 6e 74 20 61 6e 64 20 63 61 6e 20 62 65 20  ment and can be 
168d0 61 0a 2a 2a 20 64 69 72 65 63 74 6f 72 79 2e 20  a.** directory. 
168e0 54 68 65 20 78 41 63 63 65 73 73 20 6d 65 74 68  The xAccess meth
168f0 6f 64 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49  od returns [SQLI
16900 54 45 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63 65 73  TE_OK] on succes
16910 73 20 6f 72 20 73 6f 6d 65 0a 2a 2a 20 6e 6f 6e  s or some.** non
16920 2d 7a 65 72 6f 20 65 72 72 6f 72 20 63 6f 64 65  -zero error code
16930 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20   if there is an 
16940 49 2f 4f 20 65 72 72 6f 72 20 6f 72 20 69 66 20  I/O error or if 
16950 74 68 65 20 6e 61 6d 65 20 6f 66 0a 2a 2a 20 74  the name of.** t
16960 68 65 20 66 69 6c 65 20 67 69 76 65 6e 20 69 6e  he file given in
16970 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   the second argu
16980 6d 65 6e 74 20 69 73 20 69 6c 6c 65 67 61 6c 2e  ment is illegal.
16990 20 20 49 66 20 53 51 4c 49 54 45 5f 4f 4b 0a 2a    If SQLITE_OK.*
169a0 2a 20 69 73 20 72 65 74 75 72 6e 65 64 2c 20 74  * is returned, t
169b0 68 65 6e 20 6e 6f 6e 2d 7a 65 72 6f 20 6f 72 20  hen non-zero or 
169c0 7a 65 72 6f 20 69 73 20 77 72 69 74 74 65 6e 20  zero is written 
169d0 69 6e 74 6f 20 2a 70 52 65 73 4f 75 74 20 74 6f  into *pResOut to
169e0 20 69 6e 64 69 63 61 74 65 0a 2a 2a 20 77 68 65   indicate.** whe
169f0 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20  ther or not the 
16a00 66 69 6c 65 20 69 73 20 61 63 63 65 73 73 69 62  file is accessib
16a10 6c 65 2e 20 20 0a 2a 2a 0a 2a 2a 20 5e 53 51 4c  le.  .**.** ^SQL
16a20 69 74 65 20 77 69 6c 6c 20 61 6c 77 61 79 73 20  ite will always 
16a30 61 6c 6c 6f 63 61 74 65 20 61 74 20 6c 65 61 73  allocate at leas
16a40 74 20 6d 78 50 61 74 68 6e 61 6d 65 2b 31 20 62  t mxPathname+1 b
16a50 79 74 65 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20  ytes for the.** 
16a60 6f 75 74 70 75 74 20 62 75 66 66 65 72 20 78 46  output buffer xF
16a70 75 6c 6c 50 61 74 68 6e 61 6d 65 2e 20 20 54 68  ullPathname.  Th
16a80 65 20 65 78 61 63 74 20 73 69 7a 65 20 6f 66 20  e exact size of 
16a90 74 68 65 20 6f 75 74 70 75 74 20 62 75 66 66 65  the output buffe
16aa0 72 0a 2a 2a 20 69 73 20 61 6c 73 6f 20 70 61 73  r.** is also pas
16ab0 73 65 64 20 61 73 20 61 20 70 61 72 61 6d 65 74  sed as a paramet
16ac0 65 72 20 74 6f 20 62 6f 74 68 20 20 6d 65 74 68  er to both  meth
16ad0 6f 64 73 2e 20 49 66 20 74 68 65 20 6f 75 74 70  ods. If the outp
16ae0 75 74 20 62 75 66 66 65 72 0a 2a 2a 20 69 73 20  ut buffer.** is 
16af0 6e 6f 74 20 6c 61 72 67 65 20 65 6e 6f 75 67 68  not large enough
16b00 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  , [SQLITE_CANTOP
16b10 45 4e 5d 20 73 68 6f 75 6c 64 20 62 65 20 72 65  EN] should be re
16b20 74 75 72 6e 65 64 2e 20 53 69 6e 63 65 20 74 68  turned. Since th
16b30 69 73 20 69 73 0a 2a 2a 20 68 61 6e 64 6c 65 64  is is.** handled
16b40 20 61 73 20 61 20 66 61 74 61 6c 20 65 72 72 6f   as a fatal erro
16b50 72 20 62 79 20 53 51 4c 69 74 65 2c 20 76 66 73  r by SQLite, vfs
16b60 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
16b70 20 73 68 6f 75 6c 64 20 65 6e 64 65 61 76 6f 72   should endeavor
16b80 0a 2a 2a 20 74 6f 20 70 72 65 76 65 6e 74 20 74  .** to prevent t
16b90 68 69 73 20 62 79 20 73 65 74 74 69 6e 67 20 6d  his by setting m
16ba0 78 50 61 74 68 6e 61 6d 65 20 74 6f 20 61 20 73  xPathname to a s
16bb0 75 66 66 69 63 69 65 6e 74 6c 79 20 6c 61 72 67  ufficiently larg
16bc0 65 20 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 54  e value..**.** T
16bd0 68 65 20 78 52 61 6e 64 6f 6d 6e 65 73 73 28 29  he xRandomness()
16be0 2c 20 78 53 6c 65 65 70 28 29 2c 20 78 43 75 72  , xSleep(), xCur
16bf0 72 65 6e 74 54 69 6d 65 28 29 2c 20 61 6e 64 20  rentTime(), and 
16c00 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36  xCurrentTimeInt6
16c10 34 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  4().** interface
16c20 73 20 61 72 65 20 6e 6f 74 20 73 74 72 69 63 74  s are not strict
16c30 6c 79 20 61 20 70 61 72 74 20 6f 66 20 74 68 65  ly a part of the
16c40 20 66 69 6c 65 73 79 73 74 65 6d 2c 20 62 75 74   filesystem, but
16c50 20 74 68 65 79 20 61 72 65 0a 2a 2a 20 69 6e 63   they are.** inc
16c60 6c 75 64 65 64 20 69 6e 20 74 68 65 20 56 46 53  luded in the VFS
16c70 20 73 74 72 75 63 74 75 72 65 20 66 6f 72 20 63   structure for c
16c80 6f 6d 70 6c 65 74 65 6e 65 73 73 2e 0a 2a 2a 20  ompleteness..** 
16c90 54 68 65 20 78 52 61 6e 64 6f 6d 6e 65 73 73 28  The xRandomness(
16ca0 29 20 66 75 6e 63 74 69 6f 6e 20 61 74 74 65 6d  ) function attem
16cb0 70 74 73 20 74 6f 20 72 65 74 75 72 6e 20 6e 42  pts to return nB
16cc0 79 74 65 73 20 62 79 74 65 73 0a 2a 2a 20 6f 66  ytes bytes.** of
16cd0 20 67 6f 6f 64 2d 71 75 61 6c 69 74 79 20 72 61   good-quality ra
16ce0 6e 64 6f 6d 6e 65 73 73 20 69 6e 74 6f 20 7a 4f  ndomness into zO
16cf0 75 74 2e 20 20 54 68 65 20 72 65 74 75 72 6e 20  ut.  The return 
16d00 76 61 6c 75 65 20 69 73 0a 2a 2a 20 74 68 65 20  value is.** the 
16d10 61 63 74 75 61 6c 20 6e 75 6d 62 65 72 20 6f 66  actual number of
16d20 20 62 79 74 65 73 20 6f 66 20 72 61 6e 64 6f 6d   bytes of random
16d30 6e 65 73 73 20 6f 62 74 61 69 6e 65 64 2e 0a 2a  ness obtained..*
16d40 2a 20 54 68 65 20 78 53 6c 65 65 70 28 29 20 6d  * The xSleep() m
16d50 65 74 68 6f 64 20 63 61 75 73 65 73 20 74 68 65  ethod causes the
16d60 20 63 61 6c 6c 69 6e 67 20 74 68 72 65 61 64 20   calling thread 
16d70 74 6f 20 73 6c 65 65 70 20 66 6f 72 20 61 74 0a  to sleep for at.
16d80 2a 2a 20 6c 65 61 73 74 20 74 68 65 20 6e 75 6d  ** least the num
16d90 62 65 72 20 6f 66 20 6d 69 63 72 6f 73 65 63 6f  ber of microseco
16da0 6e 64 73 20 67 69 76 65 6e 2e 20 20 5e 54 68 65  nds given.  ^The
16db0 20 78 43 75 72 72 65 6e 74 54 69 6d 65 28 29 0a   xCurrentTime().
16dc0 2a 2a 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  ** method return
16dd0 73 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 4e  s a Julian Day N
16de0 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63 75  umber for the cu
16df0 72 72 65 6e 74 20 64 61 74 65 20 61 6e 64 20 74  rrent date and t
16e00 69 6d 65 20 61 73 0a 2a 2a 20 61 20 66 6c 6f 61  ime as.** a floa
16e10 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65  ting point value
16e20 2e 0a 2a 2a 20 5e 54 68 65 20 78 43 75 72 72 65  ..** ^The xCurre
16e30 6e 74 54 69 6d 65 49 6e 74 36 34 28 29 20 6d 65  ntTimeInt64() me
16e40 74 68 6f 64 20 72 65 74 75 72 6e 73 2c 20 61 73  thod returns, as
16e50 20 61 6e 20 69 6e 74 65 67 65 72 2c 20 74 68 65   an integer, the
16e60 20 4a 75 6c 69 61 6e 0a 2a 2a 20 44 61 79 20 4e   Julian.** Day N
16e70 75 6d 62 65 72 20 6d 75 6c 74 69 70 6c 69 65 64  umber multiplied
16e80 20 62 79 20 38 36 34 30 30 30 30 30 20 28 74 68   by 86400000 (th
16e90 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c  e number of mill
16ea0 69 73 65 63 6f 6e 64 73 20 69 6e 20 0a 2a 2a 20  iseconds in .** 
16eb0 61 20 32 34 2d 68 6f 75 72 20 64 61 79 29 2e 20  a 24-hour day). 
16ec0 20 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c   .** ^SQLite wil
16ed0 6c 20 75 73 65 20 74 68 65 20 78 43 75 72 72 65  l use the xCurre
16ee0 6e 74 54 69 6d 65 49 6e 74 36 34 28 29 20 6d 65  ntTimeInt64() me
16ef0 74 68 6f 64 20 74 6f 20 67 65 74 20 74 68 65 20  thod to get the 
16f00 63 75 72 72 65 6e 74 0a 2a 2a 20 64 61 74 65 20  current.** date 
16f10 61 6e 64 20 74 69 6d 65 20 69 66 20 74 68 61 74  and time if that
16f20 20 6d 65 74 68 6f 64 20 69 73 20 61 76 61 69 6c   method is avail
16f30 61 62 6c 65 20 28 69 66 20 69 56 65 72 73 69 6f  able (if iVersio
16f40 6e 20 69 73 20 32 20 6f 72 20 0a 2a 2a 20 67 72  n is 2 or .** gr
16f50 65 61 74 65 72 20 61 6e 64 20 74 68 65 20 66 75  eater and the fu
16f60 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69  nction pointer i
16f70 73 20 6e 6f 74 20 4e 55 4c 4c 29 20 61 6e 64 20  s not NULL) and 
16f80 77 69 6c 6c 20 66 61 6c 6c 20 62 61 63 6b 0a 2a  will fall back.*
16f90 2a 20 74 6f 20 78 43 75 72 72 65 6e 74 54 69 6d  * to xCurrentTim
16fa0 65 28 29 20 69 66 20 78 43 75 72 72 65 6e 74 54  e() if xCurrentT
16fb0 69 6d 65 49 6e 74 36 34 28 29 20 69 73 20 75 6e  imeInt64() is un
16fc0 61 76 61 69 6c 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a  available..**.**
16fd0 20 5e 54 68 65 20 78 53 65 74 53 79 73 74 65 6d   ^The xSetSystem
16fe0 43 61 6c 6c 28 29 2c 20 78 47 65 74 53 79 73 74  Call(), xGetSyst
16ff0 65 6d 43 61 6c 6c 28 29 2c 20 61 6e 64 20 78 4e  emCall(), and xN
17000 65 73 74 53 79 73 74 65 6d 43 61 6c 6c 28 29 20  estSystemCall() 
17010 69 6e 74 65 72 66 61 63 65 73 0a 2a 2a 20 61 72  interfaces.** ar
17020 65 20 6e 6f 74 20 75 73 65 64 20 62 79 20 74 68  e not used by th
17030 65 20 53 51 4c 69 74 65 20 63 6f 72 65 2e 20 20  e SQLite core.  
17040 54 68 65 73 65 20 6f 70 74 69 6f 6e 61 6c 20 69  These optional i
17050 6e 74 65 72 66 61 63 65 73 20 61 72 65 20 70 72  nterfaces are pr
17060 6f 76 69 64 65 64 0a 2a 2a 20 62 79 20 73 6f 6d  ovided.** by som
17070 65 20 56 46 53 65 73 20 74 6f 20 66 61 63 69 6c  e VFSes to facil
17080 69 74 61 74 65 20 74 65 73 74 69 6e 67 20 6f 66  itate testing of
17090 20 74 68 65 20 56 46 53 20 63 6f 64 65 2e 20 42   the VFS code. B
170a0 79 20 6f 76 65 72 72 69 64 69 6e 67 20 0a 2a 2a  y overriding .**
170b0 20 73 79 73 74 65 6d 20 63 61 6c 6c 73 20 77 69   system calls wi
170c0 74 68 20 66 75 6e 63 74 69 6f 6e 73 20 75 6e 64  th functions und
170d0 65 72 20 69 74 73 20 63 6f 6e 74 72 6f 6c 2c 20  er its control, 
170e0 61 20 74 65 73 74 20 70 72 6f 67 72 61 6d 20 63  a test program c
170f0 61 6e 0a 2a 2a 20 73 69 6d 75 6c 61 74 65 20 66  an.** simulate f
17100 61 75 6c 74 73 20 61 6e 64 20 65 72 72 6f 72 20  aults and error 
17110 63 6f 6e 64 69 74 69 6f 6e 73 20 74 68 61 74 20  conditions that 
17120 77 6f 75 6c 64 20 6f 74 68 65 72 77 69 73 65 20  would otherwise 
17130 62 65 20 64 69 66 66 69 63 75 6c 74 0a 2a 2a 20  be difficult.** 
17140 6f 72 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f  or impossible to
17150 20 69 6e 64 75 63 65 2e 20 20 54 68 65 20 73 65   induce.  The se
17160 74 20 6f 66 20 73 79 73 74 65 6d 20 63 61 6c 6c  t of system call
17170 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 6f 76  s that can be ov
17180 65 72 72 69 64 64 65 6e 0a 2a 2a 20 76 61 72 69  erridden.** vari
17190 65 73 20 66 72 6f 6d 20 6f 6e 65 20 56 46 53 20  es from one VFS 
171a0 74 6f 20 61 6e 6f 74 68 65 72 2c 20 61 6e 64 20  to another, and 
171b0 66 72 6f 6d 20 6f 6e 65 20 76 65 72 73 69 6f 6e  from one version
171c0 20 6f 66 20 74 68 65 20 73 61 6d 65 20 56 46 53   of the same VFS
171d0 20 74 6f 20 74 68 65 0a 2a 2a 20 6e 65 78 74 2e   to the.** next.
171e0 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 74    Applications t
171f0 68 61 74 20 75 73 65 20 74 68 65 73 65 20 69 6e  hat use these in
17200 74 65 72 66 61 63 65 73 20 6d 75 73 74 20 62 65  terfaces must be
17210 20 70 72 65 70 61 72 65 64 20 66 6f 72 20 61 6e   prepared for an
17220 79 0a 2a 2a 20 6f 72 20 61 6c 6c 20 6f 66 20 74  y.** or all of t
17230 68 65 73 65 20 69 6e 74 65 72 66 61 63 65 73 20  hese interfaces 
17240 74 6f 20 62 65 20 4e 55 4c 4c 20 6f 72 20 66 6f  to be NULL or fo
17250 72 20 74 68 65 69 72 20 62 65 68 61 76 69 6f 72  r their behavior
17260 20 74 6f 20 63 68 61 6e 67 65 0a 2a 2a 20 66 72   to change.** fr
17270 6f 6d 20 6f 6e 65 20 72 65 6c 65 61 73 65 20 74  om one release t
17280 6f 20 74 68 65 20 6e 65 78 74 2e 20 20 41 70 70  o the next.  App
17290 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 6e  lications must n
172a0 6f 74 20 61 74 74 65 6d 70 74 20 74 6f 20 61 63  ot attempt to ac
172b0 63 65 73 73 0a 2a 2a 20 61 6e 79 20 6f 66 20 74  cess.** any of t
172c0 68 65 73 65 20 6d 65 74 68 6f 64 73 20 69 66 20  hese methods if 
172d0 74 68 65 20 69 56 65 72 73 69 6f 6e 20 6f 66 20  the iVersion of 
172e0 74 68 65 20 56 46 53 20 69 73 20 6c 65 73 73 20  the VFS is less 
172f0 74 68 61 6e 20 33 2e 0a 2a 2f 0a 74 79 70 65 64  than 3..*/.typed
17300 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  ef struct sqlite
17310 33 5f 76 66 73 20 73 71 6c 69 74 65 33 5f 76 66  3_vfs sqlite3_vf
17320 73 3b 0a 74 79 70 65 64 65 66 20 76 6f 69 64 20  s;.typedef void 
17330 28 2a 73 71 6c 69 74 65 33 5f 73 79 73 63 61 6c  (*sqlite3_syscal
17340 6c 5f 70 74 72 29 28 76 6f 69 64 29 3b 0a 73 74  l_ptr)(void);.st
17350 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 66 73  ruct sqlite3_vfs
17360 20 7b 0a 20 20 69 6e 74 20 69 56 65 72 73 69 6f   {.  int iVersio
17370 6e 3b 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  n;            /*
17380 20 53 74 72 75 63 74 75 72 65 20 76 65 72 73 69   Structure versi
17390 6f 6e 20 6e 75 6d 62 65 72 20 28 63 75 72 72 65  on number (curre
173a0 6e 74 6c 79 20 33 29 20 2a 2f 0a 20 20 69 6e 74  ntly 3) */.  int
173b0 20 73 7a 4f 73 46 69 6c 65 3b 20 20 20 20 20 20   szOsFile;      
173c0 20 20 20 20 20 20 2f 2a 20 53 69 7a 65 20 6f 66        /* Size of
173d0 20 73 75 62 63 6c 61 73 73 65 64 20 73 71 6c 69   subclassed sqli
173e0 74 65 33 5f 66 69 6c 65 20 2a 2f 0a 20 20 69 6e  te3_file */.  in
173f0 74 20 6d 78 50 61 74 68 6e 61 6d 65 3b 20 20 20  t mxPathname;   
17400 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75         /* Maximu
17410 6d 20 66 69 6c 65 20 70 61 74 68 6e 61 6d 65 20  m file pathname 
17420 6c 65 6e 67 74 68 20 2a 2f 0a 20 20 73 71 6c 69  length */.  sqli
17430 74 65 33 5f 76 66 73 20 2a 70 4e 65 78 74 3b 20  te3_vfs *pNext; 
17440 20 20 20 20 20 2f 2a 20 4e 65 78 74 20 72 65 67       /* Next reg
17450 69 73 74 65 72 65 64 20 56 46 53 20 2a 2f 0a 20  istered VFS */. 
17460 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61   const char *zNa
17470 6d 65 3b 20 20 20 20 20 20 20 2f 2a 20 4e 61 6d  me;       /* Nam
17480 65 20 6f 66 20 74 68 69 73 20 76 69 72 74 75 61  e of this virtua
17490 6c 20 66 69 6c 65 20 73 79 73 74 65 6d 20 2a 2f  l file system */
174a0 0a 20 20 76 6f 69 64 20 2a 70 41 70 70 44 61 74  .  void *pAppDat
174b0 61 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 50  a;          /* P
174c0 6f 69 6e 74 65 72 20 74 6f 20 61 70 70 6c 69 63  ointer to applic
174d0 61 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 64  ation-specific d
174e0 61 74 61 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  ata */.  int (*x
174f0 4f 70 65 6e 29 28 73 71 6c 69 74 65 33 5f 76 66  Open)(sqlite3_vf
17500 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  s*, const char *
17510 7a 4e 61 6d 65 2c 20 73 71 6c 69 74 65 33 5f 66  zName, sqlite3_f
17520 69 6c 65 2a 2c 0a 20 20 20 20 20 20 20 20 20 20  ile*,.          
17530 20 20 20 20 20 69 6e 74 20 66 6c 61 67 73 2c 20       int flags, 
17540 69 6e 74 20 2a 70 4f 75 74 46 6c 61 67 73 29 3b  int *pOutFlags);
17550 0a 20 20 69 6e 74 20 28 2a 78 44 65 6c 65 74 65  .  int (*xDelete
17560 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
17570 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d  const char *zNam
17580 65 2c 20 69 6e 74 20 73 79 6e 63 44 69 72 29 3b  e, int syncDir);
17590 0a 20 20 69 6e 74 20 28 2a 78 41 63 63 65 73 73  .  int (*xAccess
175a0 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
175b0 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d  const char *zNam
175c0 65 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 69 6e  e, int flags, in
175d0 74 20 2a 70 52 65 73 4f 75 74 29 3b 0a 20 20 69  t *pResOut);.  i
175e0 6e 74 20 28 2a 78 46 75 6c 6c 50 61 74 68 6e 61  nt (*xFullPathna
175f0 6d 65 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  me)(sqlite3_vfs*
17600 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
17610 61 6d 65 2c 20 69 6e 74 20 6e 4f 75 74 2c 20 63  ame, int nOut, c
17620 68 61 72 20 2a 7a 4f 75 74 29 3b 0a 20 20 76 6f  har *zOut);.  vo
17630 69 64 20 2a 28 2a 78 44 6c 4f 70 65 6e 29 28 73  id *(*xDlOpen)(s
17640 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e  qlite3_vfs*, con
17650 73 74 20 63 68 61 72 20 2a 7a 46 69 6c 65 6e 61  st char *zFilena
17660 6d 65 29 3b 0a 20 20 76 6f 69 64 20 28 2a 78 44  me);.  void (*xD
17670 6c 45 72 72 6f 72 29 28 73 71 6c 69 74 65 33 5f  lError)(sqlite3_
17680 76 66 73 2a 2c 20 69 6e 74 20 6e 42 79 74 65 2c  vfs*, int nByte,
17690 20 63 68 61 72 20 2a 7a 45 72 72 4d 73 67 29 3b   char *zErrMsg);
176a0 0a 20 20 76 6f 69 64 20 28 2a 28 2a 78 44 6c 53  .  void (*(*xDlS
176b0 79 6d 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  ym)(sqlite3_vfs*
176c0 2c 76 6f 69 64 2a 2c 20 63 6f 6e 73 74 20 63 68  ,void*, const ch
176d0 61 72 20 2a 7a 53 79 6d 62 6f 6c 29 29 28 76 6f  ar *zSymbol))(vo
176e0 69 64 29 3b 0a 20 20 76 6f 69 64 20 28 2a 78 44  id);.  void (*xD
176f0 6c 43 6c 6f 73 65 29 28 73 71 6c 69 74 65 33 5f  lClose)(sqlite3_
17700 76 66 73 2a 2c 20 76 6f 69 64 2a 29 3b 0a 20 20  vfs*, void*);.  
17710 69 6e 74 20 28 2a 78 52 61 6e 64 6f 6d 6e 65 73  int (*xRandomnes
17720 73 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c  s)(sqlite3_vfs*,
17730 20 69 6e 74 20 6e 42 79 74 65 2c 20 63 68 61 72   int nByte, char
17740 20 2a 7a 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28   *zOut);.  int (
17750 2a 78 53 6c 65 65 70 29 28 73 71 6c 69 74 65 33  *xSleep)(sqlite3
17760 5f 76 66 73 2a 2c 20 69 6e 74 20 6d 69 63 72 6f  _vfs*, int micro
17770 73 65 63 6f 6e 64 73 29 3b 0a 20 20 69 6e 74 20  seconds);.  int 
17780 28 2a 78 43 75 72 72 65 6e 74 54 69 6d 65 29 28  (*xCurrentTime)(
17790 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 64 6f  sqlite3_vfs*, do
177a0 75 62 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a  uble*);.  int (*
177b0 78 47 65 74 4c 61 73 74 45 72 72 6f 72 29 28 73  xGetLastError)(s
177c0 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74  qlite3_vfs*, int
177d0 2c 20 63 68 61 72 20 2a 29 3b 0a 20 20 2f 2a 0a  , char *);.  /*.
177e0 20 20 2a 2a 20 54 68 65 20 6d 65 74 68 6f 64 73    ** The methods
177f0 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65   above are in ve
17800 72 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73  rsion 1 of the s
17810 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a 65 63 74  qlite_vfs object
17820 0a 20 20 2a 2a 20 64 65 66 69 6e 69 74 69 6f 6e  .  ** definition
17830 2e 20 20 54 68 6f 73 65 20 74 68 61 74 20 66 6f  .  Those that fo
17840 6c 6c 6f 77 20 61 72 65 20 61 64 64 65 64 20 69  llow are added i
17850 6e 20 76 65 72 73 69 6f 6e 20 32 20 6f 72 20 6c  n version 2 or l
17860 61 74 65 72 0a 20 20 2a 2f 0a 20 20 69 6e 74 20  ater.  */.  int 
17870 28 2a 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e  (*xCurrentTimeIn
17880 74 36 34 29 28 73 71 6c 69 74 65 33 5f 76 66 73  t64)(sqlite3_vfs
17890 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  *, sqlite3_int64
178a0 2a 29 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54 68  *);.  /*.  ** Th
178b0 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20  e methods above 
178c0 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 73 20  are in versions 
178d0 31 20 61 6e 64 20 32 20 6f 66 20 74 68 65 20 73  1 and 2 of the s
178e0 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a 65 63 74  qlite_vfs object
178f0 2e 0a 20 20 2a 2a 20 54 68 6f 73 65 20 62 65 6c  ..  ** Those bel
17900 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69  ow are for versi
17910 6f 6e 20 33 20 61 6e 64 20 67 72 65 61 74 65 72  on 3 and greater
17920 2e 0a 20 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  ..  */.  int (*x
17930 53 65 74 53 79 73 74 65 6d 43 61 6c 6c 29 28 73  SetSystemCall)(s
17940 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e  qlite3_vfs*, con
17950 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20  st char *zName, 
17960 73 71 6c 69 74 65 33 5f 73 79 73 63 61 6c 6c 5f  sqlite3_syscall_
17970 70 74 72 29 3b 0a 20 20 73 71 6c 69 74 65 33 5f  ptr);.  sqlite3_
17980 73 79 73 63 61 6c 6c 5f 70 74 72 20 28 2a 78 47  syscall_ptr (*xG
17990 65 74 53 79 73 74 65 6d 43 61 6c 6c 29 28 73 71  etSystemCall)(sq
179a0 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73  lite3_vfs*, cons
179b0 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a  t char *zName);.
179c0 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 28 2a    const char *(*
179d0 78 4e 65 78 74 53 79 73 74 65 6d 43 61 6c 6c 29  xNextSystemCall)
179e0 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63  (sqlite3_vfs*, c
179f0 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65  onst char *zName
17a00 29 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54 68 65  );.  /*.  ** The
17a10 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61   methods above a
17a20 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 73 20 31  re in versions 1
17a30 20 74 68 72 6f 75 67 68 20 33 20 6f 66 20 74 68   through 3 of th
17a40 65 20 73 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a  e sqlite_vfs obj
17a50 65 63 74 2e 0a 20 20 2a 2a 20 4e 65 77 20 66 69  ect..  ** New fi
17a60 65 6c 64 73 20 6d 61 79 20 62 65 20 61 70 70 65  elds may be appe
17a70 6e 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 76  nded in future v
17a80 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 20 69 56  ersions.  The iV
17a90 65 72 73 69 6f 6e 0a 20 20 2a 2a 20 76 61 6c 75  ersion.  ** valu
17aa0 65 20 77 69 6c 6c 20 69 6e 63 72 65 6d 65 6e 74  e will increment
17ab0 20 77 68 65 6e 65 76 65 72 20 74 68 69 73 20 68   whenever this h
17ac0 61 70 70 65 6e 73 2e 20 0a 20 20 2a 2f 0a 7d 3b  appens. .  */.};
17ad0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
17ae0 3a 20 46 6c 61 67 73 20 66 6f 72 20 74 68 65 20  : Flags for the 
17af0 78 41 63 63 65 73 73 20 56 46 53 20 6d 65 74 68  xAccess VFS meth
17b00 6f 64 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69  od.**.** These i
17b10 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73  nteger constants
17b20 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20   can be used as 
17b30 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  the third parame
17b40 74 65 72 20 74 6f 0a 2a 2a 20 74 68 65 20 78 41  ter to.** the xA
17b50 63 63 65 73 73 20 6d 65 74 68 6f 64 20 6f 66 20  ccess method of 
17b60 61 6e 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d  an [sqlite3_vfs]
17b70 20 6f 62 6a 65 63 74 2e 20 20 54 68 65 79 20 64   object.  They d
17b80 65 74 65 72 6d 69 6e 65 0a 2a 2a 20 77 68 61 74  etermine.** what
17b90 20 6b 69 6e 64 20 6f 66 20 70 65 72 6d 69 73 73   kind of permiss
17ba0 69 6f 6e 73 20 74 68 65 20 78 41 63 63 65 73 73  ions the xAccess
17bb0 20 6d 65 74 68 6f 64 20 69 73 20 6c 6f 6f 6b 69   method is looki
17bc0 6e 67 20 66 6f 72 2e 0a 2a 2a 20 57 69 74 68 20  ng for..** With 
17bd0 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 45 58  SQLITE_ACCESS_EX
17be0 49 53 54 53 2c 20 74 68 65 20 78 41 63 63 65 73  ISTS, the xAcces
17bf0 73 20 6d 65 74 68 6f 64 0a 2a 2a 20 73 69 6d 70  s method.** simp
17c00 6c 79 20 63 68 65 63 6b 73 20 77 68 65 74 68 65  ly checks whethe
17c10 72 20 74 68 65 20 66 69 6c 65 20 65 78 69 73 74  r the file exist
17c20 73 2e 0a 2a 2a 20 57 69 74 68 20 53 51 4c 49 54  s..** With SQLIT
17c30 45 5f 41 43 43 45 53 53 5f 52 45 41 44 57 52 49  E_ACCESS_READWRI
17c40 54 45 2c 20 74 68 65 20 78 41 63 63 65 73 73 20  TE, the xAccess 
17c50 6d 65 74 68 6f 64 0a 2a 2a 20 63 68 65 63 6b 73  method.** checks
17c60 20 77 68 65 74 68 65 72 20 74 68 65 20 6e 61 6d   whether the nam
17c70 65 64 20 64 69 72 65 63 74 6f 72 79 20 69 73 20  ed directory is 
17c80 62 6f 74 68 20 72 65 61 64 61 62 6c 65 20 61 6e  both readable an
17c90 64 20 77 72 69 74 61 62 6c 65 0a 2a 2a 20 28 69  d writable.** (i
17ca0 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 69  n other words, i
17cb0 66 20 66 69 6c 65 73 20 63 61 6e 20 62 65 20 61  f files can be a
17cc0 64 64 65 64 2c 20 72 65 6d 6f 76 65 64 2c 20 61  dded, removed, a
17cd0 6e 64 20 72 65 6e 61 6d 65 64 20 77 69 74 68 69  nd renamed withi
17ce0 6e 0a 2a 2a 20 74 68 65 20 64 69 72 65 63 74 6f  n.** the directo
17cf0 72 79 29 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 49  ry)..** The SQLI
17d00 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 57 52  TE_ACCESS_READWR
17d10 49 54 45 20 63 6f 6e 73 74 61 6e 74 20 69 73 20  ITE constant is 
17d20 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 6f  currently used o
17d30 6e 6c 79 20 62 79 20 74 68 65 0a 2a 2a 20 5b 74  nly by the.** [t
17d40 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74  emp_store_direct
17d50 6f 72 79 20 70 72 61 67 6d 61 5d 2c 20 74 68 6f  ory pragma], tho
17d60 75 67 68 20 74 68 69 73 20 63 6f 75 6c 64 20 63  ugh this could c
17d70 68 61 6e 67 65 20 69 6e 20 61 20 66 75 74 75 72  hange in a futur
17d80 65 0a 2a 2a 20 72 65 6c 65 61 73 65 20 6f 66 20  e.** release of 
17d90 53 51 4c 69 74 65 2e 0a 2a 2a 20 57 69 74 68 20  SQLite..** With 
17da0 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45  SQLITE_ACCESS_RE
17db0 41 44 2c 20 74 68 65 20 78 41 63 63 65 73 73 20  AD, the xAccess 
17dc0 6d 65 74 68 6f 64 0a 2a 2a 20 63 68 65 63 6b 73  method.** checks
17dd0 20 77 68 65 74 68 65 72 20 74 68 65 20 66 69 6c   whether the fil
17de0 65 20 69 73 20 72 65 61 64 61 62 6c 65 2e 20 20  e is readable.  
17df0 54 68 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53  The SQLITE_ACCES
17e00 53 5f 52 45 41 44 20 63 6f 6e 73 74 61 6e 74 20  S_READ constant 
17e10 69 73 0a 2a 2a 20 63 75 72 72 65 6e 74 6c 79 20  is.** currently 
17e20 75 6e 75 73 65 64 2c 20 74 68 6f 75 67 68 20 69  unused, though i
17e30 74 20 6d 69 67 68 74 20 62 65 20 75 73 65 64 20  t might be used 
17e40 69 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c 65  in a future rele
17e50 61 73 65 20 6f 66 0a 2a 2a 20 53 51 4c 69 74 65  ase of.** SQLite
17e60 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ..*/.#define SQL
17e70 49 54 45 5f 41 43 43 45 53 53 5f 45 58 49 53 54  ITE_ACCESS_EXIST
17e80 53 20 20 20 20 30 0a 23 64 65 66 69 6e 65 20 53  S    0.#define S
17e90 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41  QLITE_ACCESS_REA
17ea0 44 57 52 49 54 45 20 31 20 20 20 2f 2a 20 55 73  DWRITE 1   /* Us
17eb0 65 64 20 62 79 20 50 52 41 47 4d 41 20 74 65 6d  ed by PRAGMA tem
17ec0 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72  p_store_director
17ed0 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  y */.#define SQL
17ee0 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 20  ITE_ACCESS_READ 
17ef0 20 20 20 20 20 32 20 20 20 2f 2a 20 55 6e 75 73       2   /* Unus
17f00 65 64 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ed */../*.** CAP
17f10 49 33 52 45 46 3a 20 46 6c 61 67 73 20 66 6f 72  I3REF: Flags for
17f20 20 74 68 65 20 78 53 68 6d 4c 6f 63 6b 20 56 46   the xShmLock VF
17f30 53 20 6d 65 74 68 6f 64 0a 2a 2a 0a 2a 2a 20 54  S method.**.** T
17f40 68 65 73 65 20 69 6e 74 65 67 65 72 20 63 6f 6e  hese integer con
17f50 73 74 61 6e 74 73 20 64 65 66 69 6e 65 20 74 68  stants define th
17f60 65 20 76 61 72 69 6f 75 73 20 6c 6f 63 6b 69 6e  e various lockin
17f70 67 20 6f 70 65 72 61 74 69 6f 6e 73 0a 2a 2a 20  g operations.** 
17f80 61 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 20 78  allowed by the x
17f90 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f  ShmLock method o
17fa0 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  f [sqlite3_io_me
17fb0 74 68 6f 64 73 5d 2e 20 20 54 68 65 0a 2a 2a 20  thods].  The.** 
17fc0 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 74 68  following are th
17fd0 65 20 6f 6e 6c 79 20 6c 65 67 61 6c 20 63 6f 6d  e only legal com
17fe0 62 69 6e 61 74 69 6f 6e 73 20 6f 66 20 66 6c 61  binations of fla
17ff0 67 73 20 74 6f 20 74 68 65 0a 2a 2a 20 78 53 68  gs to the.** xSh
18000 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 3a 0a 2a 2a  mLock method:.**
18010 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e  .** <ul>.** <li>
18020 20 20 53 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43    SQLITE_SHM_LOC
18030 4b 20 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53  K | SQLITE_SHM_S
18040 48 41 52 45 44 0a 2a 2a 20 3c 6c 69 3e 20 20 53  HARED.** <li>  S
18050 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 7c  QLITE_SHM_LOCK |
18060 20 53 51 4c 49 54 45 5f 53 48 4d 5f 45 58 43 4c   SQLITE_SHM_EXCL
18070 55 53 49 56 45 0a 2a 2a 20 3c 6c 69 3e 20 20 53  USIVE.** <li>  S
18080 51 4c 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b  QLITE_SHM_UNLOCK
18090 20 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53 48   | SQLITE_SHM_SH
180a0 41 52 45 44 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51  ARED.** <li>  SQ
180b0 4c 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b 20  LITE_SHM_UNLOCK 
180c0 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f 45 58 43  | SQLITE_SHM_EXC
180d0 4c 55 53 49 56 45 0a 2a 2a 20 3c 2f 75 6c 3e 0a  LUSIVE.** </ul>.
180e0 2a 2a 0a 2a 2a 20 57 68 65 6e 20 75 6e 6c 6f 63  **.** When unloc
180f0 6b 69 6e 67 2c 20 74 68 65 20 73 61 6d 65 20 53  king, the same S
18100 48 41 52 45 44 20 6f 72 20 45 58 43 4c 55 53 49  HARED or EXCLUSI
18110 56 45 20 66 6c 61 67 20 6d 75 73 74 20 62 65 20  VE flag must be 
18120 73 75 70 70 6c 69 65 64 20 61 73 0a 2a 2a 20 77  supplied as.** w
18130 61 73 20 67 69 76 65 6e 20 6f 6e 20 74 68 65 20  as given on the 
18140 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6c 6f  corresponding lo
18150 63 6b 2e 20 20 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ck.  .**.** The 
18160 78 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20  xShmLock method 
18170 63 61 6e 20 74 72 61 6e 73 69 74 69 6f 6e 20 62  can transition b
18180 65 74 77 65 65 6e 20 75 6e 6c 6f 63 6b 65 64 20  etween unlocked 
18190 61 6e 64 20 53 48 41 52 45 44 20 6f 72 0a 2a 2a  and SHARED or.**
181a0 20 62 65 74 77 65 65 6e 20 75 6e 6c 6f 63 6b 65   between unlocke
181b0 64 20 61 6e 64 20 45 58 43 4c 55 53 49 56 45 2e  d and EXCLUSIVE.
181c0 20 20 49 74 20 63 61 6e 6e 6f 74 20 74 72 61 6e    It cannot tran
181d0 73 69 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 53  sition between S
181e0 48 41 52 45 44 0a 2a 2a 20 61 6e 64 20 45 58 43  HARED.** and EXC
181f0 4c 55 53 49 56 45 2e 0a 2a 2f 0a 23 64 65 66 69  LUSIVE..*/.#defi
18200 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f 55 4e  ne SQLITE_SHM_UN
18210 4c 4f 43 4b 20 20 20 20 20 20 20 31 0a 23 64 65  LOCK       1.#de
18220 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f  fine SQLITE_SHM_
18230 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 32 0a 23  LOCK         2.#
18240 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48  define SQLITE_SH
18250 4d 5f 53 48 41 52 45 44 20 20 20 20 20 20 20 34  M_SHARED       4
18260 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
18270 53 48 4d 5f 45 58 43 4c 55 53 49 56 45 20 20 20  SHM_EXCLUSIVE   
18280 20 38 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52   8../*.** CAPI3R
18290 45 46 3a 20 4d 61 78 69 6d 75 6d 20 78 53 68 6d  EF: Maximum xShm
182a0 4c 6f 63 6b 20 69 6e 64 65 78 0a 2a 2a 0a 2a 2a  Lock index.**.**
182b0 20 54 68 65 20 78 53 68 6d 4c 6f 63 6b 20 6d 65   The xShmLock me
182c0 74 68 6f 64 20 6f 6e 20 5b 73 71 6c 69 74 65 33  thod on [sqlite3
182d0 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6d 61 79  _io_methods] may
182e0 20 75 73 65 20 76 61 6c 75 65 73 0a 2a 2a 20 62   use values.** b
182f0 65 74 77 65 65 6e 20 30 20 61 6e 64 20 74 68 69  etween 0 and thi
18300 73 20 75 70 70 65 72 20 62 6f 75 6e 64 20 61 73  s upper bound as
18310 20 69 74 73 20 22 6f 66 66 73 65 74 22 20 61 72   its "offset" ar
18320 67 75 6d 65 6e 74 2e 0a 2a 2a 20 54 68 65 20 53  gument..** The S
18330 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20  QLite core will 
18340 6e 65 76 65 72 20 61 74 74 65 6d 70 74 20 74 6f  never attempt to
18350 20 61 63 71 75 69 72 65 20 6f 72 20 72 65 6c 65   acquire or rele
18360 61 73 65 20 61 0a 2a 2a 20 6c 6f 63 6b 20 6f 75  ase a.** lock ou
18370 74 73 69 64 65 20 6f 66 20 74 68 69 73 20 72 61  tside of this ra
18380 6e 67 65 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nge.*/.#define S
18390 51 4c 49 54 45 5f 53 48 4d 5f 4e 4c 4f 43 4b 20  QLITE_SHM_NLOCK 
183a0 20 20 20 20 20 20 20 38 0a 0a 0a 2f 2a 0a 2a 2a         8.../*.**
183b0 20 43 41 50 49 33 52 45 46 3a 20 49 6e 69 74 69   CAPI3REF: Initi
183c0 61 6c 69 7a 65 20 54 68 65 20 53 51 4c 69 74 65  alize The SQLite
183d0 20 4c 69 62 72 61 72 79 0a 2a 2a 0a 2a 2a 20 5e   Library.**.** ^
183e0 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  The sqlite3_init
183f0 69 61 6c 69 7a 65 28 29 20 72 6f 75 74 69 6e 65  ialize() routine
18400 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65   initializes the
18410 0a 2a 2a 20 53 51 4c 69 74 65 20 6c 69 62 72 61  .** SQLite libra
18420 72 79 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65  ry.  ^The sqlite
18430 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 72 6f 75  3_shutdown() rou
18440 74 69 6e 65 0a 2a 2a 20 64 65 61 6c 6c 6f 63 61  tine.** dealloca
18450 74 65 73 20 61 6e 79 20 72 65 73 6f 75 72 63 65  tes any resource
18460 73 20 74 68 61 74 20 77 65 72 65 20 61 6c 6c 6f  s that were allo
18470 63 61 74 65 64 20 62 79 20 73 71 6c 69 74 65 33  cated by sqlite3
18480 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 2e 0a 2a  _initialize()..*
18490 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73  * These routines
184a0 20 61 72 65 20 64 65 73 69 67 6e 65 64 20 74 6f   are designed to
184b0 20 61 69 64 20 69 6e 20 70 72 6f 63 65 73 73 20   aid in process 
184c0 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 61  initialization a
184d0 6e 64 0a 2a 2a 20 73 68 75 74 64 6f 77 6e 20 6f  nd.** shutdown o
184e0 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73 74 65  n embedded syste
184f0 6d 73 2e 20 20 57 6f 72 6b 73 74 61 74 69 6f 6e  ms.  Workstation
18500 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 75 73   applications us
18510 69 6e 67 0a 2a 2a 20 53 51 4c 69 74 65 20 6e 6f  ing.** SQLite no
18520 72 6d 61 6c 6c 79 20 64 6f 20 6e 6f 74 20 6e 65  rmally do not ne
18530 65 64 20 74 6f 20 69 6e 76 6f 6b 65 20 65 69 74  ed to invoke eit
18540 68 65 72 20 6f 66 20 74 68 65 73 65 20 72 6f 75  her of these rou
18550 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 41 20 63  tines..**.** A c
18560 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 69  all to sqlite3_i
18570 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20 61  nitialize() is a
18580 6e 20 22 65 66 66 65 63 74 69 76 65 22 20 63 61  n "effective" ca
18590 6c 6c 20 69 66 20 69 74 20 69 73 0a 2a 2a 20 74  ll if it is.** t
185a0 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 73 71  he first time sq
185b0 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
185c0 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 20 64 75  () is invoked du
185d0 72 69 6e 67 20 74 68 65 20 6c 69 66 65 74 69 6d  ring the lifetim
185e0 65 20 6f 66 0a 2a 2a 20 74 68 65 20 70 72 6f 63  e of.** the proc
185f0 65 73 73 2c 20 6f 72 20 69 66 20 69 74 20 69 73  ess, or if it is
18600 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20   the first time 
18610 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
18620 7a 65 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a  ze() is invoked.
18630 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 63  ** following a c
18640 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 73  all to sqlite3_s
18650 68 75 74 64 6f 77 6e 28 29 2e 20 20 5e 28 4f 6e  hutdown().  ^(On
18660 6c 79 20 61 6e 20 65 66 66 65 63 74 69 76 65 20  ly an effective 
18670 63 61 6c 6c 0a 2a 2a 20 6f 66 20 73 71 6c 69 74  call.** of sqlit
18680 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
18690 64 6f 65 73 20 61 6e 79 20 69 6e 69 74 69 61 6c  does any initial
186a0 69 7a 61 74 69 6f 6e 2e 20 20 41 6c 6c 20 6f 74  ization.  All ot
186b0 68 65 72 20 63 61 6c 6c 73 0a 2a 2a 20 61 72 65  her calls.** are
186c0 20 68 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 73   harmless no-ops
186d0 2e 29 5e 0a 2a 2a 0a 2a 2a 20 41 20 63 61 6c 6c  .)^.**.** A call
186e0 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74   to sqlite3_shut
186f0 64 6f 77 6e 28 29 20 69 73 20 61 6e 20 22 65 66  down() is an "ef
18700 66 65 63 74 69 76 65 22 20 63 61 6c 6c 20 69 66  fective" call if
18710 20 69 74 20 69 73 20 74 68 65 20 66 69 72 73 74   it is the first
18720 0a 2a 2a 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69  .** call to sqli
18730 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 73  te3_shutdown() s
18740 69 6e 63 65 20 74 68 65 20 6c 61 73 74 20 73 71  ince the last sq
18750 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
18760 28 29 2e 20 20 5e 28 4f 6e 6c 79 0a 2a 2a 20 61  ().  ^(Only.** a
18770 6e 20 65 66 66 65 63 74 69 76 65 20 63 61 6c 6c  n effective call
18780 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74   to sqlite3_shut
18790 64 6f 77 6e 28 29 20 64 6f 65 73 20 61 6e 79 20  down() does any 
187a0 64 65 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e  deinitialization
187b0 2e 0a 2a 2a 20 41 6c 6c 20 6f 74 68 65 72 20 76  ..** All other v
187c0 61 6c 69 64 20 63 61 6c 6c 73 20 74 6f 20 73 71  alid calls to sq
187d0 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
187e0 20 61 72 65 20 68 61 72 6d 6c 65 73 73 20 6e 6f   are harmless no
187f0 2d 6f 70 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68  -ops.)^.**.** Th
18800 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  e sqlite3_initia
18810 6c 69 7a 65 28 29 20 69 6e 74 65 72 66 61 63 65  lize() interface
18820 20 69 73 20 74 68 72 65 61 64 73 61 66 65 2c 20   is threadsafe, 
18830 62 75 74 20 73 71 6c 69 74 65 33 5f 73 68 75 74  but sqlite3_shut
18840 64 6f 77 6e 28 29 0a 2a 2a 20 69 73 20 6e 6f 74  down().** is not
18850 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 73  .  The sqlite3_s
18860 68 75 74 64 6f 77 6e 28 29 20 69 6e 74 65 72 66  hutdown() interf
18870 61 63 65 20 6d 75 73 74 20 6f 6e 6c 79 20 62 65  ace must only be
18880 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 61 0a 2a   called from a.*
18890 2a 20 73 69 6e 67 6c 65 20 74 68 72 65 61 64 2e  * single thread.
188a0 20 20 41 6c 6c 20 6f 70 65 6e 20 5b 64 61 74 61    All open [data
188b0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
188c0 5d 20 6d 75 73 74 20 62 65 20 63 6c 6f 73 65 64  ] must be closed
188d0 20 61 6e 64 20 61 6c 6c 0a 2a 2a 20 6f 74 68 65   and all.** othe
188e0 72 20 53 51 4c 69 74 65 20 72 65 73 6f 75 72 63  r SQLite resourc
188f0 65 73 20 6d 75 73 74 20 62 65 20 64 65 61 6c 6c  es must be deall
18900 6f 63 61 74 65 64 20 70 72 69 6f 72 20 74 6f 20  ocated prior to 
18910 69 6e 76 6f 6b 69 6e 67 0a 2a 2a 20 73 71 6c 69  invoking.** sqli
18920 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e 0a  te3_shutdown()..
18930 2a 2a 0a 2a 2a 20 41 6d 6f 6e 67 20 6f 74 68 65  **.** Among othe
18940 72 20 74 68 69 6e 67 73 2c 20 5e 73 71 6c 69 74  r things, ^sqlit
18950 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
18960 77 69 6c 6c 20 69 6e 76 6f 6b 65 0a 2a 2a 20 73  will invoke.** s
18970 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
18980 2e 20 20 53 69 6d 69 6c 61 72 6c 79 2c 20 5e 73  .  Similarly, ^s
18990 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
189a0 29 0a 2a 2a 20 77 69 6c 6c 20 69 6e 76 6f 6b 65  ).** will invoke
189b0 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28   sqlite3_os_end(
189c0 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  )..**.** ^The sq
189d0 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
189e0 28 29 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72  () routine retur
189f0 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f  ns [SQLITE_OK] o
18a00 6e 20 73 75 63 63 65 73 73 2e 0a 2a 2a 20 5e 49  n success..** ^I
18a10 66 20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f  f for some reaso
18a20 6e 2c 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  n, sqlite3_initi
18a30 61 6c 69 7a 65 28 29 20 69 73 20 75 6e 61 62 6c  alize() is unabl
18a40 65 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 0a  e to initialize.
18a50 2a 2a 20 74 68 65 20 6c 69 62 72 61 72 79 20 28  ** the library (
18a60 70 65 72 68 61 70 73 20 69 74 20 69 73 20 75 6e  perhaps it is un
18a70 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65  able to allocate
18a80 20 61 20 6e 65 65 64 65 64 20 72 65 73 6f 75 72   a needed resour
18a90 63 65 20 73 75 63 68 0a 2a 2a 20 61 73 20 61 20  ce such.** as a 
18aa0 6d 75 74 65 78 29 20 69 74 20 72 65 74 75 72 6e  mutex) it return
18ab0 73 20 61 6e 20 5b 65 72 72 6f 72 20 63 6f 64 65  s an [error code
18ac0 5d 20 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51  ] other than [SQ
18ad0 4c 49 54 45 5f 4f 4b 5d 2e 0a 2a 2a 0a 2a 2a 20  LITE_OK]..**.** 
18ae0 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 69  ^The sqlite3_ini
18af0 74 69 61 6c 69 7a 65 28 29 20 72 6f 75 74 69 6e  tialize() routin
18b00 65 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 74 65  e is called inte
18b10 72 6e 61 6c 6c 79 20 62 79 20 6d 61 6e 79 20 6f  rnally by many o
18b20 74 68 65 72 0a 2a 2a 20 53 51 4c 69 74 65 20 69  ther.** SQLite i
18b30 6e 74 65 72 66 61 63 65 73 20 73 6f 20 74 68 61  nterfaces so tha
18b40 74 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  t an application
18b50 20 75 73 75 61 6c 6c 79 20 64 6f 65 73 20 6e 6f   usually does no
18b60 74 20 6e 65 65 64 20 74 6f 0a 2a 2a 20 69 6e 76  t need to.** inv
18b70 6f 6b 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  oke sqlite3_init
18b80 69 61 6c 69 7a 65 28 29 20 64 69 72 65 63 74 6c  ialize() directl
18b90 79 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c  y.  For example,
18ba0 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29   [sqlite3_open()
18bb0 5d 0a 2a 2a 20 63 61 6c 6c 73 20 73 71 6c 69 74  ].** calls sqlit
18bc0 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
18bd0 73 6f 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  so the SQLite li
18be0 62 72 61 72 79 20 77 69 6c 6c 20 62 65 20 61 75  brary will be au
18bf0 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 2a 2a 20 69  tomatically.** i
18c00 6e 69 74 69 61 6c 69 7a 65 64 20 77 68 65 6e 20  nitialized when 
18c10 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
18c20 20 69 73 20 63 61 6c 6c 65 64 20 69 66 20 69 74   is called if it
18c30 20 68 61 73 20 6e 6f 74 20 62 65 20 69 6e 69 74   has not be init
18c40 69 61 6c 69 7a 65 64 0a 2a 2a 20 61 6c 72 65 61  ialized.** alrea
18c50 64 79 2e 20 20 5e 48 6f 77 65 76 65 72 2c 20 69  dy.  ^However, i
18c60 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  f SQLite is comp
18c70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 5b 53  iled with the [S
18c80 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49  QLITE_OMIT_AUTOI
18c90 4e 49 54 5d 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d  NIT].** compile-
18ca0 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65  time option, the
18cb0 6e 20 74 68 65 20 61 75 74 6f 6d 61 74 69 63 20  n the automatic 
18cc0 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33  calls to sqlite3
18cd0 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 0a 2a 2a  _initialize().**
18ce0 20 61 72 65 20 6f 6d 69 74 74 65 64 20 61 6e 64   are omitted and
18cf0 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
18d00 20 6d 75 73 74 20 63 61 6c 6c 20 73 71 6c 69 74   must call sqlit
18d10 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
18d20 64 69 72 65 63 74 6c 79 0a 2a 2a 20 70 72 69 6f  directly.** prio
18d30 72 20 74 6f 20 75 73 69 6e 67 20 61 6e 79 20 6f  r to using any o
18d40 74 68 65 72 20 53 51 4c 69 74 65 20 69 6e 74 65  ther SQLite inte
18d50 72 66 61 63 65 2e 20 20 46 6f 72 20 6d 61 78 69  rface.  For maxi
18d60 6d 75 6d 20 70 6f 72 74 61 62 69 6c 69 74 79 2c  mum portability,
18d70 0a 2a 2a 20 69 74 20 69 73 20 72 65 63 6f 6d 6d  .** it is recomm
18d80 65 6e 64 65 64 20 74 68 61 74 20 61 70 70 6c 69  ended that appli
18d90 63 61 74 69 6f 6e 73 20 61 6c 77 61 79 73 20 69  cations always i
18da0 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f 69 6e  nvoke sqlite3_in
18db0 69 74 69 61 6c 69 7a 65 28 29 0a 2a 2a 20 64 69  itialize().** di
18dc0 72 65 63 74 6c 79 20 70 72 69 6f 72 20 74 6f 20  rectly prior to 
18dd0 75 73 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20  using any other 
18de0 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65  SQLite interface
18df0 2e 20 20 46 75 74 75 72 65 20 72 65 6c 65 61 73  .  Future releas
18e00 65 73 0a 2a 2a 20 6f 66 20 53 51 4c 69 74 65 20  es.** of SQLite 
18e10 6d 61 79 20 72 65 71 75 69 72 65 20 74 68 69 73  may require this
18e20 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  .  In other word
18e30 73 2c 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  s, the behavior 
18e40 65 78 68 69 62 69 74 65 64 0a 2a 2a 20 77 68 65  exhibited.** whe
18e50 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  n SQLite is comp
18e60 69 6c 65 64 20 77 69 74 68 20 5b 53 51 4c 49 54  iled with [SQLIT
18e70 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 5d  E_OMIT_AUTOINIT]
18e80 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20 74 68   might become th
18e90 65 0a 2a 2a 20 64 65 66 61 75 6c 74 20 62 65 68  e.** default beh
18ea0 61 76 69 6f 72 20 69 6e 20 73 6f 6d 65 20 66 75  avior in some fu
18eb0 74 75 72 65 20 72 65 6c 65 61 73 65 20 6f 66 20  ture release of 
18ec0 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 54 68  SQLite..**.** Th
18ed0 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69  e sqlite3_os_ini
18ee0 74 28 29 20 72 6f 75 74 69 6e 65 20 64 6f 65 73  t() routine does
18ef0 20 6f 70 65 72 61 74 69 6e 67 2d 73 79 73 74 65   operating-syste
18f00 6d 20 73 70 65 63 69 66 69 63 0a 2a 2a 20 69 6e  m specific.** in
18f10 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20  itialization of 
18f20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
18f30 72 79 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33  ry.  The sqlite3
18f40 5f 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20 72 6f 75  _os_end().** rou
18f50 74 69 6e 65 20 75 6e 64 6f 65 73 20 74 68 65 20  tine undoes the 
18f60 65 66 66 65 63 74 20 6f 66 20 73 71 6c 69 74 65  effect of sqlite
18f70 33 5f 6f 73 5f 69 6e 69 74 28 29 2e 20 20 54 79  3_os_init().  Ty
18f80 70 69 63 61 6c 20 74 61 73 6b 73 0a 2a 2a 20 70  pical tasks.** p
18f90 65 72 66 6f 72 6d 65 64 20 62 79 20 74 68 65 73  erformed by thes
18fa0 65 20 72 6f 75 74 69 6e 65 73 20 69 6e 63 6c 75  e routines inclu
18fb0 64 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 72  de allocation or
18fc0 20 64 65 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a   deallocation.**
18fd0 20 6f 66 20 73 74 61 74 69 63 20 72 65 73 6f 75   of static resou
18fe0 72 63 65 73 2c 20 69 6e 69 74 69 61 6c 69 7a 61  rces, initializa
18ff0 74 69 6f 6e 20 6f 66 20 67 6c 6f 62 61 6c 20 76  tion of global v
19000 61 72 69 61 62 6c 65 73 2c 0a 2a 2a 20 73 65 74  ariables,.** set
19010 74 69 6e 67 20 75 70 20 61 20 64 65 66 61 75 6c  ting up a defaul
19020 74 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20  t [sqlite3_vfs] 
19030 6d 6f 64 75 6c 65 2c 20 6f 72 20 73 65 74 74 69  module, or setti
19040 6e 67 20 75 70 0a 2a 2a 20 61 20 64 65 66 61 75  ng up.** a defau
19050 6c 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  lt configuration
19060 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
19070 63 6f 6e 66 69 67 28 29 5d 2e 0a 2a 2a 0a 2a 2a  config()]..**.**
19080 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   The application
19090 20 73 68 6f 75 6c 64 20 6e 65 76 65 72 20 69 6e   should never in
190a0 76 6f 6b 65 20 65 69 74 68 65 72 20 73 71 6c 69  voke either sqli
190b0 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 0a 2a 2a  te3_os_init().**
190c0 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65   or sqlite3_os_e
190d0 6e 64 28 29 20 64 69 72 65 63 74 6c 79 2e 20 20  nd() directly.  
190e0 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  The application 
190f0 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 69 6e 76 6f  should only invo
19100 6b 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 69 6e  ke.** sqlite3_in
19110 69 74 69 61 6c 69 7a 65 28 29 20 61 6e 64 20 73  itialize() and s
19120 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
19130 29 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f  ).  The sqlite3_
19140 6f 73 5f 69 6e 69 74 28 29 0a 2a 2a 20 69 6e 74  os_init().** int
19150 65 72 66 61 63 65 20 69 73 20 63 61 6c 6c 65 64  erface is called
19160 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
19170 79 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  y sqlite3_initia
19180 6c 69 7a 65 28 29 20 61 6e 64 0a 2a 2a 20 73 71  lize() and.** sq
19190 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 20 69  lite3_os_end() i
191a0 73 20 63 61 6c 6c 65 64 20 62 79 20 73 71 6c 69  s called by sqli
191b0 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e 20  te3_shutdown(). 
191c0 20 41 70 70 72 6f 70 72 69 61 74 65 0a 2a 2a 20   Appropriate.** 
191d0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
191e0 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69  for sqlite3_os_i
191f0 6e 69 74 28 29 20 61 6e 64 20 73 71 6c 69 74 65  nit() and sqlite
19200 33 5f 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20 61 72  3_os_end().** ar
19210 65 20 62 75 69 6c 74 20 69 6e 74 6f 20 53 51 4c  e built into SQL
19220 69 74 65 20 77 68 65 6e 20 69 74 20 69 73 20 63  ite when it is c
19230 6f 6d 70 69 6c 65 64 20 66 6f 72 20 55 6e 69 78  ompiled for Unix
19240 2c 20 57 69 6e 64 6f 77 73 2c 20 6f 72 20 4f 53  , Windows, or OS
19250 2f 32 2e 0a 2a 2a 20 57 68 65 6e 20 5b 63 75 73  /2..** When [cus
19260 74 6f 6d 20 62 75 69 6c 64 73 20 7c 20 62 75 69  tom builds | bui
19270 6c 74 20 66 6f 72 20 6f 74 68 65 72 20 70 6c 61  lt for other pla
19280 74 66 6f 72 6d 73 5d 0a 2a 2a 20 28 75 73 69 6e  tforms].** (usin
19290 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 53  g the [SQLITE_OS
192a0 5f 4f 54 48 45 52 3d 31 5d 20 63 6f 6d 70 69 6c  _OTHER=1] compil
192b0 65 2d 74 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f 6e  e-time.** option
192c0 29 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  ) the applicatio
192d0 6e 20 6d 75 73 74 20 73 75 70 70 6c 79 20 61 20  n must supply a 
192e0 73 75 69 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65  suitable impleme
192f0 6e 74 61 74 69 6f 6e 20 66 6f 72 0a 2a 2a 20 73  ntation for.** s
19300 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
19310 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 73 5f   and sqlite3_os_
19320 65 6e 64 28 29 2e 20 20 41 6e 20 61 70 70 6c 69  end().  An appli
19330 63 61 74 69 6f 6e 2d 73 75 70 70 6c 69 65 64 0a  cation-supplied.
19340 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ** implementatio
19350 6e 20 6f 66 20 73 71 6c 69 74 65 33 5f 6f 73 5f  n of sqlite3_os_
19360 69 6e 69 74 28 29 20 6f 72 20 73 71 6c 69 74 65  init() or sqlite
19370 33 5f 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20 6d 75  3_os_end().** mu
19380 73 74 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  st return [SQLIT
19390 45 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63 65 73 73  E_OK] on success
193a0 20 61 6e 64 20 73 6f 6d 65 20 6f 74 68 65 72 20   and some other 
193b0 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 75 70 6f  [error code] upo
193c0 6e 0a 2a 2a 20 66 61 69 6c 75 72 65 2e 0a 2a 2f  n.** failure..*/
193d0 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
193e0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
193f0 7a 65 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45  ze(void);.SQLITE
19400 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
19410 5f 73 68 75 74 64 6f 77 6e 28 76 6f 69 64 29 3b  _shutdown(void);
19420 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
19430 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28  sqlite3_os_init(
19440 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50  void);.SQLITE_AP
19450 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 73  I int sqlite3_os
19460 5f 65 6e 64 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a  _end(void);../*.
19470 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e  ** CAPI3REF: Con
19480 66 69 67 75 72 69 6e 67 20 54 68 65 20 53 51 4c  figuring The SQL
19490 69 74 65 20 4c 69 62 72 61 72 79 0a 2a 2a 0a 2a  ite Library.**.*
194a0 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6f  * The sqlite3_co
194b0 6e 66 69 67 28 29 20 69 6e 74 65 72 66 61 63 65  nfig() interface
194c0 20 69 73 20 75 73 65 64 20 74 6f 20 6d 61 6b 65   is used to make
194d0 20 67 6c 6f 62 61 6c 20 63 6f 6e 66 69 67 75 72   global configur
194e0 61 74 69 6f 6e 0a 2a 2a 20 63 68 61 6e 67 65 73  ation.** changes
194f0 20 74 6f 20 53 51 4c 69 74 65 20 69 6e 20 6f 72   to SQLite in or
19500 64 65 72 20 74 6f 20 74 75 6e 65 20 53 51 4c 69  der to tune SQLi
19510 74 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  te to the specif
19520 69 63 20 6e 65 65 64 73 20 6f 66 0a 2a 2a 20 74  ic needs of.** t
19530 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20  he application. 
19540 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6e   The default con
19550 66 69 67 75 72 61 74 69 6f 6e 20 69 73 20 72 65  figuration is re
19560 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 6d 6f  commended for mo
19570 73 74 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f  st.** applicatio
19580 6e 73 20 61 6e 64 20 73 6f 20 74 68 69 73 20 72  ns and so this r
19590 6f 75 74 69 6e 65 20 69 73 20 75 73 75 61 6c 6c  outine is usuall
195a0 79 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 2e  y not necessary.
195b0 20 20 49 74 20 69 73 0a 2a 2a 20 70 72 6f 76 69    It is.** provi
195c0 64 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20 72  ded to support r
195d0 61 72 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  are applications
195e0 20 77 69 74 68 20 75 6e 75 73 75 61 6c 20 6e 65   with unusual ne
195f0 65 64 73 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 54 68  eds..**.** <b>Th
19600 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
19610 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  () interface is 
19620 6e 6f 74 20 74 68 72 65 61 64 73 61 66 65 2e 20  not threadsafe. 
19630 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a  The application.
19640 2a 2a 20 6d 75 73 74 20 65 6e 73 75 72 65 20 74  ** must ensure t
19650 68 61 74 20 6e 6f 20 6f 74 68 65 72 20 53 51 4c  hat no other SQL
19660 69 74 65 20 69 6e 74 65 72 66 61 63 65 73 20 61  ite interfaces a
19670 72 65 20 69 6e 76 6f 6b 65 64 20 62 79 20 6f 74  re invoked by ot
19680 68 65 72 0a 2a 2a 20 74 68 72 65 61 64 73 20 77  her.** threads w
19690 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e  hile sqlite3_con
196a0 66 69 67 28 29 20 69 73 20 72 75 6e 6e 69 6e 67  fig() is running
196b0 2e 3c 2f 62 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  .</b>.**.** The 
196c0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
196d0 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 6d 61   interface.** ma
196e0 79 20 6f 6e 6c 79 20 62 65 20 69 6e 76 6f 6b 65  y only be invoke
196f0 64 20 70 72 69 6f 72 20 74 6f 20 6c 69 62 72 61  d prior to libra
19700 72 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  ry initializatio
19710 6e 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69  n using.** [sqli
19720 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
19730 5d 20 6f 72 20 61 66 74 65 72 20 73 68 75 74 64  ] or after shutd
19740 6f 77 6e 20 62 79 20 5b 73 71 6c 69 74 65 33 5f  own by [sqlite3_
19750 73 68 75 74 64 6f 77 6e 28 29 5d 2e 0a 2a 2a 20  shutdown()]..** 
19760 5e 49 66 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ^If sqlite3_conf
19770 69 67 28 29 20 69 73 20 63 61 6c 6c 65 64 20 61  ig() is called a
19780 66 74 65 72 20 5b 73 71 6c 69 74 65 33 5f 69 6e  fter [sqlite3_in
19790 69 74 69 61 6c 69 7a 65 28 29 5d 20 61 6e 64 20  itialize()] and 
197a0 62 65 66 6f 72 65 0a 2a 2a 20 5b 73 71 6c 69 74  before.** [sqlit
197b0 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d 20 74  e3_shutdown()] t
197c0 68 65 6e 20 69 74 20 77 69 6c 6c 20 72 65 74 75  hen it will retu
197d0 72 6e 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45  rn SQLITE_MISUSE
197e0 2e 0a 2a 2a 20 4e 6f 74 65 2c 20 68 6f 77 65 76  ..** Note, howev
197f0 65 72 2c 20 74 68 61 74 20 5e 73 71 6c 69 74 65  er, that ^sqlite
19800 33 5f 63 6f 6e 66 69 67 28 29 20 63 61 6e 20 62  3_config() can b
19810 65 20 63 61 6c 6c 65 64 20 61 73 20 70 61 72 74  e called as part
19820 20 6f 66 20 74 68 65 0a 2a 2a 20 69 6d 70 6c 65   of the.** imple
19830 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20  mentation of an 
19840 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
19850 6e 65 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  ned [sqlite3_os_
19860 69 6e 69 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54  init()]..**.** T
19870 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
19880 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 63 6f 6e  t to sqlite3_con
19890 66 69 67 28 29 20 69 73 20 61 6e 20 69 6e 74 65  fig() is an inte
198a0 67 65 72 0a 2a 2a 20 5b 63 6f 6e 66 69 67 75 72  ger.** [configur
198b0 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 5d 20 74 68  ation option] th
198c0 61 74 20 64 65 74 65 72 6d 69 6e 65 73 0a 2a 2a  at determines.**
198d0 20 77 68 61 74 20 70 72 6f 70 65 72 74 79 20 6f   what property o
198e0 66 20 53 51 4c 69 74 65 20 69 73 20 74 6f 20 62  f SQLite is to b
198f0 65 20 63 6f 6e 66 69 67 75 72 65 64 2e 20 20 53  e configured.  S
19900 75 62 73 65 71 75 65 6e 74 20 61 72 67 75 6d 65  ubsequent argume
19910 6e 74 73 0a 2a 2a 20 76 61 72 79 20 64 65 70 65  nts.** vary depe
19920 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 5b 63 6f  nding on the [co
19930 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
19940 6f 6e 5d 0a 2a 2a 20 69 6e 20 74 68 65 20 66 69  on].** in the fi
19950 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a  rst argument..**
19960 0a 2a 2a 20 5e 57 68 65 6e 20 61 20 63 6f 6e 66  .** ^When a conf
19970 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
19980 20 69 73 20 73 65 74 2c 20 73 71 6c 69 74 65 33   is set, sqlite3
19990 5f 63 6f 6e 66 69 67 28 29 20 72 65 74 75 72 6e  _config() return
199a0 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2e 0a 2a  s [SQLITE_OK]..*
199b0 2a 20 5e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e  * ^If the option
199c0 20 69 73 20 75 6e 6b 6e 6f 77 6e 20 6f 72 20 53   is unknown or S
199d0 51 4c 69 74 65 20 69 73 20 75 6e 61 62 6c 65 20  QLite is unable 
199e0 74 6f 20 73 65 74 20 74 68 65 20 6f 70 74 69 6f  to set the optio
199f0 6e 0a 2a 2a 20 74 68 65 6e 20 74 68 69 73 20 72  n.** then this r
19a00 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 61  outine returns a
19a10 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72   non-zero [error
19a20 20 63 6f 64 65 5d 2e 0a 2a 2f 0a 53 51 4c 49 54   code]..*/.SQLIT
19a30 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
19a40 33 5f 63 6f 6e 66 69 67 28 69 6e 74 2c 20 2e 2e  3_config(int, ..
19a50 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  .);../*.** CAPI3
19a60 52 45 46 3a 20 43 6f 6e 66 69 67 75 72 65 20 64  REF: Configure d
19a70 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
19a80 6f 6e 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  ons.** METHOD: s
19a90 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65  qlite3.**.** The
19aa0 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66   sqlite3_db_conf
19ab0 69 67 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  ig() interface i
19ac0 73 20 75 73 65 64 20 74 6f 20 6d 61 6b 65 20 63  s used to make c
19ad0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 2a 2a 20  onfiguration.** 
19ae0 63 68 61 6e 67 65 73 20 74 6f 20 61 20 5b 64 61  changes to a [da
19af0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
19b00 6e 5d 2e 20 20 54 68 65 20 69 6e 74 65 72 66 61  n].  The interfa
19b10 63 65 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f  ce is similar to
19b20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  .** [sqlite3_con
19b30 66 69 67 28 29 5d 20 65 78 63 65 70 74 20 74 68  fig()] except th
19b40 61 74 20 74 68 65 20 63 68 61 6e 67 65 73 20 61  at the changes a
19b50 70 70 6c 79 20 74 6f 20 61 20 73 69 6e 67 6c 65  pply to a single
19b60 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f  .** [database co
19b70 6e 6e 65 63 74 69 6f 6e 5d 20 28 73 70 65 63 69  nnection] (speci
19b80 66 69 65 64 20 69 6e 20 74 68 65 20 66 69 72 73  fied in the firs
19b90 74 20 61 72 67 75 6d 65 6e 74 29 2e 0a 2a 2a 0a  t argument)..**.
19ba0 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72  ** The second ar
19bb0 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65  gument to sqlite
19bc0 33 5f 64 62 5f 63 6f 6e 66 69 67 28 44 2c 56 2c  3_db_config(D,V,
19bd0 2e 2e 2e 29 20 20 69 73 20 74 68 65 0a 2a 2a 20  ...)  is the.** 
19be0 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  [SQLITE_DBCONFIG
19bf0 5f 4c 4f 4f 4b 41 53 49 44 45 20 7c 20 63 6f 6e  _LOOKASIDE | con
19c00 66 69 67 75 72 61 74 69 6f 6e 20 76 65 72 62 5d  figuration verb]
19c10 20 2d 20 61 6e 20 69 6e 74 65 67 65 72 20 63 6f   - an integer co
19c20 64 65 20 0a 2a 2a 20 74 68 61 74 20 69 6e 64 69  de .** that indi
19c30 63 61 74 65 73 20 77 68 61 74 20 61 73 70 65 63  cates what aspec
19c40 74 20 6f 66 20 74 68 65 20 5b 64 61 74 61 62 61  t of the [databa
19c50 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 69  se connection] i
19c60 73 20 62 65 69 6e 67 20 63 6f 6e 66 69 67 75 72  s being configur
19c70 65 64 2e 0a 2a 2a 20 53 75 62 73 65 71 75 65 6e  ed..** Subsequen
19c80 74 20 61 72 67 75 6d 65 6e 74 73 20 76 61 72 79  t arguments vary
19c90 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68   depending on th
19ca0 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  e configuration 
19cb0 76 65 72 62 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c  verb..**.** ^Cal
19cc0 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 62  ls to sqlite3_db
19cd0 5f 63 6f 6e 66 69 67 28 29 20 72 65 74 75 72 6e  _config() return
19ce0 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66 20 61 6e   SQLITE_OK if an
19cf0 64 20 6f 6e 6c 79 20 69 66 0a 2a 2a 20 74 68 65  d only if.** the
19d00 20 63 61 6c 6c 20 69 73 20 63 6f 6e 73 69 64 65   call is conside
19d10 72 65 64 20 73 75 63 63 65 73 73 66 75 6c 2e 0a  red successful..
19d20 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
19d30 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e  t sqlite3_db_con
19d40 66 69 67 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e  fig(sqlite3*, in
19d50 74 20 6f 70 2c 20 2e 2e 2e 29 3b 0a 0a 2f 2a 0a  t op, ...);../*.
19d60 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 65 6d  ** CAPI3REF: Mem
19d70 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 52  ory Allocation R
19d80 6f 75 74 69 6e 65 73 0a 2a 2a 0a 2a 2a 20 41 6e  outines.**.** An
19d90 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
19da0 73 20 6f 62 6a 65 63 74 20 64 65 66 69 6e 65 73  s object defines
19db0 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 62   the interface b
19dc0 65 74 77 65 65 6e 20 53 51 4c 69 74 65 0a 2a 2a  etween SQLite.**
19dd0 20 61 6e 64 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d   and low-level m
19de0 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
19df0 20 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a   routines..**.**
19e00 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20   This object is 
19e10 75 73 65 64 20 69 6e 20 6f 6e 6c 79 20 6f 6e 65  used in only one
19e20 20 70 6c 61 63 65 20 69 6e 20 74 68 65 20 53 51   place in the SQ
19e30 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e 0a  Lite interface..
19e40 2a 2a 20 41 20 70 6f 69 6e 74 65 72 20 74 6f 20  ** A pointer to 
19e50 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
19e60 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 74 68  his object is th
19e70 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a  e argument to.**
19e80 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
19e90 28 29 5d 20 77 68 65 6e 20 74 68 65 20 63 6f 6e  ()] when the con
19ea0 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
19eb0 6e 20 69 73 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  n is.** [SQLITE_
19ec0 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 6f  CONFIG_MALLOC] o
19ed0 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  r [SQLITE_CONFIG
19ee0 5f 47 45 54 4d 41 4c 4c 4f 43 5d 2e 20 20 0a 2a  _GETMALLOC].  .*
19ef0 2a 20 42 79 20 63 72 65 61 74 69 6e 67 20 61 6e  * By creating an
19f00 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
19f10 73 20 6f 62 6a 65 63 74 0a 2a 2a 20 61 6e 64 20  s object.** and 
19f20 70 61 73 73 69 6e 67 20 69 74 20 74 6f 20 5b 73  passing it to [s
19f30 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b  qlite3_config]([
19f40 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41  SQLITE_CONFIG_MA
19f50 4c 4c 4f 43 5d 29 0a 2a 2a 20 64 75 72 69 6e 67  LLOC]).** during
19f60 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20   configuration, 
19f70 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63  an application c
19f80 61 6e 20 73 70 65 63 69 66 79 20 61 6e 20 61 6c  an specify an al
19f90 74 65 72 6e 61 74 69 76 65 0a 2a 2a 20 6d 65 6d  ternative.** mem
19fa0 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73  ory allocation s
19fb0 75 62 73 79 73 74 65 6d 20 66 6f 72 20 53 51 4c  ubsystem for SQL
19fc0 69 74 65 20 74 6f 20 75 73 65 20 66 6f 72 20 61  ite to use for a
19fd0 6c 6c 20 6f 66 20 69 74 73 0a 2a 2a 20 64 79 6e  ll of its.** dyn
19fe0 61 6d 69 63 20 6d 65 6d 6f 72 79 20 6e 65 65 64  amic memory need
19ff0 73 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68  s..**.** Note th
1a000 61 74 20 53 51 4c 69 74 65 20 63 6f 6d 65 73 20  at SQLite comes 
1a010 77 69 74 68 20 73 65 76 65 72 61 6c 20 5b 62 75  with several [bu
1a020 69 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c  ilt-in memory al
1a030 6c 6f 63 61 74 6f 72 73 5d 0a 2a 2a 20 74 68 61  locators].** tha
1a040 74 20 61 72 65 20 70 65 72 66 65 63 74 6c 79 20  t are perfectly 
1a050 61 64 65 71 75 61 74 65 20 66 6f 72 20 74 68 65  adequate for the
1a060 20 6f 76 65 72 77 68 65 6c 6d 69 6e 67 20 6d 61   overwhelming ma
1a070 6a 6f 72 69 74 79 20 6f 66 20 61 70 70 6c 69 63  jority of applic
1a080 61 74 69 6f 6e 73 0a 2a 2a 20 61 6e 64 20 74 68  ations.** and th
1a090 61 74 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  at this object i
1a0a0 73 20 6f 6e 6c 79 20 75 73 65 66 75 6c 20 74 6f  s only useful to
1a0b0 20 61 20 74 69 6e 79 20 6d 69 6e 6f 72 69 74 79   a tiny minority
1a0c0 20 6f 66 20 61 70 70 6c 69 63 61 74 69 6f 6e 73   of applications
1a0d0 0a 2a 2a 20 77 69 74 68 20 73 70 65 63 69 61 6c  .** with special
1a0e0 69 7a 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ized memory allo
1a0f0 63 61 74 69 6f 6e 20 72 65 71 75 69 72 65 6d 65  cation requireme
1a100 6e 74 73 2e 20 20 54 68 69 73 20 6f 62 6a 65 63  nts.  This objec
1a110 74 20 69 73 0a 2a 2a 20 61 6c 73 6f 20 75 73 65  t is.** also use
1a120 64 20 64 75 72 69 6e 67 20 74 65 73 74 69 6e 67  d during testing
1a130 20 6f 66 20 53 51 4c 69 74 65 20 69 6e 20 6f 72   of SQLite in or
1a140 64 65 72 20 74 6f 20 73 70 65 63 69 66 79 20 61  der to specify a
1a150 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 2a 2a  n alternative.**
1a160 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
1a170 72 20 74 68 61 74 20 73 69 6d 75 6c 61 74 65 73  r that simulates
1a180 20 6d 65 6d 6f 72 79 20 6f 75 74 2d 6f 66 2d 6d   memory out-of-m
1a190 65 6d 6f 72 79 20 63 6f 6e 64 69 74 69 6f 6e 73  emory conditions
1a1a0 20 69 6e 0a 2a 2a 20 6f 72 64 65 72 20 74 6f 20   in.** order to 
1a1b0 76 65 72 69 66 79 20 74 68 61 74 20 53 51 4c 69  verify that SQLi
1a1c0 74 65 20 72 65 63 6f 76 65 72 73 20 67 72 61 63  te recovers grac
1a1d0 65 66 75 6c 6c 79 20 66 72 6f 6d 20 73 75 63 68  efully from such
1a1e0 0a 2a 2a 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a  .** conditions..
1a1f0 2a 2a 0a 2a 2a 20 54 68 65 20 78 4d 61 6c 6c 6f  **.** The xMallo
1a200 63 2c 20 78 52 65 61 6c 6c 6f 63 2c 20 61 6e 64  c, xRealloc, and
1a210 20 78 46 72 65 65 20 6d 65 74 68 6f 64 73 20 6d   xFree methods m
1a220 75 73 74 20 77 6f 72 6b 20 6c 69 6b 65 20 74 68  ust work like th
1a230 65 0a 2a 2a 20 6d 61 6c 6c 6f 63 28 29 2c 20 72  e.** malloc(), r
1a240 65 61 6c 6c 6f 63 28 29 20 61 6e 64 20 66 72 65  ealloc() and fre
1a250 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 20 66 72  e() functions fr
1a260 6f 6d 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  om the standard 
1a270 43 20 6c 69 62 72 61 72 79 2e 0a 2a 2a 20 5e 53  C library..** ^S
1a280 51 4c 69 74 65 20 67 75 61 72 61 6e 74 65 65 73  QLite guarantees
1a290 20 74 68 61 74 20 74 68 65 20 73 65 63 6f 6e 64   that the second
1a2a0 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20   argument to.** 
1a2b0 78 52 65 61 6c 6c 6f 63 20 69 73 20 61 6c 77 61  xRealloc is alwa
1a2c0 79 73 20 61 20 76 61 6c 75 65 20 72 65 74 75 72  ys a value retur
1a2d0 6e 65 64 20 62 79 20 61 20 70 72 69 6f 72 20 63  ned by a prior c
1a2e0 61 6c 6c 20 74 6f 20 78 52 6f 75 6e 64 75 70 2e  all to xRoundup.
1a2f0 0a 2a 2a 0a 2a 2a 20 78 53 69 7a 65 20 73 68 6f  .**.** xSize sho
1a300 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65 20 61  uld return the a
1a310 6c 6c 6f 63 61 74 65 64 20 73 69 7a 65 20 6f 66  llocated size of
1a320 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61   a memory alloca
1a330 74 69 6f 6e 0a 2a 2a 20 70 72 65 76 69 6f 75 73  tion.** previous
1a340 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
1a350 20 78 4d 61 6c 6c 6f 63 20 6f 72 20 78 52 65 61   xMalloc or xRea
1a360 6c 6c 6f 63 2e 20 20 54 68 65 20 61 6c 6c 6f 63  lloc.  The alloc
1a370 61 74 65 64 20 73 69 7a 65 0a 2a 2a 20 69 73 20  ated size.** is 
1a380 61 6c 77 61 79 73 20 61 74 20 6c 65 61 73 74 20  always at least 
1a390 61 73 20 62 69 67 20 61 73 20 74 68 65 20 72 65  as big as the re
1a3a0 71 75 65 73 74 65 64 20 73 69 7a 65 20 62 75 74  quested size but
1a3b0 20 6d 61 79 20 62 65 20 6c 61 72 67 65 72 2e 0a   may be larger..
1a3c0 2a 2a 0a 2a 2a 20 54 68 65 20 78 52 6f 75 6e 64  **.** The xRound
1a3d0 75 70 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  up method return
1a3e0 73 20 77 68 61 74 20 77 6f 75 6c 64 20 62 65 20  s what would be 
1a3f0 74 68 65 20 61 6c 6c 6f 63 61 74 65 64 20 73 69  the allocated si
1a400 7a 65 20 6f 66 0a 2a 2a 20 61 20 6d 65 6d 6f 72  ze of.** a memor
1a410 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 67 69 76  y allocation giv
1a420 65 6e 20 61 20 70 61 72 74 69 63 75 6c 61 72 20  en a particular 
1a430 72 65 71 75 65 73 74 65 64 20 73 69 7a 65 2e 20  requested size. 
1a440 20 4d 6f 73 74 20 6d 65 6d 6f 72 79 0a 2a 2a 20   Most memory.** 
1a450 61 6c 6c 6f 63 61 74 6f 72 73 20 72 6f 75 6e 64  allocators round
1a460 20 75 70 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63   up memory alloc
1a470 61 74 69 6f 6e 73 20 61 74 20 6c 65 61 73 74 20  ations at least 
1a480 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c 74  to the next mult
1a490 69 70 6c 65 0a 2a 2a 20 6f 66 20 38 2e 20 20 53  iple.** of 8.  S
1a4a0 6f 6d 65 20 61 6c 6c 6f 63 61 74 6f 72 73 20 72  ome allocators r
1a4b0 6f 75 6e 64 20 75 70 20 74 6f 20 61 20 6c 61 72  ound up to a lar
1a4c0 67 65 72 20 6d 75 6c 74 69 70 6c 65 20 6f 72 20  ger multiple or 
1a4d0 74 6f 20 61 20 70 6f 77 65 72 20 6f 66 20 32 2e  to a power of 2.
1a4e0 0a 2a 2a 20 45 76 65 72 79 20 6d 65 6d 6f 72 79  .** Every memory
1a4f0 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 65 71 75   allocation requ
1a500 65 73 74 20 63 6f 6d 69 6e 67 20 69 6e 20 74 68  est coming in th
1a510 72 6f 75 67 68 20 5b 73 71 6c 69 74 65 33 5f 6d  rough [sqlite3_m
1a520 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20 6f 72 20 5b  alloc()].** or [
1a530 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
1a540 29 5d 20 66 69 72 73 74 20 63 61 6c 6c 73 20 78  )] first calls x
1a550 52 6f 75 6e 64 75 70 2e 20 20 49 66 20 78 52 6f  Roundup.  If xRo
1a560 75 6e 64 75 70 20 72 65 74 75 72 6e 73 20 30 2c  undup returns 0,
1a570 20 0a 2a 2a 20 74 68 61 74 20 63 61 75 73 65 73   .** that causes
1a580 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
1a590 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ng memory alloca
1a5a0 74 69 6f 6e 20 74 6f 20 66 61 69 6c 2e 0a 2a 2a  tion to fail..**
1a5b0 0a 2a 2a 20 54 68 65 20 78 49 6e 69 74 20 6d 65  .** The xInit me
1a5c0 74 68 6f 64 20 69 6e 69 74 69 61 6c 69 7a 65 73  thod initializes
1a5d0 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   the memory allo
1a5e0 63 61 74 6f 72 2e 20 20 46 6f 72 20 65 78 61 6d  cator.  For exam
1a5f0 70 6c 65 2c 0a 2a 2a 20 69 74 20 6d 69 67 68 74  ple,.** it might
1a600 20 61 6c 6c 6f 63 61 74 65 20 61 6e 79 20 72 65   allocate any re
1a610 71 75 69 72 65 20 6d 75 74 65 78 65 73 20 6f 72  quire mutexes or
1a620 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 6e 74 65   initialize inte
1a630 72 6e 61 6c 20 64 61 74 61 0a 2a 2a 20 73 74 72  rnal data.** str
1a640 75 63 74 75 72 65 73 2e 20 20 54 68 65 20 78 53  uctures.  The xS
1a650 68 75 74 64 6f 77 6e 20 6d 65 74 68 6f 64 20 69  hutdown method i
1a660 73 20 69 6e 76 6f 6b 65 64 20 28 69 6e 64 69 72  s invoked (indir
1a670 65 63 74 6c 79 29 20 62 79 0a 2a 2a 20 5b 73 71  ectly) by.** [sq
1a680 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
1a690 5d 20 61 6e 64 20 73 68 6f 75 6c 64 20 64 65 61  ] and should dea
1a6a0 6c 6c 6f 63 61 74 65 20 61 6e 79 20 72 65 73 6f  llocate any reso
1a6b0 75 72 63 65 73 20 61 63 71 75 69 72 65 64 0a 2a  urces acquired.*
1a6c0 2a 20 62 79 20 78 49 6e 69 74 2e 20 20 54 68 65  * by xInit.  The
1a6d0 20 70 41 70 70 44 61 74 61 20 70 6f 69 6e 74 65   pAppData pointe
1a6e0 72 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65  r is used as the
1a6f0 20 6f 6e 6c 79 20 70 61 72 61 6d 65 74 65 72 20   only parameter 
1a700 74 6f 0a 2a 2a 20 78 49 6e 69 74 20 61 6e 64 20  to.** xInit and 
1a710 78 53 68 75 74 64 6f 77 6e 2e 0a 2a 2a 0a 2a 2a  xShutdown..**.**
1a720 20 53 51 4c 69 74 65 20 68 6f 6c 64 73 20 74 68   SQLite holds th
1a730 65 20 5b 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f  e [SQLITE_MUTEX_
1a740 53 54 41 54 49 43 5f 4d 41 53 54 45 52 5d 20 6d  STATIC_MASTER] m
1a750 75 74 65 78 20 77 68 65 6e 20 69 74 20 69 6e 76  utex when it inv
1a760 6f 6b 65 73 0a 2a 2a 20 74 68 65 20 78 49 6e 69  okes.** the xIni
1a770 74 20 6d 65 74 68 6f 64 2c 20 73 6f 20 74 68 65  t method, so the
1a780 20 78 49 6e 69 74 20 6d 65 74 68 6f 64 20 6e 65   xInit method ne
1a790 65 64 20 6e 6f 74 20 62 65 20 74 68 72 65 61 64  ed not be thread
1a7a0 73 61 66 65 2e 20 20 54 68 65 0a 2a 2a 20 78 53  safe.  The.** xS
1a7b0 68 75 74 64 6f 77 6e 20 6d 65 74 68 6f 64 20 69  hutdown method i
1a7c0 73 20 6f 6e 6c 79 20 63 61 6c 6c 65 64 20 66 72  s only called fr
1a7d0 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 73 68 75 74  om [sqlite3_shut
1a7e0 64 6f 77 6e 28 29 5d 20 73 6f 20 69 74 20 64 6f  down()] so it do
1a7f0 65 73 0a 2a 2a 20 6e 6f 74 20 6e 65 65 64 20 74  es.** not need t
1a800 6f 20 62 65 20 74 68 72 65 61 64 73 61 66 65 20  o be threadsafe 
1a810 65 69 74 68 65 72 2e 20 20 46 6f 72 20 61 6c 6c  either.  For all
1a820 20 6f 74 68 65 72 20 6d 65 74 68 6f 64 73 2c 20   other methods, 
1a830 53 51 4c 69 74 65 0a 2a 2a 20 68 6f 6c 64 73 20  SQLite.** holds 
1a840 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 55 54 45  the [SQLITE_MUTE
1a850 58 5f 53 54 41 54 49 43 5f 4d 45 4d 5d 20 6d 75  X_STATIC_MEM] mu
1a860 74 65 78 20 61 73 20 6c 6f 6e 67 20 61 73 20 74  tex as long as t
1a870 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 43 4f  he.** [SQLITE_CO
1a880 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 20  NFIG_MEMSTATUS] 
1a890 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
1a8a0 74 69 6f 6e 20 69 73 20 74 75 72 6e 65 64 20 6f  tion is turned o
1a8b0 6e 20 28 77 68 69 63 68 0a 2a 2a 20 69 74 20 69  n (which.** it i
1a8c0 73 20 62 79 20 64 65 66 61 75 6c 74 29 20 61 6e  s by default) an
1a8d0 64 20 73 6f 20 74 68 65 20 6d 65 74 68 6f 64 73  d so the methods
1a8e0 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
1a8f0 6c 79 20 73 65 72 69 61 6c 69 7a 65 64 2e 0a 2a  ly serialized..*
1a900 2a 20 48 6f 77 65 76 65 72 2c 20 69 66 20 5b 53  * However, if [S
1a910 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1a920 53 54 41 54 55 53 5d 20 69 73 20 64 69 73 61 62  STATUS] is disab
1a930 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 20 6f 74  led, then the ot
1a940 68 65 72 0a 2a 2a 20 6d 65 74 68 6f 64 73 20 6d  her.** methods m
1a950 75 73 74 20 62 65 20 74 68 72 65 61 64 73 61 66  ust be threadsaf
1a960 65 20 6f 72 20 65 6c 73 65 20 6d 61 6b 65 20 74  e or else make t
1a970 68 65 69 72 20 6f 77 6e 20 61 72 72 61 6e 67 65  heir own arrange
1a980 6d 65 6e 74 73 20 66 6f 72 0a 2a 2a 20 73 65 72  ments for.** ser
1a990 69 61 6c 69 7a 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a  ialization..**.*
1a9a0 2a 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e 65  * SQLite will ne
1a9b0 76 65 72 20 69 6e 76 6f 6b 65 20 78 49 6e 69 74  ver invoke xInit
1a9c0 28 29 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63  () more than onc
1a9d0 65 20 77 69 74 68 6f 75 74 20 61 6e 20 69 6e 74  e without an int
1a9e0 65 72 76 65 6e 69 6e 67 0a 2a 2a 20 63 61 6c 6c  ervening.** call
1a9f0 20 74 6f 20 78 53 68 75 74 64 6f 77 6e 28 29 2e   to xShutdown().
1aa00 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75  .*/.typedef stru
1aa10 63 74 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  ct sqlite3_mem_m
1aa20 65 74 68 6f 64 73 20 73 71 6c 69 74 65 33 5f 6d  ethods sqlite3_m
1aa30 65 6d 5f 6d 65 74 68 6f 64 73 3b 0a 73 74 72 75  em_methods;.stru
1aa40 63 74 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  ct sqlite3_mem_m
1aa50 65 74 68 6f 64 73 20 7b 0a 20 20 76 6f 69 64 20  ethods {.  void 
1aa60 2a 28 2a 78 4d 61 6c 6c 6f 63 29 28 69 6e 74 29  *(*xMalloc)(int)
1aa70 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 65 6d  ;         /* Mem
1aa80 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66  ory allocation f
1aa90 75 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69  unction */.  voi
1aaa0 64 20 28 2a 78 46 72 65 65 29 28 76 6f 69 64 2a  d (*xFree)(void*
1aab0 29 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 46  );          /* F
1aac0 72 65 65 20 61 20 70 72 69 6f 72 20 61 6c 6c 6f  ree a prior allo
1aad0 63 61 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64  cation */.  void
1aae0 20 2a 28 2a 78 52 65 61 6c 6c 6f 63 29 28 76 6f   *(*xRealloc)(vo
1aaf0 69 64 2a 2c 69 6e 74 29 3b 20 20 2f 2a 20 52 65  id*,int);  /* Re
1ab00 73 69 7a 65 20 61 6e 20 61 6c 6c 6f 63 61 74 69  size an allocati
1ab10 6f 6e 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53  on */.  int (*xS
1ab20 69 7a 65 29 28 76 6f 69 64 2a 29 3b 20 20 20 20  ize)(void*);    
1ab30 20 20 20 20 20 20 20 2f 2a 20 52 65 74 75 72 6e         /* Return
1ab40 20 74 68 65 20 73 69 7a 65 20 6f 66 20 61 6e 20   the size of an 
1ab50 61 6c 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20 20  allocation */.  
1ab60 69 6e 74 20 28 2a 78 52 6f 75 6e 64 75 70 29 28  int (*xRoundup)(
1ab70 69 6e 74 29 3b 20 20 20 20 20 20 20 20 20 20 2f  int);          /
1ab80 2a 20 52 6f 75 6e 64 20 75 70 20 72 65 71 75 65  * Round up reque
1ab90 73 74 20 73 69 7a 65 20 74 6f 20 61 6c 6c 6f 63  st size to alloc
1aba0 61 74 69 6f 6e 20 73 69 7a 65 20 2a 2f 0a 20 20  ation size */.  
1abb0 69 6e 74 20 28 2a 78 49 6e 69 74 29 28 76 6f 69  int (*xInit)(voi
1abc0 64 2a 29 3b 20 20 20 20 20 20 20 20 20 20 20 2f  d*);           /
1abd0 2a 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65  * Initialize the
1abe0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
1abf0 72 20 2a 2f 0a 20 20 76 6f 69 64 20 28 2a 78 53  r */.  void (*xS
1ac00 68 75 74 64 6f 77 6e 29 28 76 6f 69 64 2a 29 3b  hutdown)(void*);
1ac10 20 20 20 20 20 20 2f 2a 20 44 65 69 6e 69 74 69        /* Deiniti
1ac20 61 6c 69 7a 65 20 74 68 65 20 6d 65 6d 6f 72 79  alize the memory
1ac30 20 61 6c 6c 6f 63 61 74 6f 72 20 2a 2f 0a 20 20   allocator */.  
1ac40 76 6f 69 64 20 2a 70 41 70 70 44 61 74 61 3b 20  void *pAppData; 
1ac50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1ac60 2a 20 41 72 67 75 6d 65 6e 74 20 74 6f 20 78 49  * Argument to xI
1ac70 6e 69 74 28 29 20 61 6e 64 20 78 53 68 75 74 64  nit() and xShutd
1ac80 6f 77 6e 28 29 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a  own() */.};../*.
1ac90 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e  ** CAPI3REF: Con
1aca0 66 69 67 75 72 61 74 69 6f 6e 20 4f 70 74 69 6f  figuration Optio
1acb0 6e 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  ns.** KEYWORDS: 
1acc0 7b 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f  {configuration o
1acd0 70 74 69 6f 6e 7d 0a 2a 2a 0a 2a 2a 20 54 68 65  ption}.**.** The
1ace0 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65  se constants are
1acf0 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 69   the available i
1ad00 6e 74 65 67 65 72 20 63 6f 6e 66 69 67 75 72 61  nteger configura
1ad10 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 74 68 61  tion options tha
1ad20 74 0a 2a 2a 20 63 61 6e 20 62 65 20 70 61 73 73  t.** can be pass
1ad30 65 64 20 61 73 20 74 68 65 20 66 69 72 73 74 20  ed as the first 
1ad40 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20  argument to the 
1ad50 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
1ad60 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a  )] interface..**
1ad70 0a 2a 2a 20 4e 65 77 20 63 6f 6e 66 69 67 75 72  .** New configur
1ad80 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 61  ation options ma
1ad90 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 66 75  y be added in fu
1ada0 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
1adb0 20 53 51 4c 69 74 65 2e 0a 2a 2a 20 45 78 69 73   SQLite..** Exis
1adc0 74 69 6e 67 20 63 6f 6e 66 69 67 75 72 61 74 69  ting configurati
1add0 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74  on options might
1ade0 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75 65 64   be discontinued
1adf0 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 0a  .  Applications.
1ae00 2a 2a 20 73 68 6f 75 6c 64 20 63 68 65 63 6b 20  ** should check 
1ae10 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65 20  the return code 
1ae20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 63 6f  from [sqlite3_co
1ae30 6e 66 69 67 28 29 5d 20 74 6f 20 6d 61 6b 65 20  nfig()] to make 
1ae40 73 75 72 65 20 74 68 61 74 0a 2a 2a 20 74 68 65  sure that.** the
1ae50 20 63 61 6c 6c 20 77 6f 72 6b 65 64 2e 20 20 54   call worked.  T
1ae60 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  he [sqlite3_conf
1ae70 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  ig()] interface 
1ae80 77 69 6c 6c 20 72 65 74 75 72 6e 20 61 0a 2a 2a  will return a.**
1ae90 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72   non-zero [error
1aea0 20 63 6f 64 65 5d 20 69 66 20 61 20 64 69 73 63   code] if a disc
1aeb0 6f 6e 74 69 6e 75 65 64 20 6f 72 20 75 6e 73 75  ontinued or unsu
1aec0 70 70 6f 72 74 65 64 20 63 6f 6e 66 69 67 75 72  pported configur
1aed0 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 0a 2a 2a 20  ation option.** 
1aee0 69 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a  is invoked..**.*
1aef0 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49  * <dl>.** [[SQLI
1af00 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
1af10 54 48 52 45 41 44 5d 5d 20 3c 64 74 3e 53 51 4c  THREAD]] <dt>SQL
1af20 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c  ITE_CONFIG_SINGL
1af30 45 54 48 52 45 41 44 3c 2f 64 74 3e 0a 2a 2a 20  ETHREAD</dt>.** 
1af40 3c 64 64 3e 54 68 65 72 65 20 61 72 65 20 6e 6f  <dd>There are no
1af50 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68   arguments to th
1af60 69 73 20 6f 70 74 69 6f 6e 2e 20 20 5e 54 68 69  is option.  ^Thi
1af70 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20 74 68  s option sets th
1af80 65 0a 2a 2a 20 5b 74 68 72 65 61 64 69 6e 67 20  e.** [threading 
1af90 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65 2d  mode] to Single-
1afa0 74 68 72 65 61 64 2e 20 20 49 6e 20 6f 74 68 65  thread.  In othe
1afb0 72 20 77 6f 72 64 73 2c 20 69 74 20 64 69 73 61  r words, it disa
1afc0 62 6c 65 73 0a 2a 2a 20 61 6c 6c 20 6d 75 74 65  bles.** all mute
1afd0 78 69 6e 67 20 61 6e 64 20 70 75 74 73 20 53 51  xing and puts SQ
1afe0 4c 69 74 65 20 69 6e 74 6f 20 61 20 6d 6f 64 65  Lite into a mode
1aff0 20 77 68 65 72 65 20 69 74 20 63 61 6e 20 6f 6e   where it can on
1b000 6c 79 20 62 65 20 75 73 65 64 0a 2a 2a 20 62 79  ly be used.** by
1b010 20 61 20 73 69 6e 67 6c 65 20 74 68 72 65 61 64   a single thread
1b020 2e 20 20 20 5e 49 66 20 53 51 4c 69 74 65 20 69  .   ^If SQLite i
1b030 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a  s compiled with.
1b040 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54  ** the [SQLITE_T
1b050 48 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49  HREADSAFE | SQLI
1b060 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d  TE_THREADSAFE=0]
1b070 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
1b080 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20  tion then.** it 
1b090 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20  is not possible 
1b0a0 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 5b 74  to change the [t
1b0b0 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 66  hreading mode] f
1b0c0 72 6f 6d 20 69 74 73 20 64 65 66 61 75 6c 74 0a  rom its default.
1b0d0 2a 2a 20 76 61 6c 75 65 20 6f 66 20 53 69 6e 67  ** value of Sing
1b0e0 6c 65 2d 74 68 72 65 61 64 20 61 6e 64 20 73 6f  le-thread and so
1b0f0 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
1b100 28 29 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  ()] will return 
1b110 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f  .** [SQLITE_ERRO
1b120 52 5d 20 69 66 20 63 61 6c 6c 65 64 20 77 69 74  R] if called wit
1b130 68 20 74 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  h the SQLITE_CON
1b140 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44  FIG_SINGLETHREAD
1b150 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  .** configuratio
1b160 6e 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a  n option.</dd>.*
1b170 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1b180 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44  NFIG_MULTITHREAD
1b190 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1b1a0 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44  NFIG_MULTITHREAD
1b1b0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
1b1c0 72 65 20 61 72 65 20 6e 6f 20 61 72 67 75 6d 65  re are no argume
1b1d0 6e 74 73 20 74 6f 20 74 68 69 73 20 6f 70 74 69  nts to this opti
1b1e0 6f 6e 2e 20 20 5e 54 68 69 73 20 6f 70 74 69 6f  on.  ^This optio
1b1f0 6e 20 73 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74  n sets the.** [t
1b200 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
1b210 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61 64 2e 20  o Multi-thread. 
1b220 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c   In other words,
1b230 20 69 74 20 64 69 73 61 62 6c 65 73 0a 2a 2a 20   it disables.** 
1b240 6d 75 74 65 78 69 6e 67 20 6f 6e 20 5b 64 61 74  mutexing on [dat
1b250 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1b260 5d 20 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20  ] and [prepared 
1b270 73 74 61 74 65 6d 65 6e 74 5d 20 6f 62 6a 65 63  statement] objec
1b280 74 73 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69  ts..** The appli
1b290 63 61 74 69 6f 6e 20 69 73 20 72 65 73 70 6f 6e  cation is respon
1b2a0 73 69 62 6c 65 20 66 6f 72 20 73 65 72 69 61 6c  sible for serial
1b2b0 69 7a 69 6e 67 20 61 63 63 65 73 73 20 74 6f 0a  izing access to.
1b2c0 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ** [database con
1b2d0 6e 65 63 74 69 6f 6e 73 5d 20 61 6e 64 20 5b 70  nections] and [p
1b2e0 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
1b2f0 74 73 5d 2e 20 20 42 75 74 20 6f 74 68 65 72 20  ts].  But other 
1b300 6d 75 74 65 78 65 73 0a 2a 2a 20 61 72 65 20 65  mutexes.** are e
1b310 6e 61 62 6c 65 64 20 73 6f 20 74 68 61 74 20 53  nabled so that S
1b320 51 4c 69 74 65 20 77 69 6c 6c 20 62 65 20 73 61  QLite will be sa
1b330 66 65 20 74 6f 20 75 73 65 20 69 6e 20 61 20 6d  fe to use in a m
1b340 75 6c 74 69 2d 74 68 72 65 61 64 65 64 0a 2a 2a  ulti-threaded.**
1b350 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 61 73 20   environment as 
1b360 6c 6f 6e 67 20 61 73 20 6e 6f 20 74 77 6f 20 74  long as no two t
1b370 68 72 65 61 64 73 20 61 74 74 65 6d 70 74 20 74  hreads attempt t
1b380 6f 20 75 73 65 20 74 68 65 20 73 61 6d 65 0a 2a  o use the same.*
1b390 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  * [database conn
1b3a0 65 63 74 69 6f 6e 5d 20 61 74 20 74 68 65 20 73  ection] at the s
1b3b0 61 6d 65 20 74 69 6d 65 2e 20 20 5e 49 66 20 53  ame time.  ^If S
1b3c0 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
1b3d0 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53  d with.** the [S
1b3e0 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
1b3f0 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44   | SQLITE_THREAD
1b400 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d  SAFE=0] compile-
1b410 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e  time option then
1b420 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74 20 70 6f  .** it is not po
1b430 73 73 69 62 6c 65 20 74 6f 20 73 65 74 20 74 68  ssible to set th
1b440 65 20 4d 75 6c 74 69 2d 74 68 72 65 61 64 20 5b  e Multi-thread [
1b450 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
1b460 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  and.** [sqlite3_
1b470 63 6f 6e 66 69 67 28 29 5d 20 77 69 6c 6c 20 72  config()] will r
1b480 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45 52  eturn [SQLITE_ER
1b490 52 4f 52 5d 20 69 66 20 63 61 6c 6c 65 64 20 77  ROR] if called w
1b4a0 69 74 68 20 74 68 65 0a 2a 2a 20 53 51 4c 49 54  ith the.** SQLIT
1b4b0 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48  E_CONFIG_MULTITH
1b4c0 52 45 41 44 20 63 6f 6e 66 69 67 75 72 61 74 69  READ configurati
1b4d0 6f 6e 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a  on option.</dd>.
1b4e0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1b4f0 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44  ONFIG_SERIALIZED
1b500 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1b510 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 3c  NFIG_SERIALIZED<
1b520 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 72  /dt>.** <dd>Ther
1b530 65 20 61 72 65 20 6e 6f 20 61 72 67 75 6d 65 6e  e are no argumen
1b540 74 73 20 74 6f 20 74 68 69 73 20 6f 70 74 69 6f  ts to this optio
1b550 6e 2e 20 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e  n.  ^This option
1b560 20 73 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74 68   sets the.** [th
1b570 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f  reading mode] to
1b580 20 53 65 72 69 61 6c 69 7a 65 64 2e 20 49 6e 20   Serialized. In 
1b590 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 69  other words, thi
1b5a0 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
1b5b0 0a 2a 2a 20 61 6c 6c 20 6d 75 74 65 78 65 73 20  .** all mutexes 
1b5c0 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 72 65  including the re
1b5d0 63 75 72 73 69 76 65 0a 2a 2a 20 6d 75 74 65 78  cursive.** mutex
1b5e0 65 73 20 6f 6e 20 5b 64 61 74 61 62 61 73 65 20  es on [database 
1b5f0 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 6e 64 20  connection] and 
1b600 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
1b610 65 6e 74 5d 20 6f 62 6a 65 63 74 73 2e 0a 2a 2a  ent] objects..**
1b620 20 49 6e 20 74 68 69 73 20 6d 6f 64 65 20 28 77   In this mode (w
1b630 68 69 63 68 20 69 73 20 74 68 65 20 64 65 66 61  hich is the defa
1b640 75 6c 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20  ult when SQLite 
1b650 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  is compiled with
1b660 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 54 48 52 45  .** [SQLITE_THRE
1b670 41 44 53 41 46 45 3d 31 5d 29 20 74 68 65 20 53  ADSAFE=1]) the S
1b680 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77 69  QLite library wi
1b690 6c 6c 20 69 74 73 65 6c 66 20 73 65 72 69 61 6c  ll itself serial
1b6a0 69 7a 65 20 61 63 63 65 73 73 0a 2a 2a 20 74 6f  ize access.** to
1b6b0 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
1b6c0 63 74 69 6f 6e 73 5d 20 61 6e 64 20 5b 70 72 65  ctions] and [pre
1b6d0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
1b6e0 5d 20 73 6f 20 74 68 61 74 20 74 68 65 0a 2a 2a  ] so that the.**
1b6f0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20   application is 
1b700 66 72 65 65 20 74 6f 20 75 73 65 20 74 68 65 20  free to use the 
1b710 73 61 6d 65 20 5b 64 61 74 61 62 61 73 65 20 63  same [database c
1b720 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 72 20 74 68  onnection] or th
1b730 65 0a 2a 2a 20 73 61 6d 65 20 5b 70 72 65 70 61  e.** same [prepa
1b740 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 69  red statement] i
1b750 6e 20 64 69 66 66 65 72 65 6e 74 20 74 68 72 65  n different thre
1b760 61 64 73 20 61 74 20 74 68 65 20 73 61 6d 65 20  ads at the same 
1b770 74 69 6d 65 2e 0a 2a 2a 20 5e 49 66 20 53 51 4c  time..** ^If SQL
1b780 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
1b790 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c  with.** the [SQL
1b7a0 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c  ITE_THREADSAFE |
1b7b0 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
1b7c0 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  FE=0] compile-ti
1b7d0 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a  me option then.*
1b7e0 2a 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73  * it is not poss
1b7f0 69 62 6c 65 20 74 6f 20 73 65 74 20 74 68 65 20  ible to set the 
1b800 53 65 72 69 61 6c 69 7a 65 64 20 5b 74 68 72 65  Serialized [thre
1b810 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 0a  ading mode] and.
1b820 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ** [sqlite3_conf
1b830 69 67 28 29 5d 20 77 69 6c 6c 20 72 65 74 75 72  ig()] will retur
1b840 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d  n [SQLITE_ERROR]
1b850 20 69 66 20 63 61 6c 6c 65 64 20 77 69 74 68 20   if called with 
1b860 74 68 65 0a 2a 2a 20 53 51 4c 49 54 45 5f 43 4f  the.** SQLITE_CO
1b870 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 20  NFIG_SERIALIZED 
1b880 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
1b890 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  tion.</dd>.**.**
1b8a0 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1b8b0 5f 4d 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51  _MALLOC]] <dt>SQ
1b8c0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
1b8d0 4f 43 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  OC</dt>.** <dd> 
1b8e0 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  ^(The SQLITE_CON
1b8f0 46 49 47 5f 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f  FIG_MALLOC optio
1b900 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1b910 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20   argument which 
1b920 69 73 20 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72  is .** a pointer
1b930 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20   to an instance 
1b940 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  of the [sqlite3_
1b950 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72  mem_methods] str
1b960 75 63 74 75 72 65 2e 0a 2a 2a 20 54 68 65 20 61  ucture..** The a
1b970 72 67 75 6d 65 6e 74 20 73 70 65 63 69 66 69 65  rgument specifie
1b980 73 0a 2a 2a 20 61 6c 74 65 72 6e 61 74 69 76 65  s.** alternative
1b990 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d 65 6d 6f 72   low-level memor
1b9a0 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75  y allocation rou
1b9b0 74 69 6e 65 73 20 74 6f 20 62 65 20 75 73 65 64  tines to be used
1b9c0 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20   in place of.** 
1b9d0 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  the memory alloc
1b9e0 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20 62  ation routines b
1b9f0 75 69 6c 74 20 69 6e 74 6f 20 53 51 4c 69 74 65  uilt into SQLite
1ba00 2e 29 5e 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65  .)^ ^SQLite make
1ba10 73 0a 2a 2a 20 69 74 73 20 6f 77 6e 20 70 72 69  s.** its own pri
1ba20 76 61 74 65 20 63 6f 70 79 20 6f 66 20 74 68 65  vate copy of the
1ba30 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20   content of the 
1ba40 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74  [sqlite3_mem_met
1ba50 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65 0a  hods] structure.
1ba60 2a 2a 20 62 65 66 6f 72 65 20 74 68 65 20 5b 73  ** before the [s
1ba70 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
1ba80 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 2e 3c 2f   call returns.</
1ba90 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1baa0 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c  TE_CONFIG_GETMAL
1bab0 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  LOC]] <dt>SQLITE
1bac0 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f  _CONFIG_GETMALLO
1bad0 43 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  C</dt>.** <dd> ^
1bae0 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  (The SQLITE_CONF
1baf0 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 20 6f 70 74  IG_GETMALLOC opt
1bb00 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67  ion takes a sing
1bb10 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63  le argument whic
1bb20 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74 65  h.** is a pointe
1bb30 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65  r to an instance
1bb40 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   of the [sqlite3
1bb50 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74  _mem_methods] st
1bb60 72 75 63 74 75 72 65 2e 0a 2a 2a 20 54 68 65 20  ructure..** The 
1bb70 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74  [sqlite3_mem_met
1bb80 68 6f 64 73 5d 0a 2a 2a 20 73 74 72 75 63 74 75  hods].** structu
1bb90 72 65 20 69 73 20 66 69 6c 6c 65 64 20 77 69 74  re is filled wit
1bba0 68 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20  h the currently 
1bbb0 64 65 66 69 6e 65 64 20 6d 65 6d 6f 72 79 20 61  defined memory a
1bbc0 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e  llocation routin
1bbd0 65 73 2e 29 5e 0a 2a 2a 20 54 68 69 73 20 6f 70  es.)^.** This op
1bbe0 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64  tion can be used
1bbf0 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 74 68 65   to overload the
1bc00 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20   default memory 
1bc10 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 72 6f  allocation.** ro
1bc20 75 74 69 6e 65 73 20 77 69 74 68 20 61 20 77 72  utines with a wr
1bc30 61 70 70 65 72 20 74 68 61 74 20 73 69 6d 75 6c  apper that simul
1bc40 61 74 69 6f 6e 73 20 6d 65 6d 6f 72 79 20 61 6c  ations memory al
1bc50 6c 6f 63 61 74 69 6f 6e 20 66 61 69 6c 75 72 65  location failure
1bc60 20 6f 72 0a 2a 2a 20 74 72 61 63 6b 73 20 6d 65   or.** tracks me
1bc70 6d 6f 72 79 20 75 73 61 67 65 2c 20 66 6f 72 20  mory usage, for 
1bc80 65 78 61 6d 70 6c 65 2e 20 3c 2f 64 64 3e 0a 2a  example. </dd>.*
1bc90 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1bca0 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f  NFIG_SMALL_MALLO
1bcb0 43 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  C]] <dt>SQLITE_C
1bcc0 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c  ONFIG_SMALL_MALL
1bcd0 4f 43 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  OC</dt>.** <dd> 
1bce0 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  ^The SQLITE_CONF
1bcf0 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 20  IG_SMALL_MALLOC 
1bd00 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 73 69 6e  option takes sin
1bd10 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 6f 66 0a  gle argument of.
1bd20 2a 2a 20 74 79 70 65 20 69 6e 74 2c 20 69 6e 74  ** type int, int
1bd30 65 72 70 72 65 74 65 64 20 61 73 20 61 20 62 6f  erpreted as a bo
1bd40 6f 6c 65 61 6e 2c 20 77 68 69 63 68 20 69 66 20  olean, which if 
1bd50 74 72 75 65 20 70 72 6f 76 69 64 65 73 20 61 20  true provides a 
1bd60 68 69 6e 74 20 74 6f 0a 2a 2a 20 53 51 4c 69 74  hint to.** SQLit
1bd70 65 20 74 68 61 74 20 69 74 20 73 68 6f 75 6c 64  e that it should
1bd80 20 61 76 6f 69 64 20 6c 61 72 67 65 20 6d 65 6d   avoid large mem
1bd90 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20  ory allocations 
1bda0 69 66 20 70 6f 73 73 69 62 6c 65 2e 0a 2a 2a 20  if possible..** 
1bdb0 53 51 4c 69 74 65 20 77 69 6c 6c 20 72 75 6e 20  SQLite will run 
1bdc0 66 61 73 74 65 72 20 69 66 20 69 74 20 69 73 20  faster if it is 
1bdd0 66 72 65 65 20 74 6f 20 6d 61 6b 65 20 6c 61 72  free to make lar
1bde0 67 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ge memory alloca
1bdf0 74 69 6f 6e 73 2c 0a 2a 2a 20 62 75 74 20 73 6f  tions,.** but so
1be00 6d 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  me application m
1be10 69 67 68 74 20 70 72 65 66 65 72 20 74 6f 20 72  ight prefer to r
1be20 75 6e 20 73 6c 6f 77 65 72 20 69 6e 20 65 78 63  un slower in exc
1be30 68 61 6e 67 65 20 66 6f 72 0a 2a 2a 20 67 75 61  hange for.** gua
1be40 72 61 6e 74 65 65 73 20 61 62 6f 75 74 20 6d 65  rantees about me
1be50 6d 6f 72 79 20 66 72 61 67 6d 65 6e 74 61 74 69  mory fragmentati
1be60 6f 6e 20 74 68 61 74 20 61 72 65 20 70 6f 73 73  on that are poss
1be70 69 62 6c 65 20 69 66 20 6c 61 72 67 65 0a 2a 2a  ible if large.**
1be80 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65   allocations are
1be90 20 61 76 6f 69 64 65 64 2e 20 20 54 68 69 73 20   avoided.  This 
1bea0 68 69 6e 74 20 69 73 20 6e 6f 72 6d 61 6c 6c 79  hint is normally
1beb0 20 6f 66 66 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a   off..** </dd>.*
1bec0 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1bed0 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 5d  NFIG_MEMSTATUS]]
1bee0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1bef0 49 47 5f 4d 45 4d 53 54 41 54 55 53 3c 2f 64 74  IG_MEMSTATUS</dt
1bf00 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53  >.** <dd> ^The S
1bf10 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1bf20 53 54 41 54 55 53 20 6f 70 74 69 6f 6e 20 74 61  STATUS option ta
1bf30 6b 65 73 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  kes single argum
1bf40 65 6e 74 20 6f 66 20 74 79 70 65 20 69 6e 74 2c  ent of type int,
1bf50 0a 2a 2a 20 69 6e 74 65 72 70 72 65 74 65 64 20  .** interpreted 
1bf60 61 73 20 61 20 62 6f 6f 6c 65 61 6e 2c 20 77 68  as a boolean, wh
1bf70 69 63 68 20 65 6e 61 62 6c 65 73 20 6f 72 20 64  ich enables or d
1bf80 69 73 61 62 6c 65 73 20 74 68 65 20 63 6f 6c 6c  isables the coll
1bf90 65 63 74 69 6f 6e 20 6f 66 0a 2a 2a 20 6d 65 6d  ection of.** mem
1bfa0 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73  ory allocation s
1bfb0 74 61 74 69 73 74 69 63 73 2e 20 5e 28 57 68 65  tatistics. ^(Whe
1bfc0 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  n memory allocat
1bfd0 69 6f 6e 20 73 74 61 74 69 73 74 69 63 73 20 61  ion statistics a
1bfe0 72 65 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2c 20  re.** disabled, 
1bff0 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 53 51  the following SQ
1c000 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 73 20  Lite interfaces 
1c010 62 65 63 6f 6d 65 20 6e 6f 6e 2d 6f 70 65 72 61  become non-opera
1c020 74 69 6f 6e 61 6c 3a 0a 2a 2a 20 20 20 3c 75 6c  tional:.**   <ul
1c030 3e 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c  >.**   <li> [sql
1c040 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64  ite3_memory_used
1c050 28 29 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73  ()].**   <li> [s
1c060 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
1c070 67 68 77 61 74 65 72 28 29 5d 0a 2a 2a 20 20 20  ghwater()].**   
1c080 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 73 6f  <li> [sqlite3_so
1c090 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 36 34 28  ft_heap_limit64(
1c0a0 29 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71  )].**   <li> [sq
1c0b0 6c 69 74 65 33 5f 73 74 61 74 75 73 36 34 28 29  lite3_status64()
1c0c0 5d 0a 2a 2a 20 20 20 3c 2f 75 6c 3e 29 5e 0a 2a  ].**   </ul>)^.*
1c0d0 2a 20 5e 4d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  * ^Memory alloca
1c0e0 74 69 6f 6e 20 73 74 61 74 69 73 74 69 63 73 20  tion statistics 
1c0f0 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20 64  are enabled by d
1c100 65 66 61 75 6c 74 20 75 6e 6c 65 73 73 20 53 51  efault unless SQ
1c110 4c 69 74 65 20 69 73 0a 2a 2a 20 63 6f 6d 70 69  Lite is.** compi
1c120 6c 65 64 20 77 69 74 68 20 5b 53 51 4c 49 54 45  led with [SQLITE
1c130 5f 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54  _DEFAULT_MEMSTAT
1c140 55 53 5d 3d 30 20 69 6e 20 77 68 69 63 68 20 63  US]=0 in which c
1c150 61 73 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c  ase memory.** al
1c160 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74 69 73 74  location statist
1c170 69 63 73 20 61 72 65 20 64 69 73 61 62 6c 65 64  ics are disabled
1c180 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 2a 2a 20   by default..** 
1c190 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
1c1a0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41  LITE_CONFIG_SCRA
1c1b0 54 43 48 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  TCH]] <dt>SQLITE
1c1c0 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43 48 3c  _CONFIG_SCRATCH<
1c1d0 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 54 68 65  /dt>.** <dd> The
1c1e0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53   SQLITE_CONFIG_S
1c1f0 43 52 41 54 43 48 20 6f 70 74 69 6f 6e 20 69 73  CRATCH option is
1c200 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e   no longer used.
1c210 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  .** </dd>.**.** 
1c220 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1c230 50 41 47 45 43 41 43 48 45 5d 5d 20 3c 64 74 3e  PAGECACHE]] <dt>
1c240 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41  SQLITE_CONFIG_PA
1c250 47 45 43 41 43 48 45 3c 2f 64 74 3e 0a 2a 2a 20  GECACHE</dt>.** 
1c260 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c 49 54 45  <dd> ^The SQLITE
1c270 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48  _CONFIG_PAGECACH
1c280 45 20 6f 70 74 69 6f 6e 20 73 70 65 63 69 66 69  E option specifi
1c290 65 73 20 61 20 6d 65 6d 6f 72 79 20 70 6f 6f 6c  es a memory pool
1c2a0 0a 2a 2a 20 74 68 61 74 20 53 51 4c 69 74 65 20  .** that SQLite 
1c2b0 63 61 6e 20 75 73 65 20 66 6f 72 20 74 68 65 20  can use for the 
1c2c0 64 61 74 61 62 61 73 65 20 70 61 67 65 20 63 61  database page ca
1c2d0 63 68 65 20 77 69 74 68 20 74 68 65 20 64 65 66  che with the def
1c2e0 61 75 6c 74 20 70 61 67 65 0a 2a 2a 20 63 61 63  ault page.** cac
1c2f0 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
1c300 6e 2e 20 20 0a 2a 2a 20 54 68 69 73 20 63 6f 6e  n.  .** This con
1c310 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
1c320 6e 20 69 73 20 61 20 6e 6f 2d 6f 70 20 69 66 20  n is a no-op if 
1c330 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64  an application-d
1c340 65 66 69 6e 65 20 70 61 67 65 0a 2a 2a 20 63 61  efine page.** ca
1c350 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  che implementati
1c360 6f 6e 20 69 73 20 6c 6f 61 64 65 64 20 75 73 69  on is loaded usi
1c370 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  ng the [SQLITE_C
1c380 4f 4e 46 49 47 5f 50 43 41 43 48 45 32 5d 2e 0a  ONFIG_PCACHE2]..
1c390 2a 2a 20 5e 54 68 65 72 65 20 61 72 65 20 74 68  ** ^There are th
1c3a0 72 65 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f  ree arguments to
1c3b0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50   SQLITE_CONFIG_P
1c3c0 41 47 45 43 41 43 48 45 3a 20 41 20 70 6f 69 6e  AGECACHE: A poin
1c3d0 74 65 72 20 74 6f 0a 2a 2a 20 38 2d 62 79 74 65  ter to.** 8-byte
1c3e0 20 61 6c 69 67 6e 65 64 20 6d 65 6d 6f 72 79 20   aligned memory 
1c3f0 28 70 4d 65 6d 29 2c 20 74 68 65 20 73 69 7a 65  (pMem), the size
1c400 20 6f 66 20 65 61 63 68 20 70 61 67 65 20 63 61   of each page ca
1c410 63 68 65 20 6c 69 6e 65 20 28 73 7a 29 2c 0a 2a  che line (sz),.*
1c420 2a 20 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72  * and the number
1c430 20 6f 66 20 63 61 63 68 65 20 6c 69 6e 65 73 20   of cache lines 
1c440 28 4e 29 2e 0a 2a 2a 20 54 68 65 20 73 7a 20 61  (N)..** The sz a
1c450 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62  rgument should b
1c460 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  e the size of th
1c470 65 20 6c 61 72 67 65 73 74 20 64 61 74 61 62 61  e largest databa
1c480 73 65 20 70 61 67 65 0a 2a 2a 20 28 61 20 70 6f  se page.** (a po
1c490 77 65 72 20 6f 66 20 74 77 6f 20 62 65 74 77 65  wer of two betwe
1c4a0 65 6e 20 35 31 32 20 61 6e 64 20 36 35 35 33 36  en 512 and 65536
1c4b0 29 20 70 6c 75 73 20 73 6f 6d 65 20 65 78 74 72  ) plus some extr
1c4c0 61 20 62 79 74 65 73 20 66 6f 72 20 65 61 63 68  a bytes for each
1c4d0 0a 2a 2a 20 70 61 67 65 20 68 65 61 64 65 72 2e  .** page header.
1c4e0 20 20 5e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66    ^The number of
1c4f0 20 65 78 74 72 61 20 62 79 74 65 73 20 6e 65 65   extra bytes nee
1c500 64 65 64 20 62 79 20 74 68 65 20 70 61 67 65 20  ded by the page 
1c510 68 65 61 64 65 72 0a 2a 2a 20 63 61 6e 20 62 65  header.** can be
1c520 20 64 65 74 65 72 6d 69 6e 65 64 20 75 73 69 6e   determined usin
1c530 67 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  g [SQLITE_CONFIG
1c540 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 5d 2e 0a  _PCACHE_HDRSZ]..
1c550 2a 2a 20 5e 49 74 20 69 73 20 68 61 72 6d 6c 65  ** ^It is harmle
1c560 73 73 2c 20 61 70 61 72 74 20 66 72 6f 6d 20 74  ss, apart from t
1c570 68 65 20 77 61 73 74 65 64 20 6d 65 6d 6f 72 79  he wasted memory
1c580 2c 0a 2a 2a 20 66 6f 72 20 74 68 65 20 73 7a 20  ,.** for the sz 
1c590 70 61 72 61 6d 65 74 65 72 20 74 6f 20 62 65 20  parameter to be 
1c5a0 6c 61 72 67 65 72 20 74 68 61 6e 20 6e 65 63 65  larger than nece
1c5b0 73 73 61 72 79 2e 20 20 54 68 65 20 70 4d 65 6d  ssary.  The pMem
1c5c0 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 6d 75 73  .** argument mus
1c5d0 74 20 62 65 20 65 69 74 68 65 72 20 61 20 4e 55  t be either a NU
1c5e0 4c 4c 20 70 6f 69 6e 74 65 72 20 6f 72 20 61 20  LL pointer or a 
1c5f0 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 38 2d  pointer to an 8-
1c600 62 79 74 65 0a 2a 2a 20 61 6c 69 67 6e 65 64 20  byte.** aligned 
1c610 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20  block of memory 
1c620 6f 66 20 61 74 20 6c 65 61 73 74 20 73 7a 2a 4e  of at least sz*N
1c630 20 62 79 74 65 73 2c 20 6f 74 68 65 72 77 69 73   bytes, otherwis
1c640 65 0a 2a 2a 20 73 75 62 73 65 71 75 65 6e 74 20  e.** subsequent 
1c650 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65  behavior is unde
1c660 66 69 6e 65 64 2e 0a 2a 2a 20 5e 57 68 65 6e 20  fined..** ^When 
1c670 70 4d 65 6d 20 69 73 20 6e 6f 74 20 4e 55 4c 4c  pMem is not NULL
1c680 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 73 74  , SQLite will st
1c690 72 69 76 65 20 74 6f 20 75 73 65 20 74 68 65 20  rive to use the 
1c6a0 6d 65 6d 6f 72 79 20 70 72 6f 76 69 64 65 64 0a  memory provided.
1c6b0 2a 2a 20 74 6f 20 73 61 74 69 73 66 79 20 70 61  ** to satisfy pa
1c6c0 67 65 20 63 61 63 68 65 20 6e 65 65 64 73 2c 20  ge cache needs, 
1c6d0 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74 6f 20  falling back to 
1c6e0 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
1c6f0 29 5d 20 69 66 0a 2a 2a 20 61 20 70 61 67 65 20  )] if.** a page 
1c700 63 61 63 68 65 20 6c 69 6e 65 20 69 73 20 6c 61  cache line is la
1c710 72 67 65 72 20 74 68 61 6e 20 73 7a 20 62 79 74  rger than sz byt
1c720 65 73 20 6f 72 20 69 66 20 61 6c 6c 20 6f 66 20  es or if all of 
1c730 74 68 65 20 70 4d 65 6d 20 62 75 66 66 65 72 0a  the pMem buffer.
1c740 2a 2a 20 69 73 20 65 78 68 61 75 73 74 65 64 2e  ** is exhausted.
1c750 0a 2a 2a 20 5e 49 66 20 70 4d 65 6d 20 69 73 20  .** ^If pMem is 
1c760 4e 55 4c 4c 20 61 6e 64 20 4e 20 69 73 20 6e 6f  NULL and N is no
1c770 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 65 61 63  n-zero, then eac
1c780 68 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  h database conne
1c790 63 74 69 6f 6e 0a 2a 2a 20 64 6f 65 73 20 61 6e  ction.** does an
1c7a0 20 69 6e 69 74 69 61 6c 20 62 75 6c 6b 20 61 6c   initial bulk al
1c7b0 6c 6f 63 61 74 69 6f 6e 20 66 6f 72 20 70 61 67  location for pag
1c7c0 65 20 63 61 63 68 65 20 6d 65 6d 6f 72 79 0a 2a  e cache memory.*
1c7d0 2a 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f  * from [sqlite3_
1c7e0 6d 61 6c 6c 6f 63 28 29 5d 20 73 75 66 66 69 63  malloc()] suffic
1c7f0 69 65 6e 74 20 66 6f 72 20 4e 20 63 61 63 68 65  ient for N cache
1c800 20 6c 69 6e 65 73 20 69 66 20 4e 20 69 73 20 70   lines if N is p
1c810 6f 73 69 74 69 76 65 20 6f 72 0a 2a 2a 20 6f 66  ositive or.** of
1c820 20 2d 31 30 32 34 2a 4e 20 62 79 74 65 73 20 69   -1024*N bytes i
1c830 66 20 4e 20 69 73 20 6e 65 67 61 74 69 76 65 2c  f N is negative,
1c840 20 2e 20 5e 49 66 20 61 64 64 69 74 69 6f 6e 61   . ^If additiona
1c850 6c 0a 2a 2a 20 70 61 67 65 20 63 61 63 68 65 20  l.** page cache 
1c860 6d 65 6d 6f 72 79 20 69 73 20 6e 65 65 64 65 64  memory is needed
1c870 20 62 65 79 6f 6e 64 20 77 68 61 74 20 69 73 20   beyond what is 
1c880 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
1c890 69 6e 69 74 69 61 6c 0a 2a 2a 20 61 6c 6c 6f 63  initial.** alloc
1c8a0 61 74 69 6f 6e 2c 20 74 68 65 6e 20 53 51 4c 69  ation, then SQLi
1c8b0 74 65 20 67 6f 65 73 20 74 6f 20 5b 73 71 6c 69  te goes to [sqli
1c8c0 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 73 65  te3_malloc()] se
1c8d0 70 61 72 61 74 65 6c 79 20 66 6f 72 20 65 61 63  parately for eac
1c8e0 68 0a 2a 2a 20 61 64 64 69 74 69 6f 6e 61 6c 20  h.** additional 
1c8f0 63 61 63 68 65 20 6c 69 6e 65 2e 20 3c 2f 64 64  cache line. </dd
1c900 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1c910 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 5d 20 3c  _CONFIG_HEAP]] <
1c920 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1c930 5f 48 45 41 50 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  _HEAP</dt>.** <d
1c940 64 3e 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43  d> ^The SQLITE_C
1c950 4f 4e 46 49 47 5f 48 45 41 50 20 6f 70 74 69 6f  ONFIG_HEAP optio
1c960 6e 20 73 70 65 63 69 66 69 65 73 20 61 20 73 74  n specifies a st
1c970 61 74 69 63 20 6d 65 6d 6f 72 79 20 62 75 66 66  atic memory buff
1c980 65 72 20 0a 2a 2a 20 74 68 61 74 20 53 51 4c 69  er .** that SQLi
1c990 74 65 20 77 69 6c 6c 20 75 73 65 20 66 6f 72 20  te will use for 
1c9a0 61 6c 6c 20 6f 66 20 69 74 73 20 64 79 6e 61 6d  all of its dynam
1c9b0 69 63 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ic memory alloca
1c9c0 74 69 6f 6e 20 6e 65 65 64 73 0a 2a 2a 20 62 65  tion needs.** be
1c9d0 79 6f 6e 64 20 74 68 6f 73 65 20 70 72 6f 76 69  yond those provi
1c9e0 64 65 64 20 66 6f 72 20 62 79 20 5b 53 51 4c 49  ded for by [SQLI
1c9f0 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41  TE_CONFIG_PAGECA
1ca00 43 48 45 5d 2e 0a 2a 2a 20 5e 54 68 65 20 53 51  CHE]..** ^The SQ
1ca10 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
1ca20 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20   option is only 
1ca30 61 76 61 69 6c 61 62 6c 65 20 69 66 20 53 51 4c  available if SQL
1ca40 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 0a  ite is compiled.
1ca50 2a 2a 20 77 69 74 68 20 65 69 74 68 65 72 20 5b  ** with either [
1ca60 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
1ca70 4d 53 59 53 33 5d 20 6f 72 20 5b 53 51 4c 49 54  MSYS3] or [SQLIT
1ca80 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35  E_ENABLE_MEMSYS5
1ca90 5d 20 61 6e 64 20 72 65 74 75 72 6e 73 0a 2a 2a  ] and returns.**
1caa0 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20   [SQLITE_ERROR] 
1cab0 69 66 20 69 6e 76 6f 6b 65 64 20 6f 74 68 65 72  if invoked other
1cac0 77 69 73 65 2e 0a 2a 2a 20 5e 54 68 65 72 65 20  wise..** ^There 
1cad0 61 72 65 20 74 68 72 65 65 20 61 72 67 75 6d 65  are three argume
1cae0 6e 74 73 20 74 6f 20 53 51 4c 49 54 45 5f 43 4f  nts to SQLITE_CO
1caf0 4e 46 49 47 5f 48 45 41 50 3a 0a 2a 2a 20 41 6e  NFIG_HEAP:.** An
1cb00 20 38 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20   8-byte aligned 
1cb10 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d  pointer to the m
1cb20 65 6d 6f 72 79 2c 0a 2a 2a 20 74 68 65 20 6e 75  emory,.** the nu
1cb30 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e  mber of bytes in
1cb40 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 75 66 66   the memory buff
1cb50 65 72 2c 20 61 6e 64 20 74 68 65 20 6d 69 6e 69  er, and the mini
1cb60 6d 75 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73  mum allocation s
1cb70 69 7a 65 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20  ize..** ^If the 
1cb80 66 69 72 73 74 20 70 6f 69 6e 74 65 72 20 28 74  first pointer (t
1cb90 68 65 20 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65  he memory pointe
1cba0 72 29 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e  r) is NULL, then
1cbb0 20 53 51 4c 69 74 65 20 72 65 76 65 72 74 73 0a   SQLite reverts.
1cbc0 2a 2a 20 74 6f 20 75 73 69 6e 67 20 69 74 73 20  ** to using its 
1cbd0 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61  default memory a
1cbe0 6c 6c 6f 63 61 74 6f 72 20 28 74 68 65 20 73 79  llocator (the sy
1cbf0 73 74 65 6d 20 6d 61 6c 6c 6f 63 28 29 20 69 6d  stem malloc() im
1cc00 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 29 2c 0a 2a  plementation),.*
1cc10 2a 20 75 6e 64 6f 69 6e 67 20 61 6e 79 20 70 72  * undoing any pr
1cc20 69 6f 72 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f  ior invocation o
1cc30 66 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  f [SQLITE_CONFIG
1cc40 5f 4d 41 4c 4c 4f 43 5d 2e 20 20 5e 49 66 20 74  _MALLOC].  ^If t
1cc50 68 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 70 6f 69  he.** memory poi
1cc60 6e 74 65 72 20 69 73 20 6e 6f 74 20 4e 55 4c 4c  nter is not NULL
1cc70 20 74 68 65 6e 20 74 68 65 20 61 6c 74 65 72 6e   then the altern
1cc80 61 74 69 76 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20  ative memory.** 
1cc90 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 65 6e 67  allocator is eng
1cca0 61 67 65 64 20 74 6f 20 68 61 6e 64 6c 65 20 61  aged to handle a
1ccb0 6c 6c 20 6f 66 20 53 51 4c 69 74 65 73 20 6d 65  ll of SQLites me
1ccc0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
1ccd0 6e 65 65 64 73 2e 0a 2a 2a 20 54 68 65 20 66 69  needs..** The fi
1cce0 72 73 74 20 70 6f 69 6e 74 65 72 20 28 74 68 65  rst pointer (the
1ccf0 20 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65 72 29   memory pointer)
1cd00 20 6d 75 73 74 20 62 65 20 61 6c 69 67 6e 65 64   must be aligned
1cd10 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 0a 2a 2a   to an 8-byte.**
1cd20 20 62 6f 75 6e 64 61 72 79 20 6f 72 20 73 75 62   boundary or sub
1cd30 73 65 71 75 65 6e 74 20 62 65 68 61 76 69 6f 72  sequent behavior
1cd40 20 6f 66 20 53 51 4c 69 74 65 20 77 69 6c 6c 20   of SQLite will 
1cd50 62 65 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a  be undefined..**
1cd60 20 54 68 65 20 6d 69 6e 69 6d 75 6d 20 61 6c 6c   The minimum all
1cd70 6f 63 61 74 69 6f 6e 20 73 69 7a 65 20 69 73 20  ocation size is 
1cd80 63 61 70 70 65 64 20 61 74 20 32 2a 2a 31 32 2e  capped at 2**12.
1cd90 20 52 65 61 73 6f 6e 61 62 6c 65 20 76 61 6c 75   Reasonable valu
1cda0 65 73 0a 2a 2a 20 66 6f 72 20 74 68 65 20 6d 69  es.** for the mi
1cdb0 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e  nimum allocation
1cdc0 20 73 69 7a 65 20 61 72 65 20 32 2a 2a 35 20 74   size are 2**5 t
1cdd0 68 72 6f 75 67 68 20 32 2a 2a 38 2e 3c 2f 64 64  hrough 2**8.</dd
1cde0 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1cdf0 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58 5d 5d 20  _CONFIG_MUTEX]] 
1ce00 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1ce10 47 5f 4d 55 54 45 58 3c 2f 64 74 3e 0a 2a 2a 20  G_MUTEX</dt>.** 
1ce20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54  <dd> ^(The SQLIT
1ce30 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58 20 6f  E_CONFIG_MUTEX o
1ce40 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69  ption takes a si
1ce50 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68  ngle argument wh
1ce60 69 63 68 20 69 73 20 61 0a 2a 2a 20 70 6f 69 6e  ich is a.** poin
1ce70 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e  ter to an instan
1ce80 63 65 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74  ce of the [sqlit
1ce90 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73  e3_mutex_methods
1cea0 5d 20 73 74 72 75 63 74 75 72 65 2e 0a 2a 2a 20  ] structure..** 
1ceb0 54 68 65 20 61 72 67 75 6d 65 6e 74 20 73 70 65  The argument spe
1cec0 63 69 66 69 65 73 20 61 6c 74 65 72 6e 61 74 69  cifies alternati
1ced0 76 65 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d 75 74  ve low-level mut
1cee0 65 78 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 62  ex routines to b
1cef0 65 20 75 73 65 64 0a 2a 2a 20 69 6e 20 70 6c 61  e used.** in pla
1cf00 63 65 20 74 68 65 20 6d 75 74 65 78 20 72 6f 75  ce the mutex rou
1cf10 74 69 6e 65 73 20 62 75 69 6c 74 20 69 6e 74 6f  tines built into
1cf20 20 53 51 4c 69 74 65 2e 29 5e 20 20 5e 53 51 4c   SQLite.)^  ^SQL
1cf30 69 74 65 20 6d 61 6b 65 73 20 61 20 63 6f 70 79  ite makes a copy
1cf40 20 6f 66 0a 2a 2a 20 74 68 65 20 63 6f 6e 74 65   of.** the conte
1cf50 6e 74 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74  nt of the [sqlit
1cf60 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73  e3_mutex_methods
1cf70 5d 20 73 74 72 75 63 74 75 72 65 20 62 65 66 6f  ] structure befo
1cf80 72 65 20 74 68 65 20 63 61 6c 6c 20 74 6f 0a 2a  re the call to.*
1cf90 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  * [sqlite3_confi
1cfa0 67 28 29 5d 20 72 65 74 75 72 6e 73 2e 20 5e 49  g()] returns. ^I
1cfb0 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  f SQLite is comp
1cfc0 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65  iled with.** the
1cfd0 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53   [SQLITE_THREADS
1cfe0 41 46 45 20 7c 20 53 51 4c 49 54 45 5f 54 48 52  AFE | SQLITE_THR
1cff0 45 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69  EADSAFE=0] compi
1d000 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74  le-time option t
1d010 68 65 6e 0a 2a 2a 20 74 68 65 20 65 6e 74 69 72  hen.** the entir
1d020 65 20 6d 75 74 65 78 69 6e 67 20 73 75 62 73 79  e mutexing subsy
1d030 73 74 65 6d 20 69 73 20 6f 6d 69 74 74 65 64 20  stem is omitted 
1d040 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20 61  from the build a
1d050 6e 64 20 68 65 6e 63 65 20 63 61 6c 6c 73 20 74  nd hence calls t
1d060 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f  o.** [sqlite3_co
1d070 6e 66 69 67 28 29 5d 20 77 69 74 68 20 74 68 65  nfig()] with the
1d080 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
1d090 55 54 45 58 20 63 6f 6e 66 69 67 75 72 61 74 69  UTEX configurati
1d0a0 6f 6e 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 2a  on option will.*
1d0b0 2a 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45  * return [SQLITE
1d0c0 5f 45 52 52 4f 52 5d 2e 3c 2f 64 64 3e 0a 2a 2a  _ERROR].</dd>.**
1d0d0 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1d0e0 46 49 47 5f 47 45 54 4d 55 54 45 58 5d 5d 20 3c  FIG_GETMUTEX]] <
1d0f0 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1d100 5f 47 45 54 4d 55 54 45 58 3c 2f 64 74 3e 0a 2a  _GETMUTEX</dt>.*
1d110 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c  * <dd> ^(The SQL
1d120 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55  ITE_CONFIG_GETMU
1d130 54 45 58 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  TEX option takes
1d140 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
1d150 6e 74 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61  nt which.** is a
1d160 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
1d170 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 5b  nstance of the [
1d180 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65  sqlite3_mutex_me
1d190 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65  thods] structure
1d1a0 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  .  The.** [sqlit
1d1b0 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73  e3_mutex_methods
1d1c0 5d 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20 69  ].** structure i
1d1d0 73 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68  s filled with th
1d1e0 65 20 63 75 72 72 65 6e 74 6c 79 20 64 65 66 69  e currently defi
1d1f0 6e 65 64 20 6d 75 74 65 78 20 72 6f 75 74 69 6e  ned mutex routin
1d200 65 73 2e 29 5e 0a 2a 2a 20 54 68 69 73 20 6f 70  es.)^.** This op
1d210 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64  tion can be used
1d220 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 74 68 65   to overload the
1d230 20 64 65 66 61 75 6c 74 20 6d 75 74 65 78 20 61   default mutex a
1d240 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 72 6f 75  llocation.** rou
1d250 74 69 6e 65 73 20 77 69 74 68 20 61 20 77 72 61  tines with a wra
1d260 70 70 65 72 20 75 73 65 64 20 74 6f 20 74 72 61  pper used to tra
1d270 63 6b 20 6d 75 74 65 78 20 75 73 61 67 65 20 66  ck mutex usage f
1d280 6f 72 20 70 65 72 66 6f 72 6d 61 6e 63 65 0a 2a  or performance.*
1d290 2a 20 70 72 6f 66 69 6c 69 6e 67 20 6f 72 20 74  * profiling or t
1d2a0 65 73 74 69 6e 67 2c 20 66 6f 72 20 65 78 61 6d  esting, for exam
1d2b0 70 6c 65 2e 20 20 20 5e 49 66 20 53 51 4c 69 74  ple.   ^If SQLit
1d2c0 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
1d2d0 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54  th.** the [SQLIT
1d2e0 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c 20 53  E_THREADSAFE | S
1d2f0 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
1d300 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  =0] compile-time
1d310 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20   option then.** 
1d320 74 68 65 20 65 6e 74 69 72 65 20 6d 75 74 65 78  the entire mutex
1d330 69 6e 67 20 73 75 62 73 79 73 74 65 6d 20 69 73  ing subsystem is
1d340 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
1d350 65 20 62 75 69 6c 64 20 61 6e 64 20 68 65 6e 63  e build and henc
1d360 65 20 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73  e calls to.** [s
1d370 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
1d380 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54 45   with the SQLITE
1d390 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58  _CONFIG_GETMUTEX
1d3a0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
1d3b0 70 74 69 6f 6e 20 77 69 6c 6c 0a 2a 2a 20 72 65  ption will.** re
1d3c0 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52  turn [SQLITE_ERR
1d3d0 4f 52 5d 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  OR].</dd>.**.** 
1d3e0 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1d3f0 4c 4f 4f 4b 41 53 49 44 45 5d 5d 20 3c 64 74 3e  LOOKASIDE]] <dt>
1d400 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f  SQLITE_CONFIG_LO
1d410 4f 4b 41 53 49 44 45 3c 2f 64 74 3e 0a 2a 2a 20  OKASIDE</dt>.** 
1d420 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54  <dd> ^(The SQLIT
1d430 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49  E_CONFIG_LOOKASI
1d440 44 45 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  DE option takes 
1d450 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 68  two arguments th
1d460 61 74 20 64 65 74 65 72 6d 69 6e 65 0a 2a 2a 20  at determine.** 
1d470 74 68 65 20 64 65 66 61 75 6c 74 20 73 69 7a 65  the default size
1d480 20 6f 66 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65   of lookaside me
1d490 6d 6f 72 79 20 6f 6e 20 65 61 63 68 20 5b 64 61  mory on each [da
1d4a0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
1d4b0 6e 5d 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  n]..** The first
1d4c0 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65   argument is the
1d4d0 0a 2a 2a 20 73 69 7a 65 20 6f 66 20 65 61 63 68  .** size of each
1d4e0 20 6c 6f 6f 6b 61 73 69 64 65 20 62 75 66 66 65   lookaside buffe
1d4f0 72 20 73 6c 6f 74 20 61 6e 64 20 74 68 65 20 73  r slot and the s
1d500 65 63 6f 6e 64 20 69 73 20 74 68 65 20 6e 75 6d  econd is the num
1d510 62 65 72 20 6f 66 0a 2a 2a 20 73 6c 6f 74 73 20  ber of.** slots 
1d520 61 6c 6c 6f 63 61 74 65 64 20 74 6f 20 65 61 63  allocated to eac
1d530 68 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  h database conne
1d540 63 74 69 6f 6e 2e 29 5e 20 20 5e 28 53 51 4c 49  ction.)^  ^(SQLI
1d550 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  TE_CONFIG_LOOKAS
1d560 49 44 45 0a 2a 2a 20 73 65 74 73 20 74 68 65 20  IDE.** sets the 
1d570 3c 69 3e 64 65 66 61 75 6c 74 3c 2f 69 3e 20 6c  <i>default</i> l
1d580 6f 6f 6b 61 73 69 64 65 20 73 69 7a 65 2e 20 54  ookaside size. T
1d590 68 65 20 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  he [SQLITE_DBCON
1d5a0 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 0a 2a  FIG_LOOKASIDE].*
1d5b0 2a 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c  * option to [sql
1d5c0 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29  ite3_db_config()
1d5d0 5d 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  ] can be used to
1d5e0 20 63 68 61 6e 67 65 20 74 68 65 20 6c 6f 6f 6b   change the look
1d5f0 61 73 69 64 65 0a 2a 2a 20 63 6f 6e 66 69 67 75  aside.** configu
1d600 72 61 74 69 6f 6e 20 6f 6e 20 69 6e 64 69 76 69  ration on indivi
1d610 64 75 61 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  dual connections
1d620 2e 29 5e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  .)^ </dd>.**.** 
1d630 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1d640 50 43 41 43 48 45 32 5d 5d 20 3c 64 74 3e 53 51  PCACHE2]] <dt>SQ
1d650 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43  LITE_CONFIG_PCAC
1d660 48 45 32 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  HE2</dt>.** <dd>
1d670 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f   ^(The SQLITE_CO
1d680 4e 46 49 47 5f 50 43 41 43 48 45 32 20 6f 70 74  NFIG_PCACHE2 opt
1d690 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67  ion takes a sing
1d6a0 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63  le argument whic
1d6b0 68 20 69 73 20 0a 2a 2a 20 61 20 70 6f 69 6e 74  h is .** a point
1d6c0 65 72 20 74 6f 20 61 6e 20 5b 73 71 6c 69 74 65  er to an [sqlite
1d6d0 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73  3_pcache_methods
1d6e0 32 5d 20 6f 62 6a 65 63 74 2e 20 20 54 68 69 73  2] object.  This
1d6f0 20 6f 62 6a 65 63 74 20 73 70 65 63 69 66 69 65   object specifie
1d700 73 0a 2a 2a 20 74 68 65 20 69 6e 74 65 72 66 61  s.** the interfa
1d710 63 65 20 74 6f 20 61 20 63 75 73 74 6f 6d 20 70  ce to a custom p
1d720 61 67 65 20 63 61 63 68 65 20 69 6d 70 6c 65 6d  age cache implem
1d730 65 6e 74 61 74 69 6f 6e 2e 29 5e 0a 2a 2a 20 5e  entation.)^.** ^
1d740 53 51 4c 69 74 65 20 6d 61 6b 65 73 20 61 20 63  SQLite makes a c
1d750 6f 70 79 20 6f 66 20 74 68 65 20 5b 73 71 6c 69  opy of the [sqli
1d760 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f  te3_pcache_metho
1d770 64 73 32 5d 20 6f 62 6a 65 63 74 2e 3c 2f 64 64  ds2] object.</dd
1d780 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1d790 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48  _CONFIG_GETPCACH
1d7a0 45 32 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  E2]] <dt>SQLITE_
1d7b0 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45  CONFIG_GETPCACHE
1d7c0 32 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  2</dt>.** <dd> ^
1d7d0 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  (The SQLITE_CONF
1d7e0 49 47 5f 47 45 54 50 43 41 43 48 45 32 20 6f 70  IG_GETPCACHE2 op
1d7f0 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e  tion takes a sin
1d800 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69  gle argument whi
1d810 63 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74  ch.** is a point
1d820 65 72 20 74 6f 20 61 6e 20 5b 73 71 6c 69 74 65  er to an [sqlite
1d830 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73  3_pcache_methods
1d840 32 5d 20 6f 62 6a 65 63 74 2e 20 20 53 51 4c 69  2] object.  SQLi
1d850 74 65 20 63 6f 70 69 65 73 20 6f 66 0a 2a 2a 20  te copies of.** 
1d860 74 68 65 20 63 75 72 72 65 6e 74 20 70 61 67 65  the current page
1d870 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74   cache implement
1d880 61 74 69 6f 6e 20 69 6e 74 6f 20 74 68 61 74 20  ation into that 
1d890 6f 62 6a 65 63 74 2e 29 5e 20 3c 2f 64 64 3e 0a  object.)^ </dd>.
1d8a0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1d8b0 4f 4e 46 49 47 5f 4c 4f 47 5d 5d 20 3c 64 74 3e  ONFIG_LOG]] <dt>
1d8c0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f  SQLITE_CONFIG_LO
1d8d0 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 54  G</dt>.** <dd> T
1d8e0 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1d8f0 5f 4c 4f 47 20 6f 70 74 69 6f 6e 20 69 73 20 75  _LOG option is u
1d900 73 65 64 20 74 6f 20 63 6f 6e 66 69 67 75 72 65  sed to configure
1d910 20 74 68 65 20 53 51 4c 69 74 65 0a 2a 2a 20 67   the SQLite.** g
1d920 6c 6f 62 61 6c 20 5b 65 72 72 6f 72 20 6c 6f 67  lobal [error log
1d930 5d 2e 0a 2a 2a 20 28 5e 54 68 65 20 53 51 4c 49  ]..** (^The SQLI
1d940 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 6f 70  TE_CONFIG_LOG op
1d950 74 69 6f 6e 20 74 61 6b 65 73 20 74 77 6f 20 61  tion takes two a
1d960 72 67 75 6d 65 6e 74 73 3a 20 61 20 70 6f 69 6e  rguments: a poin
1d970 74 65 72 20 74 6f 20 61 0a 2a 2a 20 66 75 6e 63  ter to a.** func
1d980 74 69 6f 6e 20 77 69 74 68 20 61 20 63 61 6c 6c  tion with a call
1d990 20 73 69 67 6e 61 74 75 72 65 20 6f 66 20 76 6f   signature of vo
1d9a0 69 64 28 2a 29 28 76 6f 69 64 2a 2c 69 6e 74 2c  id(*)(void*,int,
1d9b0 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c 20 0a 2a  const char*), .*
1d9c0 2a 20 61 6e 64 20 61 20 70 6f 69 6e 74 65 72 20  * and a pointer 
1d9d0 74 6f 20 76 6f 69 64 2e 20 5e 49 66 20 74 68 65  to void. ^If the
1d9e0 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65   function pointe
1d9f0 72 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20 69  r is not NULL, i
1da00 74 20 69 73 0a 2a 2a 20 69 6e 76 6f 6b 65 64 20  t is.** invoked 
1da10 62 79 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28  by [sqlite3_log(
1da20 29 5d 20 74 6f 20 70 72 6f 63 65 73 73 20 65 61  )] to process ea
1da30 63 68 20 6c 6f 67 67 69 6e 67 20 65 76 65 6e 74  ch logging event
1da40 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20 66 75  .  ^If the.** fu
1da50 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69  nction pointer i
1da60 73 20 4e 55 4c 4c 2c 20 74 68 65 20 5b 73 71 6c  s NULL, the [sql
1da70 69 74 65 33 5f 6c 6f 67 28 29 5d 20 69 6e 74 65  ite3_log()] inte
1da80 72 66 61 63 65 20 62 65 63 6f 6d 65 73 20 61 20  rface becomes a 
1da90 6e 6f 2d 6f 70 2e 0a 2a 2a 20 5e 54 68 65 20 76  no-op..** ^The v
1daa0 6f 69 64 20 70 6f 69 6e 74 65 72 20 74 68 61 74  oid pointer that
1dab0 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61   is the second a
1dac0 72 67 75 6d 65 6e 74 20 74 6f 20 53 51 4c 49 54  rgument to SQLIT
1dad0 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 69 73 0a  E_CONFIG_LOG is.
1dae0 2a 2a 20 70 61 73 73 65 64 20 74 68 72 6f 75 67  ** passed throug
1daf0 68 20 61 73 20 74 68 65 20 66 69 72 73 74 20 70  h as the first p
1db00 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
1db10 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
1db20 6e 65 64 20 6c 6f 67 67 65 72 0a 2a 2a 20 66 75  ned logger.** fu
1db30 6e 63 74 69 6f 6e 20 77 68 65 6e 65 76 65 72 20  nction whenever 
1db40 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 20 69 73  that function is
1db50 20 69 6e 76 6f 6b 65 64 2e 20 20 5e 54 68 65 20   invoked.  ^The 
1db60 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
1db70 20 74 6f 0a 2a 2a 20 74 68 65 20 6c 6f 67 67 65   to.** the logge
1db80 72 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20  r function is a 
1db90 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69 72 73  copy of the firs
1dba0 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  t parameter to t
1dbb0 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  he corresponding
1dbc0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67  .** [sqlite3_log
1dbd0 28 29 5d 20 63 61 6c 6c 20 61 6e 64 20 69 73 20  ()] call and is 
1dbe0 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 61  intended to be a
1dbf0 20 5b 72 65 73 75 6c 74 20 63 6f 64 65 5d 20 6f   [result code] o
1dc00 72 20 61 6e 0a 2a 2a 20 5b 65 78 74 65 6e 64 65  r an.** [extende
1dc10 64 20 72 65 73 75 6c 74 20 63 6f 64 65 5d 2e 20  d result code]. 
1dc20 20 5e 54 68 65 20 74 68 69 72 64 20 70 61 72 61   ^The third para
1dc30 6d 65 74 65 72 20 70 61 73 73 65 64 20 74 6f 20  meter passed to 
1dc40 74 68 65 20 6c 6f 67 67 65 72 20 69 73 0a 2a 2a  the logger is.**
1dc50 20 6c 6f 67 20 6d 65 73 73 61 67 65 20 61 66 74   log message aft
1dc60 65 72 20 66 6f 72 6d 61 74 74 69 6e 67 20 76 69  er formatting vi
1dc70 61 20 5b 73 71 6c 69 74 65 33 5f 73 6e 70 72 69  a [sqlite3_snpri
1dc80 6e 74 66 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 53  ntf()]..** The S
1dc90 51 4c 69 74 65 20 6c 6f 67 67 69 6e 67 20 69 6e  QLite logging in
1dca0 74 65 72 66 61 63 65 20 69 73 20 6e 6f 74 20 72  terface is not r
1dcb0 65 65 6e 74 72 61 6e 74 3b 20 74 68 65 20 6c 6f  eentrant; the lo
1dcc0 67 67 65 72 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a  gger function.**
1dcd0 20 73 75 70 70 6c 69 65 64 20 62 79 20 74 68 65   supplied by the
1dce0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73   application mus
1dcf0 74 20 6e 6f 74 20 69 6e 76 6f 6b 65 20 61 6e 79  t not invoke any
1dd00 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63   SQLite interfac
1dd10 65 2e 0a 2a 2a 20 49 6e 20 61 20 6d 75 6c 74 69  e..** In a multi
1dd20 2d 74 68 72 65 61 64 65 64 20 61 70 70 6c 69 63  -threaded applic
1dd30 61 74 69 6f 6e 2c 20 74 68 65 20 61 70 70 6c 69  ation, the appli
1dd40 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 6c  cation-defined l
1dd50 6f 67 67 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f  ogger.** functio
1dd60 6e 20 6d 75 73 74 20 62 65 20 74 68 72 65 61 64  n must be thread
1dd70 73 61 66 65 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  safe. </dd>.**.*
1dd80 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1dd90 47 5f 55 52 49 5d 5d 20 3c 64 74 3e 53 51 4c 49  G_URI]] <dt>SQLI
1dda0 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 0a 2a 2a  TE_CONFIG_URI.**
1ddb0 20 3c 64 64 3e 5e 28 54 68 65 20 53 51 4c 49 54   <dd>^(The SQLIT
1ddc0 45 5f 43 4f 4e 46 49 47 5f 55 52 49 20 6f 70 74  E_CONFIG_URI opt
1ddd0 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67  ion takes a sing
1dde0 6c 65 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74  le argument of t
1ddf0 79 70 65 20 69 6e 74 2e 0a 2a 2a 20 49 66 20 6e  ype int..** If n
1de00 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 55 52  on-zero, then UR
1de10 49 20 68 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c  I handling is gl
1de20 6f 62 61 6c 6c 79 20 65 6e 61 62 6c 65 64 2e 20  obally enabled. 
1de30 49 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  If the parameter
1de40 20 69 73 20 7a 65 72 6f 2c 0a 2a 2a 20 74 68 65   is zero,.** the
1de50 6e 20 55 52 49 20 68 61 6e 64 6c 69 6e 67 20 69  n URI handling i
1de60 73 20 67 6c 6f 62 61 6c 6c 79 20 64 69 73 61 62  s globally disab
1de70 6c 65 64 2e 29 5e 20 5e 49 66 20 55 52 49 20 68  led.)^ ^If URI h
1de80 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61  andling is globa
1de90 6c 6c 79 0a 2a 2a 20 65 6e 61 62 6c 65 64 2c 20  lly.** enabled, 
1dea0 61 6c 6c 20 66 69 6c 65 6e 61 6d 65 73 20 70 61  all filenames pa
1deb0 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33  ssed to [sqlite3
1dec0 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74  _open()], [sqlit
1ded0 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 0a 2a  e3_open_v2()],.*
1dee0 2a 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  * [sqlite3_open1
1def0 36 28 29 5d 20 6f 72 0a 2a 2a 20 73 70 65 63 69  6()] or.** speci
1df00 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  fied as part of 
1df10 5b 41 54 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64  [ATTACH] command
1df20 73 20 61 72 65 20 69 6e 74 65 72 70 72 65 74 65  s are interprete
1df30 64 20 61 73 20 55 52 49 73 2c 20 72 65 67 61 72  d as URIs, regar
1df40 64 6c 65 73 73 0a 2a 2a 20 6f 66 20 77 68 65 74  dless.** of whet
1df50 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 5b  her or not the [
1df60 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d  SQLITE_OPEN_URI]
1df70 20 66 6c 61 67 20 69 73 20 73 65 74 20 77 68 65   flag is set whe
1df80 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a  n the database.*
1df90 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  * connection is 
1dfa0 6f 70 65 6e 65 64 2e 20 5e 49 66 20 69 74 20 69  opened. ^If it i
1dfb0 73 20 67 6c 6f 62 61 6c 6c 79 20 64 69 73 61 62  s globally disab
1dfc0 6c 65 64 2c 20 66 69 6c 65 6e 61 6d 65 73 20 61  led, filenames a
1dfd0 72 65 0a 2a 2a 20 6f 6e 6c 79 20 69 6e 74 65 72  re.** only inter
1dfe0 70 72 65 74 65 64 20 61 73 20 55 52 49 73 20 69  preted as URIs i
1dff0 66 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 50 45  f the SQLITE_OPE
1e000 4e 5f 55 52 49 20 66 6c 61 67 20 69 73 20 73 65  N_URI flag is se
1e010 74 20 77 68 65 6e 20 74 68 65 0a 2a 2a 20 64 61  t when the.** da
1e020 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
1e030 6e 20 69 73 20 6f 70 65 6e 65 64 2e 20 5e 28 42  n is opened. ^(B
1e040 79 20 64 65 66 61 75 6c 74 2c 20 55 52 49 20 68  y default, URI h
1e050 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61  andling is globa
1e060 6c 6c 79 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2e  lly.** disabled.
1e070 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   The default val
1e080 75 65 20 6d 61 79 20 62 65 20 63 68 61 6e 67 65  ue may be change
1e090 64 20 62 79 20 63 6f 6d 70 69 6c 69 6e 67 20 77  d by compiling w
1e0a0 69 74 68 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49  ith the.** [SQLI
1e0b0 54 45 5f 55 53 45 5f 55 52 49 5d 20 73 79 6d 62  TE_USE_URI] symb
1e0c0 6f 6c 20 64 65 66 69 6e 65 64 2e 29 5e 0a 2a 2a  ol defined.)^.**
1e0d0 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1e0e0 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44  FIG_COVERING_IND
1e0f0 45 58 5f 53 43 41 4e 5d 5d 20 3c 64 74 3e 53 51  EX_SCAN]] <dt>SQ
1e100 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45  LITE_CONFIG_COVE
1e110 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 0a  RING_INDEX_SCAN.
1e120 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49  ** <dd>^The SQLI
1e130 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49  TE_CONFIG_COVERI
1e140 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 20 6f 70  NG_INDEX_SCAN op
1e150 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e  tion takes a sin
1e160 67 6c 65 20 69 6e 74 65 67 65 72 0a 2a 2a 20 61  gle integer.** a
1e170 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20 69 73  rgument which is
1e180 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
1e190 61 20 62 6f 6f 6c 65 61 6e 20 69 6e 20 6f 72 64  a boolean in ord
1e1a0 65 72 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20  er to enable or 
1e1b0 64 69 73 61 62 6c 65 0a 2a 2a 20 74 68 65 20 75  disable.** the u
1e1c0 73 65 20 6f 66 20 63 6f 76 65 72 69 6e 67 20 69  se of covering i
1e1d0 6e 64 69 63 65 73 20 66 6f 72 20 66 75 6c 6c 20  ndices for full 
1e1e0 74 61 62 6c 65 20 73 63 61 6e 73 20 69 6e 20 74  table scans in t
1e1f0 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a  he query optimiz
1e200 65 72 2e 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61  er..** ^The defa
1e210 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73 20 64  ult setting is d
1e220 65 74 65 72 6d 69 6e 65 64 0a 2a 2a 20 62 79 20  etermined.** by 
1e230 74 68 65 20 5b 53 51 4c 49 54 45 5f 41 4c 4c 4f  the [SQLITE_ALLO
1e240 57 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58  W_COVERING_INDEX
1e250 5f 53 43 41 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74  _SCAN] compile-t
1e260 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 6f 72 20 69  ime option, or i
1e270 73 20 22 6f 6e 22 0a 2a 2a 20 69 66 20 74 68 61  s "on".** if tha
1e280 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  t compile-time o
1e290 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64  ption is omitted
1e2a0 2e 0a 2a 2a 20 54 68 65 20 61 62 69 6c 69 74 79  ..** The ability
1e2b0 20 74 6f 20 64 69 73 61 62 6c 65 20 74 68 65 20   to disable the 
1e2c0 75 73 65 20 6f 66 20 63 6f 76 65 72 69 6e 67 20  use of covering 
1e2d0 69 6e 64 69 63 65 73 20 66 6f 72 20 66 75 6c 6c  indices for full
1e2e0 20 74 61 62 6c 65 20 73 63 61 6e 73 0a 2a 2a 20   table scans.** 
1e2f0 69 73 20 62 65 63 61 75 73 65 20 73 6f 6d 65 20  is because some 
1e300 69 6e 63 6f 72 72 65 63 74 6c 79 20 63 6f 64 65  incorrectly code
1e310 64 20 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61  d legacy applica
1e320 74 69 6f 6e 73 20 6d 69 67 68 74 20 6d 61 6c 66  tions might malf
1e330 75 6e 63 74 69 6f 6e 0a 2a 2a 20 77 68 65 6e 20  unction.** when 
1e340 74 68 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  the optimization
1e350 20 69 73 20 65 6e 61 62 6c 65 64 2e 20 20 50 72   is enabled.  Pr
1e360 6f 76 69 64 69 6e 67 20 74 68 65 20 61 62 69 6c  oviding the abil
1e370 69 74 79 20 74 6f 0a 2a 2a 20 64 69 73 61 62 6c  ity to.** disabl
1e380 65 20 74 68 65 20 6f 70 74 69 6d 69 7a 61 74 69  e the optimizati
1e390 6f 6e 20 61 6c 6c 6f 77 73 20 74 68 65 20 6f 6c  on allows the ol
1e3a0 64 65 72 2c 20 62 75 67 67 79 20 61 70 70 6c 69  der, buggy appli
1e3b0 63 61 74 69 6f 6e 20 63 6f 64 65 20 74 6f 20 77  cation code to w
1e3c0 6f 72 6b 0a 2a 2a 20 77 69 74 68 6f 75 74 20 63  ork.** without c
1e3d0 68 61 6e 67 65 20 65 76 65 6e 20 77 69 74 68 20  hange even with 
1e3e0 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20 6f  newer versions o
1e3f0 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20  f SQLite..**.** 
1e400 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1e410 50 43 41 43 48 45 5d 5d 20 5b 5b 53 51 4c 49 54  PCACHE]] [[SQLIT
1e420 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43  E_CONFIG_GETPCAC
1e430 48 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49  HE]].** <dt>SQLI
1e440 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45  TE_CONFIG_PCACHE
1e450 20 61 6e 64 20 53 51 4c 49 54 45 5f 43 4f 4e 46   and SQLITE_CONF
1e460 49 47 5f 47 45 54 50 43 41 43 48 45 0a 2a 2a 20  IG_GETPCACHE.** 
1e470 3c 64 64 3e 20 54 68 65 73 65 20 6f 70 74 69 6f  <dd> These optio
1e480 6e 73 20 61 72 65 20 6f 62 73 6f 6c 65 74 65 20  ns are obsolete 
1e490 61 6e 64 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62  and should not b
1e4a0 65 20 75 73 65 64 20 62 79 20 6e 65 77 20 63 6f  e used by new co
1e4b0 64 65 2e 0a 2a 2a 20 54 68 65 79 20 61 72 65 20  de..** They are 
1e4c0 72 65 74 61 69 6e 65 64 20 66 6f 72 20 62 61 63  retained for bac
1e4d0 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69  kwards compatibi
1e4e0 6c 69 74 79 20 62 75 74 20 61 72 65 20 6e 6f 77  lity but are now
1e4f0 20 6e 6f 2d 6f 70 73 2e 0a 2a 2a 20 3c 2f 64 64   no-ops..** </dd
1e500 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1e510 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 5d  _CONFIG_SQLLOG]]
1e520 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  .** <dt>SQLITE_C
1e530 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 0a 2a 2a 20  ONFIG_SQLLOG.** 
1e540 3c 64 64 3e 54 68 69 73 20 6f 70 74 69 6f 6e 20  <dd>This option 
1e550 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c  is only availabl
1e560 65 20 69 66 20 73 71 6c 69 74 65 20 69 73 20 63  e if sqlite is c
1e570 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65  ompiled with the
1e580 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42  .** [SQLITE_ENAB
1e590 4c 45 5f 53 51 4c 4c 4f 47 5d 20 70 72 65 2d 70  LE_SQLLOG] pre-p
1e5a0 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 64  rocessor macro d
1e5b0 65 66 69 6e 65 64 2e 20 54 68 65 20 66 69 72 73  efined. The firs
1e5c0 74 20 61 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c  t argument shoul
1e5d0 64 0a 2a 2a 20 62 65 20 61 20 70 6f 69 6e 74 65  d.** be a pointe
1e5e0 72 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20  r to a function 
1e5f0 6f 66 20 74 79 70 65 20 76 6f 69 64 28 2a 29 28  of type void(*)(
1e600 76 6f 69 64 2a 2c 73 71 6c 69 74 65 33 2a 2c 63  void*,sqlite3*,c
1e610 6f 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e 74 29  onst char*, int)
1e620 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20  ..** The second 
1e630 73 68 6f 75 6c 64 20 62 65 20 6f 66 20 74 79 70  should be of typ
1e640 65 20 28 76 6f 69 64 2a 29 2e 20 54 68 65 20 63  e (void*). The c
1e650 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
1e660 65 64 20 62 79 20 74 68 65 20 6c 69 62 72 61 72  ed by the librar
1e670 79 0a 2a 2a 20 69 6e 20 74 68 72 65 65 20 73 65  y.** in three se
1e680 70 61 72 61 74 65 20 63 69 72 63 75 6d 73 74 61  parate circumsta
1e690 6e 63 65 73 2c 20 69 64 65 6e 74 69 66 69 65 64  nces, identified
1e6a0 20 62 79 20 74 68 65 20 76 61 6c 75 65 20 70 61   by the value pa
1e6b0 73 73 65 64 20 61 73 20 74 68 65 0a 2a 2a 20 66  ssed as the.** f
1e6c0 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 2e  ourth parameter.
1e6d0 20 49 66 20 74 68 65 20 66 6f 75 72 74 68 20 70   If the fourth p
1e6e0 61 72 61 6d 65 74 65 72 20 69 73 20 30 2c 20 74  arameter is 0, t
1e6f0 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
1e700 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 70   connection.** p
1e710 61 73 73 65 64 20 61 73 20 74 68 65 20 73 65 63  assed as the sec
1e720 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 68 61 73  ond argument has
1e730 20 6a 75 73 74 20 62 65 65 6e 20 6f 70 65 6e 65   just been opene
1e740 64 2e 20 54 68 65 20 74 68 69 72 64 20 61 72 67  d. The third arg
1e750 75 6d 65 6e 74 0a 2a 2a 20 70 6f 69 6e 74 73 20  ument.** points 
1e760 74 6f 20 61 20 62 75 66 66 65 72 20 63 6f 6e 74  to a buffer cont
1e770 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 6d 65 20  aining the name 
1e780 6f 66 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61  of the main data
1e790 62 61 73 65 20 66 69 6c 65 2e 20 49 66 20 74 68  base file. If th
1e7a0 65 0a 2a 2a 20 66 6f 75 72 74 68 20 70 61 72 61  e.** fourth para
1e7b0 6d 65 74 65 72 20 69 73 20 31 2c 20 74 68 65 6e  meter is 1, then
1e7c0 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
1e7d0 6e 74 20 74 68 61 74 20 74 68 65 20 74 68 69 72  nt that the thir
1e7e0 64 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 70  d parameter.** p
1e7f0 6f 69 6e 74 73 20 74 6f 20 68 61 73 20 6a 75 73  oints to has jus
1e800 74 20 62 65 65 6e 20 65 78 65 63 75 74 65 64 2e  t been executed.
1e810 20 4f 72 2c 20 69 66 20 74 68 65 20 66 6f 75 72   Or, if the four
1e820 74 68 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  th parameter is 
1e830 32 2c 20 74 68 65 6e 0a 2a 2a 20 74 68 65 20 63  2, then.** the c
1e840 6f 6e 6e 65 63 74 69 6f 6e 20 62 65 69 6e 67 20  onnection being 
1e850 70 61 73 73 65 64 20 61 73 20 74 68 65 20 73 65  passed as the se
1e860 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69  cond parameter i
1e870 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20  s being closed. 
1e880 54 68 65 0a 2a 2a 20 74 68 69 72 64 20 70 61 72  The.** third par
1e890 61 6d 65 74 65 72 20 69 73 20 70 61 73 73 65 64  ameter is passed
1e8a0 20 4e 55 4c 4c 20 49 6e 20 74 68 69 73 20 63 61   NULL In this ca
1e8b0 73 65 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 20  se.  An example 
1e8c0 6f 66 20 75 73 69 6e 67 20 74 68 69 73 0a 2a 2a  of using this.**
1e8d0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
1e8e0 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 73 65 65  ption can be see
1e8f0 6e 20 69 6e 20 74 68 65 20 22 74 65 73 74 5f 73  n in the "test_s
1e900 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72 63 65 20  qllog.c" source 
1e910 66 69 6c 65 20 69 6e 0a 2a 2a 20 74 68 65 20 63  file in.** the c
1e920 61 6e 6f 6e 69 63 61 6c 20 53 51 4c 69 74 65 20  anonical SQLite 
1e930 73 6f 75 72 63 65 20 74 72 65 65 2e 3c 2f 64 64  source tree.</dd
1e940 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1e950 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a  _CONFIG_MMAP_SIZ
1e960 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54  E]].** <dt>SQLIT
1e970 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49  E_CONFIG_MMAP_SI
1e980 5a 45 0a 2a 2a 20 3c 64 64 3e 5e 53 51 4c 49 54  ZE.** <dd>^SQLIT
1e990 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49  E_CONFIG_MMAP_SI
1e9a0 5a 45 20 74 61 6b 65 73 20 74 77 6f 20 36 34 2d  ZE takes two 64-
1e9b0 62 69 74 20 69 6e 74 65 67 65 72 20 28 73 71 6c  bit integer (sql
1e9c0 69 74 65 33 5f 69 6e 74 36 34 29 20 76 61 6c 75  ite3_int64) valu
1e9d0 65 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 74  es.** that are t
1e9e0 68 65 20 64 65 66 61 75 6c 74 20 6d 6d 61 70 20  he default mmap 
1e9f0 73 69 7a 65 20 6c 69 6d 69 74 20 28 74 68 65 20  size limit (the 
1ea00 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20  default setting 
1ea10 66 6f 72 0a 2a 2a 20 5b 50 52 41 47 4d 41 20 6d  for.** [PRAGMA m
1ea20 6d 61 70 5f 73 69 7a 65 5d 29 20 61 6e 64 20 74  map_size]) and t
1ea30 68 65 20 6d 61 78 69 6d 75 6d 20 61 6c 6c 6f 77  he maximum allow
1ea40 65 64 20 6d 6d 61 70 20 73 69 7a 65 20 6c 69 6d  ed mmap size lim
1ea50 69 74 2e 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61  it..** ^The defa
1ea60 75 6c 74 20 73 65 74 74 69 6e 67 20 63 61 6e 20  ult setting can 
1ea70 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79  be overridden by
1ea80 20 65 61 63 68 20 64 61 74 61 62 61 73 65 20 63   each database c
1ea90 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67 0a  onnection using.
1eaa0 2a 2a 20 65 69 74 68 65 72 20 74 68 65 20 5b 50  ** either the [P
1eab0 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69 7a 65 5d  RAGMA mmap_size]
1eac0 20 63 6f 6d 6d 61 6e 64 2c 20 6f 72 20 62 79 20   command, or by 
1ead0 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 53 51  using the.** [SQ
1eae0 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f  LITE_FCNTL_MMAP_
1eaf0 53 49 5a 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72  SIZE] file contr
1eb00 6f 6c 2e 20 20 5e 28 54 68 65 20 6d 61 78 69 6d  ol.  ^(The maxim
1eb10 75 6d 20 61 6c 6c 6f 77 65 64 20 6d 6d 61 70 20  um allowed mmap 
1eb20 73 69 7a 65 0a 2a 2a 20 77 69 6c 6c 20 62 65 20  size.** will be 
1eb30 73 69 6c 65 6e 74 6c 79 20 74 72 75 6e 63 61 74  silently truncat
1eb40 65 64 20 69 66 20 6e 65 63 65 73 73 61 72 79 20  ed if necessary 
1eb50 73 6f 20 74 68 61 74 20 69 74 20 64 6f 65 73 20  so that it does 
1eb60 6e 6f 74 20 65 78 63 65 65 64 20 74 68 65 0a 2a  not exceed the.*
1eb70 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6d  * compile-time m
1eb80 61 78 69 6d 75 6d 20 6d 6d 61 70 20 73 69 7a 65  aximum mmap size
1eb90 20 73 65 74 20 62 79 20 74 68 65 0a 2a 2a 20 5b   set by the.** [
1eba0 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f  SQLITE_MAX_MMAP_
1ebb0 53 49 5a 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  SIZE] compile-ti
1ebc0 6d 65 20 6f 70 74 69 6f 6e 2e 29 5e 0a 2a 2a 20  me option.)^.** 
1ebd0 5e 49 66 20 65 69 74 68 65 72 20 61 72 67 75 6d  ^If either argum
1ebe0 65 6e 74 20 74 6f 20 74 68 69 73 20 6f 70 74 69  ent to this opti
1ebf0 6f 6e 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20  on is negative, 
1ec00 74 68 65 6e 20 74 68 61 74 20 61 72 67 75 6d 65  then that argume
1ec10 6e 74 20 69 73 0a 2a 2a 20 63 68 61 6e 67 65 64  nt is.** changed
1ec20 20 74 6f 20 69 74 73 20 63 6f 6d 70 69 6c 65 2d   to its compile-
1ec30 74 69 6d 65 20 64 65 66 61 75 6c 74 2e 0a 2a 2a  time default..**
1ec40 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1ec50 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49  FIG_WIN32_HEAPSI
1ec60 5a 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49  ZE]].** <dt>SQLI
1ec70 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f  TE_CONFIG_WIN32_
1ec80 48 45 41 50 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e  HEAPSIZE.** <dd>
1ec90 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  ^The SQLITE_CONF
1eca0 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a  IG_WIN32_HEAPSIZ
1ecb0 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79  E option is only
1ecc0 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20 53 51   available if SQ
1ecd0 4c 69 74 65 20 69 73 0a 2a 2a 20 63 6f 6d 70 69  Lite is.** compi
1ece0 6c 65 64 20 66 6f 72 20 57 69 6e 64 6f 77 73 20  led for Windows 
1ecf0 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54 45  with the [SQLITE
1ed00 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5d 20 70  _WIN32_MALLOC] p
1ed10 72 65 2d 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  re-processor mac
1ed20 72 6f 0a 2a 2a 20 64 65 66 69 6e 65 64 2e 20 5e  ro.** defined. ^
1ed30 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49  SQLITE_CONFIG_WI
1ed40 4e 33 32 5f 48 45 41 50 53 49 5a 45 20 74 61 6b  N32_HEAPSIZE tak
1ed50 65 73 20 61 20 33 32 2d 62 69 74 20 75 6e 73 69  es a 32-bit unsi
1ed60 67 6e 65 64 20 69 6e 74 65 67 65 72 20 76 61 6c  gned integer val
1ed70 75 65 0a 2a 2a 20 74 68 61 74 20 73 70 65 63 69  ue.** that speci
1ed80 66 69 65 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  fies the maximum
1ed90 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63 72 65   size of the cre
1eda0 61 74 65 64 20 68 65 61 70 2e 0a 2a 2a 0a 2a 2a  ated heap..**.**
1edb0 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1edc0 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 5d 5d 0a  _PCACHE_HDRSZ]].
1edd0 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ** <dt>SQLITE_CO
1ede0 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53  NFIG_PCACHE_HDRS
1edf0 5a 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51  Z.** <dd>^The SQ
1ee00 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43  LITE_CONFIG_PCAC
1ee10 48 45 5f 48 44 52 53 5a 20 6f 70 74 69 6f 6e 20  HE_HDRSZ option 
1ee20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 70  takes a single p
1ee30 61 72 61 6d 65 74 65 72 20 77 68 69 63 68 0a 2a  arameter which.*
1ee40 2a 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  * is a pointer t
1ee50 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 61 6e 64  o an integer and
1ee60 20 77 72 69 74 65 73 20 69 6e 74 6f 20 74 68 61   writes into tha
1ee70 74 20 69 6e 74 65 67 65 72 20 74 68 65 20 6e 75  t integer the nu
1ee80 6d 62 65 72 20 6f 66 20 65 78 74 72 61 0a 2a 2a  mber of extra.**
1ee90 20 62 79 74 65 73 20 70 65 72 20 70 61 67 65 20   bytes per page 
1eea0 72 65 71 75 69 72 65 64 20 66 6f 72 20 65 61 63  required for eac
1eeb0 68 20 70 61 67 65 20 69 6e 20 5b 53 51 4c 49 54  h page in [SQLIT
1eec0 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43  E_CONFIG_PAGECAC
1eed0 48 45 5d 2e 0a 2a 2a 20 54 68 65 20 61 6d 6f 75  HE]..** The amou
1eee0 6e 74 20 6f 66 20 65 78 74 72 61 20 73 70 61 63  nt of extra spac
1eef0 65 20 72 65 71 75 69 72 65 64 20 63 61 6e 20 63  e required can c
1ef00 68 61 6e 67 65 20 64 65 70 65 6e 64 69 6e 67 20  hange depending 
1ef10 6f 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 2c  on the compiler,
1ef20 0a 2a 2a 20 74 61 72 67 65 74 20 70 6c 61 74 66  .** target platf
1ef30 6f 72 6d 2c 20 61 6e 64 20 53 51 4c 69 74 65 20  orm, and SQLite 
1ef40 76 65 72 73 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b  version..**.** [
1ef50 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50  [SQLITE_CONFIG_P
1ef60 4d 41 53 5a 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  MASZ]].** <dt>SQ
1ef70 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53  LITE_CONFIG_PMAS
1ef80 5a 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51  Z.** <dd>^The SQ
1ef90 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53  LITE_CONFIG_PMAS
1efa0 5a 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61  Z option takes a
1efb0 20 73 69 6e 67 6c 65 20 70 61 72 61 6d 65 74 65   single paramete
1efc0 72 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61 6e  r which.** is an
1efd0 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65   unsigned intege
1efe0 72 20 61 6e 64 20 73 65 74 73 20 74 68 65 20 22  r and sets the "
1eff0 4d 69 6e 69 6d 75 6d 20 50 4d 41 20 53 69 7a 65  Minimum PMA Size
1f000 22 20 66 6f 72 20 74 68 65 20 6d 75 6c 74 69 74  " for the multit
1f010 68 72 65 61 64 65 64 0a 2a 2a 20 73 6f 72 74 65  hreaded.** sorte
1f020 72 20 74 6f 20 74 68 61 74 20 69 6e 74 65 67 65  r to that intege
1f030 72 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20  r.  The default 
1f040 6d 69 6e 69 6d 75 6d 20 50 4d 41 20 53 69 7a 65  minimum PMA Size
1f050 20 69 73 20 73 65 74 20 62 79 20 74 68 65 0a 2a   is set by the.*
1f060 2a 20 5b 53 51 4c 49 54 45 5f 53 4f 52 54 45 52  * [SQLITE_SORTER
1f070 5f 50 4d 41 53 5a 5d 20 63 6f 6d 70 69 6c 65 2d  _PMASZ] compile-
1f080 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 20 20 4e 65  time option.  Ne
1f090 77 20 74 68 72 65 61 64 73 20 61 72 65 20 6c 61  w threads are la
1f0a0 75 6e 63 68 65 64 0a 2a 2a 20 74 6f 20 68 65 6c  unched.** to hel
1f0b0 70 20 77 69 74 68 20 73 6f 72 74 20 6f 70 65 72  p with sort oper
1f0c0 61 74 69 6f 6e 73 20 77 68 65 6e 20 6d 75 6c 74  ations when mult
1f0d0 69 74 68 72 65 61 64 65 64 20 73 6f 72 74 69 6e  ithreaded sortin
1f0e0 67 0a 2a 2a 20 69 73 20 65 6e 61 62 6c 65 64 20  g.** is enabled 
1f0f0 28 75 73 69 6e 67 20 74 68 65 20 5b 50 52 41 47  (using the [PRAG
1f100 4d 41 20 74 68 72 65 61 64 73 5d 20 63 6f 6d 6d  MA threads] comm
1f110 61 6e 64 29 20 61 6e 64 20 74 68 65 20 61 6d 6f  and) and the amo
1f120 75 6e 74 20 6f 66 20 63 6f 6e 74 65 6e 74 0a 2a  unt of content.*
1f130 2a 20 74 6f 20 62 65 20 73 6f 72 74 65 64 20 65  * to be sorted e
1f140 78 63 65 65 64 73 20 74 68 65 20 70 61 67 65 20  xceeds the page 
1f150 73 69 7a 65 20 74 69 6d 65 73 20 74 68 65 20 6d  size times the m
1f160 69 6e 69 6d 75 6d 20 6f 66 20 74 68 65 0a 2a 2a  inimum of the.**
1f170 20 5b 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73   [PRAGMA cache_s
1f180 69 7a 65 5d 20 73 65 74 74 69 6e 67 20 61 6e 64  ize] setting and
1f190 20 74 68 69 73 20 76 61 6c 75 65 2e 0a 2a 2a 0a   this value..**.
1f1a0 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1f1b0 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c  IG_STMTJRNL_SPIL
1f1c0 4c 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54  L]].** <dt>SQLIT
1f1d0 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e  E_CONFIG_STMTJRN
1f1e0 4c 5f 53 50 49 4c 4c 0a 2a 2a 20 3c 64 64 3e 5e  L_SPILL.** <dd>^
1f1f0 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1f200 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c  G_STMTJRNL_SPILL
1f210 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20   option takes a 
1f220 73 69 6e 67 6c 65 20 70 61 72 61 6d 65 74 65 72  single parameter
1f230 20 77 68 69 63 68 0a 2a 2a 20 62 65 63 6f 6d 65   which.** become
1f240 73 20 74 68 65 20 5b 73 74 61 74 65 6d 65 6e 74  s the [statement
1f250 20 6a 6f 75 72 6e 61 6c 5d 20 73 70 69 6c 6c 2d   journal] spill-
1f260 74 6f 2d 64 69 73 6b 20 74 68 72 65 73 68 6f 6c  to-disk threshol
1f270 64 2e 20 20 0a 2a 2a 20 5b 53 74 61 74 65 6d 65  d.  .** [Stateme
1f280 6e 74 20 6a 6f 75 72 6e 61 6c 73 5d 20 61 72 65  nt journals] are
1f290 20 68 65 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20   held in memory 
1f2a0 75 6e 74 69 6c 20 74 68 65 69 72 20 73 69 7a 65  until their size
1f2b0 20 28 69 6e 20 62 79 74 65 73 29 0a 2a 2a 20 65   (in bytes).** e
1f2c0 78 63 65 65 64 73 20 74 68 69 73 20 74 68 72 65  xceeds this thre
1f2d0 73 68 6f 6c 64 2c 20 61 74 20 77 68 69 63 68 20  shold, at which 
1f2e0 70 6f 69 6e 74 20 74 68 65 79 20 61 72 65 20 77  point they are w
1f2f0 72 69 74 74 65 6e 20 74 6f 20 64 69 73 6b 2e 0a  ritten to disk..
1f300 2a 2a 20 4f 72 20 69 66 20 74 68 65 20 74 68 72  ** Or if the thr
1f310 65 73 68 6f 6c 64 20 69 73 20 2d 31 2c 20 73 74  eshold is -1, st
1f320 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73  atement journals
1f330 20 61 72 65 20 61 6c 77 61 79 73 20 68 65 6c 64   are always held
1f340 0a 2a 2a 20 65 78 63 6c 75 73 69 76 65 6c 79 20  .** exclusively 
1f350 69 6e 20 6d 65 6d 6f 72 79 2e 0a 2a 2a 20 53 69  in memory..** Si
1f360 6e 63 65 20 6d 61 6e 79 20 73 74 61 74 65 6d 65  nce many stateme
1f370 6e 74 20 6a 6f 75 72 6e 61 6c 73 20 6e 65 76 65  nt journals neve
1f380 72 20 62 65 63 6f 6d 65 20 6c 61 72 67 65 2c 20  r become large, 
1f390 73 65 74 74 69 6e 67 20 74 68 65 20 73 70 69 6c  setting the spil
1f3a0 6c 0a 2a 2a 20 74 68 72 65 73 68 6f 6c 64 20 74  l.** threshold t
1f3b0 6f 20 61 20 76 61 6c 75 65 20 73 75 63 68 20 61  o a value such a
1f3c0 73 20 36 34 4b 69 42 20 63 61 6e 20 67 72 65 61  s 64KiB can grea
1f3d0 74 6c 79 20 72 65 64 75 63 65 20 74 68 65 20 61  tly reduce the a
1f3e0 6d 6f 75 6e 74 20 6f 66 0a 2a 2a 20 49 2f 4f 20  mount of.** I/O 
1f3f0 72 65 71 75 69 72 65 64 20 74 6f 20 73 75 70 70  required to supp
1f400 6f 72 74 20 73 74 61 74 65 6d 65 6e 74 20 72 6f  ort statement ro
1f410 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 54 68 65 20 64  llback..** The d
1f420 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72  efault value for
1f430 20 74 68 69 73 20 73 65 74 74 69 6e 67 20 69 73   this setting is
1f440 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 20 74   controlled by t
1f450 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 53 54  he.** [SQLITE_ST
1f460 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 20 63 6f  MTJRNL_SPILL] co
1f470 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1f480 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  n..**.** [[SQLIT
1f490 45 5f 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52 52  E_CONFIG_SORTERR
1f4a0 45 46 5f 53 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74  EF_SIZE]].** <dt
1f4b0 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  >SQLITE_CONFIG_S
1f4c0 4f 52 54 45 52 52 45 46 5f 53 49 5a 45 0a 2a 2a  ORTERREF_SIZE.**
1f4d0 20 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f   <dd>The SQLITE_
1f4e0 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52 52 45 46  CONFIG_SORTERREF
1f4f0 5f 53 49 5a 45 20 6f 70 74 69 6f 6e 20 61 63 63  _SIZE option acc
1f500 65 70 74 73 20 61 20 73 69 6e 67 6c 65 20 70 61  epts a single pa
1f510 72 61 6d 65 74 65 72 0a 2a 2a 20 6f 66 20 74 79  rameter.** of ty
1f520 70 65 20 28 69 6e 74 29 20 2d 20 74 68 65 20 6e  pe (int) - the n
1f530 65 77 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  ew value of the 
1f540 73 6f 72 74 65 72 2d 72 65 66 65 72 65 6e 63 65  sorter-reference
1f550 20 73 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 2e   size threshold.
1f560 0a 2a 2a 20 55 73 75 61 6c 6c 79 2c 20 77 68 65  .** Usually, whe
1f570 6e 20 53 51 4c 69 74 65 20 75 73 65 73 20 61 6e  n SQLite uses an
1f580 20 65 78 74 65 72 6e 61 6c 20 73 6f 72 74 20 74   external sort t
1f590 6f 20 6f 72 64 65 72 20 72 65 63 6f 72 64 73 20  o order records 
1f5a0 61 63 63 6f 72 64 69 6e 67 0a 2a 2a 20 74 6f 20  according.** to 
1f5b0 61 6e 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  an ORDER BY clau
1f5c0 73 65 2c 20 61 6c 6c 20 66 69 65 6c 64 73 20 72  se, all fields r
1f5d0 65 71 75 69 72 65 64 20 62 79 20 74 68 65 20 63  equired by the c
1f5e0 61 6c 6c 65 72 20 61 72 65 20 70 72 65 73 65 6e  aller are presen
1f5f0 74 20 69 6e 20 74 68 65 0a 2a 2a 20 73 6f 72 74  t in the.** sort
1f600 65 64 20 72 65 63 6f 72 64 73 2e 20 48 6f 77 65  ed records. Howe
1f610 76 65 72 2c 20 69 66 20 53 51 4c 69 74 65 20 64  ver, if SQLite d
1f620 65 74 65 72 6d 69 6e 65 73 20 62 61 73 65 64 20  etermines based 
1f630 6f 6e 20 74 68 65 20 64 65 63 6c 61 72 65 64 20  on the declared 
1f640 74 79 70 65 0a 2a 2a 20 6f 66 20 61 20 74 61 62  type.** of a tab
1f650 6c 65 20 63 6f 6c 75 6d 6e 20 74 68 61 74 20 69  le column that i
1f660 74 73 20 76 61 6c 75 65 73 20 61 72 65 20 6c 69  ts values are li
1f670 6b 65 6c 79 20 74 6f 20 62 65 20 76 65 72 79 20  kely to be very 
1f680 6c 61 72 67 65 20 2d 20 6c 61 72 67 65 72 0a 2a  large - larger.*
1f690 2a 20 74 68 61 6e 20 74 68 65 20 63 6f 6e 66 69  * than the confi
1f6a0 67 75 72 65 64 20 73 6f 72 74 65 72 2d 72 65 66  gured sorter-ref
1f6b0 65 72 65 6e 63 65 20 73 69 7a 65 20 74 68 72 65  erence size thre
1f6c0 73 68 6f 6c 64 20 2d 20 74 68 65 6e 20 61 20 72  shold - then a r
1f6d0 65 66 65 72 65 6e 63 65 0a 2a 2a 20 69 73 20 73  eference.** is s
1f6e0 74 6f 72 65 64 20 69 6e 20 65 61 63 68 20 73 6f  tored in each so
1f6f0 72 74 65 64 20 72 65 63 6f 72 64 20 61 6e 64 20  rted record and 
1f700 74 68 65 20 72 65 71 75 69 72 65 64 20 63 6f 6c  the required col
1f710 75 6d 6e 20 76 61 6c 75 65 73 20 6c 6f 61 64 65  umn values loade
1f720 64 0a 2a 2a 20 66 72 6f 6d 20 74 68 65 20 64 61  d.** from the da
1f730 74 61 62 61 73 65 20 61 73 20 72 65 63 6f 72 64  tabase as record
1f740 73 20 61 72 65 20 72 65 74 75 72 6e 65 64 20 69  s are returned i
1f750 6e 20 73 6f 72 74 65 64 20 6f 72 64 65 72 2e 20  n sorted order. 
1f760 54 68 65 20 64 65 66 61 75 6c 74 0a 2a 2a 20 76  The default.** v
1f770 61 6c 75 65 20 66 6f 72 20 74 68 69 73 20 6f 70  alue for this op
1f780 74 69 6f 6e 20 69 73 20 74 6f 20 6e 65 76 65 72  tion is to never
1f790 20 75 73 65 20 74 68 69 73 20 6f 70 74 69 6d 69   use this optimi
1f7a0 7a 61 74 69 6f 6e 2e 20 53 70 65 63 69 66 79 69  zation. Specifyi
1f7b0 6e 67 20 61 20 0a 2a 2a 20 6e 65 67 61 74 69 76  ng a .** negativ
1f7c0 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 69 73  e value for this
1f7d0 20 6f 70 74 69 6f 6e 20 72 65 73 74 6f 72 65 73   option restores
1f7e0 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68   the default beh
1f7f0 61 76 69 6f 75 72 2e 0a 2a 2a 20 54 68 69 73 20  aviour..** This 
1f800 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 61  option is only a
1f810 76 61 69 6c 61 62 6c 65 20 69 66 20 53 51 4c 69  vailable if SQLi
1f820 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
1f830 69 74 68 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49  ith the.** [SQLI
1f840 54 45 5f 45 4e 41 42 4c 45 5f 53 4f 52 54 45 52  TE_ENABLE_SORTER
1f850 5f 52 45 46 45 52 45 4e 43 45 53 5d 20 63 6f 6d  _REFERENCES] com
1f860 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
1f870 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ..**.** [[SQLITE
1f880 5f 43 4f 4e 46 49 47 5f 4d 45 4d 44 42 5f 4d 41  _CONFIG_MEMDB_MA
1f890 58 53 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53  XSIZE]].** <dt>S
1f8a0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1f8b0 44 42 5f 4d 41 58 53 49 5a 45 0a 2a 2a 20 3c 64  DB_MAXSIZE.** <d
1f8c0 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  d>The SQLITE_CON
1f8d0 46 49 47 5f 4d 45 4d 44 42 5f 4d 41 58 53 49 5a  FIG_MEMDB_MAXSIZ
1f8e0 45 20 6f 70 74 69 6f 6e 20 61 63 63 65 70 74 73  E option accepts
1f8f0 20 61 20 73 69 6e 67 6c 65 20 70 61 72 61 6d 65   a single parame
1f900 74 65 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  ter.** [sqlite3_
1f910 69 6e 74 36 34 5d 20 70 61 72 61 6d 65 74 65 72  int64] parameter
1f920 20 77 68 69 63 68 20 69 73 20 74 68 65 20 64 65   which is the de
1f930 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20 73 69  fault maximum si
1f940 7a 65 20 66 6f 72 20 61 6e 20 69 6e 2d 6d 65 6d  ze for an in-mem
1f950 6f 72 79 0a 2a 2a 20 64 61 74 61 62 61 73 65 20  ory.** database 
1f960 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 5b 73  created using [s
1f970 71 6c 69 74 65 33 5f 64 65 73 65 72 69 61 6c 69  qlite3_deseriali
1f980 7a 65 28 29 5d 2e 20 20 54 68 69 73 20 64 65 66  ze()].  This def
1f990 61 75 6c 74 20 6d 61 78 69 6d 75 6d 0a 2a 2a 20  ault maximum.** 
1f9a0 73 69 7a 65 20 63 61 6e 20 62 65 20 61 64 6a 75  size can be adju
1f9b0 73 74 65 64 20 75 70 20 6f 72 20 64 6f 77 6e 20  sted up or down 
1f9c0 66 6f 72 20 69 6e 64 69 76 69 64 75 61 6c 20 64  for individual d
1f9d0 61 74 61 62 61 73 65 73 20 75 73 69 6e 67 20 74  atabases using t
1f9e0 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43  he.** [SQLITE_FC
1f9f0 4e 54 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d 20  NTL_SIZE_LIMIT] 
1fa00 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f  [sqlite3_file_co
1fa10 6e 74 72 6f 6c 7c 66 69 6c 65 2d 63 6f 6e 74 72  ntrol|file-contr
1fa20 6f 6c 5d 2e 20 20 49 66 20 74 68 69 73 0a 2a 2a  ol].  If this.**
1fa30 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 73   configuration s
1fa40 65 74 74 69 6e 67 20 69 73 20 6e 65 76 65 72 20  etting is never 
1fa50 75 73 65 64 2c 20 74 68 65 6e 20 74 68 65 20 64  used, then the d
1fa60 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20 69  efault maximum i
1fa70 73 20 64 65 74 65 72 6d 69 6e 65 64 0a 2a 2a 20  s determined.** 
1fa80 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d  by the [SQLITE_M
1fa90 45 4d 44 42 5f 44 45 46 41 55 4c 54 5f 4d 41 58  EMDB_DEFAULT_MAX
1faa0 53 49 5a 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  SIZE] compile-ti
1fab0 6d 65 20 6f 70 74 69 6f 6e 2e 20 20 49 66 20 74  me option.  If t
1fac0 68 61 74 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74  hat.** compile-t
1fad0 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f  ime option is no
1fae0 74 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65 20  t set, then the 
1faf0 64 65 66 61 75 6c 74 20 6d 61 78 69 6d 75 6d 20  default maximum 
1fb00 69 73 20 31 30 37 33 37 34 31 38 32 34 2e 0a 2a  is 1073741824..*
1fb10 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69  * </dl>.*/.#defi
1fb20 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1fb30 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20 20 31  _SINGLETHREAD  1
1fb40 20 20 2f 2a 20 6e 69 6c 20 2a 2f 0a 23 64 65 66    /* nil */.#def
1fb50 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fb60 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 20 20 20  G_MULTITHREAD   
1fb70 32 20 20 2f 2a 20 6e 69 6c 20 2a 2f 0a 23 64 65  2  /* nil */.#de
1fb80 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1fb90 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 20 20 20  IG_SERIALIZED   
1fba0 20 33 20 20 2f 2a 20 6e 69 6c 20 2a 2f 0a 23 64   3  /* nil */.#d
1fbb0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1fbc0 46 49 47 5f 4d 41 4c 4c 4f 43 20 20 20 20 20 20  FIG_MALLOC      
1fbd0 20 20 34 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f    4  /* sqlite3_
1fbe0 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a  mem_methods* */.
1fbf0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1fc00 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 20  ONFIG_GETMALLOC 
1fc10 20 20 20 20 35 20 20 2f 2a 20 73 71 6c 69 74 65      5  /* sqlite
1fc20 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a 20 2a  3_mem_methods* *
1fc30 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1fc40 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43 48 20  _CONFIG_SCRATCH 
1fc50 20 20 20 20 20 20 36 20 20 2f 2a 20 4e 6f 20 6c        6  /* No l
1fc60 6f 6e 67 65 72 20 75 73 65 64 20 2a 2f 0a 23 64  onger used */.#d
1fc70 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1fc80 46 49 47 5f 50 41 47 45 43 41 43 48 45 20 20 20  FIG_PAGECACHE   
1fc90 20 20 37 20 20 2f 2a 20 76 6f 69 64 2a 2c 20 69    7  /* void*, i
1fca0 6e 74 20 73 7a 2c 20 69 6e 74 20 4e 20 2a 2f 0a  nt sz, int N */.
1fcb0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1fcc0 4f 4e 46 49 47 5f 48 45 41 50 20 20 20 20 20 20  ONFIG_HEAP      
1fcd0 20 20 20 20 38 20 20 2f 2a 20 76 6f 69 64 2a 2c      8  /* void*,
1fce0 20 69 6e 74 20 6e 42 79 74 65 2c 20 69 6e 74 20   int nByte, int 
1fcf0 6d 69 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  min */.#define S
1fd00 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1fd10 53 54 41 54 55 53 20 20 20 20 20 39 20 20 2f 2a  STATUS     9  /*
1fd20 20 62 6f 6f 6c 65 61 6e 20 2a 2f 0a 23 64 65 66   boolean */.#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 55 54 45 58 20 20 20 20 20 20 20 20 31  G_MUTEX        1
1fd50 30 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 75  0  /* sqlite3_mu
1fd60 74 65 78 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a  tex_methods* */.
1fd70 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1fd80 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 20 20  ONFIG_GETMUTEX  
1fd90 20 20 20 31 31 20 20 2f 2a 20 73 71 6c 69 74 65     11  /* sqlite
1fda0 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 2a  3_mutex_methods*
1fdb0 20 2a 2f 0a 2f 2a 20 70 72 65 76 69 6f 75 73 6c   */./* previousl
1fdc0 79 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  y SQLITE_CONFIG_
1fdd0 43 48 55 4e 4b 41 4c 4c 4f 43 20 31 32 20 77 68  CHUNKALLOC 12 wh
1fde0 69 63 68 20 69 73 20 6e 6f 77 20 75 6e 75 73 65  ich is now unuse
1fdf0 64 2e 20 2a 2f 20 0a 23 64 65 66 69 6e 65 20 53  d. */ .#define S
1fe00 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f  QLITE_CONFIG_LOO
1fe10 4b 41 53 49 44 45 20 20 20 20 31 33 20 20 2f 2a  KASIDE    13  /*
1fe20 20 69 6e 74 20 69 6e 74 20 2a 2f 0a 23 64 65 66   int int */.#def
1fe30 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fe40 47 5f 50 43 41 43 48 45 20 20 20 20 20 20 20 31  G_PCACHE       1
1fe50 34 20 20 2f 2a 20 6e 6f 2d 6f 70 20 2a 2f 0a 23  4  /* no-op */.#
1fe60 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
1fe70 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 20 20  NFIG_GETPCACHE  
1fe80 20 20 31 35 20 20 2f 2a 20 6e 6f 2d 6f 70 20 2a    15  /* no-op *
1fe90 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1fea0 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 20 20 20 20  _CONFIG_LOG     
1feb0 20 20 20 20 20 31 36 20 20 2f 2a 20 78 46 75 6e       16  /* xFun
1fec0 63 2c 20 76 6f 69 64 2a 20 2a 2f 0a 23 64 65 66  c, void* */.#def
1fed0 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fee0 47 5f 55 52 49 20 20 20 20 20 20 20 20 20 20 31  G_URI          1
1fef0 37 20 20 2f 2a 20 69 6e 74 20 2a 2f 0a 23 64 65  7  /* int */.#de
1ff00 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1ff10 49 47 5f 50 43 41 43 48 45 32 20 20 20 20 20 20  IG_PCACHE2      
1ff20 31 38 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 70  18  /* sqlite3_p
1ff30 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 2a 20  cache_methods2* 
1ff40 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1ff50 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43  E_CONFIG_GETPCAC
1ff60 48 45 32 20 20 20 31 39 20 20 2f 2a 20 73 71 6c  HE2   19  /* sql
1ff70 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68  ite3_pcache_meth
1ff80 6f 64 73 32 2a 20 2a 2f 0a 23 64 65 66 69 6e 65  ods2* */.#define
1ff90 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43   SQLITE_CONFIG_C
1ffa0 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43  OVERING_INDEX_SC
1ffb0 41 4e 20 32 30 20 20 2f 2a 20 69 6e 74 20 2a 2f  AN 20  /* int */
1ffc0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1ffd0 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 20 20 20  CONFIG_SQLLOG   
1ffe0 20 20 20 20 32 31 20 20 2f 2a 20 78 53 71 6c 6c      21  /* xSqll
1fff0 6f 67 2c 20 76 6f 69 64 2a 20 2a 2f 0a 23 64 65  og, void* */.#de
20000 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
20010 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 20 20 20 20  IG_MMAP_SIZE    
20020 32 32 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 69  22  /* sqlite3_i
20030 6e 74 36 34 2c 20 73 71 6c 69 74 65 33 5f 69 6e  nt64, sqlite3_in
20040 74 36 34 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  t64 */.#define S
20050 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e  QLITE_CONFIG_WIN
20060 33 32 5f 48 45 41 50 53 49 5a 45 20 20 20 20 20  32_HEAPSIZE     
20070 20 32 33 20 20 2f 2a 20 69 6e 74 20 6e 42 79 74   23  /* int nByt
20080 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  e */.#define SQL
20090 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
200a0 45 5f 48 44 52 53 5a 20 20 20 20 20 20 20 20 32  E_HDRSZ        2
200b0 34 20 20 2f 2a 20 69 6e 74 20 2a 70 73 7a 20 2a  4  /* int *psz *
200c0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
200d0 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 20 20 20  _CONFIG_PMASZ   
200e0 20 20 20 20 20 20 20 20 20 20 20 20 32 35 20 20              25  
200f0 2f 2a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20  /* unsigned int 
20100 73 7a 50 6d 61 20 2a 2f 0a 23 64 65 66 69 6e 65  szPma */.#define
20110 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53   SQLITE_CONFIG_S
20120 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 20 20 20  TMTJRNL_SPILL   
20130 20 20 20 32 36 20 20 2f 2a 20 69 6e 74 20 6e 42     26  /* int nB
20140 79 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  yte */.#define S
20150 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41  QLITE_CONFIG_SMA
20160 4c 4c 5f 4d 41 4c 4c 4f 43 20 20 20 20 20 20 20  LL_MALLOC       
20170 20 32 37 20 20 2f 2a 20 62 6f 6f 6c 65 61 6e 20   27  /* boolean 
20180 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
20190 45 5f 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52 52  E_CONFIG_SORTERR
201a0 45 46 5f 53 49 5a 45 20 20 20 20 20 20 32 38 20  EF_SIZE      28 
201b0 20 2f 2a 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f   /* int nByte */
201c0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
201d0 43 4f 4e 46 49 47 5f 4d 45 4d 44 42 5f 4d 41 58  CONFIG_MEMDB_MAX
201e0 53 49 5a 45 20 20 20 20 20 20 20 32 39 20 20 2f  SIZE       29  /
201f0 2a 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  * sqlite3_int64 
20200 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  */../*.** CAPI3R
20210 45 46 3a 20 44 61 74 61 62 61 73 65 20 43 6f 6e  EF: Database Con
20220 6e 65 63 74 69 6f 6e 20 43 6f 6e 66 69 67 75 72  nection Configur
20230 61 74 69 6f 6e 20 4f 70 74 69 6f 6e 73 0a 2a 2a  ation Options.**
20240 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61  .** These consta
20250 6e 74 73 20 61 72 65 20 74 68 65 20 61 76 61 69  nts are the avai
20260 6c 61 62 6c 65 20 69 6e 74 65 67 65 72 20 63 6f  lable integer co
20270 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
20280 6f 6e 73 20 74 68 61 74 0a 2a 2a 20 63 61 6e 20  ons that.** can 
20290 62 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65  be passed as the
202a0 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
202b0 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
202c0 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e  _db_config()] in
202d0 74 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 4e  terface..**.** N
202e0 65 77 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ew configuration
202f0 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 62 65 20   options may be 
20300 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20  added in future 
20310 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69  releases of SQLi
20320 74 65 2e 0a 2a 2a 20 45 78 69 73 74 69 6e 67 20  te..** Existing 
20330 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
20340 74 69 6f 6e 73 20 6d 69 67 68 74 20 62 65 20 64  tions might be d
20350 69 73 63 6f 6e 74 69 6e 75 65 64 2e 20 20 41 70  iscontinued.  Ap
20360 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 73 68  plications.** sh
20370 6f 75 6c 64 20 63 68 65 63 6b 20 74 68 65 20 72  ould check the r
20380 65 74 75 72 6e 20 63 6f 64 65 20 66 72 6f 6d 20  eturn code from 
20390 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  [sqlite3_db_conf
203a0 69 67 28 29 5d 20 74 6f 20 6d 61 6b 65 20 73 75  ig()] to make su
203b0 72 65 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 63  re that.** the c
203c0 61 6c 6c 20 77 6f 72 6b 65 64 2e 20 20 5e 54 68  all worked.  ^Th
203d0 65 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  e [sqlite3_db_co
203e0 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63  nfig()] interfac
203f0 65 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 61 0a  e will return a.
20400 2a 2a 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72  ** non-zero [err
20410 6f 72 20 63 6f 64 65 5d 20 69 66 20 61 20 64 69  or code] if a di
20420 73 63 6f 6e 74 69 6e 75 65 64 20 6f 72 20 75 6e  scontinued or un
20430 73 75 70 70 6f 72 74 65 64 20 63 6f 6e 66 69 67  supported config
20440 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 0a 2a  uration option.*
20450 2a 20 69 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a  * is invoked..**
20460 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51  .** <dl>.** [[SQ
20470 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f  LITE_DBCONFIG_LO
20480 4f 4b 41 53 49 44 45 5d 5d 0a 2a 2a 20 3c 64 74  OKASIDE]].** <dt
20490 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  >SQLITE_DBCONFIG
204a0 5f 4c 4f 4f 4b 41 53 49 44 45 3c 2f 64 74 3e 0a  _LOOKASIDE</dt>.
204b0 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70  ** <dd> ^This op
204c0 74 69 6f 6e 20 74 61 6b 65 73 20 74 68 72 65 65  tion takes three
204d0 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75   additional argu
204e0 6d 65 6e 74 73 20 74 68 61 74 20 64 65 74 65 72  ments that deter
204f0 6d 69 6e 65 20 74 68 65 20 0a 2a 2a 20 5b 6c 6f  mine the .** [lo
20500 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 61  okaside memory a
20510 6c 6c 6f 63 61 74 6f 72 5d 20 63 6f 6e 66 69 67  llocator] config
20520 75 72 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20  uration for the 
20530 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
20540 74 69 6f 6e 5d 2e 0a 2a 2a 20 5e 54 68 65 20 66  tion]..** ^The f
20550 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 28 74  irst argument (t
20560 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74  he third paramet
20570 65 72 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 64  er to [sqlite3_d
20580 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20 61  b_config()] is a
20590 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  .** pointer to a
205a0 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 20 74   memory buffer t
205b0 6f 20 75 73 65 20 66 6f 72 20 6c 6f 6f 6b 61 73  o use for lookas
205c0 69 64 65 20 6d 65 6d 6f 72 79 2e 0a 2a 2a 20 5e  ide memory..** ^
205d0 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
205e0 6e 74 20 61 66 74 65 72 20 74 68 65 20 53 51 4c  nt after the SQL
205f0 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f  ITE_DBCONFIG_LOO
20600 4b 41 53 49 44 45 20 76 65 72 62 0a 2a 2a 20 6d  KASIDE verb.** m
20610 61 79 20 62 65 20 4e 55 4c 4c 20 69 6e 20 77 68  ay be NULL in wh
20620 69 63 68 20 63 61 73 65 20 53 51 4c 69 74 65 20  ich case SQLite 
20630 77 69 6c 6c 20 61 6c 6c 6f 63 61 74 65 20 74 68  will allocate th
20640 65 0a 2a 2a 20 6c 6f 6f 6b 61 73 69 64 65 20 62  e.** lookaside b
20650 75 66 66 65 72 20 69 74 73 65 6c 66 20 75 73 69  uffer itself usi
20660 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  ng [sqlite3_mall
20670 6f 63 28 29 5d 2e 20 5e 54 68 65 20 73 65 63 6f  oc()]. ^The seco
20680 6e 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  nd argument is t
20690 68 65 0a 2a 2a 20 73 69 7a 65 20 6f 66 20 65 61  he.** size of ea
206a0 63 68 20 6c 6f 6f 6b 61 73 69 64 65 20 62 75 66  ch lookaside buf
206b0 66 65 72 20 73 6c 6f 74 2e 20 20 5e 54 68 65 20  fer slot.  ^The 
206c0 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 69  third argument i
206d0 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a  s the number of.
206e0 2a 2a 20 73 6c 6f 74 73 2e 20 20 54 68 65 20 73  ** slots.  The s
206f0 69 7a 65 20 6f 66 20 74 68 65 20 62 75 66 66 65  ize of the buffe
20700 72 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 61  r in the first a
20710 72 67 75 6d 65 6e 74 20 6d 75 73 74 20 62 65 20  rgument must be 
20720 67 72 65 61 74 65 72 20 74 68 61 6e 0a 2a 2a 20  greater than.** 
20730 6f 72 20 65 71 75 61 6c 20 74 6f 20 74 68 65 20  or equal to the 
20740 70 72 6f 64 75 63 74 20 6f 66 20 74 68 65 20 73  product of the s
20750 65 63 6f 6e 64 20 61 6e 64 20 74 68 69 72 64 20  econd and third 
20760 61 72 67 75 6d 65 6e 74 73 2e 20 20 54 68 65 20  arguments.  The 
20770 62 75 66 66 65 72 0a 2a 2a 20 6d 75 73 74 20 62  buffer.** must b
20780 65 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20  e aligned to an 
20790 38 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2e  8-byte boundary.
207a0 20 20 5e 49 66 20 74 68 65 20 73 65 63 6f 6e 64    ^If the second
207b0 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20   argument to.** 
207c0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
207d0 4c 4f 4f 4b 41 53 49 44 45 20 69 73 20 6e 6f 74  LOOKASIDE is not
207e0 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 38   a multiple of 8
207f0 2c 20 69 74 20 69 73 20 69 6e 74 65 72 6e 61 6c  , it is internal
20800 6c 79 0a 2a 2a 20 72 6f 75 6e 64 65 64 20 64 6f  ly.** rounded do
20810 77 6e 20 74 6f 20 74 68 65 20 6e 65 78 74 20 73  wn to the next s
20820 6d 61 6c 6c 65 72 20 6d 75 6c 74 69 70 6c 65 20  maller multiple 
20830 6f 66 20 38 2e 20 20 5e 28 54 68 65 20 6c 6f 6f  of 8.  ^(The loo
20840 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 0a 2a 2a  kaside memory.**
20850 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
20860 6f 72 20 61 20 64 61 74 61 62 61 73 65 20 63 6f  or a database co
20870 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 20 6f 6e 6c  nnection can onl
20880 79 20 62 65 20 63 68 61 6e 67 65 64 20 77 68 65  y be changed whe
20890 6e 20 74 68 61 74 0a 2a 2a 20 63 6f 6e 6e 65 63  n that.** connec
208a0 74 69 6f 6e 20 69 73 20 6e 6f 74 20 63 75 72 72  tion is not curr
208b0 65 6e 74 6c 79 20 75 73 69 6e 67 20 6c 6f 6f 6b  ently using look
208c0 61 73 69 64 65 20 6d 65 6d 6f 72 79 2c 20 6f 72  aside memory, or
208d0 20 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 0a   in other words.
208e0 2a 2a 20 77 68 65 6e 20 74 68 65 20 22 63 75 72  ** when the "cur
208f0 72 65 6e 74 20 76 61 6c 75 65 22 20 72 65 74 75  rent value" retu
20900 72 6e 65 64 20 62 79 0a 2a 2a 20 5b 73 71 6c 69  rned by.** [sqli
20910 74 65 33 5f 64 62 5f 73 74 61 74 75 73 5d 28 44  te3_db_status](D
20920 2c 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  ,[SQLITE_CONFIG_
20930 4c 4f 4f 4b 41 53 49 44 45 5d 2c 2e 2e 2e 29 20  LOOKASIDE],...) 
20940 69 73 20 7a 65 72 6f 2e 0a 2a 2a 20 41 6e 79 20  is zero..** Any 
20950 61 74 74 65 6d 70 74 20 74 6f 20 63 68 61 6e 67  attempt to chang
20960 65 20 74 68 65 20 6c 6f 6f 6b 61 73 69 64 65 20  e the lookaside 
20970 6d 65 6d 6f 72 79 20 63 6f 6e 66 69 67 75 72 61  memory configura
20980 74 69 6f 6e 20 77 68 65 6e 20 6c 6f 6f 6b 61 73  tion when lookas
20990 69 64 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 69 73  ide.** memory is
209a0 20 69 6e 20 75 73 65 20 6c 65 61 76 65 73 20 74   in use leaves t
209b0 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  he configuration
209c0 20 75 6e 63 68 61 6e 67 65 64 20 61 6e 64 20 72   unchanged and r
209d0 65 74 75 72 6e 73 20 0a 2a 2a 20 5b 53 51 4c 49  eturns .** [SQLI
209e0 54 45 5f 42 55 53 59 5d 2e 29 5e 3c 2f 64 64 3e  TE_BUSY].)^</dd>
209f0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
20a00 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
20a10 46 4b 45 59 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  FKEY]].** <dt>SQ
20a20 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
20a30 41 42 4c 45 5f 46 4b 45 59 3c 2f 64 74 3e 0a 2a  ABLE_FKEY</dt>.*
20a40 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70 74  * <dd> ^This opt
20a50 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 65  ion is used to e
20a60 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65  nable or disable
20a70 20 74 68 65 20 65 6e 66 6f 72 63 65 6d 65 6e 74   the enforcement
20a80 20 6f 66 0a 2a 2a 20 5b 66 6f 72 65 69 67 6e 20   of.** [foreign 
20a90 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d  key constraints]
20aa0 2e 20 20 54 68 65 72 65 20 73 68 6f 75 6c 64 20  .  There should 
20ab0 62 65 20 74 77 6f 20 61 64 64 69 74 69 6f 6e 61  be two additiona
20ac0 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a 20  l arguments..** 
20ad0 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
20ae0 6e 74 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  nt is an integer
20af0 20 77 68 69 63 68 20 69 73 20 30 20 74 6f 20 64   which is 0 to d
20b00 69 73 61 62 6c 65 20 46 4b 20 65 6e 66 6f 72 63  isable FK enforc
20b10 65 6d 65 6e 74 2c 0a 2a 2a 20 70 6f 73 69 74 69  ement,.** positi
20b20 76 65 20 74 6f 20 65 6e 61 62 6c 65 20 46 4b 20  ve to enable FK 
20b30 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 72 20 6e  enforcement or n
20b40 65 67 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65  egative to leave
20b50 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 0a   FK enforcement.
20b60 2a 2a 20 75 6e 63 68 61 6e 67 65 64 2e 20 20 54  ** unchanged.  T
20b70 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  he second parame
20b80 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72  ter is a pointer
20b90 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 69   to an integer i
20ba0 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69 73 20  nto which.** is 
20bb0 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31 20 74  written 0 or 1 t
20bc0 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65 74 68  o indicate wheth
20bd0 65 72 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e  er FK enforcemen
20be0 74 20 69 73 20 6f 66 66 20 6f 72 20 6f 6e 0a 2a  t is off or on.*
20bf0 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73  * following this
20c00 20 63 61 6c 6c 2e 20 20 54 68 65 20 73 65 63 6f   call.  The seco
20c10 6e 64 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79  nd parameter may
20c20 20 62 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   be a NULL point
20c30 65 72 2c 20 69 6e 0a 2a 2a 20 77 68 69 63 68 20  er, in.** which 
20c40 63 61 73 65 20 74 68 65 20 46 4b 20 65 6e 66 6f  case the FK enfo
20c50 72 63 65 6d 65 6e 74 20 73 65 74 74 69 6e 67 20  rcement setting 
20c60 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65 64 20  is not reported 
20c70 62 61 63 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  back. </dd>.**.*
20c80 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  * [[SQLITE_DBCON
20c90 46 49 47 5f 45 4e 41 42 4c 45 5f 54 52 49 47 47  FIG_ENABLE_TRIGG
20ca0 45 52 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49  ER]].** <dt>SQLI
20cb0 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
20cc0 4c 45 5f 54 52 49 47 47 45 52 3c 2f 64 74 3e 0a  LE_TRIGGER</dt>.
20cd0 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70  ** <dd> ^This op
20ce0 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
20cf0 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c  enable or disabl
20d00 65 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45  e [CREATE TRIGGE
20d10 52 20 7c 20 74 72 69 67 67 65 72 73 5d 2e 0a 2a  R | triggers]..*
20d20 2a 20 54 68 65 72 65 20 73 68 6f 75 6c 64 20 62  * There should b
20d30 65 20 74 77 6f 20 61 64 64 69 74 69 6f 6e 61 6c  e two additional
20d40 20 61 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a 20 54   arguments..** T
20d50 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
20d60 74 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20  t is an integer 
20d70 77 68 69 63 68 20 69 73 20 30 20 74 6f 20 64 69  which is 0 to di
20d80 73 61 62 6c 65 20 74 72 69 67 67 65 72 73 2c 0a  sable triggers,.
20d90 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f 20 65  ** positive to e
20da0 6e 61 62 6c 65 20 74 72 69 67 67 65 72 73 20 6f  nable triggers o
20db0 72 20 6e 65 67 61 74 69 76 65 20 74 6f 20 6c 65  r negative to le
20dc0 61 76 65 20 74 68 65 20 73 65 74 74 69 6e 67 20  ave the setting 
20dd0 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68  unchanged..** Th
20de0 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
20df0 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  er is a pointer 
20e00 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 69 6e  to an integer in
20e10 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 77  to which.** is w
20e20 72 69 74 74 65 6e 20 30 20 6f 72 20 31 20 74 6f  ritten 0 or 1 to
20e30 20 69 6e 64 69 63 61 74 65 20 77 68 65 74 68 65   indicate whethe
20e40 72 20 74 72 69 67 67 65 72 73 20 61 72 65 20 64  r triggers are d
20e50 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61 62 6c  isabled or enabl
20e60 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20  ed.** following 
20e70 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68 65 20  this call.  The 
20e80 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
20e90 20 6d 61 79 20 62 65 20 61 20 4e 55 4c 4c 20 70   may be a NULL p
20ea0 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20 77 68  ointer, in.** wh
20eb0 69 63 68 20 63 61 73 65 20 74 68 65 20 74 72 69  ich case the tri
20ec0 67 67 65 72 20 73 65 74 74 69 6e 67 20 69 73 20  gger setting is 
20ed0 6e 6f 74 20 72 65 70 6f 72 74 65 64 20 62 61 63  not reported bac
20ee0 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b  k. </dd>.**.** [
20ef0 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  [SQLITE_DBCONFIG
20f00 5f 45 4e 41 42 4c 45 5f 56 49 45 57 5d 5d 0a 2a  _ENABLE_VIEW]].*
20f10 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43  * <dt>SQLITE_DBC
20f20 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 56 49 45  ONFIG_ENABLE_VIE
20f30 57 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  W</dt>.** <dd> ^
20f40 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
20f50 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72  sed to enable or
20f60 20 64 69 73 61 62 6c 65 20 5b 43 52 45 41 54 45   disable [CREATE
20f70 20 56 49 45 57 20 7c 20 76 69 65 77 73 5d 2e 0a   VIEW | views]..
20f80 2a 2a 20 54 68 65 72 65 20 73 68 6f 75 6c 64 20  ** There should 
20f90 62 65 20 74 77 6f 20 61 64 64 69 74 69 6f 6e 61  be two additiona
20fa0 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a 20  l arguments..** 
20fb0 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
20fc0 6e 74 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  nt is an integer
20fd0 20 77 68 69 63 68 20 69 73 20 30 20 74 6f 20 64   which is 0 to d
20fe0 69 73 61 62 6c 65 20 76 69 65 77 73 2c 0a 2a 2a  isable views,.**
20ff0 20 70 6f 73 69 74 69 76 65 20 74 6f 20 65 6e 61   positive to ena
21000 62 6c 65 20 76 69 65 77 73 20 6f 72 20 6e 65 67  ble views or neg
21010 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74  ative to leave t
21020 68 65 20 73 65 74 74 69 6e 67 20 75 6e 63 68 61  he setting uncha
21030 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73 65 63  nged..** The sec
21040 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73  ond parameter is
21050 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
21060 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68   integer into wh
21070 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65  ich.** is writte
21080 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69  n 0 or 1 to indi
21090 63 61 74 65 20 77 68 65 74 68 65 72 20 76 69 65  cate whether vie
210a0 77 73 20 61 72 65 20 64 69 73 61 62 6c 65 64 20  ws are disabled 
210b0 6f 72 20 65 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f  or enabled.** fo
210c0 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c  llowing this cal
210d0 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70  l.  The second p
210e0 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20  arameter may be 
210f0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20  a NULL pointer, 
21100 69 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61 73 65  in.** which case
21110 20 74 68 65 20 76 69 65 77 20 73 65 74 74 69 6e   the view settin
21120 67 20 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65  g is not reporte
21130 64 20 62 61 63 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a  d back. </dd>.**
21140 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43  .** [[SQLITE_DBC
21150 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54 53  ONFIG_ENABLE_FTS
21160 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d 5d 0a 2a 2a  3_TOKENIZER]].**
21170 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
21180 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54 53 33  NFIG_ENABLE_FTS3
21190 5f 54 4f 4b 45 4e 49 5a 45 52 3c 2f 64 74 3e 0a  _TOKENIZER</dt>.
211a0 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70  ** <dd> ^This op
211b0 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
211c0 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c  enable or disabl
211d0 65 20 74 68 65 0a 2a 2a 20 5b 66 74 73 33 5f 74  e the.** [fts3_t
211e0 6f 6b 65 6e 69 7a 65 72 28 29 5d 20 66 75 6e 63  okenizer()] func
211f0 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61  tion which is pa
21200 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 46 54  rt of the.** [FT
21210 53 33 5d 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  S3] full-text se
21220 61 72 63 68 20 65 6e 67 69 6e 65 20 65 78 74 65  arch engine exte
21230 6e 73 69 6f 6e 2e 0a 2a 2a 20 54 68 65 72 65 20  nsion..** There 
21240 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64  should be two ad
21250 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e  ditional argumen
21260 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ts..** The first
21270 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20   argument is an 
21280 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
21290 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 66 74   0 to disable ft
212a0 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 6f  s3_tokenizer() o
212b0 72 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f  r.** positive to
212c0 20 65 6e 61 62 6c 65 20 66 74 73 33 5f 74 6f 6b   enable fts3_tok
212d0 65 6e 69 7a 65 72 28 29 20 6f 72 20 6e 65 67 61  enizer() or nega
212e0 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68  tive to leave th
212f0 65 20 73 65 74 74 69 6e 67 0a 2a 2a 20 75 6e 63  e setting.** unc
21300 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73  hanged..** The s
21310 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
21320 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
21330 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20  an integer into 
21340 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74  which.** is writ
21350 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
21360 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 66  dicate whether f
21370 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 20 69 73  ts3_tokenizer is
21380 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61   disabled or ena
21390 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  bled.** followin
213a0 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68  g this call.  Th
213b0 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
213c0 65 72 20 6d 61 79 20 62 65 20 61 20 4e 55 4c 4c  er may be a NULL
213d0 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20   pointer, in.** 
213e0 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 6e  which case the n
213f0 65 77 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f  ew setting is no
21400 74 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e  t reported back.
21410 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
21420 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
21430 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e  NABLE_LOAD_EXTEN
21440 53 49 4f 4e 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  SION]].** <dt>SQ
21450 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
21460 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53  ABLE_LOAD_EXTENS
21470 49 4f 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  ION</dt>.** <dd>
21480 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73   ^This option is
21490 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
214a0 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 5b  or disable the [
214b0 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
214c0 65 6e 73 69 6f 6e 28 29 5d 0a 2a 2a 20 69 6e 74  ension()].** int
214d0 65 72 66 61 63 65 20 69 6e 64 65 70 65 6e 64 65  erface independe
214e0 6e 74 6c 79 20 6f 66 20 74 68 65 20 5b 6c 6f 61  ntly of the [loa
214f0 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 53  d_extension()] S
21500 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20  QL function..** 
21510 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61  The [sqlite3_ena
21520 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
21530 6f 6e 28 29 5d 20 41 50 49 20 65 6e 61 62 6c 65  on()] API enable
21540 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20 62 6f  s or disables bo
21550 74 68 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20  th the.** C-API 
21560 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78  [sqlite3_load_ex
21570 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 20 74  tension()] and t
21580 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20  he SQL function 
21590 5b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  [load_extension(
215a0 29 5d 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68 6f  )]..** There sho
215b0 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69 74  uld be two addit
215c0 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e  ional arguments.
215d0 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 66 69 72  .** When the fir
215e0 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
215f0 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 69 73  his interface is
21600 20 31 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68   1, then only th
21610 65 20 43 2d 41 50 49 20 69 73 0a 2a 2a 20 65 6e  e C-API is.** en
21620 61 62 6c 65 64 20 61 6e 64 20 74 68 65 20 53 51  abled and the SQ
21630 4c 20 66 75 6e 63 74 69 6f 6e 20 72 65 6d 61 69  L function remai
21640 6e 73 20 64 69 73 61 62 6c 65 64 2e 20 20 49 66  ns disabled.  If
21650 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
21660 65 6e 74 20 74 6f 0a 2a 2a 20 74 68 69 73 20 69  ent to.** this i
21670 6e 74 65 72 66 61 63 65 20 69 73 20 30 2c 20 74  nterface is 0, t
21680 68 65 6e 20 62 6f 74 68 20 74 68 65 20 43 2d 41  hen both the C-A
21690 50 49 20 61 6e 64 20 74 68 65 20 53 51 4c 20 66  PI and the SQL f
216a0 75 6e 63 74 69 6f 6e 20 61 72 65 20 64 69 73 61  unction are disa
216b0 62 6c 65 64 2e 0a 2a 2a 20 49 66 20 74 68 65 20  bled..** If the 
216c0 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
216d0 73 20 2d 31 2c 20 74 68 65 6e 20 6e 6f 20 63 68  s -1, then no ch
216e0 61 6e 67 65 73 20 61 72 65 20 6d 61 64 65 20 74  anges are made t
216f0 6f 20 73 74 61 74 65 20 6f 66 20 65 69 74 68 65  o state of eithe
21700 72 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20 6f  r the.** C-API o
21710 72 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69  r the SQL functi
21720 6f 6e 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e  on..** The secon
21730 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  d parameter is a
21740 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
21750 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63  nteger into whic
21760 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20  h.** is written 
21770 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61  0 or 1 to indica
21780 74 65 20 77 68 65 74 68 65 72 20 5b 73 71 6c 69  te whether [sqli
21790 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
217a0 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a  on()] interface.
217b0 2a 2a 20 69 73 20 64 69 73 61 62 6c 65 64 20 6f  ** is disabled o
217c0 72 20 65 6e 61 62 6c 65 64 20 66 6f 6c 6c 6f 77  r enabled follow
217d0 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20  ing this call.  
217e0 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
217f0 65 74 65 72 20 6d 61 79 0a 2a 2a 20 62 65 20 61  eter may.** be a
21800 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69   NULL pointer, i
21810 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65  n which case the
21820 20 6e 65 77 20 73 65 74 74 69 6e 67 20 69 73 20   new setting is 
21830 6e 6f 74 20 72 65 70 6f 72 74 65 64 20 62 61 63  not reported bac
21840 6b 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  k..** </dd>.**.*
21850 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  * [[SQLITE_DBCON
21860 46 49 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 5d 5d  FIG_MAINDBNAME]]
21870 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
21880 4e 46 49 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 3c  NFIG_MAINDBNAME<
21890 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
218a0 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
218b0 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  d to change the 
218c0 6e 61 6d 65 20 6f 66 20 74 68 65 20 22 6d 61 69  name of the "mai
218d0 6e 22 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 73  n" database.** s
218e0 63 68 65 6d 61 2e 20 20 5e 54 68 65 20 73 6f 6c  chema.  ^The sol
218f0 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  e argument is a 
21900 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 63 6f 6e  pointer to a con
21910 73 74 61 6e 74 20 55 54 46 38 20 73 74 72 69 6e  stant UTF8 strin
21920 67 0a 2a 2a 20 77 68 69 63 68 20 77 69 6c 6c 20  g.** which will 
21930 62 65 63 6f 6d 65 20 74 68 65 20 6e 65 77 20 73  become the new s
21940 63 68 65 6d 61 20 6e 61 6d 65 20 69 6e 20 70 6c  chema name in pl
21950 61 63 65 20 6f 66 20 22 6d 61 69 6e 22 2e 20 20  ace of "main".  
21960 5e 53 51 4c 69 74 65 0a 2a 2a 20 64 6f 65 73 20  ^SQLite.** does 
21970 6e 6f 74 20 6d 61 6b 65 20 61 20 63 6f 70 79 20  not make a copy 
21980 6f 66 20 74 68 65 20 6e 65 77 20 6d 61 69 6e 20  of the new main 
21990 73 63 68 65 6d 61 20 6e 61 6d 65 20 73 74 72 69  schema name stri
219a0 6e 67 2c 20 73 6f 20 74 68 65 20 61 70 70 6c 69  ng, so the appli
219b0 63 61 74 69 6f 6e 0a 2a 2a 20 6d 75 73 74 20 65  cation.** must e
219c0 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20 61  nsure that the a
219d0 72 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20 69  rgument passed i
219e0 6e 74 6f 20 74 68 69 73 20 44 42 43 4f 4e 46 49  nto this DBCONFI
219f0 47 20 6f 70 74 69 6f 6e 20 69 73 20 75 6e 63 68  G option is unch
21a00 61 6e 67 65 64 0a 2a 2a 20 75 6e 74 69 6c 20 61  anged.** until a
21a10 66 74 65 72 20 74 68 65 20 64 61 74 61 62 61 73  fter the databas
21a20 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 6f  e connection clo
21a30 73 65 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a  ses..** </dd>.**
21a40 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43  .** [[SQLITE_DBC
21a50 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e  ONFIG_NO_CKPT_ON
21a60 5f 43 4c 4f 53 45 5d 5d 20 0a 2a 2a 20 3c 64 74  _CLOSE]] .** <dt
21a70 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  >SQLITE_DBCONFIG
21a80 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53  _NO_CKPT_ON_CLOS
21a90 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 55  E</dt>.** <dd> U
21aa0 73 75 61 6c 6c 79 2c 20 77 68 65 6e 20 61 20 64  sually, when a d
21ab0 61 74 61 62 61 73 65 20 69 6e 20 77 61 6c 20 6d  atabase in wal m
21ac0 6f 64 65 20 69 73 20 63 6c 6f 73 65 64 20 6f 72  ode is closed or
21ad0 20 64 65 74 61 63 68 65 64 20 66 72 6f 6d 20 61   detached from a
21ae0 20 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 68 61   .** database ha
21af0 6e 64 6c 65 2c 20 53 51 4c 69 74 65 20 63 68 65  ndle, SQLite che
21b00 63 6b 73 20 69 66 20 74 68 69 73 20 77 69 6c 6c  cks if this will
21b10 20 6d 65 61 6e 20 74 68 61 74 20 74 68 65 72 65   mean that there
21b20 20 61 72 65 20 6e 6f 77 20 6e 6f 20 0a 2a 2a 20   are now no .** 
21b30 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 74 20 61  connections at a
21b40 6c 6c 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  ll to the databa
21b50 73 65 2e 20 49 66 20 73 6f 2c 20 69 74 20 70 65  se. If so, it pe
21b60 72 66 6f 72 6d 73 20 61 20 63 68 65 63 6b 70 6f  rforms a checkpo
21b70 69 6e 74 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f  int .** operatio
21b80 6e 20 62 65 66 6f 72 65 20 63 6c 6f 73 69 6e 67  n before closing
21b90 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
21ba0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79   This option may
21bb0 20 62 65 20 75 73 65 64 20 74 6f 0a 2a 2a 20 6f   be used to.** o
21bc0 76 65 72 72 69 64 65 20 74 68 69 73 20 62 65 68  verride this beh
21bd0 61 76 69 6f 75 72 2e 20 54 68 65 20 66 69 72 73  aviour. The firs
21be0 74 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73  t parameter pass
21bf0 65 64 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61  ed to this opera
21c00 74 69 6f 6e 0a 2a 2a 20 69 73 20 61 6e 20 69 6e  tion.** is an in
21c10 74 65 67 65 72 20 2d 20 70 6f 73 69 74 69 76 65  teger - positive
21c20 20 74 6f 20 64 69 73 61 62 6c 65 20 63 68 65 63   to disable chec
21c30 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73 65  kpoints-on-close
21c40 2c 20 6f 72 20 7a 65 72 6f 20 28 74 68 65 0a 2a  , or zero (the.*
21c50 2a 20 64 65 66 61 75 6c 74 29 20 74 6f 20 65 6e  * default) to en
21c60 61 62 6c 65 20 74 68 65 6d 2c 20 61 6e 64 20 6e  able them, and n
21c70 65 67 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65  egative to leave
21c80 20 74 68 65 20 73 65 74 74 69 6e 67 20 75 6e 63   the setting unc
21c90 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73  hanged..** The s
21ca0 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
21cb0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
21cc0 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 69 6e  an integer.** in
21cd0 74 6f 20 77 68 69 63 68 20 69 73 20 77 72 69 74  to which is writ
21ce0 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
21cf0 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 63  dicate whether c
21d00 68 65 63 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c  heckpoints-on-cl
21d10 6f 73 65 0a 2a 2a 20 68 61 76 65 20 62 65 65 6e  ose.** have been
21d20 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20 69 66   disabled - 0 if
21d30 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20 64 69   they are not di
21d40 73 61 62 6c 65 64 2c 20 31 20 69 66 20 74 68 65  sabled, 1 if the
21d50 79 20 61 72 65 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a  y are..** </dd>.
21d60 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44  **.** [[SQLITE_D
21d70 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
21d80 50 53 47 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  PSG]] <dt>SQLITE
21d90 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
21da0 5f 51 50 53 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  _QPSG</dt>.** <d
21db0 64 3e 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 44  d>^(The SQLITE_D
21dc0 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
21dd0 50 53 47 20 6f 70 74 69 6f 6e 20 61 63 74 69 76  PSG option activ
21de0 61 74 65 73 20 6f 72 20 64 65 61 63 74 69 76 61  ates or deactiva
21df0 74 65 73 0a 2a 2a 20 74 68 65 20 5b 71 75 65 72  tes.** the [quer
21e00 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c  y planner stabil
21e10 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20 28  ity guarantee] (
21e20 51 50 53 47 29 2e 20 20 57 68 65 6e 20 74 68 65  QPSG).  When the
21e30 20 51 50 53 47 20 69 73 20 61 63 74 69 76 65 2c   QPSG is active,
21e40 0a 2a 2a 20 61 20 73 69 6e 67 6c 65 20 53 51 4c  .** a single SQL
21e50 20 71 75 65 72 79 20 73 74 61 74 65 6d 65 6e 74   query statement
21e60 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65   will always use
21e70 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f 72 69   the same algori
21e80 74 68 6d 20 72 65 67 61 72 64 6c 65 73 73 0a 2a  thm regardless.*
21e90 2a 20 6f 66 20 76 61 6c 75 65 73 20 6f 66 20 5b  * of values of [
21ea0 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73  bound parameters
21eb0 5d 2e 29 5e 20 54 68 65 20 51 50 53 47 20 64 69  ].)^ The QPSG di
21ec0 73 61 62 6c 65 73 20 73 6f 6d 65 20 71 75 65 72  sables some quer
21ed0 79 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 0a  y optimizations.
21ee0 2a 2a 20 74 68 61 74 20 6c 6f 6f 6b 20 61 74 20  ** that look at 
21ef0 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 62 6f  the values of bo
21f00 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20  und parameters, 
21f10 77 68 69 63 68 20 63 61 6e 20 6d 61 6b 65 20 73  which can make s
21f20 6f 6d 65 20 71 75 65 72 69 65 73 0a 2a 2a 20 73  ome queries.** s
21f30 6c 6f 77 65 72 2e 20 20 42 75 74 20 74 68 65 20  lower.  But the 
21f40 51 50 53 47 20 68 61 73 20 74 68 65 20 61 64 76  QPSG has the adv
21f50 61 6e 74 61 67 65 20 6f 66 20 6d 6f 72 65 20 70  antage of more p
21f60 72 65 64 69 63 74 61 62 6c 65 20 62 65 68 61 76  redictable behav
21f70 69 6f 72 2e 20 20 57 69 74 68 0a 2a 2a 20 74 68  ior.  With.** th
21f80 65 20 51 50 53 47 20 61 63 74 69 76 65 2c 20 53  e QPSG active, S
21f90 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 77 61 79  QLite will alway
21fa0 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 71  s use the same q
21fb0 75 65 72 79 20 70 6c 61 6e 20 69 6e 20 74 68 65  uery plan in the
21fc0 20 66 69 65 6c 64 20 61 73 0a 2a 2a 20 77 61 73   field as.** was
21fd0 20 75 73 65 64 20 64 75 72 69 6e 67 20 74 65 73   used during tes
21fe0 74 69 6e 67 20 69 6e 20 74 68 65 20 6c 61 62 2e  ting in the lab.
21ff0 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72  .** The first ar
22000 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 73  gument to this s
22010 65 74 74 69 6e 67 20 69 73 20 61 6e 20 69 6e 74  etting is an int
22020 65 67 65 72 20 77 68 69 63 68 20 69 73 20 30 20  eger which is 0 
22030 74 6f 20 64 69 73 61 62 6c 65 20 0a 2a 2a 20 74  to disable .** t
22040 68 65 20 51 50 53 47 2c 20 70 6f 73 69 74 69 76  he QPSG, positiv
22050 65 20 74 6f 20 65 6e 61 62 6c 65 20 51 50 53 47  e to enable QPSG
22060 2c 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f  , or negative to
22070 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69   leave the setti
22080 6e 67 0a 2a 2a 20 75 6e 63 68 61 6e 67 65 64 2e  ng.** unchanged.
22090 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
220a0 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
220b0 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
220c0 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69   into which.** i
220d0 73 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31  s written 0 or 1
220e0 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65   to indicate whe
220f0 74 68 65 72 20 74 68 65 20 51 50 53 47 20 69 73  ther the QPSG is
22100 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61   disabled or ena
22110 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  bled.** followin
22120 67 20 74 68 69 73 20 63 61 6c 6c 2e 0a 2a 2a 20  g this call..** 
22130 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
22140 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 54 52  LITE_DBCONFIG_TR
22150 49 47 47 45 52 5f 45 51 50 5d 5d 20 3c 64 74 3e  IGGER_EQP]] <dt>
22160 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
22170 54 52 49 47 47 45 52 5f 45 51 50 3c 2f 64 74 3e  TRIGGER_EQP</dt>
22180 0a 2a 2a 20 3c 64 64 3e 20 42 79 20 64 65 66 61  .** <dd> By defa
22190 75 6c 74 2c 20 74 68 65 20 6f 75 74 70 75 74 20  ult, the output 
221a0 6f 66 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59  of EXPLAIN QUERY
221b0 20 50 4c 41 4e 20 63 6f 6d 6d 61 6e 64 73 20 64   PLAN commands d
221c0 6f 65 73 20 6e 6f 74 20 0a 2a 2a 20 69 6e 63 6c  oes not .** incl
221d0 75 64 65 20 6f 75 74 70 75 74 20 66 6f 72 20 61  ude output for a
221e0 6e 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 70 65  ny operations pe
221f0 72 66 6f 72 6d 65 64 20 62 79 20 74 72 69 67 67  rformed by trigg
22200 65 72 20 70 72 6f 67 72 61 6d 73 2e 20 54 68 69  er programs. Thi
22210 73 0a 2a 2a 20 6f 70 74 69 6f 6e 20 69 73 20 75  s.** option is u
22220 73 65 64 20 74 6f 20 73 65 74 20 6f 72 20 63 6c  sed to set or cl
22230 65 61 72 20 28 74 68 65 20 64 65 66 61 75 6c 74  ear (the default
22240 29 20 61 20 66 6c 61 67 20 74 68 61 74 20 67 6f  ) a flag that go
22250 76 65 72 6e 73 20 74 68 69 73 0a 2a 2a 20 62 65  verns this.** be
22260 68 61 76 69 6f 72 2e 20 54 68 65 20 66 69 72 73  havior. The firs
22270 74 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73  t parameter pass
22280 65 64 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61  ed to this opera
22290 74 69 6f 6e 20 69 73 20 61 6e 20 69 6e 74 65 67  tion is an integ
222a0 65 72 20 2d 0a 2a 2a 20 70 6f 73 69 74 69 76 65  er -.** positive
222b0 20 74 6f 20 65 6e 61 62 6c 65 20 6f 75 74 70 75   to enable outpu
222c0 74 20 66 6f 72 20 74 72 69 67 67 65 72 20 70 72  t for trigger pr
222d0 6f 67 72 61 6d 73 2c 20 6f 72 20 7a 65 72 6f 20  ograms, or zero 
222e0 74 6f 20 64 69 73 61 62 6c 65 20 69 74 2c 0a 2a  to disable it,.*
222f0 2a 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f  * or negative to
22300 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69   leave the setti
22310 6e 67 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a  ng unchanged..**
22320 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
22330 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
22340 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
22350 20 69 6e 74 6f 20 77 68 69 63 68 20 69 73 20 77   into which is w
22360 72 69 74 74 65 6e 20 0a 2a 2a 20 30 20 6f 72 20  ritten .** 0 or 
22370 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68  1 to indicate wh
22380 65 74 68 65 72 20 6f 75 74 70 75 74 2d 66 6f 72  ether output-for
22390 2d 74 72 69 67 67 65 72 73 20 68 61 73 20 62 65  -triggers has be
223a0 65 6e 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20  en disabled - 0 
223b0 69 66 20 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74  if .** it is not
223c0 20 64 69 73 61 62 6c 65 64 2c 20 31 20 69 66 20   disabled, 1 if 
223d0 69 74 20 69 73 2e 20 20 0a 2a 2a 20 3c 2f 64 64  it is.  .** </dd
223e0 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
223f0 5f 44 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f  _DBCONFIG_RESET_
22400 44 41 54 41 42 41 53 45 5d 5d 20 3c 64 74 3e 53  DATABASE]] <dt>S
22410 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52  QLITE_DBCONFIG_R
22420 45 53 45 54 5f 44 41 54 41 42 41 53 45 3c 2f 64  ESET_DATABASE</d
22430 74 3e 0a 2a 2a 20 3c 64 64 3e 20 53 65 74 20 74  t>.** <dd> Set t
22440 68 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  he SQLITE_DBCONF
22450 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41 53  IG_RESET_DATABAS
22460 45 20 66 6c 61 67 20 61 6e 64 20 74 68 65 6e 20  E flag and then 
22470 72 75 6e 0a 2a 2a 20 5b 56 41 43 55 55 4d 5d 20  run.** [VACUUM] 
22480 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 73 65  in order to rese
22490 74 20 61 20 64 61 74 61 62 61 73 65 20 62 61 63  t a database bac
224a0 6b 20 74 6f 20 61 6e 20 65 6d 70 74 79 20 64 61  k to an empty da
224b0 74 61 62 61 73 65 0a 2a 2a 20 77 69 74 68 20 6e  tabase.** with n
224c0 6f 20 73 63 68 65 6d 61 20 61 6e 64 20 6e 6f 20  o schema and no 
224d0 63 6f 6e 74 65 6e 74 2e 20 54 68 65 20 66 6f 6c  content. The fol
224e0 6c 6f 77 69 6e 67 20 70 72 6f 63 65 73 73 20 77  lowing process w
224f0 6f 72 6b 73 20 65 76 65 6e 20 66 6f 72 0a 2a 2a  orks even for.**
22500 20 61 20 62 61 64 6c 79 20 63 6f 72 72 75 70 74   a badly corrupt
22510 65 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ed database file
22520 3a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69  :.** <ol>.** <li
22530 3e 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73  > If the databas
22540 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
22550 6e 65 77 6c 79 20 6f 70 65 6e 65 64 2c 20 6d 61  newly opened, ma
22560 6b 65 20 73 75 72 65 20 69 74 20 68 61 73 20 72  ke sure it has r
22570 65 61 64 20 74 68 65 0a 2a 2a 20 20 20 20 20 20  ead the.**      
22580 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
22590 62 79 20 70 72 65 70 61 72 69 6e 67 20 74 68 65  by preparing the
225a0 6e 20 64 69 73 63 61 72 64 69 6e 67 20 73 6f 6d  n discarding som
225b0 65 20 71 75 65 72 79 20 61 67 61 69 6e 73 74 20  e query against 
225c0 74 68 65 0a 2a 2a 20 20 20 20 20 20 64 61 74 61  the.**      data
225d0 62 61 73 65 2c 20 6f 72 20 63 61 6c 6c 69 6e 67  base, or calling
225e0 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
225f0 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 29  olumn_metadata()
22600 2c 20 69 67 6e 6f 72 69 6e 67 20 61 6e 79 0a 2a  , ignoring any.*
22610 2a 20 20 20 20 20 20 65 72 72 6f 72 73 2e 20 20  *      errors.  
22620 54 68 69 73 20 73 74 65 70 20 69 73 20 6f 6e 6c  This step is onl
22630 79 20 6e 65 63 65 73 73 61 72 79 20 69 66 20 74  y necessary if t
22640 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  he application d
22650 65 73 69 72 65 73 20 74 6f 20 6b 65 65 70 0a 2a  esires to keep.*
22660 2a 20 20 20 20 20 20 74 68 65 20 64 61 74 61 62  *      the datab
22670 61 73 65 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20  ase in WAL mode 
22680 61 66 74 65 72 20 74 68 65 20 72 65 73 65 74 20  after the reset 
22690 69 66 20 69 74 20 77 61 73 20 69 6e 20 57 41 4c  if it was in WAL
226a0 20 6d 6f 64 65 20 62 65 66 6f 72 65 0a 2a 2a 20   mode before.** 
226b0 20 20 20 20 20 74 68 65 20 72 65 73 65 74 2e 20       the reset. 
226c0 20 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65   .** <li> sqlite
226d0 33 5f 64 62 5f 63 6f 6e 66 69 67 28 64 62 2c 20  3_db_config(db, 
226e0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
226f0 52 45 53 45 54 5f 44 41 54 41 42 41 53 45 2c 20  RESET_DATABASE, 
22700 31 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20 5b  1, 0);.** <li> [
22710 73 71 6c 69 74 65 33 5f 65 78 65 63 5d 28 64 62  sqlite3_exec](db
22720 2c 20 22 5b 56 41 43 55 55 4d 5d 22 2c 20 30 2c  , "[VACUUM]", 0,
22730 20 30 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20   0, 0);.** <li> 
22740 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
22750 67 28 64 62 2c 20 53 51 4c 49 54 45 5f 44 42 43  g(db, SQLITE_DBC
22760 4f 4e 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41  ONFIG_RESET_DATA
22770 42 41 53 45 2c 20 30 2c 20 30 29 3b 0a 2a 2a 20  BASE, 0, 0);.** 
22780 3c 2f 6f 6c 3e 0a 2a 2a 20 42 65 63 61 75 73 65  </ol>.** Because
22790 20 72 65 73 65 74 74 69 6e 67 20 61 20 64 61 74   resetting a dat
227a0 61 62 61 73 65 20 69 73 20 64 65 73 74 72 75 63  abase is destruc
227b0 74 69 76 65 20 61 6e 64 20 69 72 72 65 76 65 72  tive and irrever
227c0 73 69 62 6c 65 2c 20 74 68 65 0a 2a 2a 20 70 72  sible, the.** pr
227d0 6f 63 65 73 73 20 72 65 71 75 69 72 65 73 20 74  ocess requires t
227e0 68 65 20 75 73 65 20 6f 66 20 74 68 69 73 20 6f  he use of this o
227f0 62 73 63 75 72 65 20 41 50 49 20 61 6e 64 20 6d  bscure API and m
22800 75 6c 74 69 70 6c 65 20 73 74 65 70 73 20 74 6f  ultiple steps to
22810 20 68 65 6c 70 0a 2a 2a 20 65 6e 73 75 72 65 20   help.** ensure 
22820 74 68 61 74 20 69 74 20 64 6f 65 73 20 6e 6f 74  that it does not
22830 20 68 61 70 70 65 6e 20 62 79 20 61 63 63 69 64   happen by accid
22840 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  ent..**.** [[SQL
22850 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46  ITE_DBCONFIG_DEF
22860 45 4e 53 49 56 45 5d 5d 20 3c 64 74 3e 53 51 4c  ENSIVE]] <dt>SQL
22870 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46  ITE_DBCONFIG_DEF
22880 45 4e 53 49 56 45 3c 2f 64 74 3e 0a 2a 2a 20 3c  ENSIVE</dt>.** <
22890 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 44 42  dd>The SQLITE_DB
228a0 43 4f 4e 46 49 47 5f 44 45 46 45 4e 53 49 56 45  CONFIG_DEFENSIVE
228b0 20 6f 70 74 69 6f 6e 20 61 63 74 69 76 61 74 65   option activate
228c0 73 20 6f 72 20 64 65 61 63 74 69 76 61 74 65 73  s or deactivates
228d0 20 74 68 65 0a 2a 2a 20 22 64 65 66 65 6e 73 69   the.** "defensi
228e0 76 65 22 20 66 6c 61 67 20 66 6f 72 20 61 20 64  ve" flag for a d
228f0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
22900 6f 6e 2e 20 20 57 68 65 6e 20 74 68 65 20 64 65  on.  When the de
22910 66 65 6e 73 69 76 65 0a 2a 2a 20 66 6c 61 67 20  fensive.** flag 
22920 69 73 20 65 6e 61 62 6c 65 64 2c 20 6c 61 6e 67  is enabled, lang
22930 75 61 67 65 20 66 65 61 74 75 72 65 73 20 74 68  uage features th
22940 61 74 20 61 6c 6c 6f 77 20 6f 72 64 69 6e 61 72  at allow ordinar
22950 79 20 53 51 4c 20 74 6f 20 0a 2a 2a 20 64 65 6c  y SQL to .** del
22960 69 62 65 72 61 74 65 6c 79 20 63 6f 72 72 75 70  iberately corrup
22970 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  t the database f
22980 69 6c 65 20 61 72 65 20 64 69 73 61 62 6c 65 64  ile are disabled
22990 2e 20 20 54 68 65 20 64 69 73 61 62 6c 65 64 0a  .  The disabled.
229a0 2a 2a 20 66 65 61 74 75 72 65 73 20 69 6e 63 6c  ** features incl
229b0 75 64 65 20 62 75 74 20 61 72 65 20 6e 6f 74 20  ude but are not 
229c0 6c 69 6d 69 74 65 64 20 74 6f 20 74 68 65 20 66  limited to the f
229d0 6f 6c 6c 6f 77 69 6e 67 3a 0a 2a 2a 20 3c 75 6c  ollowing:.** <ul
229e0 3e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 5b 50  >.** <li> The [P
229f0 52 41 47 4d 41 20 77 72 69 74 61 62 6c 65 5f 73  RAGMA writable_s
22a00 63 68 65 6d 61 3d 4f 4e 5d 20 73 74 61 74 65 6d  chema=ON] statem
22a10 65 6e 74 2e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65  ent..** <li> The
22a20 20 5b 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c   [PRAGMA journal
22a30 5f 6d 6f 64 65 3d 4f 46 46 5d 20 73 74 61 74 65  _mode=OFF] state
22a40 6d 65 6e 74 2e 0a 2a 2a 20 3c 6c 69 3e 20 57 72  ment..** <li> Wr
22a50 69 74 65 73 20 74 6f 20 74 68 65 20 5b 73 71 6c  ites to the [sql
22a60 69 74 65 5f 64 62 70 61 67 65 5d 20 76 69 72 74  ite_dbpage] virt
22a70 75 61 6c 20 74 61 62 6c 65 2e 0a 2a 2a 20 3c 6c  ual table..** <l
22a80 69 3e 20 44 69 72 65 63 74 20 77 72 69 74 65 73  i> Direct writes
22a90 20 74 6f 20 5b 73 68 61 64 6f 77 20 74 61 62 6c   to [shadow tabl
22aa0 65 73 5d 2e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a  es]..** </ul>.**
22ab0 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
22ac0 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 57  QLITE_DBCONFIG_W
22ad0 52 49 54 41 42 4c 45 5f 53 43 48 45 4d 41 5d 5d  RITABLE_SCHEMA]]
22ae0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
22af0 4e 46 49 47 5f 57 52 49 54 41 42 4c 45 5f 53 43  NFIG_WRITABLE_SC
22b00 48 45 4d 41 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  HEMA</dt>.** <dd
22b10 3e 54 68 65 20 53 51 4c 49 54 45 5f 44 42 43 4f  >The SQLITE_DBCO
22b20 4e 46 49 47 5f 57 52 49 54 41 42 4c 45 5f 53 43  NFIG_WRITABLE_SC
22b30 48 45 4d 41 20 6f 70 74 69 6f 6e 20 61 63 74 69  HEMA option acti
22b40 76 61 74 65 73 20 6f 72 20 64 65 61 63 74 69 76  vates or deactiv
22b50 61 74 65 73 20 74 68 65 0a 2a 2a 20 22 77 72 69  ates the.** "wri
22b60 74 61 62 6c 65 5f 73 63 68 65 6d 61 22 20 66 6c  table_schema" fl
22b70 61 67 2e 20 54 68 69 73 20 68 61 73 20 74 68 65  ag. This has the
22b80 20 73 61 6d 65 20 65 66 66 65 63 74 20 61 6e 64   same effect and
22b90 20 69 73 20 6c 6f 67 69 63 61 6c 6c 79 20 65 71   is logically eq
22ba0 75 69 76 61 6c 65 6e 74 0a 2a 2a 20 74 6f 20 73  uivalent.** to s
22bb0 65 74 74 69 6e 67 20 5b 50 52 41 47 4d 41 20 77  etting [PRAGMA w
22bc0 72 69 74 61 62 6c 65 5f 73 63 68 65 6d 61 3d 4f  ritable_schema=O
22bd0 4e 5d 20 6f 72 20 5b 50 52 41 47 4d 41 20 77 72  N] or [PRAGMA wr
22be0 69 74 61 62 6c 65 5f 73 63 68 65 6d 61 3d 4f 46  itable_schema=OF
22bf0 46 5d 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  F]..** The first
22c00 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69   argument to thi
22c10 73 20 73 65 74 74 69 6e 67 20 69 73 20 61 6e 20  s setting is an 
22c20 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
22c30 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 0a 2a   0 to disable .*
22c40 2a 20 74 68 65 20 77 72 69 74 61 62 6c 65 5f 73  * the writable_s
22c50 63 68 65 6d 61 2c 20 70 6f 73 69 74 69 76 65 20  chema, positive 
22c60 74 6f 20 65 6e 61 62 6c 65 20 77 72 69 74 61 62  to enable writab
22c70 6c 65 5f 73 63 68 65 6d 61 2c 20 6f 72 20 6e 65  le_schema, or ne
22c80 67 61 74 69 76 65 20 74 6f 0a 2a 2a 20 6c 65 61  gative to.** lea
22c90 76 65 20 74 68 65 20 73 65 74 74 69 6e 67 20 75  ve the setting u
22ca0 6e 63 68 61 6e 67 65 64 2e 20 54 68 65 20 73 65  nchanged. The se
22cb0 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69  cond parameter i
22cc0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
22cd0 6e 0a 2a 2a 20 69 6e 74 65 67 65 72 20 69 6e 74  n.** integer int
22ce0 6f 20 77 68 69 63 68 20 69 73 20 77 72 69 74 74  o which is writt
22cf0 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64  en 0 or 1 to ind
22d00 69 63 61 74 65 20 77 68 65 74 68 65 72 20 74 68  icate whether th
22d10 65 20 77 72 69 74 61 62 6c 65 5f 73 63 68 65 6d  e writable_schem
22d20 61 0a 2a 2a 20 69 73 20 65 6e 61 62 6c 65 64 20  a.** is enabled 
22d30 6f 72 20 64 69 73 61 62 6c 65 64 20 66 6f 6c 6c  or disabled foll
22d40 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e  owing this call.
22d50 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  .** </dd>.**.** 
22d60 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  [[SQLITE_DBCONFI
22d70 47 5f 4c 45 47 41 43 59 5f 41 4c 54 45 52 5f 54  G_LEGACY_ALTER_T
22d80 41 42 4c 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  ABLE]].** <dt>SQ
22d90 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 45  LITE_DBCONFIG_LE
22da0 47 41 43 59 5f 41 4c 54 45 52 5f 54 41 42 4c 45  GACY_ALTER_TABLE
22db0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
22dc0 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47   SQLITE_DBCONFIG
22dd0 5f 4c 45 47 41 43 59 5f 41 4c 54 45 52 5f 54 41  _LEGACY_ALTER_TA
22de0 42 4c 45 20 6f 70 74 69 6f 6e 20 61 63 74 69 76  BLE option activ
22df0 61 74 65 73 20 6f 72 20 64 65 61 63 74 69 76 61  ates or deactiva
22e00 74 65 73 0a 2a 2a 20 74 68 65 20 6c 65 67 61 63  tes.** the legac
22e10 79 20 62 65 68 61 76 69 6f 72 20 6f 66 20 74 68  y behavior of th
22e20 65 20 5b 41 4c 54 45 52 20 54 41 42 4c 45 20 52  e [ALTER TABLE R
22e30 45 4e 41 4d 45 5d 20 63 6f 6d 6d 61 6e 64 20 73  ENAME] command s
22e40 75 63 68 20 69 74 0a 2a 2a 20 62 65 68 61 76 65  uch it.** behave
22e50 73 20 61 73 20 69 74 20 64 69 64 20 70 72 69 6f  s as it did prio
22e60 72 20 74 6f 20 5b 76 65 72 73 69 6f 6e 20 33 2e  r to [version 3.
22e70 32 34 2e 30 5d 20 28 32 30 31 38 2d 30 36 2d 30  24.0] (2018-06-0
22e80 34 29 2e 20 20 53 65 65 20 74 68 65 0a 2a 2a 20  4).  See the.** 
22e90 22 43 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 4e  "Compatibility N
22ea0 6f 74 69 63 65 22 20 6f 6e 20 74 68 65 20 5b 41  otice" on the [A
22eb0 4c 54 45 52 20 54 41 42 4c 45 20 52 45 4e 41 4d  LTER TABLE RENAM
22ec0 45 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 5d  E documentation]
22ed0 20 66 6f 72 0a 2a 2a 20 61 64 64 69 74 69 6f 6e   for.** addition
22ee0 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20  al information. 
22ef0 54 68 69 73 20 66 65 61 74 75 72 65 20 63 61 6e  This feature can
22f00 20 61 6c 73 6f 20 62 65 20 74 75 72 6e 65 64 20   also be turned 
22f10 6f 6e 20 61 6e 64 20 6f 66 66 0a 2a 2a 20 75 73  on and off.** us
22f20 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41 20  ing the [PRAGMA 
22f30 6c 65 67 61 63 79 5f 61 6c 74 65 72 5f 74 61 62  legacy_alter_tab
22f40 6c 65 5d 20 73 74 61 74 65 6d 65 6e 74 2e 0a 2a  le] statement..*
22f50 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  * </dd>.**.** [[
22f60 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
22f70 44 51 53 5f 44 4d 4c 5d 5d 0a 2a 2a 20 3c 64 74  DQS_DML]].** <dt
22f80 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  >SQLITE_DBCONFIG
22f90 5f 44 51 53 5f 44 4d 4c 3c 2f 74 64 3e 0a 2a 2a  _DQS_DML</td>.**
22fa0 20 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f   <dd>The SQLITE_
22fb0 44 42 43 4f 4e 46 49 47 5f 44 51 53 5f 44 4d 4c  DBCONFIG_DQS_DML
22fc0 20 6f 70 74 69 6f 6e 20 61 63 74 69 76 61 74 65   option activate
22fd0 73 20 6f 72 20 64 65 61 63 74 69 76 61 74 65 73  s or deactivates
22fe0 0a 2a 2a 20 74 68 65 20 6c 65 67 61 63 79 20 5b  .** the legacy [
22ff0 64 6f 75 62 6c 65 2d 71 75 6f 74 65 64 20 73 74  double-quoted st
23000 72 69 6e 67 20 6c 69 74 65 72 61 6c 5d 20 6d 69  ring literal] mi
23010 73 66 65 61 74 75 72 65 20 66 6f 72 20 44 4d 4c  sfeature for DML
23020 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 6f 6e   statement.** on
23030 6c 79 2c 20 74 68 61 74 20 69 73 20 44 45 4c 45  ly, that is DELE
23040 54 45 2c 20 49 4e 53 45 52 54 2c 20 53 45 4c 45  TE, INSERT, SELE
23050 43 54 2c 20 61 6e 64 20 55 50 44 41 54 45 20 73  CT, and UPDATE s
23060 74 61 74 65 6d 65 6e 74 73 2e 20 54 68 65 0a 2a  tatements. The.*
23070 2a 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  * default value 
23080 6f 66 20 74 68 69 73 20 73 65 74 74 69 6e 67 20  of this setting 
23090 69 73 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79  is determined by
230a0 20 74 68 65 20 5b 2d 44 53 51 4c 49 54 45 5f 44   the [-DSQLITE_D
230b0 51 53 5d 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74  QS].** compile-t
230c0 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 20 3c  ime option..** <
230d0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
230e0 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 51 53  ITE_DBCONFIG_DQS
230f0 5f 44 44 4c 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  _DDL]].** <dt>SQ
23100 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 51  LITE_DBCONFIG_DQ
23110 53 5f 44 44 4c 3c 2f 74 64 3e 0a 2a 2a 20 3c 64  S_DDL</td>.** <d
23120 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 44 42 43  d>The SQLITE_DBC
23130 4f 4e 46 49 47 5f 44 51 53 20 6f 70 74 69 6f 6e  ONFIG_DQS option
23140 20 61 63 74 69 76 61 74 65 73 20 6f 72 20 64 65   activates or de
23150 61 63 74 69 76 61 74 65 73 0a 2a 2a 20 74 68 65  activates.** the
23160 20 6c 65 67 61 63 79 20 5b 64 6f 75 62 6c 65 2d   legacy [double-
23170 71 75 6f 74 65 64 20 73 74 72 69 6e 67 20 6c 69  quoted string li
23180 74 65 72 61 6c 5d 20 6d 69 73 66 65 61 74 75 72  teral] misfeatur
23190 65 20 66 6f 72 20 44 44 4c 20 73 74 61 74 65 6d  e for DDL statem
231a0 65 6e 74 73 2c 0a 2a 2a 20 73 75 63 68 20 61 73  ents,.** such as
231b0 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 61 6e   CREATE TABLE an
231c0 64 20 43 52 45 41 54 45 20 49 4e 44 45 58 2e 20  d CREATE INDEX. 
231d0 54 68 65 0a 2a 2a 20 64 65 66 61 75 6c 74 20 76  The.** default v
231e0 61 6c 75 65 20 6f 66 20 74 68 69 73 20 73 65 74  alue of this set
231f0 74 69 6e 67 20 69 73 20 64 65 74 65 72 6d 69 6e  ting is determin
23200 65 64 20 62 79 20 74 68 65 20 5b 2d 44 53 51 4c  ed by the [-DSQL
23210 49 54 45 5f 44 51 53 5d 0a 2a 2a 20 63 6f 6d 70  ITE_DQS].** comp
23220 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e  ile-time option.
23230 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 20 3c 2f 64  .** </dd>.** </d
23240 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  l>.*/.#define SQ
23250 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4d 41  LITE_DBCONFIG_MA
23260 49 4e 44 42 4e 41 4d 45 20 20 20 20 20 20 20 20  INDBNAME        
23270 20 20 20 20 31 30 30 30 20 2f 2a 20 63 6f 6e 73      1000 /* cons
23280 74 20 63 68 61 72 2a 20 2a 2f 0a 23 64 65 66 69  t char* */.#defi
23290 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  ne SQLITE_DBCONF
232a0 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 20 20 20  IG_LOOKASIDE    
232b0 20 20 20 20 20 20 20 20 20 31 30 30 31 20 2f 2a           1001 /*
232c0 20 76 6f 69 64 2a 20 69 6e 74 20 69 6e 74 20 2a   void* int int *
232d0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
232e0 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
232f0 5f 46 4b 45 59 20 20 20 20 20 20 20 20 20 20 20  _FKEY           
23300 31 30 30 32 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1002 /* int int*
23310 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
23320 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
23330 4c 45 5f 54 52 49 47 47 45 52 20 20 20 20 20 20  LE_TRIGGER      
23340 20 20 31 30 30 33 20 2f 2a 20 69 6e 74 20 69 6e    1003 /* int in
23350 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
23360 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
23370 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49  ABLE_FTS3_TOKENI
23380 5a 45 52 20 31 30 30 34 20 2f 2a 20 69 6e 74 20  ZER 1004 /* int 
23390 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
233a0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
233b0 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45  ENABLE_LOAD_EXTE
233c0 4e 53 49 4f 4e 20 31 30 30 35 20 2f 2a 20 69 6e  NSION 1005 /* in
233d0 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
233e0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
233f0 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f  G_NO_CKPT_ON_CLO
23400 53 45 20 20 20 20 20 20 31 30 30 36 20 2f 2a 20  SE      1006 /* 
23410 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
23420 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
23430 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 20  FIG_ENABLE_QPSG 
23440 20 20 20 20 20 20 20 20 20 20 31 30 30 37 20 2f            1007 /
23450 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
23460 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
23470 4f 4e 46 49 47 5f 54 52 49 47 47 45 52 5f 45 51  ONFIG_TRIGGER_EQ
23480 50 20 20 20 20 20 20 20 20 20 20 20 31 30 30 38  P           1008
23490 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
234a0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
234b0 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f 44 41  BCONFIG_RESET_DA
234c0 54 41 42 41 53 45 20 20 20 20 20 20 20 20 31 30  TABASE        10
234d0 30 39 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  09 /* int int* *
234e0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
234f0 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46 45 4e 53  _DBCONFIG_DEFENS
23500 49 56 45 20 20 20 20 20 20 20 20 20 20 20 20 20  IVE             
23510 31 30 31 30 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1010 /* int int*
23520 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
23530 54 45 5f 44 42 43 4f 4e 46 49 47 5f 57 52 49 54  TE_DBCONFIG_WRIT
23540 41 42 4c 45 5f 53 43 48 45 4d 41 20 20 20 20 20  ABLE_SCHEMA     
23550 20 20 31 30 31 31 20 2f 2a 20 69 6e 74 20 69 6e    1011 /* int in
23560 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
23570 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 45  LITE_DBCONFIG_LE
23580 47 41 43 59 5f 41 4c 54 45 52 5f 54 41 42 4c 45  GACY_ALTER_TABLE
23590 20 20 20 20 31 30 31 32 20 2f 2a 20 69 6e 74 20      1012 /* int 
235a0 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
235b0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
235c0 44 51 53 5f 44 4d 4c 20 20 20 20 20 20 20 20 20  DQS_DML         
235d0 20 20 20 20 20 20 31 30 31 33 20 2f 2a 20 69 6e        1013 /* in
235e0 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
235f0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
23600 47 5f 44 51 53 5f 44 44 4c 20 20 20 20 20 20 20  G_DQS_DDL       
23610 20 20 20 20 20 20 20 20 31 30 31 34 20 2f 2a 20          1014 /* 
23620 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
23630 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
23640 46 49 47 5f 45 4e 41 42 4c 45 5f 56 49 45 57 20  FIG_ENABLE_VIEW 
23650 20 20 20 20 20 20 20 20 20 20 31 30 31 35 20 2f            1015 /
23660 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
23670 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
23680 4f 4e 46 49 47 5f 4d 41 58 20 20 20 20 20 20 20  ONFIG_MAX       
23690 20 20 20 20 20 20 20 20 20 20 20 20 31 30 31 35              1015
236a0 20 2f 2a 20 4c 61 72 67 65 73 74 20 44 42 43 4f   /* Largest DBCO
236b0 4e 46 49 47 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43  NFIG */../*.** C
236c0 41 50 49 33 52 45 46 3a 20 45 6e 61 62 6c 65 20  API3REF: Enable 
236d0 4f 72 20 44 69 73 61 62 6c 65 20 45 78 74 65 6e  Or Disable Exten
236e0 64 65 64 20 52 65 73 75 6c 74 20 43 6f 64 65 73  ded Result Codes
236f0 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
23700 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  te3.**.** ^The s
23710 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
23720 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 29 20 72  result_codes() r
23730 6f 75 74 69 6e 65 20 65 6e 61 62 6c 65 73 20 6f  outine enables o
23740 72 20 64 69 73 61 62 6c 65 73 20 74 68 65 0a 2a  r disables the.*
23750 2a 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75  * [extended resu
23760 6c 74 20 63 6f 64 65 73 5d 20 66 65 61 74 75 72  lt codes] featur
23770 65 20 6f 66 20 53 51 4c 69 74 65 2e 20 5e 54 68  e of SQLite. ^Th
23780 65 20 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c  e extended resul
23790 74 0a 2a 2a 20 63 6f 64 65 73 20 61 72 65 20 64  t.** codes are d
237a0 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  isabled by defau
237b0 6c 74 20 66 6f 72 20 68 69 73 74 6f 72 69 63 61  lt for historica
237c0 6c 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e  l compatibility.
237d0 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
237e0 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  nt sqlite3_exten
237f0 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
23800 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20 6f  (sqlite3*, int o
23810 6e 6f 66 66 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  noff);../*.** CA
23820 50 49 33 52 45 46 3a 20 4c 61 73 74 20 49 6e 73  PI3REF: Last Ins
23830 65 72 74 20 52 6f 77 69 64 0a 2a 2a 20 4d 45 54  ert Rowid.** MET
23840 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  HOD: sqlite3.**.
23850 2a 2a 20 5e 45 61 63 68 20 65 6e 74 72 79 20 69  ** ^Each entry i
23860 6e 20 6d 6f 73 74 20 53 51 4c 69 74 65 20 74 61  n most SQLite ta
23870 62 6c 65 73 20 28 65 78 63 65 70 74 20 66 6f 72  bles (except for
23880 20 5b 57 49 54 48 4f 55 54 20 52 4f 57 49 44 5d   [WITHOUT ROWID]
23890 20 74 61 62 6c 65 73 29 0a 2a 2a 20 68 61 73 20   tables).** has 
238a0 61 20 75 6e 69 71 75 65 20 36 34 2d 62 69 74 20  a unique 64-bit 
238b0 73 69 67 6e 65 64 0a 2a 2a 20 69 6e 74 65 67 65  signed.** intege
238c0 72 20 6b 65 79 20 63 61 6c 6c 65 64 20 74 68 65  r key called the
238d0 20 5b 52 4f 57 49 44 20 7c 20 22 72 6f 77 69 64   [ROWID | "rowid
238e0 22 5d 2e 20 5e 54 68 65 20 72 6f 77 69 64 20 69  "]. ^The rowid i
238f0 73 20 61 6c 77 61 79 73 20 61 76 61 69 6c 61 62  s always availab
23900 6c 65 0a 2a 2a 20 61 73 20 61 6e 20 75 6e 64 65  le.** as an unde
23910 63 6c 61 72 65 64 20 63 6f 6c 75 6d 6e 20 6e 61  clared column na
23920 6d 65 64 20 52 4f 57 49 44 2c 20 4f 49 44 2c 20  med ROWID, OID, 
23930 6f 72 20 5f 52 4f 57 49 44 5f 20 61 73 20 6c 6f  or _ROWID_ as lo
23940 6e 67 20 61 73 20 74 68 6f 73 65 0a 2a 2a 20 6e  ng as those.** n
23950 61 6d 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 73  ames are not als
23960 6f 20 75 73 65 64 20 62 79 20 65 78 70 6c 69 63  o used by explic
23970 69 74 6c 79 20 64 65 63 6c 61 72 65 64 20 63 6f  itly declared co
23980 6c 75 6d 6e 73 2e 20 5e 49 66 0a 2a 2a 20 74 68  lumns. ^If.** th
23990 65 20 74 61 62 6c 65 20 68 61 73 20 61 20 63 6f  e table has a co
239a0 6c 75 6d 6e 20 6f 66 20 74 79 70 65 20 5b 49 4e  lumn of type [IN
239b0 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
239c0 59 5d 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c  Y] then that col
239d0 75 6d 6e 0a 2a 2a 20 69 73 20 61 6e 6f 74 68 65  umn.** is anothe
239e0 72 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20  r alias for the 
239f0 72 6f 77 69 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  rowid..**.** ^Th
23a00 65 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  e sqlite3_last_i
23a10 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 29 20 69  nsert_rowid(D) i
23a20 6e 74 65 72 66 61 63 65 20 75 73 75 61 6c 6c 79  nterface usually
23a30 20 72 65 74 75 72 6e 73 20 74 68 65 20 5b 72 6f   returns the [ro
23a40 77 69 64 5d 20 6f 66 0a 2a 2a 20 74 68 65 20 6d  wid] of.** the m
23a50 6f 73 74 20 72 65 63 65 6e 74 20 73 75 63 63 65  ost recent succe
23a60 73 73 66 75 6c 20 5b 49 4e 53 45 52 54 5d 20 69  ssful [INSERT] i
23a70 6e 74 6f 20 61 20 72 6f 77 69 64 20 74 61 62 6c  nto a rowid tabl
23a80 65 20 6f 72 20 5b 76 69 72 74 75 61 6c 20 74 61  e or [virtual ta
23a90 62 6c 65 5d 0a 2a 2a 20 6f 6e 20 64 61 74 61 62  ble].** on datab
23aa0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 44  ase connection D
23ab0 2e 20 5e 49 6e 73 65 72 74 73 20 69 6e 74 6f 20  . ^Inserts into 
23ac0 5b 57 49 54 48 4f 55 54 20 52 4f 57 49 44 5d 20  [WITHOUT ROWID] 
23ad0 74 61 62 6c 65 73 20 61 72 65 20 6e 6f 74 0a 2a  tables are not.*
23ae0 2a 20 72 65 63 6f 72 64 65 64 2e 20 5e 49 66 20  * recorded. ^If 
23af0 6e 6f 20 73 75 63 63 65 73 73 66 75 6c 20 5b 49  no successful [I
23b00 4e 53 45 52 54 5d 73 20 69 6e 74 6f 20 72 6f 77  NSERT]s into row
23b10 69 64 20 74 61 62 6c 65 73 20 68 61 76 65 20 65  id tables have e
23b20 76 65 72 20 6f 63 63 75 72 72 65 64 20 0a 2a 2a  ver occurred .**
23b30 20 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   on the database
23b40 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 44 2c 20 74   connection D, t
23b50 68 65 6e 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  hen sqlite3_last
23b60 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 29  _insert_rowid(D)
23b70 20 72 65 74 75 72 6e 73 20 0a 2a 2a 20 7a 65 72   returns .** zer
23b80 6f 2e 0a 2a 2a 0a 2a 2a 20 41 73 20 77 65 6c 6c  o..**.** As well
23b90 20 61 73 20 62 65 69 6e 67 20 73 65 74 20 61 75   as being set au
23ba0 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 73 20 72  tomatically as r
23bb0 6f 77 73 20 61 72 65 20 69 6e 73 65 72 74 65 64  ows are inserted
23bc0 20 69 6e 74 6f 20 64 61 74 61 62 61 73 65 0a 2a   into database.*
23bd0 2a 20 74 61 62 6c 65 73 2c 20 74 68 65 20 76 61  * tables, the va
23be0 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
23bf0 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 61  this function ma
23c00 79 20 62 65 20 73 65 74 20 65 78 70 6c 69 63 69  y be set explici
23c10 74 6c 79 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74  tly by.** [sqlit
23c20 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65  e3_set_last_inse
23c30 72 74 5f 72 6f 77 69 64 28 29 5d 0a 2a 2a 0a 2a  rt_rowid()].**.*
23c40 2a 20 53 6f 6d 65 20 76 69 72 74 75 61 6c 20 74  * Some virtual t
23c50 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
23c60 69 6f 6e 73 20 6d 61 79 20 49 4e 53 45 52 54 20  ions may INSERT 
23c70 72 6f 77 73 20 69 6e 74 6f 20 72 6f 77 69 64 20  rows into rowid 
23c80 74 61 62 6c 65 73 20 61 73 0a 2a 2a 20 70 61 72  tables as.** par
23c90 74 20 6f 66 20 63 6f 6d 6d 69 74 74 69 6e 67 20  t of committing 
23ca0 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 28 65  a transaction (e
23cb0 2e 67 2e 20 74 6f 20 66 6c 75 73 68 20 64 61 74  .g. to flush dat
23cc0 61 20 61 63 63 75 6d 75 6c 61 74 65 64 20 69 6e  a accumulated in
23cd0 20 6d 65 6d 6f 72 79 0a 2a 2a 20 74 6f 20 64 69   memory.** to di
23ce0 73 6b 29 2e 20 49 6e 20 74 68 69 73 20 63 61 73  sk). In this cas
23cf0 65 20 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c  e subsequent cal
23d00 6c 73 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74  ls to this funct
23d10 69 6f 6e 20 72 65 74 75 72 6e 20 74 68 65 20 72  ion return the r
23d20 6f 77 69 64 0a 2a 2a 20 61 73 73 6f 63 69 61 74  owid.** associat
23d30 65 64 20 77 69 74 68 20 74 68 65 73 65 20 69 6e  ed with these in
23d40 74 65 72 6e 61 6c 20 49 4e 53 45 52 54 20 6f 70  ternal INSERT op
23d50 65 72 61 74 69 6f 6e 73 2c 20 77 68 69 63 68 20  erations, which 
23d60 6c 65 61 64 73 20 74 6f 20 0a 2a 2a 20 75 6e 69  leads to .** uni
23d70 6e 74 75 69 74 69 76 65 20 72 65 73 75 6c 74 73  ntuitive results
23d80 2e 20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20  . Virtual table 
23d90 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
23da0 74 68 61 74 20 64 6f 20 77 72 69 74 65 20 74 6f  that do write to
23db0 20 72 6f 77 69 64 0a 2a 2a 20 74 61 62 6c 65 73   rowid.** tables
23dc0 20 69 6e 20 74 68 69 73 20 77 61 79 20 63 61 6e   in this way can
23dd0 20 61 76 6f 69 64 20 74 68 69 73 20 70 72 6f 62   avoid this prob
23de0 6c 65 6d 20 62 79 20 72 65 73 74 6f 72 69 6e 67  lem by restoring
23df0 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 0a 2a   the original .*
23e00 2a 20 72 6f 77 69 64 20 76 61 6c 75 65 20 75 73  * rowid value us
23e10 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  ing [sqlite3_set
23e20 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
23e30 69 64 28 29 5d 20 62 65 66 6f 72 65 20 72 65 74  id()] before ret
23e40 75 72 6e 69 6e 67 20 0a 2a 2a 20 63 6f 6e 74 72  urning .** contr
23e50 6f 6c 20 74 6f 20 74 68 65 20 75 73 65 72 2e 0a  ol to the user..
23e60 2a 2a 0a 2a 2a 20 5e 28 49 66 20 61 6e 20 5b 49  **.** ^(If an [I
23e70 4e 53 45 52 54 5d 20 6f 63 63 75 72 73 20 77 69  NSERT] occurs wi
23e80 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 20 74  thin a trigger t
23e90 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65  hen this routine
23ea0 20 77 69 6c 6c 20 0a 2a 2a 20 72 65 74 75 72 6e   will .** return
23eb0 20 74 68 65 20 5b 72 6f 77 69 64 5d 20 6f 66 20   the [rowid] of 
23ec0 74 68 65 20 69 6e 73 65 72 74 65 64 20 72 6f 77  the inserted row
23ed0 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 20   as long as the 
23ee0 74 72 69 67 67 65 72 20 69 73 20 0a 2a 2a 20 72  trigger is .** r
23ef0 75 6e 6e 69 6e 67 2e 20 4f 6e 63 65 20 74 68 65  unning. Once the
23f00 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
23f10 20 65 6e 64 73 2c 20 74 68 65 20 76 61 6c 75 65   ends, the value
23f20 20 72 65 74 75 72 6e 65 64 20 0a 2a 2a 20 62 79   returned .** by
23f30 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65   this routine re
23f40 76 65 72 74 73 20 74 6f 20 77 68 61 74 20 69 74  verts to what it
23f50 20 77 61 73 20 62 65 66 6f 72 65 20 74 68 65 20   was before the 
23f60 74 72 69 67 67 65 72 20 77 61 73 20 66 69 72 65  trigger was fire
23f70 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 41 6e 20 5b  d.)^.**.** ^An [
23f80 49 4e 53 45 52 54 5d 20 74 68 61 74 20 66 61 69  INSERT] that fai
23f90 6c 73 20 64 75 65 20 74 6f 20 61 20 63 6f 6e 73  ls due to a cons
23fa0 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
23fb0 20 69 73 20 6e 6f 74 20 61 0a 2a 2a 20 73 75 63   is not a.** suc
23fc0 63 65 73 73 66 75 6c 20 5b 49 4e 53 45 52 54 5d  cessful [INSERT]
23fd0 20 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 63 68   and does not ch
23fe0 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65 20 72  ange the value r
23ff0 65 74 75 72 6e 65 64 20 62 79 20 74 68 69 73 0a  eturned by this.
24000 2a 2a 20 72 6f 75 74 69 6e 65 2e 20 20 5e 54 68  ** routine.  ^Th
24010 75 73 20 49 4e 53 45 52 54 20 4f 52 20 46 41 49  us INSERT OR FAI
24020 4c 2c 20 49 4e 53 45 52 54 20 4f 52 20 49 47 4e  L, INSERT OR IGN
24030 4f 52 45 2c 20 49 4e 53 45 52 54 20 4f 52 20 52  ORE, INSERT OR R
24040 4f 4c 4c 42 41 43 4b 2c 0a 2a 2a 20 61 6e 64 20  OLLBACK,.** and 
24050 49 4e 53 45 52 54 20 4f 52 20 41 42 4f 52 54 20  INSERT OR ABORT 
24060 6d 61 6b 65 20 6e 6f 20 63 68 61 6e 67 65 73 20  make no changes 
24070 74 6f 20 74 68 65 20 72 65 74 75 72 6e 20 76 61  to the return va
24080 6c 75 65 20 6f 66 20 74 68 69 73 0a 2a 2a 20 72  lue of this.** r
24090 6f 75 74 69 6e 65 20 77 68 65 6e 20 74 68 65 69  outine when thei
240a0 72 20 69 6e 73 65 72 74 69 6f 6e 20 66 61 69 6c  r insertion fail
240b0 73 2e 20 20 5e 28 57 68 65 6e 20 49 4e 53 45 52  s.  ^(When INSER
240c0 54 20 4f 52 20 52 45 50 4c 41 43 45 0a 2a 2a 20  T OR REPLACE.** 
240d0 65 6e 63 6f 75 6e 74 65 72 73 20 61 20 63 6f 6e  encounters a con
240e0 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
240f0 6e 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 66  n, it does not f
24100 61 69 6c 2e 20 20 54 68 65 0a 2a 2a 20 49 4e 53  ail.  The.** INS
24110 45 52 54 20 63 6f 6e 74 69 6e 75 65 73 20 74 6f  ERT continues to
24120 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 61 66 74 65   completion afte
24130 72 20 64 65 6c 65 74 69 6e 67 20 72 6f 77 73 20  r deleting rows 
24140 74 68 61 74 20 63 61 75 73 65 64 0a 2a 2a 20 74  that caused.** t
24150 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 70 72  he constraint pr
24160 6f 62 6c 65 6d 20 73 6f 20 49 4e 53 45 52 54 20  oblem so INSERT 
24170 4f 52 20 52 45 50 4c 41 43 45 20 77 69 6c 6c 20  OR REPLACE will 
24180 61 6c 77 61 79 73 20 63 68 61 6e 67 65 0a 2a 2a  always change.**
24190 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   the return valu
241a0 65 20 6f 66 20 74 68 69 73 20 69 6e 74 65 72 66  e of this interf
241b0 61 63 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 46 6f  ace.)^.**.** ^Fo
241c0 72 20 74 68 65 20 70 75 72 70 6f 73 65 73 20 6f  r the purposes o
241d0 66 20 74 68 69 73 20 72 6f 75 74 69 6e 65 2c 20  f this routine, 
241e0 61 6e 20 5b 49 4e 53 45 52 54 5d 20 69 73 20 63  an [INSERT] is c
241f0 6f 6e 73 69 64 65 72 65 64 20 74 6f 0a 2a 2a 20  onsidered to.** 
24200 62 65 20 73 75 63 63 65 73 73 66 75 6c 20 65 76  be successful ev
24210 65 6e 20 69 66 20 69 74 20 69 73 20 73 75 62 73  en if it is subs
24220 65 71 75 65 6e 74 6c 79 20 72 6f 6c 6c 65 64 20  equently rolled 
24230 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73  back..**.** This
24240 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 63 63   function is acc
24250 65 73 73 69 62 6c 65 20 74 6f 20 53 51 4c 20 73  essible to SQL s
24260 74 61 74 65 6d 65 6e 74 73 20 76 69 61 20 74 68  tatements via th
24270 65 0a 2a 2a 20 5b 6c 61 73 74 5f 69 6e 73 65 72  e.** [last_inser
24280 74 5f 72 6f 77 69 64 28 29 20 53 51 4c 20 66 75  t_rowid() SQL fu
24290 6e 63 74 69 6f 6e 5d 2e 0a 2a 2a 0a 2a 2a 20 49  nction]..**.** I
242a0 66 20 61 20 73 65 70 61 72 61 74 65 20 74 68 72  f a separate thr
242b0 65 61 64 20 70 65 72 66 6f 72 6d 73 20 61 20 6e  ead performs a n
242c0 65 77 20 5b 49 4e 53 45 52 54 5d 20 6f 6e 20 74  ew [INSERT] on t
242d0 68 65 20 73 61 6d 65 0a 2a 2a 20 64 61 74 61 62  he same.** datab
242e0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77  ase connection w
242f0 68 69 6c 65 20 74 68 65 20 5b 73 71 6c 69 74 65  hile the [sqlite
24300 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
24310 77 69 64 28 29 5d 0a 2a 2a 20 66 75 6e 63 74 69  wid()].** functi
24320 6f 6e 20 69 73 20 72 75 6e 6e 69 6e 67 20 61 6e  on is running an
24330 64 20 74 68 75 73 20 63 68 61 6e 67 65 73 20 74  d thus changes t
24340 68 65 20 6c 61 73 74 20 69 6e 73 65 72 74 20 5b  he last insert [
24350 72 6f 77 69 64 5d 2c 0a 2a 2a 20 74 68 65 6e 20  rowid],.** then 
24360 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
24370 65 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6c  ed by [sqlite3_l
24380 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
24390 28 29 5d 20 69 73 0a 2a 2a 20 75 6e 70 72 65 64  ()] is.** unpred
243a0 69 63 74 61 62 6c 65 20 61 6e 64 20 6d 69 67 68  ictable and migh
243b0 74 20 6e 6f 74 20 65 71 75 61 6c 20 65 69 74 68  t not equal eith
243c0 65 72 20 74 68 65 20 6f 6c 64 20 6f 72 20 74 68  er the old or th
243d0 65 20 6e 65 77 0a 2a 2a 20 6c 61 73 74 20 69 6e  e new.** last in
243e0 73 65 72 74 20 5b 72 6f 77 69 64 5d 2e 0a 2a 2f  sert [rowid]..*/
243f0 0a 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69  .SQLITE_API sqli
24400 74 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65  te3_int64 sqlite
24410 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
24420 77 69 64 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a  wid(sqlite3*);..
24430 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
24440 53 65 74 20 74 68 65 20 4c 61 73 74 20 49 6e 73  Set the Last Ins
24450 65 72 74 20 52 6f 77 69 64 20 76 61 6c 75 65 2e  ert Rowid value.
24460 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
24470 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71  te3.**.** The sq
24480 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69  lite3_set_last_i
24490 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 2c 20 52  nsert_rowid(D, R
244a0 29 20 6d 65 74 68 6f 64 20 61 6c 6c 6f 77 73 20  ) method allows 
244b0 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
244c0 74 6f 0a 2a 2a 20 73 65 74 20 74 68 65 20 76 61  to.** set the va
244d0 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
244e0 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f  calling sqlite3_
244f0 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
24500 64 28 44 29 20 74 6f 20 52 20 0a 2a 2a 20 77 69  d(D) to R .** wi
24510 74 68 6f 75 74 20 69 6e 73 65 72 74 69 6e 67 20  thout inserting 
24520 61 20 72 6f 77 20 69 6e 74 6f 20 74 68 65 20 64  a row into the d
24530 61 74 61 62 61 73 65 2e 0a 2a 2f 0a 53 51 4c 49  atabase..*/.SQLI
24540 54 45 5f 41 50 49 20 76 6f 69 64 20 73 71 6c 69  TE_API void sqli
24550 74 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73  te3_set_last_ins
24560 65 72 74 5f 72 6f 77 69 64 28 73 71 6c 69 74 65  ert_rowid(sqlite
24570 33 2a 2c 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  3*,sqlite3_int64
24580 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
24590 45 46 3a 20 43 6f 75 6e 74 20 54 68 65 20 4e 75  EF: Count The Nu
245a0 6d 62 65 72 20 4f 66 20 52 6f 77 73 20 4d 6f 64  mber Of Rows Mod
245b0 69 66 69 65 64 0a 2a 2a 20 4d 45 54 48 4f 44 3a  ified.** METHOD:
245c0 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e   sqlite3.**.** ^
245d0 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65  This function re
245e0 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
245f0 20 6f 66 20 72 6f 77 73 20 6d 6f 64 69 66 69 65   of rows modifie
24600 64 2c 20 69 6e 73 65 72 74 65 64 20 6f 72 0a 2a  d, inserted or.*
24610 2a 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65  * deleted by the
24620 20 6d 6f 73 74 20 72 65 63 65 6e 74 6c 79 20 63   most recently c
24630 6f 6d 70 6c 65 74 65 64 20 49 4e 53 45 52 54 2c  ompleted INSERT,
24640 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54   UPDATE or DELET
24650 45 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 6f  E.** statement o
24660 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  n the database c
24670 6f 6e 6e 65 63 74 69 6f 6e 20 73 70 65 63 69 66  onnection specif
24680 69 65 64 20 62 79 20 74 68 65 20 6f 6e 6c 79 20  ied by the only 
24690 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e 45  parameter..** ^E
246a0 78 65 63 75 74 69 6e 67 20 61 6e 79 20 6f 74 68  xecuting any oth
246b0 65 72 20 74 79 70 65 20 6f 66 20 53 51 4c 20 73  er type of SQL s
246c0 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f  tatement does no
246d0 74 20 6d 6f 64 69 66 79 20 74 68 65 20 76 61 6c  t modify the val
246e0 75 65 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 62  ue.** returned b
246f0 79 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e  y this function.
24700 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c 79 20 63 68 61  .**.** ^Only cha
24710 6e 67 65 73 20 6d 61 64 65 20 64 69 72 65 63 74  nges made direct
24720 6c 79 20 62 79 20 74 68 65 20 49 4e 53 45 52 54  ly by the INSERT
24730 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45  , UPDATE or DELE
24740 54 45 20 73 74 61 74 65 6d 65 6e 74 20 61 72 65  TE statement are
24750 0a 2a 2a 20 63 6f 6e 73 69 64 65 72 65 64 20 2d  .** considered -
24760 20 61 75 78 69 6c 69 61 72 79 20 63 68 61 6e 67   auxiliary chang
24770 65 73 20 63 61 75 73 65 64 20 62 79 20 5b 43 52  es caused by [CR
24780 45 41 54 45 20 54 52 49 47 47 45 52 20 7c 20 74  EATE TRIGGER | t
24790 72 69 67 67 65 72 73 5d 2c 20 0a 2a 2a 20 5b 66  riggers], .** [f
247a0 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69 6f  oreign key actio
247b0 6e 73 5d 20 6f 72 20 5b 52 45 50 4c 41 43 45 5d  ns] or [REPLACE]
247c0 20 63 6f 6e 73 74 72 61 69 6e 74 20 72 65 73 6f   constraint reso
247d0 6c 75 74 69 6f 6e 20 61 72 65 20 6e 6f 74 20 63  lution are not c
247e0 6f 75 6e 74 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 43  ounted..** .** C
247f0 68 61 6e 67 65 73 20 74 6f 20 61 20 76 69 65 77  hanges to a view
24800 20 74 68 61 74 20 61 72 65 20 69 6e 74 65 72 63   that are interc
24810 65 70 74 65 64 20 62 79 20 0a 2a 2a 20 5b 49 4e  epted by .** [IN
24820 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72  STEAD OF trigger
24830 20 7c 20 49 4e 53 54 45 41 44 20 4f 46 20 74 72   | INSTEAD OF tr
24840 69 67 67 65 72 73 5d 20 61 72 65 20 6e 6f 74 20  iggers] are not 
24850 63 6f 75 6e 74 65 64 2e 20 5e 54 68 65 20 76 61  counted. ^The va
24860 6c 75 65 20 0a 2a 2a 20 72 65 74 75 72 6e 65 64  lue .** returned
24870 20 62 79 20 73 71 6c 69 74 65 33 5f 63 68 61 6e   by sqlite3_chan
24880 67 65 73 28 29 20 69 6d 6d 65 64 69 61 74 65 6c  ges() immediatel
24890 79 20 61 66 74 65 72 20 61 6e 20 49 4e 53 45 52  y after an INSER
248a0 54 2c 20 55 50 44 41 54 45 20 6f 72 20 0a 2a 2a  T, UPDATE or .**
248b0 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e   DELETE statemen
248c0 74 20 72 75 6e 20 6f 6e 20 61 20 76 69 65 77 20  t run on a view 
248d0 69 73 20 61 6c 77 61 79 73 20 7a 65 72 6f 2e 20  is always zero. 
248e0 4f 6e 6c 79 20 63 68 61 6e 67 65 73 20 6d 61 64  Only changes mad
248f0 65 20 74 6f 20 72 65 61 6c 20 0a 2a 2a 20 74 61  e to real .** ta
24900 62 6c 65 73 20 61 72 65 20 63 6f 75 6e 74 65 64  bles are counted
24910 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 6e 67 73 20 61  ..**.** Things a
24920 72 65 20 6d 6f 72 65 20 63 6f 6d 70 6c 69 63 61  re more complica
24930 74 65 64 20 69 66 20 74 68 65 20 73 71 6c 69 74  ted if the sqlit
24940 65 33 5f 63 68 61 6e 67 65 73 28 29 20 66 75 6e  e3_changes() fun
24950 63 74 69 6f 6e 20 69 73 0a 2a 2a 20 65 78 65 63  ction is.** exec
24960 75 74 65 64 20 77 68 69 6c 65 20 61 20 74 72 69  uted while a tri
24970 67 67 65 72 20 70 72 6f 67 72 61 6d 20 69 73 20  gger program is 
24980 72 75 6e 6e 69 6e 67 2e 20 54 68 69 73 20 6d 61  running. This ma
24990 79 20 68 61 70 70 65 6e 20 69 66 20 74 68 65 0a  y happen if the.
249a0 2a 2a 20 70 72 6f 67 72 61 6d 20 75 73 65 73 20  ** program uses 
249b0 74 68 65 20 5b 63 68 61 6e 67 65 73 28 29 20 53  the [changes() S
249c0 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2c 20 6f 72  QL function], or
249d0 20 69 66 20 73 6f 6d 65 20 6f 74 68 65 72 20 63   if some other c
249e0 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e 63 74  allback.** funct
249f0 69 6f 6e 20 69 6e 76 6f 6b 65 73 20 73 71 6c 69  ion invokes sqli
24a00 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20 64 69  te3_changes() di
24a10 72 65 63 74 6c 79 2e 20 45 73 73 65 6e 74 69 61  rectly. Essentia
24a20 6c 6c 79 3a 0a 2a 2a 20 0a 2a 2a 20 3c 75 6c 3e  lly:.** .** <ul>
24a30 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5e 28 42 65 66  .**   <li> ^(Bef
24a40 6f 72 65 20 65 6e 74 65 72 69 6e 67 20 61 20 74  ore entering a t
24a50 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 74  rigger program t
24a60 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
24a70 64 20 62 79 0a 2a 2a 20 20 20 20 20 20 20 20 73  d by.**        s
24a80 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29  qlite3_changes()
24a90 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 73 61 76   function is sav
24aa0 65 64 2e 20 41 66 74 65 72 20 74 68 65 20 74 72  ed. After the tr
24ab0 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 0a 2a  igger program .*
24ac0 2a 20 20 20 20 20 20 20 20 68 61 73 20 66 69 6e  *        has fin
24ad0 69 73 68 65 64 2c 20 74 68 65 20 6f 72 69 67 69  ished, the origi
24ae0 6e 61 6c 20 76 61 6c 75 65 20 69 73 20 72 65 73  nal value is res
24af0 74 6f 72 65 64 2e 29 5e 0a 2a 2a 20 0a 2a 2a 20  tored.)^.** .** 
24b00 20 20 3c 6c 69 3e 20 5e 28 57 69 74 68 69 6e 20    <li> ^(Within 
24b10 61 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  a trigger progra
24b20 6d 20 65 61 63 68 20 49 4e 53 45 52 54 2c 20 55  m each INSERT, U
24b30 50 44 41 54 45 20 61 6e 64 20 44 45 4c 45 54 45  PDATE and DELETE
24b40 20 0a 2a 2a 20 20 20 20 20 20 20 20 73 74 61 74   .**        stat
24b50 65 6d 65 6e 74 20 73 65 74 73 20 74 68 65 20 76  ement sets the v
24b60 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
24b70 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
24b80 28 29 20 0a 2a 2a 20 20 20 20 20 20 20 20 75 70  () .**        up
24b90 6f 6e 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 61 73  on completion as
24ba0 20 6e 6f 72 6d 61 6c 2e 20 4f 66 20 63 6f 75 72   normal. Of cour
24bb0 73 65 2c 20 74 68 69 73 20 76 61 6c 75 65 20 77  se, this value w
24bc0 69 6c 6c 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20  ill not include 
24bd0 0a 2a 2a 20 20 20 20 20 20 20 20 61 6e 79 20 63  .**        any c
24be0 68 61 6e 67 65 73 20 70 65 72 66 6f 72 6d 65 64  hanges performed
24bf0 20 62 79 20 73 75 62 2d 74 72 69 67 67 65 72 73   by sub-triggers
24c00 2c 20 61 73 20 74 68 65 20 73 71 6c 69 74 65 33  , as the sqlite3
24c10 5f 63 68 61 6e 67 65 73 28 29 20 0a 2a 2a 20 20  _changes() .**  
24c20 20 20 20 20 20 20 76 61 6c 75 65 20 77 69 6c 6c        value will
24c30 20 62 65 20 73 61 76 65 64 20 61 6e 64 20 72 65   be saved and re
24c40 73 74 6f 72 65 64 20 61 66 74 65 72 20 65 61 63  stored after eac
24c50 68 20 73 75 62 2d 74 72 69 67 67 65 72 20 68 61  h sub-trigger ha
24c60 73 20 72 75 6e 2e 29 5e 0a 2a 2a 20 3c 2f 75 6c  s run.)^.** </ul
24c70 3e 0a 2a 2a 20 0a 2a 2a 20 5e 54 68 69 73 20 6d  >.** .** ^This m
24c80 65 61 6e 73 20 74 68 61 74 20 69 66 20 74 68 65  eans that if the
24c90 20 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66   changes() SQL f
24ca0 75 6e 63 74 69 6f 6e 20 28 6f 72 20 73 69 6d 69  unction (or simi
24cb0 6c 61 72 29 20 69 73 20 75 73 65 64 0a 2a 2a 20  lar) is used.** 
24cc0 62 79 20 74 68 65 20 66 69 72 73 74 20 49 4e 53  by the first INS
24cd0 45 52 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44  ERT, UPDATE or D
24ce0 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20  ELETE statement 
24cf0 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72  within a trigger
24d00 2c 20 69 74 20 0a 2a 2a 20 72 65 74 75 72 6e 73  , it .** returns
24d10 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 73 65   the value as se
24d20 74 20 77 68 65 6e 20 74 68 65 20 63 61 6c 6c 69  t when the calli
24d30 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 62 65 67  ng statement beg
24d40 61 6e 20 65 78 65 63 75 74 69 6e 67 2e 0a 2a 2a  an executing..**
24d50 20 5e 49 66 20 69 74 20 69 73 20 75 73 65 64 20   ^If it is used 
24d60 62 79 20 74 68 65 20 73 65 63 6f 6e 64 20 6f 72  by the second or
24d70 20 73 75 62 73 65 71 75 65 6e 74 20 73 75 63 68   subsequent such
24d80 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 69   statement withi
24d90 6e 20 61 20 74 72 69 67 67 65 72 20 0a 2a 2a 20  n a trigger .** 
24da0 70 72 6f 67 72 61 6d 2c 20 74 68 65 20 76 61 6c  program, the val
24db0 75 65 20 72 65 74 75 72 6e 65 64 20 72 65 66 6c  ue returned refl
24dc0 65 63 74 73 20 74 68 65 20 6e 75 6d 62 65 72 20  ects the number 
24dd0 6f 66 20 72 6f 77 73 20 6d 6f 64 69 66 69 65 64  of rows modified
24de0 20 62 79 20 74 68 65 20 0a 2a 2a 20 70 72 65 76   by the .** prev
24df0 69 6f 75 73 20 49 4e 53 45 52 54 2c 20 55 50 44  ious INSERT, UPD
24e00 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20 73 74  ATE or DELETE st
24e10 61 74 65 6d 65 6e 74 20 77 69 74 68 69 6e 20 74  atement within t
24e20 68 65 20 73 61 6d 65 20 74 72 69 67 67 65 72 2e  he same trigger.
24e30 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61  .**.** If a sepa
24e40 72 61 74 65 20 74 68 72 65 61 64 20 6d 61 6b 65  rate thread make
24e50 73 20 63 68 61 6e 67 65 73 20 6f 6e 20 74 68 65  s changes on the
24e60 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 63   same database c
24e70 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77 68 69  onnection.** whi
24e80 6c 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e  le [sqlite3_chan
24e90 67 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e  ges()] is runnin
24ea0 67 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65  g then the value
24eb0 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 69 73 20   returned.** is 
24ec0 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e  unpredictable an
24ed0 64 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c  d not meaningful
24ee0 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f  ..**.** See also
24ef0 3a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69  :.** <ul>.** <li
24f00 3e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74  > the [sqlite3_t
24f10 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20  otal_changes()] 
24f20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 3c 6c 69  interface.** <li
24f30 3e 20 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68 61  > the [count_cha
24f40 6e 67 65 73 20 70 72 61 67 6d 61 5d 0a 2a 2a 20  nges pragma].** 
24f50 3c 6c 69 3e 20 74 68 65 20 5b 63 68 61 6e 67 65  <li> the [change
24f60 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  s() SQL function
24f70 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 64  ].** <li> the [d
24f80 61 74 61 5f 76 65 72 73 69 6f 6e 20 70 72 61 67  ata_version prag
24f90 6d 61 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a  ma].** </ul>.*/.
24fa0 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
24fb0 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 73  qlite3_changes(s
24fc0 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  qlite3*);../*.**
24fd0 20 43 41 50 49 33 52 45 46 3a 20 54 6f 74 61 6c   CAPI3REF: Total
24fe0 20 4e 75 6d 62 65 72 20 4f 66 20 52 6f 77 73 20   Number Of Rows 
24ff0 4d 6f 64 69 66 69 65 64 0a 2a 2a 20 4d 45 54 48  Modified.** METH
25000 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
25010 2a 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  * ^This function
25020 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74   returns the tot
25030 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  al number of row
25040 73 20 69 6e 73 65 72 74 65 64 2c 20 6d 6f 64 69  s inserted, modi
25050 66 69 65 64 20 6f 72 0a 2a 2a 20 64 65 6c 65 74  fied or.** delet
25060 65 64 20 62 79 20 61 6c 6c 20 5b 49 4e 53 45 52  ed by all [INSER
25070 54 5d 2c 20 5b 55 50 44 41 54 45 5d 20 6f 72 20  T], [UPDATE] or 
25080 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65  [DELETE] stateme
25090 6e 74 73 20 63 6f 6d 70 6c 65 74 65 64 0a 2a 2a  nts completed.**
250a0 20 73 69 6e 63 65 20 74 68 65 20 64 61 74 61 62   since the datab
250b0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77  ase connection w
250c0 61 73 20 6f 70 65 6e 65 64 2c 20 69 6e 63 6c 75  as opened, inclu
250d0 64 69 6e 67 20 74 68 6f 73 65 20 65 78 65 63 75  ding those execu
250e0 74 65 64 20 61 73 0a 2a 2a 20 70 61 72 74 20 6f  ted as.** part o
250f0 66 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  f trigger progra
25100 6d 73 2e 20 5e 45 78 65 63 75 74 69 6e 67 20 61  ms. ^Executing a
25110 6e 79 20 6f 74 68 65 72 20 74 79 70 65 20 6f 66  ny other type of
25120 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 0a 2a   SQL statement.*
25130 2a 20 64 6f 65 73 20 6e 6f 74 20 61 66 66 65 63  * does not affec
25140 74 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75  t the value retu
25150 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
25160 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 2e  total_changes().
25170 0a 2a 2a 20 0a 2a 2a 20 5e 43 68 61 6e 67 65 73  .** .** ^Changes
25180 20 6d 61 64 65 20 61 73 20 70 61 72 74 20 6f 66   made as part of
25190 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63   [foreign key ac
251a0 74 69 6f 6e 73 5d 20 61 72 65 20 69 6e 63 6c 75  tions] are inclu
251b0 64 65 64 20 69 6e 20 74 68 65 0a 2a 2a 20 63 6f  ded in the.** co
251c0 75 6e 74 2c 20 62 75 74 20 74 68 6f 73 65 20 6d  unt, but those m
251d0 61 64 65 20 61 73 20 70 61 72 74 20 6f 66 20 52  ade as part of R
251e0 45 50 4c 41 43 45 20 63 6f 6e 73 74 72 61 69 6e  EPLACE constrain
251f0 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 72 65  t resolution are
25200 0a 2a 2a 20 6e 6f 74 2e 20 5e 43 68 61 6e 67 65  .** not. ^Change
25210 73 20 74 6f 20 61 20 76 69 65 77 20 74 68 61 74  s to a view that
25220 20 61 72 65 20 69 6e 74 65 72 63 65 70 74 65 64   are intercepted
25230 20 62 79 20 49 4e 53 54 45 41 44 20 4f 46 20 74   by INSTEAD OF t
25240 72 69 67 67 65 72 73 20 0a 2a 2a 20 61 72 65 20  riggers .** are 
25250 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a 0a  not counted..**.
25260 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  ** The [sqlite3_
25270 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 44 29  total_changes(D)
25280 5d 20 69 6e 74 65 72 66 61 63 65 20 6f 6e 6c 79  ] interface only
25290 20 72 65 70 6f 72 74 73 20 74 68 65 20 6e 75 6d   reports the num
252a0 62 65 72 0a 2a 2a 20 6f 66 20 72 6f 77 73 20 74  ber.** of rows t
252b0 68 61 74 20 63 68 61 6e 67 65 64 20 64 75 65 20  hat changed due 
252c0 74 6f 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  to SQL statement
252d0 20 72 75 6e 20 61 67 61 69 6e 73 74 20 64 61 74   run against dat
252e0 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74  abase.** connect
252f0 69 6f 6e 20 44 2e 20 20 41 6e 79 20 63 68 61 6e  ion D.  Any chan
25300 67 65 73 20 62 79 20 6f 74 68 65 72 20 64 61 74  ges by other dat
25310 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
25320 73 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 0a 2a  s are ignored..*
25330 2a 20 54 6f 20 64 65 74 65 63 74 20 63 68 61 6e  * To detect chan
25340 67 65 73 20 61 67 61 69 6e 73 74 20 61 20 64 61  ges against a da
25350 74 61 62 61 73 65 20 66 69 6c 65 20 66 72 6f 6d  tabase file from
25360 20 6f 74 68 65 72 20 64 61 74 61 62 61 73 65 0a   other database.
25370 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 75  ** connections u
25380 73 65 20 74 68 65 20 5b 50 52 41 47 4d 41 20 64  se the [PRAGMA d
25390 61 74 61 5f 76 65 72 73 69 6f 6e 5d 20 63 6f 6d  ata_version] com
253a0 6d 61 6e 64 20 6f 72 20 74 68 65 0a 2a 2a 20 5b  mand or the.** [
253b0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44 41 54  SQLITE_FCNTL_DAT
253c0 41 5f 56 45 52 53 49 4f 4e 5d 20 5b 66 69 6c 65  A_VERSION] [file
253d0 20 63 6f 6e 74 72 6f 6c 5d 2e 0a 2a 2a 20 0a 2a   control]..** .*
253e0 2a 20 49 66 20 61 20 73 65 70 61 72 61 74 65 20  * If a separate 
253f0 74 68 72 65 61 64 20 6d 61 6b 65 73 20 63 68 61  thread makes cha
25400 6e 67 65 73 20 6f 6e 20 74 68 65 20 73 61 6d 65  nges on the same
25410 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
25420 74 69 6f 6e 0a 2a 2a 20 77 68 69 6c 65 20 5b 73  tion.** while [s
25430 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61  qlite3_total_cha
25440 6e 67 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69  nges()] is runni
25450 6e 67 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75  ng then the valu
25460 65 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 69 73  e.** returned is
25470 20 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61   unpredictable a
25480 6e 64 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75  nd not meaningfu
25490 6c 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73  l..**.** See als
254a0 6f 3a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c  o:.** <ul>.** <l
254b0 69 3e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  i> the [sqlite3_
254c0 63 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72  changes()] inter
254d0 66 61 63 65 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65  face.** <li> the
254e0 20 5b 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20   [count_changes 
254f0 70 72 61 67 6d 61 5d 0a 2a 2a 20 3c 6c 69 3e 20  pragma].** <li> 
25500 74 68 65 20 5b 63 68 61 6e 67 65 73 28 29 20 53  the [changes() S
25510 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 0a 2a 2a 20  QL function].** 
25520 3c 6c 69 3e 20 74 68 65 20 5b 64 61 74 61 5f 76  <li> the [data_v
25530 65 72 73 69 6f 6e 20 70 72 61 67 6d 61 5d 0a 2a  ersion pragma].*
25540 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 53 51 4c 49  * <li> the [SQLI
25550 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56 45  TE_FCNTL_DATA_VE
25560 52 53 49 4f 4e 5d 20 5b 66 69 6c 65 20 63 6f 6e  RSION] [file con
25570 74 72 6f 6c 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a  trol].** </ul>.*
25580 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
25590 20 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63   sqlite3_total_c
255a0 68 61 6e 67 65 73 28 73 71 6c 69 74 65 33 2a 29  hanges(sqlite3*)
255b0 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
255c0 46 3a 20 49 6e 74 65 72 72 75 70 74 20 41 20 4c  F: Interrupt A L
255d0 6f 6e 67 2d 52 75 6e 6e 69 6e 67 20 51 75 65 72  ong-Running Quer
255e0 79 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  y.** METHOD: sql
255f0 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73  ite3.**.** ^This
25600 20 66 75 6e 63 74 69 6f 6e 20 63 61 75 73 65 73   function causes
25610 20 61 6e 79 20 70 65 6e 64 69 6e 67 20 64 61 74   any pending dat
25620 61 62 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 20  abase operation 
25630 74 6f 20 61 62 6f 72 74 20 61 6e 64 0a 2a 2a 20  to abort and.** 
25640 72 65 74 75 72 6e 20 61 74 20 69 74 73 20 65 61  return at its ea
25650 72 6c 69 65 73 74 20 6f 70 70 6f 72 74 75 6e 69  rliest opportuni
25660 74 79 2e 20 54 68 69 73 20 72 6f 75 74 69 6e 65  ty. This routine
25670 20 69 73 20 74 79 70 69 63 61 6c 6c 79 0a 2a 2a   is typically.**
25680 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73 70 6f   called in respo
25690 6e 73 65 20 74 6f 20 61 20 75 73 65 72 20 61 63  nse to a user ac
256a0 74 69 6f 6e 20 73 75 63 68 20 61 73 20 70 72 65  tion such as pre
256b0 73 73 69 6e 67 20 22 43 61 6e 63 65 6c 22 0a 2a  ssing "Cancel".*
256c0 2a 20 6f 72 20 43 74 72 6c 2d 43 20 77 68 65 72  * or Ctrl-C wher
256d0 65 20 74 68 65 20 75 73 65 72 20 77 61 6e 74 73  e the user wants
256e0 20 61 20 6c 6f 6e 67 20 71 75 65 72 79 20 6f 70   a long query op
256f0 65 72 61 74 69 6f 6e 20 74 6f 20 68 61 6c 74 0a  eration to halt.
25700 2a 2a 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a  ** immediately..
25710 2a 2a 0a 2a 2a 20 5e 49 74 20 69 73 20 73 61 66  **.** ^It is saf
25720 65 20 74 6f 20 63 61 6c 6c 20 74 68 69 73 20 72  e to call this r
25730 6f 75 74 69 6e 65 20 66 72 6f 6d 20 61 20 74 68  outine from a th
25740 72 65 61 64 20 64 69 66 66 65 72 65 6e 74 20 66  read different f
25750 72 6f 6d 20 74 68 65 0a 2a 2a 20 74 68 72 65 61  rom the.** threa
25760 64 20 74 68 61 74 20 69 73 20 63 75 72 72 65 6e  d that is curren
25770 74 6c 79 20 72 75 6e 6e 69 6e 67 20 74 68 65 20  tly running the 
25780 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69  database operati
25790 6f 6e 2e 20 20 42 75 74 20 69 74 0a 2a 2a 20 69  on.  But it.** i
257a0 73 20 6e 6f 74 20 73 61 66 65 20 74 6f 20 63 61  s not safe to ca
257b0 6c 6c 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  ll this routine 
257c0 77 69 74 68 20 61 20 5b 64 61 74 61 62 61 73 65  with a [database
257d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 74 68 61   connection] tha
257e0 74 0a 2a 2a 20 69 73 20 63 6c 6f 73 65 64 20 6f  t.** is closed o
257f0 72 20 6d 69 67 68 74 20 63 6c 6f 73 65 20 62 65  r might close be
25800 66 6f 72 65 20 73 71 6c 69 74 65 33 5f 69 6e 74  fore sqlite3_int
25810 65 72 72 75 70 74 28 29 20 72 65 74 75 72 6e 73  errupt() returns
25820 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 20 53  ..**.** ^If an S
25830 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20  QL operation is 
25840 76 65 72 79 20 6e 65 61 72 6c 79 20 66 69 6e 69  very nearly fini
25850 73 68 65 64 20 61 74 20 74 68 65 20 74 69 6d 65  shed at the time
25860 20 77 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33   when.** sqlite3
25870 5f 69 6e 74 65 72 72 75 70 74 28 29 20 69 73 20  _interrupt() is 
25880 63 61 6c 6c 65 64 2c 20 74 68 65 6e 20 69 74 20  called, then it 
25890 6d 69 67 68 74 20 6e 6f 74 20 68 61 76 65 20 61  might not have a
258a0 6e 20 6f 70 70 6f 72 74 75 6e 69 74 79 0a 2a 2a  n opportunity.**
258b0 20 74 6f 20 62 65 20 69 6e 74 65 72 72 75 70 74   to be interrupt
258c0 65 64 20 61 6e 64 20 6d 69 67 68 74 20 63 6f 6e  ed and might con
258d0 74 69 6e 75 65 20 74 6f 20 63 6f 6d 70 6c 65 74  tinue to complet
258e0 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 41 6e 20 53  ion..**.** ^An S
258f0 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20 74 68 61  QL operation tha
25900 74 20 69 73 20 69 6e 74 65 72 72 75 70 74 65 64  t is interrupted
25910 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53 51   will return [SQ
25920 4c 49 54 45 5f 49 4e 54 45 52 52 55 50 54 5d 2e  LITE_INTERRUPT].
25930 0a 2a 2a 20 5e 49 66 20 74 68 65 20 69 6e 74 65  .** ^If the inte
25940 72 72 75 70 74 65 64 20 53 51 4c 20 6f 70 65 72  rrupted SQL oper
25950 61 74 69 6f 6e 20 69 73 20 61 6e 20 49 4e 53 45  ation is an INSE
25960 52 54 2c 20 55 50 44 41 54 45 2c 20 6f 72 20 44  RT, UPDATE, or D
25970 45 4c 45 54 45 0a 2a 2a 20 74 68 61 74 20 69 73  ELETE.** that is
25980 20 69 6e 73 69 64 65 20 61 6e 20 65 78 70 6c 69   inside an expli
25990 63 69 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c  cit transaction,
259a0 20 74 68 65 6e 20 74 68 65 20 65 6e 74 69 72 65   then the entire
259b0 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 2a 2a 20   transaction.** 
259c0 77 69 6c 6c 20 62 65 20 72 6f 6c 6c 65 64 20 62  will be rolled b
259d0 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ack automaticall
259e0 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  y..**.** ^The sq
259f0 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
25a00 44 29 20 63 61 6c 6c 20 69 73 20 69 6e 20 65 66  D) call is in ef
25a10 66 65 63 74 20 75 6e 74 69 6c 20 61 6c 6c 20 63  fect until all c
25a20 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67  urrently running
25a30 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  .** SQL statemen
25a40 74 73 20 6f 6e 20 5b 64 61 74 61 62 61 73 65 20  ts on [database 
25a50 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 20 63 6f  connection] D co
25a60 6d 70 6c 65 74 65 2e 20 20 5e 41 6e 79 20 6e 65  mplete.  ^Any ne
25a70 77 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  w SQL statements
25a80 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 73 74 61  .** that are sta
25a90 72 74 65 64 20 61 66 74 65 72 20 74 68 65 20 73  rted after the s
25aa0 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
25ab0 28 29 20 63 61 6c 6c 20 61 6e 64 20 62 65 66 6f  () call and befo
25ac0 72 65 20 74 68 65 20 0a 2a 2a 20 72 75 6e 6e 69  re the .** runni
25ad0 6e 67 20 73 74 61 74 65 6d 65 6e 74 73 20 72 65  ng statements re
25ae0 61 63 68 65 73 20 7a 65 72 6f 20 61 72 65 20 69  aches zero are i
25af0 6e 74 65 72 72 75 70 74 65 64 20 61 73 20 69 66  nterrupted as if
25b00 20 74 68 65 79 20 68 61 64 20 62 65 65 6e 0a 2a   they had been.*
25b10 2a 20 72 75 6e 6e 69 6e 67 20 70 72 69 6f 72 20  * running prior 
25b20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69  to the sqlite3_i
25b30 6e 74 65 72 72 75 70 74 28 29 20 63 61 6c 6c 2e  nterrupt() call.
25b40 20 20 5e 4e 65 77 20 53 51 4c 20 73 74 61 74 65    ^New SQL state
25b50 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74 20 61 72  ments.** that ar
25b60 65 20 73 74 61 72 74 65 64 20 61 66 74 65 72 20  e started after 
25b70 74 68 65 20 72 75 6e 6e 69 6e 67 20 73 74 61 74  the running stat
25b80 65 6d 65 6e 74 20 63 6f 75 6e 74 20 72 65 61 63  ement count reac
25b90 68 65 73 20 7a 65 72 6f 20 61 72 65 0a 2a 2a 20  hes zero are.** 
25ba0 6e 6f 74 20 65 66 66 65 63 74 65 64 20 62 79 20  not effected by 
25bb0 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  the sqlite3_inte
25bc0 72 72 75 70 74 28 29 2e 0a 2a 2a 20 5e 41 20 63  rrupt()..** ^A c
25bd0 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 69  all to sqlite3_i
25be0 6e 74 65 72 72 75 70 74 28 44 29 20 74 68 61 74  nterrupt(D) that
25bf0 20 6f 63 63 75 72 73 20 77 68 65 6e 20 74 68 65   occurs when the
25c00 72 65 20 61 72 65 20 6e 6f 20 72 75 6e 6e 69 6e  re are no runnin
25c10 67 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65  g.** SQL stateme
25c20 6e 74 73 20 69 73 20 61 20 6e 6f 2d 6f 70 20 61  nts is a no-op a
25c30 6e 64 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  nd has no effect
25c40 20 6f 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   on SQL statemen
25c50 74 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 73  ts.** that are s
25c60 74 61 72 74 65 64 20 61 66 74 65 72 20 74 68 65  tarted after the
25c70 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
25c80 70 74 28 29 20 63 61 6c 6c 20 72 65 74 75 72 6e  pt() call return
25c90 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  s..*/.SQLITE_API
25ca0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 69 6e   void sqlite3_in
25cb0 74 65 72 72 75 70 74 28 73 71 6c 69 74 65 33 2a  terrupt(sqlite3*
25cc0 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
25cd0 45 46 3a 20 44 65 74 65 72 6d 69 6e 65 20 49 66  EF: Determine If
25ce0 20 41 6e 20 53 51 4c 20 53 74 61 74 65 6d 65 6e   An SQL Statemen
25cf0 74 20 49 73 20 43 6f 6d 70 6c 65 74 65 0a 2a 2a  t Is Complete.**
25d00 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e  .** These routin
25d10 65 73 20 61 72 65 20 75 73 65 66 75 6c 20 64 75  es are useful du
25d20 72 69 6e 67 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e  ring command-lin
25d30 65 20 69 6e 70 75 74 20 74 6f 20 64 65 74 65 72  e input to deter
25d40 6d 69 6e 65 20 69 66 20 74 68 65 0a 2a 2a 20 63  mine if the.** c
25d50 75 72 72 65 6e 74 6c 79 20 65 6e 74 65 72 65 64  urrently entered
25d60 20 74 65 78 74 20 73 65 65 6d 73 20 74 6f 20 66   text seems to f
25d70 6f 72 6d 20 61 20 63 6f 6d 70 6c 65 74 65 20 53  orm a complete S
25d80 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 6f 72 0a  QL statement or.
25d90 2a 2a 20 69 66 20 61 64 64 69 74 69 6f 6e 61 6c  ** if additional
25da0 20 69 6e 70 75 74 20 69 73 20 6e 65 65 64 65 64   input is needed
25db0 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e 67 20   before sending 
25dc0 74 68 65 20 74 65 78 74 20 69 6e 74 6f 0a 2a 2a  the text into.**
25dd0 20 53 51 4c 69 74 65 20 66 6f 72 20 70 61 72 73   SQLite for pars
25de0 69 6e 67 2e 20 20 5e 54 68 65 73 65 20 72 6f 75  ing.  ^These rou
25df0 74 69 6e 65 73 20 72 65 74 75 72 6e 20 31 20 69  tines return 1 i
25e00 66 20 74 68 65 20 69 6e 70 75 74 20 73 74 72 69  f the input stri
25e10 6e 67 0a 2a 2a 20 61 70 70 65 61 72 73 20 74 6f  ng.** appears to
25e20 20 62 65 20 61 20 63 6f 6d 70 6c 65 74 65 20 53   be a complete S
25e30 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e  QL statement.  ^
25e40 41 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 6a  A statement is j
25e50 75 64 67 65 64 20 74 6f 20 62 65 0a 2a 2a 20 63  udged to be.** c
25e60 6f 6d 70 6c 65 74 65 20 69 66 20 69 74 20 65 6e  omplete if it en
25e70 64 73 20 77 69 74 68 20 61 20 73 65 6d 69 63 6f  ds with a semico
25e80 6c 6f 6e 20 74 6f 6b 65 6e 20 61 6e 64 20 69 73  lon token and is
25e90 20 6e 6f 74 20 61 20 70 72 65 66 69 78 20 6f 66   not a prefix of
25ea0 20 61 0a 2a 2a 20 77 65 6c 6c 2d 66 6f 72 6d 65   a.** well-forme
25eb0 64 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52  d CREATE TRIGGER
25ec0 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e 53 65   statement.  ^Se
25ed0 6d 69 63 6f 6c 6f 6e 73 20 74 68 61 74 20 61 72  micolons that ar
25ee0 65 20 65 6d 62 65 64 64 65 64 20 77 69 74 68 69  e embedded withi
25ef0 6e 0a 2a 2a 20 73 74 72 69 6e 67 20 6c 69 74 65  n.** string lite
25f00 72 61 6c 73 20 6f 72 20 71 75 6f 74 65 64 20 69  rals or quoted i
25f10 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 73 20  dentifier names 
25f20 6f 72 20 63 6f 6d 6d 65 6e 74 73 20 61 72 65 20  or comments are 
25f30 6e 6f 74 0a 2a 2a 20 69 6e 64 65 70 65 6e 64 65  not.** independe
25f40 6e 74 20 74 6f 6b 65 6e 73 20 28 74 68 65 79 20  nt tokens (they 
25f50 61 72 65 20 70 61 72 74 20 6f 66 20 74 68 65 20  are part of the 
25f60 74 6f 6b 65 6e 20 69 6e 20 77 68 69 63 68 20 74  token in which t
25f70 68 65 79 20 61 72 65 0a 2a 2a 20 65 6d 62 65 64  hey are.** embed
25f80 64 65 64 29 20 61 6e 64 20 74 68 75 73 20 64 6f  ded) and thus do
25f90 20 6e 6f 74 20 63 6f 75 6e 74 20 61 73 20 61 20   not count as a 
25fa0 73 74 61 74 65 6d 65 6e 74 20 74 65 72 6d 69 6e  statement termin
25fb0 61 74 6f 72 2e 20 20 5e 57 68 69 74 65 73 70 61  ator.  ^Whitespa
25fc0 63 65 0a 2a 2a 20 61 6e 64 20 63 6f 6d 6d 65 6e  ce.** and commen
25fd0 74 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77 20 74  ts that follow t
25fe0 68 65 20 66 69 6e 61 6c 20 73 65 6d 69 63 6f 6c  he final semicol
25ff0 6f 6e 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 0a  on are ignored..
26000 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20 72 6f 75  **.** ^These rou
26010 74 69 6e 65 73 20 72 65 74 75 72 6e 20 30 20 69  tines return 0 i
26020 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  f the statement 
26030 69 73 20 69 6e 63 6f 6d 70 6c 65 74 65 2e 20 20  is incomplete.  
26040 5e 49 66 20 61 0a 2a 2a 20 6d 65 6d 6f 72 79 20  ^If a.** memory 
26050 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61 69 6c 73  allocation fails
26060 2c 20 74 68 65 6e 20 53 51 4c 49 54 45 5f 4e 4f  , then SQLITE_NO
26070 4d 45 4d 20 69 73 20 72 65 74 75 72 6e 65 64 2e  MEM is returned.
26080 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20 72 6f  .**.** ^These ro
26090 75 74 69 6e 65 73 20 64 6f 20 6e 6f 74 20 70 61  utines do not pa
260a0 72 73 65 20 74 68 65 20 53 51 4c 20 73 74 61 74  rse the SQL stat
260b0 65 6d 65 6e 74 73 20 74 68 75 73 0a 2a 2a 20 77  ements thus.** w
260c0 69 6c 6c 20 6e 6f 74 20 64 65 74 65 63 74 20 73  ill not detect s
260d0 79 6e 74 61 63 74 69 63 61 6c 6c 79 20 69 6e 63  yntactically inc
260e0 6f 72 72 65 63 74 20 53 51 4c 2e 0a 2a 2a 0a 2a  orrect SQL..**.*
260f0 2a 20 5e 28 49 66 20 53 51 4c 69 74 65 20 68 61  * ^(If SQLite ha
26100 73 20 6e 6f 74 20 62 65 65 6e 20 69 6e 69 74 69  s not been initi
26110 61 6c 69 7a 65 64 20 75 73 69 6e 67 20 5b 73 71  alized using [sq
26120 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
26130 28 29 5d 20 70 72 69 6f 72 20 0a 2a 2a 20 74 6f  ()] prior .** to
26140 20 69 6e 76 6f 6b 69 6e 67 20 73 71 6c 69 74 65   invoking sqlite
26150 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 20 74  3_complete16() t
26160 68 65 6e 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  hen sqlite3_init
26170 69 61 6c 69 7a 65 28 29 20 69 73 20 69 6e 76 6f  ialize() is invo
26180 6b 65 64 0a 2a 2a 20 61 75 74 6f 6d 61 74 69 63  ked.** automatic
26190 61 6c 6c 79 20 62 79 20 73 71 6c 69 74 65 33 5f  ally by sqlite3_
261a0 63 6f 6d 70 6c 65 74 65 31 36 28 29 2e 20 20 49  complete16().  I
261b0 66 20 74 68 61 74 20 69 6e 69 74 69 61 6c 69 7a  f that initializ
261c0 61 74 69 6f 6e 20 66 61 69 6c 73 2c 0a 2a 2a 20  ation fails,.** 
261d0 74 68 65 6e 20 74 68 65 20 72 65 74 75 72 6e 20  then the return 
261e0 76 61 6c 75 65 20 66 72 6f 6d 20 73 71 6c 69 74  value from sqlit
261f0 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 20  e3_complete16() 
26200 77 69 6c 6c 20 62 65 20 6e 6f 6e 2d 7a 65 72 6f  will be non-zero
26210 0a 2a 2a 20 72 65 67 61 72 64 6c 65 73 73 20 6f  .** regardless o
26220 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  f whether or not
26230 20 74 68 65 20 69 6e 70 75 74 20 53 51 4c 20 69   the input SQL i
26240 73 20 63 6f 6d 70 6c 65 74 65 2e 29 5e 0a 2a 2a  s complete.)^.**
26250 0a 2a 2a 20 54 68 65 20 69 6e 70 75 74 20 74 6f  .** The input to
26260 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65   [sqlite3_comple
26270 74 65 28 29 5d 20 6d 75 73 74 20 62 65 20 61 20  te()] must be a 
26280 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 0a  zero-terminated.
26290 2a 2a 20 55 54 46 2d 38 20 73 74 72 69 6e 67 2e  ** UTF-8 string.
262a0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 70 75 74  .**.** The input
262b0 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d   to [sqlite3_com
262c0 70 6c 65 74 65 31 36 28 29 5d 20 6d 75 73 74 20  plete16()] must 
262d0 62 65 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  be a zero-termin
262e0 61 74 65 64 0a 2a 2a 20 55 54 46 2d 31 36 20 73  ated.** UTF-16 s
262f0 74 72 69 6e 67 20 69 6e 20 6e 61 74 69 76 65 20  tring in native 
26300 62 79 74 65 20 6f 72 64 65 72 2e 0a 2a 2f 0a 53  byte order..*/.S
26310 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
26320 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 63  lite3_complete(c
26330 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 29 3b  onst char *sql);
26340 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
26350 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
26360 31 36 28 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73  16(const void *s
26370 71 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  ql);../*.** CAPI
26380 33 52 45 46 3a 20 52 65 67 69 73 74 65 72 20 41  3REF: Register A
26390 20 43 61 6c 6c 62 61 63 6b 20 54 6f 20 48 61 6e   Callback To Han
263a0 64 6c 65 20 53 51 4c 49 54 45 5f 42 55 53 59 20  dle SQLITE_BUSY 
263b0 45 72 72 6f 72 73 0a 2a 2a 20 4b 45 59 57 4f 52  Errors.** KEYWOR
263c0 44 53 3a 20 7b 62 75 73 79 2d 68 61 6e 64 6c 65  DS: {busy-handle
263d0 72 20 63 61 6c 6c 62 61 63 6b 7d 20 7b 62 75 73  r callback} {bus
263e0 79 20 68 61 6e 64 6c 65 72 7d 0a 2a 2a 20 4d 45  y handler}.** ME
263f0 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  THOD: sqlite3.**
26400 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
26410 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 44 2c  _busy_handler(D,
26420 58 2c 50 29 20 72 6f 75 74 69 6e 65 20 73 65 74  X,P) routine set
26430 73 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  s a callback fun
26440 63 74 69 6f 6e 20 58 0a 2a 2a 20 74 68 61 74 20  ction X.** that 
26450 6d 69 67 68 74 20 62 65 20 69 6e 76 6f 6b 65 64  might be invoked
26460 20 77 69 74 68 20 61 72 67 75 6d 65 6e 74 20 50   with argument P
26470 20 77 68 65 6e 65 76 65 72 0a 2a 2a 20 61 6e 20   whenever.** an 
26480 61 74 74 65 6d 70 74 20 69 73 20 6d 61 64 65 20  attempt is made 
26490 74 6f 20 61 63 63 65 73 73 20 61 20 64 61 74 61  to access a data
264a0 62 61 73 65 20 74 61 62 6c 65 20 61 73 73 6f 63  base table assoc
264b0 69 61 74 65 64 20 77 69 74 68 0a 2a 2a 20 5b 64  iated with.** [d
264c0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
264d0 6f 6e 5d 20 44 20 77 68 65 6e 20 61 6e 6f 74 68  on] D when anoth
264e0 65 72 20 74 68 72 65 61 64 0a 2a 2a 20 6f 72 20  er thread.** or 
264f0 70 72 6f 63 65 73 73 20 68 61 73 20 74 68 65 20  process has the 
26500 74 61 62 6c 65 20 6c 6f 63 6b 65 64 2e 0a 2a 2a  table locked..**
26510 20 54 68 65 20 73 71 6c 69 74 65 33 5f 62 75 73   The sqlite3_bus
26520 79 5f 68 61 6e 64 6c 65 72 28 29 20 69 6e 74 65  y_handler() inte
26530 72 66 61 63 65 20 69 73 20 75 73 65 64 20 74 6f  rface is used to
26540 20 69 6d 70 6c 65 6d 65 6e 74 0a 2a 2a 20 5b 73   implement.** [s
26550 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65  qlite3_busy_time
26560 6f 75 74 28 29 5d 20 61 6e 64 20 5b 50 52 41 47  out()] and [PRAG
26570 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f 75 74 5d  MA busy_timeout]
26580 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20  ..**.** ^If the 
26590 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 69 73  busy callback is
265a0 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 5b 53 51 4c   NULL, then [SQL
265b0 49 54 45 5f 42 55 53 59 5d 0a 2a 2a 20 69 73 20  ITE_BUSY].** is 
265c0 72 65 74 75 72 6e 65 64 20 69 6d 6d 65 64 69 61  returned immedia
265d0 74 65 6c 79 20 75 70 6f 6e 20 65 6e 63 6f 75 6e  tely upon encoun
265e0 74 65 72 69 6e 67 20 74 68 65 20 6c 6f 63 6b 2e  tering the lock.
265f0 20 20 5e 49 66 20 74 68 65 20 62 75 73 79 20 63    ^If the busy c
26600 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 6e 6f  allback.** is no
26610 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74 68 65  t NULL, then the
26620 20 63 61 6c 6c 62 61 63 6b 20 6d 69 67 68 74 20   callback might 
26630 62 65 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20  be invoked with 
26640 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2e 0a 2a  two arguments..*
26650 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20  *.** ^The first 
26660 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20  argument to the 
26670 62 75 73 79 20 68 61 6e 64 6c 65 72 20 69 73 20  busy handler is 
26680 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 76 6f  a copy of the vo
26690 69 64 2a 20 70 6f 69 6e 74 65 72 20 77 68 69 63  id* pointer whic
266a0 68 0a 2a 2a 20 69 73 20 74 68 65 20 74 68 69 72  h.** is the thir
266b0 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71  d argument to sq
266c0 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c  lite3_busy_handl
266d0 65 72 28 29 2e 20 20 5e 54 68 65 20 73 65 63 6f  er().  ^The seco
266e0 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a  nd argument to.*
266f0 2a 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c  * the busy handl
26700 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 74  er callback is t
26710 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d  he number of tim
26720 65 73 20 74 68 61 74 20 74 68 65 20 62 75 73 79  es that the busy
26730 20 68 61 6e 64 6c 65 72 20 68 61 73 0a 2a 2a 20   handler has.** 
26740 62 65 65 6e 20 69 6e 76 6f 6b 65 64 20 70 72 65  been invoked pre
26750 76 69 6f 75 73 6c 79 20 66 6f 72 20 74 68 65 20  viously for the 
26760 73 61 6d 65 20 6c 6f 63 6b 69 6e 67 20 65 76 65  same locking eve
26770 6e 74 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20  nt.  ^If the.** 
26780 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 72 65  busy callback re
26790 74 75 72 6e 73 20 30 2c 20 74 68 65 6e 20 6e 6f  turns 0, then no
267a0 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 74 74 65   additional atte
267b0 6d 70 74 73 20 61 72 65 20 6d 61 64 65 20 74 6f  mpts are made to
267c0 0a 2a 2a 20 61 63 63 65 73 73 20 74 68 65 20 64  .** access the d
267d0 61 74 61 62 61 73 65 20 61 6e 64 20 5b 53 51 4c  atabase and [SQL
267e0 49 54 45 5f 42 55 53 59 5d 20 69 73 20 72 65 74  ITE_BUSY] is ret
267f0 75 72 6e 65 64 0a 2a 2a 20 74 6f 20 74 68 65 20  urned.** to the 
26800 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 2a 2a 20  application..** 
26810 5e 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  ^If the callback
26820 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72   returns non-zer
26830 6f 2c 20 74 68 65 6e 20 61 6e 6f 74 68 65 72 20  o, then another 
26840 61 74 74 65 6d 70 74 0a 2a 2a 20 69 73 20 6d 61  attempt.** is ma
26850 64 65 20 74 6f 20 61 63 63 65 73 73 20 74 68 65  de to access the
26860 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 74 68   database and th
26870 65 20 63 79 63 6c 65 20 72 65 70 65 61 74 73 2e  e cycle repeats.
26880 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 65 73 65  .**.** The prese
26890 6e 63 65 20 6f 66 20 61 20 62 75 73 79 20 68 61  nce of a busy ha
268a0 6e 64 6c 65 72 20 64 6f 65 73 20 6e 6f 74 20 67  ndler does not g
268b0 75 61 72 61 6e 74 65 65 20 74 68 61 74 20 69 74  uarantee that it
268c0 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b 65 64   will be invoked
268d0 0a 2a 2a 20 77 68 65 6e 20 74 68 65 72 65 20 69  .** when there i
268e0 73 20 6c 6f 63 6b 20 63 6f 6e 74 65 6e 74 69 6f  s lock contentio
268f0 6e 2e 20 5e 49 66 20 53 51 4c 69 74 65 20 64 65  n. ^If SQLite de
26900 74 65 72 6d 69 6e 65 73 20 74 68 61 74 20 69 6e  termines that in
26910 76 6f 6b 69 6e 67 20 74 68 65 20 62 75 73 79 0a  voking the busy.
26920 2a 2a 20 68 61 6e 64 6c 65 72 20 63 6f 75 6c 64  ** handler could
26930 20 72 65 73 75 6c 74 20 69 6e 20 61 20 64 65 61   result in a dea
26940 64 6c 6f 63 6b 2c 20 69 74 20 77 69 6c 6c 20 67  dlock, it will g
26950 6f 20 61 68 65 61 64 20 61 6e 64 20 72 65 74 75  o ahead and retu
26960 72 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  rn [SQLITE_BUSY]
26970 0a 2a 2a 20 74 6f 20 74 68 65 20 61 70 70 6c 69  .** to the appli
26980 63 61 74 69 6f 6e 20 69 6e 73 74 65 61 64 20 6f  cation instead o
26990 66 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 0a  f invoking the .
269a0 2a 2a 20 62 75 73 79 20 68 61 6e 64 6c 65 72 2e  ** busy handler.
269b0 0a 2a 2a 20 43 6f 6e 73 69 64 65 72 20 61 20 73  .** Consider a s
269c0 63 65 6e 61 72 69 6f 20 77 68 65 72 65 20 6f 6e  cenario where on
269d0 65 20 70 72 6f 63 65 73 73 20 69 73 20 68 6f 6c  e process is hol
269e0 64 69 6e 67 20 61 20 72 65 61 64 20 6c 6f 63 6b  ding a read lock
269f0 20 74 68 61 74 0a 2a 2a 20 69 74 20 69 73 20 74   that.** it is t
26a00 72 79 69 6e 67 20 74 6f 20 70 72 6f 6d 6f 74 65  rying to promote
26a10 20 74 6f 20 61 20 72 65 73 65 72 76 65 64 20 6c   to a reserved l
26a20 6f 63 6b 20 61 6e 64 0a 2a 2a 20 61 20 73 65 63  ock and.** a sec
26a30 6f 6e 64 20 70 72 6f 63 65 73 73 20 69 73 20 68  ond process is h
26a40 6f 6c 64 69 6e 67 20 61 20 72 65 73 65 72 76 65  olding a reserve
26a50 64 20 6c 6f 63 6b 20 74 68 61 74 20 69 74 20 69  d lock that it i
26a60 73 20 74 72 79 69 6e 67 0a 2a 2a 20 74 6f 20 70  s trying.** to p
26a70 72 6f 6d 6f 74 65 20 74 6f 20 61 6e 20 65 78 63  romote to an exc
26a80 6c 75 73 69 76 65 20 6c 6f 63 6b 2e 20 20 54 68  lusive lock.  Th
26a90 65 20 66 69 72 73 74 20 70 72 6f 63 65 73 73 20  e first process 
26aa0 63 61 6e 6e 6f 74 20 70 72 6f 63 65 65 64 0a 2a  cannot proceed.*
26ab0 2a 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20  * because it is 
26ac0 62 6c 6f 63 6b 65 64 20 62 79 20 74 68 65 20 73  blocked by the s
26ad0 65 63 6f 6e 64 20 61 6e 64 20 74 68 65 20 73 65  econd and the se
26ae0 63 6f 6e 64 20 70 72 6f 63 65 73 73 20 63 61 6e  cond process can
26af0 6e 6f 74 0a 2a 2a 20 70 72 6f 63 65 65 64 20 62  not.** proceed b
26b00 65 63 61 75 73 65 20 69 74 20 69 73 20 62 6c 6f  ecause it is blo
26b10 63 6b 65 64 20 62 79 20 74 68 65 20 66 69 72 73  cked by the firs
26b20 74 2e 20 20 49 66 20 62 6f 74 68 20 70 72 6f 63  t.  If both proc
26b30 65 73 73 65 73 0a 2a 2a 20 69 6e 76 6f 6b 65 20  esses.** invoke 
26b40 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72  the busy handler
26b50 73 2c 20 6e 65 69 74 68 65 72 20 77 69 6c 6c 20  s, neither will 
26b60 6d 61 6b 65 20 61 6e 79 20 70 72 6f 67 72 65 73  make any progres
26b70 73 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 0a 2a  s.  Therefore,.*
26b80 2a 20 53 51 4c 69 74 65 20 72 65 74 75 72 6e 73  * SQLite returns
26b90 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 66   [SQLITE_BUSY] f
26ba0 6f 72 20 74 68 65 20 66 69 72 73 74 20 70 72 6f  or the first pro
26bb0 63 65 73 73 2c 20 68 6f 70 69 6e 67 20 74 68 61  cess, hoping tha
26bc0 74 20 74 68 69 73 0a 2a 2a 20 77 69 6c 6c 20 69  t this.** will i
26bd0 6e 64 75 63 65 20 74 68 65 20 66 69 72 73 74 20  nduce the first 
26be0 70 72 6f 63 65 73 73 20 74 6f 20 72 65 6c 65 61  process to relea
26bf0 73 65 20 69 74 73 20 72 65 61 64 20 6c 6f 63 6b  se its read lock
26c00 20 61 6e 64 20 61 6c 6c 6f 77 0a 2a 2a 20 74 68   and allow.** th
26c10 65 20 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73  e second process
26c20 20 74 6f 20 70 72 6f 63 65 65 64 2e 0a 2a 2a 0a   to proceed..**.
26c30 2a 2a 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20  ** ^The default 
26c40 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20 69 73  busy callback is
26c50 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54   NULL..**.** ^(T
26c60 68 65 72 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65  here can only be
26c70 20 61 20 73 69 6e 67 6c 65 20 62 75 73 79 20 68   a single busy h
26c80 61 6e 64 6c 65 72 20 64 65 66 69 6e 65 64 20 66  andler defined f
26c90 6f 72 20 65 61 63 68 0a 2a 2a 20 5b 64 61 74 61  or each.** [data
26ca0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
26cb0 2e 20 20 53 65 74 74 69 6e 67 20 61 20 6e 65 77  .  Setting a new
26cc0 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 63 6c   busy handler cl
26cd0 65 61 72 73 20 61 6e 79 0a 2a 2a 20 70 72 65 76  ears any.** prev
26ce0 69 6f 75 73 6c 79 20 73 65 74 20 68 61 6e 64 6c  iously set handl
26cf0 65 72 2e 29 5e 20 20 5e 4e 6f 74 65 20 74 68 61  er.)^  ^Note tha
26d00 74 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74  t calling [sqlit
26d10 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28  e3_busy_timeout(
26d20 29 5d 0a 2a 2a 20 6f 72 20 65 76 61 6c 75 61 74  )].** or evaluat
26d30 69 6e 67 20 5b 50 52 41 47 4d 41 20 62 75 73 79  ing [PRAGMA busy
26d40 5f 74 69 6d 65 6f 75 74 3d 4e 5d 20 77 69 6c 6c  _timeout=N] will
26d50 20 63 68 61 6e 67 65 20 74 68 65 0a 2a 2a 20 62   change the.** b
26d60 75 73 79 20 68 61 6e 64 6c 65 72 20 61 6e 64 20  usy handler and 
26d70 74 68 75 73 20 63 6c 65 61 72 20 61 6e 79 20 70  thus clear any p
26d80 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20 62 75  reviously set bu
26d90 73 79 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a 0a 2a  sy handler..**.*
26da0 2a 20 54 68 65 20 62 75 73 79 20 63 61 6c 6c 62  * The busy callb
26db0 61 63 6b 20 73 68 6f 75 6c 64 20 6e 6f 74 20 74  ack should not t
26dc0 61 6b 65 20 61 6e 79 20 61 63 74 69 6f 6e 73 20  ake any actions 
26dd0 77 68 69 63 68 20 6d 6f 64 69 66 79 20 74 68 65  which modify the
26de0 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e  .** database con
26df0 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 76  nection that inv
26e00 6f 6b 65 64 20 74 68 65 20 62 75 73 79 20 68 61  oked the busy ha
26e10 6e 64 6c 65 72 2e 20 20 49 6e 20 6f 74 68 65 72  ndler.  In other
26e20 20 77 6f 72 64 73 2c 0a 2a 2a 20 74 68 65 20 62   words,.** the b
26e30 75 73 79 20 68 61 6e 64 6c 65 72 20 69 73 20 6e  usy handler is n
26e40 6f 74 20 72 65 65 6e 74 72 61 6e 74 2e 20 20 41  ot reentrant.  A
26e50 6e 79 20 73 75 63 68 20 61 63 74 69 6f 6e 73 0a  ny such actions.
26e60 2a 2a 20 72 65 73 75 6c 74 20 69 6e 20 75 6e 64  ** result in und
26e70 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e  efined behavior.
26e80 0a 2a 2a 20 0a 2a 2a 20 41 20 62 75 73 79 20 68  .** .** A busy h
26e90 61 6e 64 6c 65 72 20 6d 75 73 74 20 6e 6f 74 20  andler must not 
26ea0 63 6c 6f 73 65 20 74 68 65 20 64 61 74 61 62 61  close the databa
26eb0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a  se connection.**
26ec0 20 6f 72 20 5b 70 72 65 70 61 72 65 64 20 73 74   or [prepared st
26ed0 61 74 65 6d 65 6e 74 5d 20 74 68 61 74 20 69 6e  atement] that in
26ee0 76 6f 6b 65 64 20 74 68 65 20 62 75 73 79 20 68  voked the busy h
26ef0 61 6e 64 6c 65 72 2e 0a 2a 2f 0a 53 51 4c 49 54  andler..*/.SQLIT
26f00 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
26f10 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 73  3_busy_handler(s
26f20 71 6c 69 74 65 33 2a 2c 69 6e 74 28 2a 29 28 76  qlite3*,int(*)(v
26f30 6f 69 64 2a 2c 69 6e 74 29 2c 76 6f 69 64 2a 29  oid*,int),void*)
26f40 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
26f50 46 3a 20 53 65 74 20 41 20 42 75 73 79 20 54 69  F: Set A Busy Ti
26f60 6d 65 6f 75 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a  meout.** METHOD:
26f70 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e   sqlite3.**.** ^
26f80 54 68 69 73 20 72 6f 75 74 69 6e 65 20 73 65 74  This routine set
26f90 73 20 61 20 5b 73 71 6c 69 74 65 33 5f 62 75 73  s a [sqlite3_bus
26fa0 79 5f 68 61 6e 64 6c 65 72 20 7c 20 62 75 73 79  y_handler | busy
26fb0 20 68 61 6e 64 6c 65 72 5d 20 74 68 61 74 20 73   handler] that s
26fc0 6c 65 65 70 73 0a 2a 2a 20 66 6f 72 20 61 20 73  leeps.** for a s
26fd0 70 65 63 69 66 69 65 64 20 61 6d 6f 75 6e 74 20  pecified amount 
26fe0 6f 66 20 74 69 6d 65 20 77 68 65 6e 20 61 20 74  of time when a t
26ff0 61 62 6c 65 20 69 73 20 6c 6f 63 6b 65 64 2e 20  able is locked. 
27000 20 5e 54 68 65 20 68 61 6e 64 6c 65 72 0a 2a 2a   ^The handler.**
27010 20 77 69 6c 6c 20 73 6c 65 65 70 20 6d 75 6c 74   will sleep mult
27020 69 70 6c 65 20 74 69 6d 65 73 20 75 6e 74 69 6c  iple times until
27030 20 61 74 20 6c 65 61 73 74 20 22 6d 73 22 20 6d   at least "ms" m
27040 69 6c 6c 69 73 65 63 6f 6e 64 73 20 6f 66 20 73  illiseconds of s
27050 6c 65 65 70 69 6e 67 0a 2a 2a 20 68 61 76 65 20  leeping.** have 
27060 61 63 63 75 6d 75 6c 61 74 65 64 2e 20 20 5e 41  accumulated.  ^A
27070 66 74 65 72 20 61 74 20 6c 65 61 73 74 20 22 6d  fter at least "m
27080 73 22 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20  s" milliseconds 
27090 6f 66 20 73 6c 65 65 70 69 6e 67 2c 0a 2a 2a 20  of sleeping,.** 
270a0 74 68 65 20 68 61 6e 64 6c 65 72 20 72 65 74 75  the handler retu
270b0 72 6e 73 20 30 20 77 68 69 63 68 20 63 61 75 73  rns 0 which caus
270c0 65 73 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  es [sqlite3_step
270d0 28 29 5d 20 74 6f 20 72 65 74 75 72 6e 0a 2a 2a  ()] to return.**
270e0 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2e 0a   [SQLITE_BUSY]..
270f0 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 69 6e 67 20 74  **.** ^Calling t
27100 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69 74 68  his routine with
27110 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 6c 65 73   an argument les
27120 73 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20  s than or equal 
27130 74 6f 20 7a 65 72 6f 0a 2a 2a 20 74 75 72 6e 73  to zero.** turns
27140 20 6f 66 66 20 61 6c 6c 20 62 75 73 79 20 68 61   off all busy ha
27150 6e 64 6c 65 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e 28  ndlers..**.** ^(
27160 54 68 65 72 65 20 63 61 6e 20 6f 6e 6c 79 20 62  There can only b
27170 65 20 61 20 73 69 6e 67 6c 65 20 62 75 73 79 20  e a single busy 
27180 68 61 6e 64 6c 65 72 20 66 6f 72 20 61 20 70 61  handler for a pa
27190 72 74 69 63 75 6c 61 72 0a 2a 2a 20 5b 64 61 74  rticular.** [dat
271a0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
271b0 5d 20 61 74 20 61 6e 79 20 67 69 76 65 6e 20 6d  ] at any given m
271c0 6f 6d 65 6e 74 2e 20 20 49 66 20 61 6e 6f 74 68  oment.  If anoth
271d0 65 72 20 62 75 73 79 20 68 61 6e 64 6c 65 72 0a  er busy handler.
271e0 2a 2a 20 77 61 73 20 64 65 66 69 6e 65 64 20 20  ** was defined  
271f0 28 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f  (using [sqlite3_
27200 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 29 5d 29  busy_handler()])
27210 20 70 72 69 6f 72 20 74 6f 20 63 61 6c 6c 69 6e   prior to callin
27220 67 0a 2a 2a 20 74 68 69 73 20 72 6f 75 74 69 6e  g.** this routin
27230 65 2c 20 74 68 61 74 20 6f 74 68 65 72 20 62 75  e, that other bu
27240 73 79 20 68 61 6e 64 6c 65 72 20 69 73 20 63 6c  sy handler is cl
27250 65 61 72 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53  eared.)^.**.** S
27260 65 65 20 61 6c 73 6f 3a 20 20 5b 50 52 41 47 4d  ee also:  [PRAGM
27270 41 20 62 75 73 79 5f 74 69 6d 65 6f 75 74 5d 0a  A busy_timeout].
27280 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
27290 74 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74  t sqlite3_busy_t
272a0 69 6d 65 6f 75 74 28 73 71 6c 69 74 65 33 2a 2c  imeout(sqlite3*,
272b0 20 69 6e 74 20 6d 73 29 3b 0a 0a 2f 2a 0a 2a 2a   int ms);../*.**
272c0 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e 76 65   CAPI3REF: Conve
272d0 6e 69 65 6e 63 65 20 52 6f 75 74 69 6e 65 73 20  nience Routines 
272e0 46 6f 72 20 52 75 6e 6e 69 6e 67 20 51 75 65 72  For Running Quer
272f0 69 65 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  ies.** METHOD: s
27300 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 69  qlite3.**.** Thi
27310 73 20 69 73 20 61 20 6c 65 67 61 63 79 20 69 6e  s is a legacy in
27320 74 65 72 66 61 63 65 20 74 68 61 74 20 69 73 20  terface that is 
27330 70 72 65 73 65 72 76 65 64 20 66 6f 72 20 62 61  preserved for ba
27340 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62  ckwards compatib
27350 69 6c 69 74 79 2e 0a 2a 2a 20 55 73 65 20 6f 66  ility..** Use of
27360 20 74 68 69 73 20 69 6e 74 65 72 66 61 63 65 20   this interface 
27370 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64  is not recommend
27380 65 64 2e 0a 2a 2a 0a 2a 2a 20 44 65 66 69 6e 69  ed..**.** Defini
27390 74 69 6f 6e 3a 20 41 20 3c 62 3e 72 65 73 75 6c  tion: A <b>resul
273a0 74 20 74 61 62 6c 65 3c 2f 62 3e 20 69 73 20 6d  t table</b> is m
273b0 65 6d 6f 72 79 20 64 61 74 61 20 73 74 72 75 63  emory data struc
273c0 74 75 72 65 20 63 72 65 61 74 65 64 20 62 79 20  ture created by 
273d0 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  the.** [sqlite3_
273e0 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 69 6e 74  get_table()] int
273f0 65 72 66 61 63 65 2e 20 20 41 20 72 65 73 75 6c  erface.  A resul
27400 74 20 74 61 62 6c 65 20 72 65 63 6f 72 64 73 20  t table records 
27410 74 68 65 0a 2a 2a 20 63 6f 6d 70 6c 65 74 65 20  the.** complete 
27420 71 75 65 72 79 20 72 65 73 75 6c 74 73 20 66 72  query results fr
27430 6f 6d 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 71  om one or more q
27440 75 65 72 69 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  ueries..**.** Th
27450 65 20 74 61 62 6c 65 20 63 6f 6e 63 65 70 74 75  e table conceptu
27460 61 6c 6c 79 20 68 61 73 20 61 20 6e 75 6d 62 65  ally has a numbe
27470 72 20 6f 66 20 72 6f 77 73 20 61 6e 64 20 63 6f  r of rows and co
27480 6c 75 6d 6e 73 2e 20 20 42 75 74 0a 2a 2a 20 74  lumns.  But.** t
27490 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61 72 65  hese numbers are
274a0 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 74 68 65   not part of the
274b0 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 69 74   result table it
274c0 73 65 6c 66 2e 20 20 54 68 65 73 65 0a 2a 2a 20  self.  These.** 
274d0 6e 75 6d 62 65 72 73 20 61 72 65 20 6f 62 74 61  numbers are obta
274e0 69 6e 65 64 20 73 65 70 61 72 61 74 65 6c 79 2e  ined separately.
274f0 20 20 4c 65 74 20 4e 20 62 65 20 74 68 65 20 6e    Let N be the n
27500 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 0a 2a 2a  umber of rows.**
27510 20 61 6e 64 20 4d 20 62 65 20 74 68 65 20 6e 75   and M be the nu
27520 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e  mber of columns.
27530 0a 2a 2a 0a 2a 2a 20 41 20 72 65 73 75 6c 74 20  .**.** A result 
27540 74 61 62 6c 65 20 69 73 20 61 6e 20 61 72 72 61  table is an arra
27550 79 20 6f 66 20 70 6f 69 6e 74 65 72 73 20 74 6f  y of pointers to
27560 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64   zero-terminated
27570 20 55 54 46 2d 38 20 73 74 72 69 6e 67 73 2e 0a   UTF-8 strings..
27580 2a 2a 20 54 68 65 72 65 20 61 72 65 20 28 4e 2b  ** There are (N+
27590 31 29 2a 4d 20 65 6c 65 6d 65 6e 74 73 20 69 6e  1)*M elements in
275a0 20 74 68 65 20 61 72 72 61 79 2e 20 20 54 68 65   the array.  The
275b0 20 66 69 72 73 74 20 4d 20 70 6f 69 6e 74 65 72   first M pointer
275c0 73 20 70 6f 69 6e 74 0a 2a 2a 20 74 6f 20 7a 65  s point.** to ze
275d0 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74  ro-terminated st
275e0 72 69 6e 67 73 20 74 68 61 74 20 20 63 6f 6e 74  rings that  cont
275f0 61 69 6e 20 74 68 65 20 6e 61 6d 65 73 20 6f 66  ain the names of
27600 20 74 68 65 20 63 6f 6c 75 6d 6e 73 2e 0a 2a 2a   the columns..**
27610 20 54 68 65 20 72 65 6d 61 69 6e 69 6e 67 20 65   The remaining e
27620 6e 74 72 69 65 73 20 61 6c 6c 20 70 6f 69 6e 74  ntries all point
27630 20 74 6f 20 71 75 65 72 79 20 72 65 73 75 6c 74   to query result
27640 73 2e 20 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20  s.  NULL values 
27650 72 65 73 75 6c 74 0a 2a 2a 20 69 6e 20 4e 55 4c  result.** in NUL
27660 4c 20 70 6f 69 6e 74 65 72 73 2e 20 20 41 6c 6c  L pointers.  All
27670 20 6f 74 68 65 72 20 76 61 6c 75 65 73 20 61 72   other values ar
27680 65 20 69 6e 20 74 68 65 69 72 20 55 54 46 2d 38  e in their UTF-8
27690 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64   zero-terminated
276a0 0a 2a 2a 20 73 74 72 69 6e 67 20 72 65 70 72 65  .** string repre
276b0 73 65 6e 74 61 74 69 6f 6e 20 61 73 20 72 65 74  sentation as ret
276c0 75 72 6e 65 64 20 62 79 20 5b 73 71 6c 69 74 65  urned by [sqlite
276d0 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 29 5d  3_column_text()]
276e0 2e 0a 2a 2a 0a 2a 2a 20 41 20 72 65 73 75 6c 74  ..**.** A result
276f0 20 74 61 62 6c 65 20 6d 69 67 68 74 20 63 6f 6e   table might con
27700 73 69 73 74 20 6f 66 20 6f 6e 65 20 6f 72 20 6d  sist of one or m
27710 6f 72 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ore memory alloc
27720 61 74 69 6f 6e 73 2e 0a 2a 2a 20 49 74 20 69 73  ations..** It is
27730 20 6e 6f 74 20 73 61 66 65 20 74 6f 20 70 61 73   not safe to pas
27740 73 20 61 20 72 65 73 75 6c 74 20 74 61 62 6c 65  s a result table
27750 20 64 69 72 65 63 74 6c 79 20 74 6f 20 5b 73 71   directly to [sq
27760 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 2e 0a 2a  lite3_free()]..*
27770 2a 20 41 20 72 65 73 75 6c 74 20 74 61 62 6c 65  * A result table
27780 20 73 68 6f 75 6c 64 20 62 65 20 64 65 61 6c 6c   should be deall
27790 6f 63 61 74 65 64 20 75 73 69 6e 67 20 5b 73 71  ocated using [sq
277a0 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65  lite3_free_table
277b0 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 28 41 73 20  ()]..**.** ^(As 
277c0 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 74 68  an example of th
277d0 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 66  e result table f
277e0 6f 72 6d 61 74 2c 20 73 75 70 70 6f 73 65 20 61  ormat, suppose a
277f0 20 71 75 65 72 79 20 72 65 73 75 6c 74 0a 2a 2a   query result.**
27800 20 69 73 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a   is as follows:.
27810 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74  **.** <blockquot
27820 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 20 20 20 20  e><pre>.**      
27830 20 20 4e 61 6d 65 20 20 20 20 20 20 20 20 7c 20    Name        | 
27840 41 67 65 0a 2a 2a 20 20 20 20 20 20 20 20 2d 2d  Age.**        --
27850 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
27860 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20 20 20 20 20 20  -----.**        
27870 41 6c 69 63 65 20 20 20 20 20 20 20 7c 20 34 33  Alice       | 43
27880 0a 2a 2a 20 20 20 20 20 20 20 20 42 6f 62 20 20  .**        Bob  
27890 20 20 20 20 20 20 20 7c 20 32 38 0a 2a 2a 20 20         | 28.**  
278a0 20 20 20 20 20 20 43 69 6e 64 79 20 20 20 20 20        Cindy     
278b0 20 20 7c 20 32 31 0a 2a 2a 20 3c 2f 70 72 65 3e    | 21.** </pre>
278c0 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a  </blockquote>.**
278d0 0a 2a 2a 20 54 68 65 72 65 20 61 72 65 20 74 77  .** There are tw
278e0 6f 20 63 6f 6c 75 6d 6e 20 28 4d 3d 3d 32 29 20  o column (M==2) 
278f0 61 6e 64 20 74 68 72 65 65 20 72 6f 77 73 20 28  and three rows (
27900 4e 3d 3d 33 29 2e 20 20 54 68 75 73 20 74 68 65  N==3).  Thus the
27910 0a 2a 2a 20 72 65 73 75 6c 74 20 74 61 62 6c 65  .** result table
27920 20 68 61 73 20 38 20 65 6e 74 72 69 65 73 2e 20   has 8 entries. 
27930 20 53 75 70 70 6f 73 65 20 74 68 65 20 72 65 73   Suppose the res
27940 75 6c 74 20 74 61 62 6c 65 20 69 73 20 73 74 6f  ult table is sto
27950 72 65 64 0a 2a 2a 20 69 6e 20 61 6e 20 61 72 72  red.** in an arr
27960 61 79 20 6e 61 6d 65 73 20 61 7a 52 65 73 75 6c  ay names azResul
27970 74 2e 20 20 54 68 65 6e 20 61 7a 52 65 73 75 6c  t.  Then azResul
27980 74 20 68 6f 6c 64 73 20 74 68 69 73 20 63 6f 6e  t holds this con
27990 74 65 6e 74 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f  tent:.**.** <blo
279a0 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a  ckquote><pre>.**
279b0 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74          azResult
279c0 26 23 39 31 3b 30 5d 20 3d 20 22 4e 61 6d 65 22  &#91;0] = "Name"
279d0 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
279e0 73 75 6c 74 26 23 39 31 3b 31 5d 20 3d 20 22 41  sult&#91;1] = "A
279f0 67 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61  ge";.**        a
27a00 7a 52 65 73 75 6c 74 26 23 39 31 3b 32 5d 20 3d  zResult&#91;2] =
27a10 20 22 41 6c 69 63 65 22 3b 0a 2a 2a 20 20 20 20   "Alice";.**    
27a20 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31      azResult&#91
27a30 3b 33 5d 20 3d 20 22 34 33 22 3b 0a 2a 2a 20 20  ;3] = "43";.**  
27a40 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23        azResult&#
27a50 39 31 3b 34 5d 20 3d 20 22 42 6f 62 22 3b 0a 2a  91;4] = "Bob";.*
27a60 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c  *        azResul
27a70 74 26 23 39 31 3b 35 5d 20 3d 20 22 32 38 22 3b  t&#91;5] = "28";
27a80 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
27a90 75 6c 74 26 23 39 31 3b 36 5d 20 3d 20 22 43 69  ult&#91;6] = "Ci
27aa0 6e 64 79 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20  ndy";.**        
27ab0 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 37 5d 20  azResult&#91;7] 
27ac0 3d 20 22 32 31 22 3b 0a 2a 2a 20 3c 2f 70 72 65  = "21";.** </pre
27ad0 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e  ></blockquote>)^
27ae0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
27af0 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 20  te3_get_table() 
27b00 66 75 6e 63 74 69 6f 6e 20 65 76 61 6c 75 61 74  function evaluat
27b10 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 2a  es one or more.*
27b20 2a 20 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65 70 61  * semicolon-sepa
27b30 72 61 74 65 64 20 53 51 4c 20 73 74 61 74 65 6d  rated SQL statem
27b40 65 6e 74 73 20 69 6e 20 74 68 65 20 7a 65 72 6f  ents in the zero
27b50 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46 2d  -terminated UTF-
27b60 38 0a 2a 2a 20 73 74 72 69 6e 67 20 6f 66 20 69  8.** string of i
27b70 74 73 20 32 6e 64 20 70 61 72 61 6d 65 74 65 72  ts 2nd parameter
27b80 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 72   and returns a r
27b90 65 73 75 6c 74 20 74 61 62 6c 65 20 74 6f 20 74  esult table to t
27ba0 68 65 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 67 69  he.** pointer gi
27bb0 76 65 6e 20 69 6e 20 69 74 73 20 33 72 64 20 70  ven in its 3rd p
27bc0 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a 2a 20  arameter..**.** 
27bd0 41 66 74 65 72 20 74 68 65 20 61 70 70 6c 69 63  After the applic
27be0 61 74 69 6f 6e 20 68 61 73 20 66 69 6e 69 73 68  ation has finish
27bf0 65 64 20 77 69 74 68 20 74 68 65 20 72 65 73 75  ed with the resu
27c00 6c 74 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  lt from sqlite3_
27c10 67 65 74 5f 74 61 62 6c 65 28 29 2c 0a 2a 2a 20  get_table(),.** 
27c20 69 74 20 6d 75 73 74 20 70 61 73 73 20 74 68 65  it must pass the
27c30 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 70 6f   result table po
27c40 69 6e 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33  inter to sqlite3
27c50 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 20 69 6e  _free_table() in
27c60 20 6f 72 64 65 72 20 74 6f 0a 2a 2a 20 72 65 6c   order to.** rel
27c70 65 61 73 65 20 74 68 65 20 6d 65 6d 6f 72 79 20  ease the memory 
27c80 74 68 61 74 20 77 61 73 20 6d 61 6c 6c 6f 63 65  that was malloce
27c90 64 2e 20 20 42 65 63 61 75 73 65 20 6f 66 20 74  d.  Because of t
27ca0 68 65 20 77 61 79 20 74 68 65 0a 2a 2a 20 5b 73  he way the.** [s
27cb0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d  qlite3_malloc()]
27cc0 20 68 61 70 70 65 6e 73 20 77 69 74 68 69 6e 20   happens within 
27cd0 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c  sqlite3_get_tabl
27ce0 65 28 29 2c 20 74 68 65 20 63 61 6c 6c 69 6e 67  e(), the calling
27cf0 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73  .** function mus
27d00 74 20 6e 6f 74 20 74 72 79 20 74 6f 20 63 61 6c  t not try to cal
27d10 6c 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28  l [sqlite3_free(
27d20 29 5d 20 64 69 72 65 63 74 6c 79 2e 20 20 4f 6e  )] directly.  On
27d30 6c 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66  ly.** [sqlite3_f
27d40 72 65 65 5f 74 61 62 6c 65 28 29 5d 20 69 73 20  ree_table()] is 
27d50 61 62 6c 65 20 74 6f 20 72 65 6c 65 61 73 65 20  able to release 
27d60 74 68 65 20 6d 65 6d 6f 72 79 20 70 72 6f 70 65  the memory prope
27d70 72 6c 79 20 61 6e 64 20 73 61 66 65 6c 79 2e 0a  rly and safely..
27d80 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  **.** The sqlite
27d90 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 20 69 6e  3_get_table() in
27da0 74 65 72 66 61 63 65 20 69 73 20 69 6d 70 6c 65  terface is imple
27db0 6d 65 6e 74 65 64 20 61 73 20 61 20 77 72 61 70  mented as a wrap
27dc0 70 65 72 20 61 72 6f 75 6e 64 0a 2a 2a 20 5b 73  per around.** [s
27dd0 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d 2e 20  qlite3_exec()]. 
27de0 20 54 68 65 20 73 71 6c 69 74 65 33 5f 67 65 74   The sqlite3_get
27df0 5f 74 61 62 6c 65 28 29 20 72 6f 75 74 69 6e 65  _table() routine
27e00 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 61   does not have a
27e10 63 63 65 73 73 0a 2a 2a 20 74 6f 20 61 6e 79 20  ccess.** to any 
27e20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61 20 73 74  internal data st
27e30 72 75 63 74 75 72 65 73 20 6f 66 20 53 51 4c 69  ructures of SQLi
27e40 74 65 2e 20 20 49 74 20 75 73 65 73 20 6f 6e 6c  te.  It uses onl
27e50 79 20 74 68 65 20 70 75 62 6c 69 63 0a 2a 2a 20  y the public.** 
27e60 69 6e 74 65 72 66 61 63 65 20 64 65 66 69 6e 65  interface define
27e70 64 20 68 65 72 65 2e 20 20 41 73 20 61 20 63 6f  d here.  As a co
27e80 6e 73 65 71 75 65 6e 63 65 2c 20 65 72 72 6f 72  nsequence, error
27e90 73 20 74 68 61 74 20 6f 63 63 75 72 20 69 6e 20  s that occur in 
27ea0 74 68 65 0a 2a 2a 20 77 72 61 70 70 65 72 20 6c  the.** wrapper l
27eb0 61 79 65 72 20 6f 75 74 73 69 64 65 20 6f 66 20  ayer outside of 
27ec0 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 5b 73 71  the internal [sq
27ed0 6c 69 74 65 33 5f 65 78 65 63 28 29 5d 20 63 61  lite3_exec()] ca
27ee0 6c 6c 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 72 65  ll are not.** re
27ef0 66 6c 65 63 74 65 64 20 69 6e 20 73 75 62 73 65  flected in subse
27f00 71 75 65 6e 74 20 63 61 6c 6c 73 20 74 6f 20 5b  quent calls to [
27f10 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28  sqlite3_errcode(
27f20 29 5d 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65  )] or.** [sqlite
27f30 33 5f 65 72 72 6d 73 67 28 29 5d 2e 0a 2a 2f 0a  3_errmsg()]..*/.
27f40 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
27f50 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
27f60 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c  (.  sqlite3 *db,
27f70 20 20 20 20 20 20 20 20 20 20 2f 2a 20 41 6e 20            /* An 
27f80 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 2a 2f  open database */
27f90 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  .  const char *z
27fa0 53 71 6c 2c 20 20 20 20 20 2f 2a 20 53 51 4c 20  Sql,     /* SQL 
27fb0 74 6f 20 62 65 20 65 76 61 6c 75 61 74 65 64 20  to be evaluated 
27fc0 2a 2f 0a 20 20 63 68 61 72 20 2a 2a 2a 70 61 7a  */.  char ***paz
27fd0 52 65 73 75 6c 74 2c 20 20 20 20 2f 2a 20 52 65  Result,    /* Re
27fe0 73 75 6c 74 73 20 6f 66 20 74 68 65 20 71 75 65  sults of the que
27ff0 72 79 20 2a 2f 0a 20 20 69 6e 74 20 2a 70 6e 52  ry */.  int *pnR
28000 6f 77 2c 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ow,           /*
28010 20 4e 75 6d 62 65 72 20 6f 66 20 72 65 73 75 6c   Number of resul
28020 74 20 72 6f 77 73 20 77 72 69 74 74 65 6e 20 68  t rows written h
28030 65 72 65 20 2a 2f 0a 20 20 69 6e 74 20 2a 70 6e  ere */.  int *pn
28040 43 6f 6c 75 6d 6e 2c 20 20 20 20 20 20 20 20 2f  Column,        /
28050 2a 20 4e 75 6d 62 65 72 20 6f 66 20 72 65 73 75  * Number of resu
28060 6c 74 20 63 6f 6c 75 6d 6e 73 20 77 72 69 74 74  lt columns writt
28070 65 6e 20 68 65 72 65 20 2a 2f 0a 20 20 63 68 61  en here */.  cha
28080 72 20 2a 2a 70 7a 45 72 72 6d 73 67 20 20 20 20  r **pzErrmsg    
28090 20 20 20 2f 2a 20 45 72 72 6f 72 20 6d 73 67 20     /* Error msg 
280a0 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a  written here */.
280b0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f  );.SQLITE_API vo
280c0 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 5f  id sqlite3_free_
280d0 74 61 62 6c 65 28 63 68 61 72 20 2a 2a 72 65 73  table(char **res
280e0 75 6c 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ult);../*.** CAP
280f0 49 33 52 45 46 3a 20 46 6f 72 6d 61 74 74 65 64  I3REF: Formatted
28100 20 53 74 72 69 6e 67 20 50 72 69 6e 74 69 6e 67   String Printing
28110 20 46 75 6e 63 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a   Functions.**.**
28120 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20   These routines 
28130 61 72 65 20 77 6f 72 6b 2d 61 6c 69 6b 65 73 20  are work-alikes 
28140 6f 66 20 74 68 65 20 22 70 72 69 6e 74 66 28 29  of the "printf()
28150 22 20 66 61 6d 69 6c 79 20 6f 66 20 66 75 6e 63  " family of func
28160 74 69 6f 6e 73 0a 2a 2a 20 66 72 6f 6d 20 74 68  tions.** from th
28170 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69 62  e standard C lib
28180 72 61 72 79 2e 0a 2a 2a 20 54 68 65 73 65 20 72  rary..** These r
28190 6f 75 74 69 6e 65 73 20 75 6e 64 65 72 73 74 61  outines understa
281a0 6e 64 20 6d 6f 73 74 20 6f 66 20 74 68 65 20 63  nd most of the c
281b0 6f 6d 6d 6f 6e 20 66 6f 72 6d 61 74 74 69 6e 67  ommon formatting
281c0 20 6f 70 74 69 6f 6e 73 20 66 72 6f 6d 0a 2a 2a   options from.**
281d0 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69   the standard li
281e0 62 72 61 72 79 20 70 72 69 6e 74 66 28 29 20 0a  brary printf() .
281f0 2a 2a 20 70 6c 75 73 20 73 6f 6d 65 20 61 64 64  ** plus some add
28200 69 74 69 6f 6e 61 6c 20 6e 6f 6e 2d 73 74 61 6e  itional non-stan
28210 64 61 72 64 20 66 6f 72 6d 61 74 73 20 28 5b 25  dard formats ([%
28220 71 5d 2c 20 5b 25 51 5d 2c 20 5b 25 77 5d 2c 20  q], [%Q], [%w], 
28230 61 6e 64 20 5b 25 7a 5d 29 2e 0a 2a 2a 20 53 65  and [%z])..** Se
28240 65 20 74 68 65 20 5b 62 75 69 6c 74 2d 69 6e 20  e the [built-in 
28250 70 72 69 6e 74 66 28 29 5d 20 64 6f 63 75 6d 65  printf()] docume
28260 6e 74 61 74 69 6f 6e 20 66 6f 72 20 64 65 74 61  ntation for deta
28270 69 6c 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  ils..**.** ^The 
28280 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28  sqlite3_mprintf(
28290 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 76 6d  ) and sqlite3_vm
282a0 70 72 69 6e 74 66 28 29 20 72 6f 75 74 69 6e 65  printf() routine
282b0 73 20 77 72 69 74 65 20 74 68 65 69 72 0a 2a 2a  s write their.**
282c0 20 72 65 73 75 6c 74 73 20 69 6e 74 6f 20 6d 65   results into me
282d0 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72  mory obtained fr
282e0 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  om [sqlite3_mall
282f0 6f 63 36 34 28 29 5d 2e 0a 2a 2a 20 54 68 65 20  oc64()]..** The 
28300 73 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64  strings returned
28310 20 62 79 20 74 68 65 73 65 20 74 77 6f 20 72 6f   by these two ro
28320 75 74 69 6e 65 73 20 73 68 6f 75 6c 64 20 62 65  utines should be
28330 0a 2a 2a 20 72 65 6c 65 61 73 65 64 20 62 79 20  .** released by 
28340 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d  [sqlite3_free()]
28350 2e 20 20 5e 42 6f 74 68 20 72 6f 75 74 69 6e 65  .  ^Both routine
28360 73 20 72 65 74 75 72 6e 20 61 0a 2a 2a 20 4e 55  s return a.** NU
28370 4c 4c 20 70 6f 69 6e 74 65 72 20 69 66 20 5b 73  LL pointer if [s
28380 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28  qlite3_malloc64(
28390 29 5d 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20  )] is unable to 
283a0 61 6c 6c 6f 63 61 74 65 20 65 6e 6f 75 67 68 0a  allocate enough.
283b0 2a 2a 20 6d 65 6d 6f 72 79 20 74 6f 20 68 6f 6c  ** memory to hol
283c0 64 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  d the resulting 
283d0 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 5e 28  string..**.** ^(
283e0 54 68 65 20 73 71 6c 69 74 65 33 5f 73 6e 70 72  The sqlite3_snpr
283f0 69 6e 74 66 28 29 20 72 6f 75 74 69 6e 65 20 69  intf() routine i
28400 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 22 73 6e  s similar to "sn
28410 70 72 69 6e 74 66 28 29 22 20 66 72 6f 6d 0a 2a  printf()" from.*
28420 2a 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 43  * the standard C
28430 20 6c 69 62 72 61 72 79 2e 20 20 54 68 65 20 72   library.  The r
28440 65 73 75 6c 74 20 69 73 20 77 72 69 74 74 65 6e  esult is written
28450 20 69 6e 74 6f 20 74 68 65 0a 2a 2a 20 62 75 66   into the.** buf
28460 66 65 72 20 73 75 70 70 6c 69 65 64 20 61 73 20  fer supplied as 
28470 74 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  the second param
28480 65 74 65 72 20 77 68 6f 73 65 20 73 69 7a 65 20  eter whose size 
28490 69 73 20 67 69 76 65 6e 20 62 79 0a 2a 2a 20 74  is given by.** t
284a0 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74  he first paramet
284b0 65 72 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 68  er. Note that th
284c0 65 20 6f 72 64 65 72 20 6f 66 20 74 68 65 0a 2a  e order of the.*
284d0 2a 20 66 69 72 73 74 20 74 77 6f 20 70 61 72 61  * first two para
284e0 6d 65 74 65 72 73 20 69 73 20 72 65 76 65 72 73  meters is revers
284f0 65 64 20 66 72 6f 6d 20 73 6e 70 72 69 6e 74 66  ed from snprintf
28500 28 29 2e 29 5e 20 20 54 68 69 73 20 69 73 20 61  ().)^  This is a
28510 6e 0a 2a 2a 20 68 69 73 74 6f 72 69 63 61 6c 20  n.** historical 
28520 61 63 63 69 64 65 6e 74 20 74 68 61 74 20 63 61  accident that ca
28530 6e 6e 6f 74 20 62 65 20 66 69 78 65 64 20 77 69  nnot be fixed wi
28540 74 68 6f 75 74 20 62 72 65 61 6b 69 6e 67 0a 2a  thout breaking.*
28550 2a 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70  * backwards comp
28560 61 74 69 62 69 6c 69 74 79 2e 20 20 5e 28 4e 6f  atibility.  ^(No
28570 74 65 20 61 6c 73 6f 20 74 68 61 74 20 73 71 6c  te also that sql
28580 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a  ite3_snprintf().
28590 2a 2a 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69  ** returns a poi
285a0 6e 74 65 72 20 74 6f 20 69 74 73 20 62 75 66 66  nter to its buff
285b0 65 72 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68  er instead of th
285c0 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 63  e number of.** c
285d0 68 61 72 61 63 74 65 72 73 20 61 63 74 75 61 6c  haracters actual
285e0 6c 79 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20  ly written into 
285f0 74 68 65 20 62 75 66 66 65 72 2e 29 5e 20 20 57  the buffer.)^  W
28600 65 20 61 64 6d 69 74 20 74 68 61 74 0a 2a 2a 20  e admit that.** 
28610 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 68  the number of ch
28620 61 72 61 63 74 65 72 73 20 77 72 69 74 74 65 6e  aracters written
28630 20 77 6f 75 6c 64 20 62 65 20 61 20 6d 6f 72 65   would be a more
28640 20 75 73 65 66 75 6c 20 72 65 74 75 72 6e 0a 2a   useful return.*
28650 2a 20 76 61 6c 75 65 20 62 75 74 20 77 65 20 63  * value but we c
28660 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65  annot change the
28670 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
28680 6f 66 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69  of sqlite3_snpri
28690 6e 74 66 28 29 0a 2a 2a 20 6e 6f 77 20 77 69 74  ntf().** now wit
286a0 68 6f 75 74 20 62 72 65 61 6b 69 6e 67 20 63 6f  hout breaking co
286b0 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 0a  mpatibility..**.
286c0 2a 2a 20 5e 41 73 20 6c 6f 6e 67 20 61 73 20 74  ** ^As long as t
286d0 68 65 20 62 75 66 66 65 72 20 73 69 7a 65 20 69  he buffer size i
286e0 73 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 7a  s greater than z
286f0 65 72 6f 2c 20 73 71 6c 69 74 65 33 5f 73 6e 70  ero, sqlite3_snp
28700 72 69 6e 74 66 28 29 0a 2a 2a 20 67 75 61 72 61  rintf().** guara
28710 6e 74 65 65 73 20 74 68 61 74 20 74 68 65 20 62  ntees that the b
28720 75 66 66 65 72 20 69 73 20 61 6c 77 61 79 73 20  uffer is always 
28730 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 2e  zero-terminated.
28740 20 20 5e 54 68 65 20 66 69 72 73 74 0a 2a 2a 20    ^The first.** 
28750 70 61 72 61 6d 65 74 65 72 20 22 6e 22 20 69 73  parameter "n" is
28760 20 74 68 65 20 74 6f 74 61 6c 20 73 69 7a 65 20   the total size 
28770 6f 66 20 74 68 65 20 62 75 66 66 65 72 2c 20 69  of the buffer, i
28780 6e 63 6c 75 64 69 6e 67 20 73 70 61 63 65 20 66  ncluding space f
28790 6f 72 0a 2a 2a 20 74 68 65 20 7a 65 72 6f 20 74  or.** the zero t
287a0 65 72 6d 69 6e 61 74 6f 72 2e 20 20 53 6f 20 74  erminator.  So t
287b0 68 65 20 6c 6f 6e 67 65 73 74 20 73 74 72 69 6e  he longest strin
287c0 67 20 74 68 61 74 20 63 61 6e 20 62 65 20 63 6f  g that can be co
287d0 6d 70 6c 65 74 65 6c 79 0a 2a 2a 20 77 72 69 74  mpletely.** writ
287e0 74 65 6e 20 77 69 6c 6c 20 62 65 20 6e 2d 31 20  ten will be n-1 
287f0 63 68 61 72 61 63 74 65 72 73 2e 0a 2a 2a 0a 2a  characters..**.*
28800 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 76  * ^The sqlite3_v
28810 73 6e 70 72 69 6e 74 66 28 29 20 72 6f 75 74 69  snprintf() routi
28820 6e 65 20 69 73 20 61 20 76 61 72 61 72 67 73 20  ne is a varargs 
28830 76 65 72 73 69 6f 6e 20 6f 66 20 73 71 6c 69 74  version of sqlit
28840 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 2e 0a 2a  e3_snprintf()..*
28850 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 20  *.** See also:  
28860 5b 62 75 69 6c 74 2d 69 6e 20 70 72 69 6e 74 66  [built-in printf
28870 28 29 5d 2c 20 5b 70 72 69 6e 74 66 28 29 20 53  ()], [printf() S
28880 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 0a 2a 2f 0a  QL function].*/.
28890 53 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20  SQLITE_API char 
288a0 2a 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66  *sqlite3_mprintf
288b0 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 2e 2e 2e  (const char*,...
288c0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 68  );.SQLITE_API ch
288d0 61 72 20 2a 73 71 6c 69 74 65 33 5f 76 6d 70 72  ar *sqlite3_vmpr
288e0 69 6e 74 66 28 63 6f 6e 73 74 20 63 68 61 72 2a  intf(const char*
288f0 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 53 51 4c 49  , va_list);.SQLI
28900 54 45 5f 41 50 49 20 63 68 61 72 20 2a 73 71 6c  TE_API char *sql
28910 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 69 6e  ite3_snprintf(in
28920 74 2c 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68  t,char*,const ch
28930 61 72 2a 2c 20 2e 2e 2e 29 3b 0a 53 51 4c 49 54  ar*, ...);.SQLIT
28940 45 5f 41 50 49 20 63 68 61 72 20 2a 73 71 6c 69  E_API char *sqli
28950 74 65 33 5f 76 73 6e 70 72 69 6e 74 66 28 69 6e  te3_vsnprintf(in
28960 74 2c 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68  t,char*,const ch
28970 61 72 2a 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 0a  ar*, va_list);..
28980 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
28990 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f  Memory Allocatio
289a0 6e 20 53 75 62 73 79 73 74 65 6d 0a 2a 2a 0a 2a  n Subsystem.**.*
289b0 2a 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72  * The SQLite cor
289c0 65 20 75 73 65 73 20 74 68 65 73 65 20 74 68 72  e uses these thr
289d0 65 65 20 72 6f 75 74 69 6e 65 73 20 66 6f 72 20  ee routines for 
289e0 61 6c 6c 20 6f 66 20 69 74 73 20 6f 77 6e 0a 2a  all of its own.*
289f0 2a 20 69 6e 74 65 72 6e 61 6c 20 6d 65 6d 6f 72  * internal memor
28a00 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65 65  y allocation nee
28a10 64 73 2e 20 22 43 6f 72 65 22 20 69 6e 20 74 68  ds. "Core" in th
28a20 65 20 70 72 65 76 69 6f 75 73 20 73 65 6e 74 65  e previous sente
28a30 6e 63 65 0a 2a 2a 20 64 6f 65 73 20 6e 6f 74 20  nce.** does not 
28a40 69 6e 63 6c 75 64 65 20 6f 70 65 72 61 74 69 6e  include operatin
28a50 67 2d 73 79 73 74 65 6d 20 73 70 65 63 69 66 69  g-system specifi
28a60 63 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61  c VFS implementa
28a70 74 69 6f 6e 2e 20 20 54 68 65 0a 2a 2a 20 57 69  tion.  The.** Wi
28a80 6e 64 6f 77 73 20 56 46 53 20 75 73 65 73 20 6e  ndows VFS uses n
28a90 61 74 69 76 65 20 6d 61 6c 6c 6f 63 28 29 20 61  ative malloc() a
28aa0 6e 64 20 66 72 65 65 28 29 20 66 6f 72 20 73 6f  nd free() for so
28ab0 6d 65 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 2a  me operations..*
28ac0 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
28ad0 33 5f 6d 61 6c 6c 6f 63 28 29 20 72 6f 75 74 69  3_malloc() routi
28ae0 6e 65 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69  ne returns a poi
28af0 6e 74 65 72 20 74 6f 20 61 20 62 6c 6f 63 6b 0a  nter to a block.
28b00 2a 2a 20 6f 66 20 6d 65 6d 6f 72 79 20 61 74 20  ** of memory at 
28b10 6c 65 61 73 74 20 4e 20 62 79 74 65 73 20 69 6e  least N bytes in
28b20 20 6c 65 6e 67 74 68 2c 20 77 68 65 72 65 20 4e   length, where N
28b30 20 69 73 20 74 68 65 20 70 61 72 61 6d 65 74 65   is the paramete
28b40 72 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65  r..** ^If sqlite
28b50 33 5f 6d 61 6c 6c 6f 63 28 29 20 69 73 20 75 6e  3_malloc() is un
28b60 61 62 6c 65 20 74 6f 20 6f 62 74 61 69 6e 20 73  able to obtain s
28b70 75 66 66 69 63 69 65 6e 74 20 66 72 65 65 0a 2a  ufficient free.*
28b80 2a 20 6d 65 6d 6f 72 79 2c 20 69 74 20 72 65 74  * memory, it ret
28b90 75 72 6e 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  urns a NULL poin
28ba0 74 65 72 2e 20 20 5e 49 66 20 74 68 65 20 70 61  ter.  ^If the pa
28bb0 72 61 6d 65 74 65 72 20 4e 20 74 6f 0a 2a 2a 20  rameter N to.** 
28bc0 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
28bd0 20 69 73 20 7a 65 72 6f 20 6f 72 20 6e 65 67 61   is zero or nega
28be0 74 69 76 65 20 74 68 65 6e 20 73 71 6c 69 74 65  tive then sqlite
28bf0 33 5f 6d 61 6c 6c 6f 63 28 29 20 72 65 74 75 72  3_malloc() retur
28c00 6e 73 0a 2a 2a 20 61 20 4e 55 4c 4c 20 70 6f 69  ns.** a NULL poi
28c10 6e 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  nter..**.** ^The
28c20 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36   sqlite3_malloc6
28c30 34 28 4e 29 20 72 6f 75 74 69 6e 65 20 77 6f 72  4(N) routine wor
28c40 6b 73 20 6a 75 73 74 20 6c 69 6b 65 0a 2a 2a 20  ks just like.** 
28c50 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 4e  sqlite3_malloc(N
28c60 29 20 65 78 63 65 70 74 20 74 68 61 74 20 4e 20  ) except that N 
28c70 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 36  is an unsigned 6
28c80 34 2d 62 69 74 20 69 6e 74 65 67 65 72 20 69 6e  4-bit integer in
28c90 73 74 65 61 64 0a 2a 2a 20 6f 66 20 61 20 73 69  stead.** of a si
28ca0 67 6e 65 64 20 33 32 2d 62 69 74 20 69 6e 74 65  gned 32-bit inte
28cb0 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c  ger..**.** ^Call
28cc0 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72 65 65  ing sqlite3_free
28cd0 28 29 20 77 69 74 68 20 61 20 70 6f 69 6e 74 65  () with a pointe
28ce0 72 20 70 72 65 76 69 6f 75 73 6c 79 20 72 65 74  r previously ret
28cf0 75 72 6e 65 64 0a 2a 2a 20 62 79 20 73 71 6c 69  urned.** by sqli
28d00 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72 20  te3_malloc() or 
28d10 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
28d20 29 20 72 65 6c 65 61 73 65 73 20 74 68 61 74 20  ) releases that 
28d30 6d 65 6d 6f 72 79 20 73 6f 0a 2a 2a 20 74 68 61  memory so.** tha
28d40 74 20 69 74 20 6d 69 67 68 74 20 62 65 20 72 65  t it might be re
28d50 75 73 65 64 2e 20 20 5e 54 68 65 20 73 71 6c 69  used.  ^The sqli
28d60 74 65 33 5f 66 72 65 65 28 29 20 72 6f 75 74 69  te3_free() routi
28d70 6e 65 20 69 73 0a 2a 2a 20 61 20 6e 6f 2d 6f 70  ne is.** a no-op
28d80 20 69 66 20 69 73 20 63 61 6c 6c 65 64 20 77 69   if is called wi
28d90 74 68 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  th a NULL pointe
28da0 72 2e 20 20 50 61 73 73 69 6e 67 20 61 20 4e 55  r.  Passing a NU
28db0 4c 4c 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f  LL pointer.** to
28dc0 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
28dd0 69 73 20 68 61 72 6d 6c 65 73 73 2e 20 20 41 66  is harmless.  Af
28de0 74 65 72 20 62 65 69 6e 67 20 66 72 65 65 64 2c  ter being freed,
28df0 20 6d 65 6d 6f 72 79 0a 2a 2a 20 73 68 6f 75 6c   memory.** shoul
28e00 64 20 6e 65 69 74 68 65 72 20 62 65 20 72 65 61  d neither be rea
28e10 64 20 6e 6f 72 20 77 72 69 74 74 65 6e 2e 20 20  d nor written.  
28e20 45 76 65 6e 20 72 65 61 64 69 6e 67 20 70 72 65  Even reading pre
28e30 76 69 6f 75 73 6c 79 20 66 72 65 65 64 0a 2a 2a  viously freed.**
28e40 20 6d 65 6d 6f 72 79 20 6d 69 67 68 74 20 72 65   memory might re
28e50 73 75 6c 74 20 69 6e 20 61 20 73 65 67 6d 65 6e  sult in a segmen
28e60 74 61 74 69 6f 6e 20 66 61 75 6c 74 20 6f 72 20  tation fault or 
28e70 6f 74 68 65 72 20 73 65 76 65 72 65 20 65 72 72  other severe err
28e80 6f 72 2e 0a 2a 2a 20 4d 65 6d 6f 72 79 20 63 6f  or..** Memory co
28e90 72 72 75 70 74 69 6f 6e 2c 20 61 20 73 65 67 6d  rruption, a segm
28ea0 65 6e 74 61 74 69 6f 6e 20 66 61 75 6c 74 2c 20  entation fault, 
28eb0 6f 72 20 6f 74 68 65 72 20 73 65 76 65 72 65 20  or other severe 
28ec0 65 72 72 6f 72 0a 2a 2a 20 6d 69 67 68 74 20 72  error.** might r
28ed0 65 73 75 6c 74 20 69 66 20 73 71 6c 69 74 65 33  esult if sqlite3
28ee0 5f 66 72 65 65 28 29 20 69 73 20 63 61 6c 6c 65  _free() is calle
28ef0 64 20 77 69 74 68 20 61 20 6e 6f 6e 2d 4e 55 4c  d with a non-NUL
28f00 4c 20 70 6f 69 6e 74 65 72 20 74 68 61 74 0a 2a  L pointer that.*
28f10 2a 20 77 61 73 20 6e 6f 74 20 6f 62 74 61 69 6e  * was not obtain
28f20 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  ed from sqlite3_
28f30 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 73 71 6c 69  malloc() or sqli
28f40 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 2e 0a 2a  te3_realloc()..*
28f50 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
28f60 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 69  3_realloc(X,N) i
28f70 6e 74 65 72 66 61 63 65 20 61 74 74 65 6d 70 74  nterface attempt
28f80 73 20 74 6f 20 72 65 73 69 7a 65 20 61 0a 2a 2a  s to resize a.**
28f90 20 70 72 69 6f 72 20 6d 65 6d 6f 72 79 20 61 6c   prior memory al
28fa0 6c 6f 63 61 74 69 6f 6e 20 58 20 74 6f 20 62 65  location X to be
28fb0 20 61 74 20 6c 65 61 73 74 20 4e 20 62 79 74 65   at least N byte
28fc0 73 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 58 20  s..** ^If the X 
28fd0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c  parameter to sql
28fe0 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e  ite3_realloc(X,N
28ff0 29 0a 2a 2a 20 69 73 20 61 20 4e 55 4c 4c 20 70  ).** is a NULL p
29000 6f 69 6e 74 65 72 20 74 68 65 6e 20 69 74 73 20  ointer then its 
29010 62 65 68 61 76 69 6f 72 20 69 73 20 69 64 65 6e  behavior is iden
29020 74 69 63 61 6c 20 74 6f 20 63 61 6c 6c 69 6e 67  tical to calling
29030 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  .** sqlite3_mall
29040 6f 63 28 4e 29 2e 0a 2a 2a 20 5e 49 66 20 74 68  oc(N)..** ^If th
29050 65 20 4e 20 70 61 72 61 6d 65 74 65 72 20 74 6f  e N parameter to
29060 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
29070 28 58 2c 4e 29 20 69 73 20 7a 65 72 6f 20 6f 72  (X,N) is zero or
29080 0a 2a 2a 20 6e 65 67 61 74 69 76 65 20 74 68 65  .** negative the
29090 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 69  n the behavior i
290a0 73 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 61  s exactly the sa
290b0 6d 65 20 61 73 20 63 61 6c 6c 69 6e 67 0a 2a 2a  me as calling.**
290c0 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 58 29   sqlite3_free(X)
290d0 2e 0a 2a 2a 20 5e 73 71 6c 69 74 65 33 5f 72 65  ..** ^sqlite3_re
290e0 61 6c 6c 6f 63 28 58 2c 4e 29 20 72 65 74 75 72  alloc(X,N) retur
290f0 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  ns a pointer to 
29100 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  a memory allocat
29110 69 6f 6e 0a 2a 2a 20 6f 66 20 61 74 20 6c 65 61  ion.** of at lea
29120 73 74 20 4e 20 62 79 74 65 73 20 69 6e 20 73 69  st N bytes in si
29130 7a 65 20 6f 72 20 4e 55 4c 4c 20 69 66 20 69 6e  ze or NULL if in
29140 73 75 66 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72  sufficient memor
29150 79 20 69 73 20 61 76 61 69 6c 61 62 6c 65 2e 0a  y is available..
29160 2a 2a 20 5e 49 66 20 4d 20 69 73 20 74 68 65 20  ** ^If M is the 
29170 73 69 7a 65 20 6f 66 20 74 68 65 20 70 72 69 6f  size of the prio
29180 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 74 68  r allocation, th
29190 65 6e 20 6d 69 6e 28 4e 2c 4d 29 20 62 79 74 65  en min(N,M) byte
291a0 73 0a 2a 2a 20 6f 66 20 74 68 65 20 70 72 69 6f  s.** of the prio
291b0 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 61 72 65  r allocation are
291c0 20 63 6f 70 69 65 64 20 69 6e 74 6f 20 74 68 65   copied into the
291d0 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 62 75   beginning of bu
291e0 66 66 65 72 20 72 65 74 75 72 6e 65 64 0a 2a 2a  ffer returned.**
291f0 20 62 79 20 73 71 6c 69 74 65 33 5f 72 65 61 6c   by sqlite3_real
29200 6c 6f 63 28 58 2c 4e 29 20 61 6e 64 20 74 68 65  loc(X,N) and the
29210 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f   prior allocatio
29220 6e 20 69 73 20 66 72 65 65 64 2e 0a 2a 2a 20 5e  n is freed..** ^
29230 49 66 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  If sqlite3_reall
29240 6f 63 28 58 2c 4e 29 20 72 65 74 75 72 6e 73 20  oc(X,N) returns 
29250 4e 55 4c 4c 20 61 6e 64 20 4e 20 69 73 20 70 6f  NULL and N is po
29260 73 69 74 69 76 65 2c 20 74 68 65 6e 20 74 68 65  sitive, then the
29270 0a 2a 2a 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61  .** prior alloca
29280 74 69 6f 6e 20 69 73 20 6e 6f 74 20 66 72 65 65  tion is not free
29290 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  d..**.** ^The sq
292a0 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28  lite3_realloc64(
292b0 58 2c 4e 29 20 69 6e 74 65 72 66 61 63 65 73 20  X,N) interfaces 
292c0 77 6f 72 6b 73 20 74 68 65 20 73 61 6d 65 20 61  works the same a
292d0 73 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 72 65 61  s.** sqlite3_rea
292e0 6c 6c 6f 63 28 58 2c 4e 29 20 65 78 63 65 70 74  lloc(X,N) except
292f0 20 74 68 61 74 20 4e 20 69 73 20 61 20 36 34 2d   that N is a 64-
29300 62 69 74 20 75 6e 73 69 67 6e 65 64 20 69 6e 74  bit unsigned int
29310 65 67 65 72 20 69 6e 73 74 65 61 64 0a 2a 2a 20  eger instead.** 
29320 6f 66 20 61 20 33 32 2d 62 69 74 20 73 69 67 6e  of a 32-bit sign
29330 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 0a 2a  ed integer..**.*
29340 2a 20 5e 49 66 20 58 20 69 73 20 61 20 6d 65 6d  * ^If X is a mem
29350 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 70  ory allocation p
29360 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e  reviously obtain
29370 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  ed from sqlite3_
29380 6d 61 6c 6c 6f 63 28 29 2c 0a 2a 2a 20 73 71 6c  malloc(),.** sql
29390 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 29 2c  ite3_malloc64(),
293a0 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
293b0 28 29 2c 20 6f 72 20 73 71 6c 69 74 65 33 5f 72  (), or sqlite3_r
293c0 65 61 6c 6c 6f 63 36 34 28 29 2c 20 74 68 65 6e  ealloc64(), then
293d0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a  .** sqlite3_msiz
293e0 65 28 58 29 20 72 65 74 75 72 6e 73 20 74 68 65  e(X) returns the
293f0 20 73 69 7a 65 20 6f 66 20 74 68 61 74 20 6d 65   size of that me
29400 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
29410 69 6e 20 62 79 74 65 73 2e 0a 2a 2a 20 5e 54 68  in bytes..** ^Th
29420 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64  e value returned
29430 20 62 79 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a   by sqlite3_msiz
29440 65 28 58 29 20 6d 69 67 68 74 20 62 65 20 6c 61  e(X) might be la
29450 72 67 65 72 20 74 68 61 6e 20 74 68 65 20 6e 75  rger than the nu
29460 6d 62 65 72 0a 2a 2a 20 6f 66 20 62 79 74 65 73  mber.** of bytes
29470 20 72 65 71 75 65 73 74 65 64 20 77 68 65 6e 20   requested when 
29480 58 20 77 61 73 20 61 6c 6c 6f 63 61 74 65 64 2e  X was allocated.
29490 20 20 5e 49 66 20 58 20 69 73 20 61 20 4e 55 4c    ^If X is a NUL
294a0 4c 20 70 6f 69 6e 74 65 72 20 74 68 65 6e 0a 2a  L pointer then.*
294b0 2a 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28  * sqlite3_msize(
294c0 58 29 20 72 65 74 75 72 6e 73 20 7a 65 72 6f 2e  X) returns zero.
294d0 20 20 49 66 20 58 20 70 6f 69 6e 74 73 20 74 6f    If X points to
294e0 20 73 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20   something that 
294f0 69 73 20 6e 6f 74 0a 2a 2a 20 74 68 65 20 62 65  is not.** the be
29500 67 69 6e 6e 69 6e 67 20 6f 66 20 6d 65 6d 6f 72  ginning of memor
29510 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 6f 72  y allocation, or
29520 20 69 66 20 69 74 20 70 6f 69 6e 74 73 20 74 6f   if it points to
29530 20 61 20 66 6f 72 6d 65 72 6c 79 0a 2a 2a 20 76   a formerly.** v
29540 61 6c 69 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  alid memory allo
29550 63 61 74 69 6f 6e 20 74 68 61 74 20 68 61 73 20  cation that has 
29560 6e 6f 77 20 62 65 65 6e 20 66 72 65 65 64 2c 20  now been freed, 
29570 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f  then the behavio
29580 72 0a 2a 2a 20 6f 66 20 73 71 6c 69 74 65 33 5f  r.** of sqlite3_
29590 6d 73 69 7a 65 28 58 29 20 69 73 20 75 6e 64 65  msize(X) is unde
295a0 66 69 6e 65 64 20 61 6e 64 20 70 6f 73 73 69 62  fined and possib
295b0 6c 79 20 68 61 72 6d 66 75 6c 2e 0a 2a 2a 0a 2a  ly harmful..**.*
295c0 2a 20 5e 54 68 65 20 6d 65 6d 6f 72 79 20 72 65  * ^The memory re
295d0 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65  turned by sqlite
295e0 33 5f 6d 61 6c 6c 6f 63 28 29 2c 20 73 71 6c 69  3_malloc(), sqli
295f0 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 2c 0a 2a  te3_realloc(),.*
29600 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  * sqlite3_malloc
29610 36 34 28 29 2c 20 61 6e 64 20 73 71 6c 69 74 65  64(), and sqlite
29620 33 5f 72 65 61 6c 6c 6f 63 36 34 28 29 0a 2a 2a  3_realloc64().**
29630 20 69 73 20 61 6c 77 61 79 73 20 61 6c 69 67 6e   is always align
29640 65 64 20 74 6f 20 61 74 20 6c 65 61 73 74 20 61  ed to at least a
29650 6e 20 38 20 62 79 74 65 20 62 6f 75 6e 64 61 72  n 8 byte boundar
29660 79 2c 20 6f 72 20 74 6f 20 61 0a 2a 2a 20 34 20  y, or to a.** 4 
29670 62 79 74 65 20 62 6f 75 6e 64 61 72 79 20 69 66  byte boundary if
29680 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 34 5f 42   the [SQLITE_4_B
29690 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c  YTE_ALIGNED_MALL
296a0 4f 43 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  OC] compile-time
296b0 0a 2a 2a 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  .** option is us
296c0 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 53 51 4c  ed..**.** In SQL
296d0 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 35 2e  ite version 3.5.
296e0 30 20 61 6e 64 20 33 2e 35 2e 31 2c 20 69 74 20  0 and 3.5.1, it 
296f0 77 61 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20  was possible to 
29700 64 65 66 69 6e 65 0a 2a 2a 20 74 68 65 20 53 51  define.** the SQ
29710 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59  LITE_OMIT_MEMORY
29720 5f 41 4c 4c 4f 43 41 54 49 4f 4e 20 77 68 69 63  _ALLOCATION whic
29730 68 20 77 6f 75 6c 64 20 63 61 75 73 65 20 74 68  h would cause th
29740 65 20 62 75 69 6c 74 2d 69 6e 0a 2a 2a 20 69 6d  e built-in.** im
29750 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
29760 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 74  these routines t
29770 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 20 20 54  o be omitted.  T
29780 68 61 74 20 63 61 70 61 62 69 6c 69 74 79 0a 2a  hat capability.*
29790 2a 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 70  * is no longer p
297a0 72 6f 76 69 64 65 64 2e 20 20 4f 6e 6c 79 20 62  rovided.  Only b
297b0 75 69 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61  uilt-in memory a
297c0 6c 6c 6f 63 61 74 6f 72 73 20 63 61 6e 20 62 65  llocators can be
297d0 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 50 72 69   used..**.** Pri
297e0 6f 72 20 74 6f 20 53 51 4c 69 74 65 20 76 65 72  or to SQLite ver
297f0 73 69 6f 6e 20 33 2e 37 2e 31 30 2c 20 74 68 65  sion 3.7.10, the
29800 20 57 69 6e 64 6f 77 73 20 4f 53 20 69 6e 74 65   Windows OS inte
29810 72 66 61 63 65 20 6c 61 79 65 72 20 63 61 6c 6c  rface layer call
29820 65 64 0a 2a 2a 20 74 68 65 20 73 79 73 74 65 6d  ed.** the system
29830 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20 66 72   malloc() and fr
29840 65 65 28 29 20 64 69 72 65 63 74 6c 79 20 77 68  ee() directly wh
29850 65 6e 20 63 6f 6e 76 65 72 74 69 6e 67 0a 2a 2a  en converting.**
29860 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 74 77 65   filenames betwe
29870 65 6e 20 74 68 65 20 55 54 46 2d 38 20 65 6e 63  en the UTF-8 enc
29880 6f 64 69 6e 67 20 75 73 65 64 20 62 79 20 53 51  oding used by SQ
29890 4c 69 74 65 0a 2a 2a 20 61 6e 64 20 77 68 61 74  Lite.** and what
298a0 65 76 65 72 20 66 69 6c 65 6e 61 6d 65 20 65 6e  ever filename en
298b0 63 6f 64 69 6e 67 20 69 73 20 75 73 65 64 20 62  coding is used b
298c0 79 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72  y the particular
298d0 20 57 69 6e 64 6f 77 73 0a 2a 2a 20 69 6e 73 74   Windows.** inst
298e0 61 6c 6c 61 74 69 6f 6e 2e 20 20 4d 65 6d 6f 72  allation.  Memor
298f0 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 65 72 72  y allocation err
29900 6f 72 73 20 77 65 72 65 20 64 65 74 65 63 74 65  ors were detecte
29910 64 2c 20 62 75 74 0a 2a 2a 20 74 68 65 79 20 77  d, but.** they w
29920 65 72 65 20 72 65 70 6f 72 74 65 64 20 62 61 63  ere reported bac
29930 6b 20 61 73 20 5b 53 51 4c 49 54 45 5f 43 41 4e  k as [SQLITE_CAN
29940 54 4f 50 45 4e 5d 20 6f 72 0a 2a 2a 20 5b 53 51  TOPEN] or.** [SQ
29950 4c 49 54 45 5f 49 4f 45 52 52 5d 20 72 61 74 68  LITE_IOERR] rath
29960 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f  er than [SQLITE_
29970 4e 4f 4d 45 4d 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68  NOMEM]..**.** Th
29980 65 20 70 6f 69 6e 74 65 72 20 61 72 67 75 6d 65  e pointer argume
29990 6e 74 73 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  nts to [sqlite3_
299a0 66 72 65 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c  free()] and [sql
299b0 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 0a  ite3_realloc()].
299c0 2a 2a 20 6d 75 73 74 20 62 65 20 65 69 74 68 65  ** must be eithe
299d0 72 20 4e 55 4c 4c 20 6f 72 20 65 6c 73 65 20 70  r NULL or else p
299e0 6f 69 6e 74 65 72 73 20 6f 62 74 61 69 6e 65 64  ointers obtained
299f0 20 66 72 6f 6d 20 61 20 70 72 69 6f 72 0a 2a 2a   from a prior.**
29a00 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20 5b   invocation of [
29a10 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
29a20 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 72 65  ] or [sqlite3_re
29a30 61 6c 6c 6f 63 28 29 5d 20 74 68 61 74 20 68 61  alloc()] that ha
29a40 76 65 0a 2a 2a 20 6e 6f 74 20 79 65 74 20 62 65  ve.** not yet be
29a50 65 6e 20 72 65 6c 65 61 73 65 64 2e 0a 2a 2a 0a  en released..**.
29a60 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61 74 69  ** The applicati
29a70 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 72 65 61 64  on must not read
29a80 20 6f 72 20 77 72 69 74 65 20 61 6e 79 20 70 61   or write any pa
29a90 72 74 20 6f 66 0a 2a 2a 20 61 20 62 6c 6f 63 6b  rt of.** a block
29aa0 20 6f 66 20 6d 65 6d 6f 72 79 20 61 66 74 65 72   of memory after
29ab0 20 69 74 20 68 61 73 20 62 65 65 6e 20 72 65 6c   it has been rel
29ac0 65 61 73 65 64 20 75 73 69 6e 67 0a 2a 2a 20 5b  eased using.** [
29ad0 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 20  sqlite3_free()] 
29ae0 6f 72 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c  or [sqlite3_real
29af0 6c 6f 63 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54  loc()]..*/.SQLIT
29b00 45 5f 41 50 49 20 76 6f 69 64 20 2a 73 71 6c 69  E_API void *sqli
29b10 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74 29 3b  te3_malloc(int);
29b20 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64  .SQLITE_API void
29b30 20 2a 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   *sqlite3_malloc
29b40 36 34 28 73 71 6c 69 74 65 33 5f 75 69 6e 74 36  64(sqlite3_uint6
29b50 34 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 76  4);.SQLITE_API v
29b60 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 72 65 61  oid *sqlite3_rea
29b70 6c 6c 6f 63 28 76 6f 69 64 2a 2c 20 69 6e 74 29  lloc(void*, int)
29b80 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69  ;.SQLITE_API voi
29b90 64 20 2a 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  d *sqlite3_reall
29ba0 6f 63 36 34 28 76 6f 69 64 2a 2c 20 73 71 6c 69  oc64(void*, sqli
29bb0 74 65 33 5f 75 69 6e 74 36 34 29 3b 0a 53 51 4c  te3_uint64);.SQL
29bc0 49 54 45 5f 41 50 49 20 76 6f 69 64 20 73 71 6c  ITE_API void sql
29bd0 69 74 65 33 5f 66 72 65 65 28 76 6f 69 64 2a 29  ite3_free(void*)
29be0 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c  ;.SQLITE_API sql
29bf0 69 74 65 33 5f 75 69 6e 74 36 34 20 73 71 6c 69  ite3_uint64 sqli
29c00 74 65 33 5f 6d 73 69 7a 65 28 76 6f 69 64 2a 29  te3_msize(void*)
29c10 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
29c20 46 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61  F: Memory Alloca
29c30 74 6f 72 20 53 74 61 74 69 73 74 69 63 73 0a 2a  tor Statistics.*
29c40 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 70 72 6f 76  *.** SQLite prov
29c50 69 64 65 73 20 74 68 65 73 65 20 74 77 6f 20 69  ides these two i
29c60 6e 74 65 72 66 61 63 65 73 20 66 6f 72 20 72 65  nterfaces for re
29c70 70 6f 72 74 69 6e 67 20 6f 6e 20 74 68 65 20 73  porting on the s
29c80 74 61 74 75 73 0a 2a 2a 20 6f 66 20 74 68 65 20  tatus.** of the 
29c90 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
29ca0 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  )], [sqlite3_fre
29cb0 65 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74  e()], and [sqlit
29cc0 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 0a 2a 2a  e3_realloc()].**
29cd0 20 72 6f 75 74 69 6e 65 73 2c 20 77 68 69 63 68   routines, which
29ce0 20 66 6f 72 6d 20 74 68 65 20 62 75 69 6c 74 2d   form the built-
29cf0 69 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  in memory alloca
29d00 74 69 6f 6e 20 73 75 62 73 79 73 74 65 6d 2e 0a  tion subsystem..
29d10 2a 2a 0a 2a 2a 20 5e 54 68 65 20 5b 73 71 6c 69  **.** ^The [sqli
29d20 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28  te3_memory_used(
29d30 29 5d 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72  )] routine retur
29d40 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ns the number of
29d50 20 62 79 74 65 73 0a 2a 2a 20 6f 66 20 6d 65 6d   bytes.** of mem
29d60 6f 72 79 20 63 75 72 72 65 6e 74 6c 79 20 6f 75  ory currently ou
29d70 74 73 74 61 6e 64 69 6e 67 20 28 6d 61 6c 6c 6f  tstanding (mallo
29d80 63 65 64 20 62 75 74 20 6e 6f 74 20 66 72 65 65  ced but not free
29d90 64 29 2e 0a 2a 2a 20 5e 54 68 65 20 5b 73 71 6c  d)..** ^The [sql
29da0 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
29db0 77 61 74 65 72 28 29 5d 20 72 6f 75 74 69 6e 65  water()] routine
29dc0 20 72 65 74 75 72 6e 73 20 74 68 65 20 6d 61 78   returns the max
29dd0 69 6d 75 6d 0a 2a 2a 20 76 61 6c 75 65 20 6f 66  imum.** value of
29de0 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
29df0 5f 75 73 65 64 28 29 5d 20 73 69 6e 63 65 20 74  _used()] since t
29e00 68 65 20 68 69 67 68 2d 77 61 74 65 72 20 6d 61  he high-water ma
29e10 72 6b 0a 2a 2a 20 77 61 73 20 6c 61 73 74 20 72  rk.** was last r
29e20 65 73 65 74 2e 20 20 5e 54 68 65 20 76 61 6c 75  eset.  ^The valu
29e30 65 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 5b  es returned by [
29e40 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
29e50 73 65 64 28 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73  sed()] and.** [s
29e60 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
29e70 67 68 77 61 74 65 72 28 29 5d 20 69 6e 63 6c 75  ghwater()] inclu
29e80 64 65 20 61 6e 79 20 6f 76 65 72 68 65 61 64 0a  de any overhead.
29e90 2a 2a 20 61 64 64 65 64 20 62 79 20 53 51 4c 69  ** added by SQLi
29ea0 74 65 20 69 6e 20 69 74 73 20 69 6d 70 6c 65 6d  te in its implem
29eb0 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 73 71 6c  entation of [sql
29ec0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2c 0a  ite3_malloc()],.
29ed0 2a 2a 20 62 75 74 20 6e 6f 74 20 6f 76 65 72 68  ** but not overh
29ee0 65 61 64 20 61 64 64 65 64 20 62 79 20 74 68 65  ead added by the
29ef0 20 61 6e 79 20 75 6e 64 65 72 6c 79 69 6e 67 20   any underlying 
29f00 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79 0a 2a  system library.*
29f10 2a 20 72 6f 75 74 69 6e 65 73 20 74 68 61 74 20  * routines that 
29f20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
29f30 29 5d 20 6d 61 79 20 63 61 6c 6c 2e 0a 2a 2a 0a  )] may call..**.
29f40 2a 2a 20 5e 54 68 65 20 6d 65 6d 6f 72 79 20 68  ** ^The memory h
29f50 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b 20 69  igh-water mark i
29f60 73 20 72 65 73 65 74 20 74 6f 20 74 68 65 20 63  s reset to the c
29f70 75 72 72 65 6e 74 20 76 61 6c 75 65 20 6f 66 0a  urrent value of.
29f80 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ** [sqlite3_memo
29f90 72 79 5f 75 73 65 64 28 29 5d 20 69 66 20 61 6e  ry_used()] if an
29fa0 64 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 70 61  d only if the pa
29fb0 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 5b 73  rameter to.** [s
29fc0 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
29fd0 67 68 77 61 74 65 72 28 29 5d 20 69 73 20 74 72  ghwater()] is tr
29fe0 75 65 2e 20 20 5e 54 68 65 20 76 61 6c 75 65 20  ue.  ^The value 
29ff0 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62 79 20 5b  returned.** by [
2a000 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68  sqlite3_memory_h
2a010 69 67 68 77 61 74 65 72 28 31 29 5d 20 69 73 20  ighwater(1)] is 
2a020 74 68 65 20 68 69 67 68 2d 77 61 74 65 72 20 6d  the high-water m
2a030 61 72 6b 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20  ark.** prior to 
2a040 74 68 65 20 72 65 73 65 74 2e 0a 2a 2f 0a 53 51  the reset..*/.SQ
2a050 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33  LITE_API sqlite3
2a060 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 6d  _int64 sqlite3_m
2a070 65 6d 6f 72 79 5f 75 73 65 64 28 76 6f 69 64 29  emory_used(void)
2a080 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c  ;.SQLITE_API sql
2a090 69 74 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74  ite3_int64 sqlit
2a0a0 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
2a0b0 74 65 72 28 69 6e 74 20 72 65 73 65 74 46 6c 61  ter(int resetFla
2a0c0 67 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  g);../*.** CAPI3
2a0d0 52 45 46 3a 20 50 73 65 75 64 6f 2d 52 61 6e 64  REF: Pseudo-Rand
2a0e0 6f 6d 20 4e 75 6d 62 65 72 20 47 65 6e 65 72 61  om Number Genera
2a0f0 74 6f 72 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65  tor.**.** SQLite
2a100 20 63 6f 6e 74 61 69 6e 73 20 61 20 68 69 67 68   contains a high
2a110 2d 71 75 61 6c 69 74 79 20 70 73 65 75 64 6f 2d  -quality pseudo-
2a120 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20 67 65  random number ge
2a130 6e 65 72 61 74 6f 72 20 28 50 52 4e 47 29 20 75  nerator (PRNG) u
2a140 73 65 64 20 74 6f 0a 2a 2a 20 73 65 6c 65 63 74  sed to.** select
2a150 20 72 61 6e 64 6f 6d 20 5b 52 4f 57 49 44 20 7c   random [ROWID |
2a160 20 52 4f 57 49 44 73 5d 20 77 68 65 6e 20 69 6e   ROWIDs] when in
2a170 73 65 72 74 69 6e 67 20 6e 65 77 20 72 65 63 6f  serting new reco
2a180 72 64 73 20 69 6e 74 6f 20 61 20 74 61 62 6c 65  rds into a table
2a190 20 74 68 61 74 0a 2a 2a 20 61 6c 72 65 61 64 79   that.** already
2a1a0 20 75 73 65 73 20 74 68 65 20 6c 61 72 67 65 73   uses the larges
2a1b0 74 20 70 6f 73 73 69 62 6c 65 20 5b 52 4f 57 49  t possible [ROWI
2a1c0 44 5d 2e 20 20 54 68 65 20 50 52 4e 47 20 69 73  D].  The PRNG is
2a1d0 20 61 6c 73 6f 20 75 73 65 64 20 66 6f 72 0a 2a   also used for.*
2a1e0 2a 20 74 68 65 20 62 75 69 6c 64 2d 69 6e 20 72  * the build-in r
2a1f0 61 6e 64 6f 6d 28 29 20 61 6e 64 20 72 61 6e 64  andom() and rand
2a200 6f 6d 62 6c 6f 62 28 29 20 53 51 4c 20 66 75 6e  omblob() SQL fun
2a210 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20 69 6e  ctions.  This in
2a220 74 65 72 66 61 63 65 20 61 6c 6c 6f 77 73 0a 2a  terface allows.*
2a230 2a 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74  * applications t
2a240 6f 20 61 63 63 65 73 73 20 74 68 65 20 73 61 6d  o access the sam
2a250 65 20 50 52 4e 47 20 66 6f 72 20 6f 74 68 65 72  e PRNG for other
2a260 20 70 75 72 70 6f 73 65 73 2e 0a 2a 2a 0a 2a 2a   purposes..**.**
2a270 20 5e 41 20 63 61 6c 6c 20 74 6f 20 74 68 69 73   ^A call to this
2a280 20 72 6f 75 74 69 6e 65 20 73 74 6f 72 65 73 20   routine stores 
2a290 4e 20 62 79 74 65 73 20 6f 66 20 72 61 6e 64 6f  N bytes of rando
2a2a0 6d 6e 65 73 73 20 69 6e 74 6f 20 62 75 66 66 65  mness into buffe
2a2b0 72 20 50 2e 0a 2a 2a 20 5e 54 68 65 20 50 20 70  r P..** ^The P p
2a2c0 61 72 61 6d 65 74 65 72 20 63 61 6e 20 62 65 20  arameter can be 
2a2d0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a  a NULL pointer..
2a2e0 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 69 73 20 72  **.** ^If this r
2a2f0 6f 75 74 69 6e 65 20 68 61 73 20 6e 6f 74 20 62  outine has not b
2a300 65 65 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 63  een previously c
2a310 61 6c 6c 65 64 20 6f 72 20 69 66 20 74 68 65 20  alled or if the 
2a320 70 72 65 76 69 6f 75 73 0a 2a 2a 20 63 61 6c 6c  previous.** call
2a330 20 68 61 64 20 4e 20 6c 65 73 73 20 74 68 61 6e   had N less than
2a340 20 6f 6e 65 20 6f 72 20 61 20 4e 55 4c 4c 20 70   one or a NULL p
2a350 6f 69 6e 74 65 72 20 66 6f 72 20 50 2c 20 74 68  ointer for P, th
2a360 65 6e 20 74 68 65 20 50 52 4e 47 20 69 73 0a 2a  en the PRNG is.*
2a370 2a 20 73 65 65 64 65 64 20 75 73 69 6e 67 20 72  * seeded using r
2a380 61 6e 64 6f 6d 6e 65 73 73 20 6f 62 74 61 69 6e  andomness obtain
2a390 65 64 20 66 72 6f 6d 20 74 68 65 20 78 52 61 6e  ed from the xRan
2a3a0 64 6f 6d 6e 65 73 73 20 6d 65 74 68 6f 64 20 6f  domness method o
2a3b0 66 0a 2a 2a 20 74 68 65 20 64 65 66 61 75 6c 74  f.** the default
2a3c0 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f   [sqlite3_vfs] o
2a3d0 62 6a 65 63 74 2e 0a 2a 2a 20 5e 49 66 20 74 68  bject..** ^If th
2a3e0 65 20 70 72 65 76 69 6f 75 73 20 63 61 6c 6c 20  e previous call 
2a3f0 74 6f 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  to this routine 
2a400 68 61 64 20 61 6e 20 4e 20 6f 66 20 31 20 6f 72  had an N of 1 or
2a410 20 6d 6f 72 65 20 61 6e 64 20 61 0a 2a 2a 20 6e   more and a.** n
2a420 6f 6e 2d 4e 55 4c 4c 20 50 20 74 68 65 6e 20 74  on-NULL P then t
2a430 68 65 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d  he pseudo-random
2a440 6e 65 73 73 20 69 73 20 67 65 6e 65 72 61 74 65  ness is generate
2a450 64 0a 2a 2a 20 69 6e 74 65 72 6e 61 6c 6c 79 20  d.** internally 
2a460 61 6e 64 20 77 69 74 68 6f 75 74 20 72 65 63 6f  and without reco
2a470 75 72 73 65 20 74 6f 20 74 68 65 20 5b 73 71 6c  urse to the [sql
2a480 69 74 65 33 5f 76 66 73 5d 20 78 52 61 6e 64 6f  ite3_vfs] xRando
2a490 6d 6e 65 73 73 0a 2a 2a 20 6d 65 74 68 6f 64 2e  mness.** method.
2a4a0 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 76  .*/.SQLITE_API v
2a4b0 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 61 6e 64  oid sqlite3_rand
2a4c0 6f 6d 6e 65 73 73 28 69 6e 74 20 4e 2c 20 76 6f  omness(int N, vo
2a4d0 69 64 20 2a 50 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  id *P);../*.** C
2a4e0 41 50 49 33 52 45 46 3a 20 43 6f 6d 70 69 6c 65  API3REF: Compile
2a4f0 2d 54 69 6d 65 20 41 75 74 68 6f 72 69 7a 61 74  -Time Authorizat
2a500 69 6f 6e 20 43 61 6c 6c 62 61 63 6b 73 0a 2a 2a  ion Callbacks.**
2a510 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
2a520 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 61  .** KEYWORDS: {a
2a530 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
2a540 63 6b 7d 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20  ck}.**.** ^This 
2a550 72 6f 75 74 69 6e 65 20 72 65 67 69 73 74 65 72  routine register
2a560 73 20 61 6e 20 61 75 74 68 6f 72 69 7a 65 72 20  s an authorizer 
2a570 63 61 6c 6c 62 61 63 6b 20 77 69 74 68 20 61 20  callback with a 
2a580 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a 20 5b 64  particular.** [d
2a590 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2a5a0 6f 6e 5d 2c 20 73 75 70 70 6c 69 65 64 20 69 6e  on], supplied in
2a5b0 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
2a5c0 65 6e 74 2e 0a 2a 2a 20 5e 54 68 65 20 61 75 74  ent..** ^The aut
2a5d0 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b  horizer callback
2a5e0 20 69 73 20 69 6e 76 6f 6b 65 64 20 61 73 20 53   is invoked as S
2a5f0 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72  QL statements ar
2a600 65 20 62 65 69 6e 67 20 63 6f 6d 70 69 6c 65 64  e being compiled
2a610 0a 2a 2a 20 62 79 20 5b 73 71 6c 69 74 65 33 5f  .** by [sqlite3_
2a620 70 72 65 70 61 72 65 28 29 5d 20 6f 72 20 69 74  prepare()] or it
2a630 73 20 76 61 72 69 61 6e 74 73 20 5b 73 71 6c 69  s variants [sqli
2a640 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
2a650 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70  ],.** [sqlite3_p
2a660 72 65 70 61 72 65 5f 76 33 28 29 5d 2c 20 5b 73  repare_v3()], [s
2a670 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
2a680 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72  ()], [sqlite3_pr
2a690 65 70 61 72 65 31 36 5f 76 32 28 29 5d 2c 0a 2a  epare16_v2()],.*
2a6a0 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70  * and [sqlite3_p
2a6b0 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d 2e 20  repare16_v3()]. 
2a6c0 20 5e 41 74 20 76 61 72 69 6f 75 73 0a 2a 2a 20   ^At various.** 
2a6d0 70 6f 69 6e 74 73 20 64 75 72 69 6e 67 20 74 68  points during th
2a6e0 65 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 70 72  e compilation pr
2a6f0 6f 63 65 73 73 2c 20 61 73 20 6c 6f 67 69 63 20  ocess, as logic 
2a700 69 73 20 62 65 69 6e 67 20 63 72 65 61 74 65 64  is being created
2a710 0a 2a 2a 20 74 6f 20 70 65 72 66 6f 72 6d 20 76  .** to perform v
2a720 61 72 69 6f 75 73 20 61 63 74 69 6f 6e 73 2c 20  arious actions, 
2a730 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63  the authorizer c
2a740 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
2a750 65 64 20 74 6f 0a 2a 2a 20 73 65 65 20 69 66 20  ed to.** see if 
2a760 74 68 6f 73 65 20 61 63 74 69 6f 6e 73 20 61 72  those actions ar
2a770 65 20 61 6c 6c 6f 77 65 64 2e 20 20 5e 54 68 65  e allowed.  ^The
2a780 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
2a790 62 61 63 6b 20 73 68 6f 75 6c 64 0a 2a 2a 20 72  back should.** r
2a7a0 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b  eturn [SQLITE_OK
2a7b0 5d 20 74 6f 20 61 6c 6c 6f 77 20 74 68 65 20 61  ] to allow the a
2a7c0 63 74 69 6f 6e 2c 20 5b 53 51 4c 49 54 45 5f 49  ction, [SQLITE_I
2a7d0 47 4e 4f 52 45 5d 20 74 6f 20 64 69 73 61 6c 6c  GNORE] to disall
2a7e0 6f 77 20 74 68 65 0a 2a 2a 20 73 70 65 63 69 66  ow the.** specif
2a7f0 69 63 20 61 63 74 69 6f 6e 20 62 75 74 20 61 6c  ic action but al
2a800 6c 6f 77 20 74 68 65 20 53 51 4c 20 73 74 61 74  low the SQL stat
2a810 65 6d 65 6e 74 20 74 6f 20 63 6f 6e 74 69 6e 75  ement to continu
2a820 65 20 74 6f 20 62 65 0a 2a 2a 20 63 6f 6d 70 69  e to be.** compi
2a830 6c 65 64 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f  led, or [SQLITE_
2a840 44 45 4e 59 5d 20 74 6f 20 63 61 75 73 65 20 74  DENY] to cause t
2a850 68 65 20 65 6e 74 69 72 65 20 53 51 4c 20 73 74  he entire SQL st
2a860 61 74 65 6d 65 6e 74 20 74 6f 20 62 65 0a 2a 2a  atement to be.**
2a870 20 72 65 6a 65 63 74 65 64 20 77 69 74 68 20 61   rejected with a
2a880 6e 20 65 72 72 6f 72 2e 20 20 5e 49 66 20 74 68  n error.  ^If th
2a890 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  e authorizer cal
2a8a0 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 0a 2a 2a  lback returns.**
2a8b0 20 61 6e 79 20 76 61 6c 75 65 20 6f 74 68 65 72   any value other
2a8c0 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 49 47   than [SQLITE_IG
2a8d0 4e 4f 52 45 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f  NORE], [SQLITE_O
2a8e0 4b 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 44  K], or [SQLITE_D
2a8f0 45 4e 59 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65  ENY].** then the
2a900 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
2a910 65 5f 76 32 28 29 5d 20 6f 72 20 65 71 75 69 76  e_v2()] or equiv
2a920 61 6c 65 6e 74 20 63 61 6c 6c 20 74 68 61 74 20  alent call that 
2a930 74 72 69 67 67 65 72 65 64 0a 2a 2a 20 74 68 65  triggered.** the
2a940 20 61 75 74 68 6f 72 69 7a 65 72 20 77 69 6c 6c   authorizer will
2a950 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20 65 72   fail with an er
2a960 72 6f 72 20 6d 65 73 73 61 67 65 2e 0a 2a 2a 0a  ror message..**.
2a970 2a 2a 20 57 68 65 6e 20 74 68 65 20 63 61 6c 6c  ** When the call
2a980 62 61 63 6b 20 72 65 74 75 72 6e 73 20 5b 53 51  back returns [SQ
2a990 4c 49 54 45 5f 4f 4b 5d 2c 20 74 68 61 74 20 6d  LITE_OK], that m
2a9a0 65 61 6e 73 20 74 68 65 20 6f 70 65 72 61 74 69  eans the operati
2a9b0 6f 6e 0a 2a 2a 20 72 65 71 75 65 73 74 65 64 20  on.** requested 
2a9c0 69 73 20 6f 6b 2e 20 20 5e 57 68 65 6e 20 74 68  is ok.  ^When th
2a9d0 65 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72  e callback retur
2a9e0 6e 73 20 5b 53 51 4c 49 54 45 5f 44 45 4e 59 5d  ns [SQLITE_DENY]
2a9f0 2c 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65  , the.** [sqlite
2aa00 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20  3_prepare_v2()] 
2aa10 6f 72 20 65 71 75 69 76 61 6c 65 6e 74 20 63 61  or equivalent ca
2aa20 6c 6c 20 74 68 61 74 20 74 72 69 67 67 65 72 65  ll that triggere
2aa30 64 20 74 68 65 0a 2a 2a 20 61 75 74 68 6f 72 69  d the.** authori
2aa40 7a 65 72 20 77 69 6c 6c 20 66 61 69 6c 20 77 69  zer will fail wi
2aa50 74 68 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73  th an error mess
2aa60 61 67 65 20 65 78 70 6c 61 69 6e 69 6e 67 20 74  age explaining t
2aa70 68 61 74 0a 2a 2a 20 61 63 63 65 73 73 20 69 73  hat.** access is
2aa80 20 64 65 6e 69 65 64 2e 20 0a 2a 2a 0a 2a 2a 20   denied. .**.** 
2aa90 5e 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d  ^The first param
2aaa0 65 74 65 72 20 74 6f 20 74 68 65 20 61 75 74 68  eter to the auth
2aab0 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20  orizer callback 
2aac0 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  is a copy of the
2aad0 20 74 68 69 72 64 0a 2a 2a 20 70 61 72 61 6d 65   third.** parame
2aae0 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ter to the sqlit
2aaf0 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
2ab00 72 28 29 20 69 6e 74 65 72 66 61 63 65 2e 20 5e  r() interface. ^
2ab10 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
2ab20 65 74 65 72 0a 2a 2a 20 74 6f 20 74 68 65 20 63  eter.** to the c
2ab30 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20 69 6e  allback is an in
2ab40 74 65 67 65 72 20 5b 53 51 4c 49 54 45 5f 43 4f  teger [SQLITE_CO
2ab50 50 59 20 7c 20 61 63 74 69 6f 6e 20 63 6f 64 65  PY | action code
2ab60 5d 20 74 68 61 74 20 73 70 65 63 69 66 69 65 73  ] that specifies
2ab70 0a 2a 2a 20 74 68 65 20 70 61 72 74 69 63 75 6c  .** the particul
2ab80 61 72 20 61 63 74 69 6f 6e 20 74 6f 20 62 65 20  ar action to be 
2ab90 61 75 74 68 6f 72 69 7a 65 64 2e 20 5e 54 68 65  authorized. ^The
2aba0 20 74 68 69 72 64 20 74 68 72 6f 75 67 68 20 73   third through s
2abb0 69 78 74 68 20 70 61 72 61 6d 65 74 65 72 73 0a  ixth parameters.
2abc0 2a 2a 20 74 6f 20 74 68 65 20 63 61 6c 6c 62 61  ** to the callba
2abd0 63 6b 20 61 72 65 20 65 69 74 68 65 72 20 4e 55  ck are either NU
2abe0 4c 4c 20 70 6f 69 6e 74 65 72 73 20 6f 72 20 7a  LL pointers or z
2abf0 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 73  ero-terminated s
2ac00 74 72 69 6e 67 73 0a 2a 2a 20 74 68 61 74 20 63  trings.** that c
2ac10 6f 6e 74 61 69 6e 20 61 64 64 69 74 69 6f 6e 61  ontain additiona
2ac20 6c 20 64 65 74 61 69 6c 73 20 61 62 6f 75 74 20  l details about 
2ac30 74 68 65 20 61 63 74 69 6f 6e 20 74 6f 20 62 65  the action to be
2ac40 20 61 75 74 68 6f 72 69 7a 65 64 2e 0a 2a 2a 20   authorized..** 
2ac50 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73  Applications mus
2ac60 74 20 61 6c 77 61 79 73 20 62 65 20 70 72 65 70  t always be prep
2ac70 61 72 65 64 20 74 6f 20 65 6e 63 6f 75 6e 74 65  ared to encounte
2ac80 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  r a NULL pointer
2ac90 20 69 6e 20 61 6e 79 0a 2a 2a 20 6f 66 20 74 68   in any.** of th
2aca0 65 20 74 68 69 72 64 20 74 68 72 6f 75 67 68 20  e third through 
2acb0 74 68 65 20 73 69 78 74 68 20 70 61 72 61 6d 65  the sixth parame
2acc0 74 65 72 73 20 6f 66 20 74 68 65 20 61 75 74 68  ters of the auth
2acd0 6f 72 69 7a 61 74 69 6f 6e 20 63 61 6c 6c 62 61  orization callba
2ace0 63 6b 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68  ck..**.** ^If th
2acf0 65 20 61 63 74 69 6f 6e 20 63 6f 64 65 20 69 73  e action code is
2ad00 20 5b 53 51 4c 49 54 45 5f 52 45 41 44 5d 0a 2a   [SQLITE_READ].*
2ad10 2a 20 61 6e 64 20 74 68 65 20 63 61 6c 6c 62 61  * and the callba
2ad20 63 6b 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49  ck returns [SQLI
2ad30 54 45 5f 49 47 4e 4f 52 45 5d 20 74 68 65 6e 20  TE_IGNORE] then 
2ad40 74 68 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64  the.** [prepared
2ad50 20 73 74 61 74 65 6d 65 6e 74 5d 20 73 74 61 74   statement] stat
2ad60 65 6d 65 6e 74 20 69 73 20 63 6f 6e 73 74 72 75  ement is constru
2ad70 63 74 65 64 20 74 6f 20 73 75 62 73 74 69 74 75  cted to substitu
2ad80 74 65 0a 2a 2a 20 61 20 4e 55 4c 4c 20 76 61 6c  te.** a NULL val
2ad90 75 65 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 74  ue in place of t
2ada0 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20  he table column 
2adb0 74 68 61 74 20 77 6f 75 6c 64 20 68 61 76 65 0a  that would have.
2adc0 2a 2a 20 62 65 65 6e 20 72 65 61 64 20 69 66 20  ** been read if 
2add0 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 68 61 64 20  [SQLITE_OK] had 
2ade0 62 65 65 6e 20 72 65 74 75 72 6e 65 64 2e 20 20  been returned.  
2adf0 54 68 65 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f  The [SQLITE_IGNO
2ae00 52 45 5d 0a 2a 2a 20 72 65 74 75 72 6e 20 63 61  RE].** return ca
2ae10 6e 20 62 65 20 75 73 65 64 20 74 6f 20 64 65 6e  n be used to den
2ae20 79 20 61 6e 20 75 6e 74 72 75 73 74 65 64 20 75  y an untrusted u
2ae30 73 65 72 20 61 63 63 65 73 73 20 74 6f 20 69 6e  ser access to in
2ae40 64 69 76 69 64 75 61 6c 0a 2a 2a 20 63 6f 6c 75  dividual.** colu
2ae50 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65 2e 0a  mns of a table..
2ae60 2a 2a 20 5e 57 68 65 6e 20 61 20 74 61 62 6c 65  ** ^When a table
2ae70 20 69 73 20 72 65 66 65 72 65 6e 63 65 64 20 62   is referenced b
2ae80 79 20 61 20 5b 53 45 4c 45 43 54 5d 20 62 75 74  y a [SELECT] but
2ae90 20 6e 6f 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65   no column value
2aea0 73 20 61 72 65 0a 2a 2a 20 65 78 74 72 61 63 74  s are.** extract
2aeb0 65 64 20 66 72 6f 6d 20 74 68 61 74 20 74 61 62  ed from that tab
2aec0 6c 65 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 20  le (for example 
2aed0 69 6e 20 61 20 71 75 65 72 79 20 6c 69 6b 65 0a  in a query like.
2aee0 2a 2a 20 22 53 45 4c 45 43 54 20 63 6f 75 6e 74  ** "SELECT count
2aef0 28 2a 29 20 46 52 4f 4d 20 74 61 62 22 29 20 74  (*) FROM tab") t
2af00 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  hen the [SQLITE_
2af10 52 45 41 44 5d 20 61 75 74 68 6f 72 69 7a 65 72  READ] authorizer
2af20 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20   callback.** is 
2af30 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72  invoked once for
2af40 20 74 68 61 74 20 74 61 62 6c 65 20 77 69 74 68   that table with
2af50 20 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74   a column name t
2af60 68 61 74 20 69 73 20 61 6e 20 65 6d 70 74 79 20  hat is an empty 
2af70 73 74 72 69 6e 67 2e 0a 2a 2a 20 5e 49 66 20 74  string..** ^If t
2af80 68 65 20 61 63 74 69 6f 6e 20 63 6f 64 65 20 69  he action code i
2af90 73 20 5b 53 51 4c 49 54 45 5f 44 45 4c 45 54 45  s [SQLITE_DELETE
2afa0 5d 20 61 6e 64 20 74 68 65 20 63 61 6c 6c 62 61  ] and the callba
2afb0 63 6b 20 72 65 74 75 72 6e 73 0a 2a 2a 20 5b 53  ck returns.** [S
2afc0 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20 74 68  QLITE_IGNORE] th
2afd0 65 6e 20 74 68 65 20 5b 44 45 4c 45 54 45 5d 20  en the [DELETE] 
2afe0 6f 70 65 72 61 74 69 6f 6e 20 70 72 6f 63 65 65  operation procee
2aff0 64 73 20 62 75 74 20 74 68 65 0a 2a 2a 20 5b 74  ds but the.** [t
2b000 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69 7a 61  runcate optimiza
2b010 74 69 6f 6e 5d 20 69 73 20 64 69 73 61 62 6c 65  tion] is disable
2b020 64 20 61 6e 64 20 61 6c 6c 20 72 6f 77 73 20 61  d and all rows a
2b030 72 65 20 64 65 6c 65 74 65 64 20 69 6e 64 69 76  re deleted indiv
2b040 69 64 75 61 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 41  idually..**.** A
2b050 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 69 73 20  n authorizer is 
2b060 75 73 65 64 20 77 68 65 6e 20 5b 73 71 6c 69 74  used when [sqlit
2b070 65 33 5f 70 72 65 70 61 72 65 20 7c 20 70 72 65  e3_prepare | pre
2b080 70 61 72 69 6e 67 5d 0a 2a 2a 20 53 51 4c 20 73  paring].** SQL s
2b090 74 61 74 65 6d 65 6e 74 73 20 66 72 6f 6d 20 61  tatements from a
2b0a0 6e 20 75 6e 74 72 75 73 74 65 64 20 73 6f 75 72  n untrusted sour
2b0b0 63 65 2c 20 74 6f 20 65 6e 73 75 72 65 20 74 68  ce, to ensure th
2b0c0 61 74 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  at the SQL state
2b0d0 6d 65 6e 74 73 0a 2a 2a 20 64 6f 20 6e 6f 74 20  ments.** do not 
2b0e0 74 72 79 20 74 6f 20 61 63 63 65 73 73 20 64 61  try to access da
2b0f0 74 61 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20  ta they are not 
2b100 61 6c 6c 6f 77 65 64 20 74 6f 20 73 65 65 2c 20  allowed to see, 
2b110 6f 72 20 74 68 61 74 20 74 68 65 79 20 64 6f 20  or that they do 
2b120 6e 6f 74 0a 2a 2a 20 74 72 79 20 74 6f 20 65 78  not.** try to ex
2b130 65 63 75 74 65 20 6d 61 6c 69 63 69 6f 75 73 20  ecute malicious 
2b140 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74 20  statements that 
2b150 64 61 6d 61 67 65 20 74 68 65 20 64 61 74 61 62  damage the datab
2b160 61 73 65 2e 20 20 46 6f 72 0a 2a 2a 20 65 78 61  ase.  For.** exa
2b170 6d 70 6c 65 2c 20 61 6e 20 61 70 70 6c 69 63 61  mple, an applica
2b180 74 69 6f 6e 20 6d 61 79 20 61 6c 6c 6f 77 20 61  tion may allow a
2b190 20 75 73 65 72 20 74 6f 20 65 6e 74 65 72 20 61   user to enter a
2b1a0 72 62 69 74 72 61 72 79 0a 2a 2a 20 53 51 4c 20  rbitrary.** SQL 
2b1b0 71 75 65 72 69 65 73 20 66 6f 72 20 65 76 61 6c  queries for eval
2b1c0 75 61 74 69 6f 6e 20 62 79 20 61 20 64 61 74 61  uation by a data
2b1d0 62 61 73 65 2e 20 20 42 75 74 20 74 68 65 20 61  base.  But the a
2b1e0 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 65 73 0a  pplication does.
2b1f0 2a 2a 20 6e 6f 74 20 77 61 6e 74 20 74 68 65 20  ** not want the 
2b200 75 73 65 72 20 74 6f 20 62 65 20 61 62 6c 65 20  user to be able 
2b210 74 6f 20 6d 61 6b 65 20 61 72 62 69 74 72 61 72  to make arbitrar
2b220 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65  y changes to the
2b230 0a 2a 2a 20 64 61 74 61 62 61 73 65 2e 20 20 41  .** database.  A
2b240 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 63 6f 75  n authorizer cou
2b250 6c 64 20 74 68 65 6e 20 62 65 20 70 75 74 20 69  ld then be put i
2b260 6e 20 70 6c 61 63 65 20 77 68 69 6c 65 20 74 68  n place while th
2b270 65 0a 2a 2a 20 75 73 65 72 2d 65 6e 74 65 72 65  e.** user-entere
2b280 64 20 53 51 4c 20 69 73 20 62 65 69 6e 67 20 5b  d SQL is being [
2b290 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20  sqlite3_prepare 
2b2a0 7c 20 70 72 65 70 61 72 65 64 5d 20 74 68 61 74  | prepared] that
2b2b0 0a 2a 2a 20 64 69 73 61 6c 6c 6f 77 73 20 65 76  .** disallows ev
2b2c0 65 72 79 74 68 69 6e 67 20 65 78 63 65 70 74 20  erything except 
2b2d0 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65  [SELECT] stateme
2b2e0 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69  nts..**.** Appli
2b2f0 63 61 74 69 6f 6e 73 20 74 68 61 74 20 6e 65 65  cations that nee
2b300 64 20 74 6f 20 70 72 6f 63 65 73 73 20 53 51 4c  d to process SQL
2b310 20 66 72 6f 6d 20 75 6e 74 72 75 73 74 65 64 20   from untrusted 
2b320 73 6f 75 72 63 65 73 0a 2a 2a 20 6d 69 67 68 74  sources.** might
2b330 20 61 6c 73 6f 20 63 6f 6e 73 69 64 65 72 20 6c   also consider l
2b340 6f 77 65 72 69 6e 67 20 72 65 73 6f 75 72 63 65  owering resource
2b350 20 6c 69 6d 69 74 73 20 75 73 69 6e 67 20 5b 73   limits using [s
2b360 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 0a  qlite3_limit()].
2b370 2a 2a 20 61 6e 64 20 6c 69 6d 69 74 69 6e 67 20  ** and limiting 
2b380 64 61 74 61 62 61 73 65 20 73 69 7a 65 20 75 73  database size us
2b390 69 6e 67 20 74 68 65 20 5b 6d 61 78 5f 70 61 67  ing the [max_pag
2b3a0 65 5f 63 6f 75 6e 74 5d 20 5b 50 52 41 47 4d 41  e_count] [PRAGMA
2b3b0 5d 0a 2a 2a 20 69 6e 20 61 64 64 69 74 69 6f 6e  ].** in addition
2b3c0 20 74 6f 20 75 73 69 6e 67 20 61 6e 20 61 75 74   to using an aut
2b3d0 68 6f 72 69 7a 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e  horizer..**.** ^
2b3e0 28 4f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61  (Only a single a
2b3f0 75 74 68 6f 72 69 7a 65 72 20 63 61 6e 20 62 65  uthorizer can be
2b400 20 69 6e 20 70 6c 61 63 65 20 6f 6e 20 61 20 64   in place on a d
2b410 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2b420 6f 6e 0a 2a 2a 20 61 74 20 61 20 74 69 6d 65 2e  on.** at a time.
2b430 20 20 45 61 63 68 20 63 61 6c 6c 20 74 6f 20 73    Each call to s
2b440 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f  qlite3_set_autho
2b450 72 69 7a 65 72 20 6f 76 65 72 72 69 64 65 73 20  rizer overrides 
2b460 74 68 65 0a 2a 2a 20 70 72 65 76 69 6f 75 73 20  the.** previous 
2b470 63 61 6c 6c 2e 29 5e 20 20 5e 44 69 73 61 62 6c  call.)^  ^Disabl
2b480 65 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  e the authorizer
2b490 20 62 79 20 69 6e 73 74 61 6c 6c 69 6e 67 20 61   by installing a
2b4a0 20 4e 55 4c 4c 20 63 61 6c 6c 62 61 63 6b 2e 0a   NULL callback..
2b4b0 2a 2a 20 54 68 65 20 61 75 74 68 6f 72 69 7a 65  ** The authorize
2b4c0 72 20 69 73 20 64 69 73 61 62 6c 65 64 20 62 79  r is disabled by
2b4d0 20 64 65 66 61 75 6c 74 2e 0a 2a 2a 0a 2a 2a 20   default..**.** 
2b4e0 54 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63  The authorizer c
2b4f0 61 6c 6c 62 61 63 6b 20 6d 75 73 74 20 6e 6f 74  allback must not
2b500 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 74 68 61   do anything tha
2b510 74 20 77 69 6c 6c 20 6d 6f 64 69 66 79 0a 2a 2a  t will modify.**
2b520 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
2b530 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 69 6e  nnection that in
2b540 76 6f 6b 65 64 20 74 68 65 20 61 75 74 68 6f 72  voked the author
2b550 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a  izer callback..*
2b560 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b 73 71 6c  * Note that [sql
2b570 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
2b580 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
2b590 73 74 65 70 28 29 5d 20 62 6f 74 68 20 6d 6f 64  step()] both mod
2b5a0 69 66 79 20 74 68 65 69 72 0a 2a 2a 20 64 61 74  ify their.** dat
2b5b0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2b5c0 73 20 66 6f 72 20 74 68 65 20 6d 65 61 6e 69 6e  s for the meanin
2b5d0 67 20 6f 66 20 22 6d 6f 64 69 66 79 22 20 69 6e  g of "modify" in
2b5e0 20 74 68 69 73 20 70 61 72 61 67 72 61 70 68 2e   this paragraph.
2b5f0 0a 2a 2a 0a 2a 2a 20 5e 57 68 65 6e 20 5b 73 71  .**.** ^When [sq
2b600 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
2b610 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f 20 70  ()] is used to p
2b620 72 65 70 61 72 65 20 61 20 73 74 61 74 65 6d 65  repare a stateme
2b630 6e 74 2c 20 74 68 65 0a 2a 2a 20 73 74 61 74 65  nt, the.** state
2b640 6d 65 6e 74 20 6d 69 67 68 74 20 62 65 20 72 65  ment might be re
2b650 2d 70 72 65 70 61 72 65 64 20 64 75 72 69 6e 67  -prepared during
2b660 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
2b670 5d 20 64 75 65 20 74 6f 20 61 20 0a 2a 2a 20 73  ] due to a .** s
2b680 63 68 65 6d 61 20 63 68 61 6e 67 65 2e 20 20 48  chema change.  H
2b690 65 6e 63 65 2c 20 74 68 65 20 61 70 70 6c 69 63  ence, the applic
2b6a0 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 65 6e 73  ation should ens
2b6b0 75 72 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20  ure that the.** 
2b6c0 63 6f 72 72 65 63 74 20 61 75 74 68 6f 72 69 7a  correct authoriz
2b6d0 65 72 20 63 61 6c 6c 62 61 63 6b 20 72 65 6d 61  er callback rema
2b6e0 69 6e 73 20 69 6e 20 70 6c 61 63 65 20 64 75 72  ins in place dur
2b6f0 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ing the [sqlite3
2b700 5f 73 74 65 70 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20  _step()]..**.** 
2b710 5e 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 61  ^Note that the a
2b720 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
2b730 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 6f 6e  ck is invoked on
2b740 6c 79 20 64 75 72 69 6e 67 0a 2a 2a 20 5b 73 71  ly during.** [sq
2b750 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 5d  lite3_prepare()]
2b760 20 6f 72 20 69 74 73 20 76 61 72 69 61 6e 74 73   or its variants
2b770 2e 20 20 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e  .  Authorization
2b780 20 69 73 20 6e 6f 74 0a 2a 2a 20 70 65 72 66 6f   is not.** perfo
2b790 72 6d 65 64 20 64 75 72 69 6e 67 20 73 74 61 74  rmed during stat
2b7a0 65 6d 65 6e 74 20 65 76 61 6c 75 61 74 69 6f 6e  ement evaluation
2b7b0 20 69 6e 20 5b 73 71 6c 69 74 65 33 5f 73 74 65   in [sqlite3_ste
2b7c0 70 28 29 5d 2c 20 75 6e 6c 65 73 73 0a 2a 2a 20  p()], unless.** 
2b7d0 61 73 20 73 74 61 74 65 64 20 69 6e 20 74 68 65  as stated in the
2b7e0 20 70 72 65 76 69 6f 75 73 20 70 61 72 61 67 72   previous paragr
2b7f0 61 70 68 2c 20 73 71 6c 69 74 65 33 5f 73 74 65  aph, sqlite3_ste
2b800 70 28 29 20 69 6e 76 6f 6b 65 73 0a 2a 2a 20 73  p() invokes.** s
2b810 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
2b820 32 28 29 20 74 6f 20 72 65 70 72 65 70 61 72 65  2() to reprepare
2b830 20 61 20 73 74 61 74 65 6d 65 6e 74 20 61 66 74   a statement aft
2b840 65 72 20 61 20 73 63 68 65 6d 61 20 63 68 61 6e  er a schema chan
2b850 67 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  ge..*/.SQLITE_AP
2b860 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 65  I int sqlite3_se
2b870 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 0a 20 20  t_authorizer(.  
2b880 73 71 6c 69 74 65 33 2a 2c 0a 20 20 69 6e 74 20  sqlite3*,.  int 
2b890 28 2a 78 41 75 74 68 29 28 76 6f 69 64 2a 2c 69  (*xAuth)(void*,i
2b8a0 6e 74 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63  nt,const char*,c
2b8b0 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74  onst char*,const
2b8c0 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61   char*,const cha
2b8d0 72 2a 29 2c 0a 20 20 76 6f 69 64 20 2a 70 55 73  r*),.  void *pUs
2b8e0 65 72 44 61 74 61 0a 29 3b 0a 0a 2f 2a 0a 2a 2a  erData.);../*.**
2b8f0 20 43 41 50 49 33 52 45 46 3a 20 41 75 74 68 6f   CAPI3REF: Autho
2b900 72 69 7a 65 72 20 52 65 74 75 72 6e 20 43 6f 64  rizer Return Cod
2b910 65 73 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b 73 71  es.**.** The [sq
2b920 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
2b930 69 7a 65 72 20 7c 20 61 75 74 68 6f 72 69 7a 65  izer | authorize
2b940 72 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  r callback funct
2b950 69 6f 6e 5d 20 6d 75 73 74 0a 2a 2a 20 72 65 74  ion] must.** ret
2b960 75 72 6e 20 65 69 74 68 65 72 20 5b 53 51 4c 49  urn either [SQLI
2b970 54 45 5f 4f 4b 5d 20 6f 72 20 6f 6e 65 20 6f 66  TE_OK] or one of
2b980 20 74 68 65 73 65 20 74 77 6f 20 63 6f 6e 73 74   these two const
2b990 61 6e 74 73 20 69 6e 20 6f 72 64 65 72 0a 2a 2a  ants in order.**
2b9a0 20 74 6f 20 73 69 67 6e 61 6c 20 53 51 4c 69 74   to signal SQLit
2b9b0 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  e whether or not
2b9c0 20 74 68 65 20 61 63 74 69 6f 6e 20 69 73 20 70   the action is p
2b9d0 65 72 6d 69 74 74 65 64 2e 20 20 53 65 65 20 74  ermitted.  See t
2b9e0 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73  he.** [sqlite3_s
2b9f0 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 20 7c 20  et_authorizer | 
2ba00 61 75 74 68 6f 72 69 7a 65 72 20 64 6f 63 75 6d  authorizer docum
2ba10 65 6e 74 61 74 69 6f 6e 5d 20 66 6f 72 20 61 64  entation] for ad
2ba20 64 69 74 69 6f 6e 61 6c 0a 2a 2a 20 69 6e 66 6f  ditional.** info
2ba30 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 4e  rmation..**.** N
2ba40 6f 74 65 20 74 68 61 74 20 53 51 4c 49 54 45 5f  ote that SQLITE_
2ba50 49 47 4e 4f 52 45 20 69 73 20 61 6c 73 6f 20 75  IGNORE is also u
2ba60 73 65 64 20 61 73 20 61 20 5b 63 6f 6e 66 6c 69  sed as a [confli
2ba70 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 6d 6f  ct resolution mo
2ba80 64 65 5d 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20  de].** returned 
2ba90 66 72 6f 6d 20 74 68 65 20 5b 73 71 6c 69 74 65  from the [sqlite
2baa0 33 5f 76 74 61 62 5f 6f 6e 5f 63 6f 6e 66 6c 69  3_vtab_on_confli
2bab0 63 74 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e  ct()] interface.
2bac0 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
2bad0 54 45 5f 44 45 4e 59 20 20 20 31 20 20 20 2f 2a  TE_DENY   1   /*
2bae0 20 41 62 6f 72 74 20 74 68 65 20 53 51 4c 20 73   Abort the SQL s
2baf0 74 61 74 65 6d 65 6e 74 20 77 69 74 68 20 61 6e  tatement with an
2bb00 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e   error */.#defin
2bb10 65 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 20  e SQLITE_IGNORE 
2bb20 32 20 20 20 2f 2a 20 44 6f 6e 27 74 20 61 6c 6c  2   /* Don't all
2bb30 6f 77 20 61 63 63 65 73 73 2c 20 62 75 74 20 64  ow access, but d
2bb40 6f 6e 27 74 20 67 65 6e 65 72 61 74 65 20 61 6e  on't generate an
2bb50 20 65 72 72 6f 72 20 2a 2f 0a 0a 2f 2a 0a 2a 2a   error */../*.**
2bb60 20 43 41 50 49 33 52 45 46 3a 20 41 75 74 68 6f   CAPI3REF: Autho
2bb70 72 69 7a 65 72 20 41 63 74 69 6f 6e 20 43 6f 64  rizer Action Cod
2bb80 65 73 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b 73 71  es.**.** The [sq
2bb90 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
2bba0 69 7a 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63  izer()] interfac
2bbb0 65 20 72 65 67 69 73 74 65 72 73 20 61 20 63 61  e registers a ca
2bbc0 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a  llback function.
2bbd0 2a 2a 20 74 68 61 74 20 69 73 20 69 6e 76 6f 6b  ** that is invok
2bbe0 65 64 20 74 6f 20 61 75 74 68 6f 72 69 7a 65 20  ed to authorize 
2bbf0 63 65 72 74 61 69 6e 20 53 51 4c 20 73 74 61 74  certain SQL stat
2bc00 65 6d 65 6e 74 20 61 63 74 69 6f 6e 73 2e 20 20  ement actions.  
2bc10 54 68 65 0a 2a 2a 20 73 65 63 6f 6e 64 20 70 61  The.** second pa
2bc20 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63  rameter to the c
2bc30 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20 69 6e  allback is an in
2bc40 74 65 67 65 72 20 63 6f 64 65 20 74 68 61 74 20  teger code that 
2bc50 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 77 68 61  specifies.** wha
2bc60 74 20 61 63 74 69 6f 6e 20 69 73 20 62 65 69 6e  t action is bein
2bc70 67 20 61 75 74 68 6f 72 69 7a 65 64 2e 20 20 54  g authorized.  T
2bc80 68 65 73 65 20 61 72 65 20 74 68 65 20 69 6e 74  hese are the int
2bc90 65 67 65 72 20 61 63 74 69 6f 6e 20 63 6f 64 65  eger action code
2bca0 73 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 61 75  s that.** the au
2bcb0 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63  thorizer callbac
2bcc0 6b 20 6d 61 79 20 62 65 20 70 61 73 73 65 64 2e  k may be passed.
2bcd0 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 61 63 74  .**.** These act
2bce0 69 6f 6e 20 63 6f 64 65 20 76 61 6c 75 65 73 20  ion code values 
2bcf0 73 69 67 6e 69 66 79 20 77 68 61 74 20 6b 69 6e  signify what kin
2bd00 64 20 6f 66 20 6f 70 65 72 61 74 69 6f 6e 20 69  d of operation i
2bd10 73 20 74 6f 20 62 65 0a 2a 2a 20 61 75 74 68 6f  s to be.** autho
2bd20 72 69 7a 65 64 2e 20 20 54 68 65 20 33 72 64 20  rized.  The 3rd 
2bd30 61 6e 64 20 34 74 68 20 70 61 72 61 6d 65 74 65  and 4th paramete
2bd40 72 73 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72  rs to the author
2bd50 69 7a 61 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 62  ization.** callb
2bd60 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c  ack function wil
2bd70 6c 20 62 65 20 70 61 72 61 6d 65 74 65 72 73 20  l be parameters 
2bd80 6f 72 20 4e 55 4c 4c 20 64 65 70 65 6e 64 69 6e  or NULL dependin
2bd90 67 20 6f 6e 20 77 68 69 63 68 20 6f 66 20 74 68  g on which of th
2bda0 65 73 65 0a 2a 2a 20 63 6f 64 65 73 20 69 73 20  ese.** codes is 
2bdb0 75 73 65 64 20 61 73 20 74 68 65 20 73 65 63 6f  used as the seco
2bdc0 6e 64 20 70 61 72 61 6d 65 74 65 72 2e 20 20 5e  nd parameter.  ^
2bdd0 28 54 68 65 20 35 74 68 20 70 61 72 61 6d 65 74  (The 5th paramet
2bde0 65 72 20 74 6f 20 74 68 65 0a 2a 2a 20 61 75 74  er to the.** aut
2bdf0 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b  horizer callback
2be00 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
2be10 74 68 65 20 64 61 74 61 62 61 73 65 20 28 22 6d  the database ("m
2be20 61 69 6e 22 2c 20 22 74 65 6d 70 22 2c 0a 2a 2a  ain", "temp",.**
2be30 20 65 74 63 2e 29 20 69 66 20 61 70 70 6c 69 63   etc.) if applic
2be40 61 62 6c 65 2e 29 5e 20 20 5e 54 68 65 20 36 74  able.)^  ^The 6t
2be50 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  h parameter to t
2be60 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61  he authorizer ca
2be70 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 74 68 65  llback.** is the
2be80 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69 6e 6e   name of the inn
2be90 65 72 2d 6d 6f 73 74 20 74 72 69 67 67 65 72 20  er-most trigger 
2bea0 6f 72 20 76 69 65 77 20 74 68 61 74 20 69 73 20  or view that is 
2beb0 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 0a  responsible for.
2bec0 2a 2a 20 74 68 65 20 61 63 63 65 73 73 20 61 74  ** the access at
2bed0 74 65 6d 70 74 20 6f 72 20 4e 55 4c 4c 20 69 66  tempt or NULL if
2bee0 20 74 68 69 73 20 61 63 63 65 73 73 20 61 74 74   this access att
2bef0 65 6d 70 74 20 69 73 20 64 69 72 65 63 74 6c 79  empt is directly
2bf00 20 66 72 6f 6d 0a 2a 2a 20 74 6f 70 2d 6c 65 76   from.** top-lev
2bf10 65 6c 20 53 51 4c 20 63 6f 64 65 2e 0a 2a 2f 0a  el SQL code..*/.
2bf20 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
2bf30 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2bf40 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 33 72 64  ************ 3rd
2bf50 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 34 74   ************ 4t
2bf60 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 23  h ***********/.#
2bf70 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52  define SQLITE_CR
2bf80 45 41 54 45 5f 49 4e 44 45 58 20 20 20 20 20 20  EATE_INDEX      
2bf90 20 20 20 20 31 20 20 20 2f 2a 20 49 6e 64 65 78      1   /* Index
2bfa0 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c 65   Name      Table
2bfb0 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64   Name      */.#d
2bfc0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45  efine SQLITE_CRE
2bfd0 41 54 45 5f 54 41 42 4c 45 20 20 20 20 20 20 20  ATE_TABLE       
2bfe0 20 20 20 32 20 20 20 2f 2a 20 54 61 62 6c 65 20     2   /* Table 
2bff0 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20  Name      NULL  
2c000 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
2c010 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41  fine SQLITE_CREA
2c020 54 45 5f 54 45 4d 50 5f 49 4e 44 45 58 20 20 20  TE_TEMP_INDEX   
2c030 20 20 33 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e    3   /* Index N
2c040 61 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e  ame      Table N
2c050 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  ame      */.#def
2c060 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
2c070 45 5f 54 45 4d 50 5f 54 41 42 4c 45 20 20 20 20  E_TEMP_TABLE    
2c080 20 34 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61   4   /* Table Na
2c090 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  me      NULL    
2c0a0 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
2c0b0 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
2c0c0 5f 54 45 4d 50 5f 54 52 49 47 47 45 52 20 20 20  _TEMP_TRIGGER   
2c0d0 35 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20 4e  5   /* Trigger N
2c0e0 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61 6d  ame    Table Nam
2c0f0 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  e      */.#defin
2c100 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
2c110 54 45 4d 50 5f 56 49 45 57 20 20 20 20 20 20 36  TEMP_VIEW      6
2c120 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20     /* View Name 
2c130 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
2c140 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2c150 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54   SQLITE_CREATE_T
2c160 52 49 47 47 45 52 20 20 20 20 20 20 20 20 37 20  RIGGER        7 
2c170 20 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d    /* Trigger Nam
2c180 65 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20  e    Table Name 
2c190 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2c1a0 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 56 49  SQLITE_CREATE_VI
2c1b0 45 57 20 20 20 20 20 20 20 20 20 20 20 38 20 20  EW           8  
2c1c0 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20   /* View Name   
2c1d0 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2c1e0 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2c1f0 51 4c 49 54 45 5f 44 45 4c 45 54 45 20 20 20 20  QLITE_DELETE    
2c200 20 20 20 20 20 20 20 20 20 20 20 20 39 20 20 20              9   
2c210 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20  /* Table Name   
2c220 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
2c230 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2c240 4c 49 54 45 5f 44 52 4f 50 5f 49 4e 44 45 58 20  LITE_DROP_INDEX 
2c250 20 20 20 20 20 20 20 20 20 20 31 30 20 20 20 2f            10   /
2c260 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20  * Index Name    
2c270 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20    Table Name    
2c280 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2c290 49 54 45 5f 44 52 4f 50 5f 54 41 42 4c 45 20 20  ITE_DROP_TABLE  
2c2a0 20 20 20 20 20 20 20 20 20 31 31 20 20 20 2f 2a           11   /*
2c2b0 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2c2c0 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
2c2d0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2c2e0 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 49 4e 44  TE_DROP_TEMP_IND
2c2f0 45 58 20 20 20 20 20 20 31 32 20 20 20 2f 2a 20  EX      12   /* 
2c300 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20  Index Name      
2c310 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
2c320 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2c330 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 54 41 42 4c  E_DROP_TEMP_TABL
2c340 45 20 20 20 20 20 20 31 33 20 20 20 2f 2a 20 54  E      13   /* T
2c350 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e  able Name      N
2c360 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
2c370 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2c380 5f 44 52 4f 50 5f 54 45 4d 50 5f 54 52 49 47 47  _DROP_TEMP_TRIGG
2c390 45 52 20 20 20 20 31 34 20 20 20 2f 2a 20 54 72  ER    14   /* Tr
2c3a0 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61  igger Name    Ta
2c3b0 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
2c3c0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2c3d0 44 52 4f 50 5f 54 45 4d 50 5f 56 49 45 57 20 20  DROP_TEMP_VIEW  
2c3e0 20 20 20 20 20 31 35 20 20 20 2f 2a 20 56 69 65       15   /* Vie
2c3f0 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c  w Name       NUL
2c400 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
2c410 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
2c420 52 4f 50 5f 54 52 49 47 47 45 52 20 20 20 20 20  ROP_TRIGGER     
2c430 20 20 20 20 31 36 20 20 20 2f 2a 20 54 72 69 67      16   /* Trig
2c440 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c  ger Name    Tabl
2c450 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23  e Name      */.#
2c460 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
2c470 4f 50 5f 56 49 45 57 20 20 20 20 20 20 20 20 20  OP_VIEW         
2c480 20 20 20 31 37 20 20 20 2f 2a 20 56 69 65 77 20     17   /* View 
2c490 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20  Name       NULL 
2c4a0 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
2c4b0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 53  efine SQLITE_INS
2c4c0 45 52 54 20 20 20 20 20 20 20 20 20 20 20 20 20  ERT             
2c4d0 20 20 31 38 20 20 20 2f 2a 20 54 61 62 6c 65 20    18   /* Table 
2c4e0 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20  Name      NULL  
2c4f0 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
2c500 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52 41 47  fine SQLITE_PRAG
2c510 4d 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20  MA              
2c520 20 31 39 20 20 20 2f 2a 20 50 72 61 67 6d 61 20   19   /* Pragma 
2c530 4e 61 6d 65 20 20 20 20 20 31 73 74 20 61 72 67  Name     1st arg
2c540 20 6f 72 20 4e 55 4c 4c 20 2a 2f 0a 23 64 65 66   or NULL */.#def
2c550 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 20  ine SQLITE_READ 
2c560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c570 32 30 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61  20   /* Table Na
2c580 6d 65 20 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e  me      Column N
2c590 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  ame     */.#defi
2c5a0 6e 65 20 53 51 4c 49 54 45 5f 53 45 4c 45 43 54  ne SQLITE_SELECT
2c5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
2c5c0 31 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20  1   /* NULL     
2c5d0 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
2c5e0 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
2c5f0 65 20 53 51 4c 49 54 45 5f 54 52 41 4e 53 41 43  e SQLITE_TRANSAC
2c600 54 49 4f 4e 20 20 20 20 20 20 20 20 20 20 32 32  TION          22
2c610 20 20 20 2f 2a 20 4f 70 65 72 61 74 69 6f 6e 20     /* Operation 
2c620 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
2c630 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2c640 20 53 51 4c 49 54 45 5f 55 50 44 41 54 45 20 20   SQLITE_UPDATE  
2c650 20 20 20 20 20 20 20 20 20 20 20 20 20 32 33 20               23 
2c660 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
2c670 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65       Column Name
2c680 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2c690 53 51 4c 49 54 45 5f 41 54 54 41 43 48 20 20 20  SQLITE_ATTACH   
2c6a0 20 20 20 20 20 20 20 20 20 20 20 20 32 34 20 20              24  
2c6b0 20 2f 2a 20 46 69 6c 65 6e 61 6d 65 20 20 20 20   /* Filename    
2c6c0 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2c6d0 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2c6e0 51 4c 49 54 45 5f 44 45 54 41 43 48 20 20 20 20  QLITE_DETACH    
2c6f0 20 20 20 20 20 20 20 20 20 20 20 32 35 20 20 20             25   
2c700 2f 2a 20 44 61 74 61 62 61 73 65 20 4e 61 6d 65  /* Database Name
2c710 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
2c720 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2c730 4c 49 54 45 5f 41 4c 54 45 52 5f 54 41 42 4c 45  LITE_ALTER_TABLE
2c740 20 20 20 20 20 20 20 20 20 20 32 36 20 20 20 2f            26   /
2c750 2a 20 44 61 74 61 62 61 73 65 20 4e 61 6d 65 20  * Database Name 
2c760 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20    Table Name    
2c770 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2c780 49 54 45 5f 52 45 49 4e 44 45 58 20 20 20 20 20  ITE_REINDEX     
2c790 20 20 20 20 20 20 20 20 20 32 37 20 20 20 2f 2a           27   /*
2c7a0 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20   Index Name     
2c7b0 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
2c7c0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2c7d0 54 45 5f 41 4e 41 4c 59 5a 45 20 20 20 20 20 20  TE_ANALYZE      
2c7e0 20 20 20 20 20 20 20 20 32 38 20 20 20 2f 2a 20          28   /* 
2c7f0 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
2c800 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
2c810 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2c820 45 5f 43 52 45 41 54 45 5f 56 54 41 42 4c 45 20  E_CREATE_VTABLE 
2c830 20 20 20 20 20 20 20 32 39 20 20 20 2f 2a 20 54         29   /* T
2c840 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4d  able Name      M
2c850 6f 64 75 6c 65 20 4e 61 6d 65 20 20 20 20 20 2a  odule Name     *
2c860 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2c870 5f 44 52 4f 50 5f 56 54 41 42 4c 45 20 20 20 20  _DROP_VTABLE    
2c880 20 20 20 20 20 20 33 30 20 20 20 2f 2a 20 54 61        30   /* Ta
2c890 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4d 6f  ble Name      Mo
2c8a0 64 75 6c 65 20 4e 61 6d 65 20 20 20 20 20 2a 2f  dule Name     */
2c8b0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2c8c0 46 55 4e 43 54 49 4f 4e 20 20 20 20 20 20 20 20  FUNCTION        
2c8d0 20 20 20 20 20 33 31 20 20 20 2f 2a 20 4e 55 4c       31   /* NUL
2c8e0 4c 20 20 20 20 20 20 20 20 20 20 20 20 46 75 6e  L            Fun
2c8f0 63 74 69 6f 6e 20 4e 61 6d 65 20 20 20 2a 2f 0a  ction Name   */.
2c900 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
2c910 41 56 45 50 4f 49 4e 54 20 20 20 20 20 20 20 20  AVEPOINT        
2c920 20 20 20 20 33 32 20 20 20 2f 2a 20 4f 70 65 72      32   /* Oper
2c930 61 74 69 6f 6e 20 20 20 20 20 20 20 53 61 76 65  ation       Save
2c940 70 6f 69 6e 74 20 4e 61 6d 65 20 20 2a 2f 0a 23  point Name  */.#
2c950 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
2c960 50 59 20 20 20 20 20 20 20 20 20 20 20 20 20 20  PY              
2c970 20 20 20 20 30 20 20 20 2f 2a 20 4e 6f 20 6c 6f      0   /* No lo
2c980 6e 67 65 72 20 75 73 65 64 20 2a 2f 0a 23 64 65  nger used */.#de
2c990 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 43 55  fine SQLITE_RECU
2c9a0 52 53 49 56 45 20 20 20 20 20 20 20 20 20 20 20  RSIVE           
2c9b0 20 33 33 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20   33   /* NULL   
2c9c0 20 20 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20           NULL   
2c9d0 20 20 20 20 20 20 20 20 20 2a 2f 0a 0a 2f 2a 0a           */../*.
2c9e0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 54 72 61  ** CAPI3REF: Tra
2c9f0 63 69 6e 67 20 41 6e 64 20 50 72 6f 66 69 6c 69  cing And Profili
2ca00 6e 67 20 46 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20  ng Functions.** 
2ca10 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
2ca20 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74  **.** These rout
2ca30 69 6e 65 73 20 61 72 65 20 64 65 70 72 65 63 61  ines are depreca
2ca40 74 65 64 2e 20 55 73 65 20 74 68 65 20 5b 73 71  ted. Use the [sq
2ca50 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28 29  lite3_trace_v2()
2ca60 5d 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69  ] interface.** i
2ca70 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 72 6f  nstead of the ro
2ca80 75 74 69 6e 65 73 20 64 65 73 63 72 69 62 65 64  utines described
2ca90 20 68 65 72 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65   here..**.** The
2caa0 73 65 20 72 6f 75 74 69 6e 65 73 20 72 65 67 69  se routines regi
2cab0 73 74 65 72 20 63 61 6c 6c 62 61 63 6b 20 66 75  ster callback fu
2cac0 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 63 61 6e  nctions that can
2cad0 20 62 65 20 75 73 65 64 20 66 6f 72 0a 2a 2a 20   be used for.** 
2cae0 74 72 61 63 69 6e 67 20 61 6e 64 20 70 72 6f 66  tracing and prof
2caf0 69 6c 69 6e 67 20 74 68 65 20 65 78 65 63 75 74  iling the execut
2cb00 69 6f 6e 20 6f 66 20 53 51 4c 20 73 74 61 74 65  ion of SQL state
2cb10 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  ments..**.** ^Th
2cb20 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
2cb30 69 6f 6e 20 72 65 67 69 73 74 65 72 65 64 20 62  ion registered b
2cb40 79 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28  y sqlite3_trace(
2cb50 29 20 69 73 20 69 6e 76 6f 6b 65 64 20 61 74 0a  ) is invoked at.
2cb60 2a 2a 20 76 61 72 69 6f 75 73 20 74 69 6d 65 73  ** various times
2cb70 20 77 68 65 6e 20 61 6e 20 53 51 4c 20 73 74 61   when an SQL sta
2cb80 74 65 6d 65 6e 74 20 69 73 20 62 65 69 6e 67 20  tement is being 
2cb90 72 75 6e 20 62 79 20 5b 73 71 6c 69 74 65 33 5f  run by [sqlite3_
2cba0 73 74 65 70 28 29 5d 2e 0a 2a 2a 20 5e 54 68 65  step()]..** ^The
2cbb0 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29   sqlite3_trace()
2cbc0 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
2cbd0 6f 6b 65 64 20 77 69 74 68 20 61 20 55 54 46 2d  oked with a UTF-
2cbe0 38 20 72 65 6e 64 65 72 69 6e 67 20 6f 66 20 74  8 rendering of t
2cbf0 68 65 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d  he.** SQL statem
2cc00 65 6e 74 20 74 65 78 74 20 61 73 20 74 68 65 20  ent text as the 
2cc10 73 74 61 74 65 6d 65 6e 74 20 66 69 72 73 74 20  statement first 
2cc20 62 65 67 69 6e 73 20 65 78 65 63 75 74 69 6e 67  begins executing
2cc30 2e 0a 2a 2a 20 5e 28 41 64 64 69 74 69 6f 6e 61  ..** ^(Additiona
2cc40 6c 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28  l sqlite3_trace(
2cc50 29 20 63 61 6c 6c 62 61 63 6b 73 20 6d 69 67 68  ) callbacks migh
2cc60 74 20 6f 63 63 75 72 0a 2a 2a 20 61 73 20 65 61  t occur.** as ea
2cc70 63 68 20 74 72 69 67 67 65 72 65 64 20 73 75 62  ch triggered sub
2cc80 70 72 6f 67 72 61 6d 20 69 73 20 65 6e 74 65 72  program is enter
2cc90 65 64 2e 20 20 54 68 65 20 63 61 6c 6c 62 61 63  ed.  The callbac
2cca0 6b 73 20 66 6f 72 20 74 72 69 67 67 65 72 73 0a  ks for triggers.
2ccb0 2a 2a 20 63 6f 6e 74 61 69 6e 20 61 20 55 54 46  ** contain a UTF
2ccc0 2d 38 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 20 74  -8 SQL comment t
2ccd0 68 61 74 20 69 64 65 6e 74 69 66 69 65 73 20 74  hat identifies t
2cce0 68 65 20 74 72 69 67 67 65 72 2e 29 5e 0a 2a 2a  he trigger.)^.**
2ccf0 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
2cd00 54 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54  TRACE_SIZE_LIMIT
2cd10 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
2cd20 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65  ption can be use
2cd30 64 20 74 6f 20 6c 69 6d 69 74 0a 2a 2a 20 74 68  d to limit.** th
2cd40 65 20 6c 65 6e 67 74 68 20 6f 66 20 5b 62 6f 75  e length of [bou
2cd50 6e 64 20 70 61 72 61 6d 65 74 65 72 5d 20 65 78  nd parameter] ex
2cd60 70 61 6e 73 69 6f 6e 20 69 6e 20 74 68 65 20 6f  pansion in the o
2cd70 75 74 70 75 74 20 6f 66 20 73 71 6c 69 74 65 33  utput of sqlite3
2cd80 5f 74 72 61 63 65 28 29 2e 0a 2a 2a 0a 2a 2a 20  _trace()..**.** 
2cd90 5e 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75  ^The callback fu
2cda0 6e 63 74 69 6f 6e 20 72 65 67 69 73 74 65 72 65  nction registere
2cdb0 64 20 62 79 20 73 71 6c 69 74 65 33 5f 70 72 6f  d by sqlite3_pro
2cdc0 66 69 6c 65 28 29 20 69 73 20 69 6e 76 6f 6b 65  file() is invoke
2cdd0 64 0a 2a 2a 20 61 73 20 65 61 63 68 20 53 51 4c  d.** as each SQL
2cde0 20 73 74 61 74 65 6d 65 6e 74 20 66 69 6e 69 73   statement finis
2cdf0 68 65 73 2e 20 20 5e 54 68 65 20 70 72 6f 66 69  hes.  ^The profi
2ce00 6c 65 20 63 61 6c 6c 62 61 63 6b 20 63 6f 6e 74  le callback cont
2ce10 61 69 6e 73 0a 2a 2a 20 74 68 65 20 6f 72 69 67  ains.** the orig
2ce20 69 6e 61 6c 20 73 74 61 74 65 6d 65 6e 74 20 74  inal statement t
2ce30 65 78 74 20 61 6e 64 20 61 6e 20 65 73 74 69 6d  ext and an estim
2ce40 61 74 65 20 6f 66 20 77 61 6c 6c 2d 63 6c 6f 63  ate of wall-cloc
2ce50 6b 20 74 69 6d 65 0a 2a 2a 20 6f 66 20 68 6f 77  k time.** of how
2ce60 20 6c 6f 6e 67 20 74 68 61 74 20 73 74 61 74 65   long that state
2ce70 6d 65 6e 74 20 74 6f 6f 6b 20 74 6f 20 72 75 6e  ment took to run
2ce80 2e 20 20 5e 54 68 65 20 70 72 6f 66 69 6c 65 20  .  ^The profile 
2ce90 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 74 69 6d 65  callback.** time
2cea0 20 69 73 20 69 6e 20 75 6e 69 74 73 20 6f 66 20   is in units of 
2ceb0 6e 61 6e 6f 73 65 63 6f 6e 64 73 2c 20 68 6f 77  nanoseconds, how
2cec0 65 76 65 72 20 74 68 65 20 63 75 72 72 65 6e 74  ever the current
2ced0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a   implementation.
2cee0 2a 2a 20 69 73 20 6f 6e 6c 79 20 63 61 70 61 62  ** is only capab
2cef0 6c 65 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e  le of millisecon
2cf00 64 20 72 65 73 6f 6c 75 74 69 6f 6e 20 73 6f 20  d resolution so 
2cf10 74 68 65 20 73 69 78 20 6c 65 61 73 74 20 73 69  the six least si
2cf20 67 6e 69 66 69 63 61 6e 74 0a 2a 2a 20 64 69 67  gnificant.** dig
2cf30 69 74 73 20 69 6e 20 74 68 65 20 74 69 6d 65 20  its in the time 
2cf40 61 72 65 20 6d 65 61 6e 69 6e 67 6c 65 73 73 2e  are meaningless.
2cf50 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
2cf60 73 20 6f 66 20 53 51 4c 69 74 65 0a 2a 2a 20 6d  s of SQLite.** m
2cf70 69 67 68 74 20 70 72 6f 76 69 64 65 20 67 72 65  ight provide gre
2cf80 61 74 65 72 20 72 65 73 6f 6c 75 74 69 6f 6e 20  ater resolution 
2cf90 6f 6e 20 74 68 65 20 70 72 6f 66 69 6c 65 72 20  on the profiler 
2cfa0 63 61 6c 6c 62 61 63 6b 2e 20 20 49 6e 76 6f 6b  callback.  Invok
2cfb0 69 6e 67 0a 2a 2a 20 65 69 74 68 65 72 20 5b 73  ing.** either [s
2cfc0 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20  qlite3_trace()] 
2cfd0 6f 72 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63  or [sqlite3_trac
2cfe0 65 5f 76 32 28 29 5d 20 77 69 6c 6c 20 63 61 6e  e_v2()] will can
2cff0 63 65 6c 20 74 68 65 0a 2a 2a 20 70 72 6f 66 69  cel the.** profi
2d000 6c 65 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2f 0a  le callback..*/.
2d010 53 51 4c 49 54 45 5f 41 50 49 20 53 51 4c 49 54  SQLITE_API SQLIT
2d020 45 5f 44 45 50 52 45 43 41 54 45 44 20 76 6f 69  E_DEPRECATED voi
2d030 64 20 2a 73 71 6c 69 74 65 33 5f 74 72 61 63 65  d *sqlite3_trace
2d040 28 73 71 6c 69 74 65 33 2a 2c 0a 20 20 20 76 6f  (sqlite3*,.   vo
2d050 69 64 28 2a 78 54 72 61 63 65 29 28 76 6f 69 64  id(*xTrace)(void
2d060 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c 20  *,const char*), 
2d070 76 6f 69 64 2a 29 3b 0a 53 51 4c 49 54 45 5f 41  void*);.SQLITE_A
2d080 50 49 20 53 51 4c 49 54 45 5f 44 45 50 52 45 43  PI SQLITE_DEPREC
2d090 41 54 45 44 20 76 6f 69 64 20 2a 73 71 6c 69 74  ATED void *sqlit
2d0a0 65 33 5f 70 72 6f 66 69 6c 65 28 73 71 6c 69 74  e3_profile(sqlit
2d0b0 65 33 2a 2c 0a 20 20 20 76 6f 69 64 28 2a 78 50  e3*,.   void(*xP
2d0c0 72 6f 66 69 6c 65 29 28 76 6f 69 64 2a 2c 63 6f  rofile)(void*,co
2d0d0 6e 73 74 20 63 68 61 72 2a 2c 73 71 6c 69 74 65  nst char*,sqlite
2d0e0 33 5f 75 69 6e 74 36 34 29 2c 20 76 6f 69 64 2a  3_uint64), void*
2d0f0 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
2d100 45 46 3a 20 53 51 4c 20 54 72 61 63 65 20 45 76  EF: SQL Trace Ev
2d110 65 6e 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45 59  ent Codes.** KEY
2d120 57 4f 52 44 53 3a 20 53 51 4c 49 54 45 5f 54 52  WORDS: SQLITE_TR
2d130 41 43 45 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  ACE.**.** These 
2d140 63 6f 6e 73 74 61 6e 74 73 20 69 64 65 6e 74 69  constants identi
2d150 66 79 20 63 6c 61 73 73 65 73 20 6f 66 20 65 76  fy classes of ev
2d160 65 6e 74 73 20 74 68 61 74 20 63 61 6e 20 62 65  ents that can be
2d170 20 6d 6f 6e 69 74 6f 72 65 64 0a 2a 2a 20 75 73   monitored.** us
2d180 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ing the [sqlite3
2d190 5f 74 72 61 63 65 5f 76 32 28 29 5d 20 74 72 61  _trace_v2()] tra
2d1a0 63 69 6e 67 20 6c 6f 67 69 63 2e 20 20 54 68 65  cing logic.  The
2d1b0 20 4d 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 74   M argument.** t
2d1c0 6f 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65  o [sqlite3_trace
2d1d0 5f 76 32 28 44 2c 4d 2c 58 2c 50 29 5d 20 69 73  _v2(D,M,X,P)] is
2d1e0 20 61 6e 20 4f 52 2d 65 64 20 63 6f 6d 62 69 6e   an OR-ed combin
2d1f0 61 74 69 6f 6e 20 6f 66 20 6f 6e 65 20 6f 72 20  ation of one or 
2d200 6d 6f 72 65 20 6f 66 0a 2a 2a 20 74 68 65 20 66  more of.** the f
2d210 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61 6e  ollowing constan
2d220 74 73 2e 20 20 5e 54 68 65 20 66 69 72 73 74 20  ts.  ^The first 
2d230 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20  argument to the 
2d240 74 72 61 63 65 20 63 61 6c 6c 62 61 63 6b 0a 2a  trace callback.*
2d250 2a 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20  * is one of the 
2d260 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61  following consta
2d270 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 74  nts..**.** New t
2d280 72 61 63 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73  racing constants
2d290 20 6d 61 79 20 62 65 20 61 64 64 65 64 20 69 6e   may be added in
2d2a0 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   future releases
2d2b0 2e 0a 2a 2a 0a 2a 2a 20 5e 41 20 74 72 61 63 65  ..**.** ^A trace
2d2c0 20 63 61 6c 6c 62 61 63 6b 20 68 61 73 20 66 6f   callback has fo
2d2d0 75 72 20 61 72 67 75 6d 65 6e 74 73 3a 20 78 43  ur arguments: xC
2d2e0 61 6c 6c 62 61 63 6b 28 54 2c 43 2c 50 2c 58 29  allback(T,C,P,X)
2d2f0 2e 0a 2a 2a 20 5e 54 68 65 20 54 20 61 72 67 75  ..** ^The T argu
2d300 6d 65 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20 74  ment is one of t
2d310 68 65 20 69 6e 74 65 67 65 72 20 74 79 70 65 20  he integer type 
2d320 63 6f 64 65 73 20 61 62 6f 76 65 2e 0a 2a 2a 20  codes above..** 
2d330 5e 54 68 65 20 43 20 61 72 67 75 6d 65 6e 74 20  ^The C argument 
2d340 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  is a copy of the
2d350 20 63 6f 6e 74 65 78 74 20 70 6f 69 6e 74 65 72   context pointer
2d360 20 70 61 73 73 65 64 20 69 6e 20 61 73 20 74 68   passed in as th
2d370 65 0a 2a 2a 20 66 6f 75 72 74 68 20 61 72 67 75  e.** fourth argu
2d380 6d 65 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65 33  ment to [sqlite3
2d390 5f 74 72 61 63 65 5f 76 32 28 29 5d 2e 0a 2a 2a  _trace_v2()]..**
2d3a0 20 54 68 65 20 50 20 61 6e 64 20 58 20 61 72 67   The P and X arg
2d3b0 75 6d 65 6e 74 73 20 61 72 65 20 70 6f 69 6e 74  uments are point
2d3c0 65 72 73 20 77 68 6f 73 65 20 6d 65 61 6e 69 6e  ers whose meanin
2d3d0 67 73 20 64 65 70 65 6e 64 20 6f 6e 20 54 2e 0a  gs depend on T..
2d3e0 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b  **.** <dl>.** [[
2d3f0 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d  SQLITE_TRACE_STM
2d400 54 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54  T]] <dt>SQLITE_T
2d410 52 41 43 45 5f 53 54 4d 54 3c 2f 64 74 3e 0a 2a  RACE_STMT</dt>.*
2d420 2a 20 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45  * <dd>^An SQLITE
2d430 5f 54 52 41 43 45 5f 53 54 4d 54 20 63 61 6c 6c  _TRACE_STMT call
2d440 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
2d450 77 68 65 6e 20 61 20 70 72 65 70 61 72 65 64 20  when a prepared 
2d460 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 66 69 72  statement.** fir
2d470 73 74 20 62 65 67 69 6e 73 20 72 75 6e 6e 69 6e  st begins runnin
2d480 67 20 61 6e 64 20 70 6f 73 73 69 62 6c 79 20 61  g and possibly a
2d490 74 20 6f 74 68 65 72 20 74 69 6d 65 73 20 64 75  t other times du
2d4a0 72 69 6e 67 20 74 68 65 0a 2a 2a 20 65 78 65 63  ring the.** exec
2d4b0 75 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 72 65  ution of the pre
2d4c0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2c  pared statement,
2d4d0 20 73 75 63 68 20 61 73 20 61 74 20 74 68 65 20   such as at the 
2d4e0 73 74 61 72 74 20 6f 66 20 65 61 63 68 0a 2a 2a  start of each.**
2d4f0 20 74 72 69 67 67 65 72 20 73 75 62 70 72 6f 67   trigger subprog
2d500 72 61 6d 2e 20 5e 54 68 65 20 50 20 61 72 67 75  ram. ^The P argu
2d510 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65  ment is a pointe
2d520 72 20 74 6f 20 74 68 65 0a 2a 2a 20 5b 70 72 65  r to the.** [pre
2d530 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
2d540 2e 20 5e 54 68 65 20 58 20 61 72 67 75 6d 65 6e  . ^The X argumen
2d550 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  t is a pointer t
2d560 6f 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68  o a string which
2d570 0a 2a 2a 20 69 73 20 74 68 65 20 75 6e 65 78 70  .** is the unexp
2d580 61 6e 64 65 64 20 53 51 4c 20 74 65 78 74 20 6f  anded SQL text o
2d590 66 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73  f the prepared s
2d5a0 74 61 74 65 6d 65 6e 74 20 6f 72 20 61 6e 20 53  tatement or an S
2d5b0 51 4c 20 63 6f 6d 6d 65 6e 74 20 0a 2a 2a 20 74  QL comment .** t
2d5c0 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 74 68  hat indicates th
2d5d0 65 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20  e invocation of 
2d5e0 61 20 74 72 69 67 67 65 72 2e 20 20 5e 54 68 65  a trigger.  ^The
2d5f0 20 63 61 6c 6c 62 61 63 6b 20 63 61 6e 20 63 6f   callback can co
2d600 6d 70 75 74 65 0a 2a 2a 20 74 68 65 20 73 61 6d  mpute.** the sam
2d610 65 20 74 65 78 74 20 74 68 61 74 20 77 6f 75 6c  e text that woul
2d620 64 20 68 61 76 65 20 62 65 65 6e 20 72 65 74 75  d have been retu
2d630 72 6e 65 64 20 62 79 20 74 68 65 20 6c 65 67 61  rned by the lega
2d640 63 79 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63  cy [sqlite3_trac
2d650 65 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63  e()].** interfac
2d660 65 20 62 79 20 75 73 69 6e 67 20 74 68 65 20 58  e by using the X
2d670 20 61 72 67 75 6d 65 6e 74 20 77 68 65 6e 20 58   argument when X
2d680 20 62 65 67 69 6e 73 20 77 69 74 68 20 22 2d 2d   begins with "--
2d690 22 20 61 6e 64 20 69 6e 76 6f 6b 69 6e 67 0a 2a  " and invoking.*
2d6a0 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78 70 61 6e  * [sqlite3_expan
2d6b0 64 65 64 5f 73 71 6c 28 50 29 5d 20 6f 74 68 65  ded_sql(P)] othe
2d6c0 72 77 69 73 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  rwise..**.** [[S
2d6d0 51 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46  QLITE_TRACE_PROF
2d6e0 49 4c 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  ILE]] <dt>SQLITE
2d6f0 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c 45 3c 2f  _TRACE_PROFILE</
2d700 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53  dt>.** <dd>^An S
2d710 51 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46  QLITE_TRACE_PROF
2d720 49 4c 45 20 63 61 6c 6c 62 61 63 6b 20 70 72 6f  ILE callback pro
2d730 76 69 64 65 73 20 61 70 70 72 6f 78 69 6d 61 74  vides approximat
2d740 65 6c 79 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20  ely the same.** 
2d750 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 73 20 69  information as i
2d760 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  s provided by th
2d770 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69  e [sqlite3_profi
2d780 6c 65 28 29 5d 20 63 61 6c 6c 62 61 63 6b 2e 0a  le()] callback..
2d790 2a 2a 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65  ** ^The P argume
2d7a0 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  nt is a pointer 
2d7b0 74 6f 20 74 68 65 20 5b 70 72 65 70 61 72 65 64  to the [prepared
2d7c0 20 73 74 61 74 65 6d 65 6e 74 5d 20 61 6e 64 20   statement] and 
2d7d0 74 68 65 0a 2a 2a 20 58 20 61 72 67 75 6d 65 6e  the.** X argumen
2d7e0 74 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 36 34  t points to a 64
2d7f0 2d 62 69 74 20 69 6e 74 65 67 65 72 20 77 68 69  -bit integer whi
2d800 63 68 20 69 73 20 74 68 65 20 65 73 74 69 6d 61  ch is the estima
2d810 74 65 64 20 6f 66 0a 2a 2a 20 74 68 65 20 6e 75  ted of.** the nu
2d820 6d 62 65 72 20 6f 66 20 6e 61 6e 6f 73 65 63 6f  mber of nanoseco
2d830 6e 64 20 74 68 61 74 20 74 68 65 20 70 72 65 70  nd that the prep
2d840 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 74  ared statement t
2d850 6f 6f 6b 20 74 6f 20 72 75 6e 2e 0a 2a 2a 20 5e  ook to run..** ^
2d860 54 68 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45  The SQLITE_TRACE
2d870 5f 50 52 4f 46 49 4c 45 20 63 61 6c 6c 62 61 63  _PROFILE callbac
2d880 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65  k is invoked whe
2d890 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20  n the statement 
2d8a0 66 69 6e 69 73 68 65 73 2e 0a 2a 2a 0a 2a 2a 20  finishes..**.** 
2d8b0 5b 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52  [[SQLITE_TRACE_R
2d8c0 4f 57 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  OW]] <dt>SQLITE_
2d8d0 54 52 41 43 45 5f 52 4f 57 3c 2f 64 74 3e 0a 2a  TRACE_ROW</dt>.*
2d8e0 2a 20 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45  * <dd>^An SQLITE
2d8f0 5f 54 52 41 43 45 5f 52 4f 57 20 63 61 6c 6c 62  _TRACE_ROW callb
2d900 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77  ack is invoked w
2d910 68 65 6e 65 76 65 72 20 61 20 70 72 65 70 61 72  henever a prepar
2d920 65 64 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20  ed.** statement 
2d930 67 65 6e 65 72 61 74 65 73 20 61 20 73 69 6e 67  generates a sing
2d940 6c 65 20 72 6f 77 20 6f 66 20 72 65 73 75 6c 74  le row of result
2d950 2e 20 20 0a 2a 2a 20 5e 54 68 65 20 50 20 61 72  .  .** ^The P ar
2d960 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e  gument is a poin
2d970 74 65 72 20 74 6f 20 74 68 65 20 5b 70 72 65 70  ter to the [prep
2d980 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
2d990 61 6e 64 20 74 68 65 0a 2a 2a 20 58 20 61 72 67  and the.** X arg
2d9a0 75 6d 65 6e 74 20 69 73 20 75 6e 75 73 65 64 2e  ument is unused.
2d9b0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
2d9c0 54 52 41 43 45 5f 43 4c 4f 53 45 5d 5d 20 3c 64  TRACE_CLOSE]] <d
2d9d0 74 3e 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43  t>SQLITE_TRACE_C
2d9e0 4c 4f 53 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  LOSE</dt>.** <dd
2d9f0 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54 52 41 43  >^An SQLITE_TRAC
2da00 45 5f 43 4c 4f 53 45 20 63 61 6c 6c 62 61 63 6b  E_CLOSE callback
2da10 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e   is invoked when
2da20 20 61 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63   a database.** c
2da30 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 6f 73 65 73  onnection closes
2da40 2e 0a 2a 2a 20 5e 54 68 65 20 50 20 61 72 67 75  ..** ^The P argu
2da50 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65  ment is a pointe
2da60 72 20 74 6f 20 74 68 65 20 5b 64 61 74 61 62 61  r to the [databa
2da70 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f  se connection] o
2da80 62 6a 65 63 74 0a 2a 2a 20 61 6e 64 20 74 68 65  bject.** and the
2da90 20 58 20 61 72 67 75 6d 65 6e 74 20 69 73 20 75   X argument is u
2daa0 6e 75 73 65 64 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a  nused..** </dl>.
2dab0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2dac0 45 5f 54 52 41 43 45 5f 53 54 4d 54 20 20 20 20  E_TRACE_STMT    
2dad0 20 20 20 30 78 30 31 0a 23 64 65 66 69 6e 65 20     0x01.#define 
2dae0 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f  SQLITE_TRACE_PRO
2daf0 46 49 4c 45 20 20 20 20 30 78 30 32 0a 23 64 65  FILE    0x02.#de
2db00 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 43  fine SQLITE_TRAC
2db10 45 5f 52 4f 57 20 20 20 20 20 20 20 20 30 78 30  E_ROW        0x0
2db20 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  4.#define SQLITE
2db30 5f 54 52 41 43 45 5f 43 4c 4f 53 45 20 20 20 20  _TRACE_CLOSE    
2db40 20 20 30 78 30 38 0a 0a 2f 2a 0a 2a 2a 20 43 41    0x08../*.** CA
2db50 50 49 33 52 45 46 3a 20 53 51 4c 20 54 72 61 63  PI3REF: SQL Trac
2db60 65 20 48 6f 6f 6b 0a 2a 2a 20 4d 45 54 48 4f 44  e Hook.** METHOD
2db70 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
2db80 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 74 72 61  ^The sqlite3_tra
2db90 63 65 5f 76 32 28 44 2c 4d 2c 58 2c 50 29 20 69  ce_v2(D,M,X,P) i
2dba0 6e 74 65 72 66 61 63 65 20 72 65 67 69 73 74 65  nterface registe
2dbb0 72 73 20 61 20 74 72 61 63 65 20 63 61 6c 6c 62  rs a trace callb
2dbc0 61 63 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20  ack.** function 
2dbd0 58 20 61 67 61 69 6e 73 74 20 5b 64 61 74 61 62  X against [datab
2dbe0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
2dbf0 44 2c 20 75 73 69 6e 67 20 70 72 6f 70 65 72 74  D, using propert
2dc00 79 20 6d 61 73 6b 20 4d 0a 2a 2a 20 61 6e 64 20  y mask M.** and 
2dc10 63 6f 6e 74 65 78 74 20 70 6f 69 6e 74 65 72 20  context pointer 
2dc20 50 2e 20 20 5e 49 66 20 74 68 65 20 58 20 63 61  P.  ^If the X ca
2dc30 6c 6c 62 61 63 6b 20 69 73 0a 2a 2a 20 4e 55 4c  llback is.** NUL
2dc40 4c 20 6f 72 20 69 66 20 74 68 65 20 4d 20 6d 61  L or if the M ma
2dc50 73 6b 20 69 73 20 7a 65 72 6f 2c 20 74 68 65 6e  sk is zero, then
2dc60 20 74 72 61 63 69 6e 67 20 69 73 20 64 69 73 61   tracing is disa
2dc70 62 6c 65 64 2e 20 20 54 68 65 0a 2a 2a 20 4d 20  bled.  The.** M 
2dc80 61 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 20  argument should 
2dc90 62 65 20 74 68 65 20 62 69 74 77 69 73 65 20 4f  be the bitwise O
2dca0 52 2d 65 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  R-ed combination
2dcb0 20 6f 66 0a 2a 2a 20 7a 65 72 6f 20 6f 72 20 6d   of.** zero or m
2dcc0 6f 72 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43  ore [SQLITE_TRAC
2dcd0 45 5d 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 2a 2a  E] constants..**
2dce0 0a 2a 2a 20 5e 45 61 63 68 20 63 61 6c 6c 20 74  .** ^Each call t
2dcf0 6f 20 65 69 74 68 65 72 20 73 71 6c 69 74 65 33  o either sqlite3
2dd00 5f 74 72 61 63 65 28 29 20 6f 72 20 73 71 6c 69  _trace() or sqli
2dd10 74 65 33 5f 74 72 61 63 65 5f 76 32 28 29 20 6f  te3_trace_v2() o
2dd20 76 65 72 72 69 64 65 73 20 0a 2a 2a 20 28 63 61  verrides .** (ca
2dd30 6e 63 65 6c 73 29 20 61 6e 79 20 70 72 69 6f 72  ncels) any prior
2dd40 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65   calls to sqlite
2dd50 33 5f 74 72 61 63 65 28 29 20 6f 72 20 73 71 6c  3_trace() or sql
2dd60 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28 29 2e  ite3_trace_v2().
2dd70 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 58 20 63 61  .**.** ^The X ca
2dd80 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65  llback is invoke
2dd90 64 20 77 68 65 6e 65 76 65 72 20 61 6e 79 20 6f  d whenever any o
2dda0 66 20 74 68 65 20 65 76 65 6e 74 73 20 69 64 65  f the events ide
2ddb0 6e 74 69 66 69 65 64 20 62 79 20 0a 2a 2a 20 6d  ntified by .** m
2ddc0 61 73 6b 20 4d 20 6f 63 63 75 72 2e 20 20 5e 54  ask M occur.  ^T
2ddd0 68 65 20 69 6e 74 65 67 65 72 20 72 65 74 75 72  he integer retur
2dde0 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65  n value from the
2ddf0 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 63 75 72   callback is cur
2de00 72 65 6e 74 6c 79 0a 2a 2a 20 69 67 6e 6f 72 65  rently.** ignore
2de10 64 2c 20 74 68 6f 75 67 68 20 74 68 69 73 20 6d  d, though this m
2de20 61 79 20 63 68 61 6e 67 65 20 69 6e 20 66 75 74  ay change in fut
2de30 75 72 65 20 72 65 6c 65 61 73 65 73 2e 20 20 43  ure releases.  C
2de40 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 6d 70 6c 65  allback.** imple
2de50 6d 65 6e 74 61 74 69 6f 6e 73 20 73 68 6f 75 6c  mentations shoul
2de60 64 20 72 65 74 75 72 6e 20 7a 65 72 6f 20 74 6f  d return zero to
2de70 20 65 6e 73 75 72 65 20 66 75 74 75 72 65 20 63   ensure future c
2de80 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2a  ompatibility..**
2de90 0a 2a 2a 20 5e 41 20 74 72 61 63 65 20 63 61 6c  .** ^A trace cal
2dea0 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
2deb0 20 77 69 74 68 20 66 6f 75 72 20 61 72 67 75 6d   with four argum
2dec0 65 6e 74 73 3a 20 63 61 6c 6c 62 61 63 6b 28 54  ents: callback(T
2ded0 2c 43 2c 50 2c 58 29 2e 0a 2a 2a 20 5e 54 68 65  ,C,P,X)..** ^The
2dee0 20 54 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f   T argument is o
2def0 6e 65 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54  ne of the [SQLIT
2df00 45 5f 54 52 41 43 45 5d 0a 2a 2a 20 63 6f 6e 73  E_TRACE].** cons
2df10 74 61 6e 74 73 20 74 6f 20 69 6e 64 69 63 61 74  tants to indicat
2df20 65 20 77 68 79 20 74 68 65 20 63 61 6c 6c 62 61  e why the callba
2df30 63 6b 20 77 61 73 20 69 6e 76 6f 6b 65 64 2e 0a  ck was invoked..
2df40 2a 2a 20 5e 54 68 65 20 43 20 61 72 67 75 6d 65  ** ^The C argume
2df50 6e 74 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20  nt is a copy of 
2df60 74 68 65 20 63 6f 6e 74 65 78 74 20 70 6f 69 6e  the context poin
2df70 74 65 72 2e 0a 2a 2a 20 54 68 65 20 50 20 61 6e  ter..** The P an
2df80 64 20 58 20 61 72 67 75 6d 65 6e 74 73 20 61 72  d X arguments ar
2df90 65 20 70 6f 69 6e 74 65 72 73 20 77 68 6f 73 65  e pointers whose
2dfa0 20 6d 65 61 6e 69 6e 67 73 20 64 65 70 65 6e 64   meanings depend
2dfb0 20 6f 6e 20 54 2e 0a 2a 2a 0a 2a 2a 20 54 68 65   on T..**.** The
2dfc0 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76   sqlite3_trace_v
2dfd0 32 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73  2() interface is
2dfe0 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 72 65 70   intended to rep
2dff0 6c 61 63 65 20 74 68 65 20 6c 65 67 61 63 79 0a  lace the legacy.
2e000 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20 5b 73  ** interfaces [s
2e010 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20  qlite3_trace()] 
2e020 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f  and [sqlite3_pro
2e030 66 69 6c 65 28 29 5d 2c 20 62 6f 74 68 20 6f 66  file()], both of
2e040 20 77 68 69 63 68 0a 2a 2a 20 61 72 65 20 64 65   which.** are de
2e050 70 72 65 63 61 74 65 64 2e 0a 2a 2f 0a 53 51 4c  precated..*/.SQL
2e060 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
2e070 74 65 33 5f 74 72 61 63 65 5f 76 32 28 0a 20 20  te3_trace_v2(.  
2e080 73 71 6c 69 74 65 33 2a 2c 0a 20 20 75 6e 73 69  sqlite3*,.  unsi
2e090 67 6e 65 64 20 75 4d 61 73 6b 2c 0a 20 20 69 6e  gned uMask,.  in
2e0a0 74 28 2a 78 43 61 6c 6c 62 61 63 6b 29 28 75 6e  t(*xCallback)(un
2e0b0 73 69 67 6e 65 64 2c 76 6f 69 64 2a 2c 76 6f 69  signed,void*,voi
2e0c0 64 2a 2c 76 6f 69 64 2a 29 2c 0a 20 20 76 6f 69  d*,void*),.  voi
2e0d0 64 20 2a 70 43 74 78 0a 29 3b 0a 0a 2f 2a 0a 2a  d *pCtx.);../*.*
2e0e0 2a 20 43 41 50 49 33 52 45 46 3a 20 51 75 65 72  * CAPI3REF: Quer
2e0f0 79 20 50 72 6f 67 72 65 73 73 20 43 61 6c 6c 62  y Progress Callb
2e100 61 63 6b 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  acks.** METHOD: 
2e110 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54  sqlite3.**.** ^T
2e120 68 65 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72  he sqlite3_progr
2e130 65 73 73 5f 68 61 6e 64 6c 65 72 28 44 2c 4e 2c  ess_handler(D,N,
2e140 58 2c 50 29 20 69 6e 74 65 72 66 61 63 65 20 63  X,P) interface c
2e150 61 75 73 65 73 20 74 68 65 20 63 61 6c 6c 62 61  auses the callba
2e160 63 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 58  ck.** function X
2e170 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20 70   to be invoked p
2e180 65 72 69 6f 64 69 63 61 6c 6c 79 20 64 75 72 69  eriodically duri
2e190 6e 67 20 6c 6f 6e 67 20 72 75 6e 6e 69 6e 67 20  ng long running 
2e1a0 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c  calls to.** [sql
2e1b0 69 74 65 33 5f 65 78 65 63 28 29 5d 2c 20 5b 73  ite3_exec()], [s
2e1c0 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 61  qlite3_step()] a
2e1d0 6e 64 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f  nd [sqlite3_get_
2e1e0 74 61 62 6c 65 28 29 5d 20 66 6f 72 0a 2a 2a 20  table()] for.** 
2e1f0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2e200 69 6f 6e 20 44 2e 20 20 41 6e 20 65 78 61 6d 70  ion D.  An examp
2e210 6c 65 20 75 73 65 20 66 6f 72 20 74 68 69 73 0a  le use for this.
2e220 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  ** interface is 
2e230 74 6f 20 6b 65 65 70 20 61 20 47 55 49 20 75 70  to keep a GUI up
2e240 64 61 74 65 64 20 64 75 72 69 6e 67 20 61 20 6c  dated during a l
2e250 61 72 67 65 20 71 75 65 72 79 2e 0a 2a 2a 0a 2a  arge query..**.*
2e260 2a 20 5e 54 68 65 20 70 61 72 61 6d 65 74 65 72  * ^The parameter
2e270 20 50 20 69 73 20 70 61 73 73 65 64 20 74 68 72   P is passed thr
2e280 6f 75 67 68 20 61 73 20 74 68 65 20 6f 6e 6c 79  ough as the only
2e290 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68   parameter to th
2e2a0 65 20 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 66  e .** callback f
2e2b0 75 6e 63 74 69 6f 6e 20 58 2e 20 20 5e 54 68 65  unction X.  ^The
2e2c0 20 70 61 72 61 6d 65 74 65 72 20 4e 20 69 73 20   parameter N is 
2e2d0 74 68 65 20 61 70 70 72 6f 78 69 6d 61 74 65 20  the approximate 
2e2e0 6e 75 6d 62 65 72 20 6f 66 20 0a 2a 2a 20 5b 76  number of .** [v
2e2f0 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69  irtual machine i
2e300 6e 73 74 72 75 63 74 69 6f 6e 73 5d 20 74 68 61  nstructions] tha
2e310 74 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20  t are evaluated 
2e320 62 65 74 77 65 65 6e 20 73 75 63 63 65 73 73 69  between successi
2e330 76 65 0a 2a 2a 20 69 6e 76 6f 63 61 74 69 6f 6e  ve.** invocation
2e340 73 20 6f 66 20 74 68 65 20 63 61 6c 6c 62 61 63  s of the callbac
2e350 6b 20 58 2e 20 20 5e 49 66 20 4e 20 69 73 20 6c  k X.  ^If N is l
2e360 65 73 73 20 74 68 61 6e 20 6f 6e 65 20 74 68 65  ess than one the
2e370 6e 20 74 68 65 20 70 72 6f 67 72 65 73 73 0a 2a  n the progress.*
2e380 2a 20 68 61 6e 64 6c 65 72 20 69 73 20 64 69 73  * handler is dis
2e390 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e  abled..**.** ^On
2e3a0 6c 79 20 61 20 73 69 6e 67 6c 65 20 70 72 6f 67  ly a single prog
2e3b0 72 65 73 73 20 68 61 6e 64 6c 65 72 20 6d 61 79  ress handler may
2e3c0 20 62 65 20 64 65 66 69 6e 65 64 20 61 74 20 6f   be defined at o
2e3d0 6e 65 20 74 69 6d 65 20 70 65 72 0a 2a 2a 20 5b  ne time per.** [
2e3e0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2e3f0 69 6f 6e 5d 3b 20 73 65 74 74 69 6e 67 20 61 20  ion]; setting a 
2e400 6e 65 77 20 70 72 6f 67 72 65 73 73 20 68 61 6e  new progress han
2e410 64 6c 65 72 20 63 61 6e 63 65 6c 73 20 74 68 65  dler cancels the
2e420 0a 2a 2a 20 6f 6c 64 20 6f 6e 65 2e 20 20 5e 53  .** old one.  ^S
2e430 65 74 74 69 6e 67 20 70 61 72 61 6d 65 74 65 72  etting parameter
2e440 20 58 20 74 6f 20 4e 55 4c 4c 20 64 69 73 61 62   X to NULL disab
2e450 6c 65 73 20 74 68 65 20 70 72 6f 67 72 65 73 73  les the progress
2e460 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a 20 5e 54 68   handler..** ^Th
2e470 65 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c  e progress handl
2e480 65 72 20 69 73 20 61 6c 73 6f 20 64 69 73 61 62  er is also disab
2e490 6c 65 64 20 62 79 20 73 65 74 74 69 6e 67 20 4e  led by setting N
2e4a0 20 74 6f 20 61 20 76 61 6c 75 65 20 6c 65 73 73   to a value less
2e4b0 0a 2a 2a 20 74 68 61 6e 20 31 2e 0a 2a 2a 0a 2a  .** than 1..**.*
2e4c0 2a 20 5e 49 66 20 74 68 65 20 70 72 6f 67 72 65  * ^If the progre
2e4d0 73 73 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75  ss callback retu
2e4e0 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68  rns non-zero, th
2e4f0 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 0a 2a  e operation is.*
2e500 2a 20 69 6e 74 65 72 72 75 70 74 65 64 2e 20 20  * interrupted.  
2e510 54 68 69 73 20 66 65 61 74 75 72 65 20 63 61 6e  This feature can
2e520 20 62 65 20 75 73 65 64 20 74 6f 20 69 6d 70 6c   be used to impl
2e530 65 6d 65 6e 74 20 61 0a 2a 2a 20 22 43 61 6e 63  ement a.** "Canc
2e540 65 6c 22 20 62 75 74 74 6f 6e 20 6f 6e 20 61 20  el" button on a 
2e550 47 55 49 20 70 72 6f 67 72 65 73 73 20 64 69 61  GUI progress dia
2e560 6c 6f 67 20 62 6f 78 2e 0a 2a 2a 0a 2a 2a 20 54  log box..**.** T
2e570 68 65 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64  he progress hand
2e580 6c 65 72 20 63 61 6c 6c 62 61 63 6b 20 6d 75 73  ler callback mus
2e590 74 20 6e 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e  t not do anythin
2e5a0 67 20 74 68 61 74 20 77 69 6c 6c 20 6d 6f 64 69  g that will modi
2e5b0 66 79 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61  fy.** the databa
2e5c0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68  se connection th
2e5d0 61 74 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 70  at invoked the p
2e5e0 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 2e  rogress handler.
2e5f0 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b 73  .** Note that [s
2e600 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
2e610 32 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  2()] and [sqlite
2e620 33 5f 73 74 65 70 28 29 5d 20 62 6f 74 68 20 6d  3_step()] both m
2e630 6f 64 69 66 79 20 74 68 65 69 72 0a 2a 2a 20 64  odify their.** d
2e640 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2e650 6f 6e 73 20 66 6f 72 20 74 68 65 20 6d 65 61 6e  ons for the mean
2e660 69 6e 67 20 6f 66 20 22 6d 6f 64 69 66 79 22 20  ing of "modify" 
2e670 69 6e 20 74 68 69 73 20 70 61 72 61 67 72 61 70  in this paragrap
2e680 68 2e 0a 2a 2a 0a 2a 2f 0a 53 51 4c 49 54 45 5f  h..**.*/.SQLITE_
2e690 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33  API void sqlite3
2e6a0 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65  _progress_handle
2e6b0 72 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 2c  r(sqlite3*, int,
2e6c0 20 69 6e 74 28 2a 29 28 76 6f 69 64 2a 29 2c 20   int(*)(void*), 
2e6d0 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  void*);../*.** C
2e6e0 41 50 49 33 52 45 46 3a 20 4f 70 65 6e 69 6e 67  API3REF: Opening
2e6f0 20 41 20 4e 65 77 20 44 61 74 61 62 61 73 65 20   A New Database 
2e700 43 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 43 4f  Connection.** CO
2e710 4e 53 54 52 55 43 54 4f 52 3a 20 73 71 6c 69 74  NSTRUCTOR: sqlit
2e720 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20  e3.**.** ^These 
2e730 72 6f 75 74 69 6e 65 73 20 6f 70 65 6e 20 61 6e  routines open an
2e740 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65   SQLite database
2e750 20 66 69 6c 65 20 61 73 20 73 70 65 63 69 66 69   file as specifi
2e760 65 64 20 62 79 20 74 68 65 20 0a 2a 2a 20 66 69  ed by the .** fi
2e770 6c 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 2e  lename argument.
2e780 20 5e 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 61   ^The filename a
2e790 72 67 75 6d 65 6e 74 20 69 73 20 69 6e 74 65 72  rgument is inter
2e7a0 70 72 65 74 65 64 20 61 73 20 55 54 46 2d 38 20  preted as UTF-8 
2e7b0 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f  for.** sqlite3_o
2e7c0 70 65 6e 28 29 20 61 6e 64 20 73 71 6c 69 74 65  pen() and sqlite
2e7d0 33 5f 6f 70 65 6e 5f 76 32 28 29 20 61 6e 64 20  3_open_v2() and 
2e7e0 61 73 20 55 54 46 2d 31 36 20 69 6e 20 74 68 65  as UTF-16 in the
2e7f0 20 6e 61 74 69 76 65 20 62 79 74 65 0a 2a 2a 20   native byte.** 
2e800 6f 72 64 65 72 20 66 6f 72 20 73 71 6c 69 74 65  order for sqlite
2e810 33 5f 6f 70 65 6e 31 36 28 29 2e 20 5e 28 41 20  3_open16(). ^(A 
2e820 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
2e830 74 69 6f 6e 5d 20 68 61 6e 64 6c 65 20 69 73 20  tion] handle is 
2e840 75 73 75 61 6c 6c 79 0a 2a 2a 20 72 65 74 75 72  usually.** retur
2e850 6e 65 64 20 69 6e 20 2a 70 70 44 62 2c 20 65 76  ned in *ppDb, ev
2e860 65 6e 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f  en if an error o
2e870 63 63 75 72 73 2e 20 20 54 68 65 20 6f 6e 6c 79  ccurs.  The only
2e880 20 65 78 63 65 70 74 69 6f 6e 20 69 73 20 74 68   exception is th
2e890 61 74 0a 2a 2a 20 69 66 20 53 51 4c 69 74 65 20  at.** if SQLite 
2e8a0 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c  is unable to all
2e8b0 6f 63 61 74 65 20 6d 65 6d 6f 72 79 20 74 6f 20  ocate memory to 
2e8c0 68 6f 6c 64 20 74 68 65 20 5b 73 71 6c 69 74 65  hold the [sqlite
2e8d0 33 5d 20 6f 62 6a 65 63 74 2c 0a 2a 2a 20 61 20  3] object,.** a 
2e8e0 4e 55 4c 4c 20 77 69 6c 6c 20 62 65 20 77 72 69  NULL will be wri
2e8f0 74 74 65 6e 20 69 6e 74 6f 20 2a 70 70 44 62 20  tten into *ppDb 
2e900 69 6e 73 74 65 61 64 20 6f 66 20 61 20 70 6f 69  instead of a poi
2e910 6e 74 65 72 20 74 6f 20 74 68 65 20 5b 73 71 6c  nter to the [sql
2e920 69 74 65 33 5d 0a 2a 2a 20 6f 62 6a 65 63 74 2e  ite3].** object.
2e930 29 5e 20 5e 28 49 66 20 74 68 65 20 64 61 74 61  )^ ^(If the data
2e940 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 28  base is opened (
2e950 61 6e 64 2f 6f 72 20 63 72 65 61 74 65 64 29 20  and/or created) 
2e960 73 75 63 63 65 73 73 66 75 6c 6c 79 2c 20 74 68  successfully, th
2e970 65 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 4b  en.** [SQLITE_OK
2e980 5d 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20  ] is returned.  
2e990 4f 74 68 65 72 77 69 73 65 20 61 6e 20 5b 65 72  Otherwise an [er
2e9a0 72 6f 72 20 63 6f 64 65 5d 20 69 73 20 72 65 74  ror code] is ret
2e9b0 75 72 6e 65 64 2e 29 5e 20 5e 54 68 65 0a 2a 2a  urned.)^ ^The.**
2e9c0 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67   [sqlite3_errmsg
2e9d0 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f  ()] or [sqlite3_
2e9e0 65 72 72 6d 73 67 31 36 28 29 5d 20 72 6f 75 74  errmsg16()] rout
2e9f0 69 6e 65 73 20 63 61 6e 20 62 65 20 75 73 65 64  ines can be used
2ea00 20 74 6f 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 6e   to obtain.** an
2ea10 20 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67   English languag
2ea20 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66  e description of
2ea30 20 74 68 65 20 65 72 72 6f 72 20 66 6f 6c 6c 6f   the error follo
2ea40 77 69 6e 67 20 61 20 66 61 69 6c 75 72 65 20 6f  wing a failure o
2ea50 66 20 61 6e 79 0a 2a 2a 20 6f 66 20 74 68 65 20  f any.** of the 
2ea60 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 72  sqlite3_open() r
2ea70 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e  outines..**.** ^
2ea80 54 68 65 20 64 65 66 61 75 6c 74 20 65 6e 63 6f  The default enco
2ea90 64 69 6e 67 20 77 69 6c 6c 20 62 65 20 55 54 46  ding will be UTF
2eaa0 2d 38 20 66 6f 72 20 64 61 74 61 62 61 73 65 73  -8 for databases
2eab0 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 0a 2a   created using.*
2eac0 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29  * sqlite3_open()
2ead0 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   or sqlite3_open
2eae0 5f 76 32 28 29 2e 20 20 5e 54 68 65 20 64 65 66  _v2().  ^The def
2eaf0 61 75 6c 74 20 65 6e 63 6f 64 69 6e 67 20 66 6f  ault encoding fo
2eb00 72 20 64 61 74 61 62 61 73 65 73 0a 2a 2a 20 63  r databases.** c
2eb10 72 65 61 74 65 64 20 75 73 69 6e 67 20 73 71 6c  reated using sql
2eb20 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 20 77 69  ite3_open16() wi
2eb30 6c 6c 20 62 65 20 55 54 46 2d 31 36 20 69 6e 20  ll be UTF-16 in 
2eb40 74 68 65 20 6e 61 74 69 76 65 20 62 79 74 65 20  the native byte 
2eb50 6f 72 64 65 72 2e 0a 2a 2a 0a 2a 2a 20 57 68 65  order..**.** Whe
2eb60 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 65  ther or not an e
2eb70 72 72 6f 72 20 6f 63 63 75 72 73 20 77 68 65 6e  rror occurs when
2eb80 20 69 74 20 69 73 20 6f 70 65 6e 65 64 2c 20 72   it is opened, r
2eb90 65 73 6f 75 72 63 65 73 0a 2a 2a 20 61 73 73 6f  esources.** asso
2eba0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
2ebb0 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
2ebc0 74 69 6f 6e 5d 20 68 61 6e 64 6c 65 20 73 68 6f  tion] handle sho
2ebd0 75 6c 64 20 62 65 20 72 65 6c 65 61 73 65 64 20  uld be released 
2ebe0 62 79 0a 2a 2a 20 70 61 73 73 69 6e 67 20 69 74  by.** passing it
2ebf0 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f   to [sqlite3_clo
2ec00 73 65 28 29 5d 20 77 68 65 6e 20 69 74 20 69 73  se()] when it is
2ec10 20 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 71 75 69   no longer requi
2ec20 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  red..**.** The s
2ec30 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29  qlite3_open_v2()
2ec40 20 69 6e 74 65 72 66 61 63 65 20 77 6f 72 6b 73   interface works
2ec50 20 6c 69 6b 65 20 73 71 6c 69 74 65 33 5f 6f 70   like sqlite3_op
2ec60 65 6e 28 29 0a 2a 2a 20 65 78 63 65 70 74 20 74  en().** except t
2ec70 68 61 74 20 69 74 20 61 63 63 65 70 74 73 20 74  hat it accepts t
2ec80 77 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 70 61  wo additional pa
2ec90 72 61 6d 65 74 65 72 73 20 66 6f 72 20 61 64 64  rameters for add
2eca0 69 74 69 6f 6e 61 6c 20 63 6f 6e 74 72 6f 6c 0a  itional control.
2ecb0 2a 2a 20 6f 76 65 72 20 74 68 65 20 6e 65 77 20  ** over the new 
2ecc0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2ecd0 69 6f 6e 2e 20 20 5e 28 54 68 65 20 66 6c 61 67  ion.  ^(The flag
2ece0 73 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a  s parameter to.*
2ecf0 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  * sqlite3_open_v
2ed00 32 28 29 20 63 61 6e 20 74 61 6b 65 20 6f 6e 65  2() can take one
2ed10 20 6f 66 0a 2a 2a 20 74 68 65 20 66 6f 6c 6c 6f   of.** the follo
2ed20 77 69 6e 67 20 74 68 72 65 65 20 76 61 6c 75 65  wing three value
2ed30 73 2c 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63 6f  s, optionally co
2ed40 6d 62 69 6e 65 64 20 77 69 74 68 20 74 68 65 20  mbined with the 
2ed50 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  .** [SQLITE_OPEN
2ed60 5f 4e 4f 4d 55 54 45 58 5d 2c 20 5b 53 51 4c 49  _NOMUTEX], [SQLI
2ed70 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45  TE_OPEN_FULLMUTE
2ed80 58 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  X], [SQLITE_OPEN
2ed90 5f 53 48 41 52 45 44 43 41 43 48 45 5d 2c 0a 2a  _SHAREDCACHE],.*
2eda0 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 50  * [SQLITE_OPEN_P
2edb0 52 49 56 41 54 45 43 41 43 48 45 5d 2c 20 61 6e  RIVATECACHE], an
2edc0 64 2f 6f 72 20 5b 53 51 4c 49 54 45 5f 4f 50 45  d/or [SQLITE_OPE
2edd0 4e 5f 55 52 49 5d 20 66 6c 61 67 73 3a 29 5e 0a  N_URI] flags:)^.
2ede0 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5e 28  **.** <dl>.** ^(
2edf0 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  <dt>[SQLITE_OPEN
2ee00 5f 52 45 41 44 4f 4e 4c 59 5d 3c 2f 64 74 3e 0a  _READONLY]</dt>.
2ee10 2a 2a 20 3c 64 64 3e 54 68 65 20 64 61 74 61 62  ** <dd>The datab
2ee20 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 69 6e  ase is opened in
2ee30 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e   read-only mode.
2ee40 20 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73    If the databas
2ee50 65 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 61 6c  e does not.** al
2ee60 72 65 61 64 79 20 65 78 69 73 74 2c 20 61 6e 20  ready exist, an 
2ee70 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65  error is returne
2ee80 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20  d.</dd>)^.**.** 
2ee90 5e 28 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50  ^(<dt>[SQLITE_OP
2eea0 45 4e 5f 52 45 41 44 57 52 49 54 45 5d 3c 2f 64  EN_READWRITE]</d
2eeb0 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 64 61  t>.** <dd>The da
2eec0 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64  tabase is opened
2eed0 20 66 6f 72 20 72 65 61 64 69 6e 67 20 61 6e 64   for reading and
2eee0 20 77 72 69 74 69 6e 67 20 69 66 20 70 6f 73 73   writing if poss
2eef0 69 62 6c 65 2c 20 6f 72 20 72 65 61 64 69 6e 67  ible, or reading
2ef00 0a 2a 2a 20 6f 6e 6c 79 20 69 66 20 74 68 65 20  .** only if the 
2ef10 66 69 6c 65 20 69 73 20 77 72 69 74 65 20 70 72  file is write pr
2ef20 6f 74 65 63 74 65 64 20 62 79 20 74 68 65 20 6f  otected by the o
2ef30 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e  perating system.
2ef40 20 20 49 6e 20 65 69 74 68 65 72 0a 2a 2a 20 63    In either.** c
2ef50 61 73 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ase the database
2ef60 20 6d 75 73 74 20 61 6c 72 65 61 64 79 20 65 78   must already ex
2ef70 69 73 74 2c 20 6f 74 68 65 72 77 69 73 65 20 61  ist, otherwise a
2ef80 6e 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72  n error is retur
2ef90 6e 65 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a  ned.</dd>)^.**.*
2efa0 2a 20 5e 28 3c 64 74 3e 5b 53 51 4c 49 54 45 5f  * ^(<dt>[SQLITE_
2efb0 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45 5d 20  OPEN_READWRITE] 
2efc0 7c 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43  | [SQLITE_OPEN_C
2efd0 52 45 41 54 45 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c  REATE]</dt>.** <
2efe0 64 64 3e 54 68 65 20 64 61 74 61 62 61 73 65 20  dd>The database 
2eff0 69 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65  is opened for re
2f000 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e  ading and writin
2f010 67 2c 20 61 6e 64 20 69 73 20 63 72 65 61 74 65  g, and is create
2f020 64 20 69 66 0a 2a 2a 20 69 74 20 64 6f 65 73 20  d if.** it does 
2f030 6e 6f 74 20 61 6c 72 65 61 64 79 20 65 78 69 73  not already exis
2f040 74 2e 20 54 68 69 73 20 69 73 20 74 68 65 20 62  t. This is the b
2f050 65 68 61 76 69 6f 72 20 74 68 61 74 20 69 73 20  ehavior that is 
2f060 61 6c 77 61 79 73 20 75 73 65 64 20 66 6f 72 0a  always used for.
2f070 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  ** sqlite3_open(
2f080 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 70  ) and sqlite3_op
2f090 65 6e 31 36 28 29 2e 3c 2f 64 64 3e 29 5e 0a 2a  en16().</dd>)^.*
2f0a0 2a 20 3c 2f 64 6c 3e 0a 2a 2a 0a 2a 2a 20 49 66  * </dl>.**.** If
2f0b0 20 74 68 65 20 33 72 64 20 70 61 72 61 6d 65 74   the 3rd paramet
2f0c0 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70  er to sqlite3_op
2f0d0 65 6e 5f 76 32 28 29 20 69 73 20 6e 6f 74 20 6f  en_v2() is not o
2f0e0 6e 65 20 6f 66 20 74 68 65 0a 2a 2a 20 63 6f 6d  ne of the.** com
2f0f0 62 69 6e 61 74 69 6f 6e 73 20 73 68 6f 77 6e 20  binations shown 
2f100 61 62 6f 76 65 20 6f 70 74 69 6f 6e 61 6c 6c 79  above optionally
2f110 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 6f   combined with o
2f120 74 68 65 72 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  ther.** [SQLITE_
2f130 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 20 7c 20  OPEN_READONLY | 
2f140 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 2a 20 62 69  SQLITE_OPEN_* bi
2f150 74 73 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20  ts].** then the 
2f160 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65  behavior is unde
2f170 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  fined..**.** ^If
2f180 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45   the [SQLITE_OPE
2f190 4e 5f 4e 4f 4d 55 54 45 58 5d 20 66 6c 61 67 20  N_NOMUTEX] flag 
2f1a0 69 73 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65  is set, then the
2f1b0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
2f1c0 74 69 6f 6e 0a 2a 2a 20 6f 70 65 6e 73 20 69 6e  tion.** opens in
2f1d0 20 74 68 65 20 6d 75 6c 74 69 2d 74 68 72 65 61   the multi-threa
2f1e0 64 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  d [threading mod
2f1f0 65 5d 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68  e] as long as th
2f200 65 20 73 69 6e 67 6c 65 2d 74 68 72 65 61 64 0a  e single-thread.
2f210 2a 2a 20 6d 6f 64 65 20 68 61 73 20 6e 6f 74 20  ** mode has not 
2f220 62 65 65 6e 20 73 65 74 20 61 74 20 63 6f 6d 70  been set at comp
2f230 69 6c 65 2d 74 69 6d 65 20 6f 72 20 73 74 61 72  ile-time or star
2f240 74 2d 74 69 6d 65 2e 20 20 5e 49 66 20 74 68 65  t-time.  ^If the
2f250 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  .** [SQLITE_OPEN
2f260 5f 46 55 4c 4c 4d 55 54 45 58 5d 20 66 6c 61 67  _FULLMUTEX] flag
2f270 20 69 73 20 73 65 74 20 74 68 65 6e 20 74 68 65   is set then the
2f280 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
2f290 74 69 6f 6e 20 6f 70 65 6e 73 0a 2a 2a 20 69 6e  tion opens.** in
2f2a0 20 74 68 65 20 73 65 72 69 61 6c 69 7a 65 64 20   the serialized 
2f2b0 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
2f2c0 20 75 6e 6c 65 73 73 20 73 69 6e 67 6c 65 2d 74   unless single-t
2f2d0 68 72 65 61 64 20 77 61 73 0a 2a 2a 20 70 72 65  hread was.** pre
2f2e0 76 69 6f 75 73 6c 79 20 73 65 6c 65 63 74 65 64  viously selected
2f2f0 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65   at compile-time
2f300 20 6f 72 20 73 74 61 72 74 2d 74 69 6d 65 2e 0a   or start-time..
2f310 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f  ** ^The [SQLITE_
2f320 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45  OPEN_SHAREDCACHE
2f330 5d 20 66 6c 61 67 20 63 61 75 73 65 73 20 74 68  ] flag causes th
2f340 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
2f350 63 74 69 6f 6e 20 74 6f 20 62 65 0a 2a 2a 20 65  ction to be.** e
2f360 6c 69 67 69 62 6c 65 20 74 6f 20 75 73 65 20 5b  ligible to use [
2f370 73 68 61 72 65 64 20 63 61 63 68 65 20 6d 6f 64  shared cache mod
2f380 65 5d 2c 20 72 65 67 61 72 64 6c 65 73 73 20 6f  e], regardless o
2f390 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  f whether or not
2f3a0 20 73 68 61 72 65 64 0a 2a 2a 20 63 61 63 68 65   shared.** cache
2f3b0 20 69 73 20 65 6e 61 62 6c 65 64 20 75 73 69 6e   is enabled usin
2f3c0 67 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  g [sqlite3_enabl
2f3d0 65 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28 29  e_shared_cache()
2f3e0 5d 2e 20 20 5e 54 68 65 0a 2a 2a 20 5b 53 51 4c  ].  ^The.** [SQL
2f3f0 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45  ITE_OPEN_PRIVATE
2f400 43 41 43 48 45 5d 20 66 6c 61 67 20 63 61 75 73  CACHE] flag caus
2f410 65 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  es the database 
2f420 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 6e 6f  connection to no
2f430 74 0a 2a 2a 20 70 61 72 74 69 63 69 70 61 74 65  t.** participate
2f440 20 69 6e 20 5b 73 68 61 72 65 64 20 63 61 63 68   in [shared cach
2f450 65 20 6d 6f 64 65 5d 20 65 76 65 6e 20 69 66 20  e mode] even if 
2f460 69 74 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 2a  it is enabled..*
2f470 2a 0a 2a 2a 20 5e 54 68 65 20 66 6f 75 72 74 68  *.** ^The fourth
2f480 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71   parameter to sq
2f490 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
2f4a0 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  is the name of t
2f4b0 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76  he.** [sqlite3_v
2f4c0 66 73 5d 20 6f 62 6a 65 63 74 20 74 68 61 74 20  fs] object that 
2f4d0 64 65 66 69 6e 65 73 20 74 68 65 20 6f 70 65 72  defines the oper
2f4e0 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74  ating system int
2f4f0 65 72 66 61 63 65 20 74 68 61 74 0a 2a 2a 20 74  erface that.** t
2f500 68 65 20 6e 65 77 20 64 61 74 61 62 61 73 65 20  he new database 
2f510 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 68 6f 75 6c  connection shoul
2f520 64 20 75 73 65 2e 20 20 5e 49 66 20 74 68 65 20  d use.  ^If the 
2f530 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72  fourth parameter
2f540 20 69 73 0a 2a 2a 20 61 20 4e 55 4c 4c 20 70 6f   is.** a NULL po
2f550 69 6e 74 65 72 20 74 68 65 6e 20 74 68 65 20 64  inter then the d
2f560 65 66 61 75 6c 74 20 5b 73 71 6c 69 74 65 33 5f  efault [sqlite3_
2f570 76 66 73 5d 20 6f 62 6a 65 63 74 20 69 73 20 75  vfs] object is u
2f580 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74  sed..**.** ^If t
2f590 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 22  he filename is "
2f5a0 3a 6d 65 6d 6f 72 79 3a 22 2c 20 74 68 65 6e 20  :memory:", then 
2f5b0 61 20 70 72 69 76 61 74 65 2c 20 74 65 6d 70 6f  a private, tempo
2f5c0 72 61 72 79 20 69 6e 2d 6d 65 6d 6f 72 79 20 64  rary in-memory d
2f5d0 61 74 61 62 61 73 65 0a 2a 2a 20 69 73 20 63 72  atabase.** is cr
2f5e0 65 61 74 65 64 20 66 6f 72 20 74 68 65 20 63 6f  eated for the co
2f5f0 6e 6e 65 63 74 69 6f 6e 2e 20 20 5e 54 68 69 73  nnection.  ^This
2f600 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62   in-memory datab
2f610 61 73 65 20 77 69 6c 6c 20 76 61 6e 69 73 68 20  ase will vanish 
2f620 77 68 65 6e 0a 2a 2a 20 74 68 65 20 64 61 74 61  when.** the data
2f630 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
2f640 69 73 20 63 6c 6f 73 65 64 2e 20 20 46 75 74 75  is closed.  Futu
2f650 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  re versions of S
2f660 51 4c 69 74 65 20 6d 69 67 68 74 0a 2a 2a 20 6d  QLite might.** m
2f670 61 6b 65 20 75 73 65 20 6f 66 20 61 64 64 69 74  ake use of addit
2f680 69 6f 6e 61 6c 20 73 70 65 63 69 61 6c 20 66 69  ional special fi
2f690 6c 65 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67  lenames that beg
2f6a0 69 6e 20 77 69 74 68 20 74 68 65 20 22 3a 22 20  in with the ":" 
2f6b0 63 68 61 72 61 63 74 65 72 2e 0a 2a 2a 20 49 74  character..** It
2f6c0 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20   is recommended 
2f6d0 74 68 61 74 20 77 68 65 6e 20 61 20 64 61 74 61  that when a data
2f6e0 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 61 63  base filename ac
2f6f0 74 75 61 6c 6c 79 20 64 6f 65 73 20 62 65 67 69  tually does begi
2f700 6e 20 77 69 74 68 0a 2a 2a 20 61 20 22 3a 22 20  n with.** a ":" 
2f710 63 68 61 72 61 63 74 65 72 20 79 6f 75 20 73 68  character you sh
2f720 6f 75 6c 64 20 70 72 65 66 69 78 20 74 68 65 20  ould prefix the 
2f730 66 69 6c 65 6e 61 6d 65 20 77 69 74 68 20 61 20  filename with a 
2f740 70 61 74 68 6e 61 6d 65 20 73 75 63 68 20 61 73  pathname such as
2f750 0a 2a 2a 20 22 2e 2f 22 20 74 6f 20 61 76 6f 69  .** "./" to avoi
2f760 64 20 61 6d 62 69 67 75 69 74 79 2e 0a 2a 2a 0a  d ambiguity..**.
2f770 2a 2a 20 5e 49 66 20 74 68 65 20 66 69 6c 65 6e  ** ^If the filen
2f780 61 6d 65 20 69 73 20 61 6e 20 65 6d 70 74 79 20  ame is an empty 
2f790 73 74 72 69 6e 67 2c 20 74 68 65 6e 20 61 20 70  string, then a p
2f7a0 72 69 76 61 74 65 2c 20 74 65 6d 70 6f 72 61 72  rivate, temporar
2f7b0 79 0a 2a 2a 20 6f 6e 2d 64 69 73 6b 20 64 61 74  y.** on-disk dat
2f7c0 61 62 61 73 65 20 77 69 6c 6c 20 62 65 20 63 72  abase will be cr
2f7d0 65 61 74 65 64 2e 20 20 5e 54 68 69 73 20 70 72  eated.  ^This pr
2f7e0 69 76 61 74 65 20 64 61 74 61 62 61 73 65 20 77  ivate database w
2f7f0 69 6c 6c 20 62 65 0a 2a 2a 20 61 75 74 6f 6d 61  ill be.** automa
2f800 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20  tically deleted 
2f810 61 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 64  as soon as the d
2f820 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2f830 6f 6e 20 69 73 20 63 6c 6f 73 65 64 2e 0a 2a 2a  on is closed..**
2f840 0a 2a 2a 20 5b 5b 55 52 49 20 66 69 6c 65 6e 61  .** [[URI filena
2f850 6d 65 73 20 69 6e 20 73 71 6c 69 74 65 33 5f 6f  mes in sqlite3_o
2f860 70 65 6e 28 29 5d 5d 20 3c 68 33 3e 55 52 49 20  pen()]] <h3>URI 
2f870 46 69 6c 65 6e 61 6d 65 73 3c 2f 68 33 3e 0a 2a  Filenames</h3>.*
2f880 2a 0a 2a 2a 20 5e 49 66 20 5b 55 52 49 20 66 69  *.** ^If [URI fi
2f890 6c 65 6e 61 6d 65 5d 20 69 6e 74 65 72 70 72 65  lename] interpre
2f8a0 74 61 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65  tation is enable
2f8b0 64 2c 20 61 6e 64 20 74 68 65 20 66 69 6c 65 6e  d, and the filen
2f8c0 61 6d 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20  ame argument.** 
2f8d0 62 65 67 69 6e 73 20 77 69 74 68 20 22 66 69 6c  begins with "fil
2f8e0 65 3a 22 2c 20 74 68 65 6e 20 74 68 65 20 66 69  e:", then the fi
2f8f0 6c 65 6e 61 6d 65 20 69 73 20 69 6e 74 65 72 70  lename is interp
2f900 72 65 74 65 64 20 61 73 20 61 20 55 52 49 2e 20  reted as a URI. 
2f910 5e 55 52 49 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65  ^URI.** filename
2f920 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20   interpretation 
2f930 69 73 20 65 6e 61 62 6c 65 64 20 69 66 20 74 68  is enabled if th
2f940 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55  e [SQLITE_OPEN_U
2f950 52 49 5d 20 66 6c 61 67 20 69 73 0a 2a 2a 20 73  RI] flag is.** s
2f960 65 74 20 69 6e 20 74 68 65 20 74 68 69 72 64 20  et in the third 
2f970 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69  argument to sqli
2f980 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2c 20 6f  te3_open_v2(), o
2f990 72 20 69 66 20 69 74 20 68 61 73 0a 2a 2a 20 62  r if it has.** b
2f9a0 65 65 6e 20 65 6e 61 62 6c 65 64 20 67 6c 6f 62  een enabled glob
2f9b0 61 6c 6c 79 20 75 73 69 6e 67 20 74 68 65 20 5b  ally using the [
2f9c0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52  SQLITE_CONFIG_UR
2f9d0 49 5d 20 6f 70 74 69 6f 6e 20 77 69 74 68 20 74  I] option with t
2f9e0 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63  he.** [sqlite3_c
2f9f0 6f 6e 66 69 67 28 29 5d 20 6d 65 74 68 6f 64 20  onfig()] method 
2fa00 6f 72 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54  or by the [SQLIT
2fa10 45 5f 55 53 45 5f 55 52 49 5d 20 63 6f 6d 70 69  E_USE_URI] compi
2fa20 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a  le-time option..
2fa30 2a 2a 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 20  ** URI filename 
2fa40 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 69  interpretation i
2fa50 73 20 74 75 72 6e 65 64 20 6f 66 66 0a 2a 2a 20  s turned off.** 
2fa60 62 79 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20  by default, but 
2fa70 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20  future releases 
2fa80 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20  of SQLite might 
2fa90 65 6e 61 62 6c 65 20 55 52 49 20 66 69 6c 65 6e  enable URI filen
2faa0 61 6d 65 0a 2a 2a 20 69 6e 74 65 72 70 72 65 74  ame.** interpret
2fab0 61 74 69 6f 6e 20 62 79 20 64 65 66 61 75 6c 74  ation by default
2fac0 2e 20 20 53 65 65 20 22 5b 55 52 49 20 66 69 6c  .  See "[URI fil
2fad0 65 6e 61 6d 65 73 5d 22 20 66 6f 72 20 61 64 64  enames]" for add
2fae0 69 74 69 6f 6e 61 6c 0a 2a 2a 20 69 6e 66 6f 72  itional.** infor
2faf0 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 55 52  mation..**.** UR
2fb00 49 20 66 69 6c 65 6e 61 6d 65 73 20 61 72 65 20  I filenames are 
2fb10 70 61 72 73 65 64 20 61 63 63 6f 72 64 69 6e 67  parsed according
2fb20 20 74 6f 20 52 46 43 20 33 39 38 36 2e 20 5e 49   to RFC 3986. ^I
2fb30 66 20 74 68 65 20 55 52 49 20 63 6f 6e 74 61 69  f the URI contai
2fb40 6e 73 20 61 6e 0a 2a 2a 20 61 75 74 68 6f 72 69  ns an.** authori
2fb50 74 79 2c 20 74 68 65 6e 20 69 74 20 6d 75 73 74  ty, then it must
2fb60 20 62 65 20 65 69 74 68 65 72 20 61 6e 20 65 6d   be either an em
2fb70 70 74 79 20 73 74 72 69 6e 67 20 6f 72 20 74 68  pty string or th
2fb80 65 20 73 74 72 69 6e 67 20 0a 2a 2a 20 22 6c 6f  e string .** "lo
2fb90 63 61 6c 68 6f 73 74 22 2e 20 5e 49 66 20 74 68  calhost". ^If th
2fba0 65 20 61 75 74 68 6f 72 69 74 79 20 69 73 20 6e  e authority is n
2fbb0 6f 74 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  ot an empty stri
2fbc0 6e 67 20 6f 72 20 22 6c 6f 63 61 6c 68 6f 73 74  ng or "localhost
2fbd0 22 2c 20 61 6e 20 0a 2a 2a 20 65 72 72 6f 72 20  ", an .** error 
2fbe0 69 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74  is returned to t
2fbf0 68 65 20 63 61 6c 6c 65 72 2e 20 5e 54 68 65 20  he caller. ^The 
2fc00 66 72 61 67 6d 65 6e 74 20 63 6f 6d 70 6f 6e 65  fragment compone
2fc10 6e 74 20 6f 66 20 61 20 55 52 49 2c 20 69 66 20  nt of a URI, if 
2fc20 0a 2a 2a 20 70 72 65 73 65 6e 74 2c 20 69 73 20  .** present, is 
2fc30 69 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  ignored..**.** ^
2fc40 53 51 4c 69 74 65 20 75 73 65 73 20 74 68 65 20  SQLite uses the 
2fc50 70 61 74 68 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f  path component o
2fc60 66 20 74 68 65 20 55 52 49 20 61 73 20 74 68 65  f the URI as the
2fc70 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 69 73   name of the dis
2fc80 6b 20 66 69 6c 65 0a 2a 2a 20 77 68 69 63 68 20  k file.** which 
2fc90 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 64 61 74  contains the dat
2fca0 61 62 61 73 65 2e 20 5e 49 66 20 74 68 65 20 70  abase. ^If the p
2fcb0 61 74 68 20 62 65 67 69 6e 73 20 77 69 74 68 20  ath begins with 
2fcc0 61 20 27 2f 27 20 63 68 61 72 61 63 74 65 72 2c  a '/' character,
2fcd0 20 0a 2a 2a 20 74 68 65 6e 20 69 74 20 69 73 20   .** then it is 
2fce0 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61  interpreted as a
2fcf0 6e 20 61 62 73 6f 6c 75 74 65 20 70 61 74 68 2e  n absolute path.
2fd00 20 5e 49 66 20 74 68 65 20 70 61 74 68 20 64 6f   ^If the path do
2fd10 65 73 20 6e 6f 74 20 62 65 67 69 6e 20 0a 2a 2a  es not begin .**
2fd20 20 77 69 74 68 20 61 20 27 2f 27 20 28 6d 65 61   with a '/' (mea
2fd30 6e 69 6e 67 20 74 68 61 74 20 74 68 65 20 61 75  ning that the au
2fd40 74 68 6f 72 69 74 79 20 73 65 63 74 69 6f 6e 20  thority section 
2fd50 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  is omitted from 
2fd60 74 68 65 20 55 52 49 29 0a 2a 2a 20 74 68 65 6e  the URI).** then
2fd70 20 74 68 65 20 70 61 74 68 20 69 73 20 69 6e 74   the path is int
2fd80 65 72 70 72 65 74 65 64 20 61 73 20 61 20 72 65  erpreted as a re
2fd90 6c 61 74 69 76 65 20 70 61 74 68 2e 20 0a 2a 2a  lative path. .**
2fda0 20 5e 28 4f 6e 20 77 69 6e 64 6f 77 73 2c 20 74   ^(On windows, t
2fdb0 68 65 20 66 69 72 73 74 20 63 6f 6d 70 6f 6e 65  he first compone
2fdc0 6e 74 20 6f 66 20 61 6e 20 61 62 73 6f 6c 75 74  nt of an absolut
2fdd0 65 20 70 61 74 68 20 0a 2a 2a 20 69 73 20 61 20  e path .** is a 
2fde0 64 72 69 76 65 20 73 70 65 63 69 66 69 63 61 74  drive specificat
2fdf0 69 6f 6e 20 28 65 2e 67 2e 20 22 43 3a 22 29 2e  ion (e.g. "C:").
2fe00 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 63 6f 72 65 20  )^.**.** [[core 
2fe10 55 52 49 20 71 75 65 72 79 20 70 61 72 61 6d 65  URI query parame
2fe20 74 65 72 73 5d 5d 0a 2a 2a 20 54 68 65 20 71 75  ters]].** The qu
2fe30 65 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66  ery component of
2fe40 20 61 20 55 52 49 20 6d 61 79 20 63 6f 6e 74 61   a URI may conta
2fe50 69 6e 20 70 61 72 61 6d 65 74 65 72 73 20 74 68  in parameters th
2fe60 61 74 20 61 72 65 20 69 6e 74 65 72 70 72 65 74  at are interpret
2fe70 65 64 0a 2a 2a 20 65 69 74 68 65 72 20 62 79 20  ed.** either by 
2fe80 53 51 4c 69 74 65 20 69 74 73 65 6c 66 2c 20 6f  SQLite itself, o
2fe90 72 20 62 79 20 61 20 5b 56 46 53 20 7c 20 63 75  r by a [VFS | cu
2fea0 73 74 6f 6d 20 56 46 53 20 69 6d 70 6c 65 6d 65  stom VFS impleme
2feb0 6e 74 61 74 69 6f 6e 5d 2e 0a 2a 2a 20 53 51 4c  ntation]..** SQL
2fec0 69 74 65 20 61 6e 64 20 69 74 73 20 62 75 69 6c  ite and its buil
2fed0 74 2d 69 6e 20 5b 56 46 53 65 73 5d 20 69 6e 74  t-in [VFSes] int
2fee0 65 72 70 72 65 74 20 74 68 65 0a 2a 2a 20 66 6f  erpret the.** fo
2fef0 6c 6c 6f 77 69 6e 67 20 71 75 65 72 79 20 70 61  llowing query pa
2ff00 72 61 6d 65 74 65 72 73 3a 0a 2a 2a 0a 2a 2a 20  rameters:.**.** 
2ff10 3c 75 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e 20 3c  <ul>.**   <li> <
2ff20 62 3e 76 66 73 3c 2f 62 3e 3a 20 5e 54 68 65 20  b>vfs</b>: ^The 
2ff30 22 76 66 73 22 20 70 61 72 61 6d 65 74 65 72 20  "vfs" parameter 
2ff40 6d 61 79 20 62 65 20 75 73 65 64 20 74 6f 20 73  may be used to s
2ff50 70 65 63 69 66 79 20 74 68 65 20 6e 61 6d 65 20  pecify the name 
2ff60 6f 66 0a 2a 2a 20 20 20 20 20 61 20 56 46 53 20  of.**     a VFS 
2ff70 6f 62 6a 65 63 74 20 74 68 61 74 20 70 72 6f 76  object that prov
2ff80 69 64 65 73 20 74 68 65 20 6f 70 65 72 61 74 69  ides the operati
2ff90 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66  ng system interf
2ffa0 61 63 65 20 74 68 61 74 20 73 68 6f 75 6c 64 0a  ace that should.
2ffb0 2a 2a 20 20 20 20 20 62 65 20 75 73 65 64 20 74  **     be used t
2ffc0 6f 20 61 63 63 65 73 73 20 74 68 65 20 64 61 74  o access the dat
2ffd0 61 62 61 73 65 20 66 69 6c 65 20 6f 6e 20 64 69  abase file on di
2ffe0 73 6b 2e 20 5e 49 66 20 74 68 69 73 20 6f 70 74  sk. ^If this opt
2fff0 69 6f 6e 20 69 73 20 73 65 74 20 74 6f 0a 2a 2a  ion is set to.**
30000 20 20 20 20 20 61 6e 20 65 6d 70 74 79 20 73 74       an empty st
30010 72 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74  ring the default
30020 20 56 46 53 20 6f 62 6a 65 63 74 20 69 73 20 75   VFS object is u
30030 73 65 64 2e 20 5e 53 70 65 63 69 66 79 69 6e 67  sed. ^Specifying
30040 20 61 6e 20 75 6e 6b 6e 6f 77 6e 0a 2a 2a 20 20   an unknown.**  
30050 20 20 20 56 46 53 20 69 73 20 61 6e 20 65 72 72     VFS is an err
30060 6f 72 2e 20 5e 49 66 20 73 71 6c 69 74 65 33 5f  or. ^If sqlite3_
30070 6f 70 65 6e 5f 76 32 28 29 20 69 73 20 75 73 65  open_v2() is use
30080 64 20 61 6e 64 20 74 68 65 20 76 66 73 20 6f 70  d and the vfs op
30090 74 69 6f 6e 20 69 73 0a 2a 2a 20 20 20 20 20 70  tion is.**     p
300a0 72 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65  resent, then the
300b0 20 56 46 53 20 73 70 65 63 69 66 69 65 64 20 62   VFS specified b
300c0 79 20 74 68 65 20 6f 70 74 69 6f 6e 20 74 61 6b  y the option tak
300d0 65 73 20 70 72 65 63 65 64 65 6e 63 65 20 6f 76  es precedence ov
300e0 65 72 0a 2a 2a 20 20 20 20 20 74 68 65 20 76 61  er.**     the va
300f0 6c 75 65 20 70 61 73 73 65 64 20 61 73 20 74 68  lue passed as th
30100 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
30110 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70  er to sqlite3_op
30120 65 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 20  en_v2()..**.**  
30130 20 3c 6c 69 3e 20 3c 62 3e 6d 6f 64 65 3c 2f 62   <li> <b>mode</b
30140 3e 3a 20 5e 28 54 68 65 20 6d 6f 64 65 20 70 61  >: ^(The mode pa
30150 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 73  rameter may be s
30160 65 74 20 74 6f 20 65 69 74 68 65 72 20 22 72 6f  et to either "ro
30170 22 2c 20 22 72 77 22 2c 0a 2a 2a 20 20 20 20 20  ", "rw",.**     
30180 22 72 77 63 22 2c 20 6f 72 20 22 6d 65 6d 6f 72  "rwc", or "memor
30190 79 22 2e 20 41 74 74 65 6d 70 74 69 6e 67 20 74  y". Attempting t
301a0 6f 20 73 65 74 20 69 74 20 74 6f 20 61 6e 79 20  o set it to any 
301b0 6f 74 68 65 72 20 76 61 6c 75 65 20 69 73 0a 2a  other value is.*
301c0 2a 20 20 20 20 20 61 6e 20 65 72 72 6f 72 29 5e  *     an error)^
301d0 2e 20 0a 2a 2a 20 20 20 20 20 5e 49 66 20 22 72  . .**     ^If "r
301e0 6f 22 20 69 73 20 73 70 65 63 69 66 69 65 64 2c  o" is specified,
301f0 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62 61   then the databa
30200 73 65 20 69 73 20 6f 70 65 6e 65 64 20 66 6f 72  se is opened for
30210 20 72 65 61 64 2d 6f 6e 6c 79 20 0a 2a 2a 20 20   read-only .**  
30220 20 20 20 61 63 63 65 73 73 2c 20 6a 75 73 74 20     access, just 
30230 61 73 20 69 66 20 74 68 65 20 5b 53 51 4c 49 54  as if the [SQLIT
30240 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 5d  E_OPEN_READONLY]
30250 20 66 6c 61 67 20 68 61 64 20 62 65 65 6e 20 73   flag had been s
30260 65 74 20 69 6e 20 74 68 65 20 0a 2a 2a 20 20 20  et in the .**   
30270 20 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74    third argument
30280 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   to sqlite3_open
30290 5f 76 32 28 29 2e 20 5e 49 66 20 74 68 65 20 6d  _v2(). ^If the m
302a0 6f 64 65 20 6f 70 74 69 6f 6e 20 69 73 20 73 65  ode option is se
302b0 74 20 74 6f 20 0a 2a 2a 20 20 20 20 20 22 72 77  t to .**     "rw
302c0 22 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74 61  ", then the data
302d0 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 66  base is opened f
302e0 6f 72 20 72 65 61 64 2d 77 72 69 74 65 20 28 62  or read-write (b
302f0 75 74 20 6e 6f 74 20 63 72 65 61 74 65 29 20 0a  ut not create) .
30300 2a 2a 20 20 20 20 20 61 63 63 65 73 73 2c 20 61  **     access, a
30310 73 20 69 66 20 53 51 4c 49 54 45 5f 4f 50 45 4e  s if SQLITE_OPEN
30320 5f 52 45 41 44 57 52 49 54 45 20 28 62 75 74 20  _READWRITE (but 
30330 6e 6f 74 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  not SQLITE_OPEN_
30340 43 52 45 41 54 45 29 20 68 61 64 20 0a 2a 2a 20  CREATE) had .** 
30350 20 20 20 20 62 65 65 6e 20 73 65 74 2e 20 5e 56      been set. ^V
30360 61 6c 75 65 20 22 72 77 63 22 20 69 73 20 65 71  alue "rwc" is eq
30370 75 69 76 61 6c 65 6e 74 20 74 6f 20 73 65 74 74  uivalent to sett
30380 69 6e 67 20 62 6f 74 68 20 0a 2a 2a 20 20 20 20  ing both .**    
30390 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41   SQLITE_OPEN_REA
303a0 44 57 52 49 54 45 20 61 6e 64 20 53 51 4c 49 54  DWRITE and SQLIT
303b0 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 2e 20 20  E_OPEN_CREATE.  
303c0 5e 49 66 20 74 68 65 20 6d 6f 64 65 20 6f 70 74  ^If the mode opt
303d0 69 6f 6e 20 69 73 0a 2a 2a 20 20 20 20 20 73 65  ion is.**     se
303e0 74 20 74 6f 20 22 6d 65 6d 6f 72 79 22 20 74 68  t to "memory" th
303f0 65 6e 20 61 20 70 75 72 65 20 5b 69 6e 2d 6d 65  en a pure [in-me
30400 6d 6f 72 79 20 64 61 74 61 62 61 73 65 5d 20 74  mory database] t
30410 68 61 74 20 6e 65 76 65 72 20 72 65 61 64 73 0a  hat never reads.
30420 2a 2a 20 20 20 20 20 6f 72 20 77 72 69 74 65 73  **     or writes
30430 20 66 72 6f 6d 20 64 69 73 6b 20 69 73 20 75 73   from disk is us
30440 65 64 2e 20 5e 49 74 20 69 73 20 61 6e 20 65 72  ed. ^It is an er
30450 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20 61  ror to specify a
30460 20 76 61 6c 75 65 20 66 6f 72 0a 2a 2a 20 20 20   value for.**   
30470 20 20 74 68 65 20 6d 6f 64 65 20 70 61 72 61 6d    the mode param
30480 65 74 65 72 20 74 68 61 74 20 69 73 20 6c 65 73  eter that is les
30490 73 20 72 65 73 74 72 69 63 74 69 76 65 20 74 68  s restrictive th
304a0 61 6e 20 74 68 61 74 20 73 70 65 63 69 66 69 65  an that specifie
304b0 64 20 62 79 0a 2a 2a 20 20 20 20 20 74 68 65 20  d by.**     the 
304c0 66 6c 61 67 73 20 70 61 73 73 65 64 20 69 6e 20  flags passed in 
304d0 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  the third parame
304e0 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f  ter to sqlite3_o
304f0 70 65 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20  pen_v2()..**.** 
30500 20 20 3c 6c 69 3e 20 3c 62 3e 63 61 63 68 65 3c    <li> <b>cache<
30510 2f 62 3e 3a 20 5e 54 68 65 20 63 61 63 68 65 20  /b>: ^The cache 
30520 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65  parameter may be
30530 20 73 65 74 20 74 6f 20 65 69 74 68 65 72 20 22   set to either "
30540 73 68 61 72 65 64 22 20 6f 72 0a 2a 2a 20 20 20  shared" or.**   
30550 20 20 22 70 72 69 76 61 74 65 22 2e 20 5e 53 65    "private". ^Se
30560 74 74 69 6e 67 20 69 74 20 74 6f 20 22 73 68 61  tting it to "sha
30570 72 65 64 22 20 69 73 20 65 71 75 69 76 61 6c 65  red" is equivale
30580 6e 74 20 74 6f 20 73 65 74 74 69 6e 67 20 74 68  nt to setting th
30590 65 0a 2a 2a 20 20 20 20 20 53 51 4c 49 54 45 5f  e.**     SQLITE_
305a0 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45  OPEN_SHAREDCACHE
305b0 20 62 69 74 20 69 6e 20 74 68 65 20 66 6c 61 67   bit in the flag
305c0 73 20 61 72 67 75 6d 65 6e 74 20 70 61 73 73 65  s argument passe
305d0 64 20 74 6f 0a 2a 2a 20 20 20 20 20 73 71 6c 69  d to.**     sqli
305e0 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 5e  te3_open_v2(). ^
305f0 53 65 74 74 69 6e 67 20 74 68 65 20 63 61 63 68  Setting the cach
30600 65 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 22  e parameter to "
30610 70 72 69 76 61 74 65 22 20 69 73 20 0a 2a 2a 20  private" is .** 
30620 20 20 20 20 65 71 75 69 76 61 6c 65 6e 74 20 74      equivalent t
30630 6f 20 73 65 74 74 69 6e 67 20 74 68 65 20 53 51  o setting the SQ
30640 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54  LITE_OPEN_PRIVAT
30650 45 43 41 43 48 45 20 62 69 74 2e 0a 2a 2a 20 20  ECACHE bit..**  
30660 20 20 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6f     ^If sqlite3_o
30670 70 65 6e 5f 76 32 28 29 20 69 73 20 75 73 65 64  pen_v2() is used
30680 20 61 6e 64 20 74 68 65 20 22 63 61 63 68 65 22   and the "cache"
30690 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 70 72   parameter is pr
306a0 65 73 65 6e 74 20 69 6e 0a 2a 2a 20 20 20 20 20  esent in.**     
306b0 61 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 2c 20  a URI filename, 
306c0 69 74 73 20 76 61 6c 75 65 20 6f 76 65 72 72 69  its value overri
306d0 64 65 73 20 61 6e 79 20 62 65 68 61 76 69 6f 72  des any behavior
306e0 20 72 65 71 75 65 73 74 65 64 20 62 79 20 73 65   requested by se
306f0 74 74 69 6e 67 0a 2a 2a 20 20 20 20 20 53 51 4c  tting.**     SQL
30700 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45  ITE_OPEN_PRIVATE
30710 43 41 43 48 45 20 6f 72 20 53 51 4c 49 54 45 5f  CACHE or SQLITE_
30720 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45  OPEN_SHAREDCACHE
30730 20 66 6c 61 67 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c   flag..**.**  <l
30740 69 3e 20 3c 62 3e 70 73 6f 77 3c 2f 62 3e 3a 20  i> <b>psow</b>: 
30750 5e 54 68 65 20 70 73 6f 77 20 70 61 72 61 6d 65  ^The psow parame
30760 74 65 72 20 69 6e 64 69 63 61 74 65 73 20 77 68  ter indicates wh
30770 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
30780 0a 2a 2a 20 20 20 20 20 5b 70 6f 77 65 72 73 61  .**     [powersa
30790 66 65 20 6f 76 65 72 77 72 69 74 65 5d 20 70 72  fe overwrite] pr
307a0 6f 70 65 72 74 79 20 64 6f 65 73 20 6f 72 20 64  operty does or d
307b0 6f 65 73 20 6e 6f 74 20 61 70 70 6c 79 20 74 6f  oes not apply to
307c0 20 74 68 65 0a 2a 2a 20 20 20 20 20 73 74 6f 72   the.**     stor
307d0 61 67 65 20 6d 65 64 69 61 20 6f 6e 20 77 68 69  age media on whi
307e0 63 68 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ch the database 
307f0 66 69 6c 65 20 72 65 73 69 64 65 73 2e 0a 2a 2a  file resides..**
30800 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e 6e 6f 6c  .**  <li> <b>nol
30810 6f 63 6b 3c 2f 62 3e 3a 20 5e 54 68 65 20 6e 6f  ock</b>: ^The no
30820 6c 6f 63 6b 20 70 61 72 61 6d 65 74 65 72 20 69  lock parameter i
30830 73 20 61 20 62 6f 6f 6c 65 61 6e 20 71 75 65 72  s a boolean quer
30840 79 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 20  y parameter.**  
30850 20 20 20 77 68 69 63 68 20 69 66 20 73 65 74 20     which if set 
30860 64 69 73 61 62 6c 65 73 20 66 69 6c 65 20 6c 6f  disables file lo
30870 63 6b 69 6e 67 20 69 6e 20 72 6f 6c 6c 62 61 63  cking in rollbac
30880 6b 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 73 2e  k journal modes.
30890 20 20 54 68 69 73 0a 2a 2a 20 20 20 20 20 69 73    This.**     is
308a0 20 75 73 65 66 75 6c 20 66 6f 72 20 61 63 63 65   useful for acce
308b0 73 73 69 6e 67 20 61 20 64 61 74 61 62 61 73 65  ssing a database
308c0 20 6f 6e 20 61 20 66 69 6c 65 73 79 73 74 65 6d   on a filesystem
308d0 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 0a 2a   that does not.*
308e0 2a 20 20 20 20 20 73 75 70 70 6f 72 74 20 6c 6f  *     support lo
308f0 63 6b 69 6e 67 2e 20 20 43 61 75 74 69 6f 6e 3a  cking.  Caution:
30900 20 20 44 61 74 61 62 61 73 65 20 63 6f 72 72 75    Database corru
30910 70 74 69 6f 6e 20 6d 69 67 68 74 20 72 65 73 75  ption might resu
30920 6c 74 20 69 66 20 74 77 6f 0a 2a 2a 20 20 20 20  lt if two.**    
30930 20 6f 72 20 6d 6f 72 65 20 70 72 6f 63 65 73 73   or more process
30940 65 73 20 77 72 69 74 65 20 74 6f 20 74 68 65 20  es write to the 
30950 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 61 6e  same database an
30960 64 20 61 6e 79 20 6f 6e 65 20 6f 66 20 74 68 6f  d any one of tho
30970 73 65 0a 2a 2a 20 20 20 20 20 70 72 6f 63 65 73  se.**     proces
30980 73 65 73 20 75 73 65 73 20 6e 6f 6c 6f 63 6b 3d  ses uses nolock=
30990 31 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c  1..**.**  <li> <
309a0 62 3e 69 6d 6d 75 74 61 62 6c 65 3c 2f 62 3e 3a  b>immutable</b>:
309b0 20 5e 54 68 65 20 69 6d 6d 75 74 61 62 6c 65 20   ^The immutable 
309c0 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 62  parameter is a b
309d0 6f 6f 6c 65 61 6e 20 71 75 65 72 79 0a 2a 2a 20  oolean query.** 
309e0 20 20 20 20 70 61 72 61 6d 65 74 65 72 20 74 68      parameter th
309f0 61 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  at indicates tha
30a00 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  t the database f
30a10 69 6c 65 20 69 73 20 73 74 6f 72 65 64 20 6f 6e  ile is stored on
30a20 0a 2a 2a 20 20 20 20 20 72 65 61 64 2d 6f 6e 6c  .**     read-onl
30a30 79 20 6d 65 64 69 61 2e 20 20 5e 57 68 65 6e 20  y media.  ^When 
30a40 69 6d 6d 75 74 61 62 6c 65 20 69 73 20 73 65 74  immutable is set
30a50 2c 20 53 51 4c 69 74 65 20 61 73 73 75 6d 65 73  , SQLite assumes
30a60 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 20 20 20   that the.**    
30a70 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 63   database file c
30a80 61 6e 6e 6f 74 20 62 65 20 63 68 61 6e 67 65 64  annot be changed
30a90 2c 20 65 76 65 6e 20 62 79 20 61 20 70 72 6f 63  , even by a proc
30aa0 65 73 73 20 77 69 74 68 20 68 69 67 68 65 72 0a  ess with higher.
30ab0 2a 2a 20 20 20 20 20 70 72 69 76 69 6c 65 67 65  **     privilege
30ac0 2c 20 61 6e 64 20 73 6f 20 74 68 65 20 64 61 74  , and so the dat
30ad0 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20  abase is opened 
30ae0 72 65 61 64 2d 6f 6e 6c 79 20 61 6e 64 20 61 6c  read-only and al
30af0 6c 20 6c 6f 63 6b 69 6e 67 0a 2a 2a 20 20 20 20  l locking.**    
30b00 20 61 6e 64 20 63 68 61 6e 67 65 20 64 65 74 65   and change dete
30b10 63 74 69 6f 6e 20 69 73 20 64 69 73 61 62 6c 65  ction is disable
30b20 64 2e 20 20 43 61 75 74 69 6f 6e 3a 20 53 65 74  d.  Caution: Set
30b30 74 69 6e 67 20 74 68 65 20 69 6d 6d 75 74 61 62  ting the immutab
30b40 6c 65 0a 2a 2a 20 20 20 20 20 70 72 6f 70 65 72  le.**     proper
30b50 74 79 20 6f 6e 20 61 20 64 61 74 61 62 61 73 65  ty on a database
30b60 20 66 69 6c 65 20 74 68 61 74 20 64 6f 65 73 20   file that does 
30b70 69 6e 20 66 61 63 74 20 63 68 61 6e 67 65 20 63  in fact change c
30b80 61 6e 20 72 65 73 75 6c 74 0a 2a 2a 20 20 20 20  an result.**    
30b90 20 69 6e 20 69 6e 63 6f 72 72 65 63 74 20 71 75   in incorrect qu
30ba0 65 72 79 20 72 65 73 75 6c 74 73 20 61 6e 64 2f  ery results and/
30bb0 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 52 52 55  or [SQLITE_CORRU
30bc0 50 54 5d 20 65 72 72 6f 72 73 2e 0a 2a 2a 20 20  PT] errors..**  
30bd0 20 20 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51     See also: [SQ
30be0 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55 54  LITE_IOCAP_IMMUT
30bf0 41 42 4c 45 5d 2e 0a 2a 2a 20 20 20 20 20 20 20  ABLE]..**       
30c00 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20  .** </ul>.**.** 
30c10 5e 53 70 65 63 69 66 79 69 6e 67 20 61 6e 20 75  ^Specifying an u
30c20 6e 6b 6e 6f 77 6e 20 70 61 72 61 6d 65 74 65 72  nknown parameter
30c30 20 69 6e 20 74 68 65 20 71 75 65 72 79 20 63 6f   in the query co
30c40 6d 70 6f 6e 65 6e 74 20 6f 66 20 61 20 55 52 49  mponent of a URI
30c50 20 69 73 20 6e 6f 74 20 61 6e 0a 2a 2a 20 65 72   is not an.** er
30c60 72 6f 72 2e 20 20 46 75 74 75 72 65 20 76 65 72  ror.  Future ver
30c70 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
30c80 6d 69 67 68 74 20 75 6e 64 65 72 73 74 61 6e 64  might understand
30c90 20 61 64 64 69 74 69 6f 6e 61 6c 20 71 75 65 72   additional quer
30ca0 79 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 73 2e  y.** parameters.
30cb0 20 20 53 65 65 20 22 5b 71 75 65 72 79 20 70 61    See "[query pa
30cc0 72 61 6d 65 74 65 72 73 20 77 69 74 68 20 73 70  rameters with sp
30cd0 65 63 69 61 6c 20 6d 65 61 6e 69 6e 67 20 74 6f  ecial meaning to
30ce0 20 53 51 4c 69 74 65 5d 22 20 66 6f 72 0a 2a 2a   SQLite]" for.**
30cf0 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
30d00 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b  rmation..**.** [
30d10 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 20 65 78  [URI filename ex
30d20 61 6d 70 6c 65 73 5d 5d 20 3c 68 33 3e 55 52 49  amples]] <h3>URI
30d30 20 66 69 6c 65 6e 61 6d 65 20 65 78 61 6d 70 6c   filename exampl
30d40 65 73 3c 2f 68 33 3e 0a 2a 2a 0a 2a 2a 20 3c 74  es</h3>.**.** <t
30d50 61 62 6c 65 20 62 6f 72 64 65 72 3d 22 31 22 20  able border="1" 
30d60 61 6c 69 67 6e 3d 63 65 6e 74 65 72 20 63 65 6c  align=center cel
30d70 6c 70 61 64 64 69 6e 67 3d 35 3e 0a 2a 2a 20 3c  lpadding=5>.** <
30d80 74 72 3e 3c 74 68 3e 20 55 52 49 20 66 69 6c 65  tr><th> URI file
30d90 6e 61 6d 65 73 20 3c 74 68 3e 20 52 65 73 75 6c  names <th> Resul
30da0 74 73 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66  ts.** <tr><td> f
30db0 69 6c 65 3a 64 61 74 61 2e 64 62 20 3c 74 64 3e  ile:data.db <td>
30dc0 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 4f 70   .**          Op
30dd0 65 6e 20 74 68 65 20 66 69 6c 65 20 22 64 61 74  en the file "dat
30de0 61 2e 64 62 22 20 69 6e 20 74 68 65 20 63 75 72  a.db" in the cur
30df0 72 65 6e 74 20 64 69 72 65 63 74 6f 72 79 2e 0a  rent directory..
30e00 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65  ** <tr><td> file
30e10 3a 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61  :/home/fred/data
30e20 2e 64 62 3c 62 72 3e 0a 2a 2a 20 20 20 20 20 20  .db<br>.**      
30e30 20 20 20 20 66 69 6c 65 3a 2f 2f 2f 68 6f 6d 65      file:///home
30e40 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 20 3c 62  /fred/data.db <b
30e50 72 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  r> .**          
30e60 66 69 6c 65 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74  file://localhost
30e70 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e  /home/fred/data.
30e80 64 62 20 3c 62 72 3e 20 3c 74 64 3e 20 0a 2a 2a  db <br> <td> .**
30e90 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e 20 74            Open t
30ea0 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
30eb0 20 22 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74   "/home/fred/dat
30ec0 61 2e 64 62 22 2e 0a 2a 2a 20 3c 74 72 3e 3c 74  a.db"..** <tr><t
30ed0 64 3e 20 66 69 6c 65 3a 2f 2f 64 61 72 6b 73 74  d> file://darkst
30ee0 61 72 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74  ar/home/fred/dat
30ef0 61 2e 64 62 20 3c 74 64 3e 20 0a 2a 2a 20 20 20  a.db <td> .**   
30f00 20 20 20 20 20 20 20 41 6e 20 65 72 72 6f 72 2e         An error.
30f10 20 22 64 61 72 6b 73 74 61 72 22 20 69 73 20 6e   "darkstar" is n
30f20 6f 74 20 61 20 72 65 63 6f 67 6e 69 7a 65 64 20  ot a recognized 
30f30 61 75 74 68 6f 72 69 74 79 2e 0a 2a 2a 20 3c 74  authority..** <t
30f40 72 3e 3c 74 64 20 73 74 79 6c 65 3d 22 77 68 69  r><td style="whi
30f50 74 65 2d 73 70 61 63 65 3a 6e 6f 77 72 61 70 22  te-space:nowrap"
30f60 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 66  > .**          f
30f70 69 6c 65 3a 2f 2f 2f 43 3a 2f 44 6f 63 75 6d 65  ile:///C:/Docume
30f80 6e 74 73 25 32 30 61 6e 64 25 32 30 53 65 74 74  nts%20and%20Sett
30f90 69 6e 67 73 2f 66 72 65 64 2f 44 65 73 6b 74 6f  ings/fred/Deskto
30fa0 70 2f 64 61 74 61 2e 64 62 0a 2a 2a 20 20 20 20  p/data.db.**    
30fb0 20 3c 74 64 3e 20 57 69 6e 64 6f 77 73 20 6f 6e   <td> Windows on
30fc0 6c 79 3a 20 4f 70 65 6e 20 74 68 65 20 66 69 6c  ly: Open the fil
30fd0 65 20 22 64 61 74 61 2e 64 62 22 20 6f 6e 20 66  e "data.db" on f
30fe0 72 65 64 27 73 20 64 65 73 6b 74 6f 70 20 6f 6e  red's desktop on
30ff0 20 64 72 69 76 65 0a 2a 2a 20 20 20 20 20 20 20   drive.**       
31000 20 20 20 43 3a 2e 20 4e 6f 74 65 20 74 68 61 74     C:. Note that
31010 20 74 68 65 20 25 32 30 20 65 73 63 61 70 69 6e   the %20 escapin
31020 67 20 69 6e 20 74 68 69 73 20 65 78 61 6d 70 6c  g in this exampl
31030 65 20 69 73 20 6e 6f 74 20 73 74 72 69 63 74 6c  e is not strictl
31040 79 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 6e  y .**          n
31050 65 63 65 73 73 61 72 79 20 2d 20 73 70 61 63 65  ecessary - space
31060 20 63 68 61 72 61 63 74 65 72 73 20 63 61 6e 20   characters can 
31070 62 65 20 75 73 65 64 20 6c 69 74 65 72 61 6c 6c  be used literall
31080 79 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 69 6e  y.**          in
31090 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 2e 0a   URI filenames..
310a0 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65  ** <tr><td> file
310b0 3a 64 61 74 61 2e 64 62 3f 6d 6f 64 65 3d 72 6f  :data.db?mode=ro
310c0 26 63 61 63 68 65 3d 70 72 69 76 61 74 65 20 3c  &cache=private <
310d0 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20  td> .**         
310e0 20 4f 70 65 6e 20 66 69 6c 65 20 22 64 61 74 61   Open file "data
310f0 2e 64 62 22 20 69 6e 20 74 68 65 20 63 75 72 72  .db" in the curr
31100 65 6e 74 20 64 69 72 65 63 74 6f 72 79 20 66 6f  ent directory fo
31110 72 20 72 65 61 64 2d 6f 6e 6c 79 20 61 63 63 65  r read-only acce
31120 73 73 2e 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  ss..**          
31130 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68  Regardless of wh
31140 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 73 68 61  ether or not sha
31150 72 65 64 2d 63 61 63 68 65 20 6d 6f 64 65 20 69  red-cache mode i
31160 73 20 65 6e 61 62 6c 65 64 20 62 79 0a 2a 2a 20  s enabled by.** 
31170 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74           default
31180 2c 20 75 73 65 20 61 20 70 72 69 76 61 74 65 20  , use a private 
31190 63 61 63 68 65 2e 0a 2a 2a 20 3c 74 72 3e 3c 74  cache..** <tr><t
311a0 64 3e 20 66 69 6c 65 3a 2f 68 6f 6d 65 2f 66 72  d> file:/home/fr
311b0 65 64 2f 64 61 74 61 2e 64 62 3f 76 66 73 3d 75  ed/data.db?vfs=u
311c0 6e 69 78 2d 64 6f 74 66 69 6c 65 20 3c 74 64 3e  nix-dotfile <td>
311d0 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 4f 70 65  .**          Ope
311e0 6e 20 66 69 6c 65 20 22 2f 68 6f 6d 65 2f 66 72  n file "/home/fr
311f0 65 64 2f 64 61 74 61 2e 64 62 22 2e 20 55 73 65  ed/data.db". Use
31200 20 74 68 65 20 73 70 65 63 69 61 6c 20 56 46 53   the special VFS
31210 20 22 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 0a   "unix-dotfile".
31220 2a 2a 20 20 20 20 20 20 20 20 20 20 74 68 61 74  **          that
31230 20 75 73 65 73 20 64 6f 74 2d 66 69 6c 65 73 20   uses dot-files 
31240 69 6e 20 70 6c 61 63 65 20 6f 66 20 70 6f 73 69  in place of posi
31250 78 20 61 64 76 69 73 6f 72 79 20 6c 6f 63 6b 69  x advisory locki
31260 6e 67 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20  ng..** <tr><td> 
31270 66 69 6c 65 3a 64 61 74 61 2e 64 62 3f 6d 6f 64  file:data.db?mod
31280 65 3d 72 65 61 64 6f 6e 6c 79 20 3c 74 64 3e 20  e=readonly <td> 
31290 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 41 6e 20  .**          An 
312a0 65 72 72 6f 72 2e 20 22 72 65 61 64 6f 6e 6c 79  error. "readonly
312b0 22 20 69 73 20 6e 6f 74 20 61 20 76 61 6c 69 64  " is not a valid
312c0 20 6f 70 74 69 6f 6e 20 66 6f 72 20 74 68 65 20   option for the 
312d0 22 6d 6f 64 65 22 20 70 61 72 61 6d 65 74 65 72  "mode" parameter
312e0 2e 0a 2a 2a 20 3c 2f 74 61 62 6c 65 3e 0a 2a 2a  ..** </table>.**
312f0 0a 2a 2a 20 5e 55 52 49 20 68 65 78 61 64 65 63  .** ^URI hexadec
31300 69 6d 61 6c 20 65 73 63 61 70 65 20 73 65 71 75  imal escape sequ
31310 65 6e 63 65 73 20 28 25 48 48 29 20 61 72 65 20  ences (%HH) are 
31320 73 75 70 70 6f 72 74 65 64 20 77 69 74 68 69 6e  supported within
31330 20 74 68 65 20 70 61 74 68 20 61 6e 64 0a 2a 2a   the path and.**
31340 20 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e 74   query component
31350 73 20 6f 66 20 61 20 55 52 49 2e 20 41 20 68 65  s of a URI. A he
31360 78 61 64 65 63 69 6d 61 6c 20 65 73 63 61 70 65  xadecimal escape
31370 20 73 65 71 75 65 6e 63 65 20 63 6f 6e 73 69 73   sequence consis
31380 74 73 20 6f 66 20 61 0a 2a 2a 20 70 65 72 63 65  ts of a.** perce
31390 6e 74 20 73 69 67 6e 20 2d 20 22 25 22 20 2d 20  nt sign - "%" - 
313a0 66 6f 6c 6c 6f 77 65 64 20 62 79 20 65 78 61 63  followed by exac
313b0 74 6c 79 20 74 77 6f 20 68 65 78 61 64 65 63 69  tly two hexadeci
313c0 6d 61 6c 20 64 69 67 69 74 73 20 0a 2a 2a 20 73  mal digits .** s
313d0 70 65 63 69 66 79 69 6e 67 20 61 6e 20 6f 63 74  pecifying an oct
313e0 65 74 20 76 61 6c 75 65 2e 20 5e 42 65 66 6f 72  et value. ^Befor
313f0 65 20 74 68 65 20 70 61 74 68 20 6f 72 20 71 75  e the path or qu
31400 65 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f  ery components o
31410 66 20 61 0a 2a 2a 20 55 52 49 20 66 69 6c 65 6e  f a.** URI filen
31420 61 6d 65 20 61 72 65 20 69 6e 74 65 72 70 72 65  ame are interpre
31430 74 65 64 2c 20 74 68 65 79 20 61 72 65 20 65 6e  ted, they are en
31440 63 6f 64 65 64 20 75 73 69 6e 67 20 55 54 46 2d  coded using UTF-
31450 38 20 61 6e 64 20 61 6c 6c 20 0a 2a 2a 20 68 65  8 and all .** he
31460 78 61 64 65 63 69 6d 61 6c 20 65 73 63 61 70 65  xadecimal escape
31470 20 73 65 71 75 65 6e 63 65 73 20 72 65 70 6c 61   sequences repla
31480 63 65 64 20 62 79 20 61 20 73 69 6e 67 6c 65 20  ced by a single 
31490 62 79 74 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20  byte containing 
314a0 74 68 65 0a 2a 2a 20 63 6f 72 72 65 73 70 6f 6e  the.** correspon
314b0 64 69 6e 67 20 6f 63 74 65 74 2e 20 49 66 20 74  ding octet. If t
314c0 68 69 73 20 70 72 6f 63 65 73 73 20 67 65 6e 65  his process gene
314d0 72 61 74 65 73 20 61 6e 20 69 6e 76 61 6c 69 64  rates an invalid
314e0 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 2c   UTF-8 encoding,
314f0 0a 2a 2a 20 74 68 65 20 72 65 73 75 6c 74 73 20  .** the results 
31500 61 72 65 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a  are undefined..*
31510 2a 0a 2a 2a 20 3c 62 3e 4e 6f 74 65 20 74 6f 20  *.** <b>Note to 
31520 57 69 6e 64 6f 77 73 20 75 73 65 72 73 3a 3c 2f  Windows users:</
31530 62 3e 20 20 54 68 65 20 65 6e 63 6f 64 69 6e 67  b>  The encoding
31540 20 75 73 65 64 20 66 6f 72 20 74 68 65 20 66 69   used for the fi
31550 6c 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 0a  lename argument.
31560 2a 2a 20 6f 66 20 73 71 6c 69 74 65 33 5f 6f 70  ** of sqlite3_op
31570 65 6e 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33  en() and sqlite3
31580 5f 6f 70 65 6e 5f 76 32 28 29 20 6d 75 73 74 20  _open_v2() must 
31590 62 65 20 55 54 46 2d 38 2c 20 6e 6f 74 20 77 68  be UTF-8, not wh
315a0 61 74 65 76 65 72 0a 2a 2a 20 63 6f 64 65 70 61  atever.** codepa
315b0 67 65 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20  ge is currently 
315c0 64 65 66 69 6e 65 64 2e 20 20 46 69 6c 65 6e 61  defined.  Filena
315d0 6d 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69  mes containing i
315e0 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 0a 2a 2a 20  nternational.** 
315f0 63 68 61 72 61 63 74 65 72 73 20 6d 75 73 74 20  characters must 
31600 62 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  be converted to 
31610 55 54 46 2d 38 20 70 72 69 6f 72 20 74 6f 20 70  UTF-8 prior to p
31620 61 73 73 69 6e 67 20 74 68 65 6d 20 69 6e 74 6f  assing them into
31630 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  .** sqlite3_open
31640 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  () or sqlite3_op
31650 65 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 3c  en_v2()..**.** <
31660 62 3e 4e 6f 74 65 20 74 6f 20 57 69 6e 64 6f 77  b>Note to Window
31670 73 20 52 75 6e 74 69 6d 65 20 75 73 65 72 73 3a  s Runtime users:
31680 3c 2f 62 3e 20 20 54 68 65 20 74 65 6d 70 6f 72  </b>  The tempor
31690 61 72 79 20 64 69 72 65 63 74 6f 72 79 20 6d 75  ary directory mu
316a0 73 74 20 62 65 20 73 65 74 0a 2a 2a 20 70 72 69  st be set.** pri
316b0 6f 72 20 74 6f 20 63 61 6c 6c 69 6e 67 20 73 71  or to calling sq
316c0 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 6f 72 20  lite3_open() or 
316d0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
316e0 29 2e 20 20 4f 74 68 65 72 77 69 73 65 2c 20 76  ).  Otherwise, v
316f0 61 72 69 6f 75 73 0a 2a 2a 20 66 65 61 74 75 72  arious.** featur
31700 65 73 20 74 68 61 74 20 72 65 71 75 69 72 65 20  es that require 
31710 74 68 65 20 75 73 65 20 6f 66 20 74 65 6d 70 6f  the use of tempo
31720 72 61 72 79 20 66 69 6c 65 73 20 6d 61 79 20 66  rary files may f
31730 61 69 6c 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61  ail..**.** See a
31740 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 74 65  lso: [sqlite3_te
31750 6d 70 5f 64 69 72 65 63 74 6f 72 79 5d 0a 2a 2f  mp_directory].*/
31760 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
31770 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 0a 20 20  sqlite3_open(.  
31780 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65  const char *file
31790 6e 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62  name,   /* Datab
317a0 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54  ase filename (UT
317b0 46 2d 38 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65  F-8) */.  sqlite
317c0 33 20 2a 2a 70 70 44 62 20 20 20 20 20 20 20 20  3 **ppDb        
317d0 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65    /* OUT: SQLite
317e0 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b   db handle */.);
317f0 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
31800 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 0a  sqlite3_open16(.
31810 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 66 69    const void *fi
31820 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74  lename,   /* Dat
31830 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 28  abase filename (
31840 55 54 46 2d 31 36 29 20 2a 2f 0a 20 20 73 71 6c  UTF-16) */.  sql
31850 69 74 65 33 20 2a 2a 70 70 44 62 20 20 20 20 20  ite3 **ppDb     
31860 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c       /* OUT: SQL
31870 69 74 65 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f  ite db handle */
31880 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .);.SQLITE_API i
31890 6e 74 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  nt sqlite3_open_
318a0 76 32 28 0a 20 20 63 6f 6e 73 74 20 63 68 61 72  v2(.  const char
318b0 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a   *filename,   /*
318c0 20 44 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61   Database filena
318d0 6d 65 20 28 55 54 46 2d 38 29 20 2a 2f 0a 20 20  me (UTF-8) */.  
318e0 73 71 6c 69 74 65 33 20 2a 2a 70 70 44 62 2c 20  sqlite3 **ppDb, 
318f0 20 20 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20          /* OUT: 
31900 53 51 4c 69 74 65 20 64 62 20 68 61 6e 64 6c 65  SQLite db handle
31910 20 2a 2f 0a 20 20 69 6e 74 20 66 6c 61 67 73 2c   */.  int flags,
31920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
31930 20 46 6c 61 67 73 20 2a 2f 0a 20 20 63 6f 6e 73   Flags */.  cons
31940 74 20 63 68 61 72 20 2a 7a 56 66 73 20 20 20 20  t char *zVfs    
31950 20 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 56      /* Name of V
31960 46 53 20 6d 6f 64 75 6c 65 20 74 6f 20 75 73 65  FS module to use
31970 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41   */.);../*.** CA
31980 50 49 33 52 45 46 3a 20 4f 62 74 61 69 6e 20 56  PI3REF: Obtain V
31990 61 6c 75 65 73 20 46 6f 72 20 55 52 49 20 50 61  alues For URI Pa
319a0 72 61 6d 65 74 65 72 73 0a 2a 2a 0a 2a 2a 20 54  rameters.**.** T
319b0 68 65 73 65 20 61 72 65 20 75 74 69 6c 69 74 79  hese are utility
319c0 20 72 6f 75 74 69 6e 65 73 2c 20 75 73 65 66 75   routines, usefu
319d0 6c 20 74 6f 20 56 46 53 20 69 6d 70 6c 65 6d 65  l to VFS impleme
319e0 6e 74 61 74 69 6f 6e 73 2c 20 74 68 61 74 20 63  ntations, that c
319f0 68 65 63 6b 0a 2a 2a 20 74 6f 20 73 65 65 20 69  heck.** to see i
31a00 66 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c  f a database fil
31a10 65 20 77 61 73 20 61 20 55 52 49 20 74 68 61 74  e was a URI that
31a20 20 63 6f 6e 74 61 69 6e 65 64 20 61 20 73 70 65   contained a spe
31a30 63 69 66 69 63 20 71 75 65 72 79 20 0a 2a 2a 20  cific query .** 
31a40 70 61 72 61 6d 65 74 65 72 2c 20 61 6e 64 20 69  parameter, and i
31a50 66 20 73 6f 20 6f 62 74 61 69 6e 73 20 74 68 65  f so obtains the
31a60 20 76 61 6c 75 65 20 6f 66 20 74 68 61 74 20 71   value of that q
31a70 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 2e 0a  uery parameter..
31a80 2a 2a 0a 2a 2a 20 49 66 20 46 20 69 73 20 74 68  **.** If F is th
31a90 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 6e  e database filen
31aa0 61 6d 65 20 70 6f 69 6e 74 65 72 20 70 61 73 73  ame pointer pass
31ab0 65 64 20 69 6e 74 6f 20 74 68 65 20 78 4f 70 65  ed into the xOpe
31ac0 6e 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 0a 2a  n() method of .*
31ad0 2a 20 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  * a VFS implemen
31ae0 74 61 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 20  tation when the 
31af0 66 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 20  flags parameter 
31b00 74 6f 20 78 4f 70 65 6e 28 29 20 68 61 73 20 6f  to xOpen() has o
31b10 6e 65 20 6f 72 20 0a 2a 2a 20 6d 6f 72 65 20 6f  ne or .** more o
31b20 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50  f the [SQLITE_OP
31b30 45 4e 5f 55 52 49 5d 20 6f 72 20 5b 53 51 4c 49  EN_URI] or [SQLI
31b40 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 44 42 5d  TE_OPEN_MAIN_DB]
31b50 20 62 69 74 73 20 73 65 74 20 61 6e 64 0a 2a 2a   bits set and.**
31b60 20 50 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f   P is the name o
31b70 66 20 74 68 65 20 71 75 65 72 79 20 70 61 72 61  f the query para
31b80 6d 65 74 65 72 2c 20 74 68 65 6e 0a 2a 2a 20 73  meter, then.** s
31b90 71 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d  qlite3_uri_param
31ba0 65 74 65 72 28 46 2c 50 29 20 72 65 74 75 72 6e  eter(F,P) return
31bb0 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  s the value of t
31bc0 68 65 20 50 0a 2a 2a 20 70 61 72 61 6d 65 74 65  he P.** paramete
31bd0 72 20 69 66 20 69 74 20 65 78 69 73 74 73 20 6f  r if it exists o
31be0 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  r a NULL pointer
31bf0 20 69 66 20 50 20 64 6f 65 73 20 6e 6f 74 20 61   if P does not a
31c00 70 70 65 61 72 20 61 73 20 61 20 0a 2a 2a 20 71  ppear as a .** q
31c10 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 20 6f  uery parameter o
31c20 6e 20 46 2e 20 20 49 66 20 50 20 69 73 20 61 20  n F.  If P is a 
31c30 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 20  query parameter 
31c40 6f 66 20 46 0a 2a 2a 20 68 61 73 20 6e 6f 20 65  of F.** has no e
31c50 78 70 6c 69 63 69 74 20 76 61 6c 75 65 2c 20 74  xplicit value, t
31c60 68 65 6e 20 73 71 6c 69 74 65 33 5f 75 72 69 5f  hen sqlite3_uri_
31c70 70 61 72 61 6d 65 74 65 72 28 46 2c 50 29 20 72  parameter(F,P) r
31c80 65 74 75 72 6e 73 0a 2a 2a 20 61 20 70 6f 69 6e  eturns.** a poin
31c90 74 65 72 20 74 6f 20 61 6e 20 65 6d 70 74 79 20  ter to an empty 
31ca0 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54 68  string..**.** Th
31cb0 65 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f  e sqlite3_uri_bo
31cc0 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f 75  olean(F,P,B) rou
31cd0 74 69 6e 65 20 61 73 73 75 6d 65 73 20 74 68 61  tine assumes tha
31ce0 74 20 50 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e  t P is a boolean
31cf0 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 61 6e  .** parameter an
31d00 64 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 28  d returns true (
31d10 31 29 20 6f 72 20 66 61 6c 73 65 20 28 30 29 20  1) or false (0) 
31d20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65  according to the
31d30 20 76 61 6c 75 65 0a 2a 2a 20 6f 66 20 50 2e 20   value.** of P. 
31d40 20 54 68 65 20 73 71 6c 69 74 65 33 5f 75 72 69   The sqlite3_uri
31d50 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20  _boolean(F,P,B) 
31d60 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20  routine returns 
31d70 74 72 75 65 20 28 31 29 20 69 66 20 74 68 65 0a  true (1) if the.
31d80 2a 2a 20 76 61 6c 75 65 20 6f 66 20 71 75 65 72  ** value of quer
31d90 79 20 70 61 72 61 6d 65 74 65 72 20 50 20 69 73  y parameter P is
31da0 20 6f 6e 65 20 6f 66 20 22 79 65 73 22 2c 20 22   one of "yes", "
31db0 74 72 75 65 22 2c 20 6f 72 20 22 6f 6e 22 20 69  true", or "on" i
31dc0 6e 20 61 6e 79 0a 2a 2a 20 63 61 73 65 20 6f 72  n any.** case or
31dd0 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 62 65   if the value be
31de0 67 69 6e 73 20 77 69 74 68 20 61 20 6e 6f 6e 2d  gins with a non-
31df0 7a 65 72 6f 20 6e 75 6d 62 65 72 2e 20 20 54 68  zero number.  Th
31e00 65 20 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75 72  e .** sqlite3_ur
31e10 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29  i_boolean(F,P,B)
31e20 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e   routines return
31e30 73 20 66 61 6c 73 65 20 28 30 29 20 69 66 20 74  s false (0) if t
31e40 68 65 20 76 61 6c 75 65 20 6f 66 0a 2a 2a 20 71  he value of.** q
31e50 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 20 50  uery parameter P
31e60 20 69 73 20 6f 6e 65 20 6f 66 20 22 6e 6f 22 2c   is one of "no",
31e70 20 22 66 61 6c 73 65 22 2c 20 6f 72 20 22 6f 66   "false", or "of
31e80 66 22 20 69 6e 20 61 6e 79 20 63 61 73 65 20 6f  f" in any case o
31e90 72 0a 2a 2a 20 69 66 20 74 68 65 20 76 61 6c 75  r.** if the valu
31ea0 65 20 62 65 67 69 6e 73 20 77 69 74 68 20 61 20  e begins with a 
31eb0 6e 75 6d 65 72 69 63 20 7a 65 72 6f 2e 20 20 49  numeric zero.  I
31ec0 66 20 50 20 69 73 20 6e 6f 74 20 61 20 71 75 65  f P is not a que
31ed0 72 79 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20  ry.** parameter 
31ee0 6f 6e 20 46 20 6f 72 20 69 66 20 74 68 65 20 76  on F or if the v
31ef0 61 6c 75 65 20 6f 66 20 50 20 69 73 20 64 6f 65  alue of P is doe
31f00 73 20 6e 6f 74 20 6d 61 74 63 68 20 61 6e 79 20  s not match any 
31f10 6f 66 20 74 68 65 0a 2a 2a 20 61 62 6f 76 65 2c  of the.** above,
31f20 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 75 72   then sqlite3_ur
31f30 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29  i_boolean(F,P,B)
31f40 20 72 65 74 75 72 6e 73 20 28 42 21 3d 30 29 2e   returns (B!=0).
31f50 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
31f60 65 33 5f 75 72 69 5f 69 6e 74 36 34 28 46 2c 50  e3_uri_int64(F,P
31f70 2c 44 29 20 72 6f 75 74 69 6e 65 20 63 6f 6e 76  ,D) routine conv
31f80 65 72 74 73 20 74 68 65 20 76 61 6c 75 65 20 6f  erts the value o
31f90 66 20 50 20 69 6e 74 6f 20 61 0a 2a 2a 20 36 34  f P into a.** 64
31fa0 2d 62 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65  -bit signed inte
31fb0 67 65 72 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ger and returns 
31fc0 74 68 61 74 20 69 6e 74 65 67 65 72 2c 20 6f 72  that integer, or
31fd0 20 44 20 69 66 20 50 20 64 6f 65 73 20 6e 6f 74   D if P does not
31fe0 0a 2a 2a 20 65 78 69 73 74 2e 20 20 49 66 20 74  .** exist.  If t
31ff0 68 65 20 76 61 6c 75 65 20 6f 66 20 50 20 69 73  he value of P is
32000 20 73 6f 6d 65 74 68 69 6e 67 20 6f 74 68 65 72   something other
32010 20 74 68 61 6e 20 61 6e 20 69 6e 74 65 67 65 72   than an integer
32020 2c 20 74 68 65 6e 0a 2a 2a 20 7a 65 72 6f 20 69  , then.** zero i
32030 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 20 0a  s returned..** .
32040 2a 2a 20 49 66 20 46 20 69 73 20 61 20 4e 55 4c  ** If F is a NUL
32050 4c 20 70 6f 69 6e 74 65 72 2c 20 74 68 65 6e 20  L pointer, then 
32060 73 71 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61  sqlite3_uri_para
32070 6d 65 74 65 72 28 46 2c 50 29 20 72 65 74 75 72  meter(F,P) retur
32080 6e 73 20 4e 55 4c 4c 20 61 6e 64 0a 2a 2a 20 73  ns NULL and.** s
32090 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65  qlite3_uri_boole
320a0 61 6e 28 46 2c 50 2c 42 29 20 72 65 74 75 72 6e  an(F,P,B) return
320b0 73 20 42 2e 20 20 49 66 20 46 20 69 73 20 6e 6f  s B.  If F is no
320c0 74 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  t a NULL pointer
320d0 20 61 6e 64 0a 2a 2a 20 69 73 20 6e 6f 74 20 61   and.** is not a
320e0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 70   database file p
320f0 61 74 68 6e 61 6d 65 20 70 6f 69 6e 74 65 72 20  athname pointer 
32100 74 68 61 74 20 53 51 4c 69 74 65 20 70 61 73 73  that SQLite pass
32110 65 64 20 69 6e 74 6f 20 74 68 65 20 78 4f 70 65  ed into the xOpe
32120 6e 0a 2a 2a 20 56 46 53 20 6d 65 74 68 6f 64 2c  n.** VFS method,
32130 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69   then the behavi
32140 6f 72 20 6f 66 20 74 68 69 73 20 72 6f 75 74 69  or of this routi
32150 6e 65 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20  ne is undefined 
32160 61 6e 64 20 70 72 6f 62 61 62 6c 79 0a 2a 2a 20  and probably.** 
32170 75 6e 64 65 73 69 72 61 62 6c 65 2e 0a 2a 2a 0a  undesirable..**.
32180 2a 2a 20 53 65 65 20 74 68 65 20 5b 55 52 49 20  ** See the [URI 
32190 66 69 6c 65 6e 61 6d 65 5d 20 64 6f 63 75 6d 65  filename] docume
321a0 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69  ntation for addi
321b0 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
321c0 6f 6e 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  on..*/.SQLITE_AP
321d0 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71  I const char *sq
321e0 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d 65  lite3_uri_parame
321f0 74 65 72 28 63 6f 6e 73 74 20 63 68 61 72 20 2a  ter(const char *
32200 7a 46 69 6c 65 6e 61 6d 65 2c 20 63 6f 6e 73 74  zFilename, const
32210 20 63 68 61 72 20 2a 7a 50 61 72 61 6d 29 3b 0a   char *zParam);.
32220 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
32230 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65  qlite3_uri_boole
32240 61 6e 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  an(const char *z
32250 46 69 6c 65 2c 20 63 6f 6e 73 74 20 63 68 61 72  File, const char
32260 20 2a 7a 50 61 72 61 6d 2c 20 69 6e 74 20 62 44   *zParam, int bD
32270 65 66 61 75 6c 74 29 3b 0a 53 51 4c 49 54 45 5f  efault);.SQLITE_
32280 41 50 49 20 73 71 6c 69 74 65 33 5f 69 6e 74 36  API sqlite3_int6
32290 34 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 69 6e  4 sqlite3_uri_in
322a0 74 36 34 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c  t64(const char*,
322b0 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 73 71   const char*, sq
322c0 6c 69 74 65 33 5f 69 6e 74 36 34 29 3b 0a 0a 0a  lite3_int64);...
322d0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
322e0 45 72 72 6f 72 20 43 6f 64 65 73 20 41 6e 64 20  Error Codes And 
322f0 4d 65 73 73 61 67 65 73 0a 2a 2a 20 4d 45 54 48  Messages.** METH
32300 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
32310 2a 20 5e 49 66 20 74 68 65 20 6d 6f 73 74 20 72  * ^If the most r
32320 65 63 65 6e 74 20 73 71 6c 69 74 65 33 5f 2a 20  ecent sqlite3_* 
32330 41 50 49 20 63 61 6c 6c 20 61 73 73 6f 63 69 61  API call associa
32340 74 65 64 20 77 69 74 68 20 0a 2a 2a 20 5b 64 61  ted with .** [da
32350 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
32360 6e 5d 20 44 20 66 61 69 6c 65 64 2c 20 74 68 65  n] D failed, the
32370 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 65 72  n the sqlite3_er
32380 72 63 6f 64 65 28 44 29 20 69 6e 74 65 72 66 61  rcode(D) interfa
32390 63 65 0a 2a 2a 20 72 65 74 75 72 6e 73 20 74 68  ce.** returns th
323a0 65 20 6e 75 6d 65 72 69 63 20 5b 72 65 73 75 6c  e numeric [resul
323b0 74 20 63 6f 64 65 5d 20 6f 72 20 5b 65 78 74 65  t code] or [exte
323c0 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65  nded result code
323d0 5d 20 66 6f 72 20 74 68 61 74 0a 2a 2a 20 41 50  ] for that.** AP
323e0 49 20 63 61 6c 6c 2e 0a 2a 2a 20 5e 54 68 65 20  I call..** ^The 
323f0 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
32400 5f 65 72 72 63 6f 64 65 28 29 0a 2a 2a 20 69 6e  _errcode().** in
32410 74 65 72 66 61 63 65 20 69 73 20 74 68 65 20 73  terface is the s
32420 61 6d 65 20 65 78 63 65 70 74 20 74 68 61 74 20  ame except that 
32430 69 74 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e  it always return
32440 73 20 74 68 65 20 0a 2a 2a 20 5b 65 78 74 65 6e  s the .** [exten
32450 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 5d  ded result code]
32460 20 65 76 65 6e 20 77 68 65 6e 20 65 78 74 65 6e   even when exten
32470 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73  ded result codes
32480 20 61 72 65 0a 2a 2a 20 64 69 73 61 62 6c 65 64   are.** disabled
32490 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 76 61 6c 75  ..**.** The valu
324a0 65 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 73  es returned by s
324b0 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 29  qlite3_errcode()
324c0 20 61 6e 64 2f 6f 72 0a 2a 2a 20 73 71 6c 69 74   and/or.** sqlit
324d0 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
324e0 6f 64 65 28 29 20 6d 69 67 68 74 20 63 68 61 6e  ode() might chan
324f0 67 65 20 77 69 74 68 20 65 61 63 68 20 41 50 49  ge with each API
32500 20 63 61 6c 6c 2e 0a 2a 2a 20 45 78 63 65 70 74   call..** Except
32510 2c 20 74 68 65 72 65 20 61 72 65 20 73 6f 6d 65  , there are some
32520 20 69 6e 74 65 72 66 61 63 65 73 20 74 68 61 74   interfaces that
32530 20 61 72 65 20 67 75 61 72 61 6e 74 65 65 64 20   are guaranteed 
32540 74 6f 20 6e 65 76 65 72 0a 2a 2a 20 63 68 61 6e  to never.** chan
32550 67 65 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  ge the value of 
32560 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 2e 20  the error code. 
32570 20 54 68 65 20 65 72 72 6f 72 2d 63 6f 64 65 20   The error-code 
32580 70 72 65 73 65 72 76 69 6e 67 0a 2a 2a 20 69 6e  preserving.** in
32590 74 65 72 66 61 63 65 73 20 61 72 65 3a 0a 2a 2a  terfaces are:.**
325a0 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e  .** <ul>.** <li>
325b0 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65   sqlite3_errcode
325c0 28 29 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74  ().** <li> sqlit
325d0 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
325e0 6f 64 65 28 29 0a 2a 2a 20 3c 6c 69 3e 20 73 71  ode().** <li> sq
325f0 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29 0a 2a  lite3_errmsg().*
32600 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65 33 5f 65  * <li> sqlite3_e
32610 72 72 6d 73 67 31 36 28 29 0a 2a 2a 20 3c 2f 75  rrmsg16().** </u
32620 6c 3e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  l>.**.** ^The sq
32630 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29 20 61  lite3_errmsg() a
32640 6e 64 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  nd sqlite3_errms
32650 67 31 36 28 29 20 72 65 74 75 72 6e 20 45 6e 67  g16() return Eng
32660 6c 69 73 68 2d 6c 61 6e 67 75 61 67 65 0a 2a 2a  lish-language.**
32670 20 74 65 78 74 20 74 68 61 74 20 64 65 73 63 72   text that descr
32680 69 62 65 73 20 74 68 65 20 65 72 72 6f 72 2c 20  ibes the error, 
32690 61 73 20 65 69 74 68 65 72 20 55 54 46 2d 38 20  as either UTF-8 
326a0 6f 72 20 55 54 46 2d 31 36 20 72 65 73 70 65 63  or UTF-16 respec
326b0 74 69 76 65 6c 79 2e 0a 2a 2a 20 5e 28 4d 65 6d  tively..** ^(Mem
326c0 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74 68 65 20  ory to hold the 
326d0 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 74  error message st
326e0 72 69 6e 67 20 69 73 20 6d 61 6e 61 67 65 64 20  ring is managed 
326f0 69 6e 74 65 72 6e 61 6c 6c 79 2e 0a 2a 2a 20 54  internally..** T
32700 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  he application d
32710 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20  oes not need to 
32720 77 6f 72 72 79 20 61 62 6f 75 74 20 66 72 65 65  worry about free
32730 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 2e 0a  ing the result..
32740 2a 2a 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20  ** However, the 
32750 65 72 72 6f 72 20 73 74 72 69 6e 67 20 6d 69 67  error string mig
32760 68 74 20 62 65 20 6f 76 65 72 77 72 69 74 74 65  ht be overwritte
32770 6e 20 6f 72 20 64 65 61 6c 6c 6f 63 61 74 65 64  n or deallocated
32780 20 62 79 0a 2a 2a 20 73 75 62 73 65 71 75 65 6e   by.** subsequen
32790 74 20 63 61 6c 6c 73 20 74 6f 20 6f 74 68 65 72  t calls to other
327a0 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63   SQLite interfac
327b0 65 20 66 75 6e 63 74 69 6f 6e 73 2e 29 5e 0a 2a  e functions.)^.*
327c0 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
327d0 33 5f 65 72 72 73 74 72 28 29 20 69 6e 74 65 72  3_errstr() inter
327e0 66 61 63 65 20 72 65 74 75 72 6e 73 20 74 68 65  face returns the
327f0 20 45 6e 67 6c 69 73 68 2d 6c 61 6e 67 75 61 67   English-languag
32800 65 20 74 65 78 74 0a 2a 2a 20 74 68 61 74 20 64  e text.** that d
32810 65 73 63 72 69 62 65 73 20 74 68 65 20 5b 72 65  escribes the [re
32820 73 75 6c 74 20 63 6f 64 65 5d 2c 20 61 73 20 55  sult code], as U
32830 54 46 2d 38 2e 0a 2a 2a 20 5e 28 4d 65 6d 6f 72  TF-8..** ^(Memor
32840 79 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 65 72  y to hold the er
32850 72 6f 72 20 6d 65 73 73 61 67 65 20 73 74 72 69  ror message stri
32860 6e 67 20 69 73 20 6d 61 6e 61 67 65 64 20 69 6e  ng is managed in
32870 74 65 72 6e 61 6c 6c 79 0a 2a 2a 20 61 6e 64 20  ternally.** and 
32880 6d 75 73 74 20 6e 6f 74 20 62 65 20 66 72 65 65  must not be free
32890 64 20 62 79 20 74 68 65 20 61 70 70 6c 69 63 61  d by the applica
328a0 74 69 6f 6e 29 5e 2e 0a 2a 2a 0a 2a 2a 20 57 68  tion)^..**.** Wh
328b0 65 6e 20 74 68 65 20 73 65 72 69 61 6c 69 7a 65  en the serialize
328c0 64 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  d [threading mod
328d0 65 5d 20 69 73 20 69 6e 20 75 73 65 2c 20 69 74  e] is in use, it
328e0 20 6d 69 67 68 74 20 62 65 20 74 68 65 0a 2a 2a   might be the.**
328f0 20 63 61 73 65 20 74 68 61 74 20 61 20 73 65 63   case that a sec
32900 6f 6e 64 20 65 72 72 6f 72 20 6f 63 63 75 72 73  ond error occurs
32910 20 6f 6e 20 61 20 73 65 70 61 72 61 74 65 20 74   on a separate t
32920 68 72 65 61 64 20 69 6e 20 62 65 74 77 65 65 6e  hread in between
32930 0a 2a 2a 20 74 68 65 20 74 69 6d 65 20 6f 66 20  .** the time of 
32940 74 68 65 20 66 69 72 73 74 20 65 72 72 6f 72 20  the first error 
32950 61 6e 64 20 74 68 65 20 63 61 6c 6c 20 74 6f 20  and the call to 
32960 74 68 65 73 65 20 69 6e 74 65 72 66 61 63 65 73  these interfaces
32970 2e 0a 2a 2a 20 57 68 65 6e 20 74 68 61 74 20 68  ..** When that h
32980 61 70 70 65 6e 73 2c 20 74 68 65 20 73 65 63 6f  appens, the seco
32990 6e 64 20 65 72 72 6f 72 20 77 69 6c 6c 20 62 65  nd error will be
329a0 20 72 65 70 6f 72 74 65 64 20 73 69 6e 63 65 20   reported since 
329b0 74 68 65 73 65 0a 2a 2a 20 69 6e 74 65 72 66 61  these.** interfa
329c0 63 65 73 20 61 6c 77 61 79 73 20 72 65 70 6f 72  ces always repor
329d0 74 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  t the most recen
329e0 74 20 72 65 73 75 6c 74 2e 20 20 54 6f 20 61 76  t result.  To av
329f0 6f 69 64 0a 2a 2a 20 74 68 69 73 2c 20 65 61 63  oid.** this, eac
32a00 68 20 74 68 72 65 61 64 20 63 61 6e 20 6f 62 74  h thread can obt
32a10 61 69 6e 20 65 78 63 6c 75 73 69 76 65 20 75 73  ain exclusive us
32a20 65 20 6f 66 20 74 68 65 20 5b 64 61 74 61 62 61  e of the [databa
32a30 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44  se connection] D
32a40 0a 2a 2a 20 62 79 20 69 6e 76 6f 6b 69 6e 67 20  .** by invoking 
32a50 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 65  [sqlite3_mutex_e
32a60 6e 74 65 72 5d 28 5b 73 71 6c 69 74 65 33 5f 64  nter]([sqlite3_d
32a70 62 5f 6d 75 74 65 78 5d 28 44 29 29 20 62 65 66  b_mutex](D)) bef
32a80 6f 72 65 20 62 65 67 69 6e 6e 69 6e 67 0a 2a 2a  ore beginning.**
32a90 20 74 6f 20 75 73 65 20 44 20 61 6e 64 20 69 6e   to use D and in
32aa0 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f  voking [sqlite3_
32ab0 6d 75 74 65 78 5f 6c 65 61 76 65 5d 28 5b 73 71  mutex_leave]([sq
32ac0 6c 69 74 65 33 5f 64 62 5f 6d 75 74 65 78 5d 28  lite3_db_mutex](
32ad0 44 29 29 20 61 66 74 65 72 0a 2a 2a 20 61 6c 6c  D)) after.** all
32ae0 20 63 61 6c 6c 73 20 74 6f 20 74 68 65 20 69 6e   calls to the in
32af0 74 65 72 66 61 63 65 73 20 6c 69 73 74 65 64 20  terfaces listed 
32b00 68 65 72 65 20 61 72 65 20 63 6f 6d 70 6c 65 74  here are complet
32b10 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 20  ed..**.** If an 
32b20 69 6e 74 65 72 66 61 63 65 20 66 61 69 6c 73 20  interface fails 
32b30 77 69 74 68 20 53 51 4c 49 54 45 5f 4d 49 53 55  with SQLITE_MISU
32b40 53 45 2c 20 74 68 61 74 20 6d 65 61 6e 73 20 74  SE, that means t
32b50 68 65 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20  he interface.** 
32b60 77 61 73 20 69 6e 76 6f 6b 65 64 20 69 6e 63 6f  was invoked inco
32b70 72 72 65 63 74 6c 79 20 62 79 20 74 68 65 20 61  rrectly by the a
32b80 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20 49 6e 20  pplication.  In 
32b90 74 68 61 74 20 63 61 73 65 2c 20 74 68 65 0a 2a  that case, the.*
32ba0 2a 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64  * error code and
32bb0 20 6d 65 73 73 61 67 65 20 6d 61 79 20 6f 72 20   message may or 
32bc0 6d 61 79 20 6e 6f 74 20 62 65 20 73 65 74 2e 0a  may not be set..
32bd0 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
32be0 74 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64  t sqlite3_errcod
32bf0 65 28 73 71 6c 69 74 65 33 20 2a 64 62 29 3b 0a  e(sqlite3 *db);.
32c00 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
32c10 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
32c20 65 72 72 63 6f 64 65 28 73 71 6c 69 74 65 33 20  errcode(sqlite3 
32c30 2a 64 62 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  *db);.SQLITE_API
32c40 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c   const char *sql
32c50 69 74 65 33 5f 65 72 72 6d 73 67 28 73 71 6c 69  ite3_errmsg(sqli
32c60 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50  te3*);.SQLITE_AP
32c70 49 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71  I const void *sq
32c80 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28 73  lite3_errmsg16(s
32c90 71 6c 69 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45  qlite3*);.SQLITE
32ca0 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20  _API const char 
32cb0 2a 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28  *sqlite3_errstr(
32cc0 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  int);../*.** CAP
32cd0 49 33 52 45 46 3a 20 50 72 65 70 61 72 65 64 20  I3REF: Prepared 
32ce0 53 74 61 74 65 6d 65 6e 74 20 4f 62 6a 65 63 74  Statement Object
32cf0 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 70  .** KEYWORDS: {p
32d00 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
32d10 74 7d 20 7b 70 72 65 70 61 72 65 64 20 73 74 61  t} {prepared sta
32d20 74 65 6d 65 6e 74 73 7d 0a 2a 2a 0a 2a 2a 20 41  tements}.**.** A
32d30 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
32d40 69 73 20 6f 62 6a 65 63 74 20 72 65 70 72 65 73  is object repres
32d50 65 6e 74 73 20 61 20 73 69 6e 67 6c 65 20 53 51  ents a single SQ
32d60 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  L statement that
32d70 0a 2a 2a 20 68 61 73 20 62 65 65 6e 20 63 6f 6d  .** has been com
32d80 70 69 6c 65 64 20 69 6e 74 6f 20 62 69 6e 61 72  piled into binar
32d90 79 20 66 6f 72 6d 20 61 6e 64 20 69 73 20 72 65  y form and is re
32da0 61 64 79 20 74 6f 20 62 65 20 65 76 61 6c 75 61  ady to be evalua
32db0 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 6e 6b  ted..**.** Think
32dc0 20 6f 66 20 65 61 63 68 20 53 51 4c 20 73 74 61   of each SQL sta
32dd0 74 65 6d 65 6e 74 20 61 73 20 61 20 73 65 70 61  tement as a sepa
32de0 72 61 74 65 20 63 6f 6d 70 75 74 65 72 20 70 72  rate computer pr
32df0 6f 67 72 61 6d 2e 20 20 54 68 65 0a 2a 2a 20 6f  ogram.  The.** o
32e00 72 69 67 69 6e 61 6c 20 53 51 4c 20 74 65 78 74  riginal SQL text
32e10 20 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e   is source code.
32e20 20 20 41 20 70 72 65 70 61 72 65 64 20 73 74 61    A prepared sta
32e30 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74 20 0a 2a  tement object .*
32e40 2a 20 69 73 20 74 68 65 20 63 6f 6d 70 69 6c 65  * is the compile
32e50 64 20 6f 62 6a 65 63 74 20 63 6f 64 65 2e 20 20  d object code.  
32e60 41 6c 6c 20 53 51 4c 20 6d 75 73 74 20 62 65 20  All SQL must be 
32e70 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61  converted into a
32e80 0a 2a 2a 20 70 72 65 70 61 72 65 64 20 73 74 61  .** prepared sta
32e90 74 65 6d 65 6e 74 20 62 65 66 6f 72 65 20 69 74  tement before it
32ea0 20 63 61 6e 20 62 65 20 72 75 6e 2e 0a 2a 2a 0a   can be run..**.
32eb0 2a 2a 20 54 68 65 20 6c 69 66 65 2d 63 79 63 6c  ** The life-cycl
32ec0 65 20 6f 66 20 61 20 70 72 65 70 61 72 65 64 20  e of a prepared 
32ed0 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74  statement object
32ee0 20 75 73 75 61 6c 6c 79 20 67 6f 65 73 20 6c 69   usually goes li
32ef0 6b 65 20 74 68 69 73 3a 0a 2a 2a 0a 2a 2a 20 3c  ke this:.**.** <
32f00 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 43 72 65 61  ol>.** <li> Crea
32f10 74 65 20 74 68 65 20 70 72 65 70 61 72 65 64 20  te the prepared 
32f20 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74  statement object
32f30 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
32f40 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2e 0a 2a  prepare_v2()]..*
32f50 2a 20 3c 6c 69 3e 20 42 69 6e 64 20 76 61 6c 75  * <li> Bind valu
32f60 65 73 20 74 6f 20 5b 70 61 72 61 6d 65 74 65 72  es to [parameter
32f70 73 5d 20 75 73 69 6e 67 20 74 68 65 20 73 71 6c  s] using the sql
32f80 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29 0a 2a 2a  ite3_bind_*().**
32f90 20 20 20 20 20 20 69 6e 74 65 72 66 61 63 65 73        interfaces
32fa0 2e 0a 2a 2a 20 3c 6c 69 3e 20 52 75 6e 20 74 68  ..** <li> Run th
32fb0 65 20 53 51 4c 20 62 79 20 63 61 6c 6c 69 6e 67  e SQL by calling
32fc0 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
32fd0 5d 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69  ] one or more ti
32fe0 6d 65 73 2e 0a 2a 2a 20 3c 6c 69 3e 20 52 65 73  mes..** <li> Res
32ff0 65 74 20 74 68 65 20 70 72 65 70 61 72 65 64 20  et the prepared 
33000 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20  statement using 
33010 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
33020 5d 20 74 68 65 6e 20 67 6f 20 62 61 63 6b 0a 2a  ] then go back.*
33030 2a 20 20 20 20 20 20 74 6f 20 73 74 65 70 20 32  *      to step 2
33040 2e 20 20 44 6f 20 74 68 69 73 20 7a 65 72 6f 20  .  Do this zero 
33050 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73 2e 0a 2a  or more times..*
33060 2a 20 3c 6c 69 3e 20 44 65 73 74 72 6f 79 20 74  * <li> Destroy t
33070 68 65 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 20  he object using 
33080 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  [sqlite3_finaliz
33090 65 28 29 5d 2e 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a  e()]..** </ol>.*
330a0 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74  /.typedef struct
330b0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 73 71   sqlite3_stmt sq
330c0 6c 69 74 65 33 5f 73 74 6d 74 3b 0a 0a 2f 2a 0a  lite3_stmt;../*.
330d0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 75 6e  ** CAPI3REF: Run
330e0 2d 74 69 6d 65 20 4c 69 6d 69 74 73 0a 2a 2a 20  -time Limits.** 
330f0 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
33100 2a 2a 0a 2a 2a 20 5e 28 54 68 69 73 20 69 6e 74  **.** ^(This int
33110 65 72 66 61 63 65 20 61 6c 6c 6f 77 73 20 74 68  erface allows th
33120 65 20 73 69 7a 65 20 6f 66 20 76 61 72 69 6f 75  e size of variou
33130 73 20 63 6f 6e 73 74 72 75 63 74 73 20 74 6f 20  s constructs to 
33140 62 65 20 6c 69 6d 69 74 65 64 0a 2a 2a 20 6f 6e  be limited.** on
33150 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 79   a connection by
33160 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 61 73 69   connection basi
33170 73 2e 20 20 54 68 65 20 66 69 72 73 74 20 70 61  s.  The first pa
33180 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 0a 2a  rameter is the.*
33190 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  * [database conn
331a0 65 63 74 69 6f 6e 5d 20 77 68 6f 73 65 20 6c 69  ection] whose li
331b0 6d 69 74 20 69 73 20 74 6f 20 62 65 20 73 65 74  mit is to be set
331c0 20 6f 72 20 71 75 65 72 69 65 64 2e 20 20 54 68   or queried.  Th
331d0 65 0a 2a 2a 20 73 65 63 6f 6e 64 20 70 61 72 61  e.** second para
331e0 6d 65 74 65 72 20 69 73 20 6f 6e 65 20 6f 66 20  meter is one of 
331f0 74 68 65 20 5b 6c 69 6d 69 74 20 63 61 74 65 67  the [limit categ
33200 6f 72 69 65 73 5d 20 74 68 61 74 20 64 65 66 69  ories] that defi
33210 6e 65 20 61 0a 2a 2a 20 63 6c 61 73 73 20 6f 66  ne a.** class of
33220 20 63 6f 6e 73 74 72 75 63 74 73 20 74 6f 20 62   constructs to b
33230 65 20 73 69 7a 65 20 6c 69 6d 69 74 65 64 2e 20  e size limited. 
33240 20 54 68 65 20 74 68 69 72 64 20 70 61 72 61 6d   The third param
33250 65 74 65 72 20 69 73 20 74 68 65 0a 2a 2a 20 6e  eter is the.** n
33260 65 77 20 6c 69 6d 69 74 20 66 6f 72 20 74 68 61  ew limit for tha
33270 74 20 63 6f 6e 73 74 72 75 63 74 2e 29 5e 0a 2a  t construct.)^.*
33280 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6e 65 77  *.** ^If the new
33290 20 6c 69 6d 69 74 20 69 73 20 61 20 6e 65 67 61   limit is a nega
332a0 74 69 76 65 20 6e 75 6d 62 65 72 2c 20 74 68 65  tive number, the
332b0 20 6c 69 6d 69 74 20 69 73 20 75 6e 63 68 61 6e   limit is unchan
332c0 67 65 64 2e 0a 2a 2a 20 5e 28 46 6f 72 20 65 61  ged..** ^(For ea
332d0 63 68 20 6c 69 6d 69 74 20 63 61 74 65 67 6f 72  ch limit categor
332e0 79 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 3c  y SQLITE_LIMIT_<
332f0 69 3e 4e 41 4d 45 3c 2f 69 3e 20 74 68 65 72 65  i>NAME</i> there
33300 20 69 73 20 61 20 0a 2a 2a 20 5b 6c 69 6d 69 74   is a .** [limit
33310 73 20 7c 20 68 61 72 64 20 75 70 70 65 72 20 62  s | hard upper b
33320 6f 75 6e 64 5d 0a 2a 2a 20 73 65 74 20 61 74 20  ound].** set at 
33330 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 62 79 20  compile-time by 
33340 61 20 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72  a C preprocessor
33350 20 6d 61 63 72 6f 20 63 61 6c 6c 65 64 0a 2a 2a   macro called.**
33360 20 5b 6c 69 6d 69 74 73 20 7c 20 53 51 4c 49 54   [limits | SQLIT
33370 45 5f 4d 41 58 5f 3c 69 3e 4e 41 4d 45 3c 2f 69  E_MAX_<i>NAME</i
33380 3e 5d 2e 0a 2a 2a 20 28 54 68 65 20 22 5f 4c 49  >]..** (The "_LI
33390 4d 49 54 5f 22 20 69 6e 20 74 68 65 20 6e 61 6d  MIT_" in the nam
333a0 65 20 69 73 20 63 68 61 6e 67 65 64 20 74 6f 20  e is changed to 
333b0 22 5f 4d 41 58 5f 22 2e 29 29 5e 0a 2a 2a 20 5e  "_MAX_".))^.** ^
333c0 41 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 63 72  Attempts to incr
333d0 65 61 73 65 20 61 20 6c 69 6d 69 74 20 61 62 6f  ease a limit abo
333e0 76 65 20 69 74 73 20 68 61 72 64 20 75 70 70 65  ve its hard uppe
333f0 72 20 62 6f 75 6e 64 20 61 72 65 0a 2a 2a 20 73  r bound are.** s
33400 69 6c 65 6e 74 6c 79 20 74 72 75 6e 63 61 74 65  ilently truncate
33410 64 20 74 6f 20 74 68 65 20 68 61 72 64 20 75 70  d to the hard up
33420 70 65 72 20 62 6f 75 6e 64 2e 0a 2a 2a 0a 2a 2a  per bound..**.**
33430 20 5e 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20   ^Regardless of 
33440 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74  whether or not t
33450 68 65 20 6c 69 6d 69 74 20 77 61 73 20 63 68 61  he limit was cha
33460 6e 67 65 64 2c 20 74 68 65 20 0a 2a 2a 20 5b 73  nged, the .** [s
33470 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20  qlite3_limit()] 
33480 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e  interface return
33490 73 20 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75  s the prior valu
334a0 65 20 6f 66 20 74 68 65 20 6c 69 6d 69 74 2e 0a  e of the limit..
334b0 2a 2a 20 5e 48 65 6e 63 65 2c 20 74 6f 20 66 69  ** ^Hence, to fi
334c0 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 76  nd the current v
334d0 61 6c 75 65 20 6f 66 20 61 20 6c 69 6d 69 74 20  alue of a limit 
334e0 77 69 74 68 6f 75 74 20 63 68 61 6e 67 69 6e 67  without changing
334f0 20 69 74 2c 0a 2a 2a 20 73 69 6d 70 6c 79 20 69   it,.** simply i
33500 6e 76 6f 6b 65 20 74 68 69 73 20 69 6e 74 65 72  nvoke this inter
33510 66 61 63 65 20 77 69 74 68 20 74 68 65 20 74 68  face with the th
33520 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 73 65  ird parameter se
33530 74 20 74 6f 20 2d 31 2e 0a 2a 2a 0a 2a 2a 20 52  t to -1..**.** R
33540 75 6e 2d 74 69 6d 65 20 6c 69 6d 69 74 73 20 61  un-time limits a
33550 72 65 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  re intended for 
33560 75 73 65 20 69 6e 20 61 70 70 6c 69 63 61 74 69  use in applicati
33570 6f 6e 73 20 74 68 61 74 20 6d 61 6e 61 67 65 0a  ons that manage.
33580 2a 2a 20 62 6f 74 68 20 74 68 65 69 72 20 6f 77  ** both their ow
33590 6e 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61 62  n internal datab
335a0 61 73 65 20 61 6e 64 20 61 6c 73 6f 20 64 61 74  ase and also dat
335b0 61 62 61 73 65 73 20 74 68 61 74 20 61 72 65 20  abases that are 
335c0 63 6f 6e 74 72 6f 6c 6c 65 64 0a 2a 2a 20 62 79  controlled.** by
335d0 20 75 6e 74 72 75 73 74 65 64 20 65 78 74 65 72   untrusted exter
335e0 6e 61 6c 20 73 6f 75 72 63 65 73 2e 20 20 41 6e  nal sources.  An
335f0 20 65 78 61 6d 70 6c 65 20 61 70 70 6c 69 63 61   example applica
33600 74 69 6f 6e 20 6d 69 67 68 74 20 62 65 20 61 0a  tion might be a.
33610 2a 2a 20 77 65 62 20 62 72 6f 77 73 65 72 20 74  ** web browser t
33620 68 61 74 20 68 61 73 20 69 74 73 20 6f 77 6e 20  hat has its own 
33630 64 61 74 61 62 61 73 65 73 20 66 6f 72 20 73 74  databases for st
33640 6f 72 69 6e 67 20 68 69 73 74 6f 72 79 20 61 6e  oring history an
33650 64 0a 2a 2a 20 73 65 70 61 72 61 74 65 20 64 61  d.** separate da
33660 74 61 62 61 73 65 73 20 63 6f 6e 74 72 6f 6c 6c  tabases controll
33670 65 64 20 62 79 20 4a 61 76 61 53 63 72 69 70 74  ed by JavaScript
33680 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 64 6f   applications do
33690 77 6e 6c 6f 61 64 65 64 0a 2a 2a 20 6f 66 66 20  wnloaded.** off 
336a0 74 68 65 20 49 6e 74 65 72 6e 65 74 2e 20 20 54  the Internet.  T
336b0 68 65 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61  he internal data
336c0 62 61 73 65 73 20 63 61 6e 20 62 65 20 67 69 76  bases can be giv
336d0 65 6e 20 74 68 65 0a 2a 2a 20 6c 61 72 67 65 2c  en the.** large,
336e0 20 64 65 66 61 75 6c 74 20 6c 69 6d 69 74 73 2e   default limits.
336f0 20 20 44 61 74 61 62 61 73 65 73 20 6d 61 6e 61    Databases mana
33700 67 65 64 20 62 79 20 65 78 74 65 72 6e 61 6c 20  ged by external 
33710 73 6f 75 72 63 65 73 20 63 61 6e 0a 2a 2a 20 62  sources can.** b
33720 65 20 67 69 76 65 6e 20 6d 75 63 68 20 73 6d 61  e given much sma
33730 6c 6c 65 72 20 6c 69 6d 69 74 73 20 64 65 73 69  ller limits desi
33740 67 6e 65 64 20 74 6f 20 70 72 65 76 65 6e 74 20  gned to prevent 
33750 61 20 64 65 6e 69 61 6c 20 6f 66 20 73 65 72 76  a denial of serv
33760 69 63 65 0a 2a 2a 20 61 74 74 61 63 6b 2e 20 20  ice.** attack.  
33770 44 65 76 65 6c 6f 70 65 72 73 20 6d 69 67 68 74  Developers might
33780 20 61 6c 73 6f 20 77 61 6e 74 20 74 6f 20 75 73   also want to us
33790 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  e the [sqlite3_s
337a0 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d  et_authorizer()]
337b0 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 74 6f  .** interface to
337c0 20 66 75 72 74 68 65 72 20 63 6f 6e 74 72 6f 6c   further control
337d0 20 75 6e 74 72 75 73 74 65 64 20 53 51 4c 2e 20   untrusted SQL. 
337e0 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   The size of the
337f0 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 72 65   database.** cre
33800 61 74 65 64 20 62 79 20 61 6e 20 75 6e 74 72 75  ated by an untru
33810 73 74 65 64 20 73 63 72 69 70 74 20 63 61 6e 20  sted script can 
33820 62 65 20 63 6f 6e 74 61 69 6e 65 64 20 75 73 69  be contained usi
33830 6e 67 20 74 68 65 0a 2a 2a 20 5b 6d 61 78 5f 70  ng the.** [max_p
33840 61 67 65 5f 63 6f 75 6e 74 5d 20 5b 50 52 41 47  age_count] [PRAG
33850 4d 41 5d 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 72  MA]..**.** New r
33860 75 6e 2d 74 69 6d 65 20 6c 69 6d 69 74 20 63 61  un-time limit ca
33870 74 65 67 6f 72 69 65 73 20 6d 61 79 20 62 65 20  tegories may be 
33880 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20  added in future 
33890 72 65 6c 65 61 73 65 73 2e 0a 2a 2f 0a 53 51 4c  releases..*/.SQL
338a0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
338b0 74 65 33 5f 6c 69 6d 69 74 28 73 71 6c 69 74 65  te3_limit(sqlite
338c0 33 2a 2c 20 69 6e 74 20 69 64 2c 20 69 6e 74 20  3*, int id, int 
338d0 6e 65 77 56 61 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20  newVal);../*.** 
338e0 43 41 50 49 33 52 45 46 3a 20 52 75 6e 2d 54 69  CAPI3REF: Run-Ti
338f0 6d 65 20 4c 69 6d 69 74 20 43 61 74 65 67 6f 72  me Limit Categor
33900 69 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a  ies.** KEYWORDS:
33910 20 7b 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 79   {limit category
33920 7d 20 7b 2a 6c 69 6d 69 74 20 63 61 74 65 67 6f  } {*limit catego
33930 72 69 65 73 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73  ries}.**.** Thes
33940 65 20 63 6f 6e 73 74 61 6e 74 73 20 64 65 66 69  e constants defi
33950 6e 65 20 76 61 72 69 6f 75 73 20 70 65 72 66 6f  ne various perfo
33960 72 6d 61 6e 63 65 20 6c 69 6d 69 74 73 0a 2a 2a  rmance limits.**
33970 20 74 68 61 74 20 63 61 6e 20 62 65 20 6c 6f 77   that can be low
33980 65 72 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65  ered at run-time
33990 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
339a0 6c 69 6d 69 74 28 29 5d 2e 0a 2a 2a 20 54 68 65  limit()]..** The
339b0 20 73 79 6e 6f 70 73 69 73 20 6f 66 20 74 68 65   synopsis of the
339c0 20 6d 65 61 6e 69 6e 67 73 20 6f 66 20 74 68 65   meanings of the
339d0 20 76 61 72 69 6f 75 73 20 6c 69 6d 69 74 73 20   various limits 
339e0 69 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 2e 0a  is shown below..
339f0 2a 2a 20 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e  ** Additional in
33a00 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 61 76 61  formation is ava
33a10 69 6c 61 62 6c 65 20 61 74 20 5b 6c 69 6d 69 74  ilable at [limit
33a20 73 20 7c 20 4c 69 6d 69 74 73 20 69 6e 20 53 51  s | Limits in SQ
33a30 4c 69 74 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c  Lite]..**.** <dl
33a40 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  >.** [[SQLITE_LI
33a50 4d 49 54 5f 4c 45 4e 47 54 48 5d 5d 20 5e 28 3c  MIT_LENGTH]] ^(<
33a60 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  dt>SQLITE_LIMIT_
33a70 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c  LENGTH</dt>.** <
33a80 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 73  dd>The maximum s
33a90 69 7a 65 20 6f 66 20 61 6e 79 20 73 74 72 69 6e  ize of any strin
33aa0 67 20 6f 72 20 42 4c 4f 42 20 6f 72 20 74 61 62  g or BLOB or tab
33ab0 6c 65 20 72 6f 77 2c 20 69 6e 20 62 79 74 65 73  le row, in bytes
33ac0 2e 3c 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b  .<dd>)^.**.** [[
33ad0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c  SQLITE_LIMIT_SQL
33ae0 5f 4c 45 4e 47 54 48 5d 5d 20 5e 28 3c 64 74 3e  _LENGTH]] ^(<dt>
33af0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c  SQLITE_LIMIT_SQL
33b00 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20  _LENGTH</dt>.** 
33b10 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
33b20 6c 65 6e 67 74 68 20 6f 66 20 61 6e 20 53 51 4c  length of an SQL
33b30 20 73 74 61 74 65 6d 65 6e 74 2c 20 69 6e 20 62   statement, in b
33b40 79 74 65 73 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a  ytes.</dd>)^.**.
33b50 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  ** [[SQLITE_LIMI
33b60 54 5f 43 4f 4c 55 4d 4e 5d 5d 20 5e 28 3c 64 74  T_COLUMN]] ^(<dt
33b70 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f  >SQLITE_LIMIT_CO
33b80 4c 55 4d 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  LUMN</dt>.** <dd
33b90 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d  >The maximum num
33ba0 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
33bb0 6e 20 61 20 74 61 62 6c 65 20 64 65 66 69 6e 69  n a table defini
33bc0 74 69 6f 6e 20 6f 72 20 69 6e 20 74 68 65 0a 2a  tion or in the.*
33bd0 2a 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20  * result set of 
33be0 61 20 5b 53 45 4c 45 43 54 5d 20 6f 72 20 74 68  a [SELECT] or th
33bf0 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  e maximum number
33c00 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61   of columns in a
33c10 6e 20 69 6e 64 65 78 0a 2a 2a 20 6f 72 20 69 6e  n index.** or in
33c20 20 61 6e 20 4f 52 44 45 52 20 42 59 20 6f 72 20   an ORDER BY or 
33c30 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 2e  GROUP BY clause.
33c40 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b  </dd>)^.**.** [[
33c50 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50  SQLITE_LIMIT_EXP
33c60 52 5f 44 45 50 54 48 5d 5d 20 5e 28 3c 64 74 3e  R_DEPTH]] ^(<dt>
33c70 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50  SQLITE_LIMIT_EXP
33c80 52 5f 44 45 50 54 48 3c 2f 64 74 3e 0a 2a 2a 20  R_DEPTH</dt>.** 
33c90 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
33ca0 64 65 70 74 68 20 6f 66 20 74 68 65 20 70 61 72  depth of the par
33cb0 73 65 20 74 72 65 65 20 6f 6e 20 61 6e 79 20 65  se tree on any e
33cc0 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e 29  xpression.</dd>)
33cd0 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ^.**.** [[SQLITE
33ce0 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f  _LIMIT_COMPOUND_
33cf0 53 45 4c 45 43 54 5d 5d 20 5e 28 3c 64 74 3e 53  SELECT]] ^(<dt>S
33d00 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50  QLITE_LIMIT_COMP
33d10 4f 55 4e 44 5f 53 45 4c 45 43 54 3c 2f 64 74 3e  OUND_SELECT</dt>
33d20 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
33d30 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 74 65  mum number of te
33d40 72 6d 73 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e  rms in a compoun
33d50 64 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  d SELECT stateme
33d60 6e 74 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a  nt.</dd>)^.**.**
33d70 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
33d80 56 44 42 45 5f 4f 50 5d 5d 20 5e 28 3c 64 74 3e  VDBE_OP]] ^(<dt>
33d90 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 44 42  SQLITE_LIMIT_VDB
33da0 45 5f 4f 50 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  E_OP</dt>.** <dd
33db0 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d  >The maximum num
33dc0 62 65 72 20 6f 66 20 69 6e 73 74 72 75 63 74 69  ber of instructi
33dd0 6f 6e 73 20 69 6e 20 61 20 76 69 72 74 75 61 6c  ons in a virtual
33de0 20 6d 61 63 68 69 6e 65 20 70 72 6f 67 72 61 6d   machine program
33df0 0a 2a 2a 20 75 73 65 64 20 74 6f 20 69 6d 70 6c  .** used to impl
33e00 65 6d 65 6e 74 20 61 6e 20 53 51 4c 20 73 74 61  ement an SQL sta
33e10 74 65 6d 65 6e 74 2e 20 20 49 66 20 5b 73 71 6c  tement.  If [sql
33e20 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
33e30 29 5d 20 6f 72 0a 2a 2a 20 74 68 65 20 65 71 75  )] or.** the equ
33e40 69 76 61 6c 65 6e 74 20 74 72 69 65 73 20 74 6f  ivalent tries to
33e50 20 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20   allocate space 
33e60 66 6f 72 20 6d 6f 72 65 20 74 68 61 6e 20 74 68  for more than th
33e70 69 73 20 6d 61 6e 79 20 6f 70 63 6f 64 65 73 0a  is many opcodes.
33e80 2a 2a 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 70  ** in a single p
33e90 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
33ea0 74 2c 20 61 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d  t, an SQLITE_NOM
33eb0 45 4d 20 65 72 72 6f 72 20 69 73 20 72 65 74 75  EM error is retu
33ec0 72 6e 65 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a  rned.</dd>)^.**.
33ed0 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  ** [[SQLITE_LIMI
33ee0 54 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 5d  T_FUNCTION_ARG]]
33ef0 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
33f00 4d 49 54 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47  MIT_FUNCTION_ARG
33f10 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
33f20 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
33f30 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 6f 6e 20  of arguments on 
33f40 61 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 64 64 3e  a function.</dd>
33f50 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  )^.**.** [[SQLIT
33f60 45 5f 4c 49 4d 49 54 5f 41 54 54 41 43 48 45 44  E_LIMIT_ATTACHED
33f70 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f  ]] ^(<dt>SQLITE_
33f80 4c 49 4d 49 54 5f 41 54 54 41 43 48 45 44 3c 2f  LIMIT_ATTACHED</
33f90 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
33fa0 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
33fb0 20 5b 41 54 54 41 43 48 20 7c 20 61 74 74 61 63   [ATTACH | attac
33fc0 68 65 64 20 64 61 74 61 62 61 73 65 73 5d 2e 29  hed databases].)
33fd0 5e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  ^</dd>.**.** [[S
33fe0 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45  QLITE_LIMIT_LIKE
33ff0 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 5d  _PATTERN_LENGTH]
34000 5d 0a 2a 2a 20 5e 28 3c 64 74 3e 53 51 4c 49 54  ].** ^(<dt>SQLIT
34010 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50 41 54  E_LIMIT_LIKE_PAT
34020 54 45 52 4e 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e  TERN_LENGTH</dt>
34030 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
34040 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  mum length of th
34050 65 20 70 61 74 74 65 72 6e 20 61 72 67 75 6d 65  e pattern argume
34060 6e 74 20 74 6f 20 74 68 65 20 5b 4c 49 4b 45 5d  nt to the [LIKE]
34070 20 6f 72 0a 2a 2a 20 5b 47 4c 4f 42 5d 20 6f 70   or.** [GLOB] op
34080 65 72 61 74 6f 72 73 2e 3c 2f 64 64 3e 29 5e 0a  erators.</dd>)^.
34090 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c  **.** [[SQLITE_L
340a0 49 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55  IMIT_VARIABLE_NU
340b0 4d 42 45 52 5d 5d 0a 2a 2a 20 5e 28 3c 64 74 3e  MBER]].** ^(<dt>
340c0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52  SQLITE_LIMIT_VAR
340d0 49 41 42 4c 45 5f 4e 55 4d 42 45 52 3c 2f 64 74  IABLE_NUMBER</dt
340e0 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78  >.** <dd>The max
340f0 69 6d 75 6d 20 69 6e 64 65 78 20 6e 75 6d 62 65  imum index numbe
34100 72 20 6f 66 20 61 6e 79 20 5b 70 61 72 61 6d 65  r of any [parame
34110 74 65 72 5d 20 69 6e 20 61 6e 20 53 51 4c 20 73  ter] in an SQL s
34120 74 61 74 65 6d 65 6e 74 2e 29 5e 0a 2a 2a 0a 2a  tatement.)^.**.*
34130 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  * [[SQLITE_LIMIT
34140 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48 5d 5d  _TRIGGER_DEPTH]]
34150 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
34160 4d 49 54 5f 54 52 49 47 47 45 52 5f 44 45 50 54  MIT_TRIGGER_DEPT
34170 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68  H</dt>.** <dd>Th
34180 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68 20  e maximum depth 
34190 6f 66 20 72 65 63 75 72 73 69 6f 6e 20 66 6f 72  of recursion for
341a0 20 74 72 69 67 67 65 72 73 2e 3c 2f 64 64 3e 29   triggers.</dd>)
341b0 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ^.**.** [[SQLITE
341c0 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48  _LIMIT_WORKER_TH
341d0 52 45 41 44 53 5d 5d 20 5e 28 3c 64 74 3e 53 51  READS]] ^(<dt>SQ
341e0 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45  LITE_LIMIT_WORKE
341f0 52 5f 54 48 52 45 41 44 53 3c 2f 64 74 3e 0a 2a  R_THREADS</dt>.*
34200 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75  * <dd>The maximu
34210 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69  m number of auxi
34220 6c 69 61 72 79 20 77 6f 72 6b 65 72 20 74 68 72  liary worker thr
34230 65 61 64 73 20 74 68 61 74 20 61 20 73 69 6e 67  eads that a sing
34240 6c 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20  le.** [prepared 
34250 73 74 61 74 65 6d 65 6e 74 5d 20 6d 61 79 20 73  statement] may s
34260 74 61 72 74 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 20  tart.</dd>)^.** 
34270 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65  </dl>.*/.#define
34280 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45   SQLITE_LIMIT_LE
34290 4e 47 54 48 20 20 20 20 20 20 20 20 20 20 20 20  NGTH            
342a0 20 20 20 20 20 20 20 20 30 0a 23 64 65 66 69 6e          0.#defin
342b0 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 53  e SQLITE_LIMIT_S
342c0 51 4c 5f 4c 45 4e 47 54 48 20 20 20 20 20 20 20  QL_LENGTH       
342d0 20 20 20 20 20 20 20 20 20 31 0a 23 64 65 66 69           1.#defi
342e0 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  ne SQLITE_LIMIT_
342f0 43 4f 4c 55 4d 4e 20 20 20 20 20 20 20 20 20 20  COLUMN          
34300 20 20 20 20 20 20 20 20 20 20 32 0a 23 64 65 66            2.#def
34310 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54  ine SQLITE_LIMIT
34320 5f 45 58 50 52 5f 44 45 50 54 48 20 20 20 20 20  _EXPR_DEPTH     
34330 20 20 20 20 20 20 20 20 20 20 20 33 0a 23 64 65             3.#de
34340 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49  fine SQLITE_LIMI
34350 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43  T_COMPOUND_SELEC
34360 54 20 20 20 20 20 20 20 20 20 20 20 34 0a 23 64  T           4.#d
34370 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d  efine SQLITE_LIM
34380 49 54 5f 56 44 42 45 5f 4f 50 20 20 20 20 20 20  IT_VDBE_OP      
34390 20 20 20 20 20 20 20 20 20 20 20 20 20 35 0a 23               5.#
343a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49  define SQLITE_LI
343b0 4d 49 54 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47  MIT_FUNCTION_ARG
343c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 36 0a                6.
343d0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
343e0 49 4d 49 54 5f 41 54 54 41 43 48 45 44 20 20 20  IMIT_ATTACHED   
343f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 37                 7
34400 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
34410 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45  LIMIT_LIKE_PATTE
34420 52 4e 5f 4c 45 4e 47 54 48 20 20 20 20 20 20 20  RN_LENGTH       
34430 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  8.#define SQLITE
34440 5f 4c 49 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f  _LIMIT_VARIABLE_
34450 4e 55 4d 42 45 52 20 20 20 20 20 20 20 20 20 20  NUMBER          
34460 20 39 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   9.#define SQLIT
34470 45 5f 4c 49 4d 49 54 5f 54 52 49 47 47 45 52 5f  E_LIMIT_TRIGGER_
34480 44 45 50 54 48 20 20 20 20 20 20 20 20 20 20 20  DEPTH           
34490 20 31 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   10.#define SQLI
344a0 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f  TE_LIMIT_WORKER_
344b0 54 48 52 45 41 44 53 20 20 20 20 20 20 20 20 20  THREADS         
344c0 20 20 31 31 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49    11../*.** CAPI
344d0 33 52 45 46 3a 20 50 72 65 70 61 72 65 20 46 6c  3REF: Prepare Fl
344e0 61 67 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  ags.**.** These 
344f0 63 6f 6e 73 74 61 6e 74 73 20 64 65 66 69 6e 65  constants define
34500 20 76 61 72 69 6f 75 73 20 66 6c 61 67 73 20 74   various flags t
34510 68 61 74 20 63 61 6e 20 62 65 20 70 61 73 73 65  hat can be passe
34520 64 20 69 6e 74 6f 0a 2a 2a 20 22 70 72 65 70 46  d into.** "prepF
34530 6c 61 67 73 22 20 70 61 72 61 6d 65 74 65 72 20  lags" parameter 
34540 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  of the [sqlite3_
34550 70 72 65 70 61 72 65 5f 76 33 28 29 5d 20 61 6e  prepare_v3()] an
34560 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72  d.** [sqlite3_pr
34570 65 70 61 72 65 31 36 5f 76 33 28 29 5d 20 69 6e  epare16_v3()] in
34580 74 65 72 66 61 63 65 73 2e 0a 2a 2a 0a 2a 2a 20  terfaces..**.** 
34590 4e 65 77 20 66 6c 61 67 73 20 6d 61 79 20 62 65  New flags may be
345a0 20 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65   added in future
345b0 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c   releases of SQL
345c0 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a  ite..**.** <dl>.
345d0 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 50 52 45 50  ** [[SQLITE_PREP
345e0 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54 5d 5d  ARE_PERSISTENT]]
345f0 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 50 52   ^(<dt>SQLITE_PR
34600 45 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54  EPARE_PERSISTENT
34610 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
34620 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f   SQLITE_PREPARE_
34630 50 45 52 53 49 53 54 45 4e 54 20 66 6c 61 67 20  PERSISTENT flag 
34640 69 73 20 61 20 68 69 6e 74 20 74 6f 20 74 68 65  is a hint to the
34650 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 0a 2a   query planner.*
34660 2a 20 74 68 61 74 20 74 68 65 20 70 72 65 70 61  * that the prepa
34670 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 77 69  red statement wi
34680 6c 6c 20 62 65 20 72 65 74 61 69 6e 65 64 20 66  ll be retained f
34690 6f 72 20 61 20 6c 6f 6e 67 20 74 69 6d 65 20 61  or a long time a
346a0 6e 64 0a 2a 2a 20 70 72 6f 62 61 62 6c 79 20 72  nd.** probably r
346b0 65 75 73 65 64 20 6d 61 6e 79 20 74 69 6d 65 73  eused many times
346c0 2e 29 5e 20 5e 57 69 74 68 6f 75 74 20 74 68 69  .)^ ^Without thi
346d0 73 20 66 6c 61 67 2c 20 5b 73 71 6c 69 74 65 33  s flag, [sqlite3
346e0 5f 70 72 65 70 61 72 65 5f 76 33 28 29 5d 0a 2a  _prepare_v3()].*
346f0 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70  * and [sqlite3_p
34700 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d 20 61  repare16_v3()] a
34710 73 73 75 6d 65 20 74 68 61 74 20 74 68 65 20 70  ssume that the p
34720 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
34730 74 20 77 69 6c 6c 20 0a 2a 2a 20 62 65 20 75 73  t will .** be us
34740 65 64 20 6a 75 73 74 20 6f 6e 63 65 20 6f 72 20  ed just once or 
34750 61 74 20 6d 6f 73 74 20 61 20 66 65 77 20 74 69  at most a few ti
34760 6d 65 73 20 61 6e 64 20 74 68 65 6e 20 64 65 73  mes and then des
34770 74 72 6f 79 65 64 20 75 73 69 6e 67 0a 2a 2a 20  troyed using.** 
34780 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  [sqlite3_finaliz
34790 65 28 29 5d 20 72 65 6c 61 74 69 76 65 6c 79 20  e()] relatively 
347a0 73 6f 6f 6e 2e 20 54 68 65 20 63 75 72 72 65 6e  soon. The curren
347b0 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  t implementation
347c0 20 61 63 74 73 0a 2a 2a 20 6f 6e 20 74 68 69 73   acts.** on this
347d0 20 68 69 6e 74 20 62 79 20 61 76 6f 69 64 69 6e   hint by avoidin
347e0 67 20 74 68 65 20 75 73 65 20 6f 66 20 5b 6c 6f  g the use of [lo
347f0 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 5d 20  okaside memory] 
34800 73 6f 20 61 73 20 6e 6f 74 20 74 6f 0a 2a 2a 20  so as not to.** 
34810 64 65 70 6c 65 74 65 20 74 68 65 20 6c 69 6d 69  deplete the limi
34820 74 65 64 20 73 74 6f 72 65 20 6f 66 20 6c 6f 6f  ted store of loo
34830 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 2e 20 46  kaside memory. F
34840 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
34850 66 0a 2a 2a 20 53 51 4c 69 74 65 20 6d 61 79 20  f.** SQLite may 
34860 61 63 74 20 6f 6e 20 74 68 69 73 20 68 69 6e 74  act on this hint
34870 20 64 69 66 66 65 72 65 6e 74 6c 79 2e 0a 2a 2a   differently..**
34880 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 50 52 45  .** [[SQLITE_PRE
34890 50 41 52 45 5f 4e 4f 52 4d 41 4c 49 5a 45 5d 5d  PARE_NORMALIZE]]
348a0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 50 52 45 50   <dt>SQLITE_PREP
348b0 41 52 45 5f 4e 4f 52 4d 41 4c 49 5a 45 3c 2f 64  ARE_NORMALIZE</d
348c0 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 53 51  t>.** <dd>The SQ
348d0 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f 52  LITE_PREPARE_NOR
348e0 4d 41 4c 49 5a 45 20 66 6c 61 67 20 69 73 20 61  MALIZE flag is a
348f0 20 6e 6f 2d 6f 70 2e 20 54 68 69 73 20 66 6c 61   no-op. This fla
34900 67 20 75 73 65 64 0a 2a 2a 20 74 6f 20 62 65 20  g used.** to be 
34910 72 65 71 75 69 72 65 64 20 66 6f 72 20 61 6e 79  required for any
34920 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
34930 65 6e 74 20 74 68 61 74 20 77 61 6e 74 65 64 20  ent that wanted 
34940 74 6f 20 75 73 65 20 74 68 65 0a 2a 2a 20 5b 73  to use the.** [s
34950 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65  qlite3_normalize
34960 64 5f 73 71 6c 28 29 5d 20 69 6e 74 65 72 66 61  d_sql()] interfa
34970 63 65 2e 20 20 48 6f 77 65 76 65 72 2c 20 74 68  ce.  However, th
34980 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6e 6f  e.** [sqlite3_no
34990 72 6d 61 6c 69 7a 65 64 5f 73 71 6c 28 29 5d 20  rmalized_sql()] 
349a0 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f 77  interface is now
349b0 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 61 6c   available to al
349c0 6c 0a 2a 2a 20 70 72 65 70 61 72 65 64 20 73 74  l.** prepared st
349d0 61 74 65 6d 65 6e 74 73 2c 20 72 65 67 61 72 64  atements, regard
349e0 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 20  less of whether 
349f0 6f 72 20 6e 6f 74 20 74 68 65 79 20 75 73 65 20  or not they use 
34a00 74 68 69 73 0a 2a 2a 20 66 6c 61 67 2e 0a 2a 2a  this.** flag..**
34a10 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 50 52 45  .** [[SQLITE_PRE
34a20 50 41 52 45 5f 4e 4f 5f 56 54 41 42 5d 5d 20 3c  PARE_NO_VTAB]] <
34a30 64 74 3e 53 51 4c 49 54 45 5f 50 52 45 50 41 52  dt>SQLITE_PREPAR
34a40 45 5f 4e 4f 5f 56 54 41 42 3c 2f 64 74 3e 0a 2a  E_NO_VTAB</dt>.*
34a50 2a 20 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45  * <dd>The SQLITE
34a60 5f 50 52 45 50 41 52 45 5f 4e 4f 5f 56 54 41 42  _PREPARE_NO_VTAB
34a70 20 66 6c 61 67 20 63 61 75 73 65 73 20 74 68 65   flag causes the
34a80 20 53 51 4c 20 63 6f 6d 70 69 6c 65 72 0a 2a 2a   SQL compiler.**
34a90 20 74 6f 20 72 65 74 75 72 6e 20 61 6e 20 65 72   to return an er
34aa0 72 6f 72 20 28 65 72 72 6f 72 20 63 6f 64 65 20  ror (error code 
34ab0 53 51 4c 49 54 45 5f 45 52 52 4f 52 29 20 69 66  SQLITE_ERROR) if
34ac0 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 75   the statement u
34ad0 73 65 73 0a 2a 2a 20 61 6e 79 20 76 69 72 74 75  ses.** any virtu
34ae0 61 6c 20 74 61 62 6c 65 73 2e 0a 2a 2a 20 3c 2f  al tables..** </
34af0 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  dl>.*/.#define S
34b00 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45  QLITE_PREPARE_PE
34b10 52 53 49 53 54 45 4e 54 20 20 20 20 20 20 20 20  RSISTENT        
34b20 20 20 20 20 20 20 30 78 30 31 0a 23 64 65 66 69        0x01.#defi
34b30 6e 65 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52  ne SQLITE_PREPAR
34b40 45 5f 4e 4f 52 4d 41 4c 49 5a 45 20 20 20 20 20  E_NORMALIZE     
34b50 20 20 20 20 20 20 20 20 20 20 30 78 30 32 0a 23            0x02.#
34b60 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52  define SQLITE_PR
34b70 45 50 41 52 45 5f 4e 4f 5f 56 54 41 42 20 20 20  EPARE_NO_VTAB   
34b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78                0x
34b90 30 34 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  04../*.** CAPI3R
34ba0 45 46 3a 20 43 6f 6d 70 69 6c 69 6e 67 20 41 6e  EF: Compiling An
34bb0 20 53 51 4c 20 53 74 61 74 65 6d 65 6e 74 0a 2a   SQL Statement.*
34bc0 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 53 51 4c  * KEYWORDS: {SQL
34bd0 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 70 69   statement compi
34be0 6c 65 72 7d 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  ler}.** METHOD: 
34bf0 73 71 6c 69 74 65 33 0a 2a 2a 20 43 4f 4e 53 54  sqlite3.** CONST
34c00 52 55 43 54 4f 52 3a 20 73 71 6c 69 74 65 33 5f  RUCTOR: sqlite3_
34c10 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 54 6f 20 65 78  stmt.**.** To ex
34c20 65 63 75 74 65 20 61 6e 20 53 51 4c 20 73 74 61  ecute an SQL sta
34c30 74 65 6d 65 6e 74 2c 20 69 74 20 6d 75 73 74 20  tement, it must 
34c40 66 69 72 73 74 20 62 65 20 63 6f 6d 70 69 6c 65  first be compile
34c50 64 20 69 6e 74 6f 20 61 20 62 79 74 65 2d 63 6f  d into a byte-co
34c60 64 65 0a 2a 2a 20 70 72 6f 67 72 61 6d 20 75 73  de.** program us
34c70 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 73 65  ing one of these
34c80 20 72 6f 75 74 69 6e 65 73 2e 20 20 4f 72 2c 20   routines.  Or, 
34c90 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20  in other words, 
34ca0 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73 0a 2a  these routines.*
34cb0 2a 20 61 72 65 20 63 6f 6e 73 74 72 75 63 74 6f  * are constructo
34cc0 72 73 20 66 6f 72 20 74 68 65 20 5b 70 72 65 70  rs for the [prep
34cd0 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
34ce0 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 54 68  object..**.** Th
34cf0 65 20 70 72 65 66 65 72 72 65 64 20 72 6f 75 74  e preferred rout
34d00 69 6e 65 20 74 6f 20 75 73 65 20 69 73 20 5b 73  ine to use is [s
34d10 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
34d20 32 28 29 5d 2e 20 20 54 68 65 0a 2a 2a 20 5b 73  2()].  The.** [s
34d30 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29  qlite3_prepare()
34d40 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6c  ] interface is l
34d50 65 67 61 63 79 20 61 6e 64 20 73 68 6f 75 6c 64  egacy and should
34d60 20 62 65 20 61 76 6f 69 64 65 64 2e 0a 2a 2a 20   be avoided..** 
34d70 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
34d80 5f 76 33 28 29 5d 20 68 61 73 20 61 6e 20 65 78  _v3()] has an ex
34d90 74 72 61 20 22 70 72 65 70 46 6c 61 67 73 22 20  tra "prepFlags" 
34da0 6f 70 74 69 6f 6e 20 74 68 61 74 20 69 73 20 75  option that is u
34db0 73 65 64 0a 2a 2a 20 66 6f 72 20 73 70 65 63 69  sed.** for speci
34dc0 61 6c 20 70 75 72 70 6f 73 65 73 2e 0a 2a 2a 0a  al purposes..**.
34dd0 2a 2a 20 54 68 65 20 75 73 65 20 6f 66 20 74 68  ** The use of th
34de0 65 20 55 54 46 2d 38 20 69 6e 74 65 72 66 61 63  e UTF-8 interfac
34df0 65 73 20 69 73 20 70 72 65 66 65 72 72 65 64 2c  es is preferred,
34e00 20 61 73 20 53 51 4c 69 74 65 20 63 75 72 72 65   as SQLite curre
34e10 6e 74 6c 79 0a 2a 2a 20 64 6f 65 73 20 61 6c 6c  ntly.** does all
34e20 20 70 61 72 73 69 6e 67 20 75 73 69 6e 67 20 55   parsing using U
34e30 54 46 2d 38 2e 20 20 54 68 65 20 55 54 46 2d 31  TF-8.  The UTF-1
34e40 36 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65  6 interfaces are
34e50 20 70 72 6f 76 69 64 65 64 0a 2a 2a 20 61 73 20   provided.** as 
34e60 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 2e 20 20  a convenience.  
34e70 54 68 65 20 55 54 46 2d 31 36 20 69 6e 74 65 72  The UTF-16 inter
34e80 66 61 63 65 73 20 77 6f 72 6b 20 62 79 20 63 6f  faces work by co
34e90 6e 76 65 72 74 69 6e 67 20 74 68 65 0a 2a 2a 20  nverting the.** 
34ea0 69 6e 70 75 74 20 74 65 78 74 20 69 6e 74 6f 20  input text into 
34eb0 55 54 46 2d 38 2c 20 74 68 65 6e 20 69 6e 76 6f  UTF-8, then invo
34ec0 6b 69 6e 67 20 74 68 65 20 63 6f 72 72 65 73 70  king the corresp
34ed0 6f 6e 64 69 6e 67 20 55 54 46 2d 38 20 69 6e 74  onding UTF-8 int
34ee0 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 54 68  erface..**.** Th
34ef0 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
34f00 2c 20 22 64 62 22 2c 20 69 73 20 61 20 5b 64 61  , "db", is a [da
34f10 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
34f20 6e 5d 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  n] obtained from
34f30 20 61 0a 2a 2a 20 70 72 69 6f 72 20 73 75 63 63   a.** prior succ
34f40 65 73 73 66 75 6c 20 63 61 6c 6c 20 74 6f 20 5b  essful call to [
34f50 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c  sqlite3_open()],
34f60 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76   [sqlite3_open_v
34f70 32 28 29 5d 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69  2()] or.** [sqli
34f80 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2e 20 20  te3_open16()].  
34f90 54 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  The database con
34fa0 6e 65 63 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74  nection must not
34fb0 20 68 61 76 65 20 62 65 65 6e 20 63 6c 6f 73 65   have been close
34fc0 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 65 63  d..**.** The sec
34fd0 6f 6e 64 20 61 72 67 75 6d 65 6e 74 2c 20 22 7a  ond argument, "z
34fe0 53 71 6c 22 2c 20 69 73 20 74 68 65 20 73 74 61  Sql", is the sta
34ff0 74 65 6d 65 6e 74 20 74 6f 20 62 65 20 63 6f 6d  tement to be com
35000 70 69 6c 65 64 2c 20 65 6e 63 6f 64 65 64 0a 2a  piled, encoded.*
35010 2a 20 61 73 20 65 69 74 68 65 72 20 55 54 46 2d  * as either UTF-
35020 38 20 6f 72 20 55 54 46 2d 31 36 2e 20 20 54 68  8 or UTF-16.  Th
35030 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
35040 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 70 72 65  e(), sqlite3_pre
35050 70 61 72 65 5f 76 32 28 29 2c 0a 2a 2a 20 61 6e  pare_v2(),.** an
35060 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  d sqlite3_prepar
35070 65 5f 76 33 28 29 0a 2a 2a 20 69 6e 74 65 72 66  e_v3().** interf
35080 61 63 65 73 20 75 73 65 20 55 54 46 2d 38 2c 20  aces use UTF-8, 
35090 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70  and sqlite3_prep
350a0 61 72 65 31 36 28 29 2c 20 73 71 6c 69 74 65 33  are16(), sqlite3
350b0 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28 29 2c  _prepare16_v2(),
350c0 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  .** and sqlite3_
350d0 70 72 65 70 61 72 65 31 36 5f 76 33 28 29 20 75  prepare16_v3() u
350e0 73 65 20 55 54 46 2d 31 36 2e 0a 2a 2a 0a 2a 2a  se UTF-16..**.**
350f0 20 5e 49 66 20 74 68 65 20 6e 42 79 74 65 20 61   ^If the nByte a
35100 72 67 75 6d 65 6e 74 20 69 73 20 6e 65 67 61 74  rgument is negat
35110 69 76 65 2c 20 74 68 65 6e 20 7a 53 71 6c 20 69  ive, then zSql i
35120 73 20 72 65 61 64 20 75 70 20 74 6f 20 74 68 65  s read up to the
35130 0a 2a 2a 20 66 69 72 73 74 20 7a 65 72 6f 20 74  .** first zero t
35140 65 72 6d 69 6e 61 74 6f 72 2e 20 5e 49 66 20 6e  erminator. ^If n
35150 42 79 74 65 20 69 73 20 70 6f 73 69 74 69 76 65  Byte is positive
35160 2c 20 74 68 65 6e 20 69 74 20 69 73 20 74 68 65  , then it is the
35170 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  .** number of by
35180 74 65 73 20 72 65 61 64 20 66 72 6f 6d 20 7a 53  tes read from zS
35190 71 6c 2e 20 20 5e 49 66 20 6e 42 79 74 65 20 69  ql.  ^If nByte i
351a0 73 20 7a 65 72 6f 2c 20 74 68 65 6e 20 6e 6f 20  s zero, then no 
351b0 70 72 65 70 61 72 65 64 0a 2a 2a 20 73 74 61 74  prepared.** stat
351c0 65 6d 65 6e 74 20 69 73 20 67 65 6e 65 72 61 74  ement is generat
351d0 65 64 2e 0a 2a 2a 20 49 66 20 74 68 65 20 63 61  ed..** If the ca
351e0 6c 6c 65 72 20 6b 6e 6f 77 73 20 74 68 61 74 20  ller knows that 
351f0 74 68 65 20 73 75 70 70 6c 69 65 64 20 73 74 72  the supplied str
35200 69 6e 67 20 69 73 20 6e 75 6c 2d 74 65 72 6d 69  ing is nul-termi
35210 6e 61 74 65 64 2c 20 74 68 65 6e 0a 2a 2a 20 74  nated, then.** t
35220 68 65 72 65 20 69 73 20 61 20 73 6d 61 6c 6c 20  here is a small 
35230 70 65 72 66 6f 72 6d 61 6e 63 65 20 61 64 76 61  performance adva
35240 6e 74 61 67 65 20 74 6f 20 70 61 73 73 69 6e 67  ntage to passing
35250 20 61 6e 20 6e 42 79 74 65 20 70 61 72 61 6d 65   an nByte parame
35260 74 65 72 20 74 68 61 74 0a 2a 2a 20 69 73 20 74  ter that.** is t
35270 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
35280 65 73 20 69 6e 20 74 68 65 20 69 6e 70 75 74 20  es in the input 
35290 73 74 72 69 6e 67 20 3c 69 3e 69 6e 63 6c 75 64  string <i>includ
352a0 69 6e 67 3c 2f 69 3e 0a 2a 2a 20 74 68 65 20 6e  ing</i>.** the n
352b0 75 6c 2d 74 65 72 6d 69 6e 61 74 6f 72 2e 0a 2a  ul-terminator..*
352c0 2a 0a 2a 2a 20 5e 49 66 20 70 7a 54 61 69 6c 20  *.** ^If pzTail 
352d0 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 74 68 65 6e  is not NULL then
352e0 20 2a 70 7a 54 61 69 6c 20 69 73 20 6d 61 64 65   *pzTail is made
352f0 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65   to point to the
35300 20 66 69 72 73 74 20 62 79 74 65 0a 2a 2a 20 70   first byte.** p
35310 61 73 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74  ast the end of t
35320 68 65 20 66 69 72 73 74 20 53 51 4c 20 73 74 61  he first SQL sta
35330 74 65 6d 65 6e 74 20 69 6e 20 7a 53 71 6c 2e 20  tement in zSql. 
35340 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20   These routines 
35350 6f 6e 6c 79 0a 2a 2a 20 63 6f 6d 70 69 6c 65 20  only.** compile 
35360 74 68 65 20 66 69 72 73 74 20 73 74 61 74 65 6d  the first statem
35370 65 6e 74 20 69 6e 20 7a 53 71 6c 2c 20 73 6f 20  ent in zSql, so 
35380 2a 70 7a 54 61 69 6c 20 69 73 20 6c 65 66 74 20  *pzTail is left 
35390 70 6f 69 6e 74 69 6e 67 20 74 6f 0a 2a 2a 20 77  pointing to.** w
353a0 68 61 74 20 72 65 6d 61 69 6e 73 20 75 6e 63 6f  hat remains unco
353b0 6d 70 69 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 2a  mpiled..**.** ^*
353c0 70 70 53 74 6d 74 20 69 73 20 6c 65 66 74 20 70  ppStmt is left p
353d0 6f 69 6e 74 69 6e 67 20 74 6f 20 61 20 63 6f 6d  ointing to a com
353e0 70 69 6c 65 64 20 5b 70 72 65 70 61 72 65 64 20  piled [prepared 
353f0 73 74 61 74 65 6d 65 6e 74 5d 20 74 68 61 74 20  statement] that 
35400 63 61 6e 20 62 65 0a 2a 2a 20 65 78 65 63 75 74  can be.** execut
35410 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  ed using [sqlite
35420 33 5f 73 74 65 70 28 29 5d 2e 20 20 5e 49 66 20  3_step()].  ^If 
35430 74 68 65 72 65 20 69 73 20 61 6e 20 65 72 72 6f  there is an erro
35440 72 2c 20 2a 70 70 53 74 6d 74 20 69 73 20 73 65  r, *ppStmt is se
35450 74 0a 2a 2a 20 74 6f 20 4e 55 4c 4c 2e 20 20 5e  t.** to NULL.  ^
35460 49 66 20 74 68 65 20 69 6e 70 75 74 20 74 65 78  If the input tex
35470 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 20 53 51  t contains no SQ
35480 4c 20 28 69 66 20 74 68 65 20 69 6e 70 75 74 20  L (if the input 
35490 69 73 20 61 6e 20 65 6d 70 74 79 0a 2a 2a 20 73  is an empty.** s
354a0 74 72 69 6e 67 20 6f 72 20 61 20 63 6f 6d 6d 65  tring or a comme
354b0 6e 74 29 20 74 68 65 6e 20 2a 70 70 53 74 6d 74  nt) then *ppStmt
354c0 20 69 73 20 73 65 74 20 74 6f 20 4e 55 4c 4c 2e   is set to NULL.
354d0 0a 2a 2a 20 54 68 65 20 63 61 6c 6c 69 6e 67 20  .** The calling 
354e0 70 72 6f 63 65 64 75 72 65 20 69 73 20 72 65 73  procedure is res
354f0 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 64 65 6c  ponsible for del
35500 65 74 69 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c  eting the compil
35510 65 64 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d  ed.** SQL statem
35520 65 6e 74 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  ent using [sqlit
35530 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d 20 61  e3_finalize()] a
35540 66 74 65 72 20 69 74 20 68 61 73 20 66 69 6e 69  fter it has fini
35550 73 68 65 64 20 77 69 74 68 20 69 74 2e 0a 2a 2a  shed with it..**
35560 20 70 70 53 74 6d 74 20 6d 61 79 20 6e 6f 74 20   ppStmt may not 
35570 62 65 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e  be NULL..**.** ^
35580 4f 6e 20 73 75 63 63 65 73 73 2c 20 74 68 65 20  On success, the 
35590 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
355a0 29 20 66 61 6d 69 6c 79 20 6f 66 20 72 6f 75 74  ) family of rout
355b0 69 6e 65 73 20 72 65 74 75 72 6e 20 5b 53 51 4c  ines return [SQL
355c0 49 54 45 5f 4f 4b 5d 3b 0a 2a 2a 20 6f 74 68 65  ITE_OK];.** othe
355d0 72 77 69 73 65 20 61 6e 20 5b 65 72 72 6f 72 20  rwise an [error 
355e0 63 6f 64 65 5d 20 69 73 20 72 65 74 75 72 6e 65  code] is returne
355f0 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  d..**.** The sql
35600 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
35610 29 2c 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  ), sqlite3_prepa
35620 72 65 5f 76 33 28 29 2c 20 73 71 6c 69 74 65 33  re_v3(), sqlite3
35630 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28 29 2c  _prepare16_v2(),
35640 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  .** and sqlite3_
35650 70 72 65 70 61 72 65 31 36 5f 76 33 28 29 20 69  prepare16_v3() i
35660 6e 74 65 72 66 61 63 65 73 20 61 72 65 20 72 65  nterfaces are re
35670 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 61 6c  commended for al
35680 6c 20 6e 65 77 20 70 72 6f 67 72 61 6d 73 2e 0a  l new programs..
35690 2a 2a 20 54 68 65 20 6f 6c 64 65 72 20 69 6e 74  ** The older int
356a0 65 72 66 61 63 65 73 20 28 73 71 6c 69 74 65 33  erfaces (sqlite3
356b0 5f 70 72 65 70 61 72 65 28 29 20 61 6e 64 20 73  _prepare() and s
356c0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
356d0 28 29 29 0a 2a 2a 20 61 72 65 20 72 65 74 61 69  ()).** are retai
356e0 6e 65 64 20 66 6f 72 20 62 61 63 6b 77 61 72 64  ned for backward
356f0 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2c  s compatibility,
35700 20 62 75 74 20 74 68 65 69 72 20 75 73 65 20 69   but their use i
35710 73 20 64 69 73 63 6f 75 72 61 67 65 64 2e 0a 2a  s discouraged..*
35720 2a 20 5e 49 6e 20 74 68 65 20 22 76 58 22 20 69  * ^In the "vX" i
35730 6e 74 65 72 66 61 63 65 73 2c 20 74 68 65 20 70  nterfaces, the p
35740 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
35750 74 0a 2a 2a 20 74 68 61 74 20 69 73 20 72 65 74  t.** that is ret
35760 75 72 6e 65 64 20 28 74 68 65 20 5b 73 71 6c 69  urned (the [sqli
35770 74 65 33 5f 73 74 6d 74 5d 20 6f 62 6a 65 63 74  te3_stmt] object
35780 29 20 63 6f 6e 74 61 69 6e 73 20 61 20 63 6f 70  ) contains a cop
35790 79 20 6f 66 20 74 68 65 0a 2a 2a 20 6f 72 69 67  y of the.** orig
357a0 69 6e 61 6c 20 53 51 4c 20 74 65 78 74 2e 20 54  inal SQL text. T
357b0 68 69 73 20 63 61 75 73 65 73 20 74 68 65 20 5b  his causes the [
357c0 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20  sqlite3_step()] 
357d0 69 6e 74 65 72 66 61 63 65 20 74 6f 0a 2a 2a 20  interface to.** 
357e0 62 65 68 61 76 65 20 64 69 66 66 65 72 65 6e 74  behave different
357f0 6c 79 20 69 6e 20 74 68 72 65 65 20 77 61 79 73  ly in three ways
35800 3a 0a 2a 2a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20  :.**.** <ol>.** 
35810 3c 6c 69 3e 0a 2a 2a 20 5e 49 66 20 74 68 65 20  <li>.** ^If the 
35820 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
35830 63 68 61 6e 67 65 73 2c 20 69 6e 73 74 65 61 64  changes, instead
35840 20 6f 66 20 72 65 74 75 72 6e 69 6e 67 20 5b 53   of returning [S
35850 51 4c 49 54 45 5f 53 43 48 45 4d 41 5d 20 61 73  QLITE_SCHEMA] as
35860 20 69 74 0a 2a 2a 20 61 6c 77 61 79 73 20 75 73   it.** always us
35870 65 64 20 74 6f 20 64 6f 2c 20 5b 73 71 6c 69 74  ed to do, [sqlit
35880 65 33 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 20  e3_step()] will 
35890 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65  automatically re
358a0 63 6f 6d 70 69 6c 65 20 74 68 65 20 53 51 4c 0a  compile the SQL.
358b0 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 61 6e 64  ** statement and
358c0 20 74 72 79 20 74 6f 20 72 75 6e 20 69 74 20 61   try to run it a
358d0 67 61 69 6e 2e 20 41 73 20 6d 61 6e 79 20 61 73  gain. As many as
358e0 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48   [SQLITE_MAX_SCH
358f0 45 4d 41 5f 52 45 54 52 59 5d 0a 2a 2a 20 72 65  EMA_RETRY].** re
35900 74 72 69 65 73 20 77 69 6c 6c 20 6f 63 63 75 72  tries will occur
35910 20 62 65 66 6f 72 65 20 73 71 6c 69 74 65 33 5f   before sqlite3_
35920 73 74 65 70 28 29 20 67 69 76 65 73 20 75 70 20  step() gives up 
35930 61 6e 64 20 72 65 74 75 72 6e 73 20 61 6e 20 65  and returns an e
35940 72 72 6f 72 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a  rror..** </li>.*
35950 2a 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 57 68  *.** <li>.** ^Wh
35960 65 6e 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75  en an error occu
35970 72 73 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  rs, [sqlite3_ste
35980 70 28 29 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e  p()] will return
35990 20 6f 6e 65 20 6f 66 20 74 68 65 20 64 65 74 61   one of the deta
359a0 69 6c 65 64 0a 2a 2a 20 5b 65 72 72 6f 72 20 63  iled.** [error c
359b0 6f 64 65 73 5d 20 6f 72 20 5b 65 78 74 65 6e 64  odes] or [extend
359c0 65 64 20 65 72 72 6f 72 20 63 6f 64 65 73 5d 2e  ed error codes].
359d0 20 20 5e 54 68 65 20 6c 65 67 61 63 79 20 62 65    ^The legacy be
359e0 68 61 76 69 6f 72 20 77 61 73 20 74 68 61 74 0a  havior was that.
359f0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  ** [sqlite3_step
35a00 28 29 5d 20 77 6f 75 6c 64 20 6f 6e 6c 79 20 72  ()] would only r
35a10 65 74 75 72 6e 20 61 20 67 65 6e 65 72 69 63 20  eturn a generic 
35a20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 72  [SQLITE_ERROR] r
35a30 65 73 75 6c 74 20 63 6f 64 65 0a 2a 2a 20 61 6e  esult code.** an
35a40 64 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  d the applicatio
35a50 6e 20 77 6f 75 6c 64 20 68 61 76 65 20 74 6f 20  n would have to 
35a60 6d 61 6b 65 20 61 20 73 65 63 6f 6e 64 20 63 61  make a second ca
35a70 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72  ll to [sqlite3_r
35a80 65 73 65 74 28 29 5d 0a 2a 2a 20 69 6e 20 6f 72  eset()].** in or
35a90 64 65 72 20 74 6f 20 66 69 6e 64 20 74 68 65 20  der to find the 
35aa0 75 6e 64 65 72 6c 79 69 6e 67 20 63 61 75 73 65  underlying cause
35ab0 20 6f 66 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e   of the problem.
35ac0 20 57 69 74 68 20 74 68 65 20 22 76 32 22 20 70   With the "v2" p
35ad0 72 65 70 61 72 65 0a 2a 2a 20 69 6e 74 65 72 66  repare.** interf
35ae0 61 63 65 73 2c 20 74 68 65 20 75 6e 64 65 72 6c  aces, the underl
35af0 79 69 6e 67 20 72 65 61 73 6f 6e 20 66 6f 72 20  ying reason for 
35b00 74 68 65 20 65 72 72 6f 72 20 69 73 20 72 65 74  the error is ret
35b10 75 72 6e 65 64 20 69 6d 6d 65 64 69 61 74 65 6c  urned immediatel
35b20 79 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 0a 2a  y..** </li>.**.*
35b30 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 49 66 20 74 68  * <li>.** ^If th
35b40 65 20 73 70 65 63 69 66 69 63 20 76 61 6c 75 65  e specific value
35b50 20 62 6f 75 6e 64 20 74 6f 20 5b 70 61 72 61 6d   bound to [param
35b60 65 74 65 72 20 7c 20 68 6f 73 74 20 70 61 72 61  eter | host para
35b70 6d 65 74 65 72 5d 20 69 6e 20 74 68 65 20 0a 2a  meter] in the .*
35b80 2a 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 6d  * WHERE clause m
35b90 69 67 68 74 20 69 6e 66 6c 75 65 6e 63 65 20 74  ight influence t
35ba0 68 65 20 63 68 6f 69 63 65 20 6f 66 20 71 75 65  he choice of que
35bb0 72 79 20 70 6c 61 6e 20 66 6f 72 20 61 20 73 74  ry plan for a st
35bc0 61 74 65 6d 65 6e 74 2c 0a 2a 2a 20 74 68 65 6e  atement,.** then
35bd0 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 77   the statement w
35be0 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74 69 63  ill be automatic
35bf0 61 6c 6c 79 20 72 65 63 6f 6d 70 69 6c 65 64 2c  ally recompiled,
35c00 20 61 73 20 69 66 20 74 68 65 72 65 20 68 61 64   as if there had
35c10 20 62 65 65 6e 20 0a 2a 2a 20 61 20 73 63 68 65   been .** a sche
35c20 6d 61 20 63 68 61 6e 67 65 2c 20 6f 6e 20 74 68  ma change, on th
35c30 65 20 66 69 72 73 74 20 20 5b 73 71 6c 69 74 65  e first  [sqlite
35c40 33 5f 73 74 65 70 28 29 5d 20 63 61 6c 6c 20 66  3_step()] call f
35c50 6f 6c 6c 6f 77 69 6e 67 20 61 6e 79 20 63 68 61  ollowing any cha
35c60 6e 67 65 0a 2a 2a 20 74 6f 20 74 68 65 20 5b 73  nge.** to the [s
35c70 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
35c80 20 7c 20 62 69 6e 64 69 6e 67 73 5d 20 6f 66 20   | bindings] of 
35c90 74 68 61 74 20 5b 70 61 72 61 6d 65 74 65 72 5d  that [parameter]
35ca0 2e 20 0a 2a 2a 20 5e 54 68 65 20 73 70 65 63 69  . .** ^The speci
35cb0 66 69 63 20 76 61 6c 75 65 20 6f 66 20 57 48 45  fic value of WHE
35cc0 52 45 2d 63 6c 61 75 73 65 20 5b 70 61 72 61 6d  RE-clause [param
35cd0 65 74 65 72 5d 20 6d 69 67 68 74 20 69 6e 66 6c  eter] might infl
35ce0 75 65 6e 63 65 20 74 68 65 20 0a 2a 2a 20 63 68  uence the .** ch
35cf0 6f 69 63 65 20 6f 66 20 71 75 65 72 79 20 70 6c  oice of query pl
35d00 61 6e 20 69 66 20 74 68 65 20 70 61 72 61 6d 65  an if the parame
35d10 74 65 72 20 69 73 20 74 68 65 20 6c 65 66 74 2d  ter is the left-
35d20 68 61 6e 64 20 73 69 64 65 20 6f 66 20 61 20 5b  hand side of a [
35d30 4c 49 4b 45 5d 0a 2a 2a 20 6f 72 20 5b 47 4c 4f  LIKE].** or [GLO
35d40 42 5d 20 6f 70 65 72 61 74 6f 72 20 6f 72 20 69  B] operator or i
35d50 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20  f the parameter 
35d60 69 73 20 63 6f 6d 70 61 72 65 64 20 74 6f 20 61  is compared to a
35d70 6e 20 69 6e 64 65 78 65 64 20 63 6f 6c 75 6d 6e  n indexed column
35d80 0a 2a 2a 20 61 6e 64 20 74 68 65 20 5b 53 51 4c  .** and the [SQL
35d90 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34  ITE_ENABLE_STAT4
35da0 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
35db0 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64  ption is enabled
35dc0 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 20 3c 2f  ..** </li>.** </
35dd0 6f 6c 3e 0a 2a 2a 0a 2a 2a 20 3c 70 3e 5e 73 71  ol>.**.** <p>^sq
35de0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33  lite3_prepare_v3
35df0 28 29 20 64 69 66 66 65 72 73 20 66 72 6f 6d 20  () differs from 
35e00 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
35e10 76 32 28 29 20 6f 6e 6c 79 20 69 6e 20 68 61 76  v2() only in hav
35e20 69 6e 67 0a 2a 2a 20 74 68 65 20 65 78 74 72 61  ing.** the extra
35e30 20 70 72 65 70 46 6c 61 67 73 20 70 61 72 61 6d   prepFlags param
35e40 65 74 65 72 2c 20 77 68 69 63 68 20 69 73 20 61  eter, which is a
35e50 20 62 69 74 20 61 72 72 61 79 20 63 6f 6e 73 69   bit array consi
35e60 73 74 69 6e 67 20 6f 66 20 7a 65 72 6f 20 6f 72  sting of zero or
35e70 0a 2a 2a 20 6d 6f 72 65 20 6f 66 20 74 68 65 20  .** more of the 
35e80 5b 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f  [SQLITE_PREPARE_
35e90 50 45 52 53 49 53 54 45 4e 54 7c 53 51 4c 49 54  PERSISTENT|SQLIT
35ea0 45 5f 50 52 45 50 41 52 45 5f 2a 5d 20 66 6c 61  E_PREPARE_*] fla
35eb0 67 73 2e 20 20 5e 54 68 65 0a 2a 2a 20 73 71 6c  gs.  ^The.** sql
35ec0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
35ed0 29 20 69 6e 74 65 72 66 61 63 65 20 77 6f 72 6b  ) interface work
35ee0 73 20 65 78 61 63 74 6c 79 20 74 68 65 20 73 61  s exactly the sa
35ef0 6d 65 20 61 73 0a 2a 2a 20 73 71 6c 69 74 65 33  me as.** sqlite3
35f00 5f 70 72 65 70 61 72 65 5f 76 33 28 29 20 77 69  _prepare_v3() wi
35f10 74 68 20 61 20 7a 65 72 6f 20 70 72 65 70 46 6c  th a zero prepFl
35f20 61 67 73 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a  ags parameter..*
35f30 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
35f40 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
35f50 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c  (.  sqlite3 *db,
35f60 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44              /* D
35f70 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a  atabase handle *
35f80 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
35f90 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53  zSql,       /* S
35fa0 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54  QL statement, UT
35fb0 46 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20  F-8 encoded */. 
35fc0 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20   int nByte,     
35fd0 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69           /* Maxi
35fe0 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53  mum length of zS
35ff0 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a  ql in bytes. */.
36000 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a    sqlite3_stmt *
36010 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54  *ppStmt,  /* OUT
36020 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64  : Statement hand
36030 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  le */.  const ch
36040 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20  ar **pzTail     
36050 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20  /* OUT: Pointer 
36060 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f  to unused portio
36070 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a  n of zSql */.);.
36080 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
36090 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
360a0 32 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62  2(.  sqlite3 *db
360b0 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
360c0 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20  Database handle 
360d0 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  */.  const char 
360e0 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20  *zSql,       /* 
360f0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55  SQL statement, U
36100 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a  TF-8 encoded */.
36110 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20    int nByte,    
36120 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78            /* Max
36130 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a  imum length of z
36140 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f  Sql in bytes. */
36150 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  .  sqlite3_stmt 
36160 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55  **ppStmt,  /* OU
36170 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e  T: Statement han
36180 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  dle */.  const c
36190 68 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20  har **pzTail    
361a0 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72   /* OUT: Pointer
361b0 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69   to unused porti
361c0 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b  on of zSql */.);
361d0 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
361e0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
361f0 76 33 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64  v3(.  sqlite3 *d
36200 62 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  b,            /*
36210 20 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65   Database handle
36220 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   */.  const char
36230 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a   *zSql,       /*
36240 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20   SQL statement, 
36250 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f  UTF-8 encoded */
36260 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20  .  int nByte,   
36270 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61             /* Ma
36280 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20  ximum length of 
36290 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a  zSql in bytes. *
362a0 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74  /.  unsigned int
362b0 20 70 72 65 70 46 6c 61 67 73 2c 20 2f 2a 20 5a   prepFlags, /* Z
362c0 65 72 6f 20 6f 72 20 6d 6f 72 65 20 53 51 4c 49  ero or more SQLI
362d0 54 45 5f 50 52 45 50 41 52 45 5f 20 66 6c 61 67  TE_PREPARE_ flag
362e0 73 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73  s */.  sqlite3_s
362f0 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f  tmt **ppStmt,  /
36300 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74  * OUT: Statement
36310 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
36320 73 74 20 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c  st char **pzTail
36330 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69       /* OUT: Poi
36340 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70  nter to unused p
36350 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a  ortion of zSql *
36360 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  /.);.SQLITE_API 
36370 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70  int sqlite3_prep
36380 61 72 65 31 36 28 0a 20 20 73 71 6c 69 74 65 33  are16(.  sqlite3
36390 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20   *db,           
363a0 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e   /* Database han
363b0 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76  dle */.  const v
363c0 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20  oid *zSql,      
363d0 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   /* SQL statemen
363e0 74 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65  t, UTF-16 encode
363f0 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65  d */.  int nByte
36400 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ,              /
36410 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68  * Maximum length
36420 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65   of zSql in byte
36430 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f  s. */.  sqlite3_
36440 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20  stmt **ppStmt,  
36450 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e  /* OUT: Statemen
36460 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f  t handle */.  co
36470 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69  nst void **pzTai
36480 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f  l     /* OUT: Po
36490 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20  inter to unused 
364a0 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20  portion of zSql 
364b0 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  */.);.SQLITE_API
364c0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65   int sqlite3_pre
364d0 70 61 72 65 31 36 5f 76 32 28 0a 20 20 73 71 6c  pare16_v2(.  sql
364e0 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
364f0 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65       /* Database
36500 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
36510 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20 20  st void *zSql,  
36520 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74       /* SQL stat
36530 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20 65 6e  ement, UTF-16 en
36540 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e  coded */.  int n
36550 42 79 74 65 2c 20 20 20 20 20 20 20 20 20 20 20  Byte,           
36560 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65     /* Maximum le
36570 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20  ngth of zSql in 
36580 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69  bytes. */.  sqli
36590 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d  te3_stmt **ppStm
365a0 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74  t,  /* OUT: Stat
365b0 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a  ement handle */.
365c0 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70    const void **p
365d0 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54  zTail     /* OUT
365e0 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75  : Pointer to unu
365f0 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a  sed portion of z
36600 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45  Sql */.);.SQLITE
36610 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
36620 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 0a 20  _prepare16_v3(. 
36630 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
36640 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61           /* Data
36650 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  base handle */. 
36660 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71   const void *zSq
36670 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20  l,       /* SQL 
36680 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31  statement, UTF-1
36690 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69  6 encoded */.  i
366a0 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20  nt nByte,       
366b0 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75         /* Maximu
366c0 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c  m length of zSql
366d0 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20   in bytes. */.  
366e0 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 70 72 65  unsigned int pre
366f0 70 46 6c 61 67 73 2c 20 2f 2a 20 5a 65 72 6f 20  pFlags, /* Zero 
36700 6f 72 20 6d 6f 72 65 20 53 51 4c 49 54 45 5f 50  or more SQLITE_P
36710 52 45 50 41 52 45 5f 20 66 6c 61 67 73 20 2a 2f  REPARE_ flags */
36720 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  .  sqlite3_stmt 
36730 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55  **ppStmt,  /* OU
36740 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e  T: Statement han
36750 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76  dle */.  const v
36760 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20  oid **pzTail    
36770 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72   /* OUT: Pointer
36780 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69   to unused porti
36790 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b  on of zSql */.);
367a0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
367b0 3a 20 52 65 74 72 69 65 76 69 6e 67 20 53 74 61  : Retrieving Sta
367c0 74 65 6d 65 6e 74 20 53 51 4c 0a 2a 2a 20 4d 45  tement SQL.** ME
367d0 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74  THOD: sqlite3_st
367e0 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  mt.**.** ^The sq
367f0 6c 69 74 65 33 5f 73 71 6c 28 50 29 20 69 6e 74  lite3_sql(P) int
36800 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 61  erface returns a
36810 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 63 6f   pointer to a co
36820 70 79 20 6f 66 20 74 68 65 20 55 54 46 2d 38 0a  py of the UTF-8.
36830 2a 2a 20 53 51 4c 20 74 65 78 74 20 75 73 65 64  ** SQL text used
36840 20 74 6f 20 63 72 65 61 74 65 20 5b 70 72 65 70   to create [prep
36850 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
36860 50 20 69 66 20 50 20 77 61 73 0a 2a 2a 20 63 72  P if P was.** cr
36870 65 61 74 65 64 20 62 79 20 5b 73 71 6c 69 74 65  eated by [sqlite
36880 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c  3_prepare_v2()],
36890 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
368a0 65 5f 76 33 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c  e_v3()],.** [sql
368b0 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
368c0 32 28 29 5d 2c 20 6f 72 20 5b 73 71 6c 69 74 65  2()], or [sqlite
368d0 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29  3_prepare16_v3()
368e0 5d 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  ]..** ^The sqlit
368f0 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28  e3_expanded_sql(
36900 50 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 74  P) interface ret
36910 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74  urns a pointer t
36920 6f 20 61 20 55 54 46 2d 38 0a 2a 2a 20 73 74 72  o a UTF-8.** str
36930 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  ing containing t
36940 68 65 20 53 51 4c 20 74 65 78 74 20 6f 66 20 70  he SQL text of p
36950 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
36960 74 20 50 20 77 69 74 68 0a 2a 2a 20 5b 62 6f 75  t P with.** [bou
36970 6e 64 20 70 61 72 61 6d 65 74 65 72 73 5d 20 65  nd parameters] e
36980 78 70 61 6e 64 65 64 2e 0a 2a 2a 20 5e 54 68 65  xpanded..** ^The
36990 20 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c 69   sqlite3_normali
369a0 7a 65 64 5f 73 71 6c 28 50 29 20 69 6e 74 65 72  zed_sql(P) inter
369b0 66 61 63 65 20 72 65 74 75 72 6e 73 20 61 20 70  face returns a p
369c0 6f 69 6e 74 65 72 20 74 6f 20 61 20 55 54 46 2d  ointer to a UTF-
369d0 38 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f 6e 74  8.** string cont
369e0 61 69 6e 69 6e 67 20 74 68 65 20 6e 6f 72 6d 61  aining the norma
369f0 6c 69 7a 65 64 20 53 51 4c 20 74 65 78 74 20 6f  lized SQL text o
36a00 66 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  f prepared state
36a10 6d 65 6e 74 20 50 2e 20 20 54 68 65 0a 2a 2a 20  ment P.  The.** 
36a20 73 65 6d 61 6e 74 69 63 73 20 75 73 65 64 20 74  semantics used t
36a30 6f 20 6e 6f 72 6d 61 6c 69 7a 65 20 61 20 53 51  o normalize a SQ
36a40 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 72 65 20  L statement are 
36a50 75 6e 73 70 65 63 69 66 69 65 64 20 61 6e 64 20  unspecified and 
36a60 73 75 62 6a 65 63 74 0a 2a 2a 20 74 6f 20 63 68  subject.** to ch
36a70 61 6e 67 65 2e 20 20 41 74 20 61 20 6d 69 6e 69  ange.  At a mini
36a80 6d 75 6d 2c 20 6c 69 74 65 72 61 6c 20 76 61 6c  mum, literal val
36a90 75 65 73 20 77 69 6c 6c 20 62 65 20 72 65 70 6c  ues will be repl
36aa0 61 63 65 64 20 77 69 74 68 20 73 75 69 74 61 62  aced with suitab
36ab0 6c 65 0a 2a 2a 20 70 6c 61 63 65 68 6f 6c 64 65  le.** placeholde
36ac0 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e 28 46 6f 72 20  rs..**.** ^(For 
36ad0 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 20 70 72  example, if a pr
36ae0 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
36af0 20 69 73 20 63 72 65 61 74 65 64 20 75 73 69 6e   is created usin
36b00 67 20 74 68 65 20 53 51 4c 0a 2a 2a 20 74 65 78  g the SQL.** tex
36b10 74 20 22 53 45 4c 45 43 54 20 24 61 62 63 2c 3a  t "SELECT $abc,:
36b20 78 79 7a 22 20 61 6e 64 20 69 66 20 70 61 72 61  xyz" and if para
36b30 6d 65 74 65 72 20 24 61 62 63 20 69 73 20 62 6f  meter $abc is bo
36b40 75 6e 64 20 74 6f 20 69 6e 74 65 67 65 72 20 32  und to integer 2
36b50 33 34 35 0a 2a 2a 20 61 6e 64 20 70 61 72 61 6d  345.** and param
36b60 65 74 65 72 20 3a 78 79 7a 20 69 73 20 75 6e 62  eter :xyz is unb
36b70 6f 75 6e 64 2c 20 74 68 65 6e 20 73 71 6c 69 74  ound, then sqlit
36b80 65 33 5f 73 71 6c 28 29 20 77 69 6c 6c 20 72 65  e3_sql() will re
36b90 74 75 72 6e 0a 2a 2a 20 74 68 65 20 6f 72 69 67  turn.** the orig
36ba0 69 6e 61 6c 20 73 74 72 69 6e 67 2c 20 22 53 45  inal string, "SE
36bb0 4c 45 43 54 20 24 61 62 63 2c 3a 78 79 7a 22 20  LECT $abc,:xyz" 
36bc0 62 75 74 20 73 71 6c 69 74 65 33 5f 65 78 70 61  but sqlite3_expa
36bd0 6e 64 65 64 5f 73 71 6c 28 29 0a 2a 2a 20 77 69  nded_sql().** wi
36be0 6c 6c 20 72 65 74 75 72 6e 20 22 53 45 4c 45 43  ll return "SELEC
36bf0 54 20 32 33 34 35 2c 4e 55 4c 4c 22 2e 29 5e 0a  T 2345,NULL".)^.
36c00 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
36c10 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28  e3_expanded_sql(
36c20 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75  ) interface retu
36c30 72 6e 73 20 4e 55 4c 4c 20 69 66 20 69 6e 73 75  rns NULL if insu
36c40 66 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 0a  fficient memory.
36c50 2a 2a 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20  ** is available 
36c60 74 6f 20 68 6f 6c 64 20 74 68 65 20 72 65 73 75  to hold the resu
36c70 6c 74 2c 20 6f 72 20 69 66 20 74 68 65 20 72 65  lt, or if the re
36c80 73 75 6c 74 20 77 6f 75 6c 64 20 65 78 63 65 65  sult would excee
36c90 64 20 74 68 65 0a 2a 2a 20 74 68 65 20 6d 61 78  d the.** the max
36ca0 69 6d 75 6d 20 73 74 72 69 6e 67 20 6c 65 6e 67  imum string leng
36cb0 74 68 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79  th determined by
36cc0 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d   the [SQLITE_LIM
36cd0 49 54 5f 4c 45 4e 47 54 48 5d 2e 0a 2a 2a 0a 2a  IT_LENGTH]..**.*
36ce0 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 54  * ^The [SQLITE_T
36cf0 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d  RACE_SIZE_LIMIT]
36d00 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
36d10 74 69 6f 6e 20 6c 69 6d 69 74 73 20 74 68 65 20  tion limits the 
36d20 73 69 7a 65 20 6f 66 0a 2a 2a 20 62 6f 75 6e 64  size of.** bound
36d30 20 70 61 72 61 6d 65 74 65 72 20 65 78 70 61 6e   parameter expan
36d40 73 69 6f 6e 73 2e 20 20 5e 54 68 65 20 5b 53 51  sions.  ^The [SQ
36d50 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 5d  LITE_OMIT_TRACE]
36d60 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a   compile-time.**
36d70 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73   option causes s
36d80 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f  qlite3_expanded_
36d90 73 71 6c 28 29 20 74 6f 20 61 6c 77 61 79 73 20  sql() to always 
36da0 72 65 74 75 72 6e 20 4e 55 4c 4c 2e 0a 2a 2a 0a  return NULL..**.
36db0 2a 2a 20 5e 54 68 65 20 73 74 72 69 6e 67 73 20  ** ^The strings 
36dc0 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69  returned by sqli
36dd0 74 65 33 5f 73 71 6c 28 50 29 20 61 6e 64 20 73  te3_sql(P) and s
36de0 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65  qlite3_normalize
36df0 64 5f 73 71 6c 28 50 29 0a 2a 2a 20 61 72 65 20  d_sql(P).** are 
36e00 6d 61 6e 61 67 65 64 20 62 79 20 53 51 4c 69 74  managed by SQLit
36e10 65 20 61 6e 64 20 61 72 65 20 61 75 74 6f 6d 61  e and are automa
36e20 74 69 63 61 6c 6c 79 20 66 72 65 65 64 20 77 68  tically freed wh
36e30 65 6e 20 74 68 65 20 70 72 65 70 61 72 65 64 0a  en the prepared.
36e40 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  ** statement is 
36e50 66 69 6e 61 6c 69 7a 65 64 2e 0a 2a 2a 20 5e 54  finalized..** ^T
36e60 68 65 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e  he string return
36e70 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 65 78  ed by sqlite3_ex
36e80 70 61 6e 64 65 64 5f 73 71 6c 28 50 29 2c 20 6f  panded_sql(P), o
36e90 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64  n the other hand
36ea0 2c 0a 2a 2a 20 69 73 20 6f 62 74 61 69 6e 65 64  ,.** is obtained
36eb0 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d   from [sqlite3_m
36ec0 61 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 6d 75 73  alloc()] and mus
36ed0 74 20 62 65 20 66 72 65 65 20 62 79 20 74 68 65  t be free by the
36ee0 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20   application.** 
36ef0 62 79 20 70 61 73 73 69 6e 67 20 69 74 20 74 6f  by passing it to
36f00 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29   [sqlite3_free()
36f10 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  ]..*/.SQLITE_API
36f20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c   const char *sql
36f30 69 74 65 33 5f 73 71 6c 28 73 71 6c 69 74 65 33  ite3_sql(sqlite3
36f40 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 53  _stmt *pStmt);.S
36f50 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a  QLITE_API char *
36f60 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64  sqlite3_expanded
36f70 5f 73 71 6c 28 73 71 6c 69 74 65 33 5f 73 74 6d  _sql(sqlite3_stm
36f80 74 20 2a 70 53 74 6d 74 29 3b 0a 53 51 4c 49 54  t *pStmt);.SQLIT
36f90 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72  E_API const char
36fa0 20 2a 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c   *sqlite3_normal
36fb0 69 7a 65 64 5f 73 71 6c 28 73 71 6c 69 74 65 33  ized_sql(sqlite3
36fc0 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a  _stmt *pStmt);..
36fd0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
36fe0 44 65 74 65 72 6d 69 6e 65 20 49 66 20 41 6e 20  Determine If An 
36ff0 53 51 4c 20 53 74 61 74 65 6d 65 6e 74 20 57 72  SQL Statement Wr
37000 69 74 65 73 20 54 68 65 20 44 61 74 61 62 61 73  ites The Databas
37010 65 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  e.** METHOD: sql
37020 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20  ite3_stmt.**.** 
37030 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d  ^The sqlite3_stm
37040 74 5f 72 65 61 64 6f 6e 6c 79 28 58 29 20 69 6e  t_readonly(X) in
37050 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20  terface returns 
37060 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20  true (non-zero) 
37070 69 66 0a 2a 2a 20 61 6e 64 20 6f 6e 6c 79 20 69  if.** and only i
37080 66 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20  f the [prepared 
37090 73 74 61 74 65 6d 65 6e 74 5d 20 58 20 6d 61 6b  statement] X mak
370a0 65 73 20 6e 6f 20 64 69 72 65 63 74 20 63 68 61  es no direct cha
370b0 6e 67 65 73 20 74 6f 0a 2a 2a 20 74 68 65 20 63  nges to.** the c
370c0 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 64 61  ontent of the da
370d0 74 61 62 61 73 65 20 66 69 6c 65 2e 0a 2a 2a 0a  tabase file..**.
370e0 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b 61 70  ** Note that [ap
370f0 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
37100 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d  d SQL functions]
37110 20 6f 72 0a 2a 2a 20 5b 76 69 72 74 75 61 6c 20   or.** [virtual 
37120 74 61 62 6c 65 73 5d 20 6d 69 67 68 74 20 63 68  tables] might ch
37130 61 6e 67 65 20 74 68 65 20 64 61 74 61 62 61 73  ange the databas
37140 65 20 69 6e 64 69 72 65 63 74 6c 79 20 61 73 20  e indirectly as 
37150 61 20 73 69 64 65 20 65 66 66 65 63 74 2e 20 20  a side effect.  
37160 0a 2a 2a 20 5e 28 46 6f 72 20 65 78 61 6d 70 6c  .** ^(For exampl
37170 65 2c 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61  e, if an applica
37180 74 69 6f 6e 20 64 65 66 69 6e 65 73 20 61 20 66  tion defines a f
37190 75 6e 63 74 69 6f 6e 20 22 65 76 61 6c 28 29 22  unction "eval()"
371a0 20 74 68 61 74 20 0a 2a 2a 20 63 61 6c 6c 73 20   that .** calls 
371b0 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d  [sqlite3_exec()]
371c0 2c 20 74 68 65 6e 20 74 68 65 20 66 6f 6c 6c 6f  , then the follo
371d0 77 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d 65  wing SQL stateme
371e0 6e 74 20 77 6f 75 6c 64 0a 2a 2a 20 63 68 61 6e  nt would.** chan
371f0 67 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ge the database 
37200 66 69 6c 65 20 74 68 72 6f 75 67 68 20 73 69 64  file through sid
37210 65 2d 65 66 66 65 63 74 73 3a 0a 2a 2a 0a 2a 2a  e-effects:.**.**
37220 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72   <blockquote><pr
37230 65 3e 0a 2a 2a 20 20 20 20 53 45 4c 45 43 54 20  e>.**    SELECT 
37240 65 76 61 6c 28 27 44 45 4c 45 54 45 20 46 52 4f  eval('DELETE FRO
37250 4d 20 74 31 27 29 20 46 52 4f 4d 20 74 32 3b 0a  M t1') FROM t2;.
37260 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  ** </pre></block
37270 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 42 75 74  quote>.**.** But
37280 20 62 65 63 61 75 73 65 20 74 68 65 20 5b 53 45   because the [SE
37290 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 20  LECT] statement 
372a0 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67 65 20  does not change 
372b0 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
372c0 65 0a 2a 2a 20 64 69 72 65 63 74 6c 79 2c 20 73  e.** directly, s
372d0 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64  qlite3_stmt_read
372e0 6f 6e 6c 79 28 29 20 77 6f 75 6c 64 20 73 74 69  only() would sti
372f0 6c 6c 20 72 65 74 75 72 6e 20 74 72 75 65 2e 29  ll return true.)
37300 5e 0a 2a 2a 0a 2a 2a 20 5e 54 72 61 6e 73 61 63  ^.**.** ^Transac
37310 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 20 73 74 61  tion control sta
37320 74 65 6d 65 6e 74 73 20 73 75 63 68 20 61 73 20  tements such as 
37330 5b 42 45 47 49 4e 5d 2c 20 5b 43 4f 4d 4d 49 54  [BEGIN], [COMMIT
37340 5d 2c 20 5b 52 4f 4c 4c 42 41 43 4b 5d 2c 0a 2a  ], [ROLLBACK],.*
37350 2a 20 5b 53 41 56 45 50 4f 49 4e 54 5d 2c 20 61  * [SAVEPOINT], a
37360 6e 64 20 5b 52 45 4c 45 41 53 45 5d 20 63 61 75  nd [RELEASE] cau
37370 73 65 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f  se sqlite3_stmt_
37380 72 65 61 64 6f 6e 6c 79 28 29 20 74 6f 20 72 65  readonly() to re
37390 74 75 72 6e 20 74 72 75 65 2c 0a 2a 2a 20 73 69  turn true,.** si
373a0 6e 63 65 20 74 68 65 20 73 74 61 74 65 6d 65 6e  nce the statemen
373b0 74 73 20 74 68 65 6d 73 65 6c 76 65 73 20 64 6f  ts themselves do
373c0 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 6d 6f   not actually mo
373d0 64 69 66 79 20 74 68 65 20 64 61 74 61 62 61 73  dify the databas
373e0 65 20 62 75 74 0a 2a 2a 20 72 61 74 68 65 72 20  e but.** rather 
373f0 74 68 65 79 20 63 6f 6e 74 72 6f 6c 20 74 68 65  they control the
37400 20 74 69 6d 69 6e 67 20 6f 66 20 77 68 65 6e 20   timing of when 
37410 6f 74 68 65 72 20 73 74 61 74 65 6d 65 6e 74 73  other statements
37420 20 6d 6f 64 69 66 79 20 74 68 65 20 0a 2a 2a 20   modify the .** 
37430 64 61 74 61 62 61 73 65 2e 20 20 5e 54 68 65 20  database.  ^The 
37440 5b 41 54 54 41 43 48 5d 20 61 6e 64 20 5b 44 45  [ATTACH] and [DE
37450 54 41 43 48 5d 20 73 74 61 74 65 6d 65 6e 74 73  TACH] statements
37460 20 61 6c 73 6f 20 63 61 75 73 65 0a 2a 2a 20 73   also cause.** s
37470 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64  qlite3_stmt_read
37480 6f 6e 6c 79 28 29 20 74 6f 20 72 65 74 75 72 6e  only() to return
37490 20 74 72 75 65 20 73 69 6e 63 65 2c 20 77 68 69   true since, whi
374a0 6c 65 20 74 68 6f 73 65 20 73 74 61 74 65 6d 65  le those stateme
374b0 6e 74 73 0a 2a 2a 20 63 68 61 6e 67 65 20 74 68  nts.** change th
374c0 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  e configuration 
374d0 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 63 6f  of a database co
374e0 6e 6e 65 63 74 69 6f 6e 2c 20 74 68 65 79 20 64  nnection, they d
374f0 6f 20 6e 6f 74 20 6d 61 6b 65 20 0a 2a 2a 20 63  o not make .** c
37500 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 63 6f  hanges to the co
37510 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 64 61 74  ntent of the dat
37520 61 62 61 73 65 20 66 69 6c 65 73 20 6f 6e 20 64  abase files on d
37530 69 73 6b 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  isk..** ^The sql
37540 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e  ite3_stmt_readon
37550 6c 79 28 29 20 69 6e 74 65 72 66 61 63 65 20 72  ly() interface r
37560 65 74 75 72 6e 73 20 74 72 75 65 20 66 6f 72 20  eturns true for 
37570 5b 42 45 47 49 4e 5d 20 73 69 6e 63 65 0a 2a 2a  [BEGIN] since.**
37580 20 5b 42 45 47 49 4e 5d 20 6d 65 72 65 6c 79 20   [BEGIN] merely 
37590 73 65 74 73 20 69 6e 74 65 72 6e 61 6c 20 66 6c  sets internal fl
375a0 61 67 73 2c 20 62 75 74 20 74 68 65 20 5b 42 45  ags, but the [BE
375b0 47 49 4e 7c 42 45 47 49 4e 20 49 4d 4d 45 44 49  GIN|BEGIN IMMEDI
375c0 41 54 45 5d 20 61 6e 64 0a 2a 2a 20 5b 42 45 47  ATE] and.** [BEG
375d0 49 4e 7c 42 45 47 49 4e 20 45 58 43 4c 55 53 49  IN|BEGIN EXCLUSI
375e0 56 45 5d 20 63 6f 6d 6d 61 6e 64 73 20 64 6f 20  VE] commands do 
375f0 74 6f 75 63 68 20 74 68 65 20 64 61 74 61 62 61  touch the databa
37600 73 65 20 61 6e 64 20 73 6f 0a 2a 2a 20 73 71 6c  se and so.** sql
37610 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e  ite3_stmt_readon
37620 6c 79 28 29 20 72 65 74 75 72 6e 73 20 66 61 6c  ly() returns fal
37630 73 65 20 66 6f 72 20 74 68 6f 73 65 20 63 6f 6d  se for those com
37640 6d 61 6e 64 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45  mands..*/.SQLITE
37650 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
37660 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 73  _stmt_readonly(s
37670 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53 74  qlite3_stmt *pSt
37680 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  mt);../*.** CAPI
37690 33 52 45 46 3a 20 51 75 65 72 79 20 54 68 65 20  3REF: Query The 
376a0 45 58 50 4c 41 49 4e 20 53 65 74 74 69 6e 67 20  EXPLAIN Setting 
376b0 46 6f 72 20 41 20 50 72 65 70 61 72 65 64 20 53  For A Prepared S
376c0 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 4d 45 54 48  tatement.** METH
376d0 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  OD: sqlite3_stmt
376e0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
376f0 74 65 33 5f 73 74 6d 74 5f 69 73 65 78 70 6c 61  te3_stmt_isexpla
37700 69 6e 28 53 29 20 69 6e 74 65 72 66 61 63 65 20  in(S) interface 
37710 72 65 74 75 72 6e 73 20 31 20 69 66 20 74 68 65  returns 1 if the
37720 0a 2a 2a 20 70 72 65 70 61 72 65 64 20 73 74 61  .** prepared sta
37730 74 65 6d 65 6e 74 20 53 20 69 73 20 61 6e 20 45  tement S is an E
37740 58 50 4c 41 49 4e 20 73 74 61 74 65 6d 65 6e 74  XPLAIN statement
37750 2c 20 6f 72 20 32 20 69 66 20 74 68 65 0a 2a 2a  , or 2 if the.**
37760 20 73 74 61 74 65 6d 65 6e 74 20 53 20 69 73 20   statement S is 
37770 61 6e 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59  an EXPLAIN QUERY
37780 20 50 4c 41 4e 2e 0a 2a 2a 20 5e 54 68 65 20 73   PLAN..** ^The s
37790 71 6c 69 74 65 33 5f 73 74 6d 74 5f 69 73 65 78  qlite3_stmt_isex
377a0 70 6c 61 69 6e 28 53 29 20 69 6e 74 65 72 66 61  plain(S) interfa
377b0 63 65 20 72 65 74 75 72 6e 73 20 30 20 69 66 20  ce returns 0 if 
377c0 53 20 69 73 0a 2a 2a 20 61 6e 20 6f 72 64 69 6e  S is.** an ordin
377d0 61 72 79 20 73 74 61 74 65 6d 65 6e 74 20 6f 72  ary statement or
377e0 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e   a NULL pointer.
377f0 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
37800 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f  nt sqlite3_stmt_
37810 69 73 65 78 70 6c 61 69 6e 28 73 71 6c 69 74 65  isexplain(sqlite
37820 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a  3_stmt *pStmt);.
37830 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
37840 20 44 65 74 65 72 6d 69 6e 65 20 49 66 20 41 20   Determine If A 
37850 50 72 65 70 61 72 65 64 20 53 74 61 74 65 6d 65  Prepared Stateme
37860 6e 74 20 48 61 73 20 42 65 65 6e 20 52 65 73 65  nt Has Been Rese
37870 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  t.** METHOD: sql
37880 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20  ite3_stmt.**.** 
37890 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d  ^The sqlite3_stm
378a0 74 5f 62 75 73 79 28 53 29 20 69 6e 74 65 72 66  t_busy(S) interf
378b0 61 63 65 20 72 65 74 75 72 6e 73 20 74 72 75 65  ace returns true
378c0 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20 69 66 20 74   (non-zero) if t
378d0 68 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20  he.** [prepared 
378e0 73 74 61 74 65 6d 65 6e 74 5d 20 53 20 68 61 73  statement] S has
378f0 20 62 65 65 6e 20 73 74 65 70 70 65 64 20 61 74   been stepped at
37900 20 6c 65 61 73 74 20 6f 6e 63 65 20 75 73 69 6e   least once usin
37910 67 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73  g .** [sqlite3_s
37920 74 65 70 28 53 29 5d 20 62 75 74 20 68 61 73 20  tep(S)] but has 
37930 6e 65 69 74 68 65 72 20 72 75 6e 20 74 6f 20 63  neither run to c
37940 6f 6d 70 6c 65 74 69 6f 6e 20 28 72 65 74 75 72  ompletion (retur
37950 6e 65 64 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 44  ned.** [SQLITE_D
37960 4f 4e 45 5d 20 66 72 6f 6d 20 5b 73 71 6c 69 74  ONE] from [sqlit
37970 65 33 5f 73 74 65 70 28 53 29 5d 29 20 6e 6f 72  e3_step(S)]) nor
37980 0a 2a 2a 20 62 65 65 6e 20 72 65 73 65 74 20 75  .** been reset u
37990 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 72 65  sing [sqlite3_re
379a0 73 65 74 28 53 29 5d 2e 20 20 5e 54 68 65 20 73  set(S)].  ^The s
379b0 71 6c 69 74 65 33 5f 73 74 6d 74 5f 62 75 73 79  qlite3_stmt_busy
379c0 28 53 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  (S).** interface
379d0 20 72 65 74 75 72 6e 73 20 66 61 6c 73 65 20 69   returns false i
379e0 66 20 53 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f  f S is a NULL po
379f0 69 6e 74 65 72 2e 20 20 49 66 20 53 20 69 73 20  inter.  If S is 
37a00 6e 6f 74 20 61 20 0a 2a 2a 20 4e 55 4c 4c 20 70  not a .** NULL p
37a10 6f 69 6e 74 65 72 20 61 6e 64 20 69 73 20 6e 6f  ointer and is no
37a20 74 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  t a pointer to a
37a30 20 76 61 6c 69 64 20 5b 70 72 65 70 61 72 65 64   valid [prepared
37a40 20 73 74 61 74 65 6d 65 6e 74 5d 0a 2a 2a 20 6f   statement].** o
37a50 62 6a 65 63 74 2c 20 74 68 65 6e 20 74 68 65 20  bject, then the 
37a60 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65  behavior is unde
37a70 66 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62  fined and probab
37a80 6c 79 20 75 6e 64 65 73 69 72 61 62 6c 65 2e 0a  ly undesirable..
37a90 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 6e 74 65 72  **.** This inter
37aa0 66 61 63 65 20 63 61 6e 20 62 65 20 75 73 65 64  face can be used
37ab0 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20   in combination 
37ac0 5b 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74  [sqlite3_next_st
37ad0 6d 74 28 29 5d 0a 2a 2a 20 74 6f 20 6c 6f 63 61  mt()].** to loca
37ae0 74 65 20 61 6c 6c 20 70 72 65 70 61 72 65 64 20  te all prepared 
37af0 73 74 61 74 65 6d 65 6e 74 73 20 61 73 73 6f 63  statements assoc
37b00 69 61 74 65 64 20 77 69 74 68 20 61 20 64 61 74  iated with a dat
37b10 61 62 61 73 65 20 0a 2a 2a 20 63 6f 6e 6e 65 63  abase .** connec
37b20 74 69 6f 6e 20 74 68 61 74 20 61 72 65 20 69 6e  tion that are in
37b30 20 6e 65 65 64 20 6f 66 20 62 65 69 6e 67 20 72   need of being r
37b40 65 73 65 74 2e 20 20 54 68 69 73 20 63 61 6e 20  eset.  This can 
37b50 62 65 20 75 73 65 64 2c 0a 2a 2a 20 66 6f 72 20  be used,.** for 
37b60 65 78 61 6d 70 6c 65 2c 20 69 6e 20 64 69 61 67  example, in diag
37b70 6e 6f 73 74 69 63 20 72 6f 75 74 69 6e 65 73 20  nostic routines 
37b80 74 6f 20 73 65 61 72 63 68 20 66 6f 72 20 70 72  to search for pr
37b90 65 70 61 72 65 64 20 0a 2a 2a 20 73 74 61 74 65  epared .** state
37ba0 6d 65 6e 74 73 20 74 68 61 74 20 61 72 65 20 68  ments that are h
37bb0 6f 6c 64 69 6e 67 20 61 20 74 72 61 6e 73 61 63  olding a transac
37bc0 74 69 6f 6e 20 6f 70 65 6e 2e 0a 2a 2f 0a 53 51  tion open..*/.SQ
37bd0 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
37be0 69 74 65 33 5f 73 74 6d 74 5f 62 75 73 79 28 73  ite3_stmt_busy(s
37bf0 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a  qlite3_stmt*);..
37c00 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
37c10 44 79 6e 61 6d 69 63 61 6c 6c 79 20 54 79 70 65  Dynamically Type
37c20 64 20 56 61 6c 75 65 20 4f 62 6a 65 63 74 0a 2a  d Value Object.*
37c30 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 70 72 6f  * KEYWORDS: {pro
37c40 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
37c50 61 6c 75 65 7d 20 7b 75 6e 70 72 6f 74 65 63 74  alue} {unprotect
37c60 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ed sqlite3_value
37c70 7d 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 75  }.**.** SQLite u
37c80 73 65 73 20 74 68 65 20 73 71 6c 69 74 65 33 5f  ses the sqlite3_
37c90 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 74 6f 20  value object to 
37ca0 72 65 70 72 65 73 65 6e 74 20 61 6c 6c 20 76 61  represent all va
37cb0 6c 75 65 73 0a 2a 2a 20 74 68 61 74 20 63 61 6e  lues.** that can
37cc0 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 61 20   be stored in a 
37cd0 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 2e 20  database table. 
37ce0 53 51 4c 69 74 65 20 75 73 65 73 20 64 79 6e 61  SQLite uses dyna
37cf0 6d 69 63 20 74 79 70 69 6e 67 0a 2a 2a 20 66 6f  mic typing.** fo
37d00 72 20 74 68 65 20 76 61 6c 75 65 73 20 69 74 20  r the values it 
37d10 73 74 6f 72 65 73 2e 20 20 5e 56 61 6c 75 65 73  stores.  ^Values
37d20 20 73 74 6f 72 65 64 20 69 6e 20 73 71 6c 69 74   stored in sqlit
37d30 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73  e3_value objects
37d40 0a 2a 2a 20 63 61 6e 20 62 65 20 69 6e 74 65 67  .** can be integ
37d50 65 72 73 2c 20 66 6c 6f 61 74 69 6e 67 20 70 6f  ers, floating po
37d60 69 6e 74 20 76 61 6c 75 65 73 2c 20 73 74 72 69  int values, stri
37d70 6e 67 73 2c 20 42 4c 4f 42 73 2c 20 6f 72 20 4e  ngs, BLOBs, or N
37d80 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 41 6e 20 73 71  ULL..**.** An sq
37d90 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65  lite3_value obje
37da0 63 74 20 6d 61 79 20 62 65 20 65 69 74 68 65 72  ct may be either
37db0 20 22 70 72 6f 74 65 63 74 65 64 22 20 6f 72 20   "protected" or 
37dc0 22 75 6e 70 72 6f 74 65 63 74 65 64 22 2e 0a 2a  "unprotected"..*
37dd0 2a 20 53 6f 6d 65 20 69 6e 74 65 72 66 61 63 65  * Some interface
37de0 73 20 72 65 71 75 69 72 65 20 61 20 70 72 6f 74  s require a prot
37df0 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61  ected sqlite3_va
37e00 6c 75 65 2e 20 20 4f 74 68 65 72 20 69 6e 74 65  lue.  Other inte
37e10 72 66 61 63 65 73 0a 2a 2a 20 77 69 6c 6c 20 61  rfaces.** will a
37e20 63 63 65 70 74 20 65 69 74 68 65 72 20 61 20 70  ccept either a p
37e30 72 6f 74 65 63 74 65 64 20 6f 72 20 61 6e 20 75  rotected or an u
37e40 6e 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74  nprotected sqlit
37e50 65 33 5f 76 61 6c 75 65 2e 0a 2a 2a 20 45 76 65  e3_value..** Eve
37e60 72 79 20 69 6e 74 65 72 66 61 63 65 20 74 68 61  ry interface tha
37e70 74 20 61 63 63 65 70 74 73 20 73 71 6c 69 74 65  t accepts sqlite
37e80 33 5f 76 61 6c 75 65 20 61 72 67 75 6d 65 6e 74  3_value argument
37e90 73 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 77  s specifies.** w
37ea0 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 69 74  hether or not it
37eb0 20 72 65 71 75 69 72 65 73 20 61 20 70 72 6f 74   requires a prot
37ec0 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61  ected sqlite3_va
37ed0 6c 75 65 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71  lue.  The.** [sq
37ee0 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 75 70 28  lite3_value_dup(
37ef0 29 5d 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e  )] interface can
37f00 20 62 65 20 75 73 65 64 20 74 6f 20 63 6f 6e 73   be used to cons
37f10 74 72 75 63 74 20 61 20 6e 65 77 20 0a 2a 2a 20  truct a new .** 
37f20 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65  protected sqlite
37f30 33 5f 76 61 6c 75 65 20 66 72 6f 6d 20 61 6e 20  3_value from an 
37f40 75 6e 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69  unprotected sqli
37f50 74 65 33 5f 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a  te3_value..**.**
37f60 20 54 68 65 20 74 65 72 6d 73 20 22 70 72 6f 74   The terms "prot
37f70 65 63 74 65 64 22 20 61 6e 64 20 22 75 6e 70 72  ected" and "unpr
37f80 6f 74 65 63 74 65 64 22 20 72 65 66 65 72 20 74  otected" refer t
37f90 6f 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  o whether or not
37fa0 0a 2a 2a 20 61 20 6d 75 74 65 78 20 69 73 20 68  .** a mutex is h
37fb0 65 6c 64 2e 20 20 41 6e 20 69 6e 74 65 72 6e 61  eld.  An interna
37fc0 6c 20 6d 75 74 65 78 20 69 73 20 68 65 6c 64 20  l mutex is held 
37fd0 66 6f 72 20 61 20 70 72 6f 74 65 63 74 65 64 0a  for a protected.
37fe0 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ** sqlite3_value
37ff0 20 6f 62 6a 65 63 74 20 62 75 74 20 6e 6f 20 6d   object but no m
38000 75 74 65 78 20 69 73 20 68 65 6c 64 20 66 6f 72  utex is held for
38010 20 61 6e 20 75 6e 70 72 6f 74 65 63 74 65 64 0a   an unprotected.
38020 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ** sqlite3_value
38030 20 6f 62 6a 65 63 74 2e 20 20 49 66 20 53 51 4c   object.  If SQL
38040 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
38050 74 6f 20 62 65 20 73 69 6e 67 6c 65 2d 74 68 72  to be single-thr
38060 65 61 64 65 64 0a 2a 2a 20 28 77 69 74 68 20 5b  eaded.** (with [
38070 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
38080 45 3d 30 5d 20 61 6e 64 20 77 69 74 68 20 5b 73  E=0] and with [s
38090 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61 66  qlite3_threadsaf
380a0 65 28 29 5d 20 72 65 74 75 72 6e 69 6e 67 20 30  e()] returning 0
380b0 29 0a 2a 2a 20 6f 72 20 69 66 20 53 51 4c 69 74  ).** or if SQLit
380c0 65 20 69 73 20 72 75 6e 20 69 6e 20 6f 6e 65 20  e is run in one 
380d0 6f 66 20 72 65 64 75 63 65 64 20 6d 75 74 65 78  of reduced mutex
380e0 20 6d 6f 64 65 73 20 0a 2a 2a 20 5b 53 51 4c 49   modes .** [SQLI
380f0 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
38100 54 48 52 45 41 44 5d 20 6f 72 20 5b 53 51 4c 49  THREAD] or [SQLI
38110 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54  TE_CONFIG_MULTIT
38120 48 52 45 41 44 5d 0a 2a 2a 20 74 68 65 6e 20 74  HREAD].** then t
38130 68 65 72 65 20 69 73 20 6e 6f 20 64 69 73 74 69  here is no disti
38140 6e 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 70  nction between p
38150 72 6f 74 65 63 74 65 64 20 61 6e 64 20 75 6e 70  rotected and unp
38160 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69  rotected.** sqli
38170 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74  te3_value object
38180 73 20 61 6e 64 20 74 68 65 79 20 63 61 6e 20 62  s and they can b
38190 65 20 75 73 65 64 20 69 6e 74 65 72 63 68 61 6e  e used interchan
381a0 67 65 61 62 6c 79 2e 20 20 48 6f 77 65 76 65 72  geably.  However
381b0 2c 0a 2a 2a 20 66 6f 72 20 6d 61 78 69 6d 75 6d  ,.** for maximum
381c0 20 63 6f 64 65 20 70 6f 72 74 61 62 69 6c 69 74   code portabilit
381d0 79 20 69 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e  y it is recommen
381e0 64 65 64 20 74 68 61 74 20 61 70 70 6c 69 63 61  ded that applica
381f0 74 69 6f 6e 73 0a 2a 2a 20 73 74 69 6c 6c 20 6d  tions.** still m
38200 61 6b 65 20 74 68 65 20 64 69 73 74 69 6e 63 74  ake the distinct
38210 69 6f 6e 20 62 65 74 77 65 65 6e 20 70 72 6f 74  ion between prot
38220 65 63 74 65 64 20 61 6e 64 20 75 6e 70 72 6f 74  ected and unprot
38230 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33  ected.** sqlite3
38240 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 65  _value objects e
38250 76 65 6e 20 77 68 65 6e 20 6e 6f 74 20 73 74 72  ven when not str
38260 69 63 74 6c 79 20 72 65 71 75 69 72 65 64 2e 0a  ictly required..
38270 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
38280 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73  e3_value objects
38290 20 74 68 61 74 20 61 72 65 20 70 61 73 73 65 64   that are passed
382a0 20 61 73 20 70 61 72 61 6d 65 74 65 72 73 20 69   as parameters i
382b0 6e 74 6f 20 74 68 65 0a 2a 2a 20 69 6d 70 6c 65  nto the.** imple
382c0 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 61 70  mentation of [ap
382d0 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
382e0 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d  d SQL functions]
382f0 20 61 72 65 20 70 72 6f 74 65 63 74 65 64 2e 0a   are protected..
38300 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
38310 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 72 65 74  value object ret
38320 75 72 6e 65 64 20 62 79 0a 2a 2a 20 5b 73 71 6c  urned by.** [sql
38330 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 76 61 6c 75  ite3_column_valu
38340 65 28 29 5d 20 69 73 20 75 6e 70 72 6f 74 65 63  e()] is unprotec
38350 74 65 64 2e 0a 2a 2a 20 55 6e 70 72 6f 74 65 63  ted..** Unprotec
38360 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ted sqlite3_valu
38370 65 20 6f 62 6a 65 63 74 73 20 6d 61 79 20 6f 6e  e objects may on
38380 6c 79 20 62 65 20 75 73 65 64 20 61 73 20 61 72  ly be used as ar
38390 67 75 6d 65 6e 74 73 0a 2a 2a 20 74 6f 20 5b 73  guments.** to [s
383a0 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76 61  qlite3_result_va
383b0 6c 75 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  lue()], [sqlite3
383c0 5f 62 69 6e 64 5f 76 61 6c 75 65 28 29 5d 2c 20  _bind_value()], 
383d0 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  and.** [sqlite3_
383e0 76 61 6c 75 65 5f 64 75 70 28 29 5d 2e 0a 2a 2a  value_dup()]..**
383f0 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 61   The [sqlite3_va
38400 6c 75 65 5f 62 6c 6f 62 20 7c 20 73 71 6c 69 74  lue_blob | sqlit
38410 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 29 5d  e3_value_type()]
38420 20 66 61 6d 69 6c 79 20 6f 66 0a 2a 2a 20 69 6e   family of.** in
38430 74 65 72 66 61 63 65 73 20 72 65 71 75 69 72 65  terfaces require
38440 20 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74   protected sqlit
38450 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73  e3_value objects
38460 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
38470 75 63 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  uct sqlite3_valu
38480 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 3b  e sqlite3_value;
38490 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
384a0 3a 20 53 51 4c 20 46 75 6e 63 74 69 6f 6e 20 43  : SQL Function C
384b0 6f 6e 74 65 78 74 20 4f 62 6a 65 63 74 0a 2a 2a  ontext Object.**
384c0 0a 2a 2a 20 54 68 65 20 63 6f 6e 74 65 78 74 20  .** The context 
384d0 69 6e 20 77 68 69 63 68 20 61 6e 20 53 51 4c 20  in which an SQL 
384e0 66 75 6e 63 74 69 6f 6e 20 65 78 65 63 75 74 65  function execute
384f0 73 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 61  s is stored in a
38500 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6e  n.** sqlite3_con
38510 74 65 78 74 20 6f 62 6a 65 63 74 2e 20 20 5e 41  text object.  ^A
38520 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 73   pointer to an s
38530 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 6f  qlite3_context o
38540 62 6a 65 63 74 0a 2a 2a 20 69 73 20 61 6c 77 61  bject.** is alwa
38550 79 73 20 66 69 72 73 74 20 70 61 72 61 6d 65 74  ys first paramet
38560 65 72 20 74 6f 20 5b 61 70 70 6c 69 63 61 74 69  er to [applicati
38570 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66  on-defined SQL f
38580 75 6e 63 74 69 6f 6e 73 5d 2e 0a 2a 2a 20 54 68  unctions]..** Th
38590 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65  e application-de
385a0