System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 2452419372c446f0021943fb60d0ece1fe21e30f:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a  ***************.
0050: 2a 2a 20 54 68 69 73 20 66 69 6c 65 20 69 73 20  ** This file is 
0060: 61 6e 20 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 20  an amalgamation 
0070: 6f 66 20 6d 61 6e 79 20 73 65 70 61 72 61 74 65  of many separate
0080: 20 43 20 73 6f 75 72 63 65 20 66 69 6c 65 73 20   C source files 
0090: 66 72 6f 6d 20 53 51 4c 69 74 65 0a 2a 2a 20 76  from SQLite.** v
00a0: 65 72 73 69 6f 6e 20 33 2e 32 34 2e 30 2e 20 20  ersion 3.24.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 0a 0a 2f 2a 0a 2a 2a 20 49 6e 63 6c 75 64  GS../*.** Includ
07b0: 65 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74  e the configurat
07c0: 69 6f 6e 20 68 65 61 64 65 72 20 6f 75 74 70 75  ion header outpu
07d0: 74 20 62 79 20 27 63 6f 6e 66 69 67 75 72 65 27  t by 'configure'
07e0: 20 69 66 20 77 65 27 72 65 20 75 73 69 6e 67 20   if we're using 
07f0: 74 68 65 0a 2a 2a 20 61 75 74 6f 63 6f 6e 66 2d  the.** autoconf-
0800: 62 61 73 65 64 20 62 75 69 6c 64 0a 2a 2f 0a 23  based build.*/.#
0810: 69 66 20 64 65 66 69 6e 65 64 28 5f 48 41 56 45  if defined(_HAVE
0820: 5f 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48  _SQLITE_CONFIG_H
0830: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 53 51  ) && !defined(SQ
0840: 4c 49 54 45 43 4f 4e 46 49 47 5f 48 29 0a 23 69  LITECONFIG_H).#i
0850: 6e 63 6c 75 64 65 20 22 63 6f 6e 66 69 67 2e 68  nclude "config.h
0860: 22 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ".#define SQLITE
0870: 43 4f 4e 46 49 47 5f 48 20 31 0a 23 65 6e 64 69  CONFIG_H 1.#endi
0880: 66 0a 0a 2f 2a 20 54 68 65 73 65 20 6d 61 63 72  f../* These macr
0890: 6f 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  os are provided 
08a0: 74 6f 20 22 73 74 72 69 6e 67 69 66 79 22 20 74  to "stringify" t
08b0: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
08c0: 64 65 66 69 6e 65 0a 2a 2a 20 66 6f 72 20 74 68  define.** for th
08d0: 6f 73 65 20 6f 70 74 69 6f 6e 73 20 69 6e 20 77  ose options in w
08e0: 68 69 63 68 20 74 68 65 20 76 61 6c 75 65 20 69  hich the value i
08f0: 73 20 6d 65 61 6e 69 6e 67 66 75 6c 2e 20 2a 2f  s meaningful. */
0900: 0a 23 64 65 66 69 6e 65 20 43 54 49 4d 45 4f 50  .#define CTIMEOP
0910: 54 5f 56 41 4c 5f 28 6f 70 74 29 20 23 6f 70 74  T_VAL_(opt) #opt
0920: 0a 23 64 65 66 69 6e 65 20 43 54 49 4d 45 4f 50  .#define CTIMEOP
0930: 54 5f 56 41 4c 28 6f 70 74 29 20 43 54 49 4d 45  T_VAL(opt) CTIME
0940: 4f 50 54 5f 56 41 4c 5f 28 6f 70 74 29 0a 0a 2f  OPT_VAL_(opt)../
0950: 2a 0a 2a 2a 20 41 6e 20 61 72 72 61 79 20 6f 66  *.** An array of
0960: 20 6e 61 6d 65 73 20 6f 66 20 61 6c 6c 20 63 6f   names of all co
0970: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
0980: 6e 73 2e 20 20 54 68 69 73 20 61 72 72 61 79 20  ns.  This array 
0990: 73 68 6f 75 6c 64 20 0a 2a 2a 20 62 65 20 73 6f  should .** be so
09a0: 72 74 65 64 20 41 2d 5a 2e 0a 2a 2a 0a 2a 2a 20  rted A-Z..**.** 
09b0: 54 68 69 73 20 61 72 72 61 79 20 6c 6f 6f 6b 73  This array looks
09c0: 20 6c 61 72 67 65 2c 20 62 75 74 20 69 6e 20 61   large, but in a
09d0: 20 74 79 70 69 63 61 6c 20 69 6e 73 74 61 6c 6c   typical install
09e0: 61 74 69 6f 6e 20 61 63 74 75 61 6c 6c 79 20 75  ation actually u
09f0: 73 65 73 0a 2a 2a 20 6f 6e 6c 79 20 61 20 68 61  ses.** only a ha
0a00: 6e 64 66 75 6c 20 6f 66 20 63 6f 6d 70 69 6c 65  ndful of compile
0a10: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2c 20 73  -time options, s
0a20: 6f 20 6d 6f 73 74 20 74 69 6d 65 73 20 74 68 69  o most times thi
0a30: 73 20 61 72 72 61 79 20 69 73 20 75 73 75 61 6c  s array is usual
0a40: 6c 79 0a 2a 2a 20 72 61 74 68 65 72 20 73 68 6f  ly.** rather sho
0a50: 72 74 20 61 6e 64 20 75 73 65 73 20 6c 69 74 74  rt and uses litt
0a60: 6c 65 20 6d 65 6d 6f 72 79 20 73 70 61 63 65 2e  le memory space.
0a70: 0a 2a 2f 0a 73 74 61 74 69 63 20 63 6f 6e 73 74  .*/.static const
0a80: 20 63 68 61 72 20 2a 20 63 6f 6e 73 74 20 73 71   char * const sq
0a90: 6c 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70  lite3azCompileOp
0aa0: 74 5b 5d 20 3d 20 7b 0a 0a 2f 2a 20 0a 2a 2a 20  t[] = {../* .** 
0ab0: 42 45 47 49 4e 20 43 4f 44 45 20 47 45 4e 45 52  BEGIN CODE GENER
0ac0: 41 54 45 44 20 42 59 20 74 6f 6f 6c 2f 6d 6b 63  ATED BY tool/mkc
0ad0: 74 69 6d 65 2e 74 63 6c 20 0a 2a 2f 0a 23 69 66  time.tcl .*/.#if
0ae0: 20 53 51 4c 49 54 45 5f 33 32 42 49 54 5f 52 4f   SQLITE_32BIT_RO
0af0: 57 49 44 0a 20 20 22 33 32 42 49 54 5f 52 4f 57  WID.  "32BIT_ROW
0b00: 49 44 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ID",.#endif.#if 
0b10: 53 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c  SQLITE_4_BYTE_AL
0b20: 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43 0a 20 20 22  IGNED_MALLOC.  "
0b30: 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d  4_BYTE_ALIGNED_M
0b40: 41 4c 4c 4f 43 22 2c 0a 23 65 6e 64 69 66 0a 23  ALLOC",.#endif.#
0b50: 69 66 20 53 51 4c 49 54 45 5f 36 34 42 49 54 5f  if SQLITE_64BIT_
0b60: 53 54 41 54 53 0a 20 20 22 36 34 42 49 54 5f 53  STATS.  "64BIT_S
0b70: 54 41 54 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  TATS",.#endif.#i
0b80: 66 20 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43  f SQLITE_ALLOW_C
0b90: 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43  OVERING_INDEX_SC
0ba0: 41 4e 0a 20 20 22 41 4c 4c 4f 57 5f 43 4f 56 45  AN.  "ALLOW_COVE
0bb0: 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 22  RING_INDEX_SCAN"
0bc0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
0bd0: 49 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55  ITE_ALLOW_URI_AU
0be0: 54 48 4f 52 49 54 59 0a 20 20 22 41 4c 4c 4f 57  THORITY.  "ALLOW
0bf0: 5f 55 52 49 5f 41 55 54 48 4f 52 49 54 59 22 2c  _URI_AUTHORITY",
0c00: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
0c10: 51 4c 49 54 45 5f 42 49 54 4d 41 53 4b 5f 54 59  QLITE_BITMASK_TY
0c20: 50 45 0a 20 20 22 42 49 54 4d 41 53 4b 5f 54 59  PE.  "BITMASK_TY
0c30: 50 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  PE=" CTIMEOPT_VA
0c40: 4c 28 53 51 4c 49 54 45 5f 42 49 54 4d 41 53 4b  L(SQLITE_BITMASK
0c50: 5f 54 59 50 45 29 2c 0a 23 65 6e 64 69 66 0a 23  _TYPE),.#endif.#
0c60: 69 66 20 53 51 4c 49 54 45 5f 42 55 47 5f 43 4f  if SQLITE_BUG_CO
0c70: 4d 50 41 54 49 42 4c 45 5f 32 30 31 36 30 38 31  MPATIBLE_2016081
0c80: 39 0a 20 20 22 42 55 47 5f 43 4f 4d 50 41 54 49  9.  "BUG_COMPATI
0c90: 42 4c 45 5f 32 30 31 36 30 38 31 39 22 2c 0a 23  BLE_20160819",.#
0ca0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
0cb0: 5f 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f  _CASE_SENSITIVE_
0cc0: 4c 49 4b 45 0a 20 20 22 43 41 53 45 5f 53 45 4e  LIKE.  "CASE_SEN
0cd0: 53 49 54 49 56 45 5f 4c 49 4b 45 22 2c 0a 23 65  SITIVE_LIKE",.#e
0ce0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
0cf0: 43 48 45 43 4b 5f 50 41 47 45 53 0a 20 20 22 43  CHECK_PAGES.  "C
0d00: 48 45 43 4b 5f 50 41 47 45 53 22 2c 0a 23 65 6e  HECK_PAGES",.#en
0d10: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
0d20: 5f 5f 63 6c 61 6e 67 5f 5f 29 20 26 26 20 64 65  __clang__) && de
0d30: 66 69 6e 65 64 28 5f 5f 63 6c 61 6e 67 5f 6d 61  fined(__clang_ma
0d40: 6a 6f 72 5f 5f 29 0a 20 20 22 43 4f 4d 50 49 4c  jor__).  "COMPIL
0d50: 45 52 3d 63 6c 61 6e 67 2d 22 20 43 54 49 4d 45  ER=clang-" CTIME
0d60: 4f 50 54 5f 56 41 4c 28 5f 5f 63 6c 61 6e 67 5f  OPT_VAL(__clang_
0d70: 6d 61 6a 6f 72 5f 5f 29 20 22 2e 22 0a 20 20 20  major__) ".".   
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d90: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 5f 5f   CTIMEOPT_VAL(__
0da0: 63 6c 61 6e 67 5f 6d 69 6e 6f 72 5f 5f 29 20 22  clang_minor__) "
0db0: 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  .".             
0dc0: 20 20 20 20 20 20 20 43 54 49 4d 45 4f 50 54 5f         CTIMEOPT_
0dd0: 56 41 4c 28 5f 5f 63 6c 61 6e 67 5f 70 61 74 63  VAL(__clang_patc
0de0: 68 6c 65 76 65 6c 5f 5f 29 2c 0a 23 65 6c 69 66  hlevel__),.#elif
0df0: 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45   defined(_MSC_VE
0e00: 52 29 0a 20 20 22 43 4f 4d 50 49 4c 45 52 3d 6d  R).  "COMPILER=m
0e10: 73 76 63 2d 22 20 43 54 49 4d 45 4f 50 54 5f 56  svc-" CTIMEOPT_V
0e20: 41 4c 28 5f 4d 53 43 5f 56 45 52 29 2c 0a 23 65  AL(_MSC_VER),.#e
0e30: 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e  lif defined(__GN
0e40: 55 43 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  UC__) && defined
0e50: 28 5f 5f 56 45 52 53 49 4f 4e 5f 5f 29 0a 20 20  (__VERSION__).  
0e60: 22 43 4f 4d 50 49 4c 45 52 3d 67 63 63 2d 22 20  "COMPILER=gcc-" 
0e70: 5f 5f 56 45 52 53 49 4f 4e 5f 5f 2c 0a 23 65 6e  __VERSION__,.#en
0e80: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 43  dif.#if SQLITE_C
0e90: 4f 56 45 52 41 47 45 5f 54 45 53 54 0a 20 20 22  OVERAGE_TEST.  "
0ea0: 43 4f 56 45 52 41 47 45 5f 54 45 53 54 22 2c 0a  COVERAGE_TEST",.
0eb0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
0ec0: 45 5f 44 45 42 55 47 0a 20 20 22 44 45 42 55 47  E_DEBUG.  "DEBUG
0ed0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
0ee0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 41 55 54  LITE_DEFAULT_AUT
0ef0: 4f 4d 41 54 49 43 5f 49 4e 44 45 58 0a 20 20 22  OMATIC_INDEX.  "
0f00: 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49  DEFAULT_AUTOMATI
0f10: 43 5f 49 4e 44 45 58 22 2c 0a 23 65 6e 64 69 66  C_INDEX",.#endif
0f20: 0a 23 69 66 20 53 51 4c 49 54 45 5f 44 45 46 41  .#if SQLITE_DEFA
0f30: 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d 0a 20  ULT_AUTOVACUUM. 
0f40: 20 22 44 45 46 41 55 4c 54 5f 41 55 54 4f 56 41   "DEFAULT_AUTOVA
0f50: 43 55 55 4d 22 2c 0a 23 65 6e 64 69 66 0a 23 69  CUUM",.#endif.#i
0f60: 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46 41  fdef SQLITE_DEFA
0f70: 55 4c 54 5f 43 41 43 48 45 5f 53 49 5a 45 0a 20  ULT_CACHE_SIZE. 
0f80: 20 22 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f   "DEFAULT_CACHE_
0f90: 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f  SIZE=" CTIMEOPT_
0fa0: 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55  VAL(SQLITE_DEFAU
0fb0: 4c 54 5f 43 41 43 48 45 5f 53 49 5a 45 29 2c 0a  LT_CACHE_SIZE),.
0fc0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
0fd0: 45 5f 44 45 46 41 55 4c 54 5f 43 4b 50 54 46 55  E_DEFAULT_CKPTFU
0fe0: 4c 4c 46 53 59 4e 43 0a 20 20 22 44 45 46 41 55  LLFSYNC.  "DEFAU
0ff0: 4c 54 5f 43 4b 50 54 46 55 4c 4c 46 53 59 4e 43  LT_CKPTFULLFSYNC
1000: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ",.#endif.#ifdef
1010: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
1020: 46 49 4c 45 5f 46 4f 52 4d 41 54 0a 20 20 22 44  FILE_FORMAT.  "D
1030: 45 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d  EFAULT_FILE_FORM
1040: 41 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  AT=" CTIMEOPT_VA
1050: 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  L(SQLITE_DEFAULT
1060: 5f 46 49 4c 45 5f 46 4f 52 4d 41 54 29 2c 0a 23  _FILE_FORMAT),.#
1070: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
1080: 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45  ITE_DEFAULT_FILE
1090: 5f 50 45 52 4d 49 53 53 49 4f 4e 53 0a 20 20 22  _PERMISSIONS.  "
10a0: 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 50 45 52  DEFAULT_FILE_PER
10b0: 4d 49 53 53 49 4f 4e 53 3d 22 20 43 54 49 4d 45  MISSIONS=" CTIME
10c0: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44  OPT_VAL(SQLITE_D
10d0: 45 46 41 55 4c 54 5f 46 49 4c 45 5f 50 45 52 4d  EFAULT_FILE_PERM
10e0: 49 53 53 49 4f 4e 53 29 2c 0a 23 65 6e 64 69 66  ISSIONS),.#endif
10f0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 44 45 46 41  .#if SQLITE_DEFA
1100: 55 4c 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 53  ULT_FOREIGN_KEYS
1110: 0a 20 20 22 44 45 46 41 55 4c 54 5f 46 4f 52 45  .  "DEFAULT_FORE
1120: 49 47 4e 5f 4b 45 59 53 22 2c 0a 23 65 6e 64 69  IGN_KEYS",.#endi
1130: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
1140: 44 45 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f  DEFAULT_JOURNAL_
1150: 53 49 5a 45 5f 4c 49 4d 49 54 0a 20 20 22 44 45  SIZE_LIMIT.  "DE
1160: 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49  FAULT_JOURNAL_SI
1170: 5a 45 5f 4c 49 4d 49 54 3d 22 20 43 54 49 4d 45  ZE_LIMIT=" CTIME
1180: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44  OPT_VAL(SQLITE_D
1190: 45 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53  EFAULT_JOURNAL_S
11a0: 49 5a 45 5f 4c 49 4d 49 54 29 2c 0a 23 65 6e 64  IZE_LIMIT),.#end
11b0: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
11c0: 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47  _DEFAULT_LOCKING
11d0: 5f 4d 4f 44 45 0a 20 20 22 44 45 46 41 55 4c 54  _MODE.  "DEFAULT
11e0: 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f 44 45 3d 22 20  _LOCKING_MODE=" 
11f0: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
1200: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b  ITE_DEFAULT_LOCK
1210: 49 4e 47 5f 4d 4f 44 45 29 2c 0a 23 65 6e 64 69  ING_MODE),.#endi
1220: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
1230: 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b 41 53 49 44  DEFAULT_LOOKASID
1240: 45 0a 20 20 22 44 45 46 41 55 4c 54 5f 4c 4f 4f  E.  "DEFAULT_LOO
1250: 4b 41 53 49 44 45 3d 22 20 43 54 49 4d 45 4f 50  KASIDE=" CTIMEOP
1260: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46  T_VAL(SQLITE_DEF
1270: 41 55 4c 54 5f 4c 4f 4f 4b 41 53 49 44 45 29 2c  AULT_LOOKASIDE),
1280: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1290: 54 45 5f 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54  TE_DEFAULT_MEMST
12a0: 41 54 55 53 0a 20 20 22 44 45 46 41 55 4c 54 5f  ATUS.  "DEFAULT_
12b0: 4d 45 4d 53 54 41 54 55 53 22 2c 0a 23 65 6e 64  MEMSTATUS",.#end
12c0: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
12d0: 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49  _DEFAULT_MMAP_SI
12e0: 5a 45 0a 20 20 22 44 45 46 41 55 4c 54 5f 4d 4d  ZE.  "DEFAULT_MM
12f0: 41 50 5f 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f  AP_SIZE=" CTIMEO
1300: 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45  PT_VAL(SQLITE_DE
1310: 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 29  FAULT_MMAP_SIZE)
1320: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
1330: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50  SQLITE_DEFAULT_P
1340: 41 47 45 5f 53 49 5a 45 0a 20 20 22 44 45 46 41  AGE_SIZE.  "DEFA
1350: 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 3d 22 20  ULT_PAGE_SIZE=" 
1360: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
1370: 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45  ITE_DEFAULT_PAGE
1380: 5f 53 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23  _SIZE),.#endif.#
1390: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46  ifdef SQLITE_DEF
13a0: 41 55 4c 54 5f 50 43 41 43 48 45 5f 49 4e 49 54  AULT_PCACHE_INIT
13b0: 53 5a 0a 20 20 22 44 45 46 41 55 4c 54 5f 50 43  SZ.  "DEFAULT_PC
13c0: 41 43 48 45 5f 49 4e 49 54 53 5a 3d 22 20 43 54  ACHE_INITSZ=" CT
13d0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
13e0: 45 5f 44 45 46 41 55 4c 54 5f 50 43 41 43 48 45  E_DEFAULT_PCACHE
13f0: 5f 49 4e 49 54 53 5a 29 2c 0a 23 65 6e 64 69 66  _INITSZ),.#endif
1400: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44  .#ifdef SQLITE_D
1410: 45 46 41 55 4c 54 5f 50 52 4f 58 59 44 49 52 5f  EFAULT_PROXYDIR_
1420: 50 45 52 4d 49 53 53 49 4f 4e 53 0a 20 20 22 44  PERMISSIONS.  "D
1430: 45 46 41 55 4c 54 5f 50 52 4f 58 59 44 49 52 5f  EFAULT_PROXYDIR_
1440: 50 45 52 4d 49 53 53 49 4f 4e 53 3d 22 20 43 54  PERMISSIONS=" CT
1450: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
1460: 45 5f 44 45 46 41 55 4c 54 5f 50 52 4f 58 59 44  E_DEFAULT_PROXYD
1470: 49 52 5f 50 45 52 4d 49 53 53 49 4f 4e 53 29 2c  IR_PERMISSIONS),
1480: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1490: 54 45 5f 44 45 46 41 55 4c 54 5f 52 45 43 55 52  TE_DEFAULT_RECUR
14a0: 53 49 56 45 5f 54 52 49 47 47 45 52 53 0a 20 20  SIVE_TRIGGERS.  
14b0: 22 44 45 46 41 55 4c 54 5f 52 45 43 55 52 53 49  "DEFAULT_RECURSI
14c0: 56 45 5f 54 52 49 47 47 45 52 53 22 2c 0a 23 65  VE_TRIGGERS",.#e
14d0: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
14e0: 54 45 5f 44 45 46 41 55 4c 54 5f 52 4f 57 45 53  TE_DEFAULT_ROWES
14f0: 54 0a 20 20 22 44 45 46 41 55 4c 54 5f 52 4f 57  T.  "DEFAULT_ROW
1500: 45 53 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  EST=" CTIMEOPT_V
1510: 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  AL(SQLITE_DEFAUL
1520: 54 5f 52 4f 57 45 53 54 29 2c 0a 23 65 6e 64 69  T_ROWEST),.#endi
1530: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
1540: 44 45 46 41 55 4c 54 5f 53 45 43 54 4f 52 5f 53  DEFAULT_SECTOR_S
1550: 49 5a 45 0a 20 20 22 44 45 46 41 55 4c 54 5f 53  IZE.  "DEFAULT_S
1560: 45 43 54 4f 52 5f 53 49 5a 45 3d 22 20 43 54 49  ECTOR_SIZE=" CTI
1570: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
1580: 5f 44 45 46 41 55 4c 54 5f 53 45 43 54 4f 52 5f  _DEFAULT_SECTOR_
1590: 53 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69  SIZE),.#endif.#i
15a0: 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46 41  fdef SQLITE_DEFA
15b0: 55 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 0a  ULT_SYNCHRONOUS.
15c0: 20 20 22 44 45 46 41 55 4c 54 5f 53 59 4e 43 48    "DEFAULT_SYNCH
15d0: 52 4f 4e 4f 55 53 3d 22 20 43 54 49 4d 45 4f 50  RONOUS=" CTIMEOP
15e0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46  T_VAL(SQLITE_DEF
15f0: 41 55 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  AULT_SYNCHRONOUS
1600: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
1610: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
1620: 57 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49  WAL_AUTOCHECKPOI
1630: 4e 54 0a 20 20 22 44 45 46 41 55 4c 54 5f 57 41  NT.  "DEFAULT_WA
1640: 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49 4e 54  L_AUTOCHECKPOINT
1650: 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28  =" CTIMEOPT_VAL(
1660: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57  SQLITE_DEFAULT_W
1670: 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49 4e  AL_AUTOCHECKPOIN
1680: 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  T),.#endif.#ifde
1690: 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  f SQLITE_DEFAULT
16a0: 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  _WAL_SYNCHRONOUS
16b0: 0a 20 20 22 44 45 46 41 55 4c 54 5f 57 41 4c 5f  .  "DEFAULT_WAL_
16c0: 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 22 20 43 54  SYNCHRONOUS=" CT
16d0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
16e0: 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53 59  E_DEFAULT_WAL_SY
16f0: 4e 43 48 52 4f 4e 4f 55 53 29 2c 0a 23 65 6e 64  NCHRONOUS),.#end
1700: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
1710: 5f 44 45 46 41 55 4c 54 5f 57 4f 52 4b 45 52 5f  _DEFAULT_WORKER_
1720: 54 48 52 45 41 44 53 0a 20 20 22 44 45 46 41 55  THREADS.  "DEFAU
1730: 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  LT_WORKER_THREAD
1740: 53 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  S=" CTIMEOPT_VAL
1750: 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  (SQLITE_DEFAULT_
1760: 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 29 2c  WORKER_THREADS),
1770: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1780: 54 45 5f 44 49 52 45 43 54 5f 4f 56 45 52 46 4c  TE_DIRECT_OVERFL
1790: 4f 57 5f 52 45 41 44 0a 20 20 22 44 49 52 45 43  OW_READ.  "DIREC
17a0: 54 5f 4f 56 45 52 46 4c 4f 57 5f 52 45 41 44 22  T_OVERFLOW_READ"
17b0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
17c0: 49 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53  ITE_DISABLE_DIRS
17d0: 59 4e 43 0a 20 20 22 44 49 53 41 42 4c 45 5f 44  YNC.  "DISABLE_D
17e0: 49 52 53 59 4e 43 22 2c 0a 23 65 6e 64 69 66 0a  IRSYNC",.#endif.
17f0: 23 69 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42  #if SQLITE_DISAB
1800: 4c 45 5f 46 54 53 33 5f 55 4e 49 43 4f 44 45 0a  LE_FTS3_UNICODE.
1810: 20 20 22 44 49 53 41 42 4c 45 5f 46 54 53 33 5f    "DISABLE_FTS3_
1820: 55 4e 49 43 4f 44 45 22 2c 0a 23 65 6e 64 69 66  UNICODE",.#endif
1830: 0a 23 69 66 20 53 51 4c 49 54 45 5f 44 49 53 41  .#if SQLITE_DISA
1840: 42 4c 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45  BLE_FTS4_DEFERRE
1850: 44 0a 20 20 22 44 49 53 41 42 4c 45 5f 46 54 53  D.  "DISABLE_FTS
1860: 34 5f 44 45 46 45 52 52 45 44 22 2c 0a 23 65 6e  4_DEFERRED",.#en
1870: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 44  dif.#if SQLITE_D
1880: 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53 49 43  ISABLE_INTRINSIC
1890: 0a 20 20 22 44 49 53 41 42 4c 45 5f 49 4e 54 52  .  "DISABLE_INTR
18a0: 49 4e 53 49 43 22 2c 0a 23 65 6e 64 69 66 0a 23  INSIC",.#endif.#
18b0: 69 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  if SQLITE_DISABL
18c0: 45 5f 4c 46 53 0a 20 20 22 44 49 53 41 42 4c 45  E_LFS.  "DISABLE
18d0: 5f 4c 46 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  _LFS",.#endif.#i
18e0: 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  f SQLITE_DISABLE
18f0: 5f 50 41 47 45 43 41 43 48 45 5f 4f 56 45 52 46  _PAGECACHE_OVERF
1900: 4c 4f 57 5f 53 54 41 54 53 0a 20 20 22 44 49 53  LOW_STATS.  "DIS
1910: 41 42 4c 45 5f 50 41 47 45 43 41 43 48 45 5f 4f  ABLE_PAGECACHE_O
1920: 56 45 52 46 4c 4f 57 5f 53 54 41 54 53 22 2c 0a  VERFLOW_STATS",.
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 53 4b 49 50 41 48  E_DISABLE_SKIPAH
1950: 45 41 44 5f 44 49 53 54 49 4e 43 54 0a 20 20 22  EAD_DISTINCT.  "
1960: 44 49 53 41 42 4c 45 5f 53 4b 49 50 41 48 45 41  DISABLE_SKIPAHEA
1970: 44 5f 44 49 53 54 49 4e 43 54 22 2c 0a 23 65 6e  D_DISTINCT",.#en
1980: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
1990: 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d  E_ENABLE_8_3_NAM
19a0: 45 53 0a 20 20 22 45 4e 41 42 4c 45 5f 38 5f 33  ES.  "ENABLE_8_3
19b0: 5f 4e 41 4d 45 53 3d 22 20 43 54 49 4d 45 4f 50  _NAMES=" CTIMEOP
19c0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 45 4e 41  T_VAL(SQLITE_ENA
19d0: 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53 29 2c 0a  BLE_8_3_NAMES),.
19e0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
19f0: 45 5f 45 4e 41 42 4c 45 5f 41 50 49 5f 41 52 4d  E_ENABLE_API_ARM
1a00: 4f 52 0a 20 20 22 45 4e 41 42 4c 45 5f 41 50 49  OR.  "ENABLE_API
1a10: 5f 41 52 4d 4f 52 22 2c 0a 23 65 6e 64 69 66 0a  _ARMOR",.#endif.
1a20: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1a30: 45 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 0a 20  E_ATOMIC_WRITE. 
1a40: 20 22 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43 5f   "ENABLE_ATOMIC_
1a50: 57 52 49 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23  WRITE",.#endif.#
1a60: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1a70: 5f 42 41 54 43 48 5f 41 54 4f 4d 49 43 5f 57 52  _BATCH_ATOMIC_WR
1a80: 49 54 45 0a 20 20 22 45 4e 41 42 4c 45 5f 42 41  ITE.  "ENABLE_BA
1a90: 54 43 48 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  TCH_ATOMIC_WRITE
1aa0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1ab0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 45 52 4f  LITE_ENABLE_CERO
1ac0: 44 0a 20 20 22 45 4e 41 42 4c 45 5f 43 45 52 4f  D.  "ENABLE_CERO
1ad0: 44 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  D=" CTIMEOPT_VAL
1ae0: 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43  (SQLITE_ENABLE_C
1af0: 45 52 4f 44 29 2c 0a 23 65 6e 64 69 66 0a 23 69  EROD),.#endif.#i
1b00: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1b10: 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 0a  COLUMN_METADATA.
1b20: 20 20 22 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e    "ENABLE_COLUMN
1b30: 5f 4d 45 54 41 44 41 54 41 22 2c 0a 23 65 6e 64  _METADATA",.#end
1b40: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
1b50: 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 55 53 45 44  ABLE_COLUMN_USED
1b60: 5f 4d 41 53 4b 0a 20 20 22 45 4e 41 42 4c 45 5f  _MASK.  "ENABLE_
1b70: 43 4f 4c 55 4d 4e 5f 55 53 45 44 5f 4d 41 53 4b  COLUMN_USED_MASK
1b80: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1b90: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 53 54  LITE_ENABLE_COST
1ba0: 4d 55 4c 54 0a 20 20 22 45 4e 41 42 4c 45 5f 43  MULT.  "ENABLE_C
1bb0: 4f 53 54 4d 55 4c 54 22 2c 0a 23 65 6e 64 69 66  OSTMULT",.#endif
1bc0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1bd0: 4c 45 5f 43 55 52 53 4f 52 5f 48 49 4e 54 53 0a  LE_CURSOR_HINTS.
1be0: 20 20 22 45 4e 41 42 4c 45 5f 43 55 52 53 4f 52    "ENABLE_CURSOR
1bf0: 5f 48 49 4e 54 53 22 2c 0a 23 65 6e 64 69 66 0a  _HINTS",.#endif.
1c00: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1c10: 45 5f 44 42 53 54 41 54 5f 56 54 41 42 0a 20 20  E_DBSTAT_VTAB.  
1c20: 22 45 4e 41 42 4c 45 5f 44 42 53 54 41 54 5f 56  "ENABLE_DBSTAT_V
1c30: 54 41 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  TAB",.#endif.#if
1c40: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45   SQLITE_ENABLE_E
1c50: 58 50 45 4e 53 49 56 45 5f 41 53 53 45 52 54 0a  XPENSIVE_ASSERT.
1c60: 20 20 22 45 4e 41 42 4c 45 5f 45 58 50 45 4e 53    "ENABLE_EXPENS
1c70: 49 56 45 5f 41 53 53 45 52 54 22 2c 0a 23 65 6e  IVE_ASSERT",.#en
1c80: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
1c90: 4e 41 42 4c 45 5f 46 54 53 31 0a 20 20 22 45 4e  NABLE_FTS1.  "EN
1ca0: 41 42 4c 45 5f 46 54 53 31 22 2c 0a 23 65 6e 64  ABLE_FTS1",.#end
1cb0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
1cc0: 41 42 4c 45 5f 46 54 53 32 0a 20 20 22 45 4e 41  ABLE_FTS2.  "ENA
1cd0: 42 4c 45 5f 46 54 53 32 22 2c 0a 23 65 6e 64 69  BLE_FTS2",.#endi
1ce0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
1cf0: 42 4c 45 5f 46 54 53 33 0a 20 20 22 45 4e 41 42  BLE_FTS3.  "ENAB
1d00: 4c 45 5f 46 54 53 33 22 2c 0a 23 65 6e 64 69 66  LE_FTS3",.#endif
1d10: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1d20: 4c 45 5f 46 54 53 33 5f 50 41 52 45 4e 54 48 45  LE_FTS3_PARENTHE
1d30: 53 49 53 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54  SIS.  "ENABLE_FT
1d40: 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53 22 2c  S3_PARENTHESIS",
1d50: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1d60: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54  TE_ENABLE_FTS3_T
1d70: 4f 4b 45 4e 49 5a 45 52 0a 20 20 22 45 4e 41 42  OKENIZER.  "ENAB
1d80: 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45  LE_FTS3_TOKENIZE
1d90: 52 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  R",.#endif.#if S
1da0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53  QLITE_ENABLE_FTS
1db0: 34 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 34  4.  "ENABLE_FTS4
1dc0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1dd0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35  LITE_ENABLE_FTS5
1de0: 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 35 22  .  "ENABLE_FTS5"
1df0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
1e00: 49 54 45 5f 45 4e 41 42 4c 45 5f 48 49 44 44 45  ITE_ENABLE_HIDDE
1e10: 4e 5f 43 4f 4c 55 4d 4e 53 0a 20 20 22 45 4e 41  N_COLUMNS.  "ENA
1e20: 42 4c 45 5f 48 49 44 44 45 4e 5f 43 4f 4c 55 4d  BLE_HIDDEN_COLUM
1e30: 4e 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  NS",.#endif.#if 
1e40: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 43  SQLITE_ENABLE_IC
1e50: 55 0a 20 20 22 45 4e 41 42 4c 45 5f 49 43 55 22  U.  "ENABLE_ICU"
1e60: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
1e70: 49 54 45 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41  ITE_ENABLE_IOTRA
1e80: 43 45 0a 20 20 22 45 4e 41 42 4c 45 5f 49 4f 54  CE.  "ENABLE_IOT
1e90: 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RACE",.#endif.#i
1ea0: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1eb0: 4a 53 4f 4e 31 0a 20 20 22 45 4e 41 42 4c 45 5f  JSON1.  "ENABLE_
1ec0: 4a 53 4f 4e 31 22 2c 0a 23 65 6e 64 69 66 0a 23  JSON1",.#endif.#
1ed0: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1ee0: 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 0a  _LOAD_EXTENSION.
1ef0: 20 20 22 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45    "ENABLE_LOAD_E
1f00: 58 54 45 4e 53 49 4f 4e 22 2c 0a 23 65 6e 64 69  XTENSION",.#endi
1f10: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
1f20: 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53  ENABLE_LOCKING_S
1f30: 54 59 4c 45 0a 20 20 22 45 4e 41 42 4c 45 5f 4c  TYLE.  "ENABLE_L
1f40: 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 3d 22 20 43  OCKING_STYLE=" C
1f50: 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49  TIMEOPT_VAL(SQLI
1f60: 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e  TE_ENABLE_LOCKIN
1f70: 47 5f 53 54 59 4c 45 29 2c 0a 23 65 6e 64 69 66  G_STYLE),.#endif
1f80: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1f90: 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45  LE_MEMORY_MANAGE
1fa0: 4d 45 4e 54 0a 20 20 22 45 4e 41 42 4c 45 5f 4d  MENT.  "ENABLE_M
1fb0: 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54  EMORY_MANAGEMENT
1fc0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1fd0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53  LITE_ENABLE_MEMS
1fe0: 59 53 33 0a 20 20 22 45 4e 41 42 4c 45 5f 4d 45  YS3.  "ENABLE_ME
1ff0: 4d 53 59 53 33 22 2c 0a 23 65 6e 64 69 66 0a 23  MSYS3",.#endif.#
2000: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2010: 5f 4d 45 4d 53 59 53 35 0a 20 20 22 45 4e 41 42  _MEMSYS5.  "ENAB
2020: 4c 45 5f 4d 45 4d 53 59 53 35 22 2c 0a 23 65 6e  LE_MEMSYS5",.#en
2030: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
2040: 4e 41 42 4c 45 5f 4d 55 4c 54 49 50 4c 45 58 0a  NABLE_MULTIPLEX.
2050: 20 20 22 45 4e 41 42 4c 45 5f 4d 55 4c 54 49 50    "ENABLE_MULTIP
2060: 4c 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  LEX",.#endif.#if
2070: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4e   SQLITE_ENABLE_N
2080: 55 4c 4c 5f 54 52 49 4d 0a 20 20 22 45 4e 41 42  ULL_TRIM.  "ENAB
2090: 4c 45 5f 4e 55 4c 4c 5f 54 52 49 4d 22 2c 0a 23  LE_NULL_TRIM",.#
20a0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
20b0: 5f 45 4e 41 42 4c 45 5f 4f 56 45 52 53 49 5a 45  _ENABLE_OVERSIZE
20c0: 5f 43 45 4c 4c 5f 43 48 45 43 4b 0a 20 20 22 45  _CELL_CHECK.  "E
20d0: 4e 41 42 4c 45 5f 4f 56 45 52 53 49 5a 45 5f 43  NABLE_OVERSIZE_C
20e0: 45 4c 4c 5f 43 48 45 43 4b 22 2c 0a 23 65 6e 64  ELL_CHECK",.#end
20f0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2100: 41 42 4c 45 5f 50 52 45 55 50 44 41 54 45 5f 48  ABLE_PREUPDATE_H
2110: 4f 4f 4b 0a 20 20 22 45 4e 41 42 4c 45 5f 50 52  OOK.  "ENABLE_PR
2120: 45 55 50 44 41 54 45 5f 48 4f 4f 4b 22 2c 0a 23  EUPDATE_HOOK",.#
2130: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
2140: 5f 45 4e 41 42 4c 45 5f 51 50 53 47 0a 20 20 22  _ENABLE_QPSG.  "
2150: 45 4e 41 42 4c 45 5f 51 50 53 47 22 2c 0a 23 65  ENABLE_QPSG",.#e
2160: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2170: 45 4e 41 42 4c 45 5f 52 42 55 0a 20 20 22 45 4e  ENABLE_RBU.  "EN
2180: 41 42 4c 45 5f 52 42 55 22 2c 0a 23 65 6e 64 69  ABLE_RBU",.#endi
2190: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
21a0: 42 4c 45 5f 52 54 52 45 45 0a 20 20 22 45 4e 41  BLE_RTREE.  "ENA
21b0: 42 4c 45 5f 52 54 52 45 45 22 2c 0a 23 65 6e 64  BLE_RTREE",.#end
21c0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
21d0: 41 42 4c 45 5f 53 45 4c 45 43 54 54 52 41 43 45  ABLE_SELECTTRACE
21e0: 0a 20 20 22 45 4e 41 42 4c 45 5f 53 45 4c 45 43  .  "ENABLE_SELEC
21f0: 54 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a  TTRACE",.#endif.
2200: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
2210: 45 5f 53 45 53 53 49 4f 4e 0a 20 20 22 45 4e 41  E_SESSION.  "ENA
2220: 42 4c 45 5f 53 45 53 53 49 4f 4e 22 2c 0a 23 65  BLE_SESSION",.#e
2230: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2240: 45 4e 41 42 4c 45 5f 53 4e 41 50 53 48 4f 54 0a  ENABLE_SNAPSHOT.
2250: 20 20 22 45 4e 41 42 4c 45 5f 53 4e 41 50 53 48    "ENABLE_SNAPSH
2260: 4f 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  OT",.#endif.#if 
2270: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 4f  SQLITE_ENABLE_SO
2280: 52 54 45 52 5f 52 45 46 45 52 45 4e 43 45 53 0a  RTER_REFERENCES.
2290: 20 20 22 45 4e 41 42 4c 45 5f 53 4f 52 54 45 52    "ENABLE_SORTER
22a0: 5f 52 45 46 45 52 45 4e 43 45 53 22 2c 0a 23 65  _REFERENCES",.#e
22b0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
22c0: 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 0a 20 20  ENABLE_SQLLOG.  
22d0: 22 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 22 2c  "ENABLE_SQLLOG",
22e0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
22f0: 6e 65 64 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c  ned(SQLITE_ENABL
2300: 45 5f 53 54 41 54 34 29 0a 20 20 22 45 4e 41 42  E_STAT4).  "ENAB
2310: 4c 45 5f 53 54 41 54 34 22 2c 0a 23 65 6c 69 66  LE_STAT4",.#elif
2320: 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f   defined(SQLITE_
2330: 45 4e 41 42 4c 45 5f 53 54 41 54 33 29 0a 20 20  ENABLE_STAT3).  
2340: 22 45 4e 41 42 4c 45 5f 53 54 41 54 33 22 2c 0a  "ENABLE_STAT3",.
2350: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2360: 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 56 54 41  E_ENABLE_STMTVTA
2370: 42 0a 20 20 22 45 4e 41 42 4c 45 5f 53 54 4d 54  B.  "ENABLE_STMT
2380: 56 54 41 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69  VTAB",.#endif.#i
2390: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
23a0: 53 54 4d 54 5f 53 43 41 4e 53 54 41 54 55 53 0a  STMT_SCANSTATUS.
23b0: 20 20 22 45 4e 41 42 4c 45 5f 53 54 4d 54 5f 53    "ENABLE_STMT_S
23c0: 43 41 4e 53 54 41 54 55 53 22 2c 0a 23 65 6e 64  CANSTATUS",.#end
23d0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
23e0: 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c  ABLE_UNKNOWN_SQL
23f0: 5f 46 55 4e 43 54 49 4f 4e 0a 20 20 22 45 4e 41  _FUNCTION.  "ENA
2400: 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f  BLE_UNKNOWN_SQL_
2410: 46 55 4e 43 54 49 4f 4e 22 2c 0a 23 65 6e 64 69  FUNCTION",.#endi
2420: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2430: 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46  BLE_UNLOCK_NOTIF
2440: 59 0a 20 20 22 45 4e 41 42 4c 45 5f 55 4e 4c 4f  Y.  "ENABLE_UNLO
2450: 43 4b 5f 4e 4f 54 49 46 59 22 2c 0a 23 65 6e 64  CK_NOTIFY",.#end
2460: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2470: 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45  ABLE_UPDATE_DELE
2480: 54 45 5f 4c 49 4d 49 54 0a 20 20 22 45 4e 41 42  TE_LIMIT.  "ENAB
2490: 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45  LE_UPDATE_DELETE
24a0: 5f 4c 49 4d 49 54 22 2c 0a 23 65 6e 64 69 66 0a  _LIMIT",.#endif.
24b0: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
24c0: 45 5f 55 52 49 5f 30 30 5f 45 52 52 4f 52 0a 20  E_URI_00_ERROR. 
24d0: 20 22 45 4e 41 42 4c 45 5f 55 52 49 5f 30 30 5f   "ENABLE_URI_00_
24e0: 45 52 52 4f 52 22 2c 0a 23 65 6e 64 69 66 0a 23  ERROR",.#endif.#
24f0: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2500: 5f 56 46 53 54 52 41 43 45 0a 20 20 22 45 4e 41  _VFSTRACE.  "ENA
2510: 42 4c 45 5f 56 46 53 54 52 41 43 45 22 2c 0a 23  BLE_VFSTRACE",.#
2520: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
2530: 5f 45 4e 41 42 4c 45 5f 57 48 45 52 45 54 52 41  _ENABLE_WHERETRA
2540: 43 45 0a 20 20 22 45 4e 41 42 4c 45 5f 57 48 45  CE.  "ENABLE_WHE
2550: 52 45 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66  RETRACE",.#endif
2560: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
2570: 4c 45 5f 5a 49 50 56 46 53 0a 20 20 22 45 4e 41  LE_ZIPVFS.  "ENA
2580: 42 4c 45 5f 5a 49 50 56 46 53 22 2c 0a 23 65 6e  BLE_ZIPVFS",.#en
2590: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
25a0: 58 50 4c 41 49 4e 5f 45 53 54 49 4d 41 54 45 44  XPLAIN_ESTIMATED
25b0: 5f 52 4f 57 53 0a 20 20 22 45 58 50 4c 41 49 4e  _ROWS.  "EXPLAIN
25c0: 5f 45 53 54 49 4d 41 54 45 44 5f 52 4f 57 53 22  _ESTIMATED_ROWS"
25d0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
25e0: 49 54 45 5f 45 58 54 52 41 5f 49 46 4e 55 4c 4c  ITE_EXTRA_IFNULL
25f0: 52 4f 57 0a 20 20 22 45 58 54 52 41 5f 49 46 4e  ROW.  "EXTRA_IFN
2600: 55 4c 4c 52 4f 57 22 2c 0a 23 65 6e 64 69 66 0a  ULLROW",.#endif.
2610: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 45 58  #ifdef SQLITE_EX
2620: 54 52 41 5f 49 4e 49 54 0a 20 20 22 45 58 54 52  TRA_INIT.  "EXTR
2630: 41 5f 49 4e 49 54 3d 22 20 43 54 49 4d 45 4f 50  A_INIT=" CTIMEOP
2640: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 45 58 54  T_VAL(SQLITE_EXT
2650: 52 41 5f 49 4e 49 54 29 2c 0a 23 65 6e 64 69 66  RA_INIT),.#endif
2660: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 45  .#ifdef SQLITE_E
2670: 58 54 52 41 5f 53 48 55 54 44 4f 57 4e 0a 20 20  XTRA_SHUTDOWN.  
2680: 22 45 58 54 52 41 5f 53 48 55 54 44 4f 57 4e 3d  "EXTRA_SHUTDOWN=
2690: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
26a0: 51 4c 49 54 45 5f 45 58 54 52 41 5f 53 48 55 54  QLITE_EXTRA_SHUT
26b0: 44 4f 57 4e 29 2c 0a 23 65 6e 64 69 66 0a 23 69  DOWN),.#endif.#i
26c0: 66 64 65 66 20 53 51 4c 49 54 45 5f 46 54 53 33  fdef SQLITE_FTS3
26d0: 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 0a  _MAX_EXPR_DEPTH.
26e0: 20 20 22 46 54 53 33 5f 4d 41 58 5f 45 58 50 52    "FTS3_MAX_EXPR
26f0: 5f 44 45 50 54 48 3d 22 20 43 54 49 4d 45 4f 50  _DEPTH=" CTIMEOP
2700: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 46 54 53  T_VAL(SQLITE_FTS
2710: 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48  3_MAX_EXPR_DEPTH
2720: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ),.#endif.#if SQ
2730: 4c 49 54 45 5f 46 54 53 35 5f 45 4e 41 42 4c 45  LITE_FTS5_ENABLE
2740: 5f 54 45 53 54 5f 4d 49 0a 20 20 22 46 54 53 35  _TEST_MI.  "FTS5
2750: 5f 45 4e 41 42 4c 45 5f 54 45 53 54 5f 4d 49 22  _ENABLE_TEST_MI"
2760: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2770: 49 54 45 5f 46 54 53 35 5f 4e 4f 5f 57 49 54 48  ITE_FTS5_NO_WITH
2780: 4f 55 54 5f 52 4f 57 49 44 0a 20 20 22 46 54 53  OUT_ROWID.  "FTS
2790: 35 5f 4e 4f 5f 57 49 54 48 4f 55 54 5f 52 4f 57  5_NO_WITHOUT_ROW
27a0: 49 44 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ID",.#endif.#if 
27b0: 53 51 4c 49 54 45 5f 48 41 53 5f 43 4f 44 45 43  SQLITE_HAS_CODEC
27c0: 0a 20 20 22 48 41 53 5f 43 4f 44 45 43 22 2c 0a  .  "HAS_CODEC",.
27d0: 23 65 6e 64 69 66 0a 23 69 66 20 48 41 56 45 5f  #endif.#if HAVE_
27e0: 49 53 4e 41 4e 20 7c 7c 20 53 51 4c 49 54 45 5f  ISNAN || SQLITE_
27f0: 48 41 56 45 5f 49 53 4e 41 4e 0a 20 20 22 48 41  HAVE_ISNAN.  "HA
2800: 56 45 5f 49 53 4e 41 4e 22 2c 0a 23 65 6e 64 69  VE_ISNAN",.#endi
2810: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 48 4f 4d  f.#if SQLITE_HOM
2820: 45 47 52 4f 57 4e 5f 52 45 43 55 52 53 49 56 45  EGROWN_RECURSIVE
2830: 5f 4d 55 54 45 58 0a 20 20 22 48 4f 4d 45 47 52  _MUTEX.  "HOMEGR
2840: 4f 57 4e 5f 52 45 43 55 52 53 49 56 45 5f 4d 55  OWN_RECURSIVE_MU
2850: 54 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  TEX",.#endif.#if
2860: 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5f 41   SQLITE_IGNORE_A
2870: 46 50 5f 4c 4f 43 4b 5f 45 52 52 4f 52 53 0a 20  FP_LOCK_ERRORS. 
2880: 20 22 49 47 4e 4f 52 45 5f 41 46 50 5f 4c 4f 43   "IGNORE_AFP_LOC
2890: 4b 5f 45 52 52 4f 52 53 22 2c 0a 23 65 6e 64 69  K_ERRORS",.#endi
28a0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 49 47 4e  f.#if SQLITE_IGN
28b0: 4f 52 45 5f 46 4c 4f 43 4b 5f 4c 4f 43 4b 5f 45  ORE_FLOCK_LOCK_E
28c0: 52 52 4f 52 53 0a 20 20 22 49 47 4e 4f 52 45 5f  RRORS.  "IGNORE_
28d0: 46 4c 4f 43 4b 5f 4c 4f 43 4b 5f 45 52 52 4f 52  FLOCK_LOCK_ERROR
28e0: 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  S",.#endif.#if S
28f0: 51 4c 49 54 45 5f 49 4e 4c 49 4e 45 5f 4d 45 4d  QLITE_INLINE_MEM
2900: 43 50 59 0a 20 20 22 49 4e 4c 49 4e 45 5f 4d 45  CPY.  "INLINE_ME
2910: 4d 43 50 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69  MCPY",.#endif.#i
2920: 66 20 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54  f SQLITE_INT64_T
2930: 59 50 45 0a 20 20 22 49 4e 54 36 34 5f 54 59 50  YPE.  "INT64_TYP
2940: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  E",.#endif.#ifde
2950: 66 20 53 51 4c 49 54 45 5f 49 4e 54 45 47 52 49  f SQLITE_INTEGRI
2960: 54 59 5f 43 48 45 43 4b 5f 45 52 52 4f 52 5f 4d  TY_CHECK_ERROR_M
2970: 41 58 0a 20 20 22 49 4e 54 45 47 52 49 54 59 5f  AX.  "INTEGRITY_
2980: 43 48 45 43 4b 5f 45 52 52 4f 52 5f 4d 41 58 3d  CHECK_ERROR_MAX=
2990: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
29a0: 51 4c 49 54 45 5f 49 4e 54 45 47 52 49 54 59 5f  QLITE_INTEGRITY_
29b0: 43 48 45 43 4b 5f 45 52 52 4f 52 5f 4d 41 58 29  CHECK_ERROR_MAX)
29c0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
29d0: 49 54 45 5f 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f  ITE_LIKE_DOESNT_
29e0: 4d 41 54 43 48 5f 42 4c 4f 42 53 0a 20 20 22 4c  MATCH_BLOBS.  "L
29f0: 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54 43 48  IKE_DOESNT_MATCH
2a00: 5f 42 4c 4f 42 53 22 2c 0a 23 65 6e 64 69 66 0a  _BLOBS",.#endif.
2a10: 23 69 66 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f  #if SQLITE_LOCK_
2a20: 54 52 41 43 45 0a 20 20 22 4c 4f 43 4b 5f 54 52  TRACE.  "LOCK_TR
2a30: 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ACE",.#endif.#if
2a40: 20 53 51 4c 49 54 45 5f 4c 4f 47 5f 43 41 43 48   SQLITE_LOG_CACH
2a50: 45 5f 53 50 49 4c 4c 0a 20 20 22 4c 4f 47 5f 43  E_SPILL.  "LOG_C
2a60: 41 43 48 45 5f 53 50 49 4c 4c 22 2c 0a 23 65 6e  ACHE_SPILL",.#en
2a70: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
2a80: 45 5f 4d 41 4c 4c 4f 43 5f 53 4f 46 54 5f 4c 49  E_MALLOC_SOFT_LI
2a90: 4d 49 54 0a 20 20 22 4d 41 4c 4c 4f 43 5f 53 4f  MIT.  "MALLOC_SO
2aa0: 46 54 5f 4c 49 4d 49 54 3d 22 20 43 54 49 4d 45  FT_LIMIT=" CTIME
2ab0: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
2ac0: 41 4c 4c 4f 43 5f 53 4f 46 54 5f 4c 49 4d 49 54  ALLOC_SOFT_LIMIT
2ad0: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
2ae0: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54 41   SQLITE_MAX_ATTA
2af0: 43 48 45 44 0a 20 20 22 4d 41 58 5f 41 54 54 41  CHED.  "MAX_ATTA
2b00: 43 48 45 44 3d 22 20 43 54 49 4d 45 4f 50 54 5f  CHED=" CTIMEOPT_
2b10: 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 41  VAL(SQLITE_MAX_A
2b20: 54 54 41 43 48 45 44 29 2c 0a 23 65 6e 64 69 66  TTACHED),.#endif
2b30: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d  .#ifdef SQLITE_M
2b40: 41 58 5f 43 4f 4c 55 4d 4e 0a 20 20 22 4d 41 58  AX_COLUMN.  "MAX
2b50: 5f 43 4f 4c 55 4d 4e 3d 22 20 43 54 49 4d 45 4f  _COLUMN=" CTIMEO
2b60: 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41  PT_VAL(SQLITE_MA
2b70: 58 5f 43 4f 4c 55 4d 4e 29 2c 0a 23 65 6e 64 69  X_COLUMN),.#endi
2b80: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
2b90: 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c  MAX_COMPOUND_SEL
2ba0: 45 43 54 0a 20 20 22 4d 41 58 5f 43 4f 4d 50 4f  ECT.  "MAX_COMPO
2bb0: 55 4e 44 5f 53 45 4c 45 43 54 3d 22 20 43 54 49  UND_SELECT=" CTI
2bc0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2bd0: 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  _MAX_COMPOUND_SE
2be0: 4c 45 43 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69  LECT),.#endif.#i
2bf0: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
2c00: 44 45 46 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a  DEFAULT_PAGE_SIZ
2c10: 45 0a 20 20 22 4d 41 58 5f 44 45 46 41 55 4c 54  E.  "MAX_DEFAULT
2c20: 5f 50 41 47 45 5f 53 49 5a 45 3d 22 20 43 54 49  _PAGE_SIZE=" CTI
2c30: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2c40: 5f 4d 41 58 5f 44 45 46 41 55 4c 54 5f 50 41 47  _MAX_DEFAULT_PAG
2c50: 45 5f 53 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a  E_SIZE),.#endif.
2c60: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41  #ifdef SQLITE_MA
2c70: 58 5f 45 58 50 52 5f 44 45 50 54 48 0a 20 20 22  X_EXPR_DEPTH.  "
2c80: 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d 22  MAX_EXPR_DEPTH="
2c90: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2ca0: 4c 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45  LITE_MAX_EXPR_DE
2cb0: 50 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  PTH),.#endif.#if
2cc0: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 46  def SQLITE_MAX_F
2cd0: 55 4e 43 54 49 4f 4e 5f 41 52 47 0a 20 20 22 4d  UNCTION_ARG.  "M
2ce0: 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 3d  AX_FUNCTION_ARG=
2cf0: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2d00: 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43 54 49  QLITE_MAX_FUNCTI
2d10: 4f 4e 5f 41 52 47 29 2c 0a 23 65 6e 64 69 66 0a  ON_ARG),.#endif.
2d20: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41  #ifdef SQLITE_MA
2d30: 58 5f 4c 45 4e 47 54 48 0a 20 20 22 4d 41 58 5f  X_LENGTH.  "MAX_
2d40: 4c 45 4e 47 54 48 3d 22 20 43 54 49 4d 45 4f 50  LENGTH=" CTIMEOP
2d50: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
2d60: 5f 4c 45 4e 47 54 48 29 2c 0a 23 65 6e 64 69 66  _LENGTH),.#endif
2d70: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d  .#ifdef SQLITE_M
2d80: 41 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f  AX_LIKE_PATTERN_
2d90: 4c 45 4e 47 54 48 0a 20 20 22 4d 41 58 5f 4c 49  LENGTH.  "MAX_LI
2da0: 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54  KE_PATTERN_LENGT
2db0: 48 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  H=" CTIMEOPT_VAL
2dc0: 28 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b 45  (SQLITE_MAX_LIKE
2dd0: 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 29  _PATTERN_LENGTH)
2de0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
2df0: 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52  SQLITE_MAX_MEMOR
2e00: 59 0a 20 20 22 4d 41 58 5f 4d 45 4d 4f 52 59 3d  Y.  "MAX_MEMORY=
2e10: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2e20: 51 4c 49 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52 59  QLITE_MAX_MEMORY
2e30: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
2e40: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50   SQLITE_MAX_MMAP
2e50: 5f 53 49 5a 45 0a 20 20 22 4d 41 58 5f 4d 4d 41  _SIZE.  "MAX_MMA
2e60: 50 5f 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50  P_SIZE=" CTIMEOP
2e70: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
2e80: 5f 4d 4d 41 50 5f 53 49 5a 45 29 2c 0a 23 65 6e  _MMAP_SIZE),.#en
2e90: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
2ea0: 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 5f  E_MAX_MMAP_SIZE_
2eb0: 0a 20 20 22 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a  .  "MAX_MMAP_SIZ
2ec0: 45 5f 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  E_=" CTIMEOPT_VA
2ed0: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41  L(SQLITE_MAX_MMA
2ee0: 50 5f 53 49 5a 45 5f 29 2c 0a 23 65 6e 64 69 66  P_SIZE_),.#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 50 41 47 45 5f 43 4f 55 4e 54 0a 20 20  AX_PAGE_COUNT.  
2f10: 22 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 3d  "MAX_PAGE_COUNT=
2f20: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2f30: 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43  QLITE_MAX_PAGE_C
2f40: 4f 55 4e 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69  OUNT),.#endif.#i
2f50: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
2f60: 50 41 47 45 5f 53 49 5a 45 0a 20 20 22 4d 41 58  PAGE_SIZE.  "MAX
2f70: 5f 50 41 47 45 5f 53 49 5a 45 3d 22 20 43 54 49  _PAGE_SIZE=" CTI
2f80: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2f90: 5f 4d 41 58 5f 50 41 47 45 5f 53 49 5a 45 29 2c  _MAX_PAGE_SIZE),
2fa0: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
2fb0: 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41  QLITE_MAX_SCHEMA
2fc0: 5f 52 45 54 52 59 0a 20 20 22 4d 41 58 5f 53 43  _RETRY.  "MAX_SC
2fd0: 48 45 4d 41 5f 52 45 54 52 59 3d 22 20 43 54 49  HEMA_RETRY=" CTI
2fe0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2ff0: 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52  _MAX_SCHEMA_RETR
3000: 59 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  Y),.#endif.#ifde
3010: 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51 4c  f SQLITE_MAX_SQL
3020: 5f 4c 45 4e 47 54 48 0a 20 20 22 4d 41 58 5f 53  _LENGTH.  "MAX_S
3030: 51 4c 5f 4c 45 4e 47 54 48 3d 22 20 43 54 49 4d  QL_LENGTH=" CTIM
3040: 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f  EOPT_VAL(SQLITE_
3050: 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 29 2c  MAX_SQL_LENGTH),
3060: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
3070: 51 4c 49 54 45 5f 4d 41 58 5f 54 52 49 47 47 45  QLITE_MAX_TRIGGE
3080: 52 5f 44 45 50 54 48 0a 20 20 22 4d 41 58 5f 54  R_DEPTH.  "MAX_T
3090: 52 49 47 47 45 52 5f 44 45 50 54 48 3d 22 20 43  RIGGER_DEPTH=" C
30a0: 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49  TIMEOPT_VAL(SQLI
30b0: 54 45 5f 4d 41 58 5f 54 52 49 47 47 45 52 5f 44  TE_MAX_TRIGGER_D
30c0: 45 50 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69  EPTH),.#endif.#i
30d0: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
30e0: 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 0a  VARIABLE_NUMBER.
30f0: 20 20 22 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f    "MAX_VARIABLE_
3100: 4e 55 4d 42 45 52 3d 22 20 43 54 49 4d 45 4f 50  NUMBER=" CTIMEOP
3110: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
3120: 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52  _VARIABLE_NUMBER
3130: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
3140: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 56 44 42 45   SQLITE_MAX_VDBE
3150: 5f 4f 50 0a 20 20 22 4d 41 58 5f 56 44 42 45 5f  _OP.  "MAX_VDBE_
3160: 4f 50 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  OP=" CTIMEOPT_VA
3170: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 56 44 42  L(SQLITE_MAX_VDB
3180: 45 5f 4f 50 29 2c 0a 23 65 6e 64 69 66 0a 23 69  E_OP),.#endif.#i
3190: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
31a0: 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 0a 20  WORKER_THREADS. 
31b0: 20 22 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52   "MAX_WORKER_THR
31c0: 45 41 44 53 3d 22 20 43 54 49 4d 45 4f 50 54 5f  EADS=" CTIMEOPT_
31d0: 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 57  VAL(SQLITE_MAX_W
31e0: 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 29 2c 0a  ORKER_THREADS),.
31f0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3200: 45 5f 4d 45 4d 44 45 42 55 47 0a 20 20 22 4d 45  E_MEMDEBUG.  "ME
3210: 4d 44 45 42 55 47 22 2c 0a 23 65 6e 64 69 66 0a  MDEBUG",.#endif.
3220: 23 69 66 20 53 51 4c 49 54 45 5f 4d 49 58 45 44  #if SQLITE_MIXED
3230: 5f 45 4e 44 49 41 4e 5f 36 34 42 49 54 5f 46 4c  _ENDIAN_64BIT_FL
3240: 4f 41 54 0a 20 20 22 4d 49 58 45 44 5f 45 4e 44  OAT.  "MIXED_END
3250: 49 41 4e 5f 36 34 42 49 54 5f 46 4c 4f 41 54 22  IAN_64BIT_FLOAT"
3260: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3270: 49 54 45 5f 4d 4d 41 50 5f 52 45 41 44 57 52 49  ITE_MMAP_READWRI
3280: 54 45 0a 20 20 22 4d 4d 41 50 5f 52 45 41 44 57  TE.  "MMAP_READW
3290: 52 49 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RITE",.#endif.#i
32a0: 66 20 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 4e  f SQLITE_MUTEX_N
32b0: 4f 4f 50 0a 20 20 22 4d 55 54 45 58 5f 4e 4f 4f  OOP.  "MUTEX_NOO
32c0: 50 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  P",.#endif.#if S
32d0: 51 4c 49 54 45 5f 4d 55 54 45 58 5f 4e 52 45 46  QLITE_MUTEX_NREF
32e0: 0a 20 20 22 4d 55 54 45 58 5f 4e 52 45 46 22 2c  .  "MUTEX_NREF",
32f0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3300: 54 45 5f 4d 55 54 45 58 5f 4f 4d 49 54 0a 20 20  TE_MUTEX_OMIT.  
3310: 22 4d 55 54 45 58 5f 4f 4d 49 54 22 2c 0a 23 65  "MUTEX_OMIT",.#e
3320: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3330: 4d 55 54 45 58 5f 50 54 48 52 45 41 44 53 0a 20  MUTEX_PTHREADS. 
3340: 20 22 4d 55 54 45 58 5f 50 54 48 52 45 41 44 53   "MUTEX_PTHREADS
3350: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3360: 4c 49 54 45 5f 4d 55 54 45 58 5f 57 33 32 0a 20  LITE_MUTEX_W32. 
3370: 20 22 4d 55 54 45 58 5f 57 33 32 22 2c 0a 23 65   "MUTEX_W32",.#e
3380: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3390: 4e 45 45 44 5f 45 52 52 5f 4e 41 4d 45 0a 20 20  NEED_ERR_NAME.  
33a0: 22 4e 45 45 44 5f 45 52 52 5f 4e 41 4d 45 22 2c  "NEED_ERR_NAME",
33b0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
33c0: 54 45 5f 4e 4f 49 4e 4c 49 4e 45 0a 20 20 22 4e  TE_NOINLINE.  "N
33d0: 4f 49 4e 4c 49 4e 45 22 2c 0a 23 65 6e 64 69 66  OINLINE",.#endif
33e0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4e 4f 5f 53  .#if SQLITE_NO_S
33f0: 59 4e 43 0a 20 20 22 4e 4f 5f 53 59 4e 43 22 2c  YNC.  "NO_SYNC",
3400: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3410: 54 45 5f 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42  TE_OMIT_ALTERTAB
3420: 4c 45 0a 20 20 22 4f 4d 49 54 5f 41 4c 54 45 52  LE.  "OMIT_ALTER
3430: 54 41 42 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23  TABLE",.#endif.#
3440: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  if SQLITE_OMIT_A
3450: 4e 41 4c 59 5a 45 0a 20 20 22 4f 4d 49 54 5f 41  NALYZE.  "OMIT_A
3460: 4e 41 4c 59 5a 45 22 2c 0a 23 65 6e 64 69 66 0a  NALYZE",.#endif.
3470: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3480: 41 54 54 41 43 48 0a 20 20 22 4f 4d 49 54 5f 41  ATTACH.  "OMIT_A
3490: 54 54 41 43 48 22 2c 0a 23 65 6e 64 69 66 0a 23  TTACH",.#endif.#
34a0: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41  if SQLITE_OMIT_A
34b0: 55 54 48 4f 52 49 5a 41 54 49 4f 4e 0a 20 20 22  UTHORIZATION.  "
34c0: 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49  OMIT_AUTHORIZATI
34d0: 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ON",.#endif.#if 
34e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
34f0: 49 4e 43 52 45 4d 45 4e 54 0a 20 20 22 4f 4d 49  INCREMENT.  "OMI
3500: 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 22  T_AUTOINCREMENT"
3510: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3520: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
3530: 54 0a 20 20 22 4f 4d 49 54 5f 41 55 54 4f 49 4e  T.  "OMIT_AUTOIN
3540: 49 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  IT",.#endif.#if 
3550: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f  SQLITE_OMIT_AUTO
3560: 4d 41 54 49 43 5f 49 4e 44 45 58 0a 20 20 22 4f  MATIC_INDEX.  "O
3570: 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49 4e  MIT_AUTOMATIC_IN
3580: 44 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  DEX",.#endif.#if
3590: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54   SQLITE_OMIT_AUT
35a0: 4f 52 45 53 45 54 0a 20 20 22 4f 4d 49 54 5f 41  ORESET.  "OMIT_A
35b0: 55 54 4f 52 45 53 45 54 22 2c 0a 23 65 6e 64 69  UTORESET",.#endi
35c0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
35d0: 54 5f 41 55 54 4f 56 41 43 55 55 4d 0a 20 20 22  T_AUTOVACUUM.  "
35e0: 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 22  OMIT_AUTOVACUUM"
35f0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3600: 49 54 45 5f 4f 4d 49 54 5f 42 45 54 57 45 45 4e  ITE_OMIT_BETWEEN
3610: 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 0a 20 20  _OPTIMIZATION.  
3620: 22 4f 4d 49 54 5f 42 45 54 57 45 45 4e 5f 4f 50  "OMIT_BETWEEN_OP
3630: 54 49 4d 49 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e  TIMIZATION",.#en
3640: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3650: 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52 41 4c  MIT_BLOB_LITERAL
3660: 0a 20 20 22 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49  .  "OMIT_BLOB_LI
3670: 54 45 52 41 4c 22 2c 0a 23 65 6e 64 69 66 0a 23  TERAL",.#endif.#
3680: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42  if SQLITE_OMIT_B
3690: 54 52 45 45 43 4f 55 4e 54 0a 20 20 22 4f 4d 49  TREECOUNT.  "OMI
36a0: 54 5f 42 54 52 45 45 43 4f 55 4e 54 22 2c 0a 23  T_BTREECOUNT",.#
36b0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
36c0: 5f 4f 4d 49 54 5f 43 41 53 54 0a 20 20 22 4f 4d  _OMIT_CAST.  "OM
36d0: 49 54 5f 43 41 53 54 22 2c 0a 23 65 6e 64 69 66  IT_CAST",.#endif
36e0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
36f0: 5f 43 48 45 43 4b 0a 20 20 22 4f 4d 49 54 5f 43  _CHECK.  "OMIT_C
3700: 48 45 43 4b 22 2c 0a 23 65 6e 64 69 66 0a 23 69  HECK",.#endif.#i
3710: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f  f SQLITE_OMIT_CO
3720: 4d 50 4c 45 54 45 0a 20 20 22 4f 4d 49 54 5f 43  MPLETE.  "OMIT_C
3730: 4f 4d 50 4c 45 54 45 22 2c 0a 23 65 6e 64 69 66  OMPLETE",.#endif
3740: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3750: 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54  _COMPOUND_SELECT
3760: 0a 20 20 22 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e  .  "OMIT_COMPOUN
3770: 44 5f 53 45 4c 45 43 54 22 2c 0a 23 65 6e 64 69  D_SELECT",.#endi
3780: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3790: 54 5f 43 4f 4e 46 4c 49 43 54 5f 43 4c 41 55 53  T_CONFLICT_CLAUS
37a0: 45 0a 20 20 22 4f 4d 49 54 5f 43 4f 4e 46 4c 49  E.  "OMIT_CONFLI
37b0: 43 54 5f 43 4c 41 55 53 45 22 2c 0a 23 65 6e 64  CT_CLAUSE",.#end
37c0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
37d0: 49 54 5f 43 54 45 0a 20 20 22 4f 4d 49 54 5f 43  IT_CTE.  "OMIT_C
37e0: 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  TE",.#endif.#if 
37f0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 41 54 45  SQLITE_OMIT_DATE
3800: 54 49 4d 45 5f 46 55 4e 43 53 0a 20 20 22 4f 4d  TIME_FUNCS.  "OM
3810: 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55 4e 43  IT_DATETIME_FUNC
3820: 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  S",.#endif.#if S
3830: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 43 4c 54  QLITE_OMIT_DECLT
3840: 59 50 45 0a 20 20 22 4f 4d 49 54 5f 44 45 43 4c  YPE.  "OMIT_DECL
3850: 54 59 50 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  TYPE",.#endif.#i
3860: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45  f SQLITE_OMIT_DE
3870: 50 52 45 43 41 54 45 44 0a 20 20 22 4f 4d 49 54  PRECATED.  "OMIT
3880: 5f 44 45 50 52 45 43 41 54 45 44 22 2c 0a 23 65  _DEPRECATED",.#e
3890: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
38a0: 4f 4d 49 54 5f 44 49 53 4b 49 4f 0a 20 20 22 4f  OMIT_DISKIO.  "O
38b0: 4d 49 54 5f 44 49 53 4b 49 4f 22 2c 0a 23 65 6e  MIT_DISKIO",.#en
38c0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
38d0: 4d 49 54 5f 45 58 50 4c 41 49 4e 0a 20 20 22 4f  MIT_EXPLAIN.  "O
38e0: 4d 49 54 5f 45 58 50 4c 41 49 4e 22 2c 0a 23 65  MIT_EXPLAIN",.#e
38f0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3900: 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41  OMIT_FLAG_PRAGMA
3910: 53 0a 20 20 22 4f 4d 49 54 5f 46 4c 41 47 5f 50  S.  "OMIT_FLAG_P
3920: 52 41 47 4d 41 53 22 2c 0a 23 65 6e 64 69 66 0a  RAGMAS",.#endif.
3930: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3940: 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 0a 20  FLOATING_POINT. 
3950: 20 22 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f   "OMIT_FLOATING_
3960: 50 4f 49 4e 54 22 2c 0a 23 65 6e 64 69 66 0a 23  POINT",.#endif.#
3970: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  if SQLITE_OMIT_F
3980: 4f 52 45 49 47 4e 5f 4b 45 59 0a 20 20 22 4f 4d  OREIGN_KEY.  "OM
3990: 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 22 2c  IT_FOREIGN_KEY",
39a0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
39b0: 54 45 5f 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c  TE_OMIT_GET_TABL
39c0: 45 0a 20 20 22 4f 4d 49 54 5f 47 45 54 5f 54 41  E.  "OMIT_GET_TA
39d0: 42 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  BLE",.#endif.#if
39e0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 48 45 58   SQLITE_OMIT_HEX
39f0: 5f 49 4e 54 45 47 45 52 0a 20 20 22 4f 4d 49 54  _INTEGER.  "OMIT
3a00: 5f 48 45 58 5f 49 4e 54 45 47 45 52 22 2c 0a 23  _HEX_INTEGER",.#
3a10: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3a20: 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 0a 20  _OMIT_INCRBLOB. 
3a30: 20 22 4f 4d 49 54 5f 49 4e 43 52 42 4c 4f 42 22   "OMIT_INCRBLOB"
3a40: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3a50: 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49  ITE_OMIT_INTEGRI
3a60: 54 59 5f 43 48 45 43 4b 0a 20 20 22 4f 4d 49 54  TY_CHECK.  "OMIT
3a70: 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43 4b  _INTEGRITY_CHECK
3a80: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3a90: 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f  LITE_OMIT_LIKE_O
3aa0: 50 54 49 4d 49 5a 41 54 49 4f 4e 0a 20 20 22 4f  PTIMIZATION.  "O
3ab0: 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a  MIT_LIKE_OPTIMIZ
3ac0: 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23  ATION",.#endif.#
3ad0: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  if SQLITE_OMIT_L
3ae0: 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 0a 20 20  OAD_EXTENSION.  
3af0: 22 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e  "OMIT_LOAD_EXTEN
3b00: 53 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69  SION",.#endif.#i
3b10: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f  f SQLITE_OMIT_LO
3b20: 43 41 4c 54 49 4d 45 0a 20 20 22 4f 4d 49 54 5f  CALTIME.  "OMIT_
3b30: 4c 4f 43 41 4c 54 49 4d 45 22 2c 0a 23 65 6e 64  LOCALTIME",.#end
3b40: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3b50: 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 0a 20 20 22  IT_LOOKASIDE.  "
3b60: 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45 22 2c  OMIT_LOOKASIDE",
3b70: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3b80: 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42  TE_OMIT_MEMORYDB
3b90: 0a 20 20 22 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44  .  "OMIT_MEMORYD
3ba0: 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  B",.#endif.#if S
3bb0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50  QLITE_OMIT_OR_OP
3bc0: 54 49 4d 49 5a 41 54 49 4f 4e 0a 20 20 22 4f 4d  TIMIZATION.  "OM
3bd0: 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54 49  IT_OR_OPTIMIZATI
3be0: 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ON",.#endif.#if 
3bf0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45  SQLITE_OMIT_PAGE
3c00: 52 5f 50 52 41 47 4d 41 53 0a 20 20 22 4f 4d 49  R_PRAGMAS.  "OMI
3c10: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 22  T_PAGER_PRAGMAS"
3c20: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3c30: 49 54 45 5f 4f 4d 49 54 5f 50 41 52 53 45 52 5f  ITE_OMIT_PARSER_
3c40: 54 52 41 43 45 0a 20 20 22 4f 4d 49 54 5f 50 41  TRACE.  "OMIT_PA
3c50: 52 53 45 52 5f 54 52 41 43 45 22 2c 0a 23 65 6e  RSER_TRACE",.#en
3c60: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3c70: 4d 49 54 5f 50 4f 50 45 4e 0a 20 20 22 4f 4d 49  MIT_POPEN.  "OMI
3c80: 54 5f 50 4f 50 45 4e 22 2c 0a 23 65 6e 64 69 66  T_POPEN",.#endif
3c90: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3ca0: 5f 50 52 41 47 4d 41 0a 20 20 22 4f 4d 49 54 5f  _PRAGMA.  "OMIT_
3cb0: 50 52 41 47 4d 41 22 2c 0a 23 65 6e 64 69 66 0a  PRAGMA",.#endif.
3cc0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3cd0: 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43  PROGRESS_CALLBAC
3ce0: 4b 0a 20 20 22 4f 4d 49 54 5f 50 52 4f 47 52 45  K.  "OMIT_PROGRE
3cf0: 53 53 5f 43 41 4c 4c 42 41 43 4b 22 2c 0a 23 65  SS_CALLBACK",.#e
3d00: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3d10: 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43  OMIT_QUICKBALANC
3d20: 45 0a 20 20 22 4f 4d 49 54 5f 51 55 49 43 4b 42  E.  "OMIT_QUICKB
3d30: 41 4c 41 4e 43 45 22 2c 0a 23 65 6e 64 69 66 0a  ALANCE",.#endif.
3d40: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3d50: 52 45 49 4e 44 45 58 0a 20 20 22 4f 4d 49 54 5f  REINDEX.  "OMIT_
3d60: 52 45 49 4e 44 45 58 22 2c 0a 23 65 6e 64 69 66  REINDEX",.#endif
3d70: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3d80: 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 0a  _SCHEMA_PRAGMAS.
3d90: 20 20 22 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50    "OMIT_SCHEMA_P
3da0: 52 41 47 4d 41 53 22 2c 0a 23 65 6e 64 69 66 0a  RAGMAS",.#endif.
3db0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3dc0: 53 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50  SCHEMA_VERSION_P
3dd0: 52 41 47 4d 41 53 0a 20 20 22 4f 4d 49 54 5f 53  RAGMAS.  "OMIT_S
3de0: 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52  CHEMA_VERSION_PR
3df0: 41 47 4d 41 53 22 2c 0a 23 65 6e 64 69 66 0a 23  AGMAS",.#endif.#
3e00: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  if SQLITE_OMIT_S
3e10: 48 41 52 45 44 5f 43 41 43 48 45 0a 20 20 22 4f  HARED_CACHE.  "O
3e20: 4d 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45  MIT_SHARED_CACHE
3e30: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3e40: 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 55 54 44 4f  LITE_OMIT_SHUTDO
3e50: 57 4e 5f 44 49 52 45 43 54 4f 52 49 45 53 0a 20  WN_DIRECTORIES. 
3e60: 20 22 4f 4d 49 54 5f 53 48 55 54 44 4f 57 4e 5f   "OMIT_SHUTDOWN_
3e70: 44 49 52 45 43 54 4f 52 49 45 53 22 2c 0a 23 65  DIRECTORIES",.#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 53 55 42 51 55 45 52 59 0a 20 20  OMIT_SUBQUERY.  
3ea0: 22 4f 4d 49 54 5f 53 55 42 51 55 45 52 59 22 2c  "OMIT_SUBQUERY",
3eb0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3ec0: 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49  TE_OMIT_TCL_VARI
3ed0: 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f 54 43 4c  ABLE.  "OMIT_TCL
3ee0: 5f 56 41 52 49 41 42 4c 45 22 2c 0a 23 65 6e 64  _VARIABLE",.#end
3ef0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3f00: 49 54 5f 54 45 4d 50 44 42 0a 20 20 22 4f 4d 49  IT_TEMPDB.  "OMI
3f10: 54 5f 54 45 4d 50 44 42 22 2c 0a 23 65 6e 64 69  T_TEMPDB",.#endi
3f20: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3f30: 54 5f 54 45 53 54 5f 43 4f 4e 54 52 4f 4c 0a 20  T_TEST_CONTROL. 
3f40: 20 22 4f 4d 49 54 5f 54 45 53 54 5f 43 4f 4e 54   "OMIT_TEST_CONT
3f50: 52 4f 4c 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ROL",.#endif.#if
3f60: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41   SQLITE_OMIT_TRA
3f70: 43 45 0a 20 20 22 4f 4d 49 54 5f 54 52 41 43 45  CE.  "OMIT_TRACE
3f80: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3f90: 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49 47 47 45  LITE_OMIT_TRIGGE
3fa0: 52 0a 20 20 22 4f 4d 49 54 5f 54 52 49 47 47 45  R.  "OMIT_TRIGGE
3fb0: 52 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  R",.#endif.#if S
3fc0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 55 4e 43  QLITE_OMIT_TRUNC
3fd0: 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e  ATE_OPTIMIZATION
3fe0: 0a 20 20 22 4f 4d 49 54 5f 54 52 55 4e 43 41 54  .  "OMIT_TRUNCAT
3ff0: 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 22 2c  E_OPTIMIZATION",
4000: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4010: 54 45 5f 4f 4d 49 54 5f 55 54 46 31 36 0a 20 20  TE_OMIT_UTF16.  
4020: 22 4f 4d 49 54 5f 55 54 46 31 36 22 2c 0a 23 65  "OMIT_UTF16",.#e
4030: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
4040: 4f 4d 49 54 5f 56 41 43 55 55 4d 0a 20 20 22 4f  OMIT_VACUUM.  "O
4050: 4d 49 54 5f 56 41 43 55 55 4d 22 2c 0a 23 65 6e  MIT_VACUUM",.#en
4060: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
4070: 4d 49 54 5f 56 49 45 57 0a 20 20 22 4f 4d 49 54  MIT_VIEW.  "OMIT
4080: 5f 56 49 45 57 22 2c 0a 23 65 6e 64 69 66 0a 23  _VIEW",.#endif.#
4090: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56  if SQLITE_OMIT_V
40a0: 49 52 54 55 41 4c 54 41 42 4c 45 0a 20 20 22 4f  IRTUALTABLE.  "O
40b0: 4d 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45  MIT_VIRTUALTABLE
40c0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
40d0: 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c 0a 20 20  LITE_OMIT_WAL.  
40e0: 22 4f 4d 49 54 5f 57 41 4c 22 2c 0a 23 65 6e 64  "OMIT_WAL",.#end
40f0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
4100: 49 54 5f 57 53 44 0a 20 20 22 4f 4d 49 54 5f 57  IT_WSD.  "OMIT_W
4110: 53 44 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  SD",.#endif.#if 
4120: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 58 46 45 52  SQLITE_OMIT_XFER
4130: 5f 4f 50 54 0a 20 20 22 4f 4d 49 54 5f 58 46 45  _OPT.  "OMIT_XFE
4140: 52 5f 4f 50 54 22 2c 0a 23 65 6e 64 69 66 0a 23  R_OPT",.#endif.#
4150: 69 66 20 53 51 4c 49 54 45 5f 50 43 41 43 48 45  if SQLITE_PCACHE
4160: 5f 53 45 50 41 52 41 54 45 5f 48 45 41 44 45 52  _SEPARATE_HEADER
4170: 0a 20 20 22 50 43 41 43 48 45 5f 53 45 50 41 52  .  "PCACHE_SEPAR
4180: 41 54 45 5f 48 45 41 44 45 52 22 2c 0a 23 65 6e  ATE_HEADER",.#en
4190: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50  dif.#if SQLITE_P
41a0: 45 52 46 4f 52 4d 41 4e 43 45 5f 54 52 41 43 45  ERFORMANCE_TRACE
41b0: 0a 20 20 22 50 45 52 46 4f 52 4d 41 4e 43 45 5f  .  "PERFORMANCE_
41c0: 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23  TRACE",.#endif.#
41d0: 69 66 20 53 51 4c 49 54 45 5f 50 4f 57 45 52 53  if SQLITE_POWERS
41e0: 41 46 45 5f 4f 56 45 52 57 52 49 54 45 0a 20 20  AFE_OVERWRITE.  
41f0: 22 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  "POWERSAFE_OVERW
4200: 52 49 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RITE",.#endif.#i
4210: 66 20 53 51 4c 49 54 45 5f 50 52 45 46 45 52 5f  f SQLITE_PREFER_
4220: 50 52 4f 58 59 5f 4c 4f 43 4b 49 4e 47 0a 20 20  PROXY_LOCKING.  
4230: 22 50 52 45 46 45 52 5f 50 52 4f 58 59 5f 4c 4f  "PREFER_PROXY_LO
4240: 43 4b 49 4e 47 22 2c 0a 23 65 6e 64 69 66 0a 23  CKING",.#endif.#
4250: 69 66 20 53 51 4c 49 54 45 5f 50 52 4f 58 59 5f  if SQLITE_PROXY_
4260: 44 45 42 55 47 0a 20 20 22 50 52 4f 58 59 5f 44  DEBUG.  "PROXY_D
4270: 45 42 55 47 22 2c 0a 23 65 6e 64 69 66 0a 23 69  EBUG",.#endif.#i
4280: 66 20 53 51 4c 49 54 45 5f 52 45 56 45 52 53 45  f SQLITE_REVERSE
4290: 5f 55 4e 4f 52 44 45 52 45 44 5f 53 45 4c 45 43  _UNORDERED_SELEC
42a0: 54 53 0a 20 20 22 52 45 56 45 52 53 45 5f 55 4e  TS.  "REVERSE_UN
42b0: 4f 52 44 45 52 45 44 5f 53 45 4c 45 43 54 53 22  ORDERED_SELECTS"
42c0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
42d0: 49 54 45 5f 52 54 52 45 45 5f 49 4e 54 5f 4f 4e  ITE_RTREE_INT_ON
42e0: 4c 59 0a 20 20 22 52 54 52 45 45 5f 49 4e 54 5f  LY.  "RTREE_INT_
42f0: 4f 4e 4c 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ONLY",.#endif.#i
4300: 66 20 53 51 4c 49 54 45 5f 53 45 43 55 52 45 5f  f SQLITE_SECURE_
4310: 44 45 4c 45 54 45 0a 20 20 22 53 45 43 55 52 45  DELETE.  "SECURE
4320: 5f 44 45 4c 45 54 45 22 2c 0a 23 65 6e 64 69 66  _DELETE",.#endif
4330: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 4d 41 4c  .#if SQLITE_SMAL
4340: 4c 5f 53 54 41 43 4b 0a 20 20 22 53 4d 41 4c 4c  L_STACK.  "SMALL
4350: 5f 53 54 41 43 4b 22 2c 0a 23 65 6e 64 69 66 0a  _STACK",.#endif.
4360: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 53 4f  #ifdef SQLITE_SO
4370: 52 54 45 52 5f 50 4d 41 53 5a 0a 20 20 22 53 4f  RTER_PMASZ.  "SO
4380: 52 54 45 52 5f 50 4d 41 53 5a 3d 22 20 43 54 49  RTER_PMASZ=" CTI
4390: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
43a0: 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 29 2c 0a  _SORTER_PMASZ),.
43b0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
43c0: 45 5f 53 4f 55 4e 44 45 58 0a 20 20 22 53 4f 55  E_SOUNDEX.  "SOU
43d0: 4e 44 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23 69  NDEX",.#endif.#i
43e0: 66 64 65 66 20 53 51 4c 49 54 45 5f 53 54 41 54  fdef SQLITE_STAT
43f0: 34 5f 53 41 4d 50 4c 45 53 0a 20 20 22 53 54 41  4_SAMPLES.  "STA
4400: 54 34 5f 53 41 4d 50 4c 45 53 3d 22 20 43 54 49  T4_SAMPLES=" CTI
4410: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
4420: 5f 53 54 41 54 34 5f 53 41 4d 50 4c 45 53 29 2c  _STAT4_SAMPLES),
4430: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
4440: 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53  QLITE_STMTJRNL_S
4450: 50 49 4c 4c 0a 20 20 22 53 54 4d 54 4a 52 4e 4c  PILL.  "STMTJRNL
4460: 5f 53 50 49 4c 4c 3d 22 20 43 54 49 4d 45 4f 50  _SPILL=" CTIMEOP
4470: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 53 54 4d  T_VAL(SQLITE_STM
4480: 54 4a 52 4e 4c 5f 53 50 49 4c 4c 29 2c 0a 23 65  TJRNL_SPILL),.#e
4490: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
44a0: 53 55 42 53 54 52 5f 43 4f 4d 50 41 54 49 42 49  SUBSTR_COMPATIBI
44b0: 4c 49 54 59 0a 20 20 22 53 55 42 53 54 52 5f 43  LITY.  "SUBSTR_C
44c0: 4f 4d 50 41 54 49 42 49 4c 49 54 59 22 2c 0a 23  OMPATIBILITY",.#
44d0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
44e0: 5f 53 59 53 54 45 4d 5f 4d 41 4c 4c 4f 43 0a 20  _SYSTEM_MALLOC. 
44f0: 20 22 53 59 53 54 45 4d 5f 4d 41 4c 4c 4f 43 22   "SYSTEM_MALLOC"
4500: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4510: 49 54 45 5f 54 43 4c 0a 20 20 22 54 43 4c 22 2c  ITE_TCL.  "TCL",
4520: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
4530: 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45  QLITE_TEMP_STORE
4540: 0a 20 20 22 54 45 4d 50 5f 53 54 4f 52 45 3d 22  .  "TEMP_STORE="
4550: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
4560: 4c 49 54 45 5f 54 45 4d 50 5f 53 54 4f 52 45 29  LITE_TEMP_STORE)
4570: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4580: 49 54 45 5f 54 45 53 54 0a 20 20 22 54 45 53 54  ITE_TEST.  "TEST
4590: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65  ",.#endif.#if de
45a0: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 54 48 52  fined(SQLITE_THR
45b0: 45 41 44 53 41 46 45 29 0a 20 20 22 54 48 52 45  EADSAFE).  "THRE
45c0: 41 44 53 41 46 45 3d 22 20 43 54 49 4d 45 4f 50  ADSAFE=" CTIMEOP
45d0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 54 48 52  T_VAL(SQLITE_THR
45e0: 45 41 44 53 41 46 45 29 2c 0a 23 65 6c 69 66 20  EADSAFE),.#elif 
45f0: 64 65 66 69 6e 65 64 28 54 48 52 45 41 44 53 41  defined(THREADSA
4600: 46 45 29 0a 20 20 22 54 48 52 45 41 44 53 41 46  FE).  "THREADSAF
4610: 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  E=" CTIMEOPT_VAL
4620: 28 54 48 52 45 41 44 53 41 46 45 29 2c 0a 23 65  (THREADSAFE),.#e
4630: 6c 73 65 0a 20 20 22 54 48 52 45 41 44 53 41 46  lse.  "THREADSAF
4640: 45 3d 31 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  E=1",.#endif.#if
4650: 20 53 51 4c 49 54 45 5f 55 4e 4c 49 4e 4b 5f 41   SQLITE_UNLINK_A
4660: 46 54 45 52 5f 43 4c 4f 53 45 0a 20 20 22 55 4e  FTER_CLOSE.  "UN
4670: 4c 49 4e 4b 5f 41 46 54 45 52 5f 43 4c 4f 53 45  LINK_AFTER_CLOSE
4680: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4690: 4c 49 54 45 5f 55 4e 54 45 53 54 41 42 4c 45 0a  LITE_UNTESTABLE.
46a0: 20 20 22 55 4e 54 45 53 54 41 42 4c 45 22 2c 0a    "UNTESTABLE",.
46b0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
46c0: 45 5f 55 53 45 52 5f 41 55 54 48 45 4e 54 49 43  E_USER_AUTHENTIC
46d0: 41 54 49 4f 4e 0a 20 20 22 55 53 45 52 5f 41 55  ATION.  "USER_AU
46e0: 54 48 45 4e 54 49 43 41 54 49 4f 4e 22 2c 0a 23  THENTICATION",.#
46f0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
4700: 5f 55 53 45 5f 41 4c 4c 4f 43 41 0a 20 20 22 55  _USE_ALLOCA.  "U
4710: 53 45 5f 41 4c 4c 4f 43 41 22 2c 0a 23 65 6e 64  SE_ALLOCA",.#end
4720: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 55 53  if.#if SQLITE_US
4730: 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 0a 20 20  E_FCNTL_TRACE.  
4740: 22 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45  "USE_FCNTL_TRACE
4750: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4760: 4c 49 54 45 5f 55 53 45 5f 55 52 49 0a 20 20 22  LITE_USE_URI.  "
4770: 55 53 45 5f 55 52 49 22 2c 0a 23 65 6e 64 69 66  USE_URI",.#endif
4780: 0a 23 69 66 20 53 51 4c 49 54 45 5f 56 44 42 45  .#if SQLITE_VDBE
4790: 5f 43 4f 56 45 52 41 47 45 0a 20 20 22 56 44 42  _COVERAGE.  "VDB
47a0: 45 5f 43 4f 56 45 52 41 47 45 22 2c 0a 23 65 6e  E_COVERAGE",.#en
47b0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 57  dif.#if SQLITE_W
47c0: 49 4e 33 32 5f 4d 41 4c 4c 4f 43 0a 20 20 22 57  IN32_MALLOC.  "W
47d0: 49 4e 33 32 5f 4d 41 4c 4c 4f 43 22 2c 0a 23 65  IN32_MALLOC",.#e
47e0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
47f0: 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 0a 20 20 22 5a  ZERO_MALLOC.  "Z
4800: 45 52 4f 5f 4d 41 4c 4c 4f 43 22 2c 0a 23 65 6e  ERO_MALLOC",.#en
4810: 64 69 66 0a 2f 2a 20 0a 2a 2a 20 45 4e 44 20 43  dif./* .** END C
4820: 4f 44 45 20 47 45 4e 45 52 41 54 45 44 20 42 59  ODE GENERATED BY
4830: 20 74 6f 6f 6c 2f 6d 6b 63 74 69 6d 65 2e 74 63   tool/mkctime.tc
4840: 6c 20 0a 2a 2f 0a 7d 3b 0a 0a 53 51 4c 49 54 45  l .*/.};..SQLITE
4850: 5f 50 52 49 56 41 54 45 20 63 6f 6e 73 74 20 63  _PRIVATE const c
4860: 68 61 72 20 2a 2a 73 71 6c 69 74 65 33 43 6f 6d  har **sqlite3Com
4870: 70 69 6c 65 4f 70 74 69 6f 6e 73 28 69 6e 74 20  pileOptions(int 
4880: 2a 70 6e 4f 70 74 29 7b 0a 20 20 2a 70 6e 4f 70  *pnOpt){.  *pnOp
4890: 74 20 3d 20 73 69 7a 65 6f 66 28 73 71 6c 69 74  t = sizeof(sqlit
48a0: 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70 74 29 20  e3azCompileOpt) 
48b0: 2f 20 73 69 7a 65 6f 66 28 73 71 6c 69 74 65 33  / sizeof(sqlite3
48c0: 61 7a 43 6f 6d 70 69 6c 65 4f 70 74 5b 30 5d 29  azCompileOpt[0])
48d0: 3b 0a 20 20 72 65 74 75 72 6e 20 28 63 6f 6e 73  ;.  return (cons
48e0: 74 20 63 68 61 72 2a 2a 29 73 71 6c 69 74 65 33  t char**)sqlite3
48f0: 61 7a 43 6f 6d 70 69 6c 65 4f 70 74 3b 0a 7d 0a  azCompileOpt;.}.
4900: 0a 23 65 6e 64 69 66 20 2f 2a 20 53 51 4c 49 54  .#endif /* SQLIT
4910: 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50  E_OMIT_COMPILEOP
4920: 54 49 4f 4e 5f 44 49 41 47 53 20 2a 2f 0a 0a 2f  TION_DIAGS */../
4930: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 45  ************** E
4940: 6e 64 20 6f 66 20 63 74 69 6d 65 2e 63 20 2a 2a  nd of ctime.c **
4950: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4960: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4970: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f  *************/./
4980: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42  ************** B
4990: 65 67 69 6e 20 66 69 6c 65 20 73 71 6c 69 74 65  egin file sqlite
49a0: 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  Int.h **********
49b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
49c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f  *************/./
49d0: 2a 0a 2a 2a 20 32 30 30 31 20 53 65 70 74 65 6d  *.** 2001 Septem
49e0: 62 65 72 20 31 35 0a 2a 2a 0a 2a 2a 20 54 68 65  ber 15.**.** The
49f0: 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d   author disclaim
4a00: 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74  s copyright to t
4a10: 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e  his source code.
4a20: 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a    In place of.**
4a30: 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c   a legal notice,
4a40: 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73 73   here is a bless
4a50: 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61  ing:.**.**    Ma
4a60: 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e  y you do good an
4a70: 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20  d not evil..**  
4a80: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
4a90: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
4aa0: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
4ab0: 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20  ive others..**  
4ac0: 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20    May you share 
4ad0: 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61  freely, never ta
4ae0: 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79  king more than y
4af0: 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a  ou give..**.****
4b00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b10: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b40: 2a 2a 2a 2a 2a 0a 2a 2a 20 49 6e 74 65 72 6e 61  *****.** Interna
4b50: 6c 20 69 6e 74 65 72 66 61 63 65 20 64 65 66 69  l interface defi
4b60: 6e 69 74 69 6f 6e 73 20 66 6f 72 20 53 51 4c 69  nitions for SQLi
4b70: 74 65 2e 0a 2a 2a 0a 2a 2f 0a 23 69 66 6e 64 65  te..**.*/.#ifnde
4b80: 66 20 53 51 4c 49 54 45 49 4e 54 5f 48 0a 23 64  f SQLITEINT_H.#d
4b90: 65 66 69 6e 65 20 53 51 4c 49 54 45 49 4e 54 5f  efine SQLITEINT_
4ba0: 48 0a 0a 2f 2a 20 53 70 65 63 69 61 6c 20 43 6f  H../* Special Co
4bb0: 6d 6d 65 6e 74 73 3a 0a 2a 2a 0a 2a 2a 20 53 6f  mments:.**.** So
4bc0: 6d 65 20 63 6f 6d 6d 65 6e 74 73 20 68 61 76 65  me comments have
4bd0: 20 73 70 65 63 69 61 6c 20 6d 65 61 6e 69 6e 67   special meaning
4be0: 20 74 6f 20 74 68 65 20 74 6f 6f 6c 73 20 74 68   to the tools th
4bf0: 61 74 20 6d 65 61 73 75 72 65 20 74 65 73 74 0a  at measure test.
4c00: 2a 2a 20 63 6f 76 65 72 61 67 65 3a 0a 2a 2a 0a  ** coverage:.**.
4c10: 2a 2a 20 20 20 20 4e 4f 5f 54 45 53 54 20 20 20  **    NO_TEST   
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c30: 20 20 2d 20 54 68 65 20 62 72 61 6e 63 68 65 73    - The branches
4c40: 20 6f 6e 20 74 68 69 73 20 6c 69 6e 65 20 61 72   on this line ar
4c50: 65 20 6e 6f 74 0a 2a 2a 20 20 20 20 20 20 20 20  e not.**        
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c70: 20 20 20 20 20 20 20 20 20 20 6d 65 61 73 75 72            measur
4c80: 65 64 20 62 79 20 62 72 61 6e 63 68 20 63 6f 76  ed by branch cov
4c90: 65 72 61 67 65 2e 20 20 54 68 69 73 20 69 73 0a  erage.  This is.
4ca0: 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  **              
4cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4cc0: 20 20 20 20 75 73 65 64 20 6f 6e 20 6c 69 6e 65      used on line
4cd0: 73 20 6f 66 20 63 6f 64 65 20 74 68 61 74 20 61  s of code that a
4ce0: 63 74 75 61 6c 6c 79 0a 2a 2a 20 20 20 20 20 20  ctually.**      
4cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d00: 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 70 6c              impl
4d10: 65 6d 65 6e 74 20 70 61 72 74 73 20 6f 66 20 63  ement parts of c
4d20: 6f 76 65 72 61 67 65 20 74 65 73 74 69 6e 67 2e  overage testing.
4d30: 0a 2a 2a 0a 2a 2a 20 20 20 20 4f 50 54 49 4d 49  .**.**    OPTIMI
4d40: 5a 41 54 49 4f 4e 2d 49 46 2d 54 52 55 45 20 20  ZATION-IF-TRUE  
4d50: 20 20 20 20 20 20 2d 20 54 68 69 73 20 62 72 61        - This bra
4d60: 6e 63 68 20 69 73 20 61 6c 6c 6f 77 65 64 20 74  nch is allowed t
4d70: 6f 20 61 6c 77 61 79 20 62 65 20 66 61 6c 73 65  o alway be false
4d80: 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  .**             
4d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4da0: 20 20 20 20 20 61 6e 64 20 74 68 65 20 63 6f 72       and the cor
4db0: 72 65 63 74 20 61 6e 73 77 65 72 20 69 73 20 73  rect answer is s
4dc0: 74 69 6c 6c 20 6f 62 74 61 69 6e 65 64 2c 0a 2a  till obtained,.*
4dd0: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
4de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4df0: 20 20 20 74 68 6f 75 67 68 20 70 65 72 68 61 70     though perhap
4e00: 73 20 6d 6f 72 65 20 73 6c 6f 77 6c 79 2e 0a 2a  s more slowly..*
4e10: 2a 0a 2a 2a 20 20 20 20 4f 50 54 49 4d 49 5a 41  *.**    OPTIMIZA
4e20: 54 49 4f 4e 2d 49 46 2d 46 41 4c 53 45 20 20 20  TION-IF-FALSE   
4e30: 20 20 20 20 2d 20 54 68 69 73 20 62 72 61 6e 63      - This branc
4e40: 68 20 69 73 20 61 6c 6c 6f 77 65 64 20 74 6f 20  h is allowed to 
4e50: 61 6c 77 61 79 20 62 65 20 74 72 75 65 0a 2a 2a  alway be true.**
4e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e80: 20 20 61 6e 64 20 74 68 65 20 63 6f 72 72 65 63    and the correc
4e90: 74 20 61 6e 73 77 65 72 20 69 73 20 73 74 69 6c  t answer is stil
4ea0: 6c 20 6f 62 74 61 69 6e 65 64 2c 0a 2a 2a 20 20  l obtained,.**  
4eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ed0: 74 68 6f 75 67 68 20 70 65 72 68 61 70 73 20 6d  though perhaps m
4ee0: 6f 72 65 20 73 6c 6f 77 6c 79 2e 0a 2a 2a 0a 2a  ore slowly..**.*
4ef0: 2a 20 20 20 20 50 52 45 56 45 4e 54 53 2d 48 41  *    PREVENTS-HA
4f00: 52 4d 4c 45 53 53 2d 4f 56 45 52 52 45 41 44 20  RMLESS-OVERREAD 
4f10: 20 2d 20 54 68 69 73 20 62 72 61 6e 63 68 20 70   - This branch p
4f20: 72 65 76 65 6e 74 73 20 61 20 62 75 66 66 65 72  revents a buffer
4f30: 20 6f 76 65 72 72 65 61 64 0a 2a 2a 20 20 20 20   overread.**    
4f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
4f60: 61 74 20 77 6f 75 6c 64 20 62 65 20 68 61 72 6d  at would be harm
4f70: 6c 65 73 73 20 61 6e 64 20 75 6e 64 65 74 65 63  less and undetec
4f80: 74 61 62 6c 65 0a 2a 2a 20 20 20 20 20 20 20 20  table.**        
4f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4fa0: 20 20 20 20 20 20 20 20 20 20 69 66 20 69 74 20            if it 
4fb0: 64 69 64 20 6f 63 63 75 72 2e 20 20 0a 2a 2a 0a  did occur.  .**.
4fc0: 2a 2a 20 49 6e 20 61 6c 6c 20 63 61 73 65 73 2c  ** In all cases,
4fd0: 20 74 68 65 20 73 70 65 63 69 61 6c 20 63 6f 6d   the special com
4fe0: 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 65 6e 63  ment must be enc
4ff0: 6c 6f 73 65 64 20 69 6e 20 74 68 65 20 75 73 75  losed in the usu
5000: 61 6c 0a 2a 2a 20 73 6c 61 73 68 2d 61 73 74 65  al.** slash-aste
5010: 72 69 73 6b 2e 2e 2e 61 73 74 65 72 69 73 6b 2d  risk...asterisk-
5020: 73 6c 61 73 68 20 63 6f 6d 6d 65 6e 74 20 6d 61  slash comment ma
5030: 72 6b 73 2c 20 77 69 74 68 20 6e 6f 20 73 70 61  rks, with no spa
5040: 63 65 73 20 62 65 74 77 65 65 6e 20 74 68 65 20  ces between the 
5050: 0a 2a 2a 20 61 73 74 65 72 69 73 6b 73 20 61 6e  .** asterisks an
5060: 64 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 74 65  d the comment te
5070: 78 74 2e 0a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 4d 61  xt..*/../*.** Ma
5080: 6b 65 20 73 75 72 65 20 74 68 65 20 54 63 6c 20  ke sure the Tcl 
5090: 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69  calling conventi
50a0: 6f 6e 20 6d 61 63 72 6f 20 69 73 20 64 65 66 69  on macro is defi
50b0: 6e 65 64 2e 20 20 54 68 69 73 20 6d 61 63 72 6f  ned.  This macro
50c0: 20 69 73 0a 2a 2a 20 6f 6e 6c 79 20 75 73 65 64   is.** only used
50d0: 20 62 79 20 74 65 73 74 20 63 6f 64 65 20 61 6e   by test code an
50e0: 64 20 54 63 6c 20 69 6e 74 65 67 72 61 74 69 6f  d Tcl integratio
50f0: 6e 20 63 6f 64 65 2e 0a 2a 2f 0a 23 69 66 6e 64  n code..*/.#ifnd
5100: 65 66 20 53 51 4c 49 54 45 5f 54 43 4c 41 50 49  ef SQLITE_TCLAPI
5110: 0a 23 20 20 64 65 66 69 6e 65 20 53 51 4c 49 54  .#  define SQLIT
5120: 45 5f 54 43 4c 41 50 49 0a 23 65 6e 64 69 66 0a  E_TCLAPI.#endif.
5130: 0a 2f 2a 0a 2a 2a 20 49 6e 63 6c 75 64 65 20 74  ./*.** Include t
5140: 68 65 20 68 65 61 64 65 72 20 66 69 6c 65 20 75  he header file u
5150: 73 65 64 20 74 6f 20 63 75 73 74 6f 6d 69 7a 65  sed to customize
5160: 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 6f 70   the compiler op
5170: 74 69 6f 6e 73 20 66 6f 72 20 4d 53 56 43 2e 0a  tions for MSVC..
5180: 2a 2a 20 54 68 69 73 20 73 68 6f 75 6c 64 20 62  ** This should b
5190: 65 20 64 6f 6e 65 20 66 69 72 73 74 20 73 6f 20  e done first so 
51a0: 74 68 61 74 20 69 74 20 63 61 6e 20 73 75 63 63  that it can succ
51b0: 65 73 73 66 75 6c 6c 79 20 70 72 65 76 65 6e 74  essfully prevent
51c0: 20 73 70 75 72 69 6f 75 73 0a 2a 2a 20 63 6f 6d   spurious.** com
51d0: 70 69 6c 65 72 20 77 61 72 6e 69 6e 67 73 20 64  piler warnings d
51e0: 75 65 20 74 6f 20 73 75 62 73 65 71 75 65 6e 74  ue to subsequent
51f0: 20 63 6f 6e 74 65 6e 74 20 69 6e 20 74 68 69 73   content in this
5200: 20 66 69 6c 65 20 61 6e 64 20 6f 74 68 65 72 20   file and other 
5210: 66 69 6c 65 73 0a 2a 2a 20 74 68 61 74 20 61 72  files.** that ar
5220: 65 20 69 6e 63 6c 75 64 65 64 20 62 79 20 74 68  e included by th
5230: 69 73 20 66 69 6c 65 2e 0a 2a 2f 0a 2f 2a 2a 2a  is file..*/./***
5240: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 49 6e 63 6c  *********** Incl
5250: 75 64 65 20 6d 73 76 63 2e 68 20 69 6e 20 74 68  ude msvc.h in th
5260: 65 20 6d 69 64 64 6c 65 20 6f 66 20 73 71 6c 69  e middle of sqli
5270: 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a  teInt.h ********
5280: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a  **********/./***
5290: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69  *********** Begi
52a0: 6e 20 66 69 6c 65 20 6d 73 76 63 2e 68 20 2a 2a  n file msvc.h **
52b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
52c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
52d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a  **********/./*.*
52e0: 2a 20 32 30 31 35 20 4a 61 6e 75 61 72 79 20 31  * 2015 January 1
52f0: 32 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68  2.**.** The auth
5300: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
5310: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
5320: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
5330: 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65  place of.** a le
5340: 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65  gal notice, here
5350: 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a   is a blessing:.
5360: 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75  **.**    May you
5370: 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74   do good and not
5380: 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79   evil..**    May
5390: 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76   you find forgiv
53a0: 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65  eness for yourse
53b0: 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f  lf and forgive o
53c0: 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79  thers..**    May
53d0: 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c   you share freel
53e0: 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20  y, never taking 
53f0: 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69  more than you gi
5400: 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ve..**.*********
5410: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5420: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
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 0a 2a 2a 0a 2a 2a 20 54 68 69 73  *****.**.** This
5460: 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 63   file contains c
5470: 6f 64 65 20 74 68 61 74 20 69 73 20 73 70 65 63  ode that is spec
5480: 69 66 69 63 20 74 6f 20 4d 53 56 43 2e 0a 2a 2f  ific to MSVC..*/
5490: 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f  .#ifndef SQLITE_
54a0: 4d 53 56 43 5f 48 0a 23 64 65 66 69 6e 65 20 53  MSVC_H.#define S
54b0: 51 4c 49 54 45 5f 4d 53 56 43 5f 48 0a 0a 23 69  QLITE_MSVC_H..#i
54c0: 66 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56  f defined(_MSC_V
54d0: 45 52 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  ER).#pragma warn
54e0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 30  ing(disable : 40
54f0: 35 34 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  54).#pragma warn
5500: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 30  ing(disable : 40
5510: 35 35 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  55).#pragma warn
5520: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
5530: 30 30 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  00).#pragma warn
5540: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
5550: 32 37 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  27).#pragma warn
5560: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
5570: 33 30 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  30).#pragma warn
5580: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
5590: 35 32 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  52).#pragma warn
55a0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 31  ing(disable : 41
55b0: 38 39 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  89).#pragma warn
55c0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 32  ing(disable : 42
55d0: 30 36 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  06).#pragma warn
55e0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 32  ing(disable : 42
55f0: 31 30 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  10).#pragma warn
5600: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 32  ing(disable : 42
5610: 33 32 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  32).#pragma warn
5620: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 32  ing(disable : 42
5630: 34 34 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  44).#pragma warn
5640: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 33  ing(disable : 43
5650: 30 35 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  05).#pragma warn
5660: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 33  ing(disable : 43
5670: 30 36 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  06).#pragma warn
5680: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 37  ing(disable : 47
5690: 30 32 29 0a 23 70 72 61 67 6d 61 20 77 61 72 6e  02).#pragma warn
56a0: 69 6e 67 28 64 69 73 61 62 6c 65 20 3a 20 34 37  ing(disable : 47
56b0: 30 36 29 0a 23 65 6e 64 69 66 20 2f 2a 20 64 65  06).#endif /* de
56c0: 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20  fined(_MSC_VER) 
56d0: 2a 2f 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 53 51  */..#endif /* SQ
56e0: 4c 49 54 45 5f 4d 53 56 43 5f 48 20 2a 2f 0a 0a  LITE_MSVC_H */..
56f0: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
5700: 45 6e 64 20 6f 66 20 6d 73 76 63 2e 68 20 2a 2a  End of msvc.h **
5710: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5720: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5730: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
5740: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
5750: 43 6f 6e 74 69 6e 75 69 6e 67 20 77 68 65 72 65  Continuing where
5760: 20 77 65 20 6c 65 66 74 20 6f 66 66 20 69 6e 20   we left off in 
5770: 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a  sqliteInt.h ****
5780: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
5790: 0a 2f 2a 0a 2a 2a 20 53 70 65 63 69 61 6c 20 73  ./*.** Special s
57a0: 65 74 75 70 20 66 6f 72 20 56 78 57 6f 72 6b 73  etup for VxWorks
57b0: 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .*/./***********
57c0: 2a 2a 2a 20 49 6e 63 6c 75 64 65 20 76 78 77 6f  *** Include vxwo
57d0: 72 6b 73 2e 68 20 69 6e 20 74 68 65 20 6d 69 64  rks.h in the mid
57e0: 64 6c 65 20 6f 66 20 73 71 6c 69 74 65 49 6e 74  dle of sqliteInt
57f0: 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .h *************
5800: 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  **/./***********
5810: 2a 2a 2a 20 42 65 67 69 6e 20 66 69 6c 65 20 76  *** Begin file v
5820: 78 77 6f 72 6b 73 2e 68 20 2a 2a 2a 2a 2a 2a 2a  xworks.h *******
5830: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5840: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5850: 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30 31 35 2d 30  **/./*.** 2015-0
5860: 33 2d 30 32 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61  3-02.**.** The a
5870: 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d 73 20  uthor disclaims 
5880: 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74 68 69  copyright to thi
5890: 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20  s source code.  
58a0: 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61  In place of.** a
58b0: 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68   legal notice, h
58c0: 65 72 65 20 69 73 20 61 20 62 6c 65 73 73 69 6e  ere is a blessin
58d0: 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20  g:.**.**    May 
58e0: 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20  you do good and 
58f0: 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20  not evil..**    
5900: 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66 6f 72  May you find for
5910: 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79 6f 75  giveness for you
5920: 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67 69 76  rself and forgiv
5930: 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20  e others..**    
5940: 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20 66 72  May you share fr
5950: 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b 69  eely, never taki
5960: 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75  ng more than you
5970: 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a   give..**.******
5980: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5990: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
59a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
59b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
59c0: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 54  ********.**.** T
59d0: 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e  his file contain
59e0: 73 20 63 6f 64 65 20 74 68 61 74 20 69 73 20 73  s code that is s
59f0: 70 65 63 69 66 69 63 20 74 6f 20 57 69 6e 64 20  pecific to Wind 
5a00: 52 69 76 65 72 27 73 20 56 78 57 6f 72 6b 73 0a  River's VxWorks.
5a10: 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f  */.#if defined(_
5a20: 5f 52 54 50 5f 5f 29 20 7c 7c 20 64 65 66 69 6e  _RTP__) || defin
5a30: 65 64 28 5f 57 52 53 5f 4b 45 52 4e 45 4c 29 0a  ed(_WRS_KERNEL).
5a40: 2f 2a 20 54 68 69 73 20 69 73 20 56 78 57 6f 72  /* This is VxWor
5a50: 6b 73 2e 20 20 53 65 74 20 75 70 20 74 68 69 6e  ks.  Set up thin
5a60: 67 73 20 73 70 65 63 69 61 6c 6c 79 20 66 6f 72  gs specially for
5a70: 20 74 68 61 74 20 4f 53 0a 2a 2f 0a 23 69 6e 63   that OS.*/.#inc
5a80: 6c 75 64 65 20 3c 76 78 57 6f 72 6b 73 2e 68 3e  lude <vxWorks.h>
5a90: 0a 23 69 6e 63 6c 75 64 65 20 3c 70 74 68 72 65  .#include <pthre
5aa0: 61 64 2e 68 3e 20 20 2f 2a 20 61 6d 61 6c 67 61  ad.h>  /* amalga
5ab0: 6d 61 74 6f 72 3a 20 64 6f 6e 74 63 61 63 68 65  mator: dontcache
5ac0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4f 53 5f 56   */.#define OS_V
5ad0: 58 57 4f 52 4b 53 20 31 0a 23 64 65 66 69 6e 65  XWORKS 1.#define
5ae0: 20 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52   SQLITE_OS_OTHER
5af0: 20 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   0.#define SQLIT
5b00: 45 5f 48 4f 4d 45 47 52 4f 57 4e 5f 52 45 43 55  E_HOMEGROWN_RECU
5b10: 52 53 49 56 45 5f 4d 55 54 45 58 20 31 0a 23 64  RSIVE_MUTEX 1.#d
5b20: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4d 49  efine SQLITE_OMI
5b30: 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e  T_LOAD_EXTENSION
5b40: 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   1.#define SQLIT
5b50: 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47  E_ENABLE_LOCKING
5b60: 5f 53 54 59 4c 45 20 30 0a 23 64 65 66 69 6e 65  _STYLE 0.#define
5b70: 20 48 41 56 45 5f 55 54 49 4d 45 20 31 0a 23 65   HAVE_UTIME 1.#e
5b80: 6c 73 65 0a 2f 2a 20 54 68 69 73 20 69 73 20 6e  lse./* This is n
5b90: 6f 74 20 56 78 57 6f 72 6b 73 2e 20 2a 2f 0a 23  ot VxWorks. */.#
5ba0: 64 65 66 69 6e 65 20 4f 53 5f 56 58 57 4f 52 4b  define OS_VXWORK
5bb0: 53 20 30 0a 23 64 65 66 69 6e 65 20 48 41 56 45  S 0.#define HAVE
5bc0: 5f 46 43 48 4f 57 4e 20 31 0a 23 64 65 66 69 6e  _FCHOWN 1.#defin
5bd0: 65 20 48 41 56 45 5f 52 45 41 44 4c 49 4e 4b 20  e HAVE_READLINK 
5be0: 31 0a 23 64 65 66 69 6e 65 20 48 41 56 45 5f 4c  1.#define HAVE_L
5bf0: 53 54 41 54 20 31 0a 23 65 6e 64 69 66 20 2f 2a  STAT 1.#endif /*
5c00: 20 64 65 66 69 6e 65 64 28 5f 57 52 53 5f 4b 45   defined(_WRS_KE
5c10: 52 4e 45 4c 29 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a  RNEL) */../*****
5c20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 45 6e 64 20 6f 66  ********* End of
5c30: 20 76 78 77 6f 72 6b 73 2e 68 20 2a 2a 2a 2a 2a   vxworks.h *****
5c40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5c50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5c60: 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a  ********/./*****
5c70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 43 6f 6e 74 69 6e  ********* Contin
5c80: 75 69 6e 67 20 77 68 65 72 65 20 77 65 20 6c 65  uing where we le
5c90: 66 74 20 6f 66 66 20 69 6e 20 73 71 6c 69 74 65  ft off in sqlite
5ca0: 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  Int.h **********
5cb0: 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a 2a 2a  ********/../*.**
5cc0: 20 54 68 65 73 65 20 23 64 65 66 69 6e 65 73 20   These #defines 
5cd0: 73 68 6f 75 6c 64 20 65 6e 61 62 6c 65 20 3e 32  should enable >2
5ce0: 47 42 20 66 69 6c 65 20 73 75 70 70 6f 72 74 20  GB file support 
5cf0: 6f 6e 20 50 4f 53 49 58 20 69 66 20 74 68 65 0a  on POSIX if the.
5d00: 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70  ** underlying op
5d10: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 73  erating system s
5d20: 75 70 70 6f 72 74 73 20 69 74 2e 20 20 49 66 20  upports it.  If 
5d30: 74 68 65 20 4f 53 20 6c 61 63 6b 73 0a 2a 2a 20  the OS lacks.** 
5d40: 6c 61 72 67 65 20 66 69 6c 65 20 73 75 70 70 6f  large file suppo
5d50: 72 74 2c 20 6f 72 20 69 66 20 74 68 65 20 4f 53  rt, or if the OS
5d60: 20 69 73 20 77 69 6e 64 6f 77 73 2c 20 74 68 65   is windows, the
5d70: 73 65 20 73 68 6f 75 6c 64 20 62 65 20 6e 6f 2d  se should be no-
5d80: 6f 70 73 2e 0a 2a 2a 0a 2a 2a 20 54 69 63 6b 65  ops..**.** Ticke
5d90: 74 20 23 32 37 33 39 3a 20 20 54 68 65 20 5f 4c  t #2739:  The _L
5da0: 41 52 47 45 46 49 4c 45 5f 53 4f 55 52 43 45 20  ARGEFILE_SOURCE 
5db0: 6d 61 63 72 6f 20 6d 75 73 74 20 61 70 70 65 61  macro must appea
5dc0: 72 20 62 65 66 6f 72 65 20 61 6e 79 0a 2a 2a 20  r before any.** 
5dd0: 73 79 73 74 65 6d 20 23 69 6e 63 6c 75 64 65 73  system #includes
5de0: 2e 20 20 48 65 6e 63 65 2c 20 74 68 69 73 20 62  .  Hence, this b
5df0: 6c 6f 63 6b 20 6f 66 20 63 6f 64 65 20 6d 75 73  lock of code mus
5e00: 74 20 62 65 20 74 68 65 20 76 65 72 79 20 66 69  t be the very fi
5e10: 72 73 74 0a 2a 2a 20 63 6f 64 65 20 69 6e 20 61  rst.** code in a
5e20: 6c 6c 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2e  ll source files.
5e30: 0a 2a 2a 0a 2a 2a 20 4c 61 72 67 65 20 66 69 6c  .**.** Large fil
5e40: 65 20 73 75 70 70 6f 72 74 20 63 61 6e 20 62 65  e support can be
5e50: 20 64 69 73 61 62 6c 65 64 20 75 73 69 6e 67 20   disabled using 
5e60: 74 68 65 20 2d 44 53 51 4c 49 54 45 5f 44 49 53  the -DSQLITE_DIS
5e70: 41 42 4c 45 5f 4c 46 53 20 73 77 69 74 63 68 0a  ABLE_LFS switch.
5e80: 2a 2a 20 6f 6e 20 74 68 65 20 63 6f 6d 70 69 6c  ** on the compil
5e90: 65 72 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e  er command line.
5ea0: 20 20 54 68 69 73 20 69 73 20 6e 65 63 65 73 73    This is necess
5eb0: 61 72 79 20 69 66 20 79 6f 75 20 61 72 65 20 63  ary if you are c
5ec0: 6f 6d 70 69 6c 69 6e 67 0a 2a 2a 20 6f 6e 20 61  ompiling.** on a
5ed0: 20 72 65 63 65 6e 74 20 6d 61 63 68 69 6e 65 20   recent machine 
5ee0: 28 65 78 3a 20 52 65 64 20 48 61 74 20 37 2e 32  (ex: Red Hat 7.2
5ef0: 29 20 62 75 74 20 79 6f 75 20 77 61 6e 74 20 79  ) but you want y
5f00: 6f 75 72 20 63 6f 64 65 20 74 6f 20 77 6f 72 6b  our code to work
5f10: 0a 2a 2a 20 6f 6e 20 61 6e 20 6f 6c 64 65 72 20  .** on an older 
5f20: 6d 61 63 68 69 6e 65 20 28 65 78 3a 20 52 65 64  machine (ex: Red
5f30: 20 48 61 74 20 36 2e 30 29 2e 20 20 49 66 20 79   Hat 6.0).  If y
5f40: 6f 75 20 63 6f 6d 70 69 6c 65 20 6f 6e 20 52 65  ou compile on Re
5f50: 64 20 48 61 74 20 37 2e 32 0a 2a 2a 20 77 69 74  d Hat 7.2.** wit
5f60: 68 6f 75 74 20 74 68 69 73 20 6f 70 74 69 6f 6e  hout this option
5f70: 2c 20 4c 46 53 20 69 73 20 65 6e 61 62 6c 65 2e  , LFS is enable.
5f80: 20 20 42 75 74 20 4c 46 53 20 64 6f 65 73 20 6e    But LFS does n
5f90: 6f 74 20 65 78 69 73 74 20 69 6e 20 74 68 65 20  ot exist in the 
5fa0: 6b 65 72 6e 65 6c 0a 2a 2a 20 69 6e 20 52 65 64  kernel.** in Red
5fb0: 20 48 61 74 20 36 2e 30 2c 20 73 6f 20 74 68 65   Hat 6.0, so the
5fc0: 20 63 6f 64 65 20 77 6f 6e 27 74 20 77 6f 72 6b   code won't work
5fd0: 2e 20 20 48 65 6e 63 65 2c 20 66 6f 72 20 6d 61  .  Hence, for ma
5fe0: 78 69 6d 75 6d 20 62 69 6e 61 72 79 0a 2a 2a 20  ximum binary.** 
5ff0: 70 6f 72 74 61 62 69 6c 69 74 79 20 79 6f 75 20  portability you 
6000: 73 68 6f 75 6c 64 20 6f 6d 69 74 20 4c 46 53 2e  should omit LFS.
6010: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 65 76 69  .**.** The previ
6020: 6f 75 73 20 70 61 72 61 67 72 61 70 68 20 77 61  ous paragraph wa
6030: 73 20 77 72 69 74 74 65 6e 20 69 6e 20 32 30 30  s written in 200
6040: 35 2e 20 20 28 54 68 69 73 20 70 61 72 61 67 72  5.  (This paragr
6050: 61 70 68 20 69 73 20 77 72 69 74 74 65 6e 0a 2a  aph is written.*
6060: 2a 20 6f 6e 20 32 30 30 38 2d 31 31 2d 32 38 2e  * on 2008-11-28.
6070: 29 20 54 68 65 73 65 20 64 61 79 73 2c 20 61 6c  ) These days, al
6080: 6c 20 4c 69 6e 75 78 20 6b 65 72 6e 65 6c 73 20  l Linux kernels 
6090: 73 75 70 70 6f 72 74 20 6c 61 72 67 65 20 66 69  support large fi
60a0: 6c 65 73 2c 20 73 6f 0a 2a 2a 20 79 6f 75 20 73  les, so.** you s
60b0: 68 6f 75 6c 64 20 70 72 6f 62 61 62 6c 79 20 6c  hould probably l
60c0: 65 61 76 65 20 4c 46 53 20 65 6e 61 62 6c 65 64  eave LFS enabled
60d0: 2e 20 20 42 75 74 20 73 6f 6d 65 20 65 6d 62 65  .  But some embe
60e0: 64 64 65 64 20 70 6c 61 74 66 6f 72 6d 73 20 6d  dded platforms m
60f0: 69 67 68 74 0a 2a 2a 20 6c 61 63 6b 20 4c 46 53  ight.** lack LFS
6100: 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74   in which case t
6110: 68 65 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  he SQLITE_DISABL
6120: 45 5f 4c 46 53 20 6d 61 63 72 6f 20 6d 69 67 68  E_LFS macro migh
6130: 74 20 73 74 69 6c 6c 20 62 65 20 75 73 65 66 75  t still be usefu
6140: 6c 2e 0a 2a 2a 0a 2a 2a 20 53 69 6d 69 6c 61 72  l..**.** Similar
6150: 20 69 73 20 74 72 75 65 20 66 6f 72 20 4d 61 63   is true for Mac
6160: 20 4f 53 20 58 2e 20 20 4c 46 53 20 69 73 20 6f   OS X.  LFS is o
6170: 6e 6c 79 20 73 75 70 70 6f 72 74 65 64 20 6f 6e  nly supported on
6180: 20 4d 61 63 20 4f 53 20 58 20 39 20 61 6e 64 20   Mac OS X 9 and 
6190: 6c 61 74 65 72 2e 0a 2a 2f 0a 23 69 66 6e 64 65  later..*/.#ifnde
61a0: 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  f SQLITE_DISABLE
61b0: 5f 4c 46 53 0a 23 20 64 65 66 69 6e 65 20 5f 4c  _LFS.# define _L
61c0: 41 52 47 45 5f 46 49 4c 45 20 20 20 20 20 20 20  ARGE_FILE       
61d0: 31 0a 23 20 69 66 6e 64 65 66 20 5f 46 49 4c 45  1.# ifndef _FILE
61e0: 5f 4f 46 46 53 45 54 5f 42 49 54 53 0a 23 20 20  _OFFSET_BITS.#  
61f0: 20 64 65 66 69 6e 65 20 5f 46 49 4c 45 5f 4f 46   define _FILE_OF
6200: 46 53 45 54 5f 42 49 54 53 20 36 34 0a 23 20 65  FSET_BITS 64.# e
6210: 6e 64 69 66 0a 23 20 64 65 66 69 6e 65 20 5f 4c  ndif.# define _L
6220: 41 52 47 45 46 49 4c 45 5f 53 4f 55 52 43 45 20  ARGEFILE_SOURCE 
6230: 31 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 54 68 65  1.#endif../* The
6240: 20 47 43 43 5f 56 45 52 53 49 4f 4e 20 61 6e 64   GCC_VERSION and
6250: 20 4d 53 56 43 5f 56 45 52 53 49 4f 4e 20 6d 61   MSVC_VERSION ma
6260: 63 72 6f 73 20 61 72 65 20 75 73 65 64 20 74 6f  cros are used to
6270: 0a 2a 2a 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 6c  .** conditionall
6280: 79 20 69 6e 63 6c 75 64 65 20 6f 70 74 69 6d 69  y include optimi
6290: 7a 61 74 69 6f 6e 73 20 66 6f 72 20 65 61 63 68  zations for each
62a0: 20 6f 66 20 74 68 65 73 65 20 63 6f 6d 70 69 6c   of these compil
62b0: 65 72 73 2e 20 20 41 0a 2a 2a 20 76 61 6c 75 65  ers.  A.** value
62c0: 20 6f 66 20 30 20 6d 65 61 6e 73 20 74 68 61 74   of 0 means that
62d0: 20 63 6f 6d 70 69 6c 65 72 20 69 73 20 6e 6f 74   compiler is not
62e0: 20 62 65 69 6e 67 20 75 73 65 64 2e 20 20 54 68   being used.  Th
62f0: 65 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 49 53 41  e.** SQLITE_DISA
6300: 42 4c 45 5f 49 4e 54 52 49 4e 53 49 43 20 6d 61  BLE_INTRINSIC ma
6310: 63 72 6f 20 6d 65 61 6e 73 20 64 6f 20 6e 6f 74  cro means do not
6320: 20 75 73 65 20 61 6e 79 20 63 6f 6d 70 69 6c 65   use any compile
6330: 72 2d 73 70 65 63 69 66 69 63 0a 2a 2a 20 6f 70  r-specific.** op
6340: 74 69 6d 69 7a 61 74 69 6f 6e 73 2c 20 61 6e 64  timizations, and
6350: 20 68 65 6e 63 65 20 73 65 74 20 61 6c 6c 20 63   hence set all c
6360: 6f 6d 70 69 6c 65 72 20 6d 61 63 72 6f 73 20 74  ompiler macros t
6370: 6f 20 30 0a 2a 2a 0a 2a 2a 20 54 68 65 72 65 20  o 0.**.** There 
6380: 77 61 73 20 6f 6e 63 65 20 61 6c 73 6f 20 61 20  was once also a 
6390: 43 4c 41 4e 47 5f 56 45 52 53 49 4f 4e 20 6d 61  CLANG_VERSION ma
63a0: 63 72 6f 2e 20 20 48 6f 77 65 76 65 72 2c 20 77  cro.  However, w
63b0: 65 20 6c 65 61 72 6e 20 74 68 61 74 20 74 68 65  e learn that the
63c0: 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62  .** version numb
63d0: 65 72 73 20 69 6e 20 63 6c 61 6e 67 20 61 72 65  ers in clang are
63e0: 20 66 6f 72 20 22 6d 61 72 6b 65 74 69 6e 67 22   for "marketing"
63f0: 20 6f 6e 6c 79 20 61 6e 64 20 61 72 65 20 69 6e   only and are in
6400: 63 6f 6e 73 69 73 74 65 6e 74 0a 2a 2a 20 61 6e  consistent.** an
6410: 64 20 75 6e 72 65 6c 69 61 62 6c 65 2e 20 20 46  d unreliable.  F
6420: 6f 72 74 75 6e 61 74 65 6c 79 2c 20 61 6c 6c 20  ortunately, all 
6430: 76 65 72 73 69 6f 6e 73 20 6f 66 20 63 6c 61 6e  versions of clan
6440: 67 20 61 6c 73 6f 20 72 65 63 6f 67 6e 69 7a 65  g also recognize
6450: 20 74 68 65 0a 2a 2a 20 67 63 63 20 76 65 72 73   the.** gcc vers
6460: 69 6f 6e 20 6e 75 6d 62 65 72 73 20 61 6e 64 20  ion numbers and 
6470: 68 61 76 65 20 72 65 61 73 6f 6e 61 62 6c 65 20  have reasonable 
6480: 73 65 74 74 69 6e 67 73 20 66 6f 72 20 67 63 63  settings for gcc
6490: 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73   version numbers
64a0: 2c 0a 2a 2a 20 73 6f 20 74 68 65 20 47 43 43 5f  ,.** so the GCC_
64b0: 56 45 52 53 49 4f 4e 20 6d 61 63 72 6f 20 77 69  VERSION macro wi
64c0: 6c 6c 20 62 65 20 73 65 74 20 74 6f 20 61 20 63  ll be set to a c
64d0: 6f 72 72 65 63 74 20 6e 6f 6e 2d 7a 65 72 6f 20  orrect non-zero 
64e0: 76 61 6c 75 65 20 65 76 65 6e 0a 2a 2a 20 77 68  value even.** wh
64f0: 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 77 69 74  en compiling wit
6500: 68 20 63 6c 61 6e 67 2e 0a 2a 2f 0a 23 69 66 20  h clang..*/.#if 
6510: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f  defined(__GNUC__
6520: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 53 51  ) && !defined(SQ
6530: 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 49 4e 54  LITE_DISABLE_INT
6540: 52 49 4e 53 49 43 29 0a 23 20 64 65 66 69 6e 65  RINSIC).# define
6550: 20 47 43 43 5f 56 45 52 53 49 4f 4e 20 28 5f 5f   GCC_VERSION (__
6560: 47 4e 55 43 5f 5f 2a 31 30 30 30 30 30 30 2b 5f  GNUC__*1000000+_
6570: 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f 5f 2a 31 30  _GNUC_MINOR__*10
6580: 30 30 2b 5f 5f 47 4e 55 43 5f 50 41 54 43 48 4c  00+__GNUC_PATCHL
6590: 45 56 45 4c 5f 5f 29 0a 23 65 6c 73 65 0a 23 20  EVEL__).#else.# 
65a0: 64 65 66 69 6e 65 20 47 43 43 5f 56 45 52 53 49  define GCC_VERSI
65b0: 4f 4e 20 30 0a 23 65 6e 64 69 66 0a 23 69 66 20  ON 0.#endif.#if 
65c0: 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52  defined(_MSC_VER
65d0: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 53 51  ) && !defined(SQ
65e0: 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 49 4e 54  LITE_DISABLE_INT
65f0: 52 49 4e 53 49 43 29 0a 23 20 64 65 66 69 6e 65  RINSIC).# define
6600: 20 4d 53 56 43 5f 56 45 52 53 49 4f 4e 20 5f 4d   MSVC_VERSION _M
6610: 53 43 5f 56 45 52 0a 23 65 6c 73 65 0a 23 20 64  SC_VER.#else.# d
6620: 65 66 69 6e 65 20 4d 53 56 43 5f 56 45 52 53 49  efine MSVC_VERSI
6630: 4f 4e 20 30 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20  ON 0.#endif../* 
6640: 4e 65 65 64 65 64 20 66 6f 72 20 76 61 72 69 6f  Needed for vario
6650: 75 73 20 64 65 66 69 6e 69 74 69 6f 6e 73 2e 2e  us definitions..
6660: 2e 20 2a 2f 0a 23 69 66 20 64 65 66 69 6e 65 64  . */.#if defined
6670: 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26 20 21 64  (__GNUC__) && !d
6680: 65 66 69 6e 65 64 28 5f 47 4e 55 5f 53 4f 55 52  efined(_GNU_SOUR
6690: 43 45 29 0a 23 20 64 65 66 69 6e 65 20 5f 47 4e  CE).# define _GN
66a0: 55 5f 53 4f 55 52 43 45 0a 23 65 6e 64 69 66 0a  U_SOURCE.#endif.
66b0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 4f  .#if defined(__O
66c0: 70 65 6e 42 53 44 5f 5f 29 20 26 26 20 21 64 65  penBSD__) && !de
66d0: 66 69 6e 65 64 28 5f 42 53 44 5f 53 4f 55 52 43  fined(_BSD_SOURC
66e0: 45 29 0a 23 20 64 65 66 69 6e 65 20 5f 42 53 44  E).# define _BSD
66f0: 5f 53 4f 55 52 43 45 0a 23 65 6e 64 69 66 0a 0a  _SOURCE.#endif..
6700: 2f 2a 0a 2a 2a 20 46 6f 72 20 4d 69 6e 47 57 2c  /*.** For MinGW,
6710: 20 63 68 65 63 6b 20 74 6f 20 73 65 65 20 69 66   check to see if
6720: 20 77 65 20 63 61 6e 20 69 6e 63 6c 75 64 65 20   we can include 
6730: 74 68 65 20 68 65 61 64 65 72 20 66 69 6c 65 20  the header file 
6740: 63 6f 6e 74 61 69 6e 69 6e 67 20 69 74 73 0a 2a  containing its.*
6750: 2a 20 76 65 72 73 69 6f 6e 20 69 6e 66 6f 72 6d  * version inform
6760: 61 74 69 6f 6e 2c 20 61 6d 6f 6e 67 20 6f 74 68  ation, among oth
6770: 65 72 20 74 68 69 6e 67 73 2e 20 20 4e 6f 72 6d  er things.  Norm
6780: 61 6c 6c 79 2c 20 74 68 69 73 20 69 6e 74 65 72  ally, this inter
6790: 6e 61 6c 20 4d 69 6e 47 57 0a 2a 2a 20 68 65 61  nal MinGW.** hea
67a0: 64 65 72 20 66 69 6c 65 20 77 6f 75 6c 64 20 5b  der file would [
67b0: 6f 6e 6c 79 5d 20 62 65 20 69 6e 63 6c 75 64 65  only] be include
67c0: 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  d automatically 
67d0: 62 79 20 6f 74 68 65 72 20 4d 69 6e 47 57 20 68  by other MinGW h
67e0: 65 61 64 65 72 0a 2a 2a 20 66 69 6c 65 73 3b 20  eader.** files; 
67f0: 68 6f 77 65 76 65 72 2c 20 74 68 65 20 63 6f 6e  however, the con
6800: 74 61 69 6e 65 64 20 76 65 72 73 69 6f 6e 20 69  tained version i
6810: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 6e 6f  nformation is no
6820: 77 20 72 65 71 75 69 72 65 64 20 62 79 20 74 68  w required by th
6830: 69 73 0a 2a 2a 20 68 65 61 64 65 72 20 66 69 6c  is.** header fil
6840: 65 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64  e to work around
6850: 20 62 69 6e 61 72 79 20 63 6f 6d 70 61 74 69 62   binary compatib
6860: 69 6c 69 74 79 20 69 73 73 75 65 73 20 28 73 65  ility issues (se
6870: 65 20 62 65 6c 6f 77 29 20 61 6e 64 0a 2a 2a 20  e below) and.** 
6880: 74 68 69 73 20 69 73 20 74 68 65 20 6f 6e 6c 79  this is the only
6890: 20 6b 6e 6f 77 6e 20 77 61 79 20 74 6f 20 72 65   known way to re
68a0: 6c 69 61 62 6c 79 20 6f 62 74 61 69 6e 20 69 74  liably obtain it
68b0: 2e 20 20 54 68 69 73 20 65 6e 74 69 72 65 20 23  .  This entire #
68c0: 69 66 20 62 6c 6f 63 6b 0a 2a 2a 20 77 6f 75 6c  if block.** woul
68d0: 64 20 62 65 20 63 6f 6d 70 6c 65 74 65 6c 79 20  d be completely 
68e0: 75 6e 6e 65 63 65 73 73 61 72 79 20 69 66 20 74  unnecessary if t
68f0: 68 65 72 65 20 77 61 73 20 61 6e 79 20 6f 74 68  here was any oth
6900: 65 72 20 77 61 79 20 6f 66 20 64 65 74 65 63 74  er way of detect
6910: 69 6e 67 0a 2a 2a 20 4d 69 6e 47 57 20 76 69 61  ing.** MinGW via
6920: 20 74 68 65 69 72 20 70 72 65 70 72 6f 63 65 73   their preproces
6930: 73 6f 72 20 28 65 2e 67 2e 20 69 66 20 74 68 65  sor (e.g. if the
6940: 79 20 63 75 73 74 6f 6d 69 7a 65 64 20 74 68 65  y customized the
6950: 69 72 20 47 43 43 20 74 6f 20 64 65 66 69 6e 65  ir GCC to define
6960: 0a 2a 2a 20 73 6f 6d 65 20 4d 69 6e 47 57 2d 73  .** some MinGW-s
6970: 70 65 63 69 66 69 63 20 6d 61 63 72 6f 73 29 2e  pecific macros).
6980: 20 20 57 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67    When compiling
6990: 20 66 6f 72 20 4d 69 6e 47 57 2c 20 65 69 74 68   for MinGW, eith
69a0: 65 72 20 74 68 65 0a 2a 2a 20 5f 48 41 56 45 5f  er the.** _HAVE_
69b0: 4d 49 4e 47 57 5f 48 20 6f 72 20 5f 48 41 56 45  MINGW_H or _HAVE
69c0: 5f 5f 4d 49 4e 47 57 5f 48 20 28 6e 6f 74 65 20  __MINGW_H (note 
69d0: 74 68 65 20 65 78 74 72 61 20 75 6e 64 65 72 73  the extra unders
69e0: 63 6f 72 65 29 20 6d 61 63 72 6f 20 6d 75 73 74  core) macro must
69f0: 20 62 65 0a 2a 2a 20 64 65 66 69 6e 65 64 3b 20   be.** defined; 
6a00: 6f 74 68 65 72 77 69 73 65 2c 20 64 65 74 65 63  otherwise, detec
6a10: 74 69 6f 6e 20 6f 66 20 63 6f 6e 64 69 74 69 6f  tion of conditio
6a20: 6e 73 20 73 70 65 63 69 66 69 63 20 74 6f 20 4d  ns specific to M
6a30: 69 6e 47 57 20 77 69 6c 6c 20 62 65 0a 2a 2a 20  inGW will be.** 
6a40: 64 69 73 61 62 6c 65 64 2e 0a 2a 2f 0a 23 69 66  disabled..*/.#if
6a50: 20 64 65 66 69 6e 65 64 28 5f 48 41 56 45 5f 4d   defined(_HAVE_M
6a60: 49 4e 47 57 5f 48 29 0a 23 20 69 6e 63 6c 75 64  INGW_H).# includ
6a70: 65 20 22 6d 69 6e 67 77 2e 68 22 0a 23 65 6c 69  e "mingw.h".#eli
6a80: 66 20 64 65 66 69 6e 65 64 28 5f 48 41 56 45 5f  f defined(_HAVE_
6a90: 5f 4d 49 4e 47 57 5f 48 29 0a 23 20 69 6e 63 6c  _MINGW_H).# incl
6aa0: 75 64 65 20 22 5f 6d 69 6e 67 77 2e 68 22 0a 23  ude "_mingw.h".#
6ab0: 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 46 6f 72  endif../*.** For
6ac0: 20 4d 69 6e 47 57 20 76 65 72 73 69 6f 6e 20 34   MinGW version 4
6ad0: 2e 78 20 28 61 6e 64 20 68 69 67 68 65 72 29 2c  .x (and higher),
6ae0: 20 63 68 65 63 6b 20 74 6f 20 73 65 65 20 69 66   check to see if
6af0: 20 74 68 65 20 5f 55 53 45 5f 33 32 42 49 54 5f   the _USE_32BIT_
6b00: 54 49 4d 45 5f 54 0a 2a 2a 20 64 65 66 69 6e 65  TIME_T.** define
6b10: 20 69 73 20 72 65 71 75 69 72 65 64 20 74 6f 20   is required to 
6b20: 6d 61 69 6e 74 61 69 6e 20 62 69 6e 61 72 79 20  maintain binary 
6b30: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
6b40: 74 68 20 74 68 65 20 4d 53 56 43 20 72 75 6e 74  th the MSVC runt
6b50: 69 6d 65 0a 2a 2a 20 6c 69 62 72 61 72 79 20 69  ime.** library i
6b60: 6e 20 75 73 65 20 28 65 2e 67 2e 20 66 6f 72 20  n use (e.g. for 
6b70: 57 69 6e 64 6f 77 73 20 58 50 29 2e 0a 2a 2f 0a  Windows XP)..*/.
6b80: 23 69 66 20 21 64 65 66 69 6e 65 64 28 5f 55 53  #if !defined(_US
6b90: 45 5f 33 32 42 49 54 5f 54 49 4d 45 5f 54 29 20  E_32BIT_TIME_T) 
6ba0: 26 26 20 21 64 65 66 69 6e 65 64 28 5f 55 53 45  && !defined(_USE
6bb0: 5f 36 34 42 49 54 5f 54 49 4d 45 5f 54 29 20 26  _64BIT_TIME_T) &
6bc0: 26 20 5c 0a 20 20 20 20 64 65 66 69 6e 65 64 28  & \.    defined(
6bd0: 5f 57 49 4e 33 32 29 20 26 26 20 21 64 65 66 69  _WIN32) && !defi
6be0: 6e 65 64 28 5f 57 49 4e 36 34 29 20 26 26 20 5c  ned(_WIN64) && \
6bf0: 0a 20 20 20 20 64 65 66 69 6e 65 64 28 5f 5f 4d  .    defined(__M
6c00: 49 4e 47 57 5f 4d 41 4a 4f 52 5f 56 45 52 53 49  INGW_MAJOR_VERSI
6c10: 4f 4e 29 20 26 26 20 5f 5f 4d 49 4e 47 57 5f 4d  ON) && __MINGW_M
6c20: 41 4a 4f 52 5f 56 45 52 53 49 4f 4e 20 3e 3d 20  AJOR_VERSION >= 
6c30: 34 20 26 26 20 5c 0a 20 20 20 20 64 65 66 69 6e  4 && \.    defin
6c40: 65 64 28 5f 5f 4d 53 56 43 52 54 5f 5f 29 0a 23  ed(__MSVCRT__).#
6c50: 20 64 65 66 69 6e 65 20 5f 55 53 45 5f 33 32 42   define _USE_32B
6c60: 49 54 5f 54 49 4d 45 5f 54 0a 23 65 6e 64 69 66  IT_TIME_T.#endif
6c70: 0a 0a 2f 2a 20 54 68 65 20 70 75 62 6c 69 63 20  ../* The public 
6c80: 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65  SQLite interface
6c90: 2e 20 20 54 68 65 20 5f 46 49 4c 45 5f 4f 46 46  .  The _FILE_OFF
6ca0: 53 45 54 5f 42 49 54 53 20 6d 61 63 72 6f 20 6d  SET_BITS macro m
6cb0: 75 73 74 20 61 70 70 65 61 72 0a 2a 2a 20 66 69  ust appear.** fi
6cc0: 72 73 74 20 69 6e 20 51 4e 58 2e 20 20 41 6c 73  rst in QNX.  Als
6cd0: 6f 2c 20 74 68 65 20 5f 55 53 45 5f 33 32 42 49  o, the _USE_32BI
6ce0: 54 5f 54 49 4d 45 5f 54 20 6d 61 63 72 6f 20 6d  T_TIME_T macro m
6cf0: 75 73 74 20 61 70 70 65 61 72 20 66 69 72 73 74  ust appear first
6d00: 20 66 6f 72 0a 2a 2a 20 4d 69 6e 47 57 2e 0a 2a   for.** MinGW..*
6d10: 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /./*************
6d20: 2a 20 49 6e 63 6c 75 64 65 20 73 71 6c 69 74 65  * Include sqlite
6d30: 33 2e 68 20 69 6e 20 74 68 65 20 6d 69 64 64 6c  3.h in the middl
6d40: 65 20 6f 66 20 73 71 6c 69 74 65 49 6e 74 2e 68  e of sqliteInt.h
6d50: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
6d60: 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /./*************
6d70: 2a 20 42 65 67 69 6e 20 66 69 6c 65 20 73 71 6c  * Begin file sql
6d80: 69 74 65 33 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  ite3.h *********
6d90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6da0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6db0: 2f 0a 2f 2a 0a 2a 2a 20 32 30 30 31 2d 30 39 2d  /./*.** 2001-09-
6dc0: 31 35 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74  15.**.** The aut
6dd0: 68 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f  hor disclaims co
6de0: 70 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20  pyright to this 
6df0: 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e  source code.  In
6e00: 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c   place of.** a l
6e10: 65 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72  egal notice, her
6e20: 65 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a  e is a blessing:
6e30: 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f  .**.**    May yo
6e40: 75 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f  u do good and no
6e50: 74 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61  t evil..**    Ma
6e60: 79 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69  y you find forgi
6e70: 76 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73  veness for yours
6e80: 65 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20  elf and forgive 
6e90: 6f 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61  others..**    Ma
6ea0: 79 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65  y you share free
6eb0: 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67  ly, never taking
6ec0: 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67   more than you g
6ed0: 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a  ive..**.********
6ee0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6ef0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6f00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6f10: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6f20: 2a 0a 2a 2a 20 54 68 69 73 20 68 65 61 64 65 72  *.** This header
6f30: 20 66 69 6c 65 20 64 65 66 69 6e 65 73 20 74 68   file defines th
6f40: 65 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 74  e interface that
6f50: 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
6f60: 61 72 79 0a 2a 2a 20 70 72 65 73 65 6e 74 73 20  ary.** presents 
6f70: 74 6f 20 63 6c 69 65 6e 74 20 70 72 6f 67 72 61  to client progra
6f80: 6d 73 2e 20 20 49 66 20 61 20 43 2d 66 75 6e 63  ms.  If a C-func
6f90: 74 69 6f 6e 2c 20 73 74 72 75 63 74 75 72 65 2c  tion, structure,
6fa0: 20 64 61 74 61 74 79 70 65 2c 0a 2a 2a 20 6f 72   datatype,.** or
6fb0: 20 63 6f 6e 73 74 61 6e 74 20 64 65 66 69 6e 69   constant defini
6fc0: 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 61 70  tion does not ap
6fd0: 70 65 61 72 20 69 6e 20 74 68 69 73 20 66 69 6c  pear in this fil
6fe0: 65 2c 20 74 68 65 6e 20 69 74 20 69 73 0a 2a 2a  e, then it is.**
6ff0: 20 6e 6f 74 20 61 20 70 75 62 6c 69 73 68 65 64   not a published
7000: 20 41 50 49 20 6f 66 20 53 51 4c 69 74 65 2c 20   API of SQLite, 
7010: 69 73 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68  is subject to ch
7020: 61 6e 67 65 20 77 69 74 68 6f 75 74 0a 2a 2a 20  ange without.** 
7030: 6e 6f 74 69 63 65 2c 20 61 6e 64 20 73 68 6f 75  notice, and shou
7040: 6c 64 20 6e 6f 74 20 62 65 20 72 65 66 65 72 65  ld not be refere
7050: 6e 63 65 64 20 62 79 20 70 72 6f 67 72 61 6d 73  nced by programs
7060: 20 74 68 61 74 20 75 73 65 20 53 51 4c 69 74 65   that use SQLite
7070: 2e 0a 2a 2a 0a 2a 2a 20 53 6f 6d 65 20 6f 66 20  ..**.** Some of 
7080: 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 20  the definitions 
7090: 74 68 61 74 20 61 72 65 20 69 6e 20 74 68 69 73  that are in this
70a0: 20 66 69 6c 65 20 61 72 65 20 6d 61 72 6b 65 64   file are marked
70b0: 20 61 73 0a 2a 2a 20 22 65 78 70 65 72 69 6d 65   as.** "experime
70c0: 6e 74 61 6c 22 2e 20 20 45 78 70 65 72 69 6d 65  ntal".  Experime
70d0: 6e 74 61 6c 20 69 6e 74 65 72 66 61 63 65 73 20  ntal interfaces 
70e0: 61 72 65 20 6e 6f 72 6d 61 6c 6c 79 20 6e 65 77  are normally new
70f0: 0a 2a 2a 20 66 65 61 74 75 72 65 73 20 72 65 63  .** features rec
7100: 65 6e 74 6c 79 20 61 64 64 65 64 20 74 6f 20 53  ently added to S
7110: 51 4c 69 74 65 2e 20 20 57 65 20 64 6f 20 6e 6f  QLite.  We do no
7120: 74 20 61 6e 74 69 63 69 70 61 74 65 20 63 68 61  t anticipate cha
7130: 6e 67 65 73 0a 2a 2a 20 74 6f 20 65 78 70 65 72  nges.** to exper
7140: 69 6d 65 6e 74 61 6c 20 69 6e 74 65 72 66 61 63  imental interfac
7150: 65 73 20 62 75 74 20 72 65 73 65 72 76 65 20 74  es but reserve t
7160: 68 65 20 72 69 67 68 74 20 74 6f 20 6d 61 6b 65  he right to make
7170: 20 6d 69 6e 6f 72 20 63 68 61 6e 67 65 73 0a 2a   minor changes.*
7180: 2a 20 69 66 20 65 78 70 65 72 69 65 6e 63 65 20  * if experience 
7190: 66 72 6f 6d 20 75 73 65 20 22 69 6e 20 74 68 65  from use "in the
71a0: 20 77 69 6c 64 22 20 73 75 67 67 65 73 74 20 73   wild" suggest s
71b0: 75 63 68 20 63 68 61 6e 67 65 73 20 61 72 65 20  uch changes are 
71c0: 70 72 75 64 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54  prudent..**.** T
71d0: 68 65 20 6f 66 66 69 63 69 61 6c 20 43 2d 6c 61  he official C-la
71e0: 6e 67 75 61 67 65 20 41 50 49 20 64 6f 63 75 6d  nguage API docum
71f0: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 53 51 4c  entation for SQL
7200: 69 74 65 20 69 73 20 64 65 72 69 76 65 64 0a 2a  ite is derived.*
7210: 2a 20 66 72 6f 6d 20 63 6f 6d 6d 65 6e 74 73 20  * from comments 
7220: 69 6e 20 74 68 69 73 20 66 69 6c 65 2e 20 20 54  in this file.  T
7230: 68 69 73 20 66 69 6c 65 20 69 73 20 74 68 65 20  his file is the 
7240: 61 75 74 68 6f 72 69 74 61 74 69 76 65 20 73 6f  authoritative so
7250: 75 72 63 65 0a 2a 2a 20 6f 6e 20 68 6f 77 20 53  urce.** on how S
7260: 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 73  QLite interfaces
7270: 20 61 72 65 20 73 75 70 70 6f 73 65 64 20 74 6f   are supposed to
7280: 20 6f 70 65 72 61 74 65 2e 0a 2a 2a 0a 2a 2a 20   operate..**.** 
7290: 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 69 73  The name of this
72a0: 20 66 69 6c 65 20 75 6e 64 65 72 20 63 6f 6e 66   file under conf
72b0: 69 67 75 72 61 74 69 6f 6e 20 6d 61 6e 61 67 65  iguration manage
72c0: 6d 65 6e 74 20 69 73 20 22 73 71 6c 69 74 65 2e  ment is "sqlite.
72d0: 68 2e 69 6e 22 2e 0a 2a 2a 20 54 68 65 20 6d 61  h.in"..** The ma
72e0: 6b 65 66 69 6c 65 20 6d 61 6b 65 73 20 73 6f 6d  kefile makes som
72f0: 65 20 6d 69 6e 6f 72 20 63 68 61 6e 67 65 73 20  e minor changes 
7300: 74 6f 20 74 68 69 73 20 66 69 6c 65 20 28 73 75  to this file (su
7310: 63 68 20 61 73 20 69 6e 73 65 72 74 69 6e 67 0a  ch as inserting.
7320: 2a 2a 20 74 68 65 20 76 65 72 73 69 6f 6e 20 6e  ** the version n
7330: 75 6d 62 65 72 29 20 61 6e 64 20 63 68 61 6e 67  umber) and chang
7340: 65 73 20 69 74 73 20 6e 61 6d 65 20 74 6f 20 22  es its name to "
7350: 73 71 6c 69 74 65 33 2e 68 22 20 61 73 0a 2a 2a  sqlite3.h" as.**
7360: 20 70 61 72 74 20 6f 66 20 74 68 65 20 62 75 69   part of the bui
7370: 6c 64 20 70 72 6f 63 65 73 73 2e 0a 2a 2f 0a 23  ld process..*/.#
7380: 69 66 6e 64 65 66 20 53 51 4c 49 54 45 33 5f 48  ifndef SQLITE3_H
7390: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 33  .#define SQLITE3
73a0: 5f 48 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64  _H.#include <std
73b0: 61 72 67 2e 68 3e 20 20 20 20 20 2f 2a 20 4e 65  arg.h>     /* Ne
73c0: 65 64 65 64 20 66 6f 72 20 74 68 65 20 64 65 66  eded for the def
73d0: 69 6e 69 74 69 6f 6e 20 6f 66 20 76 61 5f 6c 69  inition of va_li
73e0: 73 74 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 4d 61 6b  st */../*.** Mak
73f0: 65 20 73 75 72 65 20 77 65 20 63 61 6e 20 63 61  e sure we can ca
7400: 6c 6c 20 74 68 69 73 20 73 74 75 66 66 20 66 72  ll this stuff fr
7410: 6f 6d 20 43 2b 2b 2e 0a 2a 2f 0a 23 69 66 20 30  om C++..*/.#if 0
7420: 0a 65 78 74 65 72 6e 20 22 43 22 20 7b 0a 23 65  .extern "C" {.#e
7430: 6e 64 69 66 0a 0a 0a 2f 2a 0a 2a 2a 20 50 72 6f  ndif.../*.** Pro
7440: 76 69 64 65 20 74 68 65 20 61 62 69 6c 69 74 79  vide the ability
7450: 20 74 6f 20 6f 76 65 72 72 69 64 65 20 6c 69 6e   to override lin
7460: 6b 61 67 65 20 66 65 61 74 75 72 65 73 20 6f 66  kage features of
7470: 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 2e 0a   the interface..
7480: 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54  */.#ifndef SQLIT
7490: 45 5f 45 58 54 45 52 4e 0a 23 20 64 65 66 69 6e  E_EXTERN.# defin
74a0: 65 20 53 51 4c 49 54 45 5f 45 58 54 45 52 4e 20  e SQLITE_EXTERN 
74b0: 65 78 74 65 72 6e 0a 23 65 6e 64 69 66 0a 23 69  extern.#endif.#i
74c0: 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 41 50 49  fndef SQLITE_API
74d0: 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45  .# define SQLITE
74e0: 5f 41 50 49 0a 23 65 6e 64 69 66 0a 23 69 66 6e  _API.#endif.#ifn
74f0: 64 65 66 20 53 51 4c 49 54 45 5f 43 44 45 43 4c  def SQLITE_CDECL
7500: 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45  .# define SQLITE
7510: 5f 43 44 45 43 4c 0a 23 65 6e 64 69 66 0a 23 69  _CDECL.#endif.#i
7520: 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 41 50 49  fndef SQLITE_API
7530: 43 41 4c 4c 0a 23 20 64 65 66 69 6e 65 20 53 51  CALL.# define SQ
7540: 4c 49 54 45 5f 41 50 49 43 41 4c 4c 0a 23 65 6e  LITE_APICALL.#en
7550: 64 69 66 0a 23 69 66 6e 64 65 66 20 53 51 4c 49  dif.#ifndef SQLI
7560: 54 45 5f 53 54 44 43 41 4c 4c 0a 23 20 64 65 66  TE_STDCALL.# def
7570: 69 6e 65 20 53 51 4c 49 54 45 5f 53 54 44 43 41  ine SQLITE_STDCA
7580: 4c 4c 20 53 51 4c 49 54 45 5f 41 50 49 43 41 4c  LL SQLITE_APICAL
7590: 4c 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  L.#endif.#ifndef
75a0: 20 53 51 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b   SQLITE_CALLBACK
75b0: 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45  .# define SQLITE
75c0: 5f 43 41 4c 4c 42 41 43 4b 0a 23 65 6e 64 69 66  _CALLBACK.#endif
75d0: 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f  .#ifndef SQLITE_
75e0: 53 59 53 41 50 49 0a 23 20 64 65 66 69 6e 65 20  SYSAPI.# define 
75f0: 53 51 4c 49 54 45 5f 53 59 53 41 50 49 0a 23 65  SQLITE_SYSAPI.#e
7600: 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 73  ndif../*.** Thes
7610: 65 20 6e 6f 2d 6f 70 20 6d 61 63 72 6f 73 20 61  e no-op macros a
7620: 72 65 20 75 73 65 64 20 69 6e 20 66 72 6f 6e 74  re used in front
7630: 20 6f 66 20 69 6e 74 65 72 66 61 63 65 73 20 74   of interfaces t
7640: 6f 20 6d 61 72 6b 20 74 68 6f 73 65 0a 2a 2a 20  o mark those.** 
7650: 69 6e 74 65 72 66 61 63 65 73 20 61 73 20 65 69  interfaces as ei
7660: 74 68 65 72 20 64 65 70 72 65 63 61 74 65 64 20  ther deprecated 
7670: 6f 72 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 2e  or experimental.
7680: 20 20 4e 65 77 20 61 70 70 6c 69 63 61 74 69 6f    New applicatio
7690: 6e 73 0a 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 74  ns.** should not
76a0: 20 75 73 65 20 64 65 70 72 65 63 61 74 65 64 20   use deprecated 
76b0: 69 6e 74 65 72 66 61 63 65 73 20 2d 20 74 68 65  interfaces - the
76c0: 79 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20  y are supported 
76d0: 66 6f 72 20 62 61 63 6b 77 61 72 64 73 0a 2a 2a  for backwards.**
76e0: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 6f   compatibility o
76f0: 6e 6c 79 2e 20 20 41 70 70 6c 69 63 61 74 69 6f  nly.  Applicatio
7700: 6e 20 77 72 69 74 65 72 73 20 73 68 6f 75 6c 64  n writers should
7710: 20 62 65 20 61 77 61 72 65 20 74 68 61 74 0a 2a   be aware that.*
7720: 2a 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 69  * experimental i
7730: 6e 74 65 72 66 61 63 65 73 20 61 72 65 20 73 75  nterfaces are su
7740: 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20  bject to change 
7750: 69 6e 20 70 6f 69 6e 74 20 72 65 6c 65 61 73 65  in point release
7760: 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 6d  s..**.** These m
7770: 61 63 72 6f 73 20 75 73 65 64 20 74 6f 20 72 65  acros used to re
7780: 73 6f 6c 76 65 20 74 6f 20 76 61 72 69 6f 75 73  solve to various
7790: 20 6b 69 6e 64 73 20 6f 66 20 63 6f 6d 70 69 6c   kinds of compil
77a0: 65 72 20 6d 61 67 69 63 20 74 68 61 74 0a 2a 2a  er magic that.**
77b0: 20 77 6f 75 6c 64 20 67 65 6e 65 72 61 74 65 20   would generate 
77c0: 77 61 72 6e 69 6e 67 20 6d 65 73 73 61 67 65 73  warning messages
77d0: 20 77 68 65 6e 20 74 68 65 79 20 77 65 72 65 20   when they were 
77e0: 75 73 65 64 2e 20 20 42 75 74 20 74 68 61 74 0a  used.  But that.
77f0: 2a 2a 20 63 6f 6d 70 69 6c 65 72 20 6d 61 67 69  ** compiler magi
7800: 63 20 65 6e 64 65 64 20 75 70 20 67 65 6e 65 72  c ended up gener
7810: 61 74 69 6e 67 20 73 75 63 68 20 61 20 66 6c 75  ating such a flu
7820: 72 72 79 20 6f 66 20 62 75 67 20 72 65 70 6f 72  rry of bug repor
7830: 74 73 0a 2a 2a 20 74 68 61 74 20 77 65 20 68 61  ts.** that we ha
7840: 76 65 20 74 61 6b 65 6e 20 69 74 20 61 6c 6c 20  ve taken it all 
7850: 6f 75 74 20 61 6e 64 20 67 6f 6e 65 20 62 61 63  out and gone bac
7860: 6b 20 74 6f 20 75 73 69 6e 67 20 73 69 6d 70 6c  k to using simpl
7870: 65 0a 2a 2a 20 6e 6f 6f 70 20 6d 61 63 72 6f 73  e.** noop macros
7880: 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ..*/.#define SQL
7890: 49 54 45 5f 44 45 50 52 45 43 41 54 45 44 0a 23  ITE_DEPRECATED.#
78a0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 58  define SQLITE_EX
78b0: 50 45 52 49 4d 45 4e 54 41 4c 0a 0a 2f 2a 0a 2a  PERIMENTAL../*.*
78c0: 2a 20 45 6e 73 75 72 65 20 74 68 65 73 65 20 73  * Ensure these s
78d0: 79 6d 62 6f 6c 73 20 77 65 72 65 20 6e 6f 74 20  ymbols were not 
78e0: 64 65 66 69 6e 65 64 20 62 79 20 73 6f 6d 65 20  defined by some 
78f0: 70 72 65 76 69 6f 75 73 20 68 65 61 64 65 72 20  previous header 
7900: 66 69 6c 65 2e 0a 2a 2f 0a 23 69 66 64 65 66 20  file..*/.#ifdef 
7910: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 0a 23  SQLITE_VERSION.#
7920: 20 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 56 45   undef SQLITE_VE
7930: 52 53 49 4f 4e 0a 23 65 6e 64 69 66 0a 23 69 66  RSION.#endif.#if
7940: 64 65 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49  def SQLITE_VERSI
7950: 4f 4e 5f 4e 55 4d 42 45 52 0a 23 20 75 6e 64 65  ON_NUMBER.# unde
7960: 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e  f SQLITE_VERSION
7970: 5f 4e 55 4d 42 45 52 0a 23 65 6e 64 69 66 0a 0a  _NUMBER.#endif..
7980: 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
7990: 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 4c 69 62  Compile-Time Lib
79a0: 72 61 72 79 20 56 65 72 73 69 6f 6e 20 4e 75 6d  rary Version Num
79b0: 62 65 72 73 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65  bers.**.** ^(The
79c0: 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e   [SQLITE_VERSION
79d0: 5d 20 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72  ] C preprocessor
79e0: 20 6d 61 63 72 6f 20 69 6e 20 74 68 65 20 73 71   macro in the sq
79f0: 6c 69 74 65 33 2e 68 20 68 65 61 64 65 72 0a 2a  lite3.h header.*
7a00: 2a 20 65 76 61 6c 75 61 74 65 73 20 74 6f 20 61  * evaluates to a
7a10: 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20   string literal 
7a20: 74 68 61 74 20 69 73 20 74 68 65 20 53 51 4c 69  that is the SQLi
7a30: 74 65 20 76 65 72 73 69 6f 6e 20 69 6e 20 74 68  te version in th
7a40: 65 0a 2a 2a 20 66 6f 72 6d 61 74 20 22 58 2e 59  e.** format "X.Y
7a50: 2e 5a 22 20 77 68 65 72 65 20 58 20 69 73 20 74  .Z" where X is t
7a60: 68 65 20 6d 61 6a 6f 72 20 76 65 72 73 69 6f 6e  he major version
7a70: 20 6e 75 6d 62 65 72 20 28 61 6c 77 61 79 73 20   number (always 
7a80: 33 20 66 6f 72 0a 2a 2a 20 53 51 4c 69 74 65 33  3 for.** SQLite3
7a90: 29 20 61 6e 64 20 59 20 69 73 20 74 68 65 20 6d  ) and Y is the m
7aa0: 69 6e 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d  inor version num
7ab0: 62 65 72 20 61 6e 64 20 5a 20 69 73 20 74 68 65  ber and Z is the
7ac0: 20 72 65 6c 65 61 73 65 20 6e 75 6d 62 65 72 2e   release number.
7ad0: 29 5e 0a 2a 2a 20 5e 28 54 68 65 20 5b 53 51 4c  )^.** ^(The [SQL
7ae0: 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42  ITE_VERSION_NUMB
7af0: 45 52 5d 20 43 20 70 72 65 70 72 6f 63 65 73 73  ER] C preprocess
7b00: 6f 72 20 6d 61 63 72 6f 20 72 65 73 6f 6c 76 65  or macro resolve
7b10: 73 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 0a  s to an integer.
7b20: 2a 2a 20 77 69 74 68 20 74 68 65 20 76 61 6c 75  ** with the valu
7b30: 65 20 28 58 2a 31 30 30 30 30 30 30 20 2b 20 59  e (X*1000000 + Y
7b40: 2a 31 30 30 30 20 2b 20 5a 29 20 77 68 65 72 65  *1000 + Z) where
7b50: 20 58 2c 20 59 2c 20 61 6e 64 20 5a 20 61 72 65   X, Y, and Z are
7b60: 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20 6e 75 6d   the same.** num
7b70: 62 65 72 73 20 75 73 65 64 20 69 6e 20 5b 53 51  bers used in [SQ
7b80: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d 2e 29 5e  LITE_VERSION].)^
7b90: 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 56  .** The SQLITE_V
7ba0: 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 66 6f  ERSION_NUMBER fo
7bb0: 72 20 61 6e 79 20 67 69 76 65 6e 20 72 65 6c 65  r any given rele
7bc0: 61 73 65 20 6f 66 20 53 51 4c 69 74 65 20 77 69  ase of SQLite wi
7bd0: 6c 6c 20 61 6c 73 6f 0a 2a 2a 20 62 65 20 6c 61  ll also.** be la
7be0: 72 67 65 72 20 74 68 61 6e 20 74 68 65 20 72 65  rger than the re
7bf0: 6c 65 61 73 65 20 66 72 6f 6d 20 77 68 69 63 68  lease from which
7c00: 20 69 74 20 69 73 20 64 65 72 69 76 65 64 2e 20   it is derived. 
7c10: 20 45 69 74 68 65 72 20 59 20 77 69 6c 6c 0a 2a   Either Y will.*
7c20: 2a 20 62 65 20 68 65 6c 64 20 63 6f 6e 73 74 61  * be held consta
7c30: 6e 74 20 61 6e 64 20 5a 20 77 69 6c 6c 20 62 65  nt and Z will be
7c40: 20 69 6e 63 72 65 6d 65 6e 74 65 64 20 6f 72 20   incremented or 
7c50: 65 6c 73 65 20 59 20 77 69 6c 6c 20 62 65 20 69  else Y will be i
7c60: 6e 63 72 65 6d 65 6e 74 65 64 0a 2a 2a 20 61 6e  ncremented.** an
7c70: 64 20 5a 20 77 69 6c 6c 20 62 65 20 72 65 73 65  d Z will be rese
7c80: 74 20 74 6f 20 7a 65 72 6f 2e 0a 2a 2a 0a 2a 2a  t to zero..**.**
7c90: 20 53 69 6e 63 65 20 5b 76 65 72 73 69 6f 6e 20   Since [version 
7ca0: 33 2e 36 2e 31 38 5d 20 28 5b 64 61 74 65 6f 66  3.6.18] ([dateof
7cb0: 3a 33 2e 36 2e 31 38 5d 29 2c 20 0a 2a 2a 20 53  :3.6.18]), .** S
7cc0: 51 4c 69 74 65 20 73 6f 75 72 63 65 20 63 6f 64  QLite source cod
7cd0: 65 20 68 61 73 20 62 65 65 6e 20 73 74 6f 72 65  e has been store
7ce0: 64 20 69 6e 20 74 68 65 0a 2a 2a 20 3c 61 20 68  d in the.** <a h
7cf0: 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e  ref="http://www.
7d00: 66 6f 73 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 22  fossil-scm.org/"
7d10: 3e 46 6f 73 73 69 6c 20 63 6f 6e 66 69 67 75 72  >Fossil configur
7d20: 61 74 69 6f 6e 20 6d 61 6e 61 67 65 6d 65 6e 74  ation management
7d30: 0a 2a 2a 20 73 79 73 74 65 6d 3c 2f 61 3e 2e 20  .** system</a>. 
7d40: 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 53 4f 55   ^The SQLITE_SOU
7d50: 52 43 45 5f 49 44 20 6d 61 63 72 6f 20 65 76 61  RCE_ID macro eva
7d60: 6c 75 61 74 65 73 20 74 6f 0a 2a 2a 20 61 20 73  luates to.** a s
7d70: 74 72 69 6e 67 20 77 68 69 63 68 20 69 64 65 6e  tring which iden
7d80: 74 69 66 69 65 73 20 61 20 70 61 72 74 69 63 75  tifies a particu
7d90: 6c 61 72 20 63 68 65 63 6b 2d 69 6e 20 6f 66 20  lar check-in of 
7da0: 53 51 4c 69 74 65 0a 2a 2a 20 77 69 74 68 69 6e  SQLite.** within
7db0: 20 69 74 73 20 63 6f 6e 66 69 67 75 72 61 74 69   its configurati
7dc0: 6f 6e 20 6d 61 6e 61 67 65 6d 65 6e 74 20 73 79  on management sy
7dd0: 73 74 65 6d 2e 20 20 5e 54 68 65 20 53 51 4c 49  stem.  ^The SQLI
7de0: 54 45 5f 53 4f 55 52 43 45 5f 49 44 0a 2a 2a 20  TE_SOURCE_ID.** 
7df0: 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 73 20  string contains 
7e00: 74 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d  the date and tim
7e10: 65 20 6f 66 20 74 68 65 20 63 68 65 63 6b 2d 69  e of the check-i
7e20: 6e 20 28 55 54 43 29 20 61 6e 64 20 61 20 53 48  n (UTC) and a SH
7e30: 41 31 0a 2a 2a 20 6f 72 20 53 48 41 33 2d 32 35  A1.** or SHA3-25
7e40: 36 20 68 61 73 68 20 6f 66 20 74 68 65 20 65 6e  6 hash of the en
7e50: 74 69 72 65 20 73 6f 75 72 63 65 20 74 72 65 65  tire source tree
7e60: 2e 20 20 49 66 20 74 68 65 20 73 6f 75 72 63 65  .  If the source
7e70: 20 63 6f 64 65 20 68 61 73 0a 2a 2a 20 62 65 65   code has.** bee
7e80: 6e 20 65 64 69 74 65 64 20 69 6e 20 61 6e 79 20  n edited in any 
7e90: 77 61 79 20 73 69 6e 63 65 20 69 74 20 77 61 73  way since it was
7ea0: 20 6c 61 73 74 20 63 68 65 63 6b 65 64 20 69 6e   last checked in
7eb0: 2c 20 74 68 65 6e 20 74 68 65 20 6c 61 73 74 0a  , then the last.
7ec0: 2a 2a 20 66 6f 75 72 20 68 65 78 61 64 65 63 69  ** four hexadeci
7ed0: 6d 61 6c 20 64 69 67 69 74 73 20 6f 66 20 74 68  mal digits of th
7ee0: 65 20 68 61 73 68 20 6d 61 79 20 62 65 20 6d 6f  e hash may be mo
7ef0: 64 69 66 69 65 64 2e 0a 2a 2a 0a 2a 2a 20 53 65  dified..**.** Se
7f00: 65 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33  e also: [sqlite3
7f10: 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 5d 2c 0a  _libversion()],.
7f20: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6c 69 62 76  ** [sqlite3_libv
7f30: 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 5d  ersion_number()]
7f40: 2c 20 5b 73 71 6c 69 74 65 33 5f 73 6f 75 72 63  , [sqlite3_sourc
7f50: 65 69 64 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69  eid()],.** [sqli
7f60: 74 65 5f 76 65 72 73 69 6f 6e 28 29 5d 20 61 6e  te_version()] an
7f70: 64 20 5b 73 71 6c 69 74 65 5f 73 6f 75 72 63 65  d [sqlite_source
7f80: 5f 69 64 28 29 5d 2e 0a 2a 2f 0a 23 64 65 66 69  _id()]..*/.#defi
7f90: 6e 65 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f  ne SQLITE_VERSIO
7fa0: 4e 20 20 20 20 20 20 20 20 22 33 2e 32 34 2e 30  N        "3.24.0
7fb0: 22 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ".#define SQLITE
7fc0: 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20  _VERSION_NUMBER 
7fd0: 33 30 32 34 30 30 30 0a 23 64 65 66 69 6e 65 20  3024000.#define 
7fe0: 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44  SQLITE_SOURCE_ID
7ff0: 20 20 20 20 20 20 22 32 30 31 38 2d 30 36 2d 30        "2018-06-0
8000: 34 20 31 39 3a 32 34 3a 34 31 20 63 37 65 65 30  4 19:24:41 c7ee0
8010: 38 33 33 32 32 35 62 66 64 38 63 35 65 63 32 66  833225bfd8c5ec2f
8020: 39 62 66 36 32 62 39 37 63 34 65 30 34 64 30 33  9bf62b97c4e04d03
8030: 62 64 39 35 36 36 33 36 36 64 35 32 32 31 61 63  bd9566366d5221ac
8040: 38 66 62 31 39 39 61 38 37 63 61 22 0a 0a 2f 2a  8fb199a87ca"../*
8050: 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 75  .** CAPI3REF: Ru
8060: 6e 2d 54 69 6d 65 20 4c 69 62 72 61 72 79 20 56  n-Time Library V
8070: 65 72 73 69 6f 6e 20 4e 75 6d 62 65 72 73 0a 2a  ersion Numbers.*
8080: 2a 20 4b 45 59 57 4f 52 44 53 3a 20 73 71 6c 69  * KEYWORDS: sqli
8090: 74 65 33 5f 76 65 72 73 69 6f 6e 20 73 71 6c 69  te3_version sqli
80a0: 74 65 33 5f 73 6f 75 72 63 65 69 64 0a 2a 2a 0a  te3_sourceid.**.
80b0: 2a 2a 20 54 68 65 73 65 20 69 6e 74 65 72 66 61  ** These interfa
80c0: 63 65 73 20 70 72 6f 76 69 64 65 20 74 68 65 20  ces provide the 
80d0: 73 61 6d 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  same information
80e0: 20 61 73 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   as the [SQLITE_
80f0: 56 45 52 53 49 4f 4e 5d 2c 0a 2a 2a 20 5b 53 51  VERSION],.** [SQ
8100: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d  LITE_VERSION_NUM
8110: 42 45 52 5d 2c 20 61 6e 64 20 5b 53 51 4c 49 54  BER], and [SQLIT
8120: 45 5f 53 4f 55 52 43 45 5f 49 44 5d 20 43 20 70  E_SOURCE_ID] C p
8130: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8140: 6f 73 0a 2a 2a 20 62 75 74 20 61 72 65 20 61 73  os.** but are as
8150: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
8160: 65 20 6c 69 62 72 61 72 79 20 69 6e 73 74 65 61  e library instea
8170: 64 20 6f 66 20 74 68 65 20 68 65 61 64 65 72 20  d of the header 
8180: 66 69 6c 65 2e 20 20 5e 28 43 61 75 74 69 6f 75  file.  ^(Cautiou
8190: 73 0a 2a 2a 20 70 72 6f 67 72 61 6d 6d 65 72 73  s.** programmers
81a0: 20 6d 69 67 68 74 20 69 6e 63 6c 75 64 65 20 61   might include a
81b0: 73 73 65 72 74 28 29 20 73 74 61 74 65 6d 65 6e  ssert() statemen
81c0: 74 73 20 69 6e 20 74 68 65 69 72 20 61 70 70 6c  ts in their appl
81d0: 69 63 61 74 69 6f 6e 20 74 6f 0a 2a 2a 20 76 65  ication to.** ve
81e0: 72 69 66 79 20 74 68 61 74 20 76 61 6c 75 65 73  rify that values
81f0: 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65   returned by the
8200: 73 65 20 69 6e 74 65 72 66 61 63 65 73 20 6d 61  se interfaces ma
8210: 74 63 68 20 74 68 65 20 6d 61 63 72 6f 73 20 69  tch the macros i
8220: 6e 0a 2a 2a 20 74 68 65 20 68 65 61 64 65 72 2c  n.** the header,
8230: 20 61 6e 64 20 74 68 75 73 20 65 6e 73 75 72 65   and thus ensure
8240: 20 74 68 61 74 20 74 68 65 20 61 70 70 6c 69 63   that the applic
8250: 61 74 69 6f 6e 20 69 73 0a 2a 2a 20 63 6f 6d 70  ation is.** comp
8260: 69 6c 65 64 20 77 69 74 68 20 6d 61 74 63 68 69  iled with matchi
8270: 6e 67 20 6c 69 62 72 61 72 79 20 61 6e 64 20 68  ng library and h
8280: 65 61 64 65 72 20 66 69 6c 65 73 2e 0a 2a 2a 0a  eader files..**.
8290: 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  ** <blockquote><
82a0: 70 72 65 3e 0a 2a 2a 20 61 73 73 65 72 74 28 20  pre>.** assert( 
82b0: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
82c0: 6f 6e 5f 6e 75 6d 62 65 72 28 29 3d 3d 53 51 4c  on_number()==SQL
82d0: 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42  ITE_VERSION_NUMB
82e0: 45 52 20 29 3b 0a 2a 2a 20 61 73 73 65 72 74 28  ER );.** assert(
82f0: 20 73 74 72 6e 63 6d 70 28 73 71 6c 69 74 65 33   strncmp(sqlite3
8300: 5f 73 6f 75 72 63 65 69 64 28 29 2c 53 51 4c 49  _sourceid(),SQLI
8310: 54 45 5f 53 4f 55 52 43 45 5f 49 44 2c 38 30 29  TE_SOURCE_ID,80)
8320: 3d 3d 30 20 29 3b 0a 2a 2a 20 61 73 73 65 72 74  ==0 );.** assert
8330: 28 20 73 74 72 63 6d 70 28 73 71 6c 69 74 65 33  ( strcmp(sqlite3
8340: 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 2c 53 51  _libversion(),SQ
8350: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 29 3d 3d 30  LITE_VERSION)==0
8360: 20 29 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62   );.** </pre></b
8370: 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 2a 2a 0a  lockquote>)^.**.
8380: 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
8390: 76 65 72 73 69 6f 6e 5b 5d 20 73 74 72 69 6e 67  version[] string
83a0: 20 63 6f 6e 73 74 61 6e 74 20 63 6f 6e 74 61 69   constant contai
83b0: 6e 73 20 74 68 65 20 74 65 78 74 20 6f 66 20 5b  ns the text of [
83c0: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d 0a  SQLITE_VERSION].
83d0: 2a 2a 20 6d 61 63 72 6f 2e 20 20 5e 54 68 65 20  ** macro.  ^The 
83e0: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
83f0: 6f 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  on() function re
8400: 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20  turns a pointer 
8410: 74 6f 20 74 68 65 0a 2a 2a 20 74 6f 20 74 68 65  to the.** to the
8420: 20 73 71 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e   sqlite3_version
8430: 5b 5d 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61  [] string consta
8440: 6e 74 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33  nt.  The sqlite3
8450: 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29 0a 2a 2a  _libversion().**
8460: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 70 72 6f   function is pro
8470: 76 69 64 65 64 20 66 6f 72 20 75 73 65 20 69 6e  vided for use in
8480: 20 44 4c 4c 73 20 73 69 6e 63 65 20 44 4c 4c 20   DLLs since DLL 
8490: 75 73 65 72 73 20 75 73 75 61 6c 6c 79 20 64 6f  users usually do
84a0: 20 6e 6f 74 20 68 61 76 65 0a 2a 2a 20 64 69 72   not have.** dir
84b0: 65 63 74 20 61 63 63 65 73 73 20 74 6f 20 73 74  ect access to st
84c0: 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 20 77  ring constants w
84d0: 69 74 68 69 6e 20 74 68 65 20 44 4c 4c 2e 20 20  ithin the DLL.  
84e0: 5e 54 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  ^The.** sqlite3_
84f0: 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
8500: 72 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  r() function ret
8510: 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20  urns an integer 
8520: 65 71 75 61 6c 20 74 6f 0a 2a 2a 20 5b 53 51 4c  equal to.** [SQL
8530: 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42  ITE_VERSION_NUMB
8540: 45 52 5d 2e 20 20 5e 28 54 68 65 20 73 71 6c 69  ER].  ^(The sqli
8550: 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 20 66  te3_sourceid() f
8560: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
8570: 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  .** a pointer to
8580: 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61   a string consta
8590: 6e 74 20 77 68 6f 73 65 20 76 61 6c 75 65 20 69  nt whose value i
85a0: 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68  s the same as th
85b0: 65 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 53 4f  e .** [SQLITE_SO
85c0: 55 52 43 45 5f 49 44 5d 20 43 20 70 72 65 70 72  URCE_ID] C prepr
85d0: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e 20 20  ocessor macro.  
85e0: 45 78 63 65 70 74 20 69 66 20 53 51 4c 69 74 65  Except if SQLite
85f0: 20 69 73 20 62 75 69 6c 74 0a 2a 2a 20 75 73 69   is built.** usi
8600: 6e 67 20 61 6e 20 65 64 69 74 65 64 20 63 6f 70  ng an edited cop
8610: 79 20 6f 66 20 5b 74 68 65 20 61 6d 61 6c 67 61  y of [the amalga
8620: 6d 61 74 69 6f 6e 5d 2c 20 74 68 65 6e 20 74 68  mation], then th
8630: 65 20 6c 61 73 74 20 66 6f 75 72 20 63 68 61 72  e last four char
8640: 61 63 74 65 72 73 0a 2a 2a 20 6f 66 20 74 68 65  acters.** of the
8650: 20 68 61 73 68 20 6d 69 67 68 74 20 62 65 20 64   hash might be d
8660: 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 5b 53  ifferent from [S
8670: 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44 5d  QLITE_SOURCE_ID]
8680: 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c  .)^.**.** See al
8690: 73 6f 3a 20 5b 73 71 6c 69 74 65 5f 76 65 72 73  so: [sqlite_vers
86a0: 69 6f 6e 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  ion()] and [sqli
86b0: 74 65 5f 73 6f 75 72 63 65 5f 69 64 28 29 5d 2e  te_source_id()].
86c0: 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63  .*/.SQLITE_API c
86d0: 6f 6e 73 74 20 63 68 61 72 20 73 71 6c 69 74 65  onst char sqlite
86e0: 33 5f 76 65 72 73 69 6f 6e 5b 5d 20 3d 20 53 51  3_version[] = SQ
86f0: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 3b 0a 53 51  LITE_VERSION;.SQ
8700: 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63  LITE_API const c
8710: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 6c 69 62  har *sqlite3_lib
8720: 76 65 72 73 69 6f 6e 28 76 6f 69 64 29 3b 0a 53  version(void);.S
8730: 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20  QLITE_API const 
8740: 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 73 6f  char *sqlite3_so
8750: 75 72 63 65 69 64 28 76 6f 69 64 29 3b 0a 53 51  urceid(void);.SQ
8760: 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
8770: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f  ite3_libversion_
8780: 6e 75 6d 62 65 72 28 76 6f 69 64 29 3b 0a 0a 2f  number(void);../
8790: 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52  *.** CAPI3REF: R
87a0: 75 6e 2d 54 69 6d 65 20 4c 69 62 72 61 72 79 20  un-Time Library 
87b0: 43 6f 6d 70 69 6c 61 74 69 6f 6e 20 4f 70 74 69  Compilation Opti
87c0: 6f 6e 73 20 44 69 61 67 6e 6f 73 74 69 63 73 0a  ons Diagnostics.
87d0: 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
87e0: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
87f0: 5f 75 73 65 64 28 29 20 66 75 6e 63 74 69 6f 6e  _used() function
8800: 20 72 65 74 75 72 6e 73 20 30 20 6f 72 20 31 20   returns 0 or 1 
8810: 0a 2a 2a 20 69 6e 64 69 63 61 74 69 6e 67 20 77  .** indicating w
8820: 68 65 74 68 65 72 20 74 68 65 20 73 70 65 63 69  hether the speci
8830: 66 69 65 64 20 6f 70 74 69 6f 6e 20 77 61 73 20  fied option was 
8840: 64 65 66 69 6e 65 64 20 61 74 20 0a 2a 2a 20 63  defined at .** c
8850: 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 20 5e 54  ompile time.  ^T
8860: 68 65 20 53 51 4c 49 54 45 5f 20 70 72 65 66 69  he SQLITE_ prefi
8870: 78 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64  x may be omitted
8880: 20 66 72 6f 6d 20 74 68 65 20 0a 2a 2a 20 6f 70   from the .** op
8890: 74 69 6f 6e 20 6e 61 6d 65 20 70 61 73 73 65 64  tion name passed
88a0: 20 74 6f 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70   to sqlite3_comp
88b0: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29  ileoption_used()
88c0: 2e 20 20 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  .  .**.** ^The s
88d0: 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
88e0: 74 69 6f 6e 5f 67 65 74 28 29 20 66 75 6e 63 74  tion_get() funct
88f0: 69 6f 6e 20 61 6c 6c 6f 77 73 20 69 74 65 72 61  ion allows itera
8900: 74 69 6e 67 0a 2a 2a 20 6f 76 65 72 20 74 68 65  ting.** over the
8910: 20 6c 69 73 74 20 6f 66 20 6f 70 74 69 6f 6e 73   list of options
8920: 20 74 68 61 74 20 77 65 72 65 20 64 65 66 69 6e   that were defin
8930: 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69  ed at compile ti
8940: 6d 65 20 62 79 0a 2a 2a 20 72 65 74 75 72 6e 69  me by.** returni
8950: 6e 67 20 74 68 65 20 4e 2d 74 68 20 63 6f 6d 70  ng the N-th comp
8960: 69 6c 65 20 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile time option 
8970: 73 74 72 69 6e 67 2e 20 20 5e 49 66 20 4e 20 69  string.  ^If N i
8980: 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 2c 0a  s out of range,.
8990: 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69  ** sqlite3_compi
89a0: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 20 72  leoption_get() r
89b0: 65 74 75 72 6e 73 20 61 20 4e 55 4c 4c 20 70 6f  eturns a NULL po
89c0: 69 6e 74 65 72 2e 20 20 5e 54 68 65 20 53 51 4c  inter.  ^The SQL
89d0: 49 54 45 5f 20 0a 2a 2a 20 70 72 65 66 69 78 20  ITE_ .** prefix 
89e0: 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  is omitted from 
89f0: 61 6e 79 20 73 74 72 69 6e 67 73 20 72 65 74 75  any strings retu
8a00: 72 6e 65 64 20 62 79 20 0a 2a 2a 20 73 71 6c 69  rned by .** sqli
8a10: 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
8a20: 6e 5f 67 65 74 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e  n_get()..**.** ^
8a30: 53 75 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20  Support for the 
8a40: 64 69 61 67 6e 6f 73 74 69 63 20 66 75 6e 63 74  diagnostic funct
8a50: 69 6f 6e 73 20 73 71 6c 69 74 65 33 5f 63 6f 6d  ions sqlite3_com
8a60: 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28  pileoption_used(
8a70: 29 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65 33  ).** and sqlite3
8a80: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
8a90: 65 74 28 29 20 6d 61 79 20 62 65 20 6f 6d 69 74  et() may be omit
8aa0: 74 65 64 20 62 79 20 73 70 65 63 69 66 79 69 6e  ted by specifyin
8ab0: 67 20 74 68 65 20 0a 2a 2a 20 5b 53 51 4c 49 54  g the .** [SQLIT
8ac0: 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50  E_OMIT_COMPILEOP
8ad0: 54 49 4f 4e 5f 44 49 41 47 53 5d 20 6f 70 74 69  TION_DIAGS] opti
8ae0: 6f 6e 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69  on at compile ti
8af0: 6d 65 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c  me..**.** See al
8b00: 73 6f 3a 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  so: SQL function
8b10: 73 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c  s [sqlite_compil
8b20: 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20  eoption_used()] 
8b30: 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 5f 63  and.** [sqlite_c
8b40: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
8b50: 28 29 5d 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d  ()] and the [com
8b60: 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61  pile_options pra
8b70: 67 6d 61 5d 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66  gma]..*/.#ifndef
8b80: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d   SQLITE_OMIT_COM
8b90: 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53  PILEOPTION_DIAGS
8ba0: 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
8bb0: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
8bc0: 70 74 69 6f 6e 5f 75 73 65 64 28 63 6f 6e 73 74  ption_used(const
8bd0: 20 63 68 61 72 20 2a 7a 4f 70 74 4e 61 6d 65 29   char *zOptName)
8be0: 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e  ;.SQLITE_API con
8bf0: 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
8c00: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
8c10: 65 74 28 69 6e 74 20 4e 29 3b 0a 23 65 6e 64 69  et(int N);.#endi
8c20: 66 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  f../*.** CAPI3RE
8c30: 46 3a 20 54 65 73 74 20 54 6f 20 53 65 65 20 49  F: Test To See I
8c40: 66 20 54 68 65 20 4c 69 62 72 61 72 79 20 49 73  f The Library Is
8c50: 20 54 68 72 65 61 64 73 61 66 65 0a 2a 2a 0a 2a   Threadsafe.**.*
8c60: 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 74  * ^The sqlite3_t
8c70: 68 72 65 61 64 73 61 66 65 28 29 20 66 75 6e 63  hreadsafe() func
8c80: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 7a 65 72  tion returns zer
8c90: 6f 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66  o if and only if
8ca0: 0a 2a 2a 20 53 51 4c 69 74 65 20 77 61 73 20 63  .** SQLite was c
8cb0: 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 6d 75 74  ompiled with mut
8cc0: 65 78 69 6e 67 20 63 6f 64 65 20 6f 6d 69 74 74  exing code omitt
8cd0: 65 64 20 64 75 65 20 74 6f 20 74 68 65 0a 2a 2a  ed due to the.**
8ce0: 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53   [SQLITE_THREADS
8cf0: 41 46 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  AFE] compile-tim
8d00: 65 20 6f 70 74 69 6f 6e 20 62 65 69 6e 67 20 73  e option being s
8d10: 65 74 20 74 6f 20 30 2e 0a 2a 2a 0a 2a 2a 20 53  et to 0..**.** S
8d20: 51 4c 69 74 65 20 63 61 6e 20 62 65 20 63 6f 6d  QLite can be com
8d30: 70 69 6c 65 64 20 77 69 74 68 20 6f 72 20 77 69  piled with or wi
8d40: 74 68 6f 75 74 20 6d 75 74 65 78 65 73 2e 20 20  thout mutexes.  
8d50: 57 68 65 6e 0a 2a 2a 20 74 68 65 20 5b 53 51 4c  When.** the [SQL
8d60: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20  ITE_THREADSAFE] 
8d70: 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C preprocessor m
8d80: 61 63 72 6f 20 69 73 20 31 20 6f 72 20 32 2c 20  acro is 1 or 2, 
8d90: 6d 75 74 65 78 65 73 0a 2a 2a 20 61 72 65 20 65  mutexes.** are e
8da0: 6e 61 62 6c 65 64 20 61 6e 64 20 53 51 4c 69 74  nabled and SQLit
8db0: 65 20 69 73 20 74 68 72 65 61 64 73 61 66 65 2e  e is threadsafe.
8dc0: 20 20 57 68 65 6e 20 74 68 65 0a 2a 2a 20 5b 53    When the.** [S
8dd0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
8de0: 5d 20 6d 61 63 72 6f 20 69 73 20 30 2c 20 0a 2a  ] macro is 0, .*
8df0: 2a 20 74 68 65 20 6d 75 74 65 78 65 73 20 61 72  * the mutexes ar
8e00: 65 20 6f 6d 69 74 74 65 64 2e 20 20 57 69 74 68  e omitted.  With
8e10: 6f 75 74 20 74 68 65 20 6d 75 74 65 78 65 73 2c  out the mutexes,
8e20: 20 69 74 20 69 73 20 6e 6f 74 20 73 61 66 65 0a   it is not safe.
8e30: 2a 2a 20 74 6f 20 75 73 65 20 53 51 4c 69 74 65  ** to use SQLite
8e40: 20 63 6f 6e 63 75 72 72 65 6e 74 6c 79 20 66 72   concurrently fr
8e50: 6f 6d 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65  om more than one
8e60: 20 74 68 72 65 61 64 2e 0a 2a 2a 0a 2a 2a 20 45   thread..**.** E
8e70: 6e 61 62 6c 69 6e 67 20 6d 75 74 65 78 65 73 20  nabling mutexes 
8e80: 69 6e 63 75 72 73 20 61 20 6d 65 61 73 75 72 61  incurs a measura
8e90: 62 6c 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  ble performance 
8ea0: 70 65 6e 61 6c 74 79 2e 0a 2a 2a 20 53 6f 20 69  penalty..** So i
8eb0: 66 20 73 70 65 65 64 20 69 73 20 6f 66 20 75 74  f speed is of ut
8ec0: 6d 6f 73 74 20 69 6d 70 6f 72 74 61 6e 63 65 2c  most importance,
8ed0: 20 69 74 20 6d 61 6b 65 73 20 73 65 6e 73 65 20   it makes sense 
8ee0: 74 6f 20 64 69 73 61 62 6c 65 0a 2a 2a 20 74 68  to disable.** th
8ef0: 65 20 6d 75 74 65 78 65 73 2e 20 20 42 75 74 20  e mutexes.  But 
8f00: 66 6f 72 20 6d 61 78 69 6d 75 6d 20 73 61 66 65  for maximum safe
8f10: 74 79 2c 20 6d 75 74 65 78 65 73 20 73 68 6f 75  ty, mutexes shou
8f20: 6c 64 20 62 65 20 65 6e 61 62 6c 65 64 2e 0a 2a  ld be enabled..*
8f30: 2a 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 62  * ^The default b
8f40: 65 68 61 76 69 6f 72 20 69 73 20 66 6f 72 20 6d  ehavior is for m
8f50: 75 74 65 78 65 73 20 74 6f 20 62 65 20 65 6e 61  utexes to be ena
8f60: 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73  bled..**.** This
8f70: 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62   interface can b
8f80: 65 20 75 73 65 64 20 62 79 20 61 6e 20 61 70 70  e used by an app
8f90: 6c 69 63 61 74 69 6f 6e 20 74 6f 20 6d 61 6b 65  lication to make
8fa0: 20 73 75 72 65 20 74 68 61 74 20 74 68 65 0a 2a   sure that the.*
8fb0: 2a 20 76 65 72 73 69 6f 6e 20 6f 66 20 53 51 4c  * version of SQL
8fc0: 69 74 65 20 74 68 61 74 20 69 74 20 69 73 20 6c  ite that it is l
8fd0: 69 6e 6b 69 6e 67 20 61 67 61 69 6e 73 74 20 77  inking against w
8fe0: 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  as compiled with
8ff0: 0a 2a 2a 20 74 68 65 20 64 65 73 69 72 65 64 20  .** the desired 
9000: 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20 5b  setting of the [
9010: 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
9020: 45 5d 20 6d 61 63 72 6f 2e 0a 2a 2a 0a 2a 2a 20  E] macro..**.** 
9030: 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 6f  This interface o
9040: 6e 6c 79 20 72 65 70 6f 72 74 73 20 6f 6e 20 74  nly reports on t
9050: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  he compile-time 
9060: 6d 75 74 65 78 20 73 65 74 74 69 6e 67 0a 2a 2a  mutex setting.**
9070: 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   of the [SQLITE_
9080: 54 48 52 45 41 44 53 41 46 45 5d 20 66 6c 61 67  THREADSAFE] flag
9090: 2e 20 20 49 66 20 53 51 4c 69 74 65 20 69 73 20  .  If SQLite is 
90a0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a  compiled with.**
90b0: 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
90c0: 46 45 3d 31 20 6f 72 20 3d 32 20 74 68 65 6e 20  FE=1 or =2 then 
90d0: 6d 75 74 65 78 65 73 20 61 72 65 20 65 6e 61 62  mutexes are enab
90e0: 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20 62  led by default b
90f0: 75 74 0a 2a 2a 20 63 61 6e 20 62 65 20 66 75 6c  ut.** can be ful
9100: 6c 79 20 6f 72 20 70 61 72 74 69 61 6c 6c 79 20  ly or partially 
9110: 64 69 73 61 62 6c 65 64 20 75 73 69 6e 67 20 61  disabled using a
9120: 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65   call to [sqlite
9130: 33 5f 63 6f 6e 66 69 67 28 29 5d 0a 2a 2a 20 77  3_config()].** w
9140: 69 74 68 20 74 68 65 20 76 65 72 62 73 20 5b 53  ith the verbs [S
9150: 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e  QLITE_CONFIG_SIN
9160: 47 4c 45 54 48 52 45 41 44 5d 2c 20 5b 53 51 4c  GLETHREAD], [SQL
9170: 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49  ITE_CONFIG_MULTI
9180: 54 48 52 45 41 44 5d 2c 0a 2a 2a 20 6f 72 20 5b  THREAD],.** or [
9190: 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45  SQLITE_CONFIG_SE
91a0: 52 49 41 4c 49 5a 45 44 5d 2e 20 20 5e 28 54 68  RIALIZED].  ^(Th
91b0: 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f  e return value o
91c0: 66 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33  f the.** sqlite3
91d0: 5f 74 68 72 65 61 64 73 61 66 65 28 29 20 66 75  _threadsafe() fu
91e0: 6e 63 74 69 6f 6e 20 73 68 6f 77 73 20 6f 6e 6c  nction shows onl
91f0: 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69  y the compile-ti
9200: 6d 65 20 73 65 74 74 69 6e 67 20 6f 66 0a 2a 2a  me setting of.**
9210: 20 74 68 72 65 61 64 20 73 61 66 65 74 79 2c 20   thread safety, 
9220: 6e 6f 74 20 61 6e 79 20 72 75 6e 2d 74 69 6d 65  not any run-time
9230: 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 61 74   changes to that
9240: 20 73 65 74 74 69 6e 67 20 6d 61 64 65 20 62 79   setting made by
9250: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  .** sqlite3_conf
9260: 69 67 28 29 2e 20 49 6e 20 6f 74 68 65 72 20 77  ig(). In other w
9270: 6f 72 64 73 2c 20 74 68 65 20 72 65 74 75 72 6e  ords, the return
9280: 20 76 61 6c 75 65 20 66 72 6f 6d 20 73 71 6c 69   value from sqli
9290: 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29  te3_threadsafe()
92a0: 0a 2a 2a 20 69 73 20 75 6e 63 68 61 6e 67 65 64  .** is unchanged
92b0: 20 62 79 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c   by calls to sql
92c0: 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 2e 29 5e  ite3_config().)^
92d0: 0a 2a 2a 0a 2a 2a 20 53 65 65 20 74 68 65 20 5b  .**.** See the [
92e0: 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
92f0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  documentation fo
9300: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
9310: 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2f 0a 53 51 4c  ormation..*/.SQL
9320: 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
9330: 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 76  te3_threadsafe(v
9340: 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  oid);../*.** CAP
9350: 49 33 52 45 46 3a 20 44 61 74 61 62 61 73 65 20  I3REF: Database 
9360: 43 6f 6e 6e 65 63 74 69 6f 6e 20 48 61 6e 64 6c  Connection Handl
9370: 65 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b  e.** KEYWORDS: {
9380: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
9390: 69 6f 6e 7d 20 7b 64 61 74 61 62 61 73 65 20 63  ion} {database c
93a0: 6f 6e 6e 65 63 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a  onnections}.**.*
93b0: 2a 20 45 61 63 68 20 6f 70 65 6e 20 53 51 4c 69  * Each open SQLi
93c0: 74 65 20 64 61 74 61 62 61 73 65 20 69 73 20 72  te database is r
93d0: 65 70 72 65 73 65 6e 74 65 64 20 62 79 20 61 20  epresented by a 
93e0: 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e  pointer to an in
93f0: 73 74 61 6e 63 65 20 6f 66 0a 2a 2a 20 74 68 65  stance of.** the
9400: 20 6f 70 61 71 75 65 20 73 74 72 75 63 74 75 72   opaque structur
9410: 65 20 6e 61 6d 65 64 20 22 73 71 6c 69 74 65 33  e named "sqlite3
9420: 22 2e 20 20 49 74 20 69 73 20 75 73 65 66 75 6c  ".  It is useful
9430: 20 74 6f 20 74 68 69 6e 6b 20 6f 66 20 61 6e 20   to think of an 
9440: 73 71 6c 69 74 65 33 0a 2a 2a 20 70 6f 69 6e 74  sqlite3.** point
9450: 65 72 20 61 73 20 61 6e 20 6f 62 6a 65 63 74 2e  er as an object.
9460: 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 6f    The [sqlite3_o
9470: 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  pen()], [sqlite3
9480: 5f 6f 70 65 6e 31 36 28 29 5d 2c 20 61 6e 64 0a  _open16()], and.
9490: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ** [sqlite3_open
94a0: 5f 76 32 28 29 5d 20 69 6e 74 65 72 66 61 63 65  _v2()] interface
94b0: 73 20 61 72 65 20 69 74 73 20 63 6f 6e 73 74 72  s are its constr
94c0: 75 63 74 6f 72 73 2c 20 61 6e 64 20 5b 73 71 6c  uctors, and [sql
94d0: 69 74 65 33 5f 63 6c 6f 73 65 28 29 5d 0a 2a 2a  ite3_close()].**
94e0: 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6c   and [sqlite3_cl
94f0: 6f 73 65 5f 76 32 28 29 5d 20 61 72 65 20 69 74  ose_v2()] are it
9500: 73 20 64 65 73 74 72 75 63 74 6f 72 73 2e 20 20  s destructors.  
9510: 54 68 65 72 65 20 61 72 65 20 6d 61 6e 79 20 6f  There are many o
9520: 74 68 65 72 0a 2a 2a 20 69 6e 74 65 72 66 61 63  ther.** interfac
9530: 65 73 20 28 73 75 63 68 20 61 73 0a 2a 2a 20 5b  es (such as.** [
9540: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
9550: 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  v2()], [sqlite3_
9560: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28  create_function(
9570: 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69  )], and.** [sqli
9580: 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74  te3_busy_timeout
9590: 28 29 5d 20 74 6f 20 6e 61 6d 65 20 62 75 74 20  ()] to name but 
95a0: 74 68 72 65 65 29 20 74 68 61 74 20 61 72 65 20  three) that are 
95b0: 6d 65 74 68 6f 64 73 20 6f 6e 20 61 6e 0a 2a 2a  methods on an.**
95c0: 20 73 71 6c 69 74 65 33 20 6f 62 6a 65 63 74 2e   sqlite3 object.
95d0: 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75  .*/.typedef stru
95e0: 63 74 20 73 71 6c 69 74 65 33 20 73 71 6c 69 74  ct sqlite3 sqlit
95f0: 65 33 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  e3;../*.** CAPI3
9600: 52 45 46 3a 20 36 34 2d 42 69 74 20 49 6e 74 65  REF: 64-Bit Inte
9610: 67 65 72 20 54 79 70 65 73 0a 2a 2a 20 4b 45 59  ger Types.** KEY
9620: 57 4f 52 44 53 3a 20 73 71 6c 69 74 65 5f 69 6e  WORDS: sqlite_in
9630: 74 36 34 20 73 71 6c 69 74 65 5f 75 69 6e 74 36  t64 sqlite_uint6
9640: 34 0a 2a 2a 0a 2a 2a 20 42 65 63 61 75 73 65 20  4.**.** Because 
9650: 74 68 65 72 65 20 69 73 20 6e 6f 20 63 72 6f 73  there is no cros
9660: 73 2d 70 6c 61 74 66 6f 72 6d 20 77 61 79 20 74  s-platform way t
9670: 6f 20 73 70 65 63 69 66 79 20 36 34 2d 62 69 74  o specify 64-bit
9680: 20 69 6e 74 65 67 65 72 20 74 79 70 65 73 0a 2a   integer types.*
9690: 2a 20 53 51 4c 69 74 65 20 69 6e 63 6c 75 64 65  * SQLite include
96a0: 73 20 74 79 70 65 64 65 66 73 20 66 6f 72 20 36  s typedefs for 6
96b0: 34 2d 62 69 74 20 73 69 67 6e 65 64 20 61 6e 64  4-bit signed and
96c0: 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65   unsigned intege
96d0: 72 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71  rs..**.** The sq
96e0: 6c 69 74 65 33 5f 69 6e 74 36 34 20 61 6e 64 20  lite3_int64 and 
96f0: 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 20 61  sqlite3_uint64 a
9700: 72 65 20 74 68 65 20 70 72 65 66 65 72 72 65 64  re the preferred
9710: 20 74 79 70 65 20 64 65 66 69 6e 69 74 69 6f 6e   type definition
9720: 73 2e 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  s..** The sqlite
9730: 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c 69 74  _int64 and sqlit
9740: 65 5f 75 69 6e 74 36 34 20 74 79 70 65 73 20 61  e_uint64 types a
9750: 72 65 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72  re supported for
9760: 20 62 61 63 6b 77 61 72 64 73 0a 2a 2a 20 63 6f   backwards.** co
9770: 6d 70 61 74 69 62 69 6c 69 74 79 20 6f 6e 6c 79  mpatibility only
9780: 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ..**.** ^The sql
9790: 69 74 65 33 5f 69 6e 74 36 34 20 61 6e 64 20 73  ite3_int64 and s
97a0: 71 6c 69 74 65 5f 69 6e 74 36 34 20 74 79 70 65  qlite_int64 type
97b0: 73 20 63 61 6e 20 73 74 6f 72 65 20 69 6e 74 65  s can store inte
97c0: 67 65 72 20 76 61 6c 75 65 73 0a 2a 2a 20 62 65  ger values.** be
97d0: 74 77 65 65 6e 20 2d 39 32 32 33 33 37 32 30 33  tween -922337203
97e0: 36 38 35 34 37 37 35 38 30 38 20 61 6e 64 20 2b  6854775808 and +
97f0: 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37 35  9223372036854775
9800: 38 30 37 20 69 6e 63 6c 75 73 69 76 65 2e 20 20  807 inclusive.  
9810: 5e 54 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  ^The.** sqlite3_
9820: 75 69 6e 74 36 34 20 61 6e 64 20 73 71 6c 69 74  uint64 and sqlit
9830: 65 5f 75 69 6e 74 36 34 20 74 79 70 65 73 20 63  e_uint64 types c
9840: 61 6e 20 73 74 6f 72 65 20 69 6e 74 65 67 65 72  an store integer
9850: 20 76 61 6c 75 65 73 20 0a 2a 2a 20 62 65 74 77   values .** betw
9860: 65 65 6e 20 30 20 61 6e 64 20 2b 31 38 34 34 36  een 0 and +18446
9870: 37 34 34 30 37 33 37 30 39 35 35 31 36 31 35 20  744073709551615 
9880: 69 6e 63 6c 75 73 69 76 65 2e 0a 2a 2f 0a 23 69  inclusive..*/.#i
9890: 66 64 65 66 20 53 51 4c 49 54 45 5f 49 4e 54 36  fdef SQLITE_INT6
98a0: 34 5f 54 59 50 45 0a 20 20 74 79 70 65 64 65 66  4_TYPE.  typedef
98b0: 20 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59   SQLITE_INT64_TY
98c0: 50 45 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b  PE sqlite_int64;
98d0: 0a 23 20 69 66 64 65 66 20 53 51 4c 49 54 45 5f  .# ifdef SQLITE_
98e0: 55 49 4e 54 36 34 5f 54 59 50 45 0a 20 20 20 20  UINT64_TYPE.    
98f0: 74 79 70 65 64 65 66 20 53 51 4c 49 54 45 5f 55  typedef SQLITE_U
9900: 49 4e 54 36 34 5f 54 59 50 45 20 73 71 6c 69 74  INT64_TYPE sqlit
9910: 65 5f 75 69 6e 74 36 34 3b 0a 23 20 65 6c 73 65  e_uint64;.# else
9920: 20 20 0a 20 20 20 20 74 79 70 65 64 65 66 20 75    .    typedef u
9930: 6e 73 69 67 6e 65 64 20 53 51 4c 49 54 45 5f 49  nsigned SQLITE_I
9940: 4e 54 36 34 5f 54 59 50 45 20 73 71 6c 69 74 65  NT64_TYPE sqlite
9950: 5f 75 69 6e 74 36 34 3b 0a 23 20 65 6e 64 69 66  _uint64;.# endif
9960: 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28 5f  .#elif defined(_
9970: 4d 53 43 5f 56 45 52 29 20 7c 7c 20 64 65 66 69  MSC_VER) || defi
9980: 6e 65 64 28 5f 5f 42 4f 52 4c 41 4e 44 43 5f 5f  ned(__BORLANDC__
9990: 29 0a 20 20 74 79 70 65 64 65 66 20 5f 5f 69 6e  ).  typedef __in
99a0: 74 36 34 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  t64 sqlite_int64
99b0: 3b 0a 20 20 74 79 70 65 64 65 66 20 75 6e 73 69  ;.  typedef unsi
99c0: 67 6e 65 64 20 5f 5f 69 6e 74 36 34 20 73 71 6c  gned __int64 sql
99d0: 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23 65 6c 73  ite_uint64;.#els
99e0: 65 0a 20 20 74 79 70 65 64 65 66 20 6c 6f 6e 67  e.  typedef long
99f0: 20 6c 6f 6e 67 20 69 6e 74 20 73 71 6c 69 74 65   long int sqlite
9a00: 5f 69 6e 74 36 34 3b 0a 20 20 74 79 70 65 64 65  _int64;.  typede
9a10: 66 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20  f unsigned long 
9a20: 6c 6f 6e 67 20 69 6e 74 20 73 71 6c 69 74 65 5f  long int sqlite_
9a30: 75 69 6e 74 36 34 3b 0a 23 65 6e 64 69 66 0a 74  uint64;.#endif.t
9a40: 79 70 65 64 65 66 20 73 71 6c 69 74 65 5f 69 6e  ypedef sqlite_in
9a50: 74 36 34 20 73 71 6c 69 74 65 33 5f 69 6e 74 36  t64 sqlite3_int6
9a60: 34 3b 0a 74 79 70 65 64 65 66 20 73 71 6c 69 74  4;.typedef sqlit
9a70: 65 5f 75 69 6e 74 36 34 20 73 71 6c 69 74 65 33  e_uint64 sqlite3
9a80: 5f 75 69 6e 74 36 34 3b 0a 0a 2f 2a 0a 2a 2a 20  _uint64;../*.** 
9a90: 49 66 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72  If compiling for
9aa0: 20 61 20 70 72 6f 63 65 73 73 6f 72 20 74 68 61   a processor tha
9ab0: 74 20 6c 61 63 6b 73 20 66 6c 6f 61 74 69 6e 67  t lacks floating
9ac0: 20 70 6f 69 6e 74 20 73 75 70 70 6f 72 74 2c 0a   point support,.
9ad0: 2a 2a 20 73 75 62 73 74 69 74 75 74 65 20 69 6e  ** substitute in
9ae0: 74 65 67 65 72 20 66 6f 72 20 66 6c 6f 61 74 69  teger for floati
9af0: 6e 67 2d 70 6f 69 6e 74 2e 0a 2a 2f 0a 23 69 66  ng-point..*/.#if
9b00: 64 65 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  def SQLITE_OMIT_
9b10: 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 0a 23  FLOATING_POINT.#
9b20: 20 64 65 66 69 6e 65 20 64 6f 75 62 6c 65 20 73   define double s
9b30: 71 6c 69 74 65 33 5f 69 6e 74 36 34 0a 23 65 6e  qlite3_int64.#en
9b40: 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  dif../*.** CAPI3
9b50: 52 45 46 3a 20 43 6c 6f 73 69 6e 67 20 41 20 44  REF: Closing A D
9b60: 61 74 61 62 61 73 65 20 43 6f 6e 6e 65 63 74 69  atabase Connecti
9b70: 6f 6e 0a 2a 2a 20 44 45 53 54 52 55 43 54 4f 52  on.** DESTRUCTOR
9b80: 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
9b90: 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f  ^The sqlite3_clo
9ba0: 73 65 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33  se() and sqlite3
9bb0: 5f 63 6c 6f 73 65 5f 76 32 28 29 20 72 6f 75 74  _close_v2() rout
9bc0: 69 6e 65 73 20 61 72 65 20 64 65 73 74 72 75 63  ines are destruc
9bd0: 74 6f 72 73 0a 2a 2a 20 66 6f 72 20 74 68 65 20  tors.** for the 
9be0: 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74  [sqlite3] object
9bf0: 2e 0a 2a 2a 20 5e 43 61 6c 6c 73 20 74 6f 20 73  ..** ^Calls to s
9c00: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29 20 61  qlite3_close() a
9c10: 6e 64 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  nd sqlite3_close
9c20: 5f 76 32 28 29 20 72 65 74 75 72 6e 20 5b 53 51  _v2() return [SQ
9c30: 4c 49 54 45 5f 4f 4b 5d 20 69 66 0a 2a 2a 20 74  LITE_OK] if.** t
9c40: 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a  he [sqlite3] obj
9c50: 65 63 74 20 69 73 20 73 75 63 63 65 73 73 66 75  ect is successfu
9c60: 6c 6c 79 20 64 65 73 74 72 6f 79 65 64 20 61 6e  lly destroyed an
9c70: 64 20 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64  d all associated
9c80: 0a 2a 2a 20 72 65 73 6f 75 72 63 65 73 20 61 72  .** resources ar
9c90: 65 20 64 65 61 6c 6c 6f 63 61 74 65 64 2e 0a 2a  e deallocated..*
9ca0: 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 64 61 74  *.** ^If the dat
9cb0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
9cc0: 20 69 73 20 61 73 73 6f 63 69 61 74 65 64 20 77   is associated w
9cd0: 69 74 68 20 75 6e 66 69 6e 61 6c 69 7a 65 64 20  ith unfinalized 
9ce0: 70 72 65 70 61 72 65 64 0a 2a 2a 20 73 74 61 74  prepared.** stat
9cf0: 65 6d 65 6e 74 73 20 6f 72 20 75 6e 66 69 6e 69  ements or unfini
9d00: 73 68 65 64 20 73 71 6c 69 74 65 33 5f 62 61 63  shed sqlite3_bac
9d10: 6b 75 70 20 6f 62 6a 65 63 74 73 20 74 68 65 6e  kup objects then
9d20: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29   sqlite3_close()
9d30: 0a 2a 2a 20 77 69 6c 6c 20 6c 65 61 76 65 20 74  .** will leave t
9d40: 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
9d50: 65 63 74 69 6f 6e 20 6f 70 65 6e 20 61 6e 64 20  ection open and 
9d60: 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 42  return [SQLITE_B
9d70: 55 53 59 5d 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c  USY]..** ^If sql
9d80: 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20  ite3_close_v2() 
9d90: 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 75  is called with u
9da0: 6e 66 69 6e 61 6c 69 7a 65 64 20 70 72 65 70 61  nfinalized prepa
9db0: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a  red statements.*
9dc0: 2a 20 61 6e 64 2f 6f 72 20 75 6e 66 69 6e 69 73  * and/or unfinis
9dd0: 68 65 64 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  hed sqlite3_back
9de0: 75 70 73 2c 20 74 68 65 6e 20 74 68 65 20 64 61  ups, then the da
9df0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
9e00: 6e 20 62 65 63 6f 6d 65 73 0a 2a 2a 20 61 6e 20  n becomes.** an 
9e10: 75 6e 75 73 61 62 6c 65 20 22 7a 6f 6d 62 69 65  unusable "zombie
9e20: 22 20 77 68 69 63 68 20 77 69 6c 6c 20 61 75 74  " which will aut
9e30: 6f 6d 61 74 69 63 61 6c 6c 79 20 62 65 20 64 65  omatically be de
9e40: 61 6c 6c 6f 63 61 74 65 64 20 77 68 65 6e 20 74  allocated when t
9e50: 68 65 0a 2a 2a 20 6c 61 73 74 20 70 72 65 70 61  he.** last prepa
9e60: 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69 73  red statement is
9e70: 20 66 69 6e 61 6c 69 7a 65 64 20 6f 72 20 74 68   finalized or th
9e80: 65 20 6c 61 73 74 20 73 71 6c 69 74 65 33 5f 62  e last sqlite3_b
9e90: 61 63 6b 75 70 20 69 73 0a 2a 2a 20 66 69 6e 69  ackup is.** fini
9ea0: 73 68 65 64 2e 20 20 54 68 65 20 73 71 6c 69 74  shed.  The sqlit
9eb0: 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 69 6e  e3_close_v2() in
9ec0: 74 65 72 66 61 63 65 20 69 73 20 69 6e 74 65 6e  terface is inten
9ed0: 64 65 64 20 66 6f 72 20 75 73 65 20 77 69 74 68  ded for use with
9ee0: 0a 2a 2a 20 68 6f 73 74 20 6c 61 6e 67 75 61 67  .** host languag
9ef0: 65 73 20 74 68 61 74 20 61 72 65 20 67 61 72 62  es that are garb
9f00: 61 67 65 20 63 6f 6c 6c 65 63 74 65 64 2c 20 61  age collected, a
9f10: 6e 64 20 77 68 65 72 65 20 74 68 65 20 6f 72 64  nd where the ord
9f20: 65 72 20 69 6e 20 77 68 69 63 68 0a 2a 2a 20 64  er in which.** d
9f30: 65 73 74 72 75 63 74 6f 72 73 20 61 72 65 20 63  estructors are c
9f40: 61 6c 6c 65 64 20 69 73 20 61 72 62 69 74 72 61  alled is arbitra
9f50: 72 79 2e 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69 63  ry..**.** Applic
9f60: 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 5b 73  ations should [s
9f70: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20  qlite3_finalize 
9f80: 7c 20 66 69 6e 61 6c 69 7a 65 5d 20 61 6c 6c 20  | finalize] all 
9f90: 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
9fa0: 65 6e 74 73 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74  ents],.** [sqlit
9fb0: 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73 65 20 7c 20  e3_blob_close | 
9fc0: 63 6c 6f 73 65 5d 20 61 6c 6c 20 5b 42 4c 4f 42  close] all [BLOB
9fd0: 20 68 61 6e 64 6c 65 73 5d 2c 20 61 6e 64 20 0a   handles], and .
9fe0: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b  ** [sqlite3_back
9ff0: 75 70 5f 66 69 6e 69 73 68 20 7c 20 66 69 6e 69  up_finish | fini
a000: 73 68 5d 20 61 6c 6c 20 5b 73 71 6c 69 74 65 33  sh] all [sqlite3
a010: 5f 62 61 63 6b 75 70 5d 20 6f 62 6a 65 63 74 73  _backup] objects
a020: 20 61 73 73 6f 63 69 61 74 65 64 0a 2a 2a 20 77   associated.** w
a030: 69 74 68 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ith the [sqlite3
a040: 5d 20 6f 62 6a 65 63 74 20 70 72 69 6f 72 20 74  ] object prior t
a050: 6f 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20  o attempting to 
a060: 63 6c 6f 73 65 20 74 68 65 20 6f 62 6a 65 63 74  close the object
a070: 2e 20 20 5e 49 66 0a 2a 2a 20 73 71 6c 69 74 65  .  ^If.** sqlite
a080: 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 69 73 20  3_close_v2() is 
a090: 63 61 6c 6c 65 64 20 6f 6e 20 61 20 5b 64 61 74  called on a [dat
a0a0: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
a0b0: 5d 20 74 68 61 74 20 73 74 69 6c 6c 20 68 61 73  ] that still has
a0c0: 0a 2a 2a 20 6f 75 74 73 74 61 6e 64 69 6e 67 20  .** outstanding 
a0d0: 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
a0e0: 65 6e 74 73 5d 2c 20 5b 42 4c 4f 42 20 68 61 6e  ents], [BLOB han
a0f0: 64 6c 65 73 5d 2c 20 61 6e 64 2f 6f 72 0a 2a 2a  dles], and/or.**
a100: 20 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70   [sqlite3_backup
a110: 5d 20 6f 62 6a 65 63 74 73 20 74 68 65 6e 20 69  ] objects then i
a120: 74 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54  t returns [SQLIT
a130: 45 5f 4f 4b 5d 20 61 6e 64 20 74 68 65 20 64 65  E_OK] and the de
a140: 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66  allocation.** of
a150: 20 72 65 73 6f 75 72 63 65 73 20 69 73 20 64 65   resources is de
a160: 66 65 72 72 65 64 20 75 6e 74 69 6c 20 61 6c 6c  ferred until all
a170: 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
a180: 6d 65 6e 74 73 5d 2c 20 5b 42 4c 4f 42 20 68 61  ments], [BLOB ha
a190: 6e 64 6c 65 73 5d 2c 0a 2a 2a 20 61 6e 64 20 5b  ndles],.** and [
a1a0: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5d 20  sqlite3_backup] 
a1b0: 6f 62 6a 65 63 74 73 20 61 72 65 20 61 6c 73 6f  objects are also
a1c0: 20 64 65 73 74 72 6f 79 65 64 2e 0a 2a 2a 0a 2a   destroyed..**.*
a1d0: 2a 20 5e 49 66 20 61 6e 20 5b 73 71 6c 69 74 65  * ^If an [sqlite
a1e0: 33 5d 20 6f 62 6a 65 63 74 20 69 73 20 64 65 73  3] object is des
a1f0: 74 72 6f 79 65 64 20 77 68 69 6c 65 20 61 20 74  troyed while a t
a200: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 6f 70  ransaction is op
a210: 65 6e 2c 0a 2a 2a 20 74 68 65 20 74 72 61 6e 73  en,.** the trans
a220: 61 63 74 69 6f 6e 20 69 73 20 61 75 74 6f 6d 61  action is automa
a230: 74 69 63 61 6c 6c 79 20 72 6f 6c 6c 65 64 20 62  tically rolled b
a240: 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 43  ack..**.** The C
a250: 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 5b 73   parameter to [s
a260: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 43 29 5d  qlite3_close(C)]
a270: 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 63 6c   and [sqlite3_cl
a280: 6f 73 65 5f 76 32 28 43 29 5d 0a 2a 2a 20 6d 75  ose_v2(C)].** mu
a290: 73 74 20 62 65 20 65 69 74 68 65 72 20 61 20 4e  st be either a N
a2a0: 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 6f  ULL.** pointer o
a2b0: 72 20 61 6e 20 5b 73 71 6c 69 74 65 33 5d 20 6f  r an [sqlite3] o
a2c0: 62 6a 65 63 74 20 70 6f 69 6e 74 65 72 20 6f 62  bject pointer ob
a2d0: 74 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b  tained.** from [
a2e0: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c  sqlite3_open()],
a2f0: 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36   [sqlite3_open16
a300: 28 29 5d 2c 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69  ()], or.** [sqli
a310: 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20  te3_open_v2()], 
a320: 61 6e 64 20 6e 6f 74 20 70 72 65 76 69 6f 75 73  and not previous
a330: 6c 79 20 63 6c 6f 73 65 64 2e 0a 2a 2a 20 5e 43  ly closed..** ^C
a340: 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 63  alling sqlite3_c
a350: 6c 6f 73 65 28 29 20 6f 72 20 73 71 6c 69 74 65  lose() or sqlite
a360: 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 77 69 74  3_close_v2() wit
a370: 68 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  h a NULL pointer
a380: 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 69 73 20  .** argument is 
a390: 61 20 68 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70  a harmless no-op
a3a0: 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
a3b0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  int sqlite3_clos
a3c0: 65 28 73 71 6c 69 74 65 33 2a 29 3b 0a 53 51 4c  e(sqlite3*);.SQL
a3d0: 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
a3e0: 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 73 71 6c  te3_close_v2(sql
a3f0: 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54  ite3*);../*.** T
a400: 68 65 20 74 79 70 65 20 66 6f 72 20 61 20 63 61  he type for a ca
a410: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 2e  llback function.
a420: 0a 2a 2a 20 54 68 69 73 20 69 73 20 6c 65 67 61  .** This is lega
a430: 63 79 20 61 6e 64 20 64 65 70 72 65 63 61 74 65  cy and deprecate
a440: 64 2e 20 20 49 74 20 69 73 20 69 6e 63 6c 75 64  d.  It is includ
a450: 65 64 20 66 6f 72 20 68 69 73 74 6f 72 69 63 61  ed for historica
a460: 6c 0a 2a 2a 20 63 6f 6d 70 61 74 69 62 69 6c 69  l.** compatibili
a470: 74 79 20 61 6e 64 20 69 73 20 6e 6f 74 20 64 6f  ty and is not do
a480: 63 75 6d 65 6e 74 65 64 2e 0a 2a 2f 0a 74 79 70  cumented..*/.typ
a490: 65 64 65 66 20 69 6e 74 20 28 2a 73 71 6c 69 74  edef int (*sqlit
a4a0: 65 33 5f 63 61 6c 6c 62 61 63 6b 29 28 76 6f 69  e3_callback)(voi
a4b0: 64 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a 2c 20 63  d*,int,char**, c
a4c0: 68 61 72 2a 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  har**);../*.** C
a4d0: 41 50 49 33 52 45 46 3a 20 4f 6e 65 2d 53 74 65  API3REF: One-Ste
a4e0: 70 20 51 75 65 72 79 20 45 78 65 63 75 74 69 6f  p Query Executio
a4f0: 6e 20 49 6e 74 65 72 66 61 63 65 0a 2a 2a 20 4d  n Interface.** M
a500: 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
a510: 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
a520: 5f 65 78 65 63 28 29 20 69 6e 74 65 72 66 61 63  _exec() interfac
a530: 65 20 69 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e  e is a convenien
a540: 63 65 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e  ce wrapper aroun
a550: 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72  d.** [sqlite3_pr
a560: 65 70 61 72 65 5f 76 32 28 29 5d 2c 20 5b 73 71  epare_v2()], [sq
a570: 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 2c 20 61  lite3_step()], a
a580: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61  nd [sqlite3_fina
a590: 6c 69 7a 65 28 29 5d 2c 0a 2a 2a 20 74 68 61 74  lize()],.** that
a5a0: 20 61 6c 6c 6f 77 73 20 61 6e 20 61 70 70 6c 69   allows an appli
a5b0: 63 61 74 69 6f 6e 20 74 6f 20 72 75 6e 20 6d 75  cation to run mu
a5c0: 6c 74 69 70 6c 65 20 73 74 61 74 65 6d 65 6e 74  ltiple statement
a5d0: 73 20 6f 66 20 53 51 4c 0a 2a 2a 20 77 69 74 68  s of SQL.** with
a5e0: 6f 75 74 20 68 61 76 69 6e 67 20 74 6f 20 75 73  out having to us
a5f0: 65 20 61 20 6c 6f 74 20 6f 66 20 43 20 63 6f 64  e a lot of C cod
a600: 65 2e 20 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  e. .**.** ^The s
a610: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 6e  qlite3_exec() in
a620: 74 65 72 66 61 63 65 20 72 75 6e 73 20 7a 65 72  terface runs zer
a630: 6f 20 6f 72 20 6d 6f 72 65 20 55 54 46 2d 38 20  o or more UTF-8 
a640: 65 6e 63 6f 64 65 64 2c 0a 2a 2a 20 73 65 6d 69  encoded,.** semi
a650: 63 6f 6c 6f 6e 2d 73 65 70 61 72 61 74 65 20 53  colon-separate S
a660: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 70 61  QL statements pa
a670: 73 73 65 64 20 69 6e 74 6f 20 69 74 73 20 32 6e  ssed into its 2n
a680: 64 20 61 72 67 75 6d 65 6e 74 2c 0a 2a 2a 20 69  d argument,.** i
a690: 6e 20 74 68 65 20 63 6f 6e 74 65 78 74 20 6f 66  n the context of
a6a0: 20 74 68 65 20 5b 64 61 74 61 62 61 73 65 20 63   the [database c
a6b0: 6f 6e 6e 65 63 74 69 6f 6e 5d 20 70 61 73 73 65  onnection] passe
a6c0: 64 20 69 6e 20 61 73 20 69 74 73 20 31 73 74 0a  d in as its 1st.
a6d0: 2a 2a 20 61 72 67 75 6d 65 6e 74 2e 20 20 5e 49  ** argument.  ^I
a6e0: 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66  f the callback f
a6f0: 75 6e 63 74 69 6f 6e 20 6f 66 20 74 68 65 20 33  unction of the 3
a700: 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a  rd argument to.*
a710: 2a 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  * sqlite3_exec()
a720: 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20 74 68   is not NULL, th
a730: 65 6e 20 69 74 20 69 73 20 69 6e 76 6f 6b 65 64  en it is invoked
a740: 20 66 6f 72 20 65 61 63 68 20 72 65 73 75 6c 74   for each result
a750: 20 72 6f 77 0a 2a 2a 20 63 6f 6d 69 6e 67 20 6f   row.** coming o
a760: 75 74 20 6f 66 20 74 68 65 20 65 76 61 6c 75 61  ut of the evalua
a770: 74 65 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ted SQL statemen
a780: 74 73 2e 20 20 5e 54 68 65 20 34 74 68 20 61 72  ts.  ^The 4th ar
a790: 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c  gument to.** sql
a7a0: 69 74 65 33 5f 65 78 65 63 28 29 20 69 73 20 72  ite3_exec() is r
a7b0: 65 6c 61 79 65 64 20 74 68 72 6f 75 67 68 20 74  elayed through t
a7c0: 6f 20 74 68 65 20 31 73 74 20 61 72 67 75 6d 65  o the 1st argume
a7d0: 6e 74 20 6f 66 20 65 61 63 68 0a 2a 2a 20 63 61  nt of each.** ca
a7e0: 6c 6c 62 61 63 6b 20 69 6e 76 6f 63 61 74 69 6f  llback invocatio
a7f0: 6e 2e 20 20 5e 49 66 20 74 68 65 20 63 61 6c 6c  n.  ^If the call
a800: 62 61 63 6b 20 70 6f 69 6e 74 65 72 20 74 6f 20  back pointer to 
a810: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 0a 2a  sqlite3_exec().*
a820: 2a 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20  * is NULL, then 
a830: 6e 6f 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 65  no callback is e
a840: 76 65 72 20 69 6e 76 6f 6b 65 64 20 61 6e 64 20  ver invoked and 
a850: 72 65 73 75 6c 74 20 72 6f 77 73 20 61 72 65 0a  result rows are.
a860: 2a 2a 20 69 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a  ** ignored..**.*
a870: 2a 20 5e 49 66 20 61 6e 20 65 72 72 6f 72 20 6f  * ^If an error o
a880: 63 63 75 72 73 20 77 68 69 6c 65 20 65 76 61 6c  ccurs while eval
a890: 75 61 74 69 6e 67 20 74 68 65 20 53 51 4c 20 73  uating the SQL s
a8a0: 74 61 74 65 6d 65 6e 74 73 20 70 61 73 73 65 64  tatements passed
a8b0: 20 69 6e 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33   into.** sqlite3
a8c0: 5f 65 78 65 63 28 29 2c 20 74 68 65 6e 20 65 78  _exec(), then ex
a8d0: 65 63 75 74 69 6f 6e 20 6f 66 20 74 68 65 20 63  ecution of the c
a8e0: 75 72 72 65 6e 74 20 73 74 61 74 65 6d 65 6e 74  urrent statement
a8f0: 20 73 74 6f 70 73 20 61 6e 64 0a 2a 2a 20 73 75   stops and.** su
a900: 62 73 65 71 75 65 6e 74 20 73 74 61 74 65 6d 65  bsequent stateme
a910: 6e 74 73 20 61 72 65 20 73 6b 69 70 70 65 64 2e  nts are skipped.
a920: 20 20 5e 49 66 20 74 68 65 20 35 74 68 20 70 61    ^If the 5th pa
a930: 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74  rameter to sqlit
a940: 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 69 73 20  e3_exec().** is 
a950: 6e 6f 74 20 4e 55 4c 4c 20 74 68 65 6e 20 61 6e  not NULL then an
a960: 79 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  y error message 
a970: 69 73 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20  is written into 
a980: 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 0a  memory obtained.
a990: 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  ** from [sqlite3
a9a0: 5f 6d 61 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 70  _malloc()] and p
a9b0: 61 73 73 65 64 20 62 61 63 6b 20 74 68 72 6f 75  assed back throu
a9c0: 67 68 20 74 68 65 20 35 74 68 20 70 61 72 61 6d  gh the 5th param
a9d0: 65 74 65 72 2e 0a 2a 2a 20 54 6f 20 61 76 6f 69  eter..** To avoi
a9e0: 64 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 73 2c 20  d memory leaks, 
a9f0: 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
aa00: 73 68 6f 75 6c 64 20 69 6e 76 6f 6b 65 20 5b 73  should invoke [s
aa10: 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 0a 2a  qlite3_free()].*
aa20: 2a 20 6f 6e 20 65 72 72 6f 72 20 6d 65 73 73 61  * on error messa
aa30: 67 65 20 73 74 72 69 6e 67 73 20 72 65 74 75 72  ge strings retur
aa40: 6e 65 64 20 74 68 72 6f 75 67 68 20 74 68 65 20  ned through the 
aa50: 35 74 68 20 70 61 72 61 6d 65 74 65 72 20 6f 66  5th parameter of
aa60: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78 65 63  .** sqlite3_exec
aa70: 28 29 20 61 66 74 65 72 20 74 68 65 20 65 72 72  () after the err
aa80: 6f 72 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e  or message strin
aa90: 67 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 6e  g is no longer n
aaa0: 65 65 64 65 64 2e 0a 2a 2a 20 5e 49 66 20 74 68  eeded..** ^If th
aab0: 65 20 35 74 68 20 70 61 72 61 6d 65 74 65 72 20  e 5th parameter 
aac0: 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  to sqlite3_exec(
aad0: 29 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 61 6e  ) is not NULL an
aae0: 64 20 6e 6f 20 65 72 72 6f 72 73 0a 2a 2a 20 6f  d no errors.** o
aaf0: 63 63 75 72 2c 20 74 68 65 6e 20 73 71 6c 69 74  ccur, then sqlit
ab00: 65 33 5f 65 78 65 63 28 29 20 73 65 74 73 20 74  e3_exec() sets t
ab10: 68 65 20 70 6f 69 6e 74 65 72 20 69 6e 20 69 74  he pointer in it
ab20: 73 20 35 74 68 20 70 61 72 61 6d 65 74 65 72 20  s 5th parameter 
ab30: 74 6f 0a 2a 2a 20 4e 55 4c 4c 20 62 65 66 6f 72  to.** NULL befor
ab40: 65 20 72 65 74 75 72 6e 69 6e 67 2e 0a 2a 2a 0a  e returning..**.
ab50: 2a 2a 20 5e 49 66 20 61 6e 20 73 71 6c 69 74 65  ** ^If an sqlite
ab60: 33 5f 65 78 65 63 28 29 20 63 61 6c 6c 62 61 63  3_exec() callbac
ab70: 6b 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65  k returns non-ze
ab80: 72 6f 2c 20 74 68 65 20 73 71 6c 69 74 65 33 5f  ro, the sqlite3_
ab90: 65 78 65 63 28 29 0a 2a 2a 20 72 6f 75 74 69 6e  exec().** routin
aba0: 65 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54 45  e returns SQLITE
abb0: 5f 41 42 4f 52 54 20 77 69 74 68 6f 75 74 20 69  _ABORT without i
abc0: 6e 76 6f 6b 69 6e 67 20 74 68 65 20 63 61 6c 6c  nvoking the call
abd0: 62 61 63 6b 20 61 67 61 69 6e 20 61 6e 64 0a 2a  back again and.*
abe0: 2a 20 77 69 74 68 6f 75 74 20 72 75 6e 6e 69 6e  * without runnin
abf0: 67 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74  g any subsequent
ac00: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
ac10: 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 32 6e 64 20  .**.** ^The 2nd 
ac20: 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20  argument to the 
ac30: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 63  sqlite3_exec() c
ac40: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
ac50: 20 69 73 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65   is the.** numbe
ac60: 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  r of columns in 
ac70: 74 68 65 20 72 65 73 75 6c 74 2e 20 20 5e 54 68  the result.  ^Th
ac80: 65 20 33 72 64 20 61 72 67 75 6d 65 6e 74 20 74  e 3rd argument t
ac90: 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 65 78  o the sqlite3_ex
aca0: 65 63 28 29 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b  ec().** callback
acb0: 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20   is an array of 
acc0: 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 74 72 69  pointers to stri
acd0: 6e 67 73 20 6f 62 74 61 69 6e 65 64 20 61 73 20  ngs obtained as 
ace0: 69 66 20 66 72 6f 6d 0a 2a 2a 20 5b 73 71 6c 69  if from.** [sqli
acf0: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28  te3_column_text(
ad00: 29 5d 2c 20 6f 6e 65 20 66 6f 72 20 65 61 63 68  )], one for each
ad10: 20 63 6f 6c 75 6d 6e 2e 20 20 5e 49 66 20 61 6e   column.  ^If an
ad20: 20 65 6c 65 6d 65 6e 74 20 6f 66 20 61 0a 2a 2a   element of a.**
ad30: 20 72 65 73 75 6c 74 20 72 6f 77 20 69 73 20 4e   result row is N
ad40: 55 4c 4c 20 74 68 65 6e 20 74 68 65 20 63 6f 72  ULL then the cor
ad50: 72 65 73 70 6f 6e 64 69 6e 67 20 73 74 72 69 6e  responding strin
ad60: 67 20 70 6f 69 6e 74 65 72 20 66 6f 72 20 74 68  g pointer for th
ad70: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78 65  e.** sqlite3_exe
ad80: 63 28 29 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  c() callback is 
ad90: 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20  a NULL pointer. 
ada0: 20 5e 54 68 65 20 34 74 68 20 61 72 67 75 6d 65   ^The 4th argume
adb0: 6e 74 20 74 6f 20 74 68 65 0a 2a 2a 20 73 71 6c  nt to the.** sql
adc0: 69 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c 6c  ite3_exec() call
add0: 62 61 63 6b 20 69 73 20 61 6e 20 61 72 72 61 79  back is an array
ade0: 20 6f 66 20 70 6f 69 6e 74 65 72 73 20 74 6f 20   of pointers to 
adf0: 73 74 72 69 6e 67 73 20 77 68 65 72 65 20 65 61  strings where ea
ae00: 63 68 0a 2a 2a 20 65 6e 74 72 79 20 72 65 70 72  ch.** entry repr
ae10: 65 73 65 6e 74 73 20 74 68 65 20 6e 61 6d 65 20  esents the name 
ae20: 6f 66 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  of corresponding
ae30: 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 61   result column a
ae40: 73 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72  s obtained.** fr
ae50: 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  om [sqlite3_colu
ae60: 6d 6e 5f 6e 61 6d 65 28 29 5d 2e 0a 2a 2a 0a 2a  mn_name()]..**.*
ae70: 2a 20 5e 49 66 20 74 68 65 20 32 6e 64 20 70 61  * ^If the 2nd pa
ae80: 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74  rameter to sqlit
ae90: 65 33 5f 65 78 65 63 28 29 20 69 73 20 61 20 4e  e3_exec() is a N
aea0: 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 61 20 70  ULL pointer, a p
aeb0: 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 61 6e 20  ointer.** to an 
aec0: 65 6d 70 74 79 20 73 74 72 69 6e 67 2c 20 6f 72  empty string, or
aed0: 20 61 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20   a pointer that 
aee0: 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79 20 77 68  contains only wh
aef0: 69 74 65 73 70 61 63 65 20 61 6e 64 2f 6f 72 20  itespace and/or 
af00: 0a 2a 2a 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73  .** SQL comments
af10: 2c 20 74 68 65 6e 20 6e 6f 20 53 51 4c 20 73 74  , then no SQL st
af20: 61 74 65 6d 65 6e 74 73 20 61 72 65 20 65 76 61  atements are eva
af30: 6c 75 61 74 65 64 20 61 6e 64 20 74 68 65 20 64  luated and the d
af40: 61 74 61 62 61 73 65 0a 2a 2a 20 69 73 20 6e 6f  atabase.** is no
af50: 74 20 63 68 61 6e 67 65 64 2e 0a 2a 2a 0a 2a 2a  t changed..**.**
af60: 20 52 65 73 74 72 69 63 74 69 6f 6e 73 3a 0a 2a   Restrictions:.*
af70: 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69  *.** <ul>.** <li
af80: 3e 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f  > The applicatio
af90: 6e 20 6d 75 73 74 20 65 6e 73 75 72 65 20 74 68  n must ensure th
afa0: 61 74 20 74 68 65 20 31 73 74 20 70 61 72 61 6d  at the 1st param
afb0: 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
afc0: 65 78 65 63 28 29 0a 2a 2a 20 20 20 20 20 20 69  exec().**      i
afd0: 73 20 61 20 76 61 6c 69 64 20 61 6e 64 20 6f 70  s a valid and op
afe0: 65 6e 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  en [database con
aff0: 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a 20 3c 6c 69  nection]..** <li
b000: 3e 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f  > The applicatio
b010: 6e 20 6d 75 73 74 20 6e 6f 74 20 63 6c 6f 73 65  n must not close
b020: 20 74 68 65 20 5b 64 61 74 61 62 61 73 65 20 63   the [database c
b030: 6f 6e 6e 65 63 74 69 6f 6e 5d 20 73 70 65 63 69  onnection] speci
b040: 66 69 65 64 20 62 79 0a 2a 2a 20 20 20 20 20 20  fied by.**      
b050: 74 68 65 20 31 73 74 20 70 61 72 61 6d 65 74 65  the 1st paramete
b060: 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65  r to sqlite3_exe
b070: 63 28 29 20 77 68 69 6c 65 20 73 71 6c 69 74 65  c() while sqlite
b080: 33 5f 65 78 65 63 28 29 20 69 73 20 72 75 6e 6e  3_exec() is runn
b090: 69 6e 67 2e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65  ing..** <li> The
b0a0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73   application mus
b0b0: 74 20 6e 6f 74 20 6d 6f 64 69 66 79 20 74 68 65  t not modify the
b0c0: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74   SQL statement t
b0d0: 65 78 74 20 70 61 73 73 65 64 20 69 6e 74 6f 0a  ext passed into.
b0e0: 2a 2a 20 20 20 20 20 20 74 68 65 20 32 6e 64 20  **      the 2nd 
b0f0: 70 61 72 61 6d 65 74 65 72 20 6f 66 20 73 71 6c  parameter of sql
b100: 69 74 65 33 5f 65 78 65 63 28 29 20 77 68 69 6c  ite3_exec() whil
b110: 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  e sqlite3_exec()
b120: 20 69 73 20 72 75 6e 6e 69 6e 67 2e 0a 2a 2a 20   is running..** 
b130: 3c 2f 75 6c 3e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  </ul>.*/.SQLITE_
b140: 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
b150: 65 78 65 63 28 0a 20 20 73 71 6c 69 74 65 33 2a  exec(.  sqlite3*
b160: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
b170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b180: 20 20 20 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61     /* An open da
b190: 74 61 62 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73  tabase */.  cons
b1a0: 74 20 63 68 61 72 20 2a 73 71 6c 2c 20 20 20 20  t char *sql,    
b1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b1c0: 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f         /* SQL to
b1d0: 20 62 65 20 65 76 61 6c 75 61 74 65 64 20 2a 2f   be evaluated */
b1e0: 0a 20 20 69 6e 74 20 28 2a 63 61 6c 6c 62 61 63  .  int (*callbac
b1f0: 6b 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61  k)(void*,int,cha
b200: 72 2a 2a 2c 63 68 61 72 2a 2a 29 2c 20 20 2f 2a  r**,char**),  /*
b210: 20 43 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   Callback functi
b220: 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 2c 20  on */.  void *, 
b230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b250: 20 20 20 2f 2a 20 31 73 74 20 61 72 67 75 6d 65     /* 1st argume
b260: 6e 74 20 74 6f 20 63 61 6c 6c 62 61 63 6b 20 2a  nt to callback *
b270: 2f 0a 20 20 63 68 61 72 20 2a 2a 65 72 72 6d 73  /.  char **errms
b280: 67 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  g               
b290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
b2a0: 2a 20 45 72 72 6f 72 20 6d 73 67 20 77 72 69 74  * Error msg writ
b2b0: 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29 3b 0a 0a  ten here */.);..
b2c0: 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
b2d0: 52 65 73 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20  Result Codes.** 
b2e0: 4b 45 59 57 4f 52 44 53 3a 20 7b 72 65 73 75 6c  KEYWORDS: {resul
b2f0: 74 20 63 6f 64 65 20 64 65 66 69 6e 69 74 69 6f  t code definitio
b300: 6e 73 7d 0a 2a 2a 0a 2a 2a 20 4d 61 6e 79 20 53  ns}.**.** Many S
b310: 51 4c 69 74 65 20 66 75 6e 63 74 69 6f 6e 73 20  QLite functions 
b320: 72 65 74 75 72 6e 20 61 6e 20 69 6e 74 65 67 65  return an intege
b330: 72 20 72 65 73 75 6c 74 20 63 6f 64 65 20 66 72  r result code fr
b340: 6f 6d 20 74 68 65 20 73 65 74 20 73 68 6f 77 6e  om the set shown
b350: 0a 2a 2a 20 68 65 72 65 20 69 6e 20 6f 72 64 65  .** here in orde
b360: 72 20 74 6f 20 69 6e 64 69 63 61 74 65 20 73 75  r to indicate su
b370: 63 63 65 73 73 20 6f 72 20 66 61 69 6c 75 72 65  ccess or failure
b380: 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 65 72 72 6f  ..**.** New erro
b390: 72 20 63 6f 64 65 73 20 6d 61 79 20 62 65 20 61  r codes may be a
b3a0: 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 76  dded in future v
b3b0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
b3c0: 65 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73  e..**.** See als
b3d0: 6f 3a 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73  o: [extended res
b3e0: 75 6c 74 20 63 6f 64 65 20 64 65 66 69 6e 69 74  ult code definit
b3f0: 69 6f 6e 73 5d 0a 2a 2f 0a 23 64 65 66 69 6e 65  ions].*/.#define
b400: 20 53 51 4c 49 54 45 5f 4f 4b 20 20 20 20 20 20   SQLITE_OK      
b410: 20 20 20 20 20 30 20 20 20 2f 2a 20 53 75 63 63       0   /* Succ
b420: 65 73 73 66 75 6c 20 72 65 73 75 6c 74 20 2a 2f  essful result */
b430: 0a 2f 2a 20 62 65 67 69 6e 6e 69 6e 67 2d 6f 66  ./* beginning-of
b440: 2d 65 72 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a  -error-codes */.
b450: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45  #define SQLITE_E
b460: 52 52 4f 52 20 20 20 20 20 20 20 20 31 20 20 20  RROR        1   
b470: 2f 2a 20 47 65 6e 65 72 69 63 20 65 72 72 6f 72  /* Generic error
b480: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
b490: 54 45 5f 49 4e 54 45 52 4e 41 4c 20 20 20 20 20  TE_INTERNAL     
b4a0: 32 20 20 20 2f 2a 20 49 6e 74 65 72 6e 61 6c 20  2   /* Internal 
b4b0: 6c 6f 67 69 63 20 65 72 72 6f 72 20 69 6e 20 53  logic error in S
b4c0: 51 4c 69 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65  QLite */.#define
b4d0: 20 53 51 4c 49 54 45 5f 50 45 52 4d 20 20 20 20   SQLITE_PERM    
b4e0: 20 20 20 20 20 33 20 20 20 2f 2a 20 41 63 63 65       3   /* Acce
b4f0: 73 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 64 65  ss permission de
b500: 6e 69 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  nied */.#define 
b510: 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 20 20 20  SQLITE_ABORT    
b520: 20 20 20 20 34 20 20 20 2f 2a 20 43 61 6c 6c 62      4   /* Callb
b530: 61 63 6b 20 72 6f 75 74 69 6e 65 20 72 65 71 75  ack routine requ
b540: 65 73 74 65 64 20 61 6e 20 61 62 6f 72 74 20 2a  ested an abort *
b550: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b560: 5f 42 55 53 59 20 20 20 20 20 20 20 20 20 35 20  _BUSY         5 
b570: 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62 61 73    /* The databas
b580: 65 20 66 69 6c 65 20 69 73 20 6c 6f 63 6b 65 64  e file is locked
b590: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
b5a0: 54 45 5f 4c 4f 43 4b 45 44 20 20 20 20 20 20 20  TE_LOCKED       
b5b0: 36 20 20 20 2f 2a 20 41 20 74 61 62 6c 65 20 69  6   /* A table i
b5c0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  n the database i
b5d0: 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66  s locked */.#def
b5e0: 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d  ine SQLITE_NOMEM
b5f0: 20 20 20 20 20 20 20 20 37 20 20 20 2f 2a 20 41          7   /* A
b600: 20 6d 61 6c 6c 6f 63 28 29 20 66 61 69 6c 65 64   malloc() failed
b610: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
b620: 54 45 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20 20  TE_READONLY     
b630: 38 20 20 20 2f 2a 20 41 74 74 65 6d 70 74 20 74  8   /* Attempt t
b640: 6f 20 77 72 69 74 65 20 61 20 72 65 61 64 6f 6e  o write a readon
b650: 6c 79 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 23  ly database */.#
b660: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e  define SQLITE_IN
b670: 54 45 52 52 55 50 54 20 20 20 20 39 20 20 20 2f  TERRUPT    9   /
b680: 2a 20 4f 70 65 72 61 74 69 6f 6e 20 74 65 72 6d  * Operation term
b690: 69 6e 61 74 65 64 20 62 79 20 73 71 6c 69 74 65  inated by sqlite
b6a0: 33 5f 69 6e 74 65 72 72 75 70 74 28 29 2a 2f 0a  3_interrupt()*/.
b6b0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
b6c0: 4f 45 52 52 20 20 20 20 20 20 20 31 30 20 20 20  OERR       10   
b6d0: 2f 2a 20 53 6f 6d 65 20 6b 69 6e 64 20 6f 66 20  /* Some kind of 
b6e0: 64 69 73 6b 20 49 2f 4f 20 65 72 72 6f 72 20 6f  disk I/O error o
b6f0: 63 63 75 72 72 65 64 20 2a 2f 0a 23 64 65 66 69  ccurred */.#defi
b700: 6e 65 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50  ne SQLITE_CORRUP
b710: 54 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54 68  T     11   /* Th
b720: 65 20 64 61 74 61 62 61 73 65 20 64 69 73 6b 20  e database disk 
b730: 69 6d 61 67 65 20 69 73 20 6d 61 6c 66 6f 72 6d  image is malform
b740: 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ed */.#define SQ
b750: 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20  LITE_NOTFOUND   
b760: 20 31 32 20 20 20 2f 2a 20 55 6e 6b 6e 6f 77 6e   12   /* Unknown
b770: 20 6f 70 63 6f 64 65 20 69 6e 20 73 71 6c 69 74   opcode in sqlit
b780: 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28  e3_file_control(
b790: 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ) */.#define SQL
b7a0: 49 54 45 5f 46 55 4c 4c 20 20 20 20 20 20 20 20  ITE_FULL        
b7b0: 31 33 20 20 20 2f 2a 20 49 6e 73 65 72 74 69 6f  13   /* Insertio
b7c0: 6e 20 66 61 69 6c 65 64 20 62 65 63 61 75 73 65  n failed because
b7d0: 20 64 61 74 61 62 61 73 65 20 69 73 20 66 75 6c   database is ful
b7e0: 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  l */.#define SQL
b7f0: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 20 20 20  ITE_CANTOPEN    
b800: 31 34 20 20 20 2f 2a 20 55 6e 61 62 6c 65 20 74  14   /* Unable t
b810: 6f 20 6f 70 65 6e 20 74 68 65 20 64 61 74 61 62  o open the datab
b820: 61 73 65 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66  ase file */.#def
b830: 69 6e 65 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f  ine SQLITE_PROTO
b840: 43 4f 4c 20 20 20 20 31 35 20 20 20 2f 2a 20 44  COL    15   /* D
b850: 61 74 61 62 61 73 65 20 6c 6f 63 6b 20 70 72 6f  atabase lock pro
b860: 74 6f 63 6f 6c 20 65 72 72 6f 72 20 2a 2f 0a 23  tocol error */.#
b870: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 4d  define SQLITE_EM
b880: 50 54 59 20 20 20 20 20 20 20 31 36 20 20 20 2f  PTY       16   /
b890: 2a 20 49 6e 74 65 72 6e 61 6c 20 75 73 65 20 6f  * Internal use o
b8a0: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
b8b0: 51 4c 49 54 45 5f 53 43 48 45 4d 41 20 20 20 20  QLITE_SCHEMA    
b8c0: 20 20 31 37 20 20 20 2f 2a 20 54 68 65 20 64 61    17   /* The da
b8d0: 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 63 68  tabase schema ch
b8e0: 61 6e 67 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  anged */.#define
b8f0: 20 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47 20 20   SQLITE_TOOBIG  
b900: 20 20 20 20 31 38 20 20 20 2f 2a 20 53 74 72 69      18   /* Stri
b910: 6e 67 20 6f 72 20 42 4c 4f 42 20 65 78 63 65 65  ng or BLOB excee
b920: 64 73 20 73 69 7a 65 20 6c 69 6d 69 74 20 2a 2f  ds size limit */
b930: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b940: 43 4f 4e 53 54 52 41 49 4e 54 20 20 31 39 20 20  CONSTRAINT  19  
b950: 20 2f 2a 20 41 62 6f 72 74 20 64 75 65 20 74 6f   /* Abort due to
b960: 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
b970: 61 74 69 6f 6e 20 2a 2f 0a 23 64 65 66 69 6e 65  ation */.#define
b980: 20 53 51 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48   SQLITE_MISMATCH
b990: 20 20 20 20 32 30 20 20 20 2f 2a 20 44 61 74 61      20   /* Data
b9a0: 20 74 79 70 65 20 6d 69 73 6d 61 74 63 68 20 2a   type mismatch *
b9b0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b9c0: 5f 4d 49 53 55 53 45 20 20 20 20 20 20 32 31 20  _MISUSE      21 
b9d0: 20 20 2f 2a 20 4c 69 62 72 61 72 79 20 75 73 65    /* Library use
b9e0: 64 20 69 6e 63 6f 72 72 65 63 74 6c 79 20 2a 2f  d incorrectly */
b9f0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
ba00: 4e 4f 4c 46 53 20 20 20 20 20 20 20 32 32 20 20  NOLFS       22  
ba10: 20 2f 2a 20 55 73 65 73 20 4f 53 20 66 65 61 74   /* Uses OS feat
ba20: 75 72 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  ures not support
ba30: 65 64 20 6f 6e 20 68 6f 73 74 20 2a 2f 0a 23 64  ed on host */.#d
ba40: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 55 54  efine SQLITE_AUT
ba50: 48 20 20 20 20 20 20 20 20 32 33 20 20 20 2f 2a  H        23   /*
ba60: 20 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 64   Authorization d
ba70: 65 6e 69 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  enied */.#define
ba80: 20 53 51 4c 49 54 45 5f 46 4f 52 4d 41 54 20 20   SQLITE_FORMAT  
ba90: 20 20 20 20 32 34 20 20 20 2f 2a 20 4e 6f 74 20      24   /* Not 
baa0: 75 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  used */.#define 
bab0: 53 51 4c 49 54 45 5f 52 41 4e 47 45 20 20 20 20  SQLITE_RANGE    
bac0: 20 20 20 32 35 20 20 20 2f 2a 20 32 6e 64 20 70     25   /* 2nd p
bad0: 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
bae0: 74 65 33 5f 62 69 6e 64 20 6f 75 74 20 6f 66 20  te3_bind out of 
baf0: 72 61 6e 67 65 20 2a 2f 0a 23 64 65 66 69 6e 65  range */.#define
bb00: 20 53 51 4c 49 54 45 5f 4e 4f 54 41 44 42 20 20   SQLITE_NOTADB  
bb10: 20 20 20 20 32 36 20 20 20 2f 2a 20 46 69 6c 65      26   /* File
bb20: 20 6f 70 65 6e 65 64 20 74 68 61 74 20 69 73 20   opened that is 
bb30: 6e 6f 74 20 61 20 64 61 74 61 62 61 73 65 20 66  not a database f
bb40: 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ile */.#define S
bb50: 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20 20 20 20  QLITE_NOTICE    
bb60: 20 20 32 37 20 20 20 2f 2a 20 4e 6f 74 69 66 69    27   /* Notifi
bb70: 63 61 74 69 6f 6e 73 20 66 72 6f 6d 20 73 71 6c  cations from sql
bb80: 69 74 65 33 5f 6c 6f 67 28 29 20 2a 2f 0a 23 64  ite3_log() */.#d
bb90: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 57 41 52  efine SQLITE_WAR
bba0: 4e 49 4e 47 20 20 20 20 20 32 38 20 20 20 2f 2a  NING     28   /*
bbb0: 20 57 61 72 6e 69 6e 67 73 20 66 72 6f 6d 20 73   Warnings from s
bbc0: 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 2a 2f 0a  qlite3_log() */.
bbd0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
bbe0: 4f 57 20 20 20 20 20 20 20 20 20 31 30 30 20 20  OW         100  
bbf0: 2f 2a 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  /* sqlite3_step(
bc00: 29 20 68 61 73 20 61 6e 6f 74 68 65 72 20 72 6f  ) has another ro
bc10: 77 20 72 65 61 64 79 20 2a 2f 0a 23 64 65 66 69  w ready */.#defi
bc20: 6e 65 20 53 51 4c 49 54 45 5f 44 4f 4e 45 20 20  ne SQLITE_DONE  
bc30: 20 20 20 20 20 20 31 30 31 20 20 2f 2a 20 73 71        101  /* sq
bc40: 6c 69 74 65 33 5f 73 74 65 70 28 29 20 68 61 73  lite3_step() has
bc50: 20 66 69 6e 69 73 68 65 64 20 65 78 65 63 75 74   finished execut
bc60: 69 6e 67 20 2a 2f 0a 2f 2a 20 65 6e 64 2d 6f 66  ing */./* end-of
bc70: 2d 65 72 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a  -error-codes */.
bc80: 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
bc90: 20 45 78 74 65 6e 64 65 64 20 52 65 73 75 6c 74   Extended Result
bca0: 20 43 6f 64 65 73 0a 2a 2a 20 4b 45 59 57 4f 52   Codes.** KEYWOR
bcb0: 44 53 3a 20 7b 65 78 74 65 6e 64 65 64 20 72 65  DS: {extended re
bcc0: 73 75 6c 74 20 63 6f 64 65 20 64 65 66 69 6e 69  sult code defini
bcd0: 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a 20 49 6e 20  tions}.**.** In 
bce0: 69 74 73 20 64 65 66 61 75 6c 74 20 63 6f 6e 66  its default conf
bcf0: 69 67 75 72 61 74 69 6f 6e 2c 20 53 51 4c 69 74  iguration, SQLit
bd00: 65 20 41 50 49 20 72 6f 75 74 69 6e 65 73 20 72  e API routines r
bd10: 65 74 75 72 6e 20 6f 6e 65 20 6f 66 20 33 30 20  eturn one of 30 
bd20: 69 6e 74 65 67 65 72 0a 2a 2a 20 5b 72 65 73 75  integer.** [resu
bd30: 6c 74 20 63 6f 64 65 73 5d 2e 20 20 48 6f 77 65  lt codes].  Howe
bd40: 76 65 72 2c 20 65 78 70 65 72 69 65 6e 63 65 20  ver, experience 
bd50: 68 61 73 20 73 68 6f 77 6e 20 74 68 61 74 20 6d  has shown that m
bd60: 61 6e 79 20 6f 66 0a 2a 2a 20 74 68 65 73 65 20  any of.** these 
bd70: 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61 72 65  result codes are
bd80: 20 74 6f 6f 20 63 6f 61 72 73 65 2d 67 72 61 69   too coarse-grai
bd90: 6e 65 64 2e 20 20 54 68 65 79 20 64 6f 20 6e 6f  ned.  They do no
bda0: 74 20 70 72 6f 76 69 64 65 20 61 73 0a 2a 2a 20  t provide as.** 
bdb0: 6d 75 63 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  much information
bdc0: 20 61 62 6f 75 74 20 70 72 6f 62 6c 65 6d 73 20   about problems 
bdd0: 61 73 20 70 72 6f 67 72 61 6d 6d 65 72 73 20 6d  as programmers m
bde0: 69 67 68 74 20 6c 69 6b 65 2e 20 20 49 6e 20 61  ight like.  In a
bdf0: 6e 20 65 66 66 6f 72 74 20 74 6f 0a 2a 2a 20 61  n effort to.** a
be00: 64 64 72 65 73 73 20 74 68 69 73 2c 20 6e 65 77  ddress this, new
be10: 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  er versions of S
be20: 51 4c 69 74 65 20 28 76 65 72 73 69 6f 6e 20 33  QLite (version 3
be30: 2e 33 2e 38 20 5b 64 61 74 65 6f 66 3a 33 2e 33  .3.8 [dateof:3.3
be40: 2e 38 5d 0a 2a 2a 20 61 6e 64 20 6c 61 74 65 72  .8].** and later
be50: 29 20 69 6e 63 6c 75 64 65 0a 2a 2a 20 73 75 70  ) include.** sup
be60: 70 6f 72 74 20 66 6f 72 20 61 64 64 69 74 69 6f  port for additio
be70: 6e 61 6c 20 72 65 73 75 6c 74 20 63 6f 64 65 73  nal result codes
be80: 20 74 68 61 74 20 70 72 6f 76 69 64 65 20 6d 6f   that provide mo
be90: 72 65 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f  re detailed info
bea0: 72 6d 61 74 69 6f 6e 0a 2a 2a 20 61 62 6f 75 74  rmation.** about
beb0: 20 65 72 72 6f 72 73 2e 20 54 68 65 73 65 20 5b   errors. These [
bec0: 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20  extended result 
bed0: 63 6f 64 65 73 5d 20 61 72 65 20 65 6e 61 62 6c  codes] are enabl
bee0: 65 64 20 6f 72 20 64 69 73 61 62 6c 65 64 0a 2a  ed or disabled.*
bef0: 2a 20 6f 6e 20 61 20 70 65 72 20 64 61 74 61 62  * on a per datab
bf00: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62  ase connection b
bf10: 61 73 69 73 20 75 73 69 6e 67 20 74 68 65 0a 2a  asis using the.*
bf20: 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  * [sqlite3_exten
bf30: 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
bf40: 28 29 5d 20 41 50 49 2e 20 20 4f 72 2c 20 74 68  ()] API.  Or, th
bf50: 65 20 65 78 74 65 6e 64 65 64 20 63 6f 64 65 20  e extended code 
bf60: 66 6f 72 0a 2a 2a 20 74 68 65 20 6d 6f 73 74 20  for.** the most 
bf70: 72 65 63 65 6e 74 20 65 72 72 6f 72 20 63 61 6e  recent error can
bf80: 20 62 65 20 6f 62 74 61 69 6e 65 64 20 75 73 69   be obtained usi
bf90: 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65  ng.** [sqlite3_e
bfa0: 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28  xtended_errcode(
bfb0: 29 5d 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  )]..*/.#define S
bfc0: 51 4c 49 54 45 5f 45 52 52 4f 52 5f 4d 49 53 53  QLITE_ERROR_MISS
bfd0: 49 4e 47 5f 43 4f 4c 4c 53 45 51 20 20 20 28 53  ING_COLLSEQ   (S
bfe0: 51 4c 49 54 45 5f 45 52 52 4f 52 20 7c 20 28 31  QLITE_ERROR | (1
bff0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
c000: 4c 49 54 45 5f 45 52 52 4f 52 5f 52 45 54 52 59  LITE_ERROR_RETRY
c010: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51               (SQ
c020: 4c 49 54 45 5f 45 52 52 4f 52 20 7c 20 28 32 3c  LITE_ERROR | (2<
c030: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
c040: 49 54 45 5f 49 4f 45 52 52 5f 52 45 41 44 20 20  ITE_IOERR_READ  
c050: 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c              (SQL
c060: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31 3c 3c  ITE_IOERR | (1<<
c070: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c080: 54 45 5f 49 4f 45 52 52 5f 53 48 4f 52 54 5f 52  TE_IOERR_SHORT_R
c090: 45 41 44 20 20 20 20 20 20 20 20 28 53 51 4c 49  EAD        (SQLI
c0a0: 54 45 5f 49 4f 45 52 52 20 7c 20 28 32 3c 3c 38  TE_IOERR | (2<<8
c0b0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c0c0: 45 5f 49 4f 45 52 52 5f 57 52 49 54 45 20 20 20  E_IOERR_WRITE   
c0d0: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c0e0: 45 5f 49 4f 45 52 52 20 7c 20 28 33 3c 3c 38 29  E_IOERR | (3<<8)
c0f0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c100: 5f 49 4f 45 52 52 5f 46 53 59 4e 43 20 20 20 20  _IOERR_FSYNC    
c110: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c120: 5f 49 4f 45 52 52 20 7c 20 28 34 3c 3c 38 29 29  _IOERR | (4<<8))
c130: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
c140: 49 4f 45 52 52 5f 44 49 52 5f 46 53 59 4e 43 20  IOERR_DIR_FSYNC 
c150: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
c160: 49 4f 45 52 52 20 7c 20 28 35 3c 3c 38 29 29 0a  IOERR | (5<<8)).
c170: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c180: 4f 45 52 52 5f 54 52 55 4e 43 41 54 45 20 20 20  OERR_TRUNCATE   
c190: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c1a0: 4f 45 52 52 20 7c 20 28 36 3c 3c 38 29 29 0a 23  OERR | (6<<8)).#
c1b0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
c1c0: 45 52 52 5f 46 53 54 41 54 20 20 20 20 20 20 20  ERR_FSTAT       
c1d0: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f        (SQLITE_IO
c1e0: 45 52 52 20 7c 20 28 37 3c 3c 38 29 29 0a 23 64  ERR | (7<<8)).#d
c1f0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45  efine SQLITE_IOE
c200: 52 52 5f 55 4e 4c 4f 43 4b 20 20 20 20 20 20 20  RR_UNLOCK       
c210: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45       (SQLITE_IOE
c220: 52 52 20 7c 20 28 38 3c 3c 38 29 29 0a 23 64 65  RR | (8<<8)).#de
c230: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52  fine SQLITE_IOER
c240: 52 5f 52 44 4c 4f 43 4b 20 20 20 20 20 20 20 20  R_RDLOCK        
c250: 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52      (SQLITE_IOER
c260: 52 20 7c 20 28 39 3c 3c 38 29 29 0a 23 64 65 66  R | (9<<8)).#def
c270: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c280: 5f 44 45 4c 45 54 45 20 20 20 20 20 20 20 20 20  _DELETE         
c290: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c2a0: 20 7c 20 28 31 30 3c 3c 38 29 29 0a 23 64 65 66   | (10<<8)).#def
c2b0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c2c0: 5f 42 4c 4f 43 4b 45 44 20 20 20 20 20 20 20 20  _BLOCKED        
c2d0: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c2e0: 20 7c 20 28 31 31 3c 3c 38 29 29 0a 23 64 65 66   | (11<<8)).#def
c2f0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c300: 5f 4e 4f 4d 45 4d 20 20 20 20 20 20 20 20 20 20  _NOMEM          
c310: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c320: 20 7c 20 28 31 32 3c 3c 38 29 29 0a 23 64 65 66   | (12<<8)).#def
c330: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c340: 5f 41 43 43 45 53 53 20 20 20 20 20 20 20 20 20  _ACCESS         
c350: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c360: 20 7c 20 28 31 33 3c 3c 38 29 29 0a 23 64 65 66   | (13<<8)).#def
c370: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c380: 5f 43 48 45 43 4b 52 45 53 45 52 56 45 44 4c 4f  _CHECKRESERVEDLO
c390: 43 4b 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52  CK (SQLITE_IOERR
c3a0: 20 7c 20 28 31 34 3c 3c 38 29 29 0a 23 64 65 66   | (14<<8)).#def
c3b0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c3c0: 5f 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20  _LOCK           
c3d0: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c3e0: 20 7c 20 28 31 35 3c 3c 38 29 29 0a 23 64 65 66   | (15<<8)).#def
c3f0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c400: 5f 43 4c 4f 53 45 20 20 20 20 20 20 20 20 20 20  _CLOSE          
c410: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c420: 20 7c 20 28 31 36 3c 3c 38 29 29 0a 23 64 65 66   | (16<<8)).#def
c430: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c440: 5f 44 49 52 5f 43 4c 4f 53 45 20 20 20 20 20 20  _DIR_CLOSE      
c450: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c460: 20 7c 20 28 31 37 3c 3c 38 29 29 0a 23 64 65 66   | (17<<8)).#def
c470: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c480: 5f 53 48 4d 4f 50 45 4e 20 20 20 20 20 20 20 20  _SHMOPEN        
c490: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c4a0: 20 7c 20 28 31 38 3c 3c 38 29 29 0a 23 64 65 66   | (18<<8)).#def
c4b0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c4c0: 5f 53 48 4d 53 49 5a 45 20 20 20 20 20 20 20 20  _SHMSIZE        
c4d0: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c4e0: 20 7c 20 28 31 39 3c 3c 38 29 29 0a 23 64 65 66   | (19<<8)).#def
c4f0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c500: 5f 53 48 4d 4c 4f 43 4b 20 20 20 20 20 20 20 20  _SHMLOCK        
c510: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c520: 20 7c 20 28 32 30 3c 3c 38 29 29 0a 23 64 65 66   | (20<<8)).#def
c530: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c540: 5f 53 48 4d 4d 41 50 20 20 20 20 20 20 20 20 20  _SHMMAP         
c550: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c560: 20 7c 20 28 32 31 3c 3c 38 29 29 0a 23 64 65 66   | (21<<8)).#def
c570: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c580: 5f 53 45 45 4b 20 20 20 20 20 20 20 20 20 20 20  _SEEK           
c590: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c5a0: 20 7c 20 28 32 32 3c 3c 38 29 29 0a 23 64 65 66   | (22<<8)).#def
c5b0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c5c0: 5f 44 45 4c 45 54 45 5f 4e 4f 45 4e 54 20 20 20  _DELETE_NOENT   
c5d0: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c5e0: 20 7c 20 28 32 33 3c 3c 38 29 29 0a 23 64 65 66   | (23<<8)).#def
c5f0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c600: 5f 4d 4d 41 50 20 20 20 20 20 20 20 20 20 20 20  _MMAP           
c610: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c620: 20 7c 20 28 32 34 3c 3c 38 29 29 0a 23 64 65 66   | (24<<8)).#def
c630: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c640: 5f 47 45 54 54 45 4d 50 50 41 54 48 20 20 20 20  _GETTEMPPATH    
c650: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c660: 20 7c 20 28 32 35 3c 3c 38 29 29 0a 23 64 65 66   | (25<<8)).#def
c670: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c680: 5f 43 4f 4e 56 50 41 54 48 20 20 20 20 20 20 20  _CONVPATH       
c690: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c6a0: 20 7c 20 28 32 36 3c 3c 38 29 29 0a 23 64 65 66   | (26<<8)).#def
c6b0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c6c0: 5f 56 4e 4f 44 45 20 20 20 20 20 20 20 20 20 20  _VNODE          
c6d0: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c6e0: 20 7c 20 28 32 37 3c 3c 38 29 29 0a 23 64 65 66   | (27<<8)).#def
c6f0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c700: 5f 41 55 54 48 20 20 20 20 20 20 20 20 20 20 20  _AUTH           
c710: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c720: 20 7c 20 28 32 38 3c 3c 38 29 29 0a 23 64 65 66   | (28<<8)).#def
c730: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c740: 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 20 20 20  _BEGIN_ATOMIC   
c750: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c760: 20 7c 20 28 32 39 3c 3c 38 29 29 0a 23 64 65 66   | (29<<8)).#def
c770: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c780: 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 20 20  _COMMIT_ATOMIC  
c790: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c7a0: 20 7c 20 28 33 30 3c 3c 38 29 29 0a 23 64 65 66   | (30<<8)).#def
c7b0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c7c0: 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43  _ROLLBACK_ATOMIC
c7d0: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c7e0: 20 7c 20 28 33 31 3c 3c 38 29 29 0a 23 64 65 66   | (31<<8)).#def
c7f0: 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45  ine SQLITE_LOCKE
c800: 44 5f 53 48 41 52 45 44 43 41 43 48 45 20 20 20  D_SHAREDCACHE   
c810: 20 20 20 28 53 51 4c 49 54 45 5f 4c 4f 43 4b 45     (SQLITE_LOCKE
c820: 44 20 7c 20 20 28 31 3c 3c 38 29 29 0a 23 64 65  D |  (1<<8)).#de
c830: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
c840: 45 44 5f 56 54 41 42 20 20 20 20 20 20 20 20 20  ED_VTAB         
c850: 20 20 20 20 28 53 51 4c 49 54 45 5f 4c 4f 43 4b      (SQLITE_LOCK
c860: 45 44 20 7c 20 20 28 32 3c 3c 38 29 29 0a 23 64  ED |  (2<<8)).#d
c870: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42 55 53  efine SQLITE_BUS
c880: 59 5f 52 45 43 4f 56 45 52 59 20 20 20 20 20 20  Y_RECOVERY      
c890: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 42 55 53       (SQLITE_BUS
c8a0: 59 20 20 20 7c 20 20 28 31 3c 3c 38 29 29 0a 23  Y   |  (1<<8)).#
c8b0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42 55  define SQLITE_BU
c8c0: 53 59 5f 53 4e 41 50 53 48 4f 54 20 20 20 20 20  SY_SNAPSHOT     
c8d0: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 42 55        (SQLITE_BU
c8e0: 53 59 20 20 20 7c 20 20 28 32 3c 3c 38 29 29 0a  SY   |  (2<<8)).
c8f0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
c900: 41 4e 54 4f 50 45 4e 5f 4e 4f 54 45 4d 50 44 49  ANTOPEN_NOTEMPDI
c910: 52 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43  R      (SQLITE_C
c920: 41 4e 54 4f 50 45 4e 20 7c 20 28 31 3c 3c 38 29  ANTOPEN | (1<<8)
c930: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c940: 5f 43 41 4e 54 4f 50 45 4e 5f 49 53 44 49 52 20  _CANTOPEN_ISDIR 
c950: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c960: 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 32 3c 3c  _CANTOPEN | (2<<
c970: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c980: 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 46 55 4c 4c  TE_CANTOPEN_FULL
c990: 50 41 54 48 20 20 20 20 20 20 20 28 53 51 4c 49  PATH       (SQLI
c9a0: 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 33  TE_CANTOPEN | (3
c9b0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
c9c0: 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 43 4f  LITE_CANTOPEN_CO
c9d0: 4e 56 50 41 54 48 20 20 20 20 20 20 20 28 53 51  NVPATH       (SQ
c9e0: 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20  LITE_CANTOPEN | 
c9f0: 28 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (4<<8)).#define 
ca00: 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5f 56  SQLITE_CORRUPT_V
ca10: 54 41 42 20 20 20 20 20 20 20 20 20 20 20 20 28  TAB            (
ca20: 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 7c  SQLITE_CORRUPT |
ca30: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
ca40: 20 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5f   SQLITE_CORRUPT_
ca50: 53 45 51 55 45 4e 43 45 20 20 20 20 20 20 20 20  SEQUENCE        
ca60: 28 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20  (SQLITE_CORRUPT 
ca70: 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (2<<8)).#defin
ca80: 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c  e SQLITE_READONL
ca90: 59 5f 52 45 43 4f 56 45 52 59 20 20 20 20 20 20  Y_RECOVERY      
caa0: 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c   (SQLITE_READONL
cab0: 59 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66  Y | (1<<8)).#def
cac0: 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f  ine SQLITE_READO
cad0: 4e 4c 59 5f 43 41 4e 54 4c 4f 43 4b 20 20 20 20  NLY_CANTLOCK    
cae0: 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f     (SQLITE_READO
caf0: 4e 4c 59 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64  NLY | (2<<8)).#d
cb00: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41  efine SQLITE_REA
cb10: 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41 43 4b 20 20  DONLY_ROLLBACK  
cb20: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41       (SQLITE_REA
cb30: 44 4f 4e 4c 59 20 7c 20 28 33 3c 3c 38 29 29 0a  DONLY | (3<<8)).
cb40: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
cb50: 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f 56 45 44 20  EADONLY_DBMOVED 
cb60: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52         (SQLITE_R
cb70: 45 41 44 4f 4e 4c 59 20 7c 20 28 34 3c 3c 38 29  EADONLY | (4<<8)
cb80: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
cb90: 5f 52 45 41 44 4f 4e 4c 59 5f 43 41 4e 54 49 4e  _READONLY_CANTIN
cba0: 49 54 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  IT       (SQLITE
cbb0: 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 35 3c 3c  _READONLY | (5<<
cbc0: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
cbd0: 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 44 49 52 45  TE_READONLY_DIRE
cbe0: 43 54 4f 52 59 20 20 20 20 20 20 28 53 51 4c 49  CTORY      (SQLI
cbf0: 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 36  TE_READONLY | (6
cc00: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
cc10: 4c 49 54 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42  LITE_ABORT_ROLLB
cc20: 41 43 4b 20 20 20 20 20 20 20 20 20 20 28 53 51  ACK          (SQ
cc30: 4c 49 54 45 5f 41 42 4f 52 54 20 7c 20 28 32 3c  LITE_ABORT | (2<
cc40: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cc50: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43  ITE_CONSTRAINT_C
cc60: 48 45 43 4b 20 20 20 20 20 20 20 20 28 53 51 4c  HECK        (SQL
cc70: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
cc80: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
cc90: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
cca0: 4e 54 5f 43 4f 4d 4d 49 54 48 4f 4f 4b 20 20 20  NT_COMMITHOOK   
ccb0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
ccc0: 4e 54 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  NT | (2<<8)).#de
ccd0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
cce0: 54 52 41 49 4e 54 5f 46 4f 52 45 49 47 4e 4b 45  TRAINT_FOREIGNKE
ccf0: 59 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53  Y   (SQLITE_CONS
cd00: 54 52 41 49 4e 54 20 7c 20 28 33 3c 3c 38 29 29  TRAINT | (3<<8))
cd10: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cd20: 43 4f 4e 53 54 52 41 49 4e 54 5f 46 55 4e 43 54  CONSTRAINT_FUNCT
cd30: 49 4f 4e 20 20 20 20 20 28 53 51 4c 49 54 45 5f  ION     (SQLITE_
cd40: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 34 3c  CONSTRAINT | (4<
cd50: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cd60: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4e  ITE_CONSTRAINT_N
cd70: 4f 54 4e 55 4c 4c 20 20 20 20 20 20 28 53 51 4c  OTNULL      (SQL
cd80: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
cd90: 20 28 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (5<<8)).#define
cda0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
cdb0: 4e 54 5f 50 52 49 4d 41 52 59 4b 45 59 20 20 20  NT_PRIMARYKEY   
cdc0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
cdd0: 4e 54 20 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65  NT | (6<<8)).#de
cde0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
cdf0: 54 52 41 49 4e 54 5f 54 52 49 47 47 45 52 20 20  TRAINT_TRIGGER  
ce00: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
ce10: 54 52 41 49 4e 54 20 7c 20 28 37 3c 3c 38 29 29  TRAINT | (7<<8))
ce20: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
ce30: 43 4f 4e 53 54 52 41 49 4e 54 5f 55 4e 49 51 55  CONSTRAINT_UNIQU
ce40: 45 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  E       (SQLITE_
ce50: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 38 3c  CONSTRAINT | (8<
ce60: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
ce70: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 56  ITE_CONSTRAINT_V
ce80: 54 41 42 20 20 20 20 20 20 20 20 20 28 53 51 4c  TAB         (SQL
ce90: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
cea0: 20 28 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (9<<8)).#define
ceb0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
cec0: 4e 54 5f 52 4f 57 49 44 20 20 20 20 20 20 20 20  NT_ROWID        
ced0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
cee0: 4e 54 20 7c 28 31 30 3c 3c 38 29 29 0a 23 64 65  NT |(10<<8)).#de
cef0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49  fine SQLITE_NOTI
cf00: 43 45 5f 52 45 43 4f 56 45 52 5f 57 41 4c 20 20  CE_RECOVER_WAL  
cf10: 20 20 20 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49      (SQLITE_NOTI
cf20: 43 45 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65  CE | (1<<8)).#de
cf30: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49  fine SQLITE_NOTI
cf40: 43 45 5f 52 45 43 4f 56 45 52 5f 52 4f 4c 4c 42  CE_RECOVER_ROLLB
cf50: 41 43 4b 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49  ACK (SQLITE_NOTI
cf60: 43 45 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  CE | (2<<8)).#de
cf70: 66 69 6e 65 20 53 51 4c 49 54 45 5f 57 41 52 4e  fine SQLITE_WARN
cf80: 49 4e 47 5f 41 55 54 4f 49 4e 44 45 58 20 20 20  ING_AUTOINDEX   
cf90: 20 20 20 20 28 53 51 4c 49 54 45 5f 57 41 52 4e      (SQLITE_WARN
cfa0: 49 4e 47 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  ING | (1<<8)).#d
cfb0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 55 54  efine SQLITE_AUT
cfc0: 48 5f 55 53 45 52 20 20 20 20 20 20 20 20 20 20  H_USER          
cfd0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 41 55 54       (SQLITE_AUT
cfe0: 48 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66  H | (1<<8)).#def
cff0: 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 5f 4c 4f  ine SQLITE_OK_LO
d000: 41 44 5f 50 45 52 4d 41 4e 45 4e 54 4c 59 20 20  AD_PERMANENTLY  
d010: 20 20 20 28 53 51 4c 49 54 45 5f 4f 4b 20 7c 20     (SQLITE_OK | 
d020: 28 31 3c 3c 38 29 29 0a 0a 2f 2a 0a 2a 2a 20 43  (1<<8))../*.** C
d030: 41 50 49 33 52 45 46 3a 20 46 6c 61 67 73 20 46  API3REF: Flags F
d040: 6f 72 20 46 69 6c 65 20 4f 70 65 6e 20 4f 70 65  or File Open Ope
d050: 72 61 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68  rations.**.** Th
d060: 65 73 65 20 62 69 74 20 76 61 6c 75 65 73 20 61  ese bit values a
d070: 72 65 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  re intended for 
d080: 75 73 65 20 69 6e 20 74 68 65 0a 2a 2a 20 33 72  use in the.** 3r
d090: 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  d parameter to t
d0a0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  he [sqlite3_open
d0b0: 5f 76 32 28 29 5d 20 69 6e 74 65 72 66 61 63 65  _v2()] interface
d0c0: 20 61 6e 64 0a 2a 2a 20 69 6e 20 74 68 65 20 34   and.** in the 4
d0d0: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
d0e0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  the [sqlite3_vfs
d0f0: 2e 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 2e 0a  .xOpen] method..
d100: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d110: 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 20  E_OPEN_READONLY 
d120: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d130: 30 31 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  01  /* Ok for sq
d140: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d150: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d160: 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45  E_OPEN_READWRITE
d170: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d180: 30 32 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  02  /* Ok for sq
d190: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d1a0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d1b0: 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 20 20 20  E_OPEN_CREATE   
d1c0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d1d0: 30 34 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  04  /* Ok for sq
d1e0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d1f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d200: 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43  E_OPEN_DELETEONC
d210: 4c 4f 53 45 20 20 20 20 30 78 30 30 30 30 30 30  LOSE    0x000000
d220: 30 38 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  08  /* VFS only 
d230: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d240: 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45  E_OPEN_EXCLUSIVE
d250: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d260: 31 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  10  /* VFS only 
d270: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d280: 45 5f 4f 50 45 4e 5f 41 55 54 4f 50 52 4f 58 59  E_OPEN_AUTOPROXY
d290: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d2a0: 32 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  20  /* VFS only 
d2b0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d2c0: 45 5f 4f 50 45 4e 5f 55 52 49 20 20 20 20 20 20  E_OPEN_URI      
d2d0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d2e0: 34 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  40  /* Ok for sq
d2f0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d300: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d310: 45 5f 4f 50 45 4e 5f 4d 45 4d 4f 52 59 20 20 20  E_OPEN_MEMORY   
d320: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d330: 38 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  80  /* Ok for sq
d340: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d350: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d360: 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 44 42 20 20  E_OPEN_MAIN_DB  
d370: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 31          0x000001
d380: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d390: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d3a0: 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 44 42 20 20  E_OPEN_TEMP_DB  
d3b0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 32          0x000002
d3c0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d3d0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d3e0: 45 5f 4f 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54  E_OPEN_TRANSIENT
d3f0: 5f 44 42 20 20 20 20 20 30 78 30 30 30 30 30 34  _DB     0x000004
d400: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d410: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d420: 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52  E_OPEN_MAIN_JOUR
d430: 4e 41 4c 20 20 20 20 20 30 78 30 30 30 30 30 38  NAL     0x000008
d440: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d450: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d460: 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 4a 4f 55 52  E_OPEN_TEMP_JOUR
d470: 4e 41 4c 20 20 20 20 20 30 78 30 30 30 30 31 30  NAL     0x000010
d480: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d490: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d4a0: 45 5f 4f 50 45 4e 5f 53 55 42 4a 4f 55 52 4e 41  E_OPEN_SUBJOURNA
d4b0: 4c 20 20 20 20 20 20 20 30 78 30 30 30 30 32 30  L       0x000020
d4c0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d4d0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d4e0: 45 5f 4f 50 45 4e 5f 4d 41 53 54 45 52 5f 4a 4f  E_OPEN_MASTER_JO
d4f0: 55 52 4e 41 4c 20 20 20 30 78 30 30 30 30 34 30  URNAL   0x000040
d500: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d510: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d520: 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 20 20  E_OPEN_NOMUTEX  
d530: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 38 30          0x000080
d540: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d550: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d560: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d570: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
d580: 20 20 20 20 20 20 20 20 30 78 30 30 30 31 30 30          0x000100
d590: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d5a0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d5b0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d5c0: 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43  E_OPEN_SHAREDCAC
d5d0: 48 45 20 20 20 20 20 20 30 78 30 30 30 32 30 30  HE      0x000200
d5e0: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d5f0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d600: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d610: 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41  E_OPEN_PRIVATECA
d620: 43 48 45 20 20 20 20 20 30 78 30 30 30 34 30 30  CHE     0x000400
d630: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d640: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d650: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d660: 45 5f 4f 50 45 4e 5f 57 41 4c 20 20 20 20 20 20  E_OPEN_WAL      
d670: 20 20 20 20 20 20 20 20 30 78 30 30 30 38 30 30          0x000800
d680: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d690: 2a 2f 0a 0a 2f 2a 20 52 65 73 65 72 76 65 64 3a  */../* Reserved:
d6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6b0: 20 20 20 20 20 20 20 20 20 30 78 30 30 46 30 30           0x00F00
d6c0: 30 30 30 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41  000 */../*.** CA
d6d0: 50 49 33 52 45 46 3a 20 44 65 76 69 63 65 20 43  PI3REF: Device C
d6e0: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 0a 2a  haracteristics.*
d6f0: 2a 0a 2a 2a 20 54 68 65 20 78 44 65 76 69 63 65  *.** The xDevice
d700: 43 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20  Characteristics 
d710: 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 5b 73  method of the [s
d720: 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
d730: 73 5d 0a 2a 2a 20 6f 62 6a 65 63 74 20 72 65 74  s].** object ret
d740: 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20  urns an integer 
d750: 77 68 69 63 68 20 69 73 20 61 20 76 65 63 74 6f  which is a vecto
d760: 72 20 6f 66 20 74 68 65 73 65 0a 2a 2a 20 62 69  r of these.** bi
d770: 74 20 76 61 6c 75 65 73 20 65 78 70 72 65 73 73  t values express
d780: 69 6e 67 20 49 2f 4f 20 63 68 61 72 61 63 74 65  ing I/O characte
d790: 72 69 73 74 69 63 73 20 6f 66 20 74 68 65 20 6d  ristics of the m
d7a0: 61 73 73 20 73 74 6f 72 61 67 65 0a 2a 2a 20 64  ass storage.** d
d7b0: 65 76 69 63 65 20 74 68 61 74 20 68 6f 6c 64 73  evice that holds
d7c0: 20 74 68 65 20 66 69 6c 65 20 74 68 61 74 20 74   the file that t
d7d0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  he [sqlite3_io_m
d7e0: 65 74 68 6f 64 73 5d 0a 2a 2a 20 72 65 66 65 72  ethods].** refer
d7f0: 73 20 74 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  s to..**.** The 
d800: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
d810: 4d 49 43 20 70 72 6f 70 65 72 74 79 20 6d 65 61  MIC property mea
d820: 6e 73 20 74 68 61 74 20 61 6c 6c 20 77 72 69 74  ns that all writ
d830: 65 73 20 6f 66 0a 2a 2a 20 61 6e 79 20 73 69 7a  es of.** any siz
d840: 65 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54  e are atomic.  T
d850: 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  he SQLITE_IOCAP_
d860: 41 54 4f 4d 49 43 6e 6e 6e 20 76 61 6c 75 65 73  ATOMICnnn values
d870: 0a 2a 2a 20 6d 65 61 6e 20 74 68 61 74 20 77 72  .** mean that wr
d880: 69 74 65 73 20 6f 66 20 62 6c 6f 63 6b 73 20 74  ites of blocks t
d890: 68 61 74 20 61 72 65 20 6e 6e 6e 20 62 79 74 65  hat are nnn byte
d8a0: 73 20 69 6e 20 73 69 7a 65 20 61 6e 64 0a 2a 2a  s in size and.**
d8b0: 20 61 72 65 20 61 6c 69 67 6e 65 64 20 74 6f 20   are aligned to 
d8c0: 61 6e 20 61 64 64 72 65 73 73 20 77 68 69 63 68  an address which
d8d0: 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6d   is an integer m
d8e0: 75 6c 74 69 70 6c 65 20 6f 66 0a 2a 2a 20 6e 6e  ultiple of.** nn
d8f0: 6e 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54  n are atomic.  T
d900: 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  he SQLITE_IOCAP_
d910: 53 41 46 45 5f 41 50 50 45 4e 44 20 76 61 6c 75  SAFE_APPEND valu
d920: 65 20 6d 65 61 6e 73 0a 2a 2a 20 74 68 61 74 20  e means.** that 
d930: 77 68 65 6e 20 64 61 74 61 20 69 73 20 61 70 70  when data is app
d940: 65 6e 64 65 64 20 74 6f 20 61 20 66 69 6c 65 2c  ended to a file,
d950: 20 74 68 65 20 64 61 74 61 20 69 73 20 61 70 70   the data is app
d960: 65 6e 64 65 64 0a 2a 2a 20 66 69 72 73 74 20 74  ended.** first t
d970: 68 65 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20  hen the size of 
d980: 74 68 65 20 66 69 6c 65 20 69 73 20 65 78 74 65  the file is exte
d990: 6e 64 65 64 2c 20 6e 65 76 65 72 20 74 68 65 20  nded, never the 
d9a0: 6f 74 68 65 72 0a 2a 2a 20 77 61 79 20 61 72 6f  other.** way aro
d9b0: 75 6e 64 2e 20 20 54 68 65 20 53 51 4c 49 54 45  und.  The SQLITE
d9c0: 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e 54 49 41  _IOCAP_SEQUENTIA
d9d0: 4c 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73  L property means
d9e0: 20 74 68 61 74 0a 2a 2a 20 69 6e 66 6f 72 6d 61   that.** informa
d9f0: 74 69 6f 6e 20 69 73 20 77 72 69 74 74 65 6e 20  tion is written 
da00: 74 6f 20 64 69 73 6b 20 69 6e 20 74 68 65 20 73  to disk in the s
da10: 61 6d 65 20 6f 72 64 65 72 20 61 73 20 63 61 6c  ame order as cal
da20: 6c 73 0a 2a 2a 20 74 6f 20 78 57 72 69 74 65 28  ls.** to xWrite(
da30: 29 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49  ).  The SQLITE_I
da40: 4f 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f  OCAP_POWERSAFE_O
da50: 56 45 52 57 52 49 54 45 20 70 72 6f 70 65 72 74  VERWRITE propert
da60: 79 20 6d 65 61 6e 73 20 74 68 61 74 0a 2a 2a 20  y means that.** 
da70: 61 66 74 65 72 20 72 65 62 6f 6f 74 20 66 6f 6c  after reboot fol
da80: 6c 6f 77 69 6e 67 20 61 20 63 72 61 73 68 20 6f  lowing a crash o
da90: 72 20 70 6f 77 65 72 20 6c 6f 73 73 2c 20 74 68  r power loss, th
daa0: 65 20 6f 6e 6c 79 20 62 79 74 65 73 20 69 6e 20  e only bytes in 
dab0: 61 0a 2a 2a 20 66 69 6c 65 20 74 68 61 74 20 77  a.** file that w
dac0: 65 72 65 20 77 72 69 74 74 65 6e 20 61 74 20 74  ere written at t
dad0: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6c  he application l
dae0: 65 76 65 6c 20 6d 69 67 68 74 20 68 61 76 65 20  evel might have 
daf0: 63 68 61 6e 67 65 64 0a 2a 2a 20 61 6e 64 20 74  changed.** and t
db00: 68 61 74 20 61 64 6a 61 63 65 6e 74 20 62 79 74  hat adjacent byt
db10: 65 73 2c 20 65 76 65 6e 20 62 79 74 65 73 20 77  es, even bytes w
db20: 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 73  ithin the same s
db30: 65 63 74 6f 72 20 61 72 65 0a 2a 2a 20 67 75 61  ector are.** gua
db40: 72 61 6e 74 65 65 64 20 74 6f 20 62 65 20 75 6e  ranteed to be un
db50: 63 68 61 6e 67 65 64 2e 20 20 54 68 65 20 53 51  changed.  The SQ
db60: 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e 44 45 4c  LITE_IOCAP_UNDEL
db70: 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e  ETABLE_WHEN_OPEN
db80: 0a 2a 2a 20 66 6c 61 67 20 69 6e 64 69 63 61 74  .** flag indicat
db90: 65 73 20 74 68 61 74 20 61 20 66 69 6c 65 20 63  es that a file c
dba0: 61 6e 6e 6f 74 20 62 65 20 64 65 6c 65 74 65 64  annot be deleted
dbb0: 20 77 68 65 6e 20 6f 70 65 6e 2e 20 20 54 68 65   when open.  The
dbc0: 0a 2a 2a 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  .** SQLITE_IOCAP
dbd0: 5f 49 4d 4d 55 54 41 42 4c 45 20 66 6c 61 67 20  _IMMUTABLE flag 
dbe0: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74  indicates that t
dbf0: 68 65 20 66 69 6c 65 20 69 73 20 6f 6e 0a 2a 2a  he file is on.**
dc00: 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 65 64 69 61   read-only media
dc10: 20 61 6e 64 20 63 61 6e 6e 6f 74 20 62 65 20 63   and cannot be c
dc20: 68 61 6e 67 65 64 20 65 76 65 6e 20 62 79 20 70  hanged even by p
dc30: 72 6f 63 65 73 73 65 73 20 77 69 74 68 0a 2a 2a  rocesses with.**
dc40: 20 65 6c 65 76 61 74 65 64 20 70 72 69 76 69 6c   elevated privil
dc50: 65 67 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  eges..**.** The 
dc60: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 42 41 54  SQLITE_IOCAP_BAT
dc70: 43 48 5f 41 54 4f 4d 49 43 20 70 72 6f 70 65 72  CH_ATOMIC proper
dc80: 74 79 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  ty means that th
dc90: 65 20 75 6e 64 65 72 6c 79 69 6e 67 0a 2a 2a 20  e underlying.** 
dca0: 66 69 6c 65 73 79 73 74 65 6d 20 73 75 70 70 6f  filesystem suppo
dcb0: 72 74 73 20 64 6f 69 6e 67 20 6d 75 6c 74 69 70  rts doing multip
dcc0: 6c 65 20 77 72 69 74 65 20 6f 70 65 72 61 74 69  le write operati
dcd0: 6f 6e 73 20 61 74 6f 6d 69 63 61 6c 6c 79 20 77  ons atomically w
dce0: 68 65 6e 20 74 68 6f 73 65 0a 2a 2a 20 77 72 69  hen those.** wri
dcf0: 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 72  te operations ar
dd00: 65 20 62 72 61 63 6b 65 74 65 64 20 62 79 20 5b  e bracketed by [
dd10: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47  SQLITE_FCNTL_BEG
dd20: 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d  IN_ATOMIC_WRITE]
dd30: 20 61 6e 64 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   and.** [SQLITE_
dd40: 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
dd50: 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2f 0a 23  MIC_WRITE]..*/.#
dd60: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
dd70: 43 41 50 5f 41 54 4f 4d 49 43 20 20 20 20 20 20  CAP_ATOMIC      
dd80: 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30             0x000
dd90: 30 30 30 30 31 0a 23 64 65 66 69 6e 65 20 53 51  00001.#define SQ
dda0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
ddb0: 43 35 31 32 20 20 20 20 20 20 20 20 20 20 20 20  C512            
ddc0: 20 20 30 78 30 30 30 30 30 30 30 32 0a 23 64 65    0x00000002.#de
ddd0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41  fine SQLITE_IOCA
dde0: 50 5f 41 54 4f 4d 49 43 31 4b 20 20 20 20 20 20  P_ATOMIC1K      
ddf0: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30           0x00000
de00: 30 30 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  004.#define SQLI
de10: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32  TE_IOCAP_ATOMIC2
de20: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  K               
de30: 30 78 30 30 30 30 30 30 30 38 0a 23 64 65 66 69  0x00000008.#defi
de40: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  ne SQLITE_IOCAP_
de50: 41 54 4f 4d 49 43 34 4b 20 20 20 20 20 20 20 20  ATOMIC4K        
de60: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30 31         0x0000001
de70: 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
de80: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 38 4b 20  _IOCAP_ATOMIC8K 
de90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78                0x
dea0: 30 30 30 30 30 30 32 30 0a 23 64 65 66 69 6e 65  00000020.#define
deb0: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54   SQLITE_IOCAP_AT
dec0: 4f 4d 49 43 31 36 4b 20 20 20 20 20 20 20 20 20  OMIC16K         
ded0: 20 20 20 20 20 30 78 30 30 30 30 30 30 34 30 0a       0x00000040.
dee0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
def0: 4f 43 41 50 5f 41 54 4f 4d 49 43 33 32 4b 20 20  OCAP_ATOMIC32K  
df00: 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30              0x00
df10: 30 30 30 30 38 30 0a 23 64 65 66 69 6e 65 20 53  000080.#define S
df20: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
df30: 49 43 36 34 4b 20 20 20 20 20 20 20 20 20 20 20  IC64K           
df40: 20 20 20 30 78 30 30 30 30 30 31 30 30 0a 23 64     0x00000100.#d
df50: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43  efine SQLITE_IOC
df60: 41 50 5f 53 41 46 45 5f 41 50 50 45 4e 44 20 20  AP_SAFE_APPEND  
df70: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30            0x0000
df80: 30 32 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c  0200.#define SQL
df90: 49 54 45 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e  ITE_IOCAP_SEQUEN
dfa0: 54 49 41 4c 20 20 20 20 20 20 20 20 20 20 20 20  TIAL            
dfb0: 20 30 78 30 30 30 30 30 34 30 30 0a 23 64 65 66   0x00000400.#def
dfc0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  ine SQLITE_IOCAP
dfd0: 5f 55 4e 44 45 4c 45 54 41 42 4c 45 5f 57 48 45  _UNDELETABLE_WHE
dfe0: 4e 5f 4f 50 45 4e 20 20 30 78 30 30 30 30 30 38  N_OPEN  0x000008
dff0: 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  00.#define SQLIT
e000: 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53 41 46  E_IOCAP_POWERSAF
e010: 45 5f 4f 56 45 52 57 52 49 54 45 20 20 20 20 30  E_OVERWRITE    0
e020: 78 30 30 30 30 31 30 30 30 0a 23 64 65 66 69 6e  x00001000.#defin
e030: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49  e SQLITE_IOCAP_I
e040: 4d 4d 55 54 41 42 4c 45 20 20 20 20 20 20 20 20  MMUTABLE        
e050: 20 20 20 20 20 20 30 78 30 30 30 30 32 30 30 30        0x00002000
e060: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e070: 49 4f 43 41 50 5f 42 41 54 43 48 5f 41 54 4f 4d  IOCAP_BATCH_ATOM
e080: 49 43 20 20 20 20 20 20 20 20 20 20 20 30 78 30  IC           0x0
e090: 30 30 30 34 30 30 30 0a 0a 2f 2a 0a 2a 2a 20 43  0004000../*.** C
e0a0: 41 50 49 33 52 45 46 3a 20 46 69 6c 65 20 4c 6f  API3REF: File Lo
e0b0: 63 6b 69 6e 67 20 4c 65 76 65 6c 73 0a 2a 2a 0a  cking Levels.**.
e0c0: 2a 2a 20 53 51 4c 69 74 65 20 75 73 65 73 20 6f  ** SQLite uses o
e0d0: 6e 65 20 6f 66 20 74 68 65 73 65 20 69 6e 74 65  ne of these inte
e0e0: 67 65 72 20 76 61 6c 75 65 73 20 61 73 20 74 68  ger values as th
e0f0: 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 61 72 67 75  e second.** argu
e100: 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 73 20 69 74  ment to calls it
e110: 20 6d 61 6b 65 73 20 74 6f 20 74 68 65 20 78 4c   makes to the xL
e120: 6f 63 6b 28 29 20 61 6e 64 20 78 55 6e 6c 6f 63  ock() and xUnloc
e130: 6b 28 29 20 6d 65 74 68 6f 64 73 0a 2a 2a 20 6f  k() methods.** o
e140: 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 69 6f  f an [sqlite3_io
e150: 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74  _methods] object
e160: 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ..*/.#define SQL
e170: 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e 45 20 20 20  ITE_LOCK_NONE   
e180: 20 20 20 20 20 20 20 30 0a 23 64 65 66 69 6e 65         0.#define
e190: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41   SQLITE_LOCK_SHA
e1a0: 52 45 44 20 20 20 20 20 20 20 20 31 0a 23 64 65  RED        1.#de
e1b0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
e1c0: 5f 52 45 53 45 52 56 45 44 20 20 20 20 20 20 32  _RESERVED      2
e1d0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e1e0: 4c 4f 43 4b 5f 50 45 4e 44 49 4e 47 20 20 20 20  LOCK_PENDING    
e1f0: 20 20 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c     3.#define SQL
e200: 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53 49  ITE_LOCK_EXCLUSI
e210: 56 45 20 20 20 20 20 34 0a 0a 2f 2a 0a 2a 2a 20  VE     4../*.** 
e220: 43 41 50 49 33 52 45 46 3a 20 53 79 6e 63 68 72  CAPI3REF: Synchr
e230: 6f 6e 69 7a 61 74 69 6f 6e 20 54 79 70 65 20 46  onization Type F
e240: 6c 61 67 73 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20  lags.**.** When 
e250: 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65 73 20 74  SQLite invokes t
e260: 68 65 20 78 53 79 6e 63 28 29 20 6d 65 74 68 6f  he xSync() metho
e270: 64 20 6f 66 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69  d of an.** [sqli
e280: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
e290: 6f 62 6a 65 63 74 20 69 74 20 75 73 65 73 20 61  object it uses a
e2a0: 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 0a   combination of.
e2b0: 2a 2a 20 74 68 65 73 65 20 69 6e 74 65 67 65 72  ** these integer
e2c0: 20 76 61 6c 75 65 73 20 61 73 20 74 68 65 20 73   values as the s
e2d0: 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 2e 0a  econd argument..
e2e0: 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 53  **.** When the S
e2f0: 51 4c 49 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f  QLITE_SYNC_DATAO
e300: 4e 4c 59 20 66 6c 61 67 20 69 73 20 75 73 65 64  NLY flag is used
e310: 2c 20 69 74 20 6d 65 61 6e 73 20 74 68 61 74 20  , it means that 
e320: 74 68 65 0a 2a 2a 20 73 79 6e 63 20 6f 70 65 72  the.** sync oper
e330: 61 74 69 6f 6e 20 6f 6e 6c 79 20 6e 65 65 64 73  ation only needs
e340: 20 74 6f 20 66 6c 75 73 68 20 64 61 74 61 20 74   to flush data t
e350: 6f 20 6d 61 73 73 20 73 74 6f 72 61 67 65 2e 20  o mass storage. 
e360: 20 49 6e 6f 64 65 0a 2a 2a 20 69 6e 66 6f 72 6d   Inode.** inform
e370: 61 74 69 6f 6e 20 6e 65 65 64 20 6e 6f 74 20 62  ation need not b
e380: 65 20 66 6c 75 73 68 65 64 2e 20 49 66 20 74 68  e flushed. If th
e390: 65 20 6c 6f 77 65 72 20 66 6f 75 72 20 62 69 74  e lower four bit
e3a0: 73 20 6f 66 20 74 68 65 20 66 6c 61 67 0a 2a 2a  s of the flag.**
e3b0: 20 65 71 75 61 6c 20 53 51 4c 49 54 45 5f 53 59   equal SQLITE_SY
e3c0: 4e 43 5f 4e 4f 52 4d 41 4c 2c 20 74 68 61 74 20  NC_NORMAL, that 
e3d0: 6d 65 61 6e 73 20 74 6f 20 75 73 65 20 6e 6f 72  means to use nor
e3e0: 6d 61 6c 20 66 73 79 6e 63 28 29 20 73 65 6d 61  mal fsync() sema
e3f0: 6e 74 69 63 73 2e 0a 2a 2a 20 49 66 20 74 68 65  ntics..** If the
e400: 20 6c 6f 77 65 72 20 66 6f 75 72 20 62 69 74 73   lower four bits
e410: 20 65 71 75 61 6c 20 53 51 4c 49 54 45 5f 53 59   equal SQLITE_SY
e420: 4e 43 5f 46 55 4c 4c 2c 20 74 68 61 74 20 6d 65  NC_FULL, that me
e430: 61 6e 73 0a 2a 2a 20 74 6f 20 75 73 65 20 4d 61  ans.** to use Ma
e440: 63 20 4f 53 20 58 20 73 74 79 6c 65 20 66 75 6c  c OS X style ful
e450: 6c 73 79 6e 63 20 69 6e 73 74 65 61 64 20 6f 66  lsync instead of
e460: 20 66 73 79 6e 63 28 29 2e 0a 2a 2a 0a 2a 2a 20   fsync()..**.** 
e470: 44 6f 20 6e 6f 74 20 63 6f 6e 66 75 73 65 20 74  Do not confuse t
e480: 68 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e  he SQLITE_SYNC_N
e490: 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c 49 54 45  ORMAL and SQLITE
e4a0: 5f 53 59 4e 43 5f 46 55 4c 4c 20 66 6c 61 67 73  _SYNC_FULL flags
e4b0: 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 5b 50 52  .** with the [PR
e4c0: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
e4d0: 5d 3d 4e 4f 52 4d 41 4c 20 61 6e 64 20 5b 50 52  ]=NORMAL and [PR
e4e0: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
e4f0: 5d 3d 46 55 4c 4c 0a 2a 2a 20 73 65 74 74 69 6e  ]=FULL.** settin
e500: 67 73 2e 20 20 54 68 65 20 5b 73 79 6e 63 68 72  gs.  The [synchr
e510: 6f 6e 6f 75 73 20 70 72 61 67 6d 61 5d 20 64 65  onous pragma] de
e520: 74 65 72 6d 69 6e 65 73 20 77 68 65 6e 20 63 61  termines when ca
e530: 6c 6c 73 20 74 6f 20 74 68 65 0a 2a 2a 20 78 53  lls to the.** xS
e540: 79 6e 63 20 56 46 53 20 6d 65 74 68 6f 64 20 6f  ync VFS method o
e550: 63 63 75 72 20 61 6e 64 20 61 70 70 6c 69 65 73  ccur and applies
e560: 20 75 6e 69 66 6f 72 6d 6c 79 20 61 63 72 6f 73   uniformly acros
e570: 73 20 61 6c 6c 20 70 6c 61 74 66 6f 72 6d 73 2e  s all platforms.
e580: 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 53  .** The SQLITE_S
e590: 59 4e 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53  YNC_NORMAL and S
e5a0: 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20  QLITE_SYNC_FULL 
e5b0: 66 6c 61 67 73 20 64 65 74 65 72 6d 69 6e 65 20  flags determine 
e5c0: 68 6f 77 0a 2a 2a 20 65 6e 65 72 67 65 74 69 63  how.** energetic
e5d0: 20 6f 72 20 72 69 67 6f 72 6f 75 73 20 6f 72 20   or rigorous or 
e5e0: 66 6f 72 63 65 66 75 6c 20 74 68 65 20 73 79 6e  forceful the syn
e5f0: 63 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 72 65  c operations are
e600: 20 61 6e 64 0a 2a 2a 20 6f 6e 6c 79 20 6d 61 6b   and.** only mak
e610: 65 20 61 20 64 69 66 66 65 72 65 6e 63 65 20 6f  e a difference o
e620: 6e 20 4d 61 63 20 4f 53 58 20 66 6f 72 20 74 68  n Mac OSX for th
e630: 65 20 64 65 66 61 75 6c 74 20 53 51 4c 69 74 65  e default SQLite
e640: 20 63 6f 64 65 2e 0a 2a 2a 20 28 54 68 69 72 64   code..** (Third
e650: 2d 70 61 72 74 79 20 56 46 53 20 69 6d 70 6c 65  -party VFS imple
e660: 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 69 67 68 74  mentations might
e670: 20 61 6c 73 6f 20 6d 61 6b 65 20 74 68 65 20 64   also make the d
e680: 69 73 74 69 6e 63 74 69 6f 6e 0a 2a 2a 20 62 65  istinction.** be
e690: 74 77 65 65 6e 20 53 51 4c 49 54 45 5f 53 59 4e  tween SQLITE_SYN
e6a0: 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c  C_NORMAL and SQL
e6b0: 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 2c 20 62  ITE_SYNC_FULL, b
e6c0: 75 74 20 61 6d 6f 6e 67 20 74 68 65 0a 2a 2a 20  ut among the.** 
e6d0: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
e6e0: 73 20 6e 61 74 69 76 65 6c 79 20 73 75 70 70 6f  s natively suppo
e6f0: 72 74 65 64 20 62 79 20 53 51 4c 69 74 65 2c 20  rted by SQLite, 
e700: 6f 6e 6c 79 20 4d 61 63 20 4f 53 58 0a 2a 2a 20  only Mac OSX.** 
e710: 63 61 72 65 73 20 61 62 6f 75 74 20 74 68 65 20  cares about the 
e720: 64 69 66 66 65 72 65 6e 63 65 2e 29 0a 2a 2f 0a  difference.).*/.
e730: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
e740: 59 4e 43 5f 4e 4f 52 4d 41 4c 20 20 20 20 20 20  YNC_NORMAL      
e750: 20 20 30 78 30 30 30 30 32 0a 23 64 65 66 69 6e    0x00002.#defin
e760: 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55  e SQLITE_SYNC_FU
e770: 4c 4c 20 20 20 20 20 20 20 20 20 20 30 78 30 30  LL          0x00
e780: 30 30 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  003.#define SQLI
e790: 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59  TE_SYNC_DATAONLY
e7a0: 20 20 20 20 20 20 30 78 30 30 30 31 30 0a 0a 2f        0x00010../
e7b0: 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4f  *.** CAPI3REF: O
e7c0: 53 20 49 6e 74 65 72 66 61 63 65 20 4f 70 65 6e  S Interface Open
e7d0: 20 46 69 6c 65 20 48 61 6e 64 6c 65 0a 2a 2a 0a   File Handle.**.
e7e0: 2a 2a 20 41 6e 20 5b 73 71 6c 69 74 65 33 5f 66  ** An [sqlite3_f
e7f0: 69 6c 65 5d 20 6f 62 6a 65 63 74 20 72 65 70 72  ile] object repr
e800: 65 73 65 6e 74 73 20 61 6e 20 6f 70 65 6e 20 66  esents an open f
e810: 69 6c 65 20 69 6e 20 74 68 65 20 0a 2a 2a 20 5b  ile in the .** [
e820: 73 71 6c 69 74 65 33 5f 76 66 73 20 7c 20 4f 53  sqlite3_vfs | OS
e830: 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72   interface layer
e840: 5d 2e 20 20 49 6e 64 69 76 69 64 75 61 6c 20 4f  ].  Individual O
e850: 53 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69  S interface.** i
e860: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 77  mplementations w
e870: 69 6c 6c 0a 2a 2a 20 77 61 6e 74 20 74 6f 20 73  ill.** want to s
e880: 75 62 63 6c 61 73 73 20 74 68 69 73 20 6f 62 6a  ubclass this obj
e890: 65 63 74 20 62 79 20 61 70 70 65 6e 64 69 6e 67  ect by appending
e8a0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c   additional fiel
e8b0: 64 73 0a 2a 2a 20 66 6f 72 20 74 68 65 69 72 20  ds.** for their 
e8c0: 6f 77 6e 20 75 73 65 2e 20 20 54 68 65 20 70 4d  own use.  The pM
e8d0: 65 74 68 6f 64 73 20 65 6e 74 72 79 20 69 73 20  ethods entry is 
e8e0: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 0a  a pointer to an.
e8f0: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  ** [sqlite3_io_m
e900: 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 74  ethods] object t
e910: 68 61 74 20 64 65 66 69 6e 65 73 20 6d 65 74 68  hat defines meth
e920: 6f 64 73 20 66 6f 72 20 70 65 72 66 6f 72 6d 69  ods for performi
e930: 6e 67 0a 2a 2a 20 49 2f 4f 20 6f 70 65 72 61 74  ng.** I/O operat
e940: 69 6f 6e 73 20 6f 6e 20 74 68 65 20 6f 70 65 6e  ions on the open
e950: 20 66 69 6c 65 2e 0a 2a 2f 0a 74 79 70 65 64 65   file..*/.typede
e960: 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  f struct sqlite3
e970: 5f 66 69 6c 65 20 73 71 6c 69 74 65 33 5f 66 69  _file sqlite3_fi
e980: 6c 65 3b 0a 73 74 72 75 63 74 20 73 71 6c 69 74  le;.struct sqlit
e990: 65 33 5f 66 69 6c 65 20 7b 0a 20 20 63 6f 6e 73  e3_file {.  cons
e9a0: 74 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  t struct sqlite3
e9b0: 5f 69 6f 5f 6d 65 74 68 6f 64 73 20 2a 70 4d 65  _io_methods *pMe
e9c0: 74 68 6f 64 73 3b 20 20 2f 2a 20 4d 65 74 68 6f  thods;  /* Metho
e9d0: 64 73 20 66 6f 72 20 61 6e 20 6f 70 65 6e 20 66  ds for an open f
e9e0: 69 6c 65 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a  ile */.};../*.**
e9f0: 20 43 41 50 49 33 52 45 46 3a 20 4f 53 20 49 6e   CAPI3REF: OS In
ea00: 74 65 72 66 61 63 65 20 46 69 6c 65 20 56 69 72  terface File Vir
ea10: 74 75 61 6c 20 4d 65 74 68 6f 64 73 20 4f 62 6a  tual Methods Obj
ea20: 65 63 74 0a 2a 2a 0a 2a 2a 20 45 76 65 72 79 20  ect.**.** Every 
ea30: 66 69 6c 65 20 6f 70 65 6e 65 64 20 62 79 20 74  file opened by t
ea40: 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e  he [sqlite3_vfs.
ea50: 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 20 70 6f  xOpen] method po
ea60: 70 75 6c 61 74 65 73 20 61 6e 0a 2a 2a 20 5b 73  pulates an.** [s
ea70: 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a  qlite3_file] obj
ea80: 65 63 74 20 28 6f 72 2c 20 6d 6f 72 65 20 63 6f  ect (or, more co
ea90: 6d 6d 6f 6e 6c 79 2c 20 61 20 73 75 62 63 6c 61  mmonly, a subcla
eaa0: 73 73 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 73 71  ss of the.** [sq
eab0: 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65  lite3_file] obje
eac0: 63 74 29 20 77 69 74 68 20 61 20 70 6f 69 6e 74  ct) with a point
ead0: 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63  er to an instanc
eae0: 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  e of this object
eaf0: 2e 0a 2a 2a 20 54 68 69 73 20 6f 62 6a 65 63 74  ..** This object
eb00: 20 64 65 66 69 6e 65 73 20 74 68 65 20 6d 65 74   defines the met
eb10: 68 6f 64 73 20 75 73 65 64 20 74 6f 20 70 65 72  hods used to per
eb20: 66 6f 72 6d 20 76 61 72 69 6f 75 73 20 6f 70 65  form various ope
eb30: 72 61 74 69 6f 6e 73 0a 2a 2a 20 61 67 61 69 6e  rations.** again
eb40: 73 74 20 74 68 65 20 6f 70 65 6e 20 66 69 6c 65  st the open file
eb50: 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20   represented by 
eb60: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  the [sqlite3_fil
eb70: 65 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a  e] object..**.**
eb80: 20 49 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   If the [sqlite3
eb90: 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 6d 65 74 68  _vfs.xOpen] meth
eba0: 6f 64 20 73 65 74 73 20 74 68 65 20 73 71 6c 69  od sets the sqli
ebb0: 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64  te3_file.pMethod
ebc0: 73 20 65 6c 65 6d 65 6e 74 20 0a 2a 2a 20 74 6f  s element .** to
ebd0: 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 70 6f 69 6e   a non-NULL poin
ebe0: 74 65 72 2c 20 74 68 65 6e 20 74 68 65 20 73 71  ter, then the sq
ebf0: 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73  lite3_io_methods
ec00: 2e 78 43 6c 6f 73 65 20 6d 65 74 68 6f 64 0a 2a  .xClose method.*
ec10: 2a 20 6d 61 79 20 62 65 20 69 6e 76 6f 6b 65 64  * may be invoked
ec20: 20 65 76 65 6e 20 69 66 20 74 68 65 20 5b 73 71   even if the [sq
ec30: 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d  lite3_vfs.xOpen]
ec40: 20 72 65 70 6f 72 74 65 64 20 74 68 61 74 20 69   reported that i
ec50: 74 20 66 61 69 6c 65 64 2e 20 20 54 68 65 0a 2a  t failed.  The.*
ec60: 2a 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 70 72  * only way to pr
ec70: 65 76 65 6e 74 20 61 20 63 61 6c 6c 20 74 6f 20  event a call to 
ec80: 78 43 6c 6f 73 65 20 66 6f 6c 6c 6f 77 69 6e 67  xClose following
ec90: 20 61 20 66 61 69 6c 65 64 20 5b 73 71 6c 69 74   a failed [sqlit
eca0: 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 0a 2a 2a  e3_vfs.xOpen].**
ecb0: 20 69 73 20 66 6f 72 20 74 68 65 20 5b 73 71 6c   is for the [sql
ecc0: 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20  ite3_vfs.xOpen] 
ecd0: 74 6f 20 73 65 74 20 74 68 65 20 73 71 6c 69 74  to set the sqlit
ece0: 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73  e3_file.pMethods
ecf0: 20 65 6c 65 6d 65 6e 74 0a 2a 2a 20 74 6f 20 4e   element.** to N
ed00: 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66  ULL..**.** The f
ed10: 6c 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f  lags argument to
ed20: 20 78 53 79 6e 63 20 6d 61 79 20 62 65 20 6f 6e   xSync may be on
ed30: 65 20 6f 66 20 5b 53 51 4c 49 54 45 5f 53 59 4e  e of [SQLITE_SYN
ed40: 43 5f 4e 4f 52 4d 41 4c 5d 20 6f 72 0a 2a 2a 20  C_NORMAL] or.** 
ed50: 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c  [SQLITE_SYNC_FUL
ed60: 4c 5d 2e 20 20 54 68 65 20 66 69 72 73 74 20 63  L].  The first c
ed70: 68 6f 69 63 65 20 69 73 20 74 68 65 20 6e 6f 72  hoice is the nor
ed80: 6d 61 6c 20 66 73 79 6e 63 28 29 2e 0a 2a 2a 20  mal fsync()..** 
ed90: 54 68 65 20 73 65 63 6f 6e 64 20 63 68 6f 69 63  The second choic
eda0: 65 20 69 73 20 61 20 4d 61 63 20 4f 53 20 58 20  e is a Mac OS X 
edb0: 73 74 79 6c 65 20 66 75 6c 6c 73 79 6e 63 2e 20  style fullsync. 
edc0: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 53 59 4e   The [SQLITE_SYN
edd0: 43 5f 44 41 54 41 4f 4e 4c 59 5d 0a 2a 2a 20 66  C_DATAONLY].** f
ede0: 6c 61 67 20 6d 61 79 20 62 65 20 4f 52 65 64 20  lag may be ORed 
edf0: 69 6e 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74  in to indicate t
ee00: 68 61 74 20 6f 6e 6c 79 20 74 68 65 20 64 61 74  hat only the dat
ee10: 61 20 6f 66 20 74 68 65 20 66 69 6c 65 0a 2a 2a  a of the file.**
ee20: 20 61 6e 64 20 6e 6f 74 20 69 74 73 20 69 6e 6f   and not its ino
ee30: 64 65 20 6e 65 65 64 73 20 74 6f 20 62 65 20 73  de needs to be s
ee40: 79 6e 63 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  ynced..**.** The
ee50: 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 20   integer values 
ee60: 74 6f 20 78 4c 6f 63 6b 28 29 20 61 6e 64 20 78  to xLock() and x
ee70: 55 6e 6c 6f 63 6b 28 29 20 61 72 65 20 6f 6e 65  Unlock() are one
ee80: 20 6f 66 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c   of.** <ul>.** <
ee90: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b  li> [SQLITE_LOCK
eea0: 5f 4e 4f 4e 45 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20  _NONE],.** <li> 
eeb0: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41  [SQLITE_LOCK_SHA
eec0: 52 45 44 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  RED],.** <li> [S
eed0: 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52  QLITE_LOCK_RESER
eee0: 56 45 44 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  VED],.** <li> [S
eef0: 51 4c 49 54 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49  QLITE_LOCK_PENDI
ef00: 4e 47 5d 2c 20 6f 72 0a 2a 2a 20 3c 6c 69 3e 20  NG], or.** <li> 
ef10: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43  [SQLITE_LOCK_EXC
ef20: 4c 55 53 49 56 45 5d 2e 0a 2a 2a 20 3c 2f 75 6c  LUSIVE]..** </ul
ef30: 3e 0a 2a 2a 20 78 4c 6f 63 6b 28 29 20 69 6e 63  >.** xLock() inc
ef40: 72 65 61 73 65 73 20 74 68 65 20 6c 6f 63 6b 2e  reases the lock.
ef50: 20 78 55 6e 6c 6f 63 6b 28 29 20 64 65 63 72 65   xUnlock() decre
ef60: 61 73 65 73 20 74 68 65 20 6c 6f 63 6b 2e 0a 2a  ases the lock..*
ef70: 2a 20 54 68 65 20 78 43 68 65 63 6b 52 65 73 65  * The xCheckRese
ef80: 72 76 65 64 4c 6f 63 6b 28 29 20 6d 65 74 68 6f  rvedLock() metho
ef90: 64 20 63 68 65 63 6b 73 20 77 68 65 74 68 65 72  d checks whether
efa0: 20 61 6e 79 20 64 61 74 61 62 61 73 65 20 63 6f   any database co
efb0: 6e 6e 65 63 74 69 6f 6e 2c 0a 2a 2a 20 65 69 74  nnection,.** eit
efc0: 68 65 72 20 69 6e 20 74 68 69 73 20 70 72 6f 63  her in this proc
efd0: 65 73 73 20 6f 72 20 69 6e 20 73 6f 6d 65 20 6f  ess or in some o
efe0: 74 68 65 72 20 70 72 6f 63 65 73 73 2c 20 69 73  ther process, is
eff0: 20 68 6f 6c 64 69 6e 67 20 61 20 52 45 53 45 52   holding a RESER
f000: 56 45 44 2c 0a 2a 2a 20 50 45 4e 44 49 4e 47 2c  VED,.** PENDING,
f010: 20 6f 72 20 45 58 43 4c 55 53 49 56 45 20 6c 6f   or EXCLUSIVE lo
f020: 63 6b 20 6f 6e 20 74 68 65 20 66 69 6c 65 2e 20  ck on the file. 
f030: 20 49 74 20 72 65 74 75 72 6e 73 20 74 72 75 65   It returns true
f040: 0a 2a 2a 20 69 66 20 73 75 63 68 20 61 20 6c 6f  .** if such a lo
f050: 63 6b 20 65 78 69 73 74 73 20 61 6e 64 20 66 61  ck exists and fa
f060: 6c 73 65 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a  lse otherwise..*
f070: 2a 0a 2a 2a 20 54 68 65 20 78 46 69 6c 65 43 6f  *.** The xFileCo
f080: 6e 74 72 6f 6c 28 29 20 6d 65 74 68 6f 64 20 69  ntrol() method i
f090: 73 20 61 20 67 65 6e 65 72 69 63 20 69 6e 74 65  s a generic inte
f0a0: 72 66 61 63 65 20 74 68 61 74 20 61 6c 6c 6f 77  rface that allow
f0b0: 73 20 63 75 73 74 6f 6d 0a 2a 2a 20 56 46 53 20  s custom.** VFS 
f0c0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
f0d0: 74 6f 20 64 69 72 65 63 74 6c 79 20 63 6f 6e 74  to directly cont
f0e0: 72 6f 6c 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65  rol an open file
f0f0: 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 73   using the.** [s
f100: 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
f110: 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65  rol()] interface
f120: 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 22 6f  .  The second "o
f130: 70 22 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  p" argument is a
f140: 6e 0a 2a 2a 20 69 6e 74 65 67 65 72 20 6f 70 63  n.** integer opc
f150: 6f 64 65 2e 20 20 54 68 65 20 74 68 69 72 64 20  ode.  The third 
f160: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 67 65  argument is a ge
f170: 6e 65 72 69 63 20 70 6f 69 6e 74 65 72 20 69 6e  neric pointer in
f180: 74 65 6e 64 65 64 20 74 6f 0a 2a 2a 20 70 6f 69  tended to.** poi
f190: 6e 74 20 74 6f 20 61 20 73 74 72 75 63 74 75 72  nt to a structur
f1a0: 65 20 74 68 61 74 20 6d 61 79 20 63 6f 6e 74 61  e that may conta
f1b0: 69 6e 20 61 72 67 75 6d 65 6e 74 73 20 6f 72 20  in arguments or 
f1c0: 73 70 61 63 65 20 69 6e 20 77 68 69 63 68 20 74  space in which t
f1d0: 6f 0a 2a 2a 20 77 72 69 74 65 20 72 65 74 75 72  o.** write retur
f1e0: 6e 20 76 61 6c 75 65 73 2e 20 20 50 6f 74 65 6e  n values.  Poten
f1f0: 74 69 61 6c 20 75 73 65 73 20 66 6f 72 20 78 46  tial uses for xF
f200: 69 6c 65 43 6f 6e 74 72 6f 6c 28 29 20 6d 69 67  ileControl() mig
f210: 68 74 20 62 65 0a 2a 2a 20 66 75 6e 63 74 69 6f  ht be.** functio
f220: 6e 73 20 74 6f 20 65 6e 61 62 6c 65 20 62 6c 6f  ns to enable blo
f230: 63 6b 69 6e 67 20 6c 6f 63 6b 73 20 77 69 74 68  cking locks with
f240: 20 74 69 6d 65 6f 75 74 73 2c 20 74 6f 20 63 68   timeouts, to ch
f250: 61 6e 67 65 20 74 68 65 0a 2a 2a 20 6c 6f 63 6b  ange the.** lock
f260: 69 6e 67 20 73 74 72 61 74 65 67 79 20 28 66 6f  ing strategy (fo
f270: 72 20 65 78 61 6d 70 6c 65 20 74 6f 20 75 73 65  r example to use
f280: 20 64 6f 74 2d 66 69 6c 65 20 6c 6f 63 6b 73 29   dot-file locks)
f290: 2c 20 74 6f 20 69 6e 71 75 69 72 65 0a 2a 2a 20  , to inquire.** 
f2a0: 61 62 6f 75 74 20 74 68 65 20 73 74 61 74 75 73  about the status
f2b0: 20 6f 66 20 61 20 6c 6f 63 6b 2c 20 6f 72 20 74   of a lock, or t
f2c0: 6f 20 62 72 65 61 6b 20 73 74 61 6c 65 20 6c 6f  o break stale lo
f2d0: 63 6b 73 2e 20 20 54 68 65 20 53 51 4c 69 74 65  cks.  The SQLite
f2e0: 0a 2a 2a 20 63 6f 72 65 20 72 65 73 65 72 76 65  .** core reserve
f2f0: 73 20 61 6c 6c 20 6f 70 63 6f 64 65 73 20 6c 65  s all opcodes le
f300: 73 73 20 74 68 61 6e 20 31 30 30 20 66 6f 72 20  ss than 100 for 
f310: 69 74 73 20 6f 77 6e 20 75 73 65 2e 0a 2a 2a 20  its own use..** 
f320: 41 20 5b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  A [file control 
f330: 6f 70 63 6f 64 65 73 20 7c 20 6c 69 73 74 20 6f  opcodes | list o
f340: 66 20 6f 70 63 6f 64 65 73 5d 20 6c 65 73 73 20  f opcodes] less 
f350: 74 68 61 6e 20 31 30 30 20 69 73 20 61 76 61 69  than 100 is avai
f360: 6c 61 62 6c 65 2e 0a 2a 2a 20 41 70 70 6c 69 63  lable..** Applic
f370: 61 74 69 6f 6e 73 20 74 68 61 74 20 64 65 66 69  ations that defi
f380: 6e 65 20 61 20 63 75 73 74 6f 6d 20 78 46 69 6c  ne a custom xFil
f390: 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20  eControl method 
f3a0: 73 68 6f 75 6c 64 20 75 73 65 20 6f 70 63 6f 64  should use opcod
f3b0: 65 73 0a 2a 2a 20 67 72 65 61 74 65 72 20 74 68  es.** greater th
f3c0: 61 6e 20 31 30 30 20 74 6f 20 61 76 6f 69 64 20  an 100 to avoid 
f3d0: 63 6f 6e 66 6c 69 63 74 73 2e 20 20 56 46 53 20  conflicts.  VFS 
f3e0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
f3f0: 73 68 6f 75 6c 64 0a 2a 2a 20 72 65 74 75 72 6e  should.** return
f400: 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e   [SQLITE_NOTFOUN
f410: 44 5d 20 66 6f 72 20 66 69 6c 65 20 63 6f 6e 74  D] for file cont
f420: 72 6f 6c 20 6f 70 63 6f 64 65 73 20 74 68 61 74  rol opcodes that
f430: 20 74 68 65 79 20 64 6f 20 6e 6f 74 0a 2a 2a 20   they do not.** 
f440: 72 65 63 6f 67 6e 69 7a 65 2e 0a 2a 2a 0a 2a 2a  recognize..**.**
f450: 20 54 68 65 20 78 53 65 63 74 6f 72 53 69 7a 65   The xSectorSize
f460: 28 29 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  () method return
f470: 73 20 74 68 65 20 73 65 63 74 6f 72 20 73 69 7a  s the sector siz
f480: 65 20 6f 66 20 74 68 65 0a 2a 2a 20 64 65 76 69  e of the.** devi
f490: 63 65 20 74 68 61 74 20 75 6e 64 65 72 6c 69 65  ce that underlie
f4a0: 73 20 74 68 65 20 66 69 6c 65 2e 20 20 54 68 65  s the file.  The
f4b0: 20 73 65 63 74 6f 72 20 73 69 7a 65 20 69 73 20   sector size is 
f4c0: 74 68 65 0a 2a 2a 20 6d 69 6e 69 6d 75 6d 20 77  the.** minimum w
f4d0: 72 69 74 65 20 74 68 61 74 20 63 61 6e 20 62 65  rite that can be
f4e0: 20 70 65 72 66 6f 72 6d 65 64 20 77 69 74 68 6f   performed witho
f4f0: 75 74 20 64 69 73 74 75 72 62 69 6e 67 0a 2a 2a  ut disturbing.**
f500: 20 6f 74 68 65 72 20 62 79 74 65 73 20 69 6e 20   other bytes in 
f510: 74 68 65 20 66 69 6c 65 2e 20 20 54 68 65 20 78  the file.  The x
f520: 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72 69  DeviceCharacteri
f530: 73 74 69 63 73 28 29 0a 2a 2a 20 6d 65 74 68 6f  stics().** metho
f540: 64 20 72 65 74 75 72 6e 73 20 61 20 62 69 74 20  d returns a bit 
f550: 76 65 63 74 6f 72 20 64 65 73 63 72 69 62 69 6e  vector describin
f560: 67 20 62 65 68 61 76 69 6f 72 73 20 6f 66 20 74  g behaviors of t
f570: 68 65 0a 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67  he.** underlying
f580: 20 64 65 76 69 63 65 3a 0a 2a 2a 0a 2a 2a 20 3c   device:.**.** <
f590: 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  ul>.** <li> [SQL
f5a0: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
f5b0: 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54  ].** <li> [SQLIT
f5c0: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 35 31  E_IOCAP_ATOMIC51
f5d0: 32 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  2].** <li> [SQLI
f5e0: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31  TE_IOCAP_ATOMIC1
f5f0: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
f600: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32  TE_IOCAP_ATOMIC2
f610: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
f620: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 34  TE_IOCAP_ATOMIC4
f630: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
f640: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 38  TE_IOCAP_ATOMIC8
f650: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
f660: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31  TE_IOCAP_ATOMIC1
f670: 36 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  6K].** <li> [SQL
f680: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
f690: 33 32 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  32K].** <li> [SQ
f6a0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
f6b0: 43 36 34 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  C64K].** <li> [S
f6c0: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46 45  QLITE_IOCAP_SAFE
f6d0: 5f 41 50 50 45 4e 44 5d 0a 2a 2a 20 3c 6c 69 3e  _APPEND].** <li>
f6e0: 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53   [SQLITE_IOCAP_S
f6f0: 45 51 55 45 4e 54 49 41 4c 5d 0a 2a 2a 20 3c 6c  EQUENTIAL].** <l
f700: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
f710: 5f 55 4e 44 45 4c 45 54 41 42 4c 45 5f 57 48 45  _UNDELETABLE_WHE
f720: 4e 5f 4f 50 45 4e 5d 0a 2a 2a 20 3c 6c 69 3e 20  N_OPEN].** <li> 
f730: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f  [SQLITE_IOCAP_PO
f740: 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54  WERSAFE_OVERWRIT
f750: 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  E].** <li> [SQLI
f760: 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42  TE_IOCAP_IMMUTAB
f770: 4c 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  LE].** <li> [SQL
f780: 49 54 45 5f 49 4f 43 41 50 5f 42 41 54 43 48 5f  ITE_IOCAP_BATCH_
f790: 41 54 4f 4d 49 43 5d 0a 2a 2a 20 3c 2f 75 6c 3e  ATOMIC].** </ul>
f7a0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54  .**.** The SQLIT
f7b0: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 20 70  E_IOCAP_ATOMIC p
f7c0: 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68  roperty means th
f7d0: 61 74 20 61 6c 6c 20 77 72 69 74 65 73 20 6f 66  at all writes of
f7e0: 0a 2a 2a 20 61 6e 79 20 73 69 7a 65 20 61 72 65  .** any size are
f7f0: 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53 51   atomic.  The SQ
f800: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
f810: 43 6e 6e 6e 20 76 61 6c 75 65 73 0a 2a 2a 20 6d  Cnnn values.** m
f820: 65 61 6e 20 74 68 61 74 20 77 72 69 74 65 73 20  ean that writes 
f830: 6f 66 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 61  of blocks that a
f840: 72 65 20 6e 6e 6e 20 62 79 74 65 73 20 69 6e 20  re nnn bytes in 
f850: 73 69 7a 65 20 61 6e 64 0a 2a 2a 20 61 72 65 20  size and.** are 
f860: 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 61 64  aligned to an ad
f870: 64 72 65 73 73 20 77 68 69 63 68 20 69 73 20 61  dress which is a
f880: 6e 20 69 6e 74 65 67 65 72 20 6d 75 6c 74 69 70  n integer multip
f890: 6c 65 20 6f 66 0a 2a 2a 20 6e 6e 6e 20 61 72 65  le of.** nnn are
f8a0: 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53 51   atomic.  The SQ
f8b0: 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f  LITE_IOCAP_SAFE_
f8c0: 41 50 50 45 4e 44 20 76 61 6c 75 65 20 6d 65 61  APPEND value mea
f8d0: 6e 73 0a 2a 2a 20 74 68 61 74 20 77 68 65 6e 20  ns.** that when 
f8e0: 64 61 74 61 20 69 73 20 61 70 70 65 6e 64 65 64  data is appended
f8f0: 20 74 6f 20 61 20 66 69 6c 65 2c 20 74 68 65 20   to a file, the 
f900: 64 61 74 61 20 69 73 20 61 70 70 65 6e 64 65 64  data is appended
f910: 0a 2a 2a 20 66 69 72 73 74 20 74 68 65 6e 20 74  .** first then t
f920: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 66  he size of the f
f930: 69 6c 65 20 69 73 20 65 78 74 65 6e 64 65 64 2c  ile is extended,
f940: 20 6e 65 76 65 72 20 74 68 65 20 6f 74 68 65 72   never the other
f950: 0a 2a 2a 20 77 61 79 20 61 72 6f 75 6e 64 2e 20  .** way around. 
f960: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41   The SQLITE_IOCA
f970: 50 5f 53 45 51 55 45 4e 54 49 41 4c 20 70 72 6f  P_SEQUENTIAL pro
f980: 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61 74  perty means that
f990: 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  .** information 
f9a0: 69 73 20 77 72 69 74 74 65 6e 20 74 6f 20 64 69  is written to di
f9b0: 73 6b 20 69 6e 20 74 68 65 20 73 61 6d 65 20 6f  sk in the same o
f9c0: 72 64 65 72 20 61 73 20 63 61 6c 6c 73 0a 2a 2a  rder as calls.**
f9d0: 20 74 6f 20 78 57 72 69 74 65 28 29 2e 0a 2a 2a   to xWrite()..**
f9e0: 0a 2a 2a 20 49 66 20 78 52 65 61 64 28 29 20 72  .** If xRead() r
f9f0: 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 49 4f  eturns SQLITE_IO
fa00: 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20 69  ERR_SHORT_READ i
fa10: 74 20 6d 75 73 74 20 61 6c 73 6f 20 66 69 6c 6c  t must also fill
fa20: 0a 2a 2a 20 69 6e 20 74 68 65 20 75 6e 72 65 61  .** in the unrea
fa30: 64 20 70 6f 72 74 69 6f 6e 73 20 6f 66 20 74 68  d portions of th
fa40: 65 20 62 75 66 66 65 72 20 77 69 74 68 20 7a 65  e buffer with ze
fa50: 72 6f 73 2e 20 20 41 20 56 46 53 20 74 68 61 74  ros.  A VFS that
fa60: 0a 2a 2a 20 66 61 69 6c 73 20 74 6f 20 7a 65 72  .** fails to zer
fa70: 6f 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72 65 61  o-fill short rea
fa80: 64 73 20 6d 69 67 68 74 20 73 65 65 6d 20 74 6f  ds might seem to
fa90: 20 77 6f 72 6b 2e 20 20 48 6f 77 65 76 65 72 2c   work.  However,
faa0: 0a 2a 2a 20 66 61 69 6c 75 72 65 20 74 6f 20 7a  .** failure to z
fab0: 65 72 6f 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72  ero-fill short r
fac0: 65 61 64 73 20 77 69 6c 6c 20 65 76 65 6e 74 75  eads will eventu
fad0: 61 6c 6c 79 20 6c 65 61 64 20 74 6f 0a 2a 2a 20  ally lead to.** 
fae0: 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74  database corrupt
faf0: 69 6f 6e 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  ion..*/.typedef 
fb00: 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
fb10: 6f 5f 6d 65 74 68 6f 64 73 20 73 71 6c 69 74 65  o_methods sqlite
fb20: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 3b 0a 73 74  3_io_methods;.st
fb30: 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f  ruct sqlite3_io_
fb40: 6d 65 74 68 6f 64 73 20 7b 0a 20 20 69 6e 74 20  methods {.  int 
fb50: 69 56 65 72 73 69 6f 6e 3b 0a 20 20 69 6e 74 20  iVersion;.  int 
fb60: 28 2a 78 43 6c 6f 73 65 29 28 73 71 6c 69 74 65  (*xClose)(sqlite
fb70: 33 5f 66 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20  3_file*);.  int 
fb80: 28 2a 78 52 65 61 64 29 28 73 71 6c 69 74 65 33  (*xRead)(sqlite3
fb90: 5f 66 69 6c 65 2a 2c 20 76 6f 69 64 2a 2c 20 69  _file*, void*, i
fba0: 6e 74 20 69 41 6d 74 2c 20 73 71 6c 69 74 65 33  nt iAmt, sqlite3
fbb0: 5f 69 6e 74 36 34 20 69 4f 66 73 74 29 3b 0a 20  _int64 iOfst);. 
fbc0: 20 69 6e 74 20 28 2a 78 57 72 69 74 65 29 28 73   int (*xWrite)(s
fbd0: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 63 6f  qlite3_file*, co
fbe0: 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 20 69  nst void*, int i
fbf0: 41 6d 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  Amt, sqlite3_int
fc00: 36 34 20 69 4f 66 73 74 29 3b 0a 20 20 69 6e 74  64 iOfst);.  int
fc10: 20 28 2a 78 54 72 75 6e 63 61 74 65 29 28 73 71   (*xTruncate)(sq
fc20: 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c  lite3_file*, sql
fc30: 69 74 65 33 5f 69 6e 74 36 34 20 73 69 7a 65 29  ite3_int64 size)
fc40: 3b 0a 20 20 69 6e 74 20 28 2a 78 53 79 6e 63 29  ;.  int (*xSync)
fc50: 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20  (sqlite3_file*, 
fc60: 69 6e 74 20 66 6c 61 67 73 29 3b 0a 20 20 69 6e  int flags);.  in
fc70: 74 20 28 2a 78 46 69 6c 65 53 69 7a 65 29 28 73  t (*xFileSize)(s
fc80: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71  qlite3_file*, sq
fc90: 6c 69 74 65 33 5f 69 6e 74 36 34 20 2a 70 53 69  lite3_int64 *pSi
fca0: 7a 65 29 3b 0a 20 20 69 6e 74 20 28 2a 78 4c 6f  ze);.  int (*xLo
fcb0: 63 6b 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65  ck)(sqlite3_file
fcc0: 2a 2c 20 69 6e 74 29 3b 0a 20 20 69 6e 74 20 28  *, int);.  int (
fcd0: 2a 78 55 6e 6c 6f 63 6b 29 28 73 71 6c 69 74 65  *xUnlock)(sqlite
fce0: 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 29 3b 0a 20  3_file*, int);. 
fcf0: 20 69 6e 74 20 28 2a 78 43 68 65 63 6b 52 65 73   int (*xCheckRes
fd00: 65 72 76 65 64 4c 6f 63 6b 29 28 73 71 6c 69 74  ervedLock)(sqlit
fd10: 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 2a 70  e3_file*, int *p
fd20: 52 65 73 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28  ResOut);.  int (
fd30: 2a 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 29 28 73  *xFileControl)(s
fd40: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e  qlite3_file*, in
fd50: 74 20 6f 70 2c 20 76 6f 69 64 20 2a 70 41 72 67  t op, void *pArg
fd60: 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 65 63 74  );.  int (*xSect
fd70: 6f 72 53 69 7a 65 29 28 73 71 6c 69 74 65 33 5f  orSize)(sqlite3_
fd80: 66 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a  file*);.  int (*
fd90: 78 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72  xDeviceCharacter
fda0: 69 73 74 69 63 73 29 28 73 71 6c 69 74 65 33 5f  istics)(sqlite3_
fdb0: 66 69 6c 65 2a 29 3b 0a 20 20 2f 2a 20 4d 65 74  file*);.  /* Met
fdc0: 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 76  hods above are v
fdd0: 61 6c 69 64 20 66 6f 72 20 76 65 72 73 69 6f 6e  alid for version
fde0: 20 31 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53   1 */.  int (*xS
fdf0: 68 6d 4d 61 70 29 28 73 71 6c 69 74 65 33 5f 66  hmMap)(sqlite3_f
fe00: 69 6c 65 2a 2c 20 69 6e 74 20 69 50 67 2c 20 69  ile*, int iPg, i
fe10: 6e 74 20 70 67 73 7a 2c 20 69 6e 74 2c 20 76 6f  nt pgsz, int, vo
fe20: 69 64 20 76 6f 6c 61 74 69 6c 65 2a 2a 29 3b 0a  id volatile**);.
fe30: 20 20 69 6e 74 20 28 2a 78 53 68 6d 4c 6f 63 6b    int (*xShmLock
fe40: 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c  )(sqlite3_file*,
fe50: 20 69 6e 74 20 6f 66 66 73 65 74 2c 20 69 6e 74   int offset, int
fe60: 20 6e 2c 20 69 6e 74 20 66 6c 61 67 73 29 3b 0a   n, int flags);.
fe70: 20 20 76 6f 69 64 20 28 2a 78 53 68 6d 42 61 72    void (*xShmBar
fe80: 72 69 65 72 29 28 73 71 6c 69 74 65 33 5f 66 69  rier)(sqlite3_fi
fe90: 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53  le*);.  int (*xS
fea0: 68 6d 55 6e 6d 61 70 29 28 73 71 6c 69 74 65 33  hmUnmap)(sqlite3
feb0: 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 64 65 6c 65  _file*, int dele
fec0: 74 65 46 6c 61 67 29 3b 0a 20 20 2f 2a 20 4d 65  teFlag);.  /* Me
fed0: 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20  thods above are 
fee0: 76 61 6c 69 64 20 66 6f 72 20 76 65 72 73 69 6f  valid for versio
fef0: 6e 20 32 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  n 2 */.  int (*x
ff00: 46 65 74 63 68 29 28 73 71 6c 69 74 65 33 5f 66  Fetch)(sqlite3_f
ff10: 69 6c 65 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e  ile*, sqlite3_in
ff20: 74 36 34 20 69 4f 66 73 74 2c 20 69 6e 74 20 69  t64 iOfst, int i
ff30: 41 6d 74 2c 20 76 6f 69 64 20 2a 2a 70 70 29 3b  Amt, void **pp);
ff40: 0a 20 20 69 6e 74 20 28 2a 78 55 6e 66 65 74 63  .  int (*xUnfetc
ff50: 68 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  h)(sqlite3_file*
ff60: 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  , sqlite3_int64 
ff70: 69 4f 66 73 74 2c 20 76 6f 69 64 20 2a 70 29 3b  iOfst, void *p);
ff80: 0a 20 20 2f 2a 20 4d 65 74 68 6f 64 73 20 61 62  .  /* Methods ab
ff90: 6f 76 65 20 61 72 65 20 76 61 6c 69 64 20 66 6f  ove are valid fo
ffa0: 72 20 76 65 72 73 69 6f 6e 20 33 20 2a 2f 0a 20  r version 3 */. 
ffb0: 20 2f 2a 20 41 64 64 69 74 69 6f 6e 61 6c 20 6d   /* Additional m
ffc0: 65 74 68 6f 64 73 20 6d 61 79 20 62 65 20 61 64  ethods may be ad
ffd0: 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65  ded in future re
ffe0: 6c 65 61 73 65 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a  leases */.};../*
fff0: 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 74  .** CAPI3REF: St
10000 61 6e 64 61 72 64 20 46 69 6c 65 20 43 6f 6e 74  andard File Cont
10010 72 6f 6c 20 4f 70 63 6f 64 65 73 0a 2a 2a 20 4b  rol Opcodes.** K
10020 45 59 57 4f 52 44 53 3a 20 7b 66 69 6c 65 20 63  EYWORDS: {file c
10030 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64 65 73 7d 20  ontrol opcodes} 
10040 7b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70  {file control op
10050 63 6f 64 65 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73  code}.**.** Thes
10060 65 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61  e integer consta
10070 6e 74 73 20 61 72 65 20 6f 70 63 6f 64 65 73 20  nts are opcodes 
10080 66 6f 72 20 74 68 65 20 78 46 69 6c 65 43 6f 6e  for the xFileCon
10090 74 72 6f 6c 20 6d 65 74 68 6f 64 0a 2a 2a 20 6f  trol method.** o
100a0 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  f the [sqlite3_i
100b0 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
100c0 74 20 61 6e 64 20 66 6f 72 20 74 68 65 20 5b 73  t and for the [s
100d0 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
100e0 72 6f 6c 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66  rol()].** interf
100f0 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  ace..**.** <ul>.
10100 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
10110 46 43 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d  FCNTL_LOCKSTATE]
10120 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
10130 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45  _FCNTL_LOCKSTATE
10140 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64  ] opcode is used
10150 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 20   for debugging. 
10160 20 54 68 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20   This.** opcode 
10170 63 61 75 73 65 73 20 74 68 65 20 78 46 69 6c 65  causes the xFile
10180 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74  Control method t
10190 6f 20 77 72 69 74 65 20 74 68 65 20 63 75 72 72  o write the curr
101a0 65 6e 74 20 73 74 61 74 65 20 6f 66 0a 2a 2a 20  ent state of.** 
101b0 74 68 65 20 6c 6f 63 6b 20 28 6f 6e 65 20 6f 66  the lock (one of
101c0 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f   [SQLITE_LOCK_NO
101d0 4e 45 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43  NE], [SQLITE_LOC
101e0 4b 5f 53 48 41 52 45 44 5d 2c 0a 2a 2a 20 5b 53  K_SHARED],.** [S
101f0 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52  QLITE_LOCK_RESER
10200 56 45 44 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f  VED], [SQLITE_LO
10210 43 4b 5f 50 45 4e 44 49 4e 47 5d 2c 20 6f 72 20  CK_PENDING], or 
10220 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43  [SQLITE_LOCK_EXC
10230 4c 55 53 49 56 45 5d 29 0a 2a 2a 20 69 6e 74 6f  LUSIVE]).** into
10240 20 61 6e 20 69 6e 74 65 67 65 72 20 74 68 61 74   an integer that
10250 20 74 68 65 20 70 41 72 67 20 61 72 67 75 6d 65   the pArg argume
10260 6e 74 20 70 6f 69 6e 74 73 20 74 6f 2e 20 54 68  nt points to. Th
10270 69 73 20 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a  is capability.**
10280 20 69 73 20 75 73 65 64 20 64 75 72 69 6e 67 20   is used during 
10290 74 65 73 74 69 6e 67 20 61 6e 64 20 69 73 20 6f  testing and is o
102a0 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 77 68  nly available wh
102b0 65 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 54 45  en the SQLITE_TE
102c0 53 54 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  ST.** compile-ti
102d0 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  me option is use
102e0 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  d..**.** <li>[[S
102f0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45  QLITE_FCNTL_SIZE
10300 5f 48 49 4e 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b  _HINT]].** The [
10310 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a  SQLITE_FCNTL_SIZ
10320 45 5f 48 49 4e 54 5d 20 6f 70 63 6f 64 65 20 69  E_HINT] opcode i
10330 73 20 75 73 65 64 20 62 79 20 53 51 4c 69 74 65  s used by SQLite
10340 20 74 6f 20 67 69 76 65 20 74 68 65 20 56 46 53   to give the VFS
10350 0a 2a 2a 20 6c 61 79 65 72 20 61 20 68 69 6e 74  .** layer a hint
10360 20 6f 66 20 68 6f 77 20 6c 61 72 67 65 20 74 68   of how large th
10370 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
10380 77 69 6c 6c 20 67 72 6f 77 20 74 6f 20 62 65 20  will grow to be 
10390 64 75 72 69 6e 67 20 74 68 65 0a 2a 2a 20 63 75  during the.** cu
103a0 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f  rrent transactio
103b0 6e 2e 20 20 54 68 69 73 20 68 69 6e 74 20 69 73  n.  This hint is
103c0 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 64 20   not guaranteed 
103d0 74 6f 20 62 65 20 61 63 63 75 72 61 74 65 20 62  to be accurate b
103e0 75 74 20 69 74 0a 2a 2a 20 69 73 20 6f 66 74 65  ut it.** is ofte
103f0 6e 20 63 6c 6f 73 65 2e 20 20 54 68 65 20 75 6e  n close.  The un
10400 64 65 72 6c 79 69 6e 67 20 56 46 53 20 6d 69 67  derlying VFS mig
10410 68 74 20 63 68 6f 6f 73 65 20 74 6f 20 70 72 65  ht choose to pre
10420 61 6c 6c 6f 63 61 74 65 20 64 61 74 61 62 61 73  allocate databas
10430 65 0a 2a 2a 20 66 69 6c 65 20 73 70 61 63 65 20  e.** file space 
10440 62 61 73 65 64 20 6f 6e 20 74 68 69 73 20 68 69  based on this hi
10450 6e 74 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 68  nt in order to h
10460 65 6c 70 20 77 72 69 74 65 73 20 74 6f 20 74 68  elp writes to th
10470 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 66 69  e database.** fi
10480 6c 65 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 2a  le run faster..*
10490 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
104a0 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49  E_FCNTL_CHUNK_SI
104b0 5a 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ZE]].** The [SQL
104c0 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f  ITE_FCNTL_CHUNK_
104d0 53 49 5a 45 5d 20 6f 70 63 6f 64 65 20 69 73 20  SIZE] opcode is 
104e0 75 73 65 64 20 74 6f 20 72 65 71 75 65 73 74 20  used to request 
104f0 74 68 61 74 20 74 68 65 20 56 46 53 0a 2a 2a 20  that the VFS.** 
10500 65 78 74 65 6e 64 73 20 61 6e 64 20 74 72 75 6e  extends and trun
10510 63 61 74 65 73 20 74 68 65 20 64 61 74 61 62 61  cates the databa
10520 73 65 20 66 69 6c 65 20 69 6e 20 63 68 75 6e 6b  se file in chunk
10530 73 20 6f 66 20 61 20 73 69 7a 65 20 73 70 65 63  s of a size spec
10540 69 66 69 65 64 0a 2a 2a 20 62 79 20 74 68 65 20  ified.** by the 
10550 75 73 65 72 2e 20 54 68 65 20 66 6f 75 72 74 68  user. The fourth
10560 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71   argument to [sq
10570 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
10580 6f 6c 28 29 5d 20 73 68 6f 75 6c 64 20 0a 2a 2a  ol()] should .**
10590 20 70 6f 69 6e 74 20 74 6f 20 61 6e 20 69 6e 74   point to an int
105a0 65 67 65 72 20 28 74 79 70 65 20 69 6e 74 29 20  eger (type int) 
105b0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e  containing the n
105c0 65 77 20 63 68 75 6e 6b 2d 73 69 7a 65 20 74 6f  ew chunk-size to
105d0 20 75 73 65 0a 2a 2a 20 66 6f 72 20 74 68 65 20   use.** for the 
105e0 6e 6f 6d 69 6e 61 74 65 64 20 64 61 74 61 62 61  nominated databa
105f0 73 65 2e 20 41 6c 6c 6f 63 61 74 69 6e 67 20 64  se. Allocating d
10600 61 74 61 62 61 73 65 20 66 69 6c 65 20 73 70 61  atabase file spa
10610 63 65 20 69 6e 20 6c 61 72 67 65 0a 2a 2a 20 63  ce in large.** c
10620 68 75 6e 6b 73 20 28 73 61 79 20 31 4d 42 20 61  hunks (say 1MB a
10630 74 20 61 20 74 69 6d 65 29 2c 20 6d 61 79 20 72  t a time), may r
10640 65 64 75 63 65 20 66 69 6c 65 2d 73 79 73 74 65  educe file-syste
10650 6d 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20  m fragmentation 
10660 61 6e 64 0a 2a 2a 20 69 6d 70 72 6f 76 65 20 70  and.** improve p
10670 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 6f  erformance on so
10680 6d 65 20 73 79 73 74 65 6d 73 2e 0a 2a 2a 0a 2a  me systems..**.*
10690 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
106a0 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45  CNTL_FILE_POINTE
106b0 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  R]].** The [SQLI
106c0 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f  TE_FCNTL_FILE_PO
106d0 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 69 73  INTER] opcode is
106e0 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20   used to obtain 
106f0 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20  a pointer.** to 
10700 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  the [sqlite3_fil
10710 65 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f 63 69  e] object associ
10720 61 74 65 64 20 77 69 74 68 20 61 20 70 61 72 74  ated with a part
10730 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 0a  icular database.
10740 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  ** connection.  
10750 53 65 65 20 61 6c 73 6f 20 5b 53 51 4c 49 54 45  See also [SQLITE
10760 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50  _FCNTL_JOURNAL_P
10770 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  OINTER]..**.** <
10780 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
10790 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54 45  L_JOURNAL_POINTE
107a0 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  R]].** The [SQLI
107b0 54 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c  TE_FCNTL_JOURNAL
107c0 5f 50 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65  _POINTER] opcode
107d0 20 69 73 20 75 73 65 64 20 74 6f 20 6f 62 74 61   is used to obta
107e0 69 6e 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20  in a pointer.** 
107f0 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  to the [sqlite3_
10800 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73 73  file] object ass
10810 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
10820 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 28 65   journal file (e
10830 69 74 68 65 72 0a 2a 2a 20 74 68 65 20 5b 72 6f  ither.** the [ro
10840 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20  llback journal] 
10850 6f 72 20 74 68 65 20 5b 77 72 69 74 65 2d 61 68  or the [write-ah
10860 65 61 64 20 6c 6f 67 5d 29 20 66 6f 72 20 61 20  ead log]) for a 
10870 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62  particular datab
10880 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  ase.** connectio
10890 6e 2e 20 20 53 65 65 20 61 6c 73 6f 20 5b 53 51  n.  See also [SQ
108a0 4c 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f  LITE_FCNTL_FILE_
108b0 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20  POINTER]..**.** 
108c0 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
108d0 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44 5d  TL_SYNC_OMITTED]
108e0 5d 0a 2a 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 69  ].** No longer i
108f0 6e 20 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  n use..**.** <li
10900 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
10910 53 59 4e 43 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53  SYNC]].** The [S
10920 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43  QLITE_FCNTL_SYNC
10930 5d 20 6f 70 63 6f 64 65 20 69 73 20 67 65 6e 65  ] opcode is gene
10940 72 61 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79  rated internally
10950 20 62 79 20 53 51 4c 69 74 65 20 61 6e 64 0a 2a   by SQLite and.*
10960 2a 20 73 65 6e 74 20 74 6f 20 74 68 65 20 56 46  * sent to the VF
10970 53 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 65  S immediately be
10980 66 6f 72 65 20 74 68 65 20 78 53 79 6e 63 20 6d  fore the xSync m
10990 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65 64  ethod is invoked
109a0 20 6f 6e 20 61 0a 2a 2a 20 64 61 74 61 62 61 73   on a.** databas
109b0 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  e file descripto
109c0 72 2e 20 4f 72 2c 20 69 66 20 74 68 65 20 78 53  r. Or, if the xS
109d0 79 6e 63 20 6d 65 74 68 6f 64 20 69 73 20 6e 6f  ync method is no
109e0 74 20 69 6e 76 6f 6b 65 64 20 0a 2a 2a 20 62 65  t invoked .** be
109f0 63 61 75 73 65 20 74 68 65 20 75 73 65 72 20 68  cause the user h
10a00 61 73 20 63 6f 6e 66 69 67 75 72 65 64 20 53 51  as configured SQ
10a10 4c 69 74 65 20 77 69 74 68 20 0a 2a 2a 20 5b 50  Lite with .** [P
10a20 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
10a30 73 20 7c 20 50 52 41 47 4d 41 20 73 79 6e 63 68  s | PRAGMA synch
10a40 72 6f 6e 6f 75 73 3d 4f 46 46 5d 20 69 74 20 69  ronous=OFF] it i
10a50 73 20 69 6e 76 6f 6b 65 64 20 69 6e 20 70 6c 61  s invoked in pla
10a60 63 65 20 0a 2a 2a 20 6f 66 20 74 68 65 20 78 53  ce .** of the xS
10a70 79 6e 63 20 6d 65 74 68 6f 64 2e 20 49 6e 20 6d  ync method. In m
10a80 6f 73 74 20 63 61 73 65 73 2c 20 74 68 65 20 70  ost cases, the p
10a90 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 20  ointer argument 
10aa0 70 61 73 73 65 64 20 77 69 74 68 0a 2a 2a 20 74  passed with.** t
10ab0 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  his file-control
10ac0 20 69 73 20 4e 55 4c 4c 2e 20 48 6f 77 65 76 65   is NULL. Howeve
10ad0 72 2c 20 69 66 20 74 68 65 20 64 61 74 61 62 61  r, if the databa
10ae0 73 65 20 66 69 6c 65 20 69 73 20 62 65 69 6e 67  se file is being
10af0 20 73 79 6e 63 65 64 0a 2a 2a 20 61 73 20 70 61   synced.** as pa
10b00 72 74 20 6f 66 20 61 20 6d 75 6c 74 69 2d 64 61  rt of a multi-da
10b10 74 61 62 61 73 65 20 63 6f 6d 6d 69 74 2c 20 74  tabase commit, t
10b20 68 65 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e  he argument poin
10b30 74 73 20 74 6f 20 61 20 6e 75 6c 2d 74 65 72 6d  ts to a nul-term
10b40 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67  inated.** string
10b50 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
10b60 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6d 61 73  transactions mas
10b70 74 65 72 2d 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  ter-journal file
10b80 20 6e 61 6d 65 2e 20 56 46 53 65 73 20 74 68 61   name. VFSes tha
10b90 74 20 0a 2a 2a 20 64 6f 20 6e 6f 74 20 6e 65 65  t .** do not nee
10ba0 64 20 74 68 69 73 20 73 69 67 6e 61 6c 20 73 68  d this signal sh
10bb0 6f 75 6c 64 20 73 69 6c 65 6e 74 6c 79 20 69 67  ould silently ig
10bc0 6e 6f 72 65 20 74 68 69 73 20 6f 70 63 6f 64 65  nore this opcode
10bd0 2e 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 0a  . Applications .
10be0 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 63 61  ** should not ca
10bf0 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  ll [sqlite3_file
10c00 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 77 69 74 68  _control()] with
10c10 20 74 68 69 73 20 6f 70 63 6f 64 65 20 61 73 20   this opcode as 
10c20 64 6f 69 6e 67 20 73 6f 20 6d 61 79 20 0a 2a 2a  doing so may .**
10c30 20 64 69 73 72 75 70 74 20 74 68 65 20 6f 70 65   disrupt the ope
10c40 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 70  ration of the sp
10c50 65 63 69 61 6c 69 7a 65 64 20 56 46 53 65 73 20  ecialized VFSes 
10c60 74 68 61 74 20 64 6f 20 72 65 71 75 69 72 65 20  that do require 
10c70 69 74 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  it.  .**.** <li>
10c80 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43  [[SQLITE_FCNTL_C
10c90 4f 4d 4d 49 54 5f 50 48 41 53 45 54 57 4f 5d 5d  OMMIT_PHASETWO]]
10ca0 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
10cb0 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48 41  FCNTL_COMMIT_PHA
10cc0 53 45 54 57 4f 5d 20 6f 70 63 6f 64 65 20 69 73  SETWO] opcode is
10cd0 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65 72   generated inter
10ce0 6e 61 6c 6c 79 20 62 79 20 53 51 4c 69 74 65 0a  nally by SQLite.
10cf0 2a 2a 20 61 6e 64 20 73 65 6e 74 20 74 6f 20 74  ** and sent to t
10d00 68 65 20 56 46 53 20 61 66 74 65 72 20 61 20 74  he VFS after a t
10d10 72 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 62  ransaction has b
10d20 65 65 6e 20 63 6f 6d 6d 69 74 74 65 64 20 69 6d  een committed im
10d30 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 62 75 74  mediately.** but
10d40 20 62 65 66 6f 72 65 20 74 68 65 20 64 61 74 61   before the data
10d50 62 61 73 65 20 69 73 20 75 6e 6c 6f 63 6b 65 64  base is unlocked
10d60 2e 20 56 46 53 65 73 20 74 68 61 74 20 64 6f 20  . VFSes that do 
10d70 6e 6f 74 20 6e 65 65 64 20 74 68 69 73 20 73 69  not need this si
10d80 67 6e 61 6c 0a 2a 2a 20 73 68 6f 75 6c 64 20 73  gnal.** should s
10d90 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 20 74  ilently ignore t
10da0 68 69 73 20 6f 70 63 6f 64 65 2e 20 41 70 70 6c  his opcode. Appl
10db0 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ications should 
10dc0 6e 6f 74 20 63 61 6c 6c 0a 2a 2a 20 5b 73 71 6c  not call.** [sql
10dd0 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
10de0 6c 28 29 5d 20 77 69 74 68 20 74 68 69 73 20 6f  l()] with this o
10df0 70 63 6f 64 65 20 61 73 20 64 6f 69 6e 67 20 73  pcode as doing s
10e00 6f 20 6d 61 79 20 64 69 73 72 75 70 74 20 74 68  o may disrupt th
10e10 65 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 20  e .** operation 
10e20 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 69 7a  of the specializ
10e30 65 64 20 56 46 53 65 73 20 74 68 61 74 20 64 6f  ed VFSes that do
10e40 20 72 65 71 75 69 72 65 20 69 74 2e 20 20 0a 2a   require it.  .*
10e50 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
10e60 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56  E_FCNTL_WIN32_AV
10e70 5f 52 45 54 52 59 5d 5d 0a 2a 2a 20 5e 54 68 65  _RETRY]].** ^The
10e80 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57   [SQLITE_FCNTL_W
10e90 49 4e 33 32 5f 41 56 5f 52 45 54 52 59 5d 20 6f  IN32_AV_RETRY] o
10ea0 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f  pcode is used to
10eb0 20 63 6f 6e 66 69 67 75 72 65 20 61 75 74 6f 6d   configure autom
10ec0 61 74 69 63 0a 2a 2a 20 72 65 74 72 79 20 63 6f  atic.** retry co
10ed0 75 6e 74 73 20 61 6e 64 20 69 6e 74 65 72 76 61  unts and interva
10ee0 6c 73 20 66 6f 72 20 63 65 72 74 61 69 6e 20 64  ls for certain d
10ef0 69 73 6b 20 49 2f 4f 20 6f 70 65 72 61 74 69 6f  isk I/O operatio
10f00 6e 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20 77 69  ns for the.** wi
10f10 6e 64 6f 77 73 20 5b 56 46 53 5d 20 69 6e 20 6f  ndows [VFS] in o
10f20 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20  rder to provide 
10f30 72 6f 62 75 73 74 6e 65 73 73 20 69 6e 20 74 68  robustness in th
10f40 65 20 70 72 65 73 65 6e 63 65 20 6f 66 0a 2a 2a  e presence of.**
10f50 20 61 6e 74 69 2d 76 69 72 75 73 20 70 72 6f 67   anti-virus prog
10f60 72 61 6d 73 2e 20 20 42 79 20 64 65 66 61 75 6c  rams.  By defaul
10f70 74 2c 20 74 68 65 20 77 69 6e 64 6f 77 73 20 56  t, the windows V
10f80 46 53 20 77 69 6c 6c 20 72 65 74 72 79 20 66 69  FS will retry fi
10f90 6c 65 20 72 65 61 64 2c 0a 2a 2a 20 66 69 6c 65  le read,.** file
10fa0 20 77 72 69 74 65 2c 20 61 6e 64 20 66 69 6c 65   write, and file
10fb0 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f   delete operatio
10fc0 6e 73 20 75 70 20 74 6f 20 31 30 20 74 69 6d 65  ns up to 10 time
10fd0 73 2c 20 77 69 74 68 20 61 20 64 65 6c 61 79 0a  s, with a delay.
10fe0 2a 2a 20 6f 66 20 32 35 20 6d 69 6c 6c 69 73 65  ** of 25 millise
10ff0 63 6f 6e 64 73 20 62 65 66 6f 72 65 20 74 68 65  conds before the
11000 20 66 69 72 73 74 20 72 65 74 72 79 20 61 6e 64   first retry and
11010 20 77 69 74 68 20 74 68 65 20 64 65 6c 61 79 20   with the delay 
11020 69 6e 63 72 65 61 73 69 6e 67 0a 2a 2a 20 62 79  increasing.** by
11030 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 32   an additional 2
11040 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 77  5 milliseconds w
11050 69 74 68 20 65 61 63 68 20 73 75 62 73 65 71 75  ith each subsequ
11060 65 6e 74 20 72 65 74 72 79 2e 20 20 54 68 69 73  ent retry.  This
11070 0a 2a 2a 20 6f 70 63 6f 64 65 20 61 6c 6c 6f 77  .** opcode allow
11080 73 20 74 68 65 73 65 20 74 77 6f 20 76 61 6c 75  s these two valu
11090 65 73 20 28 31 30 20 72 65 74 72 69 65 73 20 61  es (10 retries a
110a0 6e 64 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e  nd 25 millisecon
110b0 64 73 20 6f 66 20 64 65 6c 61 79 29 0a 2a 2a 20  ds of delay).** 
110c0 74 6f 20 62 65 20 61 64 6a 75 73 74 65 64 2e 20  to be adjusted. 
110d0 20 54 68 65 20 76 61 6c 75 65 73 20 61 72 65 20   The values are 
110e0 63 68 61 6e 67 65 64 20 66 6f 72 20 61 6c 6c 20  changed for all 
110f0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
11100 69 6f 6e 73 0a 2a 2a 20 77 69 74 68 69 6e 20 74  ions.** within t
11110 68 65 20 73 61 6d 65 20 70 72 6f 63 65 73 73 2e  he same process.
11120 20 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69    The argument i
11130 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
11140 6e 20 61 72 72 61 79 20 6f 66 20 74 77 6f 0a 2a  n array of two.*
11150 2a 20 69 6e 74 65 67 65 72 73 20 77 68 65 72 65  * integers where
11160 20 74 68 65 20 66 69 72 73 74 20 69 6e 74 65 67   the first integ
11170 65 72 20 69 73 20 74 68 65 20 6e 65 77 20 72 65  er is the new re
11180 74 72 79 20 63 6f 75 6e 74 20 61 6e 64 20 74 68  try count and th
11190 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 69 6e 74 65  e second.** inte
111a0 67 65 72 20 69 73 20 74 68 65 20 64 65 6c 61 79  ger is the delay
111b0 2e 20 20 49 66 20 65 69 74 68 65 72 20 69 6e 74  .  If either int
111c0 65 67 65 72 20 69 73 20 6e 65 67 61 74 69 76 65  eger is negative
111d0 2c 20 74 68 65 6e 20 74 68 65 20 73 65 74 74 69  , then the setti
111e0 6e 67 0a 2a 2a 20 69 73 20 6e 6f 74 20 63 68 61  ng.** is not cha
111f0 6e 67 65 64 20 62 75 74 20 69 6e 73 74 65 61 64  nged but instead
11200 20 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75 65   the prior value
11210 20 6f 66 20 74 68 61 74 20 73 65 74 74 69 6e 67   of that setting
11220 20 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20 69   is written.** i
11230 6e 74 6f 20 74 68 65 20 61 72 72 61 79 20 65 6e  nto the array en
11240 74 72 79 2c 20 61 6c 6c 6f 77 69 6e 67 20 74 68  try, allowing th
11250 65 20 63 75 72 72 65 6e 74 20 72 65 74 72 79 20  e current retry 
11260 73 65 74 74 69 6e 67 73 20 74 6f 20 62 65 0a 2a  settings to be.*
11270 2a 20 69 6e 74 65 72 72 6f 67 61 74 65 64 2e 20  * interrogated. 
11280 20 54 68 65 20 7a 44 62 4e 61 6d 65 20 70 61 72   The zDbName par
11290 61 6d 65 74 65 72 20 69 73 20 69 67 6e 6f 72 65  ameter is ignore
112a0 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  d..**.** <li>[[S
112b0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 45 52 53  QLITE_FCNTL_PERS
112c0 49 53 54 5f 57 41 4c 5d 5d 0a 2a 2a 20 5e 54 68  IST_WAL]].** ^Th
112d0 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
112e0 50 45 52 53 49 53 54 5f 57 41 4c 5d 20 6f 70 63  PERSIST_WAL] opc
112f0 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20 73  ode is used to s
11300 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65 0a  et or query the.
11310 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 5b 57  ** persistent [W
11320 41 4c 20 7c 20 57 72 69 74 65 20 41 68 65 61 64  AL | Write Ahead
11330 20 4c 6f 67 5d 20 73 65 74 74 69 6e 67 2e 20 20   Log] setting.  
11340 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20  By default, the 
11350 61 75 78 69 6c 69 61 72 79 0a 2a 2a 20 77 72 69  auxiliary.** wri
11360 74 65 20 61 68 65 61 64 20 6c 6f 67 20 61 6e 64  te ahead log and
11370 20 73 68 61 72 65 64 20 6d 65 6d 6f 72 79 20 66   shared memory f
11380 69 6c 65 73 20 75 73 65 64 20 66 6f 72 20 74 72  iles used for tr
11390 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6e 74 72 6f  ansaction contro
113a0 6c 0a 2a 2a 20 61 72 65 20 61 75 74 6f 6d 61 74  l.** are automat
113b0 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77  ically deleted w
113c0 68 65 6e 20 74 68 65 20 6c 61 74 65 73 74 20 63  hen the latest c
113d0 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65  onnection to the
113e0 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6c 6f   database.** clo
113f0 73 65 73 2e 20 20 53 65 74 74 69 6e 67 20 70 65  ses.  Setting pe
11400 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64  rsistent WAL mod
11410 65 20 63 61 75 73 65 73 20 74 68 6f 73 65 20 66  e causes those f
11420 69 6c 65 73 20 74 6f 20 70 65 72 73 69 73 74 20  iles to persist 
11430 61 66 74 65 72 0a 2a 2a 20 63 6c 6f 73 65 2e 20  after.** close. 
11440 20 50 65 72 73 69 73 74 69 6e 67 20 74 68 65 20   Persisting the 
11450 66 69 6c 65 73 20 69 73 20 75 73 65 66 75 6c 20  files is useful 
11460 77 68 65 6e 20 6f 74 68 65 72 20 70 72 6f 63 65  when other proce
11470 73 73 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  sses that do not
11480 0a 2a 2a 20 68 61 76 65 20 77 72 69 74 65 20 70  .** have write p
11490 65 72 6d 69 73 73 69 6f 6e 20 6f 6e 20 74 68 65  ermission on the
114a0 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
114b0 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ining the databa
114c0 73 65 20 66 69 6c 65 20 77 61 6e 74 0a 2a 2a 20  se file want.** 
114d0 74 6f 20 72 65 61 64 20 74 68 65 20 64 61 74 61  to read the data
114e0 62 61 73 65 20 66 69 6c 65 2c 20 61 73 20 74 68  base file, as th
114f0 65 20 57 41 4c 20 61 6e 64 20 73 68 61 72 65 64  e WAL and shared
11500 20 6d 65 6d 6f 72 79 20 66 69 6c 65 73 20 6d 75   memory files mu
11510 73 74 20 65 78 69 73 74 0a 2a 2a 20 69 6e 20 6f  st exist.** in o
11520 72 64 65 72 20 66 6f 72 20 74 68 65 20 64 61 74  rder for the dat
11530 61 62 61 73 65 20 74 6f 20 62 65 20 72 65 61 64  abase to be read
11540 61 62 6c 65 2e 20 20 54 68 65 20 66 6f 75 72 74  able.  The fourt
11550 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a  h parameter to.*
11560 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  * [sqlite3_file_
11570 63 6f 6e 74 72 6f 6c 28 29 5d 20 66 6f 72 20 74  control()] for t
11580 68 69 73 20 6f 70 63 6f 64 65 20 73 68 6f 75 6c  his opcode shoul
11590 64 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20 74  d be a pointer t
115a0 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a 2a 2a  o an integer..**
115b0 20 54 68 61 74 20 69 6e 74 65 67 65 72 20 69 73   That integer is
115c0 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 70 65   0 to disable pe
115d0 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64  rsistent WAL mod
115e0 65 20 6f 72 20 31 20 74 6f 20 65 6e 61 62 6c 65  e or 1 to enable
115f0 20 70 65 72 73 69 73 74 65 6e 74 0a 2a 2a 20 57   persistent.** W
11600 41 4c 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65  AL mode.  If the
11610 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20   integer is -1, 
11620 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77  then it is overw
11630 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20  ritten with the 
11640 63 75 72 72 65 6e 74 0a 2a 2a 20 57 41 4c 20 70  current.** WAL p
11650 65 72 73 69 73 74 65 6e 63 65 20 73 65 74 74 69  ersistence setti
11660 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  ng..**.** <li>[[
11670 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 4f 57  SQLITE_FCNTL_POW
11680 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
11690 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  ]].** ^The [SQLI
116a0 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45 52 53 41  TE_FCNTL_POWERSA
116b0 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f 70  FE_OVERWRITE] op
116c0 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20  code is used to 
116d0 73 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65  set or query the
116e0 0a 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 22  .** persistent "
116f0 70 6f 77 65 72 73 61 66 65 2d 6f 76 65 72 77 72  powersafe-overwr
11700 69 74 65 22 20 6f 72 20 22 50 53 4f 57 22 20 73  ite" or "PSOW" s
11710 65 74 74 69 6e 67 2e 20 20 54 68 65 20 50 53 4f  etting.  The PSO
11720 57 20 73 65 74 74 69 6e 67 0a 2a 2a 20 64 65 74  W setting.** det
11730 65 72 6d 69 6e 65 73 20 74 68 65 20 5b 53 51 4c  ermines the [SQL
11740 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53  ITE_IOCAP_POWERS
11750 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 62  AFE_OVERWRITE] b
11760 69 74 20 6f 66 20 74 68 65 0a 2a 2a 20 78 44 65  it of the.** xDe
11770 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74  viceCharacterist
11780 69 63 73 20 6d 65 74 68 6f 64 73 2e 20 54 68 65  ics methods. The
11790 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
117a0 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  r to.** [sqlite3
117b0 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d  _file_control()]
117c0 20 66 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65   for this opcode
117d0 20 73 68 6f 75 6c 64 20 62 65 20 61 20 70 6f 69   should be a poi
117e0 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67  nter to an integ
117f0 65 72 2e 0a 2a 2a 20 54 68 61 74 20 69 6e 74 65  er..** That inte
11800 67 65 72 20 69 73 20 30 20 74 6f 20 64 69 73 61  ger is 0 to disa
11810 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 20  ble zero-damage 
11820 6d 6f 64 65 20 6f 72 20 31 20 74 6f 20 65 6e 61  mode or 1 to ena
11830 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 0a  ble zero-damage.
11840 2a 2a 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65  ** mode.  If the
11850 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20   integer is -1, 
11860 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77  then it is overw
11870 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20  ritten with the 
11880 63 75 72 72 65 6e 74 0a 2a 2a 20 7a 65 72 6f 2d  current.** zero-
11890 64 61 6d 61 67 65 20 6d 6f 64 65 20 73 65 74 74  damage mode sett
118a0 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ing..**.** <li>[
118b0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f 56  [SQLITE_FCNTL_OV
118c0 45 52 57 52 49 54 45 5d 5d 0a 2a 2a 20 5e 54 68  ERWRITE]].** ^Th
118d0 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
118e0 4f 56 45 52 57 52 49 54 45 5d 20 6f 70 63 6f 64  OVERWRITE] opcod
118f0 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20  e is invoked by 
11900 53 51 4c 69 74 65 20 61 66 74 65 72 20 6f 70 65  SQLite after ope
11910 6e 69 6e 67 0a 2a 2a 20 61 20 77 72 69 74 65 20  ning.** a write 
11920 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 69  transaction to i
11930 6e 64 69 63 61 74 65 20 74 68 61 74 2c 20 75 6e  ndicate that, un
11940 6c 65 73 73 20 69 74 20 69 73 20 72 6f 6c 6c 65  less it is rolle
11950 64 20 62 61 63 6b 20 66 6f 72 20 73 6f 6d 65 0a  d back for some.
11960 2a 2a 20 72 65 61 73 6f 6e 2c 20 74 68 65 20 65  ** reason, the e
11970 6e 74 69 72 65 20 64 61 74 61 62 61 73 65 20 66  ntire database f
11980 69 6c 65 20 77 69 6c 6c 20 62 65 20 6f 76 65 72  ile will be over
11990 77 72 69 74 74 65 6e 20 62 79 20 74 68 65 20 63  written by the c
119a0 75 72 72 65 6e 74 20 0a 2a 2a 20 74 72 61 6e 73  urrent .** trans
119b0 61 63 74 69 6f 6e 2e 20 54 68 69 73 20 69 73 20  action. This is 
119c0 75 73 65 64 20 62 79 20 56 41 43 55 55 4d 20 6f  used by VACUUM o
119d0 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a  perations..**.**
119e0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
119f0 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 5d 0a 2a 2a  NTL_VFSNAME]].**
11a00 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43   ^The [SQLITE_FC
11a10 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 20 6f 70 63  NTL_VFSNAME] opc
11a20 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  ode can be used 
11a30 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6e 61  to obtain the na
11a40 6d 65 73 20 6f 66 0a 2a 2a 20 61 6c 6c 20 5b 56  mes of.** all [V
11a50 46 53 65 73 5d 20 69 6e 20 74 68 65 20 56 46 53  FSes] in the VFS
11a60 20 73 74 61 63 6b 2e 20 20 54 68 65 20 6e 61 6d   stack.  The nam
11a70 65 73 20 61 72 65 20 6f 66 20 61 6c 6c 20 56 46  es are of all VF
11a80 53 20 73 68 69 6d 73 20 61 6e 64 20 74 68 65 0a  S shims and the.
11a90 2a 2a 20 66 69 6e 61 6c 20 62 6f 74 74 6f 6d 2d  ** final bottom-
11aa0 6c 65 76 65 6c 20 56 46 53 20 61 72 65 20 77 72  level VFS are wr
11ab0 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72  itten into memor
11ac0 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
11ad0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  .** [sqlite3_mal
11ae0 6c 6f 63 28 29 5d 20 61 6e 64 20 74 68 65 20 72  loc()] and the r
11af0 65 73 75 6c 74 20 69 73 20 73 74 6f 72 65 64 20  esult is stored 
11b00 69 6e 20 74 68 65 20 63 68 61 72 2a 20 76 61 72  in the char* var
11b10 69 61 62 6c 65 0a 2a 2a 20 74 68 61 74 20 74 68  iable.** that th
11b20 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
11b30 65 72 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 66  er of [sqlite3_f
11b40 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 70  ile_control()] p
11b50 6f 69 6e 74 73 20 74 6f 2e 0a 2a 2a 20 54 68 65  oints to..** The
11b60 20 63 61 6c 6c 65 72 20 69 73 20 72 65 73 70 6f   caller is respo
11b70 6e 73 69 62 6c 65 20 66 6f 72 20 66 72 65 65 69  nsible for freei
11b80 6e 67 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68  ng the memory wh
11b90 65 6e 20 64 6f 6e 65 2e 20 20 41 73 20 77 69 74  en done.  As wit
11ba0 68 0a 2a 2a 20 61 6c 6c 20 66 69 6c 65 2d 63 6f  h.** all file-co
11bb0 6e 74 72 6f 6c 20 61 63 74 69 6f 6e 73 2c 20 74  ntrol actions, t
11bc0 68 65 72 65 20 69 73 20 6e 6f 20 67 75 61 72 61  here is no guara
11bd0 6e 74 65 65 20 74 68 61 74 20 74 68 69 73 20 77  ntee that this w
11be0 69 6c 6c 20 61 63 74 75 61 6c 6c 79 0a 2a 2a 20  ill actually.** 
11bf0 64 6f 20 61 6e 79 74 68 69 6e 67 2e 20 20 43 61  do anything.  Ca
11c00 6c 6c 65 72 73 20 73 68 6f 75 6c 64 20 69 6e 69  llers should ini
11c10 74 69 61 6c 69 7a 65 20 74 68 65 20 63 68 61 72  tialize the char
11c20 2a 20 76 61 72 69 61 62 6c 65 20 74 6f 20 61 20  * variable to a 
11c30 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74 65 72 20  NULL.** pointer 
11c40 69 6e 20 63 61 73 65 20 74 68 69 73 20 66 69 6c  in case this fil
11c50 65 2d 63 6f 6e 74 72 6f 6c 20 69 73 20 6e 6f 74  e-control is not
11c60 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 20 20 54   implemented.  T
11c70 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  his file-control
11c80 0a 2a 2a 20 69 73 20 69 6e 74 65 6e 64 65 64 20  .** is intended 
11c90 66 6f 72 20 64 69 61 67 6e 6f 73 74 69 63 20 75  for diagnostic u
11ca0 73 65 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20 3c  se only..**.** <
11cb0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
11cc0 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 5d 5d 0a  L_VFS_POINTER]].
11cd0 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f  ** ^The [SQLITE_
11ce0 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45  FCNTL_VFS_POINTE
11cf0 52 5d 20 6f 70 63 6f 64 65 20 66 69 6e 64 73 20  R] opcode finds 
11d00 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
11d10 20 74 6f 70 2d 6c 65 76 65 6c 0a 2a 2a 20 5b 56   top-level.** [V
11d20 46 53 65 73 5d 20 63 75 72 72 65 6e 74 6c 79 20  FSes] currently 
11d30 69 6e 20 75 73 65 2e 20 20 5e 28 54 68 65 20 61  in use.  ^(The a
11d40 72 67 75 6d 65 6e 74 20 58 20 69 6e 0a 2a 2a 20  rgument X in.** 
11d50 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
11d60 74 72 6f 6c 28 64 62 2c 53 51 4c 49 54 45 5f 46  trol(db,SQLITE_F
11d70 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52  CNTL_VFS_POINTER
11d80 2c 58 29 20 6d 75 73 74 20 62 65 0a 2a 2a 20 6f  ,X) must be.** o
11d90 66 20 74 79 70 65 20 22 5b 73 71 6c 69 74 65 33  f type "[sqlite3
11da0 5f 76 66 73 5d 20 2a 2a 22 2e 20 20 54 68 69 73  _vfs] **".  This
11db0 20 6f 70 63 6f 64 65 73 20 77 69 6c 6c 20 73 65   opcodes will se
11dc0 74 20 2a 58 0a 2a 2a 20 74 6f 20 61 20 70 6f 69  t *X.** to a poi
11dd0 6e 74 65 72 20 74 6f 20 74 68 65 20 74 6f 70 2d  nter to the top-
11de0 6c 65 76 65 6c 20 56 46 53 2e 29 5e 0a 2a 2a 20  level VFS.)^.** 
11df0 5e 57 68 65 6e 20 74 68 65 72 65 20 61 72 65 20  ^When there are 
11e00 6d 75 6c 74 69 70 6c 65 20 56 46 53 20 73 68 69  multiple VFS shi
11e10 6d 73 20 69 6e 20 74 68 65 20 73 74 61 63 6b 2c  ms in the stack,
11e20 20 74 68 69 73 20 6f 70 63 6f 64 65 20 66 69 6e   this opcode fin
11e30 64 73 20 74 68 65 0a 2a 2a 20 75 70 70 65 72 2d  ds the.** upper-
11e40 6d 6f 73 74 20 73 68 69 6d 20 6f 6e 6c 79 2e 0a  most shim only..
11e50 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
11e60 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d  TE_FCNTL_PRAGMA]
11e70 5d 0a 2a 2a 20 5e 57 68 65 6e 65 76 65 72 20 61  ].** ^Whenever a
11e80 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65 6d   [PRAGMA] statem
11e90 65 6e 74 20 69 73 20 70 61 72 73 65 64 2c 20 61  ent is parsed, a
11ea0 6e 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  n [SQLITE_FCNTL_
11eb0 50 52 41 47 4d 41 5d 20 0a 2a 2a 20 66 69 6c 65  PRAGMA] .** file
11ec0 20 63 6f 6e 74 72 6f 6c 20 69 73 20 73 65 6e 74   control is sent
11ed0 20 74 6f 20 74 68 65 20 6f 70 65 6e 20 5b 73 71   to the open [sq
11ee0 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65  lite3_file] obje
11ef0 63 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ct corresponding
11f00 0a 2a 2a 20 74 6f 20 74 68 65 20 64 61 74 61 62  .** to the datab
11f10 61 73 65 20 66 69 6c 65 20 74 6f 20 77 68 69 63  ase file to whic
11f20 68 20 74 68 65 20 70 72 61 67 6d 61 20 73 74 61  h the pragma sta
11f30 74 65 6d 65 6e 74 20 72 65 66 65 72 73 2e 20 5e  tement refers. ^
11f40 54 68 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20  The argument.** 
11f50 74 6f 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46  to the [SQLITE_F
11f60 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c  CNTL_PRAGMA] fil
11f70 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 61 6e 20  e control is an 
11f80 61 72 72 61 79 20 6f 66 0a 2a 2a 20 70 6f 69 6e  array of.** poin
11f90 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73 20  ters to strings 
11fa0 28 63 68 61 72 2a 2a 29 20 69 6e 20 77 68 69 63  (char**) in whic
11fb0 68 20 74 68 65 20 73 65 63 6f 6e 64 20 65 6c 65  h the second ele
11fc0 6d 65 6e 74 20 6f 66 20 74 68 65 20 61 72 72 61  ment of the arra
11fd0 79 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d 65  y.** is the name
11fe0 20 6f 66 20 74 68 65 20 70 72 61 67 6d 61 20 61   of the pragma a
11ff0 6e 64 20 74 68 65 20 74 68 69 72 64 20 65 6c 65  nd the third ele
12000 6d 65 6e 74 20 69 73 20 74 68 65 20 61 72 67 75  ment is the argu
12010 6d 65 6e 74 20 74 6f 20 74 68 65 0a 2a 2a 20 70  ment to the.** p
12020 72 61 67 6d 61 20 6f 72 20 4e 55 4c 4c 20 69 66  ragma or NULL if
12030 20 74 68 65 20 70 72 61 67 6d 61 20 68 61 73 20   the pragma has 
12040 6e 6f 20 61 72 67 75 6d 65 6e 74 2e 20 20 5e 54  no argument.  ^T
12050 68 65 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61  he handler for a
12060 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e  n.** [SQLITE_FCN
12070 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65 20  TL_PRAGMA] file 
12080 63 6f 6e 74 72 6f 6c 20 63 61 6e 20 6f 70 74 69  control can opti
12090 6f 6e 61 6c 6c 79 20 6d 61 6b 65 20 74 68 65 20  onally make the 
120a0 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 0a 2a 2a  first element.**
120b0 20 6f 66 20 74 68 65 20 63 68 61 72 2a 2a 20 61   of the char** a
120c0 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 20 74 6f  rgument point to
120d0 20 61 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e   a string obtain
120e0 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  ed from [sqlite3
120f0 5f 6d 70 72 69 6e 74 66 28 29 5d 0a 2a 2a 20 6f  _mprintf()].** o
12100 72 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74  r the equivalent
12110 20 61 6e 64 20 74 68 61 74 20 73 74 72 69 6e 67   and that string
12120 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65   will become the
12130 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 70   result of the p
12140 72 61 67 6d 61 20 6f 72 0a 2a 2a 20 74 68 65 20  ragma or.** the 
12150 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 66  error message if
12160 20 74 68 65 20 70 72 61 67 6d 61 20 66 61 69 6c   the pragma fail
12170 73 2e 20 5e 49 66 20 74 68 65 0a 2a 2a 20 5b 53  s. ^If the.** [S
12180 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47  QLITE_FCNTL_PRAG
12190 4d 41 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  MA] file control
121a0 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
121b0 5f 4e 4f 54 46 4f 55 4e 44 5d 2c 20 74 68 65 6e  _NOTFOUND], then
121c0 20 6e 6f 72 6d 61 6c 20 0a 2a 2a 20 5b 50 52 41   normal .** [PRA
121d0 47 4d 41 5d 20 70 72 6f 63 65 73 73 69 6e 67 20  GMA] processing 
121e0 63 6f 6e 74 69 6e 75 65 73 2e 20 20 5e 49 66 20  continues.  ^If 
121f0 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  the [SQLITE_FCNT
12200 4c 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c  L_PRAGMA].** fil
12210 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75 72 6e  e control return
12220 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74  s [SQLITE_OK], t
12230 68 65 6e 20 74 68 65 20 70 61 72 73 65 72 20 61  hen the parser a
12240 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65 0a  ssumes that the.
12250 2a 2a 20 56 46 53 20 68 61 73 20 68 61 6e 64 6c  ** VFS has handl
12260 65 64 20 74 68 65 20 50 52 41 47 4d 41 20 69 74  ed the PRAGMA it
12270 73 65 6c 66 20 61 6e 64 20 74 68 65 20 70 61 72  self and the par
12280 73 65 72 20 67 65 6e 65 72 61 74 65 73 20 61 20  ser generates a 
12290 6e 6f 2d 6f 70 0a 2a 2a 20 70 72 65 70 61 72 65  no-op.** prepare
122a0 64 20 73 74 61 74 65 6d 65 6e 74 20 69 66 20 72  d statement if r
122b0 65 73 75 6c 74 20 73 74 72 69 6e 67 20 69 73 20  esult string is 
122c0 4e 55 4c 4c 2c 20 6f 72 20 74 68 61 74 20 72 65  NULL, or that re
122d0 74 75 72 6e 73 20 61 20 63 6f 70 79 0a 2a 2a 20  turns a copy.** 
122e0 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 74  of the result st
122f0 72 69 6e 67 20 69 66 20 74 68 65 20 73 74 72 69  ring if the stri
12300 6e 67 20 69 73 20 6e 6f 6e 2d 4e 55 4c 4c 2e 0a  ng is non-NULL..
12310 2a 2a 20 5e 49 66 20 74 68 65 20 5b 53 51 4c 49  ** ^If the [SQLI
12320 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d  TE_FCNTL_PRAGMA]
12330 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65   file control re
12340 74 75 72 6e 73 0a 2a 2a 20 61 6e 79 20 72 65 73  turns.** any res
12350 75 6c 74 20 63 6f 64 65 20 6f 74 68 65 72 20 74  ult code other t
12360 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  han [SQLITE_OK] 
12370 6f 72 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46 4f  or [SQLITE_NOTFO
12380 55 4e 44 5d 2c 20 74 68 61 74 20 6d 65 61 6e 73  UND], that means
12390 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 56 46 53  .** that the VFS
123a0 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e 20   encountered an 
123b0 65 72 72 6f 72 20 77 68 69 6c 65 20 68 61 6e 64  error while hand
123c0 6c 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41  ling the [PRAGMA
123d0 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 63 6f 6d  ] and the.** com
123e0 70 69 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  pilation of the 
123f0 50 52 41 47 4d 41 20 66 61 69 6c 73 20 77 69 74  PRAGMA fails wit
12400 68 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 54 68  h an error.  ^Th
12410 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
12420 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65 20  PRAGMA].** file 
12430 63 6f 6e 74 72 6f 6c 20 6f 63 63 75 72 73 20 61  control occurs a
12440 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  t the beginning 
12450 6f 66 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d  of pragma statem
12460 65 6e 74 20 61 6e 61 6c 79 73 69 73 20 61 6e 64  ent analysis and
12470 20 73 6f 0a 2a 2a 20 69 74 20 69 73 20 61 62 6c   so.** it is abl
12480 65 20 74 6f 20 6f 76 65 72 72 69 64 65 20 62 75  e to override bu
12490 69 6c 74 2d 69 6e 20 5b 50 52 41 47 4d 41 5d 20  ilt-in [PRAGMA] 
124a0 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a  statements..**.*
124b0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
124c0 43 4e 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52  CNTL_BUSYHANDLER
124d0 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  ]].** ^The [SQLI
124e0 54 45 5f 46 43 4e 54 4c 5f 42 55 53 59 48 41 4e  TE_FCNTL_BUSYHAN
124f0 44 4c 45 52 5d 0a 2a 2a 20 66 69 6c 65 2d 63 6f  DLER].** file-co
12500 6e 74 72 6f 6c 20 6d 61 79 20 62 65 20 69 6e 76  ntrol may be inv
12510 6f 6b 65 64 20 62 79 20 53 51 4c 69 74 65 20 6f  oked by SQLite o
12520 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
12530 69 6c 65 20 68 61 6e 64 6c 65 0a 2a 2a 20 73 68  ile handle.** sh
12540 6f 72 74 6c 79 20 61 66 74 65 72 20 69 74 20 69  ortly after it i
12550 73 20 6f 70 65 6e 65 64 20 69 6e 20 6f 72 64 65  s opened in orde
12560 72 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 63  r to provide a c
12570 75 73 74 6f 6d 20 56 46 53 20 77 69 74 68 20 61  ustom VFS with a
12580 63 63 65 73 73 0a 2a 2a 20 74 6f 20 74 68 65 20  ccess.** to the 
12590 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 62 75 73 79  connections busy
125a0 2d 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63  -handler callbac
125b0 6b 2e 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20  k. The argument 
125c0 69 73 20 6f 66 20 74 79 70 65 20 28 76 6f 69 64  is of type (void
125d0 20 2a 2a 29 0a 2a 2a 20 2d 20 61 6e 20 61 72 72   **).** - an arr
125e0 61 79 20 6f 66 20 74 77 6f 20 28 76 6f 69 64 20  ay of two (void 
125f0 2a 29 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66  *) values. The f
12600 69 72 73 74 20 28 76 6f 69 64 20 2a 29 20 61 63  irst (void *) ac
12610 74 75 61 6c 6c 79 20 70 6f 69 6e 74 73 0a 2a 2a  tually points.**
12620 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f   to a function o
12630 66 20 74 79 70 65 20 28 69 6e 74 20 28 2a 29 28  f type (int (*)(
12640 76 6f 69 64 20 2a 29 29 2e 20 49 6e 20 6f 72 64  void *)). In ord
12650 65 72 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65  er to invoke the
12660 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20   connections.** 
12670 62 75 73 79 2d 68 61 6e 64 6c 65 72 2c 20 74 68  busy-handler, th
12680 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75  is function shou
12690 6c 64 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69  ld be invoked wi
126a0 74 68 20 74 68 65 20 73 65 63 6f 6e 64 20 28 76  th the second (v
126b0 6f 69 64 20 2a 29 20 69 6e 0a 2a 2a 20 74 68 65  oid *) in.** the
126c0 20 61 72 72 61 79 20 61 73 20 74 68 65 20 6f 6e   array as the on
126d0 6c 79 20 61 72 67 75 6d 65 6e 74 2e 20 49 66 20  ly argument. If 
126e0 69 74 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a  it returns non-z
126f0 65 72 6f 2c 20 74 68 65 6e 20 74 68 65 20 6f 70  ero, then the op
12700 65 72 61 74 69 6f 6e 0a 2a 2a 20 73 68 6f 75 6c  eration.** shoul
12710 64 20 62 65 20 72 65 74 72 69 65 64 2e 20 49 66  d be retried. If
12720 20 69 74 20 72 65 74 75 72 6e 73 20 7a 65 72 6f   it returns zero
12730 2c 20 74 68 65 20 63 75 73 74 6f 6d 20 56 46 53  , the custom VFS
12740 20 73 68 6f 75 6c 64 20 61 62 61 6e 64 6f 6e 20   should abandon 
12750 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20 6f  the.** current o
12760 70 65 72 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  peration..**.** 
12770 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
12780 54 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 5d  TL_TEMPFILENAME]
12790 5d 0a 2a 2a 20 5e 41 70 70 6c 69 63 61 74 69 6f  ].** ^Applicatio
127a0 6e 20 63 61 6e 20 69 6e 76 6f 6b 65 20 74 68 65  n can invoke the
127b0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
127c0 45 4d 50 46 49 4c 45 4e 41 4d 45 5d 20 66 69 6c  EMPFILENAME] fil
127d0 65 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 74 6f 20  e-control.** to 
127e0 68 61 76 65 20 53 51 4c 69 74 65 20 67 65 6e 65  have SQLite gene
127f0 72 61 74 65 20 61 0a 2a 2a 20 74 65 6d 70 6f 72  rate a.** tempor
12800 61 72 79 20 66 69 6c 65 6e 61 6d 65 20 75 73 69  ary filename usi
12810 6e 67 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f  ng the same algo
12820 72 69 74 68 6d 20 74 68 61 74 20 69 73 20 66 6f  rithm that is fo
12830 6c 6c 6f 77 65 64 20 74 6f 20 67 65 6e 65 72 61  llowed to genera
12840 74 65 0a 2a 2a 20 74 65 6d 70 6f 72 61 72 79 20  te.** temporary 
12850 66 69 6c 65 6e 61 6d 65 73 20 66 6f 72 20 54 45  filenames for TE
12860 4d 50 20 74 61 62 6c 65 73 20 61 6e 64 20 6f 74  MP tables and ot
12870 68 65 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65  her internal use
12880 73 2e 20 20 54 68 65 0a 2a 2a 20 61 72 67 75 6d  s.  The.** argum
12890 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 61 20  ent should be a 
128a0 63 68 61 72 2a 2a 20 77 68 69 63 68 20 77 69 6c  char** which wil
128b0 6c 20 62 65 20 66 69 6c 6c 65 64 20 77 69 74 68  l be filled with
128c0 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a   the filename.**
128d0 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65   written into me
128e0 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72  mory obtained fr
128f0 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  om [sqlite3_mall
12900 6f 63 28 29 5d 2e 20 20 54 68 65 20 63 61 6c 6c  oc()].  The call
12910 65 72 20 73 68 6f 75 6c 64 0a 2a 2a 20 69 6e 76  er should.** inv
12920 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  oke [sqlite3_fre
12930 65 28 29 5d 20 6f 6e 20 74 68 65 20 72 65 73 75  e()] on the resu
12940 6c 74 20 74 6f 20 61 76 6f 69 64 20 61 20 6d 65  lt to avoid a me
12950 6d 6f 72 79 20 6c 65 61 6b 2e 0a 2a 2a 0a 2a 2a  mory leak..**.**
12960 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
12970 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a  NTL_MMAP_SIZE]].
12980 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
12990 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20  CNTL_MMAP_SIZE] 
129a0 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20  file control is 
129b0 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 6f 72  used to query or
129c0 20 73 65 74 20 74 68 65 0a 2a 2a 20 6d 61 78 69   set the.** maxi
129d0 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  mum number of by
129e0 74 65 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65  tes that will be
129f0 20 75 73 65 64 20 66 6f 72 20 6d 65 6d 6f 72 79   used for memory
12a00 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 2a 2a 20  -mapped I/O..** 
12a10 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  The argument is 
12a20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 76  a pointer to a v
12a30 61 6c 75 65 20 6f 66 20 74 79 70 65 20 73 71 6c  alue of type sql
12a40 69 74 65 33 5f 69 6e 74 36 34 20 74 68 61 74 0a  ite3_int64 that.
12a50 2a 2a 20 69 73 20 61 6e 20 61 64 76 69 73 6f 72  ** is an advisor
12a60 79 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  y maximum number
12a70 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 65   of bytes in the
12a80 20 66 69 6c 65 20 74 6f 20 6d 65 6d 6f 72 79 20   file to memory 
12a90 6d 61 70 2e 20 20 54 68 65 0a 2a 2a 20 70 6f 69  map.  The.** poi
12aa0 6e 74 65 72 20 69 73 20 6f 76 65 72 77 72 69 74  nter is overwrit
12ab0 74 65 6e 20 77 69 74 68 20 74 68 65 20 6f 6c 64  ten with the old
12ac0 20 76 61 6c 75 65 2e 20 20 54 68 65 20 6c 69 6d   value.  The lim
12ad0 69 74 20 69 73 20 6e 6f 74 20 63 68 61 6e 67 65  it is not change
12ae0 64 20 69 66 0a 2a 2a 20 74 68 65 20 76 61 6c 75  d if.** the valu
12af0 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 70 6f 69  e originally poi
12b00 6e 74 65 64 20 74 6f 20 69 73 20 6e 65 67 61 74  nted to is negat
12b10 69 76 65 2c 20 61 6e 64 20 73 6f 20 74 68 65 20  ive, and so the 
12b20 63 75 72 72 65 6e 74 20 6c 69 6d 69 74 20 0a 2a  current limit .*
12b30 2a 20 63 61 6e 20 62 65 20 71 75 65 72 69 65 64  * can be queried
12b40 20 62 79 20 70 61 73 73 69 6e 67 20 69 6e 20 61   by passing in a
12b50 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 65   pointer to a ne
12b60 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2e 20 20  gative number.  
12b70 54 68 69 73 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e  This.** file-con
12b80 74 72 6f 6c 20 69 73 20 75 73 65 64 20 69 6e 74  trol is used int
12b90 65 72 6e 61 6c 6c 79 20 74 6f 20 69 6d 70 6c 65  ernally to imple
12ba0 6d 65 6e 74 20 5b 50 52 41 47 4d 41 20 6d 6d 61  ment [PRAGMA mma
12bb0 70 5f 73 69 7a 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  p_size]..**.** <
12bc0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
12bd0 4c 5f 54 52 41 43 45 5d 5d 0a 2a 2a 20 54 68 65  L_TRACE]].** The
12be0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
12bf0 52 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72  RACE] file contr
12c00 6f 6c 20 70 72 6f 76 69 64 65 73 20 61 64 76 69  ol provides advi
12c10 73 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  sory information
12c20 0a 2a 2a 20 74 6f 20 74 68 65 20 56 46 53 20 61  .** to the VFS a
12c30 62 6f 75 74 20 77 68 61 74 20 74 68 65 20 68 69  bout what the hi
12c40 67 68 65 72 20 6c 61 79 65 72 73 20 6f 66 20 74  gher layers of t
12c50 68 65 20 53 51 4c 69 74 65 20 73 74 61 63 6b 20  he SQLite stack 
12c60 61 72 65 20 64 6f 69 6e 67 2e 0a 2a 2a 20 54 68  are doing..** Th
12c70 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  is file control 
12c80 69 73 20 75 73 65 64 20 62 79 20 73 6f 6d 65 20  is used by some 
12c90 56 46 53 20 61 63 74 69 76 69 74 79 20 74 72 61  VFS activity tra
12ca0 63 69 6e 67 20 5b 73 68 69 6d 73 5d 2e 0a 2a 2a  cing [shims]..**
12cb0 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   The argument is
12cc0 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74   a zero-terminat
12cd0 65 64 20 73 74 72 69 6e 67 2e 20 20 48 69 67 68  ed string.  High
12ce0 65 72 20 6c 61 79 65 72 73 20 69 6e 20 74 68 65  er layers in the
12cf0 0a 2a 2a 20 53 51 4c 69 74 65 20 73 74 61 63 6b  .** SQLite stack
12d00 20 6d 61 79 20 67 65 6e 65 72 61 74 65 20 69 6e   may generate in
12d10 73 74 61 6e 63 65 73 20 6f 66 20 74 68 69 73 20  stances of this 
12d20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 66 0a  file control if.
12d30 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 55  ** the [SQLITE_U
12d40 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20  SE_FCNTL_TRACE] 
12d50 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
12d60 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a  ion is enabled..
12d70 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
12d80 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56  TE_FCNTL_HAS_MOV
12d90 45 44 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ED]].** The [SQL
12da0 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f  ITE_FCNTL_HAS_MO
12db0 56 45 44 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f  VED] file contro
12dc0 6c 20 69 6e 74 65 72 70 72 65 74 73 20 69 74 73  l interprets its
12dd0 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 0a 2a   argument as a.*
12de0 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  * pointer to an 
12df0 69 6e 74 65 67 65 72 20 61 6e 64 20 69 74 20 77  integer and it w
12e00 72 69 74 65 73 20 61 20 62 6f 6f 6c 65 61 6e 20  rites a boolean 
12e10 69 6e 74 6f 20 74 68 61 74 20 69 6e 74 65 67 65  into that intege
12e20 72 20 64 65 70 65 6e 64 69 6e 67 0a 2a 2a 20 6f  r depending.** o
12e30 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  n whether or not
12e40 20 74 68 65 20 66 69 6c 65 20 68 61 73 20 62 65   the file has be
12e50 65 6e 20 72 65 6e 61 6d 65 64 2c 20 6d 6f 76 65  en renamed, move
12e60 64 2c 20 6f 72 20 64 65 6c 65 74 65 64 20 73 69  d, or deleted si
12e70 6e 63 65 20 69 74 0a 2a 2a 20 77 61 73 20 66 69  nce it.** was fi
12e80 72 73 74 20 6f 70 65 6e 65 64 2e 0a 2a 2a 0a 2a  rst opened..**.*
12e90 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12ea0 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48  CNTL_WIN32_GET_H
12eb0 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b  ANDLE]].** The [
12ec0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e  SQLITE_FCNTL_WIN
12ed0 33 32 5f 47 45 54 5f 48 41 4e 44 4c 45 5d 20 6f  32_GET_HANDLE] o
12ee0 70 63 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65  pcode can be use
12ef0 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 0a  d to obtain the.
12f00 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61  ** underlying na
12f10 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64 6c 65  tive file handle
12f20 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
12f30 20 61 20 66 69 6c 65 20 68 61 6e 64 6c 65 2e 20   a file handle. 
12f40 20 54 68 69 73 20 66 69 6c 65 0a 2a 2a 20 63 6f   This file.** co
12f50 6e 74 72 6f 6c 20 69 6e 74 65 72 70 72 65 74 73  ntrol interprets
12f60 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 61 73   its argument as
12f70 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
12f80 6e 61 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64  native file hand
12f90 6c 65 20 61 6e 64 0a 2a 2a 20 77 72 69 74 65 73  le and.** writes
12fa0 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 76   the resulting v
12fb0 61 6c 75 65 20 74 68 65 72 65 2e 0a 2a 2a 0a 2a  alue there..**.*
12fc0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12fd0 43 4e 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f 48  CNTL_WIN32_SET_H
12fe0 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b  ANDLE]].** The [
12ff0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e  SQLITE_FCNTL_WIN
13000 33 32 5f 53 45 54 5f 48 41 4e 44 4c 45 5d 20 6f  32_SET_HANDLE] o
13010 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 66 6f  pcode is used fo
13020 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54 68  r debugging.  Th
13030 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61 75  is.** opcode cau
13040 73 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f 6e  ses the xFileCon
13050 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20 73  trol method to s
13060 77 61 70 20 74 68 65 20 66 69 6c 65 20 68 61 6e  wap the file han
13070 64 6c 65 20 77 69 74 68 20 74 68 65 20 6f 6e 65  dle with the one
13080 0a 2a 2a 20 70 6f 69 6e 74 65 64 20 74 6f 20 62  .** pointed to b
13090 79 20 74 68 65 20 70 41 72 67 20 61 72 67 75 6d  y the pArg argum
130a0 65 6e 74 2e 20 20 54 68 69 73 20 63 61 70 61 62  ent.  This capab
130b0 69 6c 69 74 79 20 69 73 20 75 73 65 64 20 64 75  ility is used du
130c0 72 69 6e 67 20 74 65 73 74 69 6e 67 0a 2a 2a 20  ring testing.** 
130d0 61 6e 64 20 6f 6e 6c 79 20 6e 65 65 64 73 20 74  and only needs t
130e0 6f 20 62 65 20 73 75 70 70 6f 72 74 65 64 20 77  o be supported w
130f0 68 65 6e 20 53 51 4c 49 54 45 5f 54 45 53 54 20  hen SQLITE_TEST 
13100 69 73 20 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a  is defined..**.*
13110 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13120 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 5d  CNTL_WAL_BLOCK]]
13130 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
13140 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d  FCNTL_WAL_BLOCK]
13150 20 69 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20   is a signal to 
13160 74 68 65 20 56 46 53 20 6c 61 79 65 72 20 74 68  the VFS layer th
13170 61 74 20 69 74 20 6d 69 67 68 74 0a 2a 2a 20 62  at it might.** b
13180 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73 20 74  e advantageous t
13190 6f 20 62 6c 6f 63 6b 20 6f 6e 20 74 68 65 20 6e  o block on the n
131a0 65 78 74 20 57 41 4c 20 6c 6f 63 6b 20 69 66 20  ext WAL lock if 
131b0 74 68 65 20 6c 6f 63 6b 20 69 73 20 6e 6f 74 20  the lock is not 
131c0 69 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 61  immediately.** a
131d0 76 61 69 6c 61 62 6c 65 2e 20 20 54 68 65 20 57  vailable.  The W
131e0 41 4c 20 73 75 62 73 79 73 74 65 6d 20 69 73 73  AL subsystem iss
131f0 75 65 73 20 74 68 69 73 20 73 69 67 6e 61 6c 20  ues this signal 
13200 64 75 72 69 6e 67 20 72 61 72 65 0a 2a 2a 20 63  during rare.** c
13210 69 72 63 75 6d 73 74 61 6e 63 65 73 20 69 6e 20  ircumstances in 
13220 6f 72 64 65 72 20 74 6f 20 66 69 78 20 61 20 70  order to fix a p
13230 72 6f 62 6c 65 6d 20 77 69 74 68 20 70 72 69 6f  roblem with prio
13240 72 69 74 79 20 69 6e 76 65 72 73 69 6f 6e 2e 0a  rity inversion..
13250 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  ** Applications 
13260 73 68 6f 75 6c 64 20 3c 65 6d 3e 6e 6f 74 3c 2f  should <em>not</
13270 65 6d 3e 20 75 73 65 20 74 68 69 73 20 66 69 6c  em> use this fil
13280 65 2d 63 6f 6e 74 72 6f 6c 2e 0a 2a 2a 0a 2a 2a  e-control..**.**
13290 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
132a0 4e 54 4c 5f 5a 49 50 56 46 53 5d 5d 0a 2a 2a 20  NTL_ZIPVFS]].** 
132b0 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
132c0 4c 5f 5a 49 50 56 46 53 5d 20 6f 70 63 6f 64 65  L_ZIPVFS] opcode
132d0 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
132e0 62 79 20 7a 69 70 76 66 73 20 6f 6e 6c 79 2e 20  by zipvfs only. 
132f0 41 6c 6c 20 6f 74 68 65 72 0a 2a 2a 20 56 46 53  All other.** VFS
13300 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 53   should return S
13310 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 66  QLITE_NOTFOUND f
13320 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65 2e 0a  or this opcode..
13330 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
13340 54 45 5f 46 43 4e 54 4c 5f 52 42 55 5d 5d 0a 2a  TE_FCNTL_RBU]].*
13350 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
13360 4e 54 4c 5f 52 42 55 5d 20 6f 70 63 6f 64 65 20  NTL_RBU] opcode 
13370 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
13380 79 20 74 68 65 20 73 70 65 63 69 61 6c 20 56 46  y the special VF
13390 53 20 75 73 65 64 20 62 79 0a 2a 2a 20 74 68 65  S used by.** the
133a0 20 52 42 55 20 65 78 74 65 6e 73 69 6f 6e 20 6f   RBU extension o
133b0 6e 6c 79 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20  nly.  All other 
133c0 56 46 53 20 73 68 6f 75 6c 64 20 72 65 74 75 72  VFS should retur
133d0 6e 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e  n SQLITE_NOTFOUN
133e0 44 20 66 6f 72 0a 2a 2a 20 74 68 69 73 20 6f 70  D for.** this op
133f0 63 6f 64 65 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c  code.  .**.** <l
13400 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
13410 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52  _BEGIN_ATOMIC_WR
13420 49 54 45 5d 5d 0a 2a 2a 20 49 66 20 74 68 65 20  ITE]].** If the 
13430 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45  [SQLITE_FCNTL_BE
13440 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  GIN_ATOMIC_WRITE
13450 5d 20 6f 70 63 6f 64 65 20 72 65 74 75 72 6e 73  ] opcode returns
13460 20 53 51 4c 49 54 45 5f 4f 4b 2c 20 74 68 65 6e   SQLITE_OK, then
13470 0a 2a 2a 20 74 68 65 20 66 69 6c 65 20 64 65 73  .** the file des
13480 63 72 69 70 74 6f 72 20 69 73 20 70 6c 61 63 65  criptor is place
13490 64 20 69 6e 20 22 62 61 74 63 68 20 77 72 69 74  d in "batch writ
134a0 65 20 6d 6f 64 65 22 2c 20 77 68 69 63 68 0a 2a  e mode", which.*
134b0 2a 20 6d 65 61 6e 73 20 61 6c 6c 20 73 75 62 73  * means all subs
134c0 65 71 75 65 6e 74 20 77 72 69 74 65 20 6f 70 65  equent write ope
134d0 72 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20  rations will be 
134e0 64 65 66 65 72 72 65 64 20 61 6e 64 20 64 6f 6e  deferred and don
134f0 65 0a 2a 2a 20 61 74 6f 6d 69 63 61 6c 6c 79 20  e.** atomically 
13500 61 74 20 74 68 65 20 6e 65 78 74 20 5b 53 51 4c  at the next [SQL
13510 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54  ITE_FCNTL_COMMIT
13520 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 20  _ATOMIC_WRITE]. 
13530 20 53 79 73 74 65 6d 73 0a 2a 2a 20 74 68 61 74   Systems.** that
13540 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20   do not support 
13550 62 61 74 63 68 20 61 74 6f 6d 69 63 20 77 72 69  batch atomic wri
13560 74 65 73 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  tes will return 
13570 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 2e  SQLITE_NOTFOUND.
13580 0a 2a 2a 20 5e 46 6f 6c 6c 6f 77 69 6e 67 20 61  .** ^Following a
13590 20 73 75 63 63 65 73 73 66 75 6c 20 53 51 4c 49   successful SQLI
135a0 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41  TE_FCNTL_BEGIN_A
135b0 54 4f 4d 49 43 5f 57 52 49 54 45 20 61 6e 64 20  TOMIC_WRITE and 
135c0 70 72 69 6f 72 20 74 6f 0a 2a 2a 20 74 68 65 20  prior to.** the 
135d0 63 6c 6f 73 69 6e 67 20 5b 53 51 4c 49 54 45 5f  closing [SQLITE_
135e0 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
135f0 4d 49 43 5f 57 52 49 54 45 5d 20 6f 72 0a 2a 2a  MIC_WRITE] or.**
13600 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52   [SQLITE_FCNTL_R
13610 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57  OLLBACK_ATOMIC_W
13620 52 49 54 45 5d 2c 20 53 51 4c 69 74 65 20 77 69  RITE], SQLite wi
13630 6c 6c 20 6d 61 6b 65 0a 2a 2a 20 6e 6f 20 56 46  ll make.** no VF
13640 53 20 69 6e 74 65 72 66 61 63 65 20 63 61 6c 6c  S interface call
13650 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b 73  s on the same [s
13660 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 66 69 6c  qlite3_file] fil
13670 65 20 64 65 73 63 72 69 70 74 6f 72 0a 2a 2a 20  e descriptor.** 
13680 65 78 63 65 70 74 20 66 6f 72 20 63 61 6c 6c 73  except for calls
13690 20 74 6f 20 74 68 65 20 78 57 72 69 74 65 20 6d   to the xWrite m
136a0 65 74 68 6f 64 20 61 6e 64 20 74 68 65 20 78 46  ethod and the xF
136b0 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f  ileControl metho
136c0 64 0a 2a 2a 20 77 69 74 68 20 5b 53 51 4c 49 54  d.** with [SQLIT
136d0 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e  E_FCNTL_SIZE_HIN
136e0 54 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  T]..**.** <li>[[
136f0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d  SQLITE_FCNTL_COM
13700 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  MIT_ATOMIC_WRITE
13710 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  ]].** The [SQLIT
13720 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41  E_FCNTL_COMMIT_A
13730 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70 63  TOMIC_WRITE] opc
13740 6f 64 65 20 63 61 75 73 65 73 20 61 6c 6c 20 77  ode causes all w
13750 72 69 74 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f  rite.** operatio
13760 6e 73 20 73 69 6e 63 65 20 74 68 65 20 70 72 65  ns since the pre
13770 76 69 6f 75 73 20 73 75 63 63 65 73 73 66 75 6c  vious successful
13780 20 63 61 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51   call to .** [SQ
13790 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e  LITE_FCNTL_BEGIN
137a0 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74  _ATOMIC_WRITE] t
137b0 6f 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20 61  o be performed a
137c0 74 6f 6d 69 63 61 6c 6c 79 2e 0a 2a 2a 20 54 68  tomically..** Th
137d0 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  is file control 
137e0 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
137f0 4f 4b 5d 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  OK] if and only 
13800 69 66 20 74 68 65 20 77 72 69 74 65 73 20 77 65  if the writes we
13810 72 65 0a 2a 2a 20 61 6c 6c 20 70 65 72 66 6f 72  re.** all perfor
13820 6d 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  med successfully
13830 20 61 6e 64 20 68 61 76 65 20 62 65 65 6e 20 63   and have been c
13840 6f 6d 6d 69 74 74 65 64 20 74 6f 20 70 65 72 73  ommitted to pers
13850 69 73 74 65 6e 74 20 73 74 6f 72 61 67 65 2e 0a  istent storage..
13860 2a 2a 20 5e 52 65 67 61 72 64 6c 65 73 73 20 6f  ** ^Regardless o
13870 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  f whether or not
13880 20 69 74 20 69 73 20 73 75 63 63 65 73 73 66 75   it is successfu
13890 6c 2c 20 74 68 69 73 20 66 69 6c 65 20 63 6f 6e  l, this file con
138a0 74 72 6f 6c 20 74 61 6b 65 73 0a 2a 2a 20 74 68  trol takes.** th
138b0 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  e file descripto
138c0 72 20 6f 75 74 20 6f 66 20 62 61 74 63 68 20 77  r out of batch w
138d0 72 69 74 65 20 6d 6f 64 65 20 73 6f 20 74 68 61  rite mode so tha
138e0 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e 74  t all subsequent
138f0 0a 2a 2a 20 77 72 69 74 65 20 6f 70 65 72 61 74  .** write operat
13900 69 6f 6e 73 20 61 72 65 20 69 6e 64 65 70 65 6e  ions are indepen
13910 64 65 6e 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65  dent..** ^SQLite
13920 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f   will never invo
13930 6b 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ke SQLITE_FCNTL_
13940 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52  COMMIT_ATOMIC_WR
13950 49 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61  ITE without.** a
13960 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75   prior successfu
13970 6c 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54  l call to [SQLIT
13980 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
13990 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a  OMIC_WRITE]..**.
139a0 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
139b0 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41  FCNTL_ROLLBACK_A
139c0 54 4f 4d 49 43 5f 57 52 49 54 45 5d 5d 0a 2a 2a  TOMIC_WRITE]].**
139d0 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   The [SQLITE_FCN
139e0 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d  TL_ROLLBACK_ATOM
139f0 49 43 5f 57 52 49 54 45 5d 20 6f 70 63 6f 64 65  IC_WRITE] opcode
13a00 20 63 61 75 73 65 73 20 61 6c 6c 20 77 72 69 74   causes all writ
13a10 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 73 20  e.** operations 
13a20 73 69 6e 63 65 20 74 68 65 20 70 72 65 76 69 6f  since the previo
13a30 75 73 20 73 75 63 63 65 73 73 66 75 6c 20 63 61  us successful ca
13a40 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51 4c 49 54  ll to .** [SQLIT
13a50 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
13a60 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74 6f 20 62  OMIC_WRITE] to b
13a70 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a  e rolled back..*
13a80 2a 20 5e 54 68 69 73 20 66 69 6c 65 20 63 6f 6e  * ^This file con
13a90 74 72 6f 6c 20 74 61 6b 65 73 20 74 68 65 20 66  trol takes the f
13aa0 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 6f  ile descriptor o
13ab0 75 74 20 6f 66 20 62 61 74 63 68 20 77 72 69 74  ut of batch writ
13ac0 65 20 6d 6f 64 65 0a 2a 2a 20 73 6f 20 74 68 61  e mode.** so tha
13ad0 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e 74  t all subsequent
13ae0 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
13af0 73 20 61 72 65 20 69 6e 64 65 70 65 6e 64 65 6e  s are independen
13b00 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69  t..** ^SQLite wi
13b10 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20  ll never invoke 
13b20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c  SQLITE_FCNTL_ROL
13b30 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52 49  LBACK_ATOMIC_WRI
13b40 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61 20  TE without.** a 
13b50 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75 6c  prior successful
13b60 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54 45   call to [SQLITE
13b70 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f  _FCNTL_BEGIN_ATO
13b80 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a 2a  MIC_WRITE]..**.*
13b90 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13ba0 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49 4d 45 4f 55  CNTL_LOCK_TIMEOU
13bb0 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  T]].** The [SQLI
13bc0 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49  TE_FCNTL_LOCK_TI
13bd0 4d 45 4f 55 54 5d 20 6f 70 63 6f 64 65 20 63 61  MEOUT] opcode ca
13be0 75 73 65 73 20 61 74 74 65 6d 70 74 73 20 74 6f  uses attempts to
13bf0 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 20 66 69 6c   obtain.** a fil
13c00 65 20 6c 6f 63 6b 20 75 73 69 6e 67 20 74 68 65  e lock using the
13c10 20 78 4c 6f 63 6b 20 6f 72 20 78 53 68 6d 4c 6f   xLock or xShmLo
13c20 63 6b 20 6d 65 74 68 6f 64 73 20 6f 66 20 74 68  ck methods of th
13c30 65 20 56 46 53 20 74 6f 20 77 61 69 74 0a 2a 2a  e VFS to wait.**
13c40 20 66 6f 72 20 75 70 20 74 6f 20 4d 20 6d 69 6c   for up to M mil
13c50 6c 69 73 65 63 6f 6e 64 73 20 62 65 66 6f 72 65  liseconds before
13c60 20 66 61 69 6c 69 6e 67 2c 20 77 68 65 72 65 20   failing, where 
13c70 4d 20 69 73 20 74 68 65 20 73 69 6e 67 6c 65 20  M is the single 
13c80 0a 2a 2a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74  .** unsigned int
13c90 65 67 65 72 20 70 61 72 61 6d 65 74 65 72 2e 0a  eger parameter..
13ca0 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 23 64 65 66  ** </ul>.*/.#def
13cb0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
13cc0 5f 4c 4f 43 4b 53 54 41 54 45 20 20 20 20 20 20  _LOCKSTATE      
13cd0 20 20 20 20 20 20 20 20 20 31 0a 23 64 65 66 69           1.#defi
13ce0 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
13cf0 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c  GET_LOCKPROXYFIL
13d00 45 20 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e  E       2.#defin
13d10 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53  e SQLITE_FCNTL_S
13d20 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
13d30 20 20 20 20 20 20 20 33 0a 23 64 65 66 69 6e 65         3.#define
13d40 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41   SQLITE_FCNTL_LA
13d50 53 54 5f 45 52 52 4e 4f 20 20 20 20 20 20 20 20  ST_ERRNO        
13d60 20 20 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20        4.#define 
13d70 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a  SQLITE_FCNTL_SIZ
13d80 45 5f 48 49 4e 54 20 20 20 20 20 20 20 20 20 20  E_HINT          
13d90 20 20 20 20 20 35 0a 23 64 65 66 69 6e 65 20 53       5.#define S
13da0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e  QLITE_FCNTL_CHUN
13db0 4b 5f 53 49 5a 45 20 20 20 20 20 20 20 20 20 20  K_SIZE          
13dc0 20 20 20 20 36 0a 23 64 65 66 69 6e 65 20 53 51      6.#define SQ
13dd0 4c 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f  LITE_FCNTL_FILE_
13de0 50 4f 49 4e 54 45 52 20 20 20 20 20 20 20 20 20  POINTER         
13df0 20 20 20 37 0a 23 64 65 66 69 6e 65 20 53 51 4c     7.#define SQL
13e00 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 5f 4f  ITE_FCNTL_SYNC_O
13e10 4d 49 54 54 45 44 20 20 20 20 20 20 20 20 20 20  MITTED          
13e20 20 20 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    8.#define SQLI
13e30 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41  TE_FCNTL_WIN32_A
13e40 56 5f 52 45 54 52 59 20 20 20 20 20 20 20 20 20  V_RETRY         
13e50 20 39 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   9.#define SQLIT
13e60 45 5f 46 43 4e 54 4c 5f 50 45 52 53 49 53 54 5f  E_FCNTL_PERSIST_
13e70 57 41 4c 20 20 20 20 20 20 20 20 20 20 20 20 31  WAL            1
13e80 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
13e90 5f 46 43 4e 54 4c 5f 4f 56 45 52 57 52 49 54 45  _FCNTL_OVERWRITE
13ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 31                11
13eb0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
13ec0 46 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 20 20 20  FCNTL_VFSNAME   
13ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 31 32 0a               12.
13ee0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
13ef0 43 4e 54 4c 5f 50 4f 57 45 52 53 41 46 45 5f 4f  CNTL_POWERSAFE_O
13f00 56 45 52 57 52 49 54 45 20 20 20 20 31 33 0a 23  VERWRITE    13.#
13f10 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
13f20 4e 54 4c 5f 50 52 41 47 4d 41 20 20 20 20 20 20  NTL_PRAGMA      
13f30 20 20 20 20 20 20 20 20 20 20 20 31 34 0a 23 64             14.#d
13f40 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
13f50 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52 20 20  TL_BUSYHANDLER  
13f60 20 20 20 20 20 20 20 20 20 20 31 35 0a 23 64 65            15.#de
13f70 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
13f80 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 20 20  L_TEMPFILENAME  
13f90 20 20 20 20 20 20 20 20 20 31 36 0a 23 64 65 66           16.#def
13fa0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
13fb0 5f 4d 4d 41 50 5f 53 49 5a 45 20 20 20 20 20 20  _MMAP_SIZE      
13fc0 20 20 20 20 20 20 20 20 31 38 0a 23 64 65 66 69          18.#defi
13fd0 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
13fe0 54 52 41 43 45 20 20 20 20 20 20 20 20 20 20 20  TRACE           
13ff0 20 20 20 20 20 20 20 31 39 0a 23 64 65 66 69 6e         19.#defin
14000 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 48  e SQLITE_FCNTL_H
14010 41 53 5f 4d 4f 56 45 44 20 20 20 20 20 20 20 20  AS_MOVED        
14020 20 20 20 20 20 20 32 30 0a 23 64 65 66 69 6e 65        20.#define
14030 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59   SQLITE_FCNTL_SY
14040 4e 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20  NC              
14050 20 20 20 20 20 32 31 0a 23 64 65 66 69 6e 65 20       21.#define 
14060 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d  SQLITE_FCNTL_COM
14070 4d 49 54 5f 50 48 41 53 45 54 57 4f 20 20 20 20  MIT_PHASETWO    
14080 20 20 20 20 32 32 0a 23 64 65 66 69 6e 65 20 53      22.#define S
14090 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33  QLITE_FCNTL_WIN3
140a0 32 5f 53 45 54 5f 48 41 4e 44 4c 45 20 20 20 20  2_SET_HANDLE    
140b0 20 20 20 32 33 0a 23 64 65 66 69 6e 65 20 53 51     23.#define SQ
140c0 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42  LITE_FCNTL_WAL_B
140d0 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20  LOCK            
140e0 20 20 32 34 0a 23 64 65 66 69 6e 65 20 53 51 4c    24.#define SQL
140f0 49 54 45 5f 46 43 4e 54 4c 5f 5a 49 50 56 46 53  ITE_FCNTL_ZIPVFS
14100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14110 20 32 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   25.#define SQLI
14120 54 45 5f 46 43 4e 54 4c 5f 52 42 55 20 20 20 20  TE_FCNTL_RBU    
14130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14140 32 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  26.#define SQLIT
14150 45 5f 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e  E_FCNTL_VFS_POIN
14160 54 45 52 20 20 20 20 20 20 20 20 20 20 20 20 32  TER            2
14170 37 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  7.#define SQLITE
14180 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50  _FCNTL_JOURNAL_P
14190 4f 49 4e 54 45 52 20 20 20 20 20 20 20 20 32 38  OINTER        28
141a0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
141b0 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f  FCNTL_WIN32_GET_
141c0 48 41 4e 44 4c 45 20 20 20 20 20 20 20 32 39 0a  HANDLE       29.
141d0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
141e0 43 4e 54 4c 5f 50 44 42 20 20 20 20 20 20 20 20  CNTL_PDB        
141f0 20 20 20 20 20 20 20 20 20 20 20 20 33 30 0a 23              30.#
14200 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14210 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43  NTL_BEGIN_ATOMIC
14220 5f 57 52 49 54 45 20 20 20 20 20 33 31 0a 23 64  _WRITE     31.#d
14230 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14240 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43  TL_COMMIT_ATOMIC
14250 5f 57 52 49 54 45 20 20 20 20 33 32 0a 23 64 65  _WRITE    32.#de
14260 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
14270 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49  L_ROLLBACK_ATOMI
14280 43 5f 57 52 49 54 45 20 20 33 33 0a 23 64 65 66  C_WRITE  33.#def
14290 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
142a0 5f 4c 4f 43 4b 5f 54 49 4d 45 4f 55 54 20 20 20  _LOCK_TIMEOUT   
142b0 20 20 20 20 20 20 20 20 33 34 0a 0a 2f 2a 20 64          34../* d
142c0 65 70 72 65 63 61 74 65 64 20 6e 61 6d 65 73 20  eprecated names 
142d0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
142e0 45 5f 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46  E_GET_LOCKPROXYF
142f0 49 4c 45 20 20 20 20 20 20 53 51 4c 49 54 45 5f  ILE      SQLITE_
14300 46 43 4e 54 4c 5f 47 45 54 5f 4c 4f 43 4b 50 52  FCNTL_GET_LOCKPR
14310 4f 58 59 46 49 4c 45 0a 23 64 65 66 69 6e 65 20  OXYFILE.#define 
14320 53 51 4c 49 54 45 5f 53 45 54 5f 4c 4f 43 4b 50  SQLITE_SET_LOCKP
14330 52 4f 58 59 46 49 4c 45 20 20 20 20 20 20 53 51  ROXYFILE      SQ
14340 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 45 54 5f 4c  LITE_FCNTL_SET_L
14350 4f 43 4b 50 52 4f 58 59 46 49 4c 45 0a 23 64 65  OCKPROXYFILE.#de
14360 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 41 53 54  fine SQLITE_LAST
14370 5f 45 52 52 4e 4f 20 20 20 20 20 20 20 20 20 20  _ERRNO          
14380 20 20 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f     SQLITE_FCNTL_
14390 4c 41 53 54 5f 45 52 52 4e 4f 0a 0a 0a 2f 2a 0a  LAST_ERRNO.../*.
143a0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 75 74  ** CAPI3REF: Mut
143b0 65 78 20 48 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20  ex Handle.**.** 
143c0 54 68 65 20 6d 75 74 65 78 20 6d 6f 64 75 6c 65  The mutex module
143d0 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65 20 64   within SQLite d
143e0 65 66 69 6e 65 73 20 5b 73 71 6c 69 74 65 33 5f  efines [sqlite3_
143f0 6d 75 74 65 78 5d 20 74 6f 20 62 65 20 61 6e 0a  mutex] to be an.
14400 2a 2a 20 61 62 73 74 72 61 63 74 20 74 79 70 65  ** abstract type
14410 20 66 6f 72 20 61 20 6d 75 74 65 78 20 6f 62 6a   for a mutex obj
14420 65 63 74 2e 20 20 54 68 65 20 53 51 4c 69 74 65  ect.  The SQLite
14430 20 63 6f 72 65 20 6e 65 76 65 72 20 6c 6f 6f 6b   core never look
14440 73 0a 2a 2a 20 61 74 20 74 68 65 20 69 6e 74 65  s.** at the inte
14450 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74  rnal representat
14460 69 6f 6e 20 6f 66 20 61 6e 20 5b 73 71 6c 69 74  ion of an [sqlit
14470 65 33 5f 6d 75 74 65 78 5d 2e 20 20 49 74 20 6f  e3_mutex].  It o
14480 6e 6c 79 0a 2a 2a 20 64 65 61 6c 73 20 77 69 74  nly.** deals wit
14490 68 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 74 68  h pointers to th
144a0 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  e [sqlite3_mutex
144b0 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20  ] object..**.** 
144c0 4d 75 74 65 78 65 73 20 61 72 65 20 63 72 65 61  Mutexes are crea
144d0 74 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  ted using [sqlit
144e0 65 33 5f 6d 75 74 65 78 5f 61 6c 6c 6f 63 28 29  e3_mutex_alloc()
144f0 5d 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74  ]..*/.typedef st
14500 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 75 74  ruct sqlite3_mut
14510 65 78 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  ex sqlite3_mutex
14520 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
14530 46 3a 20 4c 6f 61 64 61 62 6c 65 20 45 78 74 65  F: Loadable Exte
14540 6e 73 69 6f 6e 20 54 68 75 6e 6b 0a 2a 2a 0a 2a  nsion Thunk.**.*
14550 2a 20 41 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  * A pointer to t
14560 68 65 20 6f 70 61 71 75 65 20 73 71 6c 69 74 65  he opaque sqlite
14570 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 20 73  3_api_routines s
14580 74 72 75 63 74 75 72 65 20 69 73 20 70 61 73 73  tructure is pass
14590 65 64 20 61 73 0a 2a 2a 20 74 68 65 20 74 68 69  ed as.** the thi
145a0 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  rd parameter to 
145b0 65 6e 74 72 79 20 70 6f 69 6e 74 73 20 6f 66 20  entry points of 
145c0 5b 6c 6f 61 64 61 62 6c 65 20 65 78 74 65 6e 73  [loadable extens
145d0 69 6f 6e 73 5d 2e 20 20 54 68 69 73 0a 2a 2a 20  ions].  This.** 
145e0 73 74 72 75 63 74 75 72 65 20 6d 75 73 74 20 62  structure must b
145f0 65 20 74 79 70 65 64 65 66 65 64 20 69 6e 20 6f  e typedefed in o
14600 72 64 65 72 20 74 6f 20 77 6f 72 6b 20 61 72 6f  rder to work aro
14610 75 6e 64 20 63 6f 6d 70 69 6c 65 72 20 77 61 72  und compiler war
14620 6e 69 6e 67 73 0a 2a 2a 20 6f 6e 20 73 6f 6d 65  nings.** on some
14630 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 2a 2f 0a 74   platforms..*/.t
14640 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71  ypedef struct sq
14650 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74 69 6e  lite3_api_routin
14660 65 73 20 73 71 6c 69 74 65 33 5f 61 70 69 5f 72  es sqlite3_api_r
14670 6f 75 74 69 6e 65 73 3b 0a 0a 2f 2a 0a 2a 2a 20  outines;../*.** 
14680 43 41 50 49 33 52 45 46 3a 20 4f 53 20 49 6e 74  CAPI3REF: OS Int
14690 65 72 66 61 63 65 20 4f 62 6a 65 63 74 0a 2a 2a  erface Object.**
146a0 0a 2a 2a 20 41 6e 20 69 6e 73 74 61 6e 63 65 20  .** An instance 
146b0 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  of the sqlite3_v
146c0 66 73 20 6f 62 6a 65 63 74 20 64 65 66 69 6e 65  fs object define
146d0 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20  s the interface 
146e0 62 65 74 77 65 65 6e 0a 2a 2a 20 74 68 65 20 53  between.** the S
146f0 51 4c 69 74 65 20 63 6f 72 65 20 61 6e 64 20 74  QLite core and t
14700 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70  he underlying op
14710 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 20  erating system. 
14720 20 54 68 65 20 22 76 66 73 22 0a 2a 2a 20 69 6e   The "vfs".** in
14730 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
14740 20 6f 62 6a 65 63 74 20 73 74 61 6e 64 73 20 66   object stands f
14750 6f 72 20 22 76 69 72 74 75 61 6c 20 66 69 6c 65  or "virtual file
14760 20 73 79 73 74 65 6d 22 2e 20 20 53 65 65 0a 2a   system".  See.*
14770 2a 20 74 68 65 20 5b 56 46 53 20 7c 20 56 46 53  * the [VFS | VFS
14780 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 5d 20   documentation] 
14790 66 6f 72 20 66 75 72 74 68 65 72 20 69 6e 66 6f  for further info
147a0 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 54  rmation..**.** T
147b0 68 65 20 56 46 53 20 69 6e 74 65 72 66 61 63 65  he VFS interface
147c0 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 65 78   is sometimes ex
147d0 74 65 6e 64 65 64 20 62 79 20 61 64 64 69 6e 67  tended by adding
147e0 20 6e 65 77 20 6d 65 74 68 6f 64 73 20 6f 6e 74   new methods ont
147f0 6f 0a 2a 2a 20 74 68 65 20 65 6e 64 2e 20 20 45  o.** the end.  E
14800 61 63 68 20 74 69 6d 65 20 73 75 63 68 20 61 6e  ach time such an
14810 20 65 78 74 65 6e 73 69 6f 6e 20 6f 63 63 75 72   extension occur
14820 73 2c 20 74 68 65 20 69 56 65 72 73 69 6f 6e 20  s, the iVersion 
14830 66 69 65 6c 64 0a 2a 2a 20 69 73 20 69 6e 63 72  field.** is incr
14840 65 6d 65 6e 74 65 64 2e 20 20 54 68 65 20 69 56  emented.  The iV
14850 65 72 73 69 6f 6e 20 76 61 6c 75 65 20 73 74 61  ersion value sta
14860 72 74 65 64 20 6f 75 74 20 61 73 20 31 20 69 6e  rted out as 1 in
14870 0a 2a 2a 20 53 51 4c 69 74 65 20 5b 76 65 72 73  .** SQLite [vers
14880 69 6f 6e 20 33 2e 35 2e 30 5d 20 6f 6e 20 5b 64  ion 3.5.0] on [d
14890 61 74 65 6f 66 3a 33 2e 35 2e 30 5d 2c 20 74 68  ateof:3.5.0], th
148a0 65 6e 20 69 6e 63 72 65 61 73 65 64 20 74 6f 20  en increased to 
148b0 32 0a 2a 2a 20 77 69 74 68 20 53 51 4c 69 74 65  2.** with SQLite
148c0 20 5b 76 65 72 73 69 6f 6e 20 33 2e 37 2e 30 5d   [version 3.7.0]
148d0 20 6f 6e 20 5b 64 61 74 65 6f 66 3a 33 2e 37 2e   on [dateof:3.7.
148e0 30 5d 2c 20 61 6e 64 20 74 68 65 6e 20 69 6e 63  0], and then inc
148f0 72 65 61 73 65 64 0a 2a 2a 20 74 6f 20 33 20 77  reased.** to 3 w
14900 69 74 68 20 53 51 4c 69 74 65 20 5b 76 65 72 73  ith SQLite [vers
14910 69 6f 6e 20 33 2e 37 2e 36 5d 20 6f 6e 20 5b 64  ion 3.7.6] on [d
14920 61 74 65 6f 66 3a 33 2e 37 2e 36 5d 2e 20 20 41  ateof:3.7.6].  A
14930 64 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c 64 73  dditional fields
14940 0a 2a 2a 20 6d 61 79 20 62 65 20 61 70 70 65 6e  .** may be appen
14950 64 65 64 20 74 6f 20 74 68 65 20 73 71 6c 69 74  ded to the sqlit
14960 65 33 5f 76 66 73 20 6f 62 6a 65 63 74 20 61 6e  e3_vfs object an
14970 64 20 74 68 65 20 69 56 65 72 73 69 6f 6e 20 76  d the iVersion v
14980 61 6c 75 65 0a 2a 2a 20 6d 61 79 20 69 6e 63 72  alue.** may incr
14990 65 61 73 65 20 61 67 61 69 6e 20 69 6e 20 66 75  ease again in fu
149a0 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
149b0 20 53 51 4c 69 74 65 2e 0a 2a 2a 20 4e 6f 74 65   SQLite..** Note
149c0 20 74 68 61 74 20 74 68 65 20 73 74 72 75 63 74   that the struct
149d0 75 72 65 0a 2a 2a 20 6f 66 20 74 68 65 20 73 71  ure.** of the sq
149e0 6c 69 74 65 33 5f 76 66 73 20 6f 62 6a 65 63 74  lite3_vfs object
149f0 20 63 68 61 6e 67 65 73 20 69 6e 20 74 68 65 20   changes in the 
14a00 74 72 61 6e 73 69 74 69 6f 6e 20 66 72 6f 6d 0a  transition from.
14a10 2a 2a 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69  ** SQLite [versi
14a20 6f 6e 20 33 2e 35 2e 39 5d 20 74 6f 20 5b 76 65  on 3.5.9] to [ve
14a30 72 73 69 6f 6e 20 33 2e 36 2e 30 5d 20 6f 6e 20  rsion 3.6.0] on 
14a40 5b 64 61 74 65 6f 66 3a 33 2e 36 2e 30 5d 0a 2a  [dateof:3.6.0].*
14a50 2a 20 61 6e 64 20 79 65 74 20 74 68 65 20 69 56  * and yet the iV
14a60 65 72 73 69 6f 6e 20 66 69 65 6c 64 20 77 61 73  ersion field was
14a70 20 6e 6f 74 20 6d 6f 64 69 66 69 65 64 2e 0a 2a   not modified..*
14a80 2a 0a 2a 2a 20 54 68 65 20 73 7a 4f 73 46 69 6c  *.** The szOsFil
14a90 65 20 66 69 65 6c 64 20 69 73 20 74 68 65 20 73  e field is the s
14aa0 69 7a 65 20 6f 66 20 74 68 65 20 73 75 62 63 6c  ize of the subcl
14ab0 61 73 73 65 64 20 5b 73 71 6c 69 74 65 33 5f 66  assed [sqlite3_f
14ac0 69 6c 65 5d 0a 2a 2a 20 73 74 72 75 63 74 75 72  ile].** structur
14ad0 65 20 75 73 65 64 20 62 79 20 74 68 69 73 20 56  e used by this V
14ae0 46 53 2e 20 20 6d 78 50 61 74 68 6e 61 6d 65 20  FS.  mxPathname 
14af0 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6c  is the maximum l
14b00 65 6e 67 74 68 20 6f 66 0a 2a 2a 20 61 20 70 61  ength of.** a pa
14b10 74 68 6e 61 6d 65 20 69 6e 20 74 68 69 73 20 56  thname in this V
14b20 46 53 2e 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73 74  FS..**.** Regist
14b30 65 72 65 64 20 73 71 6c 69 74 65 33 5f 76 66 73  ered sqlite3_vfs
14b40 20 6f 62 6a 65 63 74 73 20 61 72 65 20 6b 65 70   objects are kep
14b50 74 20 6f 6e 20 61 20 6c 69 6e 6b 65 64 20 6c 69  t on a linked li
14b60 73 74 20 66 6f 72 6d 65 64 20 62 79 0a 2a 2a 20  st formed by.** 
14b70 74 68 65 20 70 4e 65 78 74 20 70 6f 69 6e 74 65  the pNext pointe
14b80 72 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33  r.  The [sqlite3
14b90 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29 5d  _vfs_register()]
14ba0 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  .** and [sqlite3
14bb0 5f 76 66 73 5f 75 6e 72 65 67 69 73 74 65 72 28  _vfs_unregister(
14bc0 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20 6d 61  )] interfaces ma
14bd0 6e 61 67 65 20 74 68 69 73 20 6c 69 73 74 0a 2a  nage this list.*
14be0 2a 20 69 6e 20 61 20 74 68 72 65 61 64 2d 73 61  * in a thread-sa
14bf0 66 65 20 77 61 79 2e 20 20 54 68 65 20 5b 73 71  fe way.  The [sq
14c00 6c 69 74 65 33 5f 76 66 73 5f 66 69 6e 64 28 29  lite3_vfs_find()
14c10 5d 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 73  ] interface.** s
14c20 65 61 72 63 68 65 73 20 74 68 65 20 6c 69 73 74  earches the list
14c30 2e 20 20 4e 65 69 74 68 65 72 20 74 68 65 20 61  .  Neither the a
14c40 70 70 6c 69 63 61 74 69 6f 6e 20 63 6f 64 65 20  pplication code 
14c50 6e 6f 72 20 74 68 65 20 56 46 53 0a 2a 2a 20 69  nor the VFS.** i
14c60 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 68  mplementation sh
14c70 6f 75 6c 64 20 75 73 65 20 74 68 65 20 70 4e 65  ould use the pNe
14c80 78 74 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a  xt pointer..**.*
14c90 2a 20 54 68 65 20 70 4e 65 78 74 20 66 69 65 6c  * The pNext fiel
14ca0 64 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 66 69  d is the only fi
14cb0 65 6c 64 20 69 6e 20 74 68 65 20 73 71 6c 69 74  eld in the sqlit
14cc0 65 33 5f 76 66 73 0a 2a 2a 20 73 74 72 75 63 74  e3_vfs.** struct
14cd0 75 72 65 20 74 68 61 74 20 53 51 4c 69 74 65 20  ure that SQLite 
14ce0 77 69 6c 6c 20 65 76 65 72 20 6d 6f 64 69 66 79  will ever modify
14cf0 2e 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6f  .  SQLite will o
14d00 6e 6c 79 20 61 63 63 65 73 73 0a 2a 2a 20 6f 72  nly access.** or
14d10 20 6d 6f 64 69 66 79 20 74 68 69 73 20 66 69 65   modify this fie
14d20 6c 64 20 77 68 69 6c 65 20 68 6f 6c 64 69 6e 67  ld while holding
14d30 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 73 74   a particular st
14d40 61 74 69 63 20 6d 75 74 65 78 2e 0a 2a 2a 20 54  atic mutex..** T
14d50 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73  he application s
14d60 68 6f 75 6c 64 20 6e 65 76 65 72 20 6d 6f 64 69  hould never modi
14d70 66 79 20 61 6e 79 74 68 69 6e 67 20 77 69 74 68  fy anything with
14d80 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  in the sqlite3_v
14d90 66 73 0a 2a 2a 20 6f 62 6a 65 63 74 20 6f 6e 63  fs.** object onc
14da0 65 20 74 68 65 20 6f 62 6a 65 63 74 20 68 61 73  e the object has
14db0 20 62 65 65 6e 20 72 65 67 69 73 74 65 72 65 64   been registered
14dc0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 7a 4e 61 6d  ..**.** The zNam
14dd0 65 20 66 69 65 6c 64 20 68 6f 6c 64 73 20 74 68  e field holds th
14de0 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 56 46  e name of the VF
14df0 53 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e  S module.  The n
14e00 61 6d 65 20 6d 75 73 74 0a 2a 2a 20 62 65 20 75  ame must.** be u
14e10 6e 69 71 75 65 20 61 63 72 6f 73 73 20 61 6c 6c  nique across all
14e20 20 56 46 53 20 6d 6f 64 75 6c 65 73 2e 0a 2a 2a   VFS modules..**
14e30 0a 2a 2a 20 5b 5b 73 71 6c 69 74 65 33 5f 76 66  .** [[sqlite3_vf
14e40 73 2e 78 4f 70 65 6e 5d 5d 0a 2a 2a 20 5e 53 51  s.xOpen]].** ^SQ
14e50 4c 69 74 65 20 67 75 61 72 61 6e 74 65 65 73 20  Lite guarantees 
14e60 74 68 61 74 20 74 68 65 20 7a 46 69 6c 65 6e 61  that the zFilena
14e70 6d 65 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  me parameter to 
14e80 78 4f 70 65 6e 0a 2a 2a 20 69 73 20 65 69 74 68  xOpen.** is eith
14e90 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  er a NULL pointe
14ea0 72 20 6f 72 20 73 74 72 69 6e 67 20 6f 62 74 61  r or string obta
14eb0 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 78 46 75  ined.** from xFu
14ec0 6c 6c 50 61 74 68 6e 61 6d 65 28 29 20 77 69 74  llPathname() wit
14ed0 68 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 73 75  h an optional su
14ee0 66 66 69 78 20 61 64 64 65 64 2e 0a 2a 2a 20 5e  ffix added..** ^
14ef0 49 66 20 61 20 73 75 66 66 69 78 20 69 73 20 61  If a suffix is a
14f00 64 64 65 64 20 74 6f 20 74 68 65 20 7a 46 69 6c  dded to the zFil
14f10 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65 72 2c  ename parameter,
14f20 20 69 74 20 77 69 6c 6c 0a 2a 2a 20 63 6f 6e 73   it will.** cons
14f30 69 73 74 20 6f 66 20 61 20 73 69 6e 67 6c 65 20  ist of a single 
14f40 22 2d 22 20 63 68 61 72 61 63 74 65 72 20 66 6f  "-" character fo
14f50 6c 6c 6f 77 65 64 20 62 79 20 6e 6f 20 6d 6f 72  llowed by no mor
14f60 65 20 74 68 61 6e 0a 2a 2a 20 31 31 20 61 6c 70  e than.** 11 alp
14f70 68 61 6e 75 6d 65 72 69 63 20 61 6e 64 2f 6f 72  hanumeric and/or
14f80 20 22 2d 22 20 63 68 61 72 61 63 74 65 72 73 2e   "-" characters.
14f90 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 66 75 72 74  .** ^SQLite furt
14fa0 68 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 74  her guarantees t
14fb0 68 61 74 0a 2a 2a 20 74 68 65 20 73 74 72 69 6e  hat.** the strin
14fc0 67 20 77 69 6c 6c 20 62 65 20 76 61 6c 69 64 20  g will be valid 
14fd0 61 6e 64 20 75 6e 63 68 61 6e 67 65 64 20 75 6e  and unchanged un
14fe0 74 69 6c 20 78 43 6c 6f 73 65 28 29 20 69 73 0a  til xClose() is.
14ff0 2a 2a 20 63 61 6c 6c 65 64 2e 20 42 65 63 61 75  ** called. Becau
15000 73 65 20 6f 66 20 74 68 65 20 70 72 65 76 69 6f  se of the previo
15010 75 73 20 73 65 6e 74 65 6e 63 65 2c 0a 2a 2a 20  us sentence,.** 
15020 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  the [sqlite3_fil
15030 65 5d 20 63 61 6e 20 73 61 66 65 6c 79 20 73 74  e] can safely st
15040 6f 72 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  ore a pointer to
15050 20 74 68 65 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65   the.** filename
15060 20 69 66 20 69 74 20 6e 65 65 64 73 20 74 6f 20   if it needs to 
15070 72 65 6d 65 6d 62 65 72 20 74 68 65 20 66 69 6c  remember the fil
15080 65 6e 61 6d 65 20 66 6f 72 20 73 6f 6d 65 20 72  ename for some r
15090 65 61 73 6f 6e 2e 0a 2a 2a 20 49 66 20 74 68 65  eason..** If the
150a0 20 7a 46 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d   zFilename param
150b0 65 74 65 72 20 74 6f 20 78 4f 70 65 6e 20 69 73  eter to xOpen is
150c0 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   a NULL pointer 
150d0 74 68 65 6e 20 78 4f 70 65 6e 0a 2a 2a 20 6d 75  then xOpen.** mu
150e0 73 74 20 69 6e 76 65 6e 74 20 69 74 73 20 6f 77  st invent its ow
150f0 6e 20 74 65 6d 70 6f 72 61 72 79 20 6e 61 6d 65  n temporary name
15100 20 66 6f 72 20 74 68 65 20 66 69 6c 65 2e 20 20   for the file.  
15110 5e 57 68 65 6e 65 76 65 72 20 74 68 65 20 0a 2a  ^Whenever the .*
15120 2a 20 78 46 69 6c 65 6e 61 6d 65 20 70 61 72 61  * xFilename para
15130 6d 65 74 65 72 20 69 73 20 4e 55 4c 4c 20 69 74  meter is NULL it
15140 20 77 69 6c 6c 20 61 6c 73 6f 20 62 65 20 74 68   will also be th
15150 65 20 63 61 73 65 20 74 68 61 74 20 74 68 65 0a  e case that the.
15160 2a 2a 20 66 6c 61 67 73 20 70 61 72 61 6d 65 74  ** flags paramet
15170 65 72 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20  er will include 
15180 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c  [SQLITE_OPEN_DEL
15190 45 54 45 4f 4e 43 4c 4f 53 45 5d 2e 0a 2a 2a 0a  ETEONCLOSE]..**.
151a0 2a 2a 20 54 68 65 20 66 6c 61 67 73 20 61 72 67  ** The flags arg
151b0 75 6d 65 6e 74 20 74 6f 20 78 4f 70 65 6e 28 29  ument to xOpen()
151c0 20 69 6e 63 6c 75 64 65 73 20 61 6c 6c 20 62 69   includes all bi
151d0 74 73 20 73 65 74 20 69 6e 0a 2a 2a 20 74 68 65  ts set in.** the
151e0 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e 74 20   flags argument 
151f0 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  to [sqlite3_open
15200 5f 76 32 28 29 5d 2e 20 20 4f 72 20 69 66 20 5b  _v2()].  Or if [
15210 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 0a  sqlite3_open()].
15220 2a 2a 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 6f  ** or [sqlite3_o
15230 70 65 6e 31 36 28 29 5d 20 69 73 20 75 73 65 64  pen16()] is used
15240 2c 20 74 68 65 6e 20 66 6c 61 67 73 20 69 6e 63  , then flags inc
15250 6c 75 64 65 73 20 61 74 20 6c 65 61 73 74 0a 2a  ludes at least.*
15260 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  * [SQLITE_OPEN_R
15270 45 41 44 57 52 49 54 45 5d 20 7c 20 5b 53 51 4c  EADWRITE] | [SQL
15280 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 5d  ITE_OPEN_CREATE]
15290 2e 20 0a 2a 2a 20 49 66 20 78 4f 70 65 6e 28 29  . .** If xOpen()
152a0 20 6f 70 65 6e 73 20 61 20 66 69 6c 65 20 72 65   opens a file re
152b0 61 64 2d 6f 6e 6c 79 20 74 68 65 6e 20 69 74 20  ad-only then it 
152c0 73 65 74 73 20 2a 70 4f 75 74 46 6c 61 67 73 20  sets *pOutFlags 
152d0 74 6f 0a 2a 2a 20 69 6e 63 6c 75 64 65 20 5b 53  to.** include [S
152e0 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f  QLITE_OPEN_READO
152f0 4e 4c 59 5d 2e 20 20 4f 74 68 65 72 20 62 69 74  NLY].  Other bit
15300 73 20 69 6e 20 2a 70 4f 75 74 46 6c 61 67 73 20  s in *pOutFlags 
15310 6d 61 79 20 62 65 20 73 65 74 2e 0a 2a 2a 0a 2a  may be set..**.*
15320 2a 20 5e 28 53 51 4c 69 74 65 20 77 69 6c 6c 20  * ^(SQLite will 
15330 61 6c 73 6f 20 61 64 64 20 6f 6e 65 20 6f 66 20  also add one of 
15340 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6c  the following fl
15350 61 67 73 20 74 6f 20 74 68 65 20 78 4f 70 65 6e  ags to the xOpen
15360 28 29 0a 2a 2a 20 63 61 6c 6c 2c 20 64 65 70 65  ().** call, depe
15370 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 6f 62 6a  nding on the obj
15380 65 63 74 20 62 65 69 6e 67 20 6f 70 65 6e 65 64  ect being opened
15390 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20  :.**.** <ul>.** 
153a0 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50  <li>  [SQLITE_OP
153b0 45 4e 5f 4d 41 49 4e 5f 44 42 5d 0a 2a 2a 20 3c  EN_MAIN_DB].** <
153c0 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
153d0 4e 5f 4d 41 49 4e 5f 4a 4f 55 52 4e 41 4c 5d 0a  N_MAIN_JOURNAL].
153e0 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45  ** <li>  [SQLITE
153f0 5f 4f 50 45 4e 5f 54 45 4d 50 5f 44 42 5d 0a 2a  _OPEN_TEMP_DB].*
15400 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f  * <li>  [SQLITE_
15410 4f 50 45 4e 5f 54 45 4d 50 5f 4a 4f 55 52 4e 41  OPEN_TEMP_JOURNA
15420 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c  L].** <li>  [SQL
15430 49 54 45 5f 4f 50 45 4e 5f 54 52 41 4e 53 49 45  ITE_OPEN_TRANSIE
15440 4e 54 5f 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20 20  NT_DB].** <li>  
15450 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 55 42  [SQLITE_OPEN_SUB
15460 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e  JOURNAL].** <li>
15470 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d    [SQLITE_OPEN_M
15480 41 53 54 45 52 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a  ASTER_JOURNAL].*
15490 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f  * <li>  [SQLITE_
154a0 4f 50 45 4e 5f 57 41 4c 5d 0a 2a 2a 20 3c 2f 75  OPEN_WAL].** </u
154b0 6c 3e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66  l>)^.**.** The f
154c0 69 6c 65 20 49 2f 4f 20 69 6d 70 6c 65 6d 65 6e  ile I/O implemen
154d0 74 61 74 69 6f 6e 20 63 61 6e 20 75 73 65 20 74  tation can use t
154e0 68 65 20 6f 62 6a 65 63 74 20 74 79 70 65 20 66  he object type f
154f0 6c 61 67 73 20 74 6f 0a 2a 2a 20 63 68 61 6e 67  lags to.** chang
15500 65 20 74 68 65 20 77 61 79 20 69 74 20 64 65 61  e the way it dea
15510 6c 73 20 77 69 74 68 20 66 69 6c 65 73 2e 20 20  ls with files.  
15520 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 61 6e 20  For example, an 
15530 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 74  application.** t
15540 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 63 61 72  hat does not car
15550 65 20 61 62 6f 75 74 20 63 72 61 73 68 20 72 65  e about crash re
15560 63 6f 76 65 72 79 20 6f 72 20 72 6f 6c 6c 62 61  covery or rollba
15570 63 6b 20 6d 69 67 68 74 20 6d 61 6b 65 0a 2a 2a  ck might make.**
15580 20 74 68 65 20 6f 70 65 6e 20 6f 66 20 61 20 6a   the open of a j
15590 6f 75 72 6e 61 6c 20 66 69 6c 65 20 61 20 6e 6f  ournal file a no
155a0 2d 6f 70 2e 20 20 57 72 69 74 65 73 20 74 6f 20  -op.  Writes to 
155b0 74 68 69 73 20 6a 6f 75 72 6e 61 6c 20 77 6f 75  this journal wou
155c0 6c 64 0a 2a 2a 20 61 6c 73 6f 20 62 65 20 6e 6f  ld.** also be no
155d0 2d 6f 70 73 2c 20 61 6e 64 20 61 6e 79 20 61 74  -ops, and any at
155e0 74 65 6d 70 74 20 74 6f 20 72 65 61 64 20 74 68  tempt to read th
155f0 65 20 6a 6f 75 72 6e 61 6c 20 77 6f 75 6c 64 20  e journal would 
15600 72 65 74 75 72 6e 0a 2a 2a 20 53 51 4c 49 54 45  return.** SQLITE
15610 5f 49 4f 45 52 52 2e 20 20 4f 72 20 74 68 65 20  _IOERR.  Or the 
15620 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d  implementation m
15630 69 67 68 74 20 72 65 63 6f 67 6e 69 7a 65 20 74  ight recognize t
15640 68 61 74 20 61 20 64 61 74 61 62 61 73 65 0a 2a  hat a database.*
15650 2a 20 66 69 6c 65 20 77 69 6c 6c 20 62 65 20 64  * file will be d
15660 6f 69 6e 67 20 70 61 67 65 2d 61 6c 69 67 6e 65  oing page-aligne
15670 64 20 73 65 63 74 6f 72 20 72 65 61 64 73 20 61  d sector reads a
15680 6e 64 20 77 72 69 74 65 73 20 69 6e 20 61 20 72  nd writes in a r
15690 61 6e 64 6f 6d 0a 2a 2a 20 6f 72 64 65 72 20 61  andom.** order a
156a0 6e 64 20 73 65 74 20 75 70 20 69 74 73 20 49 2f  nd set up its I/
156b0 4f 20 73 75 62 73 79 73 74 65 6d 20 61 63 63 6f  O subsystem acco
156c0 72 64 69 6e 67 6c 79 2e 0a 2a 2a 0a 2a 2a 20 53  rdingly..**.** S
156d0 51 4c 69 74 65 20 6d 69 67 68 74 20 61 6c 73 6f  QLite might also
156e0 20 61 64 64 20 6f 6e 65 20 6f 66 20 74 68 65 20   add one of the 
156f0 66 6f 6c 6c 6f 77 69 6e 67 20 66 6c 61 67 73 20  following flags 
15700 74 6f 20 74 68 65 20 78 4f 70 65 6e 20 6d 65 74  to the xOpen met
15710 68 6f 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  hod:.**.** <ul>.
15720 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
15730 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f  OPEN_DELETEONCLO
15740 53 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  SE].** <li> [SQL
15750 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49  ITE_OPEN_EXCLUSI
15760 56 45 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a  VE].** </ul>.**.
15770 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f  ** The [SQLITE_O
15780 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53  PEN_DELETEONCLOS
15790 45 5d 20 66 6c 61 67 20 6d 65 61 6e 73 20 74 68  E] flag means th
157a0 65 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 62 65  e file should be
157b0 0a 2a 2a 20 64 65 6c 65 74 65 64 20 77 68 65 6e  .** deleted when
157c0 20 69 74 20 69 73 20 63 6c 6f 73 65 64 2e 20 20   it is closed.  
157d0 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45  ^The [SQLITE_OPE
157e0 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d  N_DELETEONCLOSE]
157f0 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 73 65 74 20  .** will be set 
15800 66 6f 72 20 54 45 4d 50 20 64 61 74 61 62 61 73  for TEMP databas
15810 65 73 20 61 6e 64 20 74 68 65 69 72 20 6a 6f 75  es and their jou
15820 72 6e 61 6c 73 2c 20 74 72 61 6e 73 69 65 6e 74  rnals, transient
15830 0a 2a 2a 20 64 61 74 61 62 61 73 65 73 2c 20 61  .** databases, a
15840 6e 64 20 73 75 62 6a 6f 75 72 6e 61 6c 73 2e 0a  nd subjournals..
15850 2a 2a 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  **.** ^The [SQLI
15860 54 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56  TE_OPEN_EXCLUSIV
15870 45 5d 20 66 6c 61 67 20 69 73 20 61 6c 77 61 79  E] flag is alway
15880 73 20 75 73 65 64 20 69 6e 20 63 6f 6e 6a 75 6e  s used in conjun
15890 63 74 69 6f 6e 0a 2a 2a 20 77 69 74 68 20 74 68  ction.** with th
158a0 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43  e [SQLITE_OPEN_C
158b0 52 45 41 54 45 5d 20 66 6c 61 67 2c 20 77 68 69  REATE] flag, whi
158c0 63 68 20 61 72 65 20 62 6f 74 68 20 64 69 72 65  ch are both dire
158d0 63 74 6c 79 0a 2a 2a 20 61 6e 61 6c 6f 67 6f 75  ctly.** analogou
158e0 73 20 74 6f 20 74 68 65 20 4f 5f 45 58 43 4c 20  s to the O_EXCL 
158f0 61 6e 64 20 4f 5f 43 52 45 41 54 20 66 6c 61 67  and O_CREAT flag
15900 73 20 6f 66 20 74 68 65 20 50 4f 53 49 58 20 6f  s of the POSIX o
15910 70 65 6e 28 29 0a 2a 2a 20 41 50 49 2e 20 20 54  pen().** API.  T
15920 68 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 45  he SQLITE_OPEN_E
15930 58 43 4c 55 53 49 56 45 20 66 6c 61 67 2c 20 77  XCLUSIVE flag, w
15940 68 65 6e 20 70 61 69 72 65 64 20 77 69 74 68 20  hen paired with 
15950 74 68 65 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 4f  the .** SQLITE_O
15960 50 45 4e 5f 43 52 45 41 54 45 2c 20 69 73 20 75  PEN_CREATE, is u
15970 73 65 64 20 74 6f 20 69 6e 64 69 63 61 74 65 20  sed to indicate 
15980 74 68 61 74 20 66 69 6c 65 20 73 68 6f 75 6c 64  that file should
15990 20 61 6c 77 61 79 73 0a 2a 2a 20 62 65 20 63 72   always.** be cr
159a0 65 61 74 65 64 2c 20 61 6e 64 20 74 68 61 74 20  eated, and that 
159b0 69 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20 69  it is an error i
159c0 66 20 69 74 20 61 6c 72 65 61 64 79 20 65 78 69  f it already exi
159d0 73 74 73 2e 0a 2a 2a 20 49 74 20 69 73 20 3c 69  sts..** It is <i
159e0 3e 6e 6f 74 3c 2f 69 3e 20 75 73 65 64 20 74 6f  >not</i> used to
159f0 20 69 6e 64 69 63 61 74 65 20 74 68 65 20 66 69   indicate the fi
15a00 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 6f 70 65  le should be ope
15a10 6e 65 64 20 0a 2a 2a 20 66 6f 72 20 65 78 63 6c  ned .** for excl
15a20 75 73 69 76 65 20 61 63 63 65 73 73 2e 0a 2a 2a  usive access..**
15a30 0a 2a 2a 20 5e 41 74 20 6c 65 61 73 74 20 73 7a  .** ^At least sz
15a40 4f 73 46 69 6c 65 20 62 79 74 65 73 20 6f 66 20  OsFile bytes of 
15a50 6d 65 6d 6f 72 79 20 61 72 65 20 61 6c 6c 6f 63  memory are alloc
15a60 61 74 65 64 20 62 79 20 53 51 4c 69 74 65 0a 2a  ated by SQLite.*
15a70 2a 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 20 5b  * to hold the  [
15a80 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 73 74  sqlite3_file] st
15a90 72 75 63 74 75 72 65 20 70 61 73 73 65 64 20 61  ructure passed a
15aa0 73 20 74 68 65 20 74 68 69 72 64 0a 2a 2a 20 61  s the third.** a
15ab0 72 67 75 6d 65 6e 74 20 74 6f 20 78 4f 70 65 6e  rgument to xOpen
15ac0 2e 20 20 54 68 65 20 78 4f 70 65 6e 20 6d 65 74  .  The xOpen met
15ad0 68 6f 64 20 64 6f 65 73 20 6e 6f 74 20 68 61 76  hod does not hav
15ae0 65 20 74 6f 0a 2a 2a 20 61 6c 6c 6f 63 61 74 65  e to.** allocate
15af0 20 74 68 65 20 73 74 72 75 63 74 75 72 65 3b 20   the structure; 
15b00 69 74 20 73 68 6f 75 6c 64 20 6a 75 73 74 20 66  it should just f
15b10 69 6c 6c 20 69 74 20 69 6e 2e 20 20 4e 6f 74 65  ill it in.  Note
15b20 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 78 4f 70   that.** the xOp
15b30 65 6e 20 6d 65 74 68 6f 64 20 6d 75 73 74 20 73  en method must s
15b40 65 74 20 74 68 65 20 73 71 6c 69 74 65 33 5f 66  et the sqlite3_f
15b50 69 6c 65 2e 70 4d 65 74 68 6f 64 73 20 74 6f 20  ile.pMethods to 
15b60 65 69 74 68 65 72 0a 2a 2a 20 61 20 76 61 6c 69  either.** a vali
15b70 64 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  d [sqlite3_io_me
15b80 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 6f 72  thods] object or
15b90 20 74 6f 20 4e 55 4c 4c 2e 20 20 78 4f 70 65 6e   to NULL.  xOpen
15ba0 20 6d 75 73 74 20 64 6f 0a 2a 2a 20 74 68 69 73   must do.** this
15bb0 20 65 76 65 6e 20 69 66 20 74 68 65 20 6f 70 65   even if the ope
15bc0 6e 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74 65  n fails.  SQLite
15bd0 20 65 78 70 65 63 74 73 20 74 68 61 74 20 74 68   expects that th
15be0 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 2e 70  e sqlite3_file.p
15bf0 4d 65 74 68 6f 64 73 0a 2a 2a 20 65 6c 65 6d 65  Methods.** eleme
15c00 6e 74 20 77 69 6c 6c 20 62 65 20 76 61 6c 69 64  nt will be valid
15c10 20 61 66 74 65 72 20 78 4f 70 65 6e 20 72 65 74   after xOpen ret
15c20 75 72 6e 73 20 72 65 67 61 72 64 6c 65 73 73 20  urns regardless 
15c30 6f 66 20 74 68 65 20 73 75 63 63 65 73 73 0a 2a  of the success.*
15c40 2a 20 6f 72 20 66 61 69 6c 75 72 65 20 6f 66 20  * or failure of 
15c50 74 68 65 20 78 4f 70 65 6e 20 63 61 6c 6c 2e 0a  the xOpen call..
15c60 2a 2a 0a 2a 2a 20 5b 5b 73 71 6c 69 74 65 33 5f  **.** [[sqlite3_
15c70 76 66 73 2e 78 41 63 63 65 73 73 5d 5d 0a 2a 2a  vfs.xAccess]].**
15c80 20 5e 54 68 65 20 66 6c 61 67 73 20 61 72 67 75   ^The flags argu
15c90 6d 65 6e 74 20 74 6f 20 78 41 63 63 65 73 73 28  ment to xAccess(
15ca0 29 20 6d 61 79 20 62 65 20 5b 53 51 4c 49 54 45  ) may be [SQLITE
15cb0 5f 41 43 43 45 53 53 5f 45 58 49 53 54 53 5d 0a  _ACCESS_EXISTS].
15cc0 2a 2a 20 74 6f 20 74 65 73 74 20 66 6f 72 20 74  ** to test for t
15cd0 68 65 20 65 78 69 73 74 65 6e 63 65 20 6f 66 20  he existence of 
15ce0 61 20 66 69 6c 65 2c 20 6f 72 20 5b 53 51 4c 49  a file, or [SQLI
15cf0 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 57 52  TE_ACCESS_READWR
15d00 49 54 45 5d 20 74 6f 0a 2a 2a 20 74 65 73 74 20  ITE] to.** test 
15d10 77 68 65 74 68 65 72 20 61 20 66 69 6c 65 20 69  whether a file i
15d20 73 20 72 65 61 64 61 62 6c 65 20 61 6e 64 20 77  s readable and w
15d30 72 69 74 61 62 6c 65 2c 20 6f 72 20 5b 53 51 4c  ritable, or [SQL
15d40 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 5d  ITE_ACCESS_READ]
15d50 0a 2a 2a 20 74 6f 20 74 65 73 74 20 77 68 65 74  .** to test whet
15d60 68 65 72 20 61 20 66 69 6c 65 20 69 73 20 61 74  her a file is at
15d70 20 6c 65 61 73 74 20 72 65 61 64 61 62 6c 65 2e   least readable.
15d80 20 20 20 54 68 65 20 66 69 6c 65 20 63 61 6e 20     The file can 
15d90 62 65 20 61 0a 2a 2a 20 64 69 72 65 63 74 6f 72  be a.** director
15da0 79 2e 0a 2a 2a 0a 2a 2a 20 5e 53 51 4c 69 74 65  y..**.** ^SQLite
15db0 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 61 6c 6c   will always all
15dc0 6f 63 61 74 65 20 61 74 20 6c 65 61 73 74 20 6d  ocate at least m
15dd0 78 50 61 74 68 6e 61 6d 65 2b 31 20 62 79 74 65  xPathname+1 byte
15de0 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20 6f 75 74  s for the.** out
15df0 70 75 74 20 62 75 66 66 65 72 20 78 46 75 6c 6c  put buffer xFull
15e00 50 61 74 68 6e 61 6d 65 2e 20 20 54 68 65 20 65  Pathname.  The e
15e10 78 61 63 74 20 73 69 7a 65 20 6f 66 20 74 68 65  xact size of the
15e20 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 0a 2a   output buffer.*
15e30 2a 20 69 73 20 61 6c 73 6f 20 70 61 73 73 65 64  * is also passed
15e40 20 61 73 20 61 20 70 61 72 61 6d 65 74 65 72 20   as a parameter 
15e50 74 6f 20 62 6f 74 68 20 20 6d 65 74 68 6f 64 73  to both  methods
15e60 2e 20 49 66 20 74 68 65 20 6f 75 74 70 75 74 20  . If the output 
15e70 62 75 66 66 65 72 0a 2a 2a 20 69 73 20 6e 6f 74  buffer.** is not
15e80 20 6c 61 72 67 65 20 65 6e 6f 75 67 68 2c 20 5b   large enough, [
15e90 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5d  SQLITE_CANTOPEN]
15ea0 20 73 68 6f 75 6c 64 20 62 65 20 72 65 74 75 72   should be retur
15eb0 6e 65 64 2e 20 53 69 6e 63 65 20 74 68 69 73 20  ned. Since this 
15ec0 69 73 0a 2a 2a 20 68 61 6e 64 6c 65 64 20 61 73  is.** handled as
15ed0 20 61 20 66 61 74 61 6c 20 65 72 72 6f 72 20 62   a fatal error b
15ee0 79 20 53 51 4c 69 74 65 2c 20 76 66 73 20 69 6d  y SQLite, vfs im
15ef0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 73 68  plementations sh
15f00 6f 75 6c 64 20 65 6e 64 65 61 76 6f 72 0a 2a 2a  ould endeavor.**
15f10 20 74 6f 20 70 72 65 76 65 6e 74 20 74 68 69 73   to prevent this
15f20 20 62 79 20 73 65 74 74 69 6e 67 20 6d 78 50 61   by setting mxPa
15f30 74 68 6e 61 6d 65 20 74 6f 20 61 20 73 75 66 66  thname to a suff
15f40 69 63 69 65 6e 74 6c 79 20 6c 61 72 67 65 20 76  iciently large v
15f50 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  alue..**.** The 
15f60 78 52 61 6e 64 6f 6d 6e 65 73 73 28 29 2c 20 78  xRandomness(), x
15f70 53 6c 65 65 70 28 29 2c 20 78 43 75 72 72 65 6e  Sleep(), xCurren
15f80 74 54 69 6d 65 28 29 2c 20 61 6e 64 20 78 43 75  tTime(), and xCu
15f90 72 72 65 6e 74 54 69 6d 65 49 6e 74 36 34 28 29  rrentTimeInt64()
15fa0 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20 61  .** interfaces a
15fb0 72 65 20 6e 6f 74 20 73 74 72 69 63 74 6c 79 20  re not strictly 
15fc0 61 20 70 61 72 74 20 6f 66 20 74 68 65 20 66 69  a part of the fi
15fd0 6c 65 73 79 73 74 65 6d 2c 20 62 75 74 20 74 68  lesystem, but th
15fe0 65 79 20 61 72 65 0a 2a 2a 20 69 6e 63 6c 75 64  ey are.** includ
15ff0 65 64 20 69 6e 20 74 68 65 20 56 46 53 20 73 74  ed in the VFS st
16000 72 75 63 74 75 72 65 20 66 6f 72 20 63 6f 6d 70  ructure for comp
16010 6c 65 74 65 6e 65 73 73 2e 0a 2a 2a 20 54 68 65  leteness..** The
16020 20 78 52 61 6e 64 6f 6d 6e 65 73 73 28 29 20 66   xRandomness() f
16030 75 6e 63 74 69 6f 6e 20 61 74 74 65 6d 70 74 73  unction attempts
16040 20 74 6f 20 72 65 74 75 72 6e 20 6e 42 79 74 65   to return nByte
16050 73 20 62 79 74 65 73 0a 2a 2a 20 6f 66 20 67 6f  s bytes.** of go
16060 6f 64 2d 71 75 61 6c 69 74 79 20 72 61 6e 64 6f  od-quality rando
16070 6d 6e 65 73 73 20 69 6e 74 6f 20 7a 4f 75 74 2e  mness into zOut.
16080 20 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c    The return val
16090 75 65 20 69 73 0a 2a 2a 20 74 68 65 20 61 63 74  ue is.** the act
160a0 75 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  ual number of by
160b0 74 65 73 20 6f 66 20 72 61 6e 64 6f 6d 6e 65 73  tes of randomnes
160c0 73 20 6f 62 74 61 69 6e 65 64 2e 0a 2a 2a 20 54  s obtained..** T
160d0 68 65 20 78 53 6c 65 65 70 28 29 20 6d 65 74 68  he xSleep() meth
160e0 6f 64 20 63 61 75 73 65 73 20 74 68 65 20 63 61  od causes the ca
160f0 6c 6c 69 6e 67 20 74 68 72 65 61 64 20 74 6f 20  lling thread to 
16100 73 6c 65 65 70 20 66 6f 72 20 61 74 0a 2a 2a 20  sleep for at.** 
16110 6c 65 61 73 74 20 74 68 65 20 6e 75 6d 62 65 72  least the number
16120 20 6f 66 20 6d 69 63 72 6f 73 65 63 6f 6e 64 73   of microseconds
16130 20 67 69 76 65 6e 2e 20 20 5e 54 68 65 20 78 43   given.  ^The xC
16140 75 72 72 65 6e 74 54 69 6d 65 28 29 0a 2a 2a 20  urrentTime().** 
16150 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 61  method returns a
16160 20 4a 75 6c 69 61 6e 20 44 61 79 20 4e 75 6d 62   Julian Day Numb
16170 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72 65  er for the curre
16180 6e 74 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  nt date and time
16190 20 61 73 0a 2a 2a 20 61 20 66 6c 6f 61 74 69 6e   as.** a floatin
161a0 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 2a  g point value..*
161b0 2a 20 5e 54 68 65 20 78 43 75 72 72 65 6e 74 54  * ^The xCurrentT
161c0 69 6d 65 49 6e 74 36 34 28 29 20 6d 65 74 68 6f  imeInt64() metho
161d0 64 20 72 65 74 75 72 6e 73 2c 20 61 73 20 61 6e  d returns, as an
161e0 20 69 6e 74 65 67 65 72 2c 20 74 68 65 20 4a 75   integer, the Ju
161f0 6c 69 61 6e 0a 2a 2a 20 44 61 79 20 4e 75 6d 62  lian.** Day Numb
16200 65 72 20 6d 75 6c 74 69 70 6c 69 65 64 20 62 79  er multiplied by
16210 20 38 36 34 30 30 30 30 30 20 28 74 68 65 20 6e   86400000 (the n
16220 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c 69 73 65  umber of millise
16230 63 6f 6e 64 73 20 69 6e 20 0a 2a 2a 20 61 20 32  conds in .** a 2
16240 34 2d 68 6f 75 72 20 64 61 79 29 2e 20 20 0a 2a  4-hour day).  .*
16250 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c 6c 20 75  * ^SQLite will u
16260 73 65 20 74 68 65 20 78 43 75 72 72 65 6e 74 54  se the xCurrentT
16270 69 6d 65 49 6e 74 36 34 28 29 20 6d 65 74 68 6f  imeInt64() metho
16280 64 20 74 6f 20 67 65 74 20 74 68 65 20 63 75 72  d to get the cur
16290 72 65 6e 74 0a 2a 2a 20 64 61 74 65 20 61 6e 64  rent.** date and
162a0 20 74 69 6d 65 20 69 66 20 74 68 61 74 20 6d 65   time if that me
162b0 74 68 6f 64 20 69 73 20 61 76 61 69 6c 61 62 6c  thod is availabl
162c0 65 20 28 69 66 20 69 56 65 72 73 69 6f 6e 20 69  e (if iVersion i
162d0 73 20 32 20 6f 72 20 0a 2a 2a 20 67 72 65 61 74  s 2 or .** great
162e0 65 72 20 61 6e 64 20 74 68 65 20 66 75 6e 63 74  er and the funct
162f0 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69 73 20 6e  ion pointer is n
16300 6f 74 20 4e 55 4c 4c 29 20 61 6e 64 20 77 69 6c  ot NULL) and wil
16310 6c 20 66 61 6c 6c 20 62 61 63 6b 0a 2a 2a 20 74  l fall back.** t
16320 6f 20 78 43 75 72 72 65 6e 74 54 69 6d 65 28 29  o xCurrentTime()
16330 20 69 66 20 78 43 75 72 72 65 6e 74 54 69 6d 65   if xCurrentTime
16340 49 6e 74 36 34 28 29 20 69 73 20 75 6e 61 76 61  Int64() is unava
16350 69 6c 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 5e 54  ilable..**.** ^T
16360 68 65 20 78 53 65 74 53 79 73 74 65 6d 43 61 6c  he xSetSystemCal
16370 6c 28 29 2c 20 78 47 65 74 53 79 73 74 65 6d 43  l(), xGetSystemC
16380 61 6c 6c 28 29 2c 20 61 6e 64 20 78 4e 65 73 74  all(), and xNest
16390 53 79 73 74 65 6d 43 61 6c 6c 28 29 20 69 6e 74  SystemCall() int
163a0 65 72 66 61 63 65 73 0a 2a 2a 20 61 72 65 20 6e  erfaces.** are n
163b0 6f 74 20 75 73 65 64 20 62 79 20 74 68 65 20 53  ot used by the S
163c0 51 4c 69 74 65 20 63 6f 72 65 2e 20 20 54 68 65  QLite core.  The
163d0 73 65 20 6f 70 74 69 6f 6e 61 6c 20 69 6e 74 65  se optional inte
163e0 72 66 61 63 65 73 20 61 72 65 20 70 72 6f 76 69  rfaces are provi
163f0 64 65 64 0a 2a 2a 20 62 79 20 73 6f 6d 65 20 56  ded.** by some V
16400 46 53 65 73 20 74 6f 20 66 61 63 69 6c 69 74 61  FSes to facilita
16410 74 65 20 74 65 73 74 69 6e 67 20 6f 66 20 74 68  te testing of th
16420 65 20 56 46 53 20 63 6f 64 65 2e 20 42 79 20 6f  e VFS code. By o
16430 76 65 72 72 69 64 69 6e 67 20 0a 2a 2a 20 73 79  verriding .** sy
16440 73 74 65 6d 20 63 61 6c 6c 73 20 77 69 74 68 20  stem calls with 
16450 66 75 6e 63 74 69 6f 6e 73 20 75 6e 64 65 72 20  functions under 
16460 69 74 73 20 63 6f 6e 74 72 6f 6c 2c 20 61 20 74  its control, a t
16470 65 73 74 20 70 72 6f 67 72 61 6d 20 63 61 6e 0a  est program can.
16480 2a 2a 20 73 69 6d 75 6c 61 74 65 20 66 61 75 6c  ** simulate faul
16490 74 73 20 61 6e 64 20 65 72 72 6f 72 20 63 6f 6e  ts and error con
164a0 64 69 74 69 6f 6e 73 20 74 68 61 74 20 77 6f 75  ditions that wou
164b0 6c 64 20 6f 74 68 65 72 77 69 73 65 20 62 65 20  ld otherwise be 
164c0 64 69 66 66 69 63 75 6c 74 0a 2a 2a 20 6f 72 20  difficult.** or 
164d0 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 69 6e  impossible to in
164e0 64 75 63 65 2e 20 20 54 68 65 20 73 65 74 20 6f  duce.  The set o
164f0 66 20 73 79 73 74 65 6d 20 63 61 6c 6c 73 20 74  f system calls t
16500 68 61 74 20 63 61 6e 20 62 65 20 6f 76 65 72 72  hat can be overr
16510 69 64 64 65 6e 0a 2a 2a 20 76 61 72 69 65 73 20  idden.** varies 
16520 66 72 6f 6d 20 6f 6e 65 20 56 46 53 20 74 6f 20  from one VFS to 
16530 61 6e 6f 74 68 65 72 2c 20 61 6e 64 20 66 72 6f  another, and fro
16540 6d 20 6f 6e 65 20 76 65 72 73 69 6f 6e 20 6f 66  m one version of
16550 20 74 68 65 20 73 61 6d 65 20 56 46 53 20 74 6f   the same VFS to
16560 20 74 68 65 0a 2a 2a 20 6e 65 78 74 2e 20 20 41   the.** next.  A
16570 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
16580 20 75 73 65 20 74 68 65 73 65 20 69 6e 74 65 72   use these inter
16590 66 61 63 65 73 20 6d 75 73 74 20 62 65 20 70 72  faces must be pr
165a0 65 70 61 72 65 64 20 66 6f 72 20 61 6e 79 0a 2a  epared for any.*
165b0 2a 20 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65 73  * or all of thes
165c0 65 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f 20  e interfaces to 
165d0 62 65 20 4e 55 4c 4c 20 6f 72 20 66 6f 72 20 74  be NULL or for t
165e0 68 65 69 72 20 62 65 68 61 76 69 6f 72 20 74 6f  heir behavior to
165f0 20 63 68 61 6e 67 65 0a 2a 2a 20 66 72 6f 6d 20   change.** from 
16600 6f 6e 65 20 72 65 6c 65 61 73 65 20 74 6f 20 74  one release to t
16610 68 65 20 6e 65 78 74 2e 20 20 41 70 70 6c 69 63  he next.  Applic
16620 61 74 69 6f 6e 73 20 6d 75 73 74 20 6e 6f 74 20  ations must not 
16630 61 74 74 65 6d 70 74 20 74 6f 20 61 63 63 65 73  attempt to acces
16640 73 0a 2a 2a 20 61 6e 79 20 6f 66 20 74 68 65 73  s.** any of thes
16650 65 20 6d 65 74 68 6f 64 73 20 69 66 20 74 68 65  e methods if the
16660 20 69 56 65 72 73 69 6f 6e 20 6f 66 20 74 68 65   iVersion of the
16670 20 56 46 53 20 69 73 20 6c 65 73 73 20 74 68 61   VFS is less tha
16680 6e 20 33 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  n 3..*/.typedef 
16690 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
166a0 66 73 20 73 71 6c 69 74 65 33 5f 76 66 73 3b 0a  fs sqlite3_vfs;.
166b0 74 79 70 65 64 65 66 20 76 6f 69 64 20 28 2a 73  typedef void (*s
166c0 71 6c 69 74 65 33 5f 73 79 73 63 61 6c 6c 5f 70  qlite3_syscall_p
166d0 74 72 29 28 76 6f 69 64 29 3b 0a 73 74 72 75 63  tr)(void);.struc
166e0 74 20 73 71 6c 69 74 65 33 5f 76 66 73 20 7b 0a  t sqlite3_vfs {.
166f0 20 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 20    int iVersion; 
16700 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 53 74             /* St
16710 72 75 63 74 75 72 65 20 76 65 72 73 69 6f 6e 20  ructure version 
16720 6e 75 6d 62 65 72 20 28 63 75 72 72 65 6e 74 6c  number (currentl
16730 79 20 33 29 20 2a 2f 0a 20 20 69 6e 74 20 73 7a  y 3) */.  int sz
16740 4f 73 46 69 6c 65 3b 20 20 20 20 20 20 20 20 20  OsFile;         
16750 20 20 20 2f 2a 20 53 69 7a 65 20 6f 66 20 73 75     /* Size of su
16760 62 63 6c 61 73 73 65 64 20 73 71 6c 69 74 65 33  bclassed sqlite3
16770 5f 66 69 6c 65 20 2a 2f 0a 20 20 69 6e 74 20 6d  _file */.  int m
16780 78 50 61 74 68 6e 61 6d 65 3b 20 20 20 20 20 20  xPathname;      
16790 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 66      /* Maximum f
167a0 69 6c 65 20 70 61 74 68 6e 61 6d 65 20 6c 65 6e  ile pathname len
167b0 67 74 68 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33  gth */.  sqlite3
167c0 5f 76 66 73 20 2a 70 4e 65 78 74 3b 20 20 20 20  _vfs *pNext;    
167d0 20 20 2f 2a 20 4e 65 78 74 20 72 65 67 69 73 74    /* Next regist
167e0 65 72 65 64 20 56 46 53 20 2a 2f 0a 20 20 63 6f  ered VFS */.  co
167f0 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 3b  nst char *zName;
16800 20 20 20 20 20 20 20 2f 2a 20 4e 61 6d 65 20 6f         /* Name o
16810 66 20 74 68 69 73 20 76 69 72 74 75 61 6c 20 66  f this virtual f
16820 69 6c 65 20 73 79 73 74 65 6d 20 2a 2f 0a 20 20  ile system */.  
16830 76 6f 69 64 20 2a 70 41 70 70 44 61 74 61 3b 20  void *pAppData; 
16840 20 20 20 20 20 20 20 20 20 2f 2a 20 50 6f 69 6e           /* Poin
16850 74 65 72 20 74 6f 20 61 70 70 6c 69 63 61 74 69  ter to applicati
16860 6f 6e 2d 73 70 65 63 69 66 69 63 20 64 61 74 61  on-specific data
16870 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 4f 70 65   */.  int (*xOpe
16880 6e 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c  n)(sqlite3_vfs*,
16890 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61   const char *zNa
168a0 6d 65 2c 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  me, sqlite3_file
168b0 2a 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  *,.             
168c0 20 20 69 6e 74 20 66 6c 61 67 73 2c 20 69 6e 74    int flags, int
168d0 20 2a 70 4f 75 74 46 6c 61 67 73 29 3b 0a 20 20   *pOutFlags);.  
168e0 69 6e 74 20 28 2a 78 44 65 6c 65 74 65 29 28 73  int (*xDelete)(s
168f0 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e  qlite3_vfs*, con
16900 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20  st char *zName, 
16910 69 6e 74 20 73 79 6e 63 44 69 72 29 3b 0a 20 20  int syncDir);.  
16920 69 6e 74 20 28 2a 78 41 63 63 65 73 73 29 28 73  int (*xAccess)(s
16930 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e  qlite3_vfs*, con
16940 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20  st char *zName, 
16950 69 6e 74 20 66 6c 61 67 73 2c 20 69 6e 74 20 2a  int flags, int *
16960 70 52 65 73 4f 75 74 29 3b 0a 20 20 69 6e 74 20  pResOut);.  int 
16970 28 2a 78 46 75 6c 6c 50 61 74 68 6e 61 6d 65 29  (*xFullPathname)
16980 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63  (sqlite3_vfs*, c
16990 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65  onst char *zName
169a0 2c 20 69 6e 74 20 6e 4f 75 74 2c 20 63 68 61 72  , int nOut, char
169b0 20 2a 7a 4f 75 74 29 3b 0a 20 20 76 6f 69 64 20   *zOut);.  void 
169c0 2a 28 2a 78 44 6c 4f 70 65 6e 29 28 73 71 6c 69  *(*xDlOpen)(sqli
169d0 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20  te3_vfs*, const 
169e0 63 68 61 72 20 2a 7a 46 69 6c 65 6e 61 6d 65 29  char *zFilename)
169f0 3b 0a 20 20 76 6f 69 64 20 28 2a 78 44 6c 45 72  ;.  void (*xDlEr
16a00 72 6f 72 29 28 73 71 6c 69 74 65 33 5f 76 66 73  ror)(sqlite3_vfs
16a10 2a 2c 20 69 6e 74 20 6e 42 79 74 65 2c 20 63 68  *, int nByte, ch
16a20 61 72 20 2a 7a 45 72 72 4d 73 67 29 3b 0a 20 20  ar *zErrMsg);.  
16a30 76 6f 69 64 20 28 2a 28 2a 78 44 6c 53 79 6d 29  void (*(*xDlSym)
16a40 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 76 6f  (sqlite3_vfs*,vo
16a50 69 64 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  id*, const char 
16a60 2a 7a 53 79 6d 62 6f 6c 29 29 28 76 6f 69 64 29  *zSymbol))(void)
16a70 3b 0a 20 20 76 6f 69 64 20 28 2a 78 44 6c 43 6c  ;.  void (*xDlCl
16a80 6f 73 65 29 28 73 71 6c 69 74 65 33 5f 76 66 73  ose)(sqlite3_vfs
16a90 2a 2c 20 76 6f 69 64 2a 29 3b 0a 20 20 69 6e 74  *, void*);.  int
16aa0 20 28 2a 78 52 61 6e 64 6f 6d 6e 65 73 73 29 28   (*xRandomness)(
16ab0 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e  sqlite3_vfs*, in
16ac0 74 20 6e 42 79 74 65 2c 20 63 68 61 72 20 2a 7a  t nByte, char *z
16ad0 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53  Out);.  int (*xS
16ae0 6c 65 65 70 29 28 73 71 6c 69 74 65 33 5f 76 66  leep)(sqlite3_vf
16af0 73 2a 2c 20 69 6e 74 20 6d 69 63 72 6f 73 65 63  s*, int microsec
16b00 6f 6e 64 73 29 3b 0a 20 20 69 6e 74 20 28 2a 78  onds);.  int (*x
16b10 43 75 72 72 65 6e 74 54 69 6d 65 29 28 73 71 6c  CurrentTime)(sql
16b20 69 74 65 33 5f 76 66 73 2a 2c 20 64 6f 75 62 6c  ite3_vfs*, doubl
16b30 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 47 65  e*);.  int (*xGe
16b40 74 4c 61 73 74 45 72 72 6f 72 29 28 73 71 6c 69  tLastError)(sqli
16b50 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74 2c 20 63  te3_vfs*, int, c
16b60 68 61 72 20 2a 29 3b 0a 20 20 2f 2a 0a 20 20 2a  har *);.  /*.  *
16b70 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62  * The methods ab
16b80 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73 69  ove are in versi
16b90 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c 69  on 1 of the sqli
16ba0 74 65 5f 76 66 73 20 6f 62 6a 65 63 74 0a 20 20  te_vfs object.  
16bb0 2a 2a 20 64 65 66 69 6e 69 74 69 6f 6e 2e 20 20  ** definition.  
16bc0 54 68 6f 73 65 20 74 68 61 74 20 66 6f 6c 6c 6f  Those that follo
16bd0 77 20 61 72 65 20 61 64 64 65 64 20 69 6e 20 76  w are added in v
16be0 65 72 73 69 6f 6e 20 32 20 6f 72 20 6c 61 74 65  ersion 2 or late
16bf0 72 0a 20 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  r.  */.  int (*x
16c00 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36 34  CurrentTimeInt64
16c10 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
16c20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 2a 29 3b  sqlite3_int64*);
16c30 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54 68 65 20 6d  .  /*.  ** The m
16c40 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65  ethods above are
16c50 20 69 6e 20 76 65 72 73 69 6f 6e 73 20 31 20 61   in versions 1 a
16c60 6e 64 20 32 20 6f 66 20 74 68 65 20 73 71 6c 69  nd 2 of the sqli
16c70 74 65 5f 76 66 73 20 6f 62 6a 65 63 74 2e 0a 20  te_vfs object.. 
16c80 20 2a 2a 20 54 68 6f 73 65 20 62 65 6c 6f 77 20   ** Those below 
16c90 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e 20  are for version 
16ca0 33 20 61 6e 64 20 67 72 65 61 74 65 72 2e 0a 20  3 and greater.. 
16cb0 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53 65 74   */.  int (*xSet
16cc0 53 79 73 74 65 6d 43 61 6c 6c 29 28 73 71 6c 69  SystemCall)(sqli
16cd0 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20  te3_vfs*, const 
16ce0 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 73 71 6c  char *zName, sql
16cf0 69 74 65 33 5f 73 79 73 63 61 6c 6c 5f 70 74 72  ite3_syscall_ptr
16d00 29 3b 0a 20 20 73 71 6c 69 74 65 33 5f 73 79 73  );.  sqlite3_sys
16d10 63 61 6c 6c 5f 70 74 72 20 28 2a 78 47 65 74 53  call_ptr (*xGetS
16d20 79 73 74 65 6d 43 61 6c 6c 29 28 73 71 6c 69 74  ystemCall)(sqlit
16d30 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63  e3_vfs*, const c
16d40 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a 20 20 63  har *zName);.  c
16d50 6f 6e 73 74 20 63 68 61 72 20 2a 28 2a 78 4e 65  onst char *(*xNe
16d60 78 74 53 79 73 74 65 6d 43 61 6c 6c 29 28 73 71  xtSystemCall)(sq
16d70 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73  lite3_vfs*, cons
16d80 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a  t char *zName);.
16d90 20 20 2f 2a 0a 20 20 2a 2a 20 54 68 65 20 6d 65    /*.  ** The me
16da0 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20  thods above are 
16db0 69 6e 20 76 65 72 73 69 6f 6e 73 20 31 20 74 68  in versions 1 th
16dc0 72 6f 75 67 68 20 33 20 6f 66 20 74 68 65 20 73  rough 3 of the s
16dd0 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a 65 63 74  qlite_vfs object
16de0 2e 0a 20 20 2a 2a 20 4e 65 77 20 66 69 65 6c 64  ..  ** New field
16df0 73 20 6d 61 79 20 62 65 20 61 70 70 65 6e 64 65  s may be appende
16e00 64 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73  d in future vers
16e10 69 6f 6e 73 2e 20 20 54 68 65 20 69 56 65 72 73  ions.  The iVers
16e20 69 6f 6e 0a 20 20 2a 2a 20 76 61 6c 75 65 20 77  ion.  ** value w
16e30 69 6c 6c 20 69 6e 63 72 65 6d 65 6e 74 20 77 68  ill increment wh
16e40 65 6e 65 76 65 72 20 74 68 69 73 20 68 61 70 70  enever this happ
16e50 65 6e 73 2e 20 0a 20 20 2a 2f 0a 7d 3b 0a 0a 2f  ens. .  */.};../
16e60 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 46  *.** CAPI3REF: F
16e70 6c 61 67 73 20 66 6f 72 20 74 68 65 20 78 41 63  lags for the xAc
16e80 63 65 73 73 20 56 46 53 20 6d 65 74 68 6f 64 0a  cess VFS method.
16e90 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69 6e 74 65  **.** These inte
16ea0 67 65 72 20 63 6f 6e 73 74 61 6e 74 73 20 63 61  ger constants ca
16eb0 6e 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65  n be used as the
16ec0 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
16ed0 20 74 6f 0a 2a 2a 20 74 68 65 20 78 41 63 63 65   to.** the xAcce
16ee0 73 73 20 6d 65 74 68 6f 64 20 6f 66 20 61 6e 20  ss method of an 
16ef0 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62  [sqlite3_vfs] ob
16f00 6a 65 63 74 2e 20 20 54 68 65 79 20 64 65 74 65  ject.  They dete
16f10 72 6d 69 6e 65 0a 2a 2a 20 77 68 61 74 20 6b 69  rmine.** what ki
16f20 6e 64 20 6f 66 20 70 65 72 6d 69 73 73 69 6f 6e  nd of permission
16f30 73 20 74 68 65 20 78 41 63 63 65 73 73 20 6d 65  s the xAccess me
16f40 74 68 6f 64 20 69 73 20 6c 6f 6f 6b 69 6e 67 20  thod is looking 
16f50 66 6f 72 2e 0a 2a 2a 20 57 69 74 68 20 53 51 4c  for..** With SQL
16f60 49 54 45 5f 41 43 43 45 53 53 5f 45 58 49 53 54  ITE_ACCESS_EXIST
16f70 53 2c 20 74 68 65 20 78 41 63 63 65 73 73 20 6d  S, the xAccess m
16f80 65 74 68 6f 64 0a 2a 2a 20 73 69 6d 70 6c 79 20  ethod.** simply 
16f90 63 68 65 63 6b 73 20 77 68 65 74 68 65 72 20 74  checks whether t
16fa0 68 65 20 66 69 6c 65 20 65 78 69 73 74 73 2e 0a  he file exists..
16fb0 2a 2a 20 57 69 74 68 20 53 51 4c 49 54 45 5f 41  ** With SQLITE_A
16fc0 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45 2c  CCESS_READWRITE,
16fd0 20 74 68 65 20 78 41 63 63 65 73 73 20 6d 65 74   the xAccess met
16fe0 68 6f 64 0a 2a 2a 20 63 68 65 63 6b 73 20 77 68  hod.** checks wh
16ff0 65 74 68 65 72 20 74 68 65 20 6e 61 6d 65 64 20  ether the named 
17000 64 69 72 65 63 74 6f 72 79 20 69 73 20 62 6f 74  directory is bot
17010 68 20 72 65 61 64 61 62 6c 65 20 61 6e 64 20 77  h readable and w
17020 72 69 74 61 62 6c 65 0a 2a 2a 20 28 69 6e 20 6f  ritable.** (in o
17030 74 68 65 72 20 77 6f 72 64 73 2c 20 69 66 20 66  ther words, if f
17040 69 6c 65 73 20 63 61 6e 20 62 65 20 61 64 64 65  iles can be adde
17050 64 2c 20 72 65 6d 6f 76 65 64 2c 20 61 6e 64 20  d, removed, and 
17060 72 65 6e 61 6d 65 64 20 77 69 74 68 69 6e 0a 2a  renamed within.*
17070 2a 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 29  * the directory)
17080 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f  ..** The SQLITE_
17090 41 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45  ACCESS_READWRITE
170a0 20 63 6f 6e 73 74 61 6e 74 20 69 73 20 63 75 72   constant is cur
170b0 72 65 6e 74 6c 79 20 75 73 65 64 20 6f 6e 6c 79  rently used only
170c0 20 62 79 20 74 68 65 0a 2a 2a 20 5b 74 65 6d 70   by the.** [temp
170d0 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79  _store_directory
170e0 20 70 72 61 67 6d 61 5d 2c 20 74 68 6f 75 67 68   pragma], though
170f0 20 74 68 69 73 20 63 6f 75 6c 64 20 63 68 61 6e   this could chan
17100 67 65 20 69 6e 20 61 20 66 75 74 75 72 65 0a 2a  ge in a future.*
17110 2a 20 72 65 6c 65 61 73 65 20 6f 66 20 53 51 4c  * release of SQL
17120 69 74 65 2e 0a 2a 2a 20 57 69 74 68 20 53 51 4c  ite..** With SQL
17130 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 2c  ITE_ACCESS_READ,
17140 20 74 68 65 20 78 41 63 63 65 73 73 20 6d 65 74   the xAccess met
17150 68 6f 64 0a 2a 2a 20 63 68 65 63 6b 73 20 77 68  hod.** checks wh
17160 65 74 68 65 72 20 74 68 65 20 66 69 6c 65 20 69  ether the file i
17170 73 20 72 65 61 64 61 62 6c 65 2e 20 20 54 68 65  s readable.  The
17180 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52   SQLITE_ACCESS_R
17190 45 41 44 20 63 6f 6e 73 74 61 6e 74 20 69 73 0a  EAD constant is.
171a0 2a 2a 20 63 75 72 72 65 6e 74 6c 79 20 75 6e 75  ** currently unu
171b0 73 65 64 2c 20 74 68 6f 75 67 68 20 69 74 20 6d  sed, though it m
171c0 69 67 68 74 20 62 65 20 75 73 65 64 20 69 6e 20  ight be used in 
171d0 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  a future release
171e0 20 6f 66 0a 2a 2a 20 53 51 4c 69 74 65 2e 0a 2a   of.** SQLite..*
171f0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
17200 5f 41 43 43 45 53 53 5f 45 58 49 53 54 53 20 20  _ACCESS_EXISTS  
17210 20 20 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    0.#define SQLI
17220 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 57 52  TE_ACCESS_READWR
17230 49 54 45 20 31 20 20 20 2f 2a 20 55 73 65 64 20  ITE 1   /* Used 
17240 62 79 20 50 52 41 47 4d 41 20 74 65 6d 70 5f 73  by PRAGMA temp_s
17250 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 20 2a  tore_directory *
17260 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
17270 5f 41 43 43 45 53 53 5f 52 45 41 44 20 20 20 20  _ACCESS_READ    
17280 20 20 32 20 20 20 2f 2a 20 55 6e 75 73 65 64 20    2   /* Unused 
17290 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  */../*.** CAPI3R
172a0 45 46 3a 20 46 6c 61 67 73 20 66 6f 72 20 74 68  EF: Flags for th
172b0 65 20 78 53 68 6d 4c 6f 63 6b 20 56 46 53 20 6d  e xShmLock VFS m
172c0 65 74 68 6f 64 0a 2a 2a 0a 2a 2a 20 54 68 65 73  ethod.**.** Thes
172d0 65 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61  e integer consta
172e0 6e 74 73 20 64 65 66 69 6e 65 20 74 68 65 20 76  nts define the v
172f0 61 72 69 6f 75 73 20 6c 6f 63 6b 69 6e 67 20 6f  arious locking o
17300 70 65 72 61 74 69 6f 6e 73 0a 2a 2a 20 61 6c 6c  perations.** all
17310 6f 77 65 64 20 62 79 20 74 68 65 20 78 53 68 6d  owed by the xShm
17320 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f 66 20 5b  Lock method of [
17330 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f  sqlite3_io_metho
17340 64 73 5d 2e 20 20 54 68 65 0a 2a 2a 20 66 6f 6c  ds].  The.** fol
17350 6c 6f 77 69 6e 67 20 61 72 65 20 74 68 65 20 6f  lowing are the o
17360 6e 6c 79 20 6c 65 67 61 6c 20 63 6f 6d 62 69 6e  nly legal combin
17370 61 74 69 6f 6e 73 20 6f 66 20 66 6c 61 67 73 20  ations of flags 
17380 74 6f 20 74 68 65 0a 2a 2a 20 78 53 68 6d 4c 6f  to the.** xShmLo
17390 63 6b 20 6d 65 74 68 6f 64 3a 0a 2a 2a 0a 2a 2a  ck method:.**.**
173a0 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 20 53   <ul>.** <li>  S
173b0 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 7c  QLITE_SHM_LOCK |
173c0 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53 48 41 52   SQLITE_SHM_SHAR
173d0 45 44 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49  ED.** <li>  SQLI
173e0 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 7c 20 53 51  TE_SHM_LOCK | SQ
173f0 4c 49 54 45 5f 53 48 4d 5f 45 58 43 4c 55 53 49  LITE_SHM_EXCLUSI
17400 56 45 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49  VE.** <li>  SQLI
17410 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b 20 7c 20  TE_SHM_UNLOCK | 
17420 53 51 4c 49 54 45 5f 53 48 4d 5f 53 48 41 52 45  SQLITE_SHM_SHARE
17430 44 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54  D.** <li>  SQLIT
17440 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b 20 7c 20 53  E_SHM_UNLOCK | S
17450 51 4c 49 54 45 5f 53 48 4d 5f 45 58 43 4c 55 53  QLITE_SHM_EXCLUS
17460 49 56 45 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a  IVE.** </ul>.**.
17470 2a 2a 20 57 68 65 6e 20 75 6e 6c 6f 63 6b 69 6e  ** When unlockin
17480 67 2c 20 74 68 65 20 73 61 6d 65 20 53 48 41 52  g, the same SHAR
17490 45 44 20 6f 72 20 45 58 43 4c 55 53 49 56 45 20  ED or EXCLUSIVE 
174a0 66 6c 61 67 20 6d 75 73 74 20 62 65 20 73 75 70  flag must be sup
174b0 70 6c 69 65 64 20 61 73 0a 2a 2a 20 77 61 73 20  plied as.** was 
174c0 67 69 76 65 6e 20 6f 6e 20 74 68 65 20 63 6f 72  given on the cor
174d0 72 65 73 70 6f 6e 64 69 6e 67 20 6c 6f 63 6b 2e  responding lock.
174e0 20 20 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 53 68    .**.** The xSh
174f0 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 63 61 6e  mLock method can
17500 20 74 72 61 6e 73 69 74 69 6f 6e 20 62 65 74 77   transition betw
17510 65 65 6e 20 75 6e 6c 6f 63 6b 65 64 20 61 6e 64  een unlocked and
17520 20 53 48 41 52 45 44 20 6f 72 0a 2a 2a 20 62 65   SHARED or.** be
17530 74 77 65 65 6e 20 75 6e 6c 6f 63 6b 65 64 20 61  tween unlocked a
17540 6e 64 20 45 58 43 4c 55 53 49 56 45 2e 20 20 49  nd EXCLUSIVE.  I
17550 74 20 63 61 6e 6e 6f 74 20 74 72 61 6e 73 69 74  t cannot transit
17560 69 6f 6e 20 62 65 74 77 65 65 6e 20 53 48 41 52  ion between SHAR
17570 45 44 0a 2a 2a 20 61 6e 64 20 45 58 43 4c 55 53  ED.** and EXCLUS
17580 49 56 45 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  IVE..*/.#define 
17590 53 51 4c 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43  SQLITE_SHM_UNLOC
175a0 4b 20 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e  K       1.#defin
175b0 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43  e SQLITE_SHM_LOC
175c0 4b 20 20 20 20 20 20 20 20 20 32 0a 23 64 65 66  K         2.#def
175d0 69 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53  ine SQLITE_SHM_S
175e0 48 41 52 45 44 20 20 20 20 20 20 20 34 0a 23 64  HARED       4.#d
175f0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d  efine SQLITE_SHM
17600 5f 45 58 43 4c 55 53 49 56 45 20 20 20 20 38 0a  _EXCLUSIVE    8.
17610 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
17620 20 4d 61 78 69 6d 75 6d 20 78 53 68 6d 4c 6f 63   Maximum xShmLoc
17630 6b 20 69 6e 64 65 78 0a 2a 2a 0a 2a 2a 20 54 68  k index.**.** Th
17640 65 20 78 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f  e xShmLock metho
17650 64 20 6f 6e 20 5b 73 71 6c 69 74 65 33 5f 69 6f  d on [sqlite3_io
17660 5f 6d 65 74 68 6f 64 73 5d 20 6d 61 79 20 75 73  _methods] may us
17670 65 20 76 61 6c 75 65 73 0a 2a 2a 20 62 65 74 77  e values.** betw
17680 65 65 6e 20 30 20 61 6e 64 20 74 68 69 73 20 75  een 0 and this u
17690 70 70 65 72 20 62 6f 75 6e 64 20 61 73 20 69 74  pper bound as it
176a0 73 20 22 6f 66 66 73 65 74 22 20 61 72 67 75 6d  s "offset" argum
176b0 65 6e 74 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 69  ent..** The SQLi
176c0 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 6e 65 76  te core will nev
176d0 65 72 20 61 74 74 65 6d 70 74 20 74 6f 20 61 63  er attempt to ac
176e0 71 75 69 72 65 20 6f 72 20 72 65 6c 65 61 73 65  quire or release
176f0 20 61 0a 2a 2a 20 6c 6f 63 6b 20 6f 75 74 73 69   a.** lock outsi
17700 64 65 20 6f 66 20 74 68 69 73 20 72 61 6e 67 65  de of this range
17710 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
17720 54 45 5f 53 48 4d 5f 4e 4c 4f 43 4b 20 20 20 20  TE_SHM_NLOCK    
17730 20 20 20 20 38 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41      8.../*.** CA
17740 50 49 33 52 45 46 3a 20 49 6e 69 74 69 61 6c 69  PI3REF: Initiali
17750 7a 65 20 54 68 65 20 53 51 4c 69 74 65 20 4c 69  ze The SQLite Li
17760 62 72 61 72 79 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  brary.**.** ^The
17770 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
17780 69 7a 65 28 29 20 72 6f 75 74 69 6e 65 20 69 6e  ize() routine in
17790 69 74 69 61 6c 69 7a 65 73 20 74 68 65 0a 2a 2a  itializes the.**
177a0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
177b0 20 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73    ^The sqlite3_s
177c0 68 75 74 64 6f 77 6e 28 29 20 72 6f 75 74 69 6e  hutdown() routin
177d0 65 0a 2a 2a 20 64 65 61 6c 6c 6f 63 61 74 65 73  e.** deallocates
177e0 20 61 6e 79 20 72 65 73 6f 75 72 63 65 73 20 74   any resources t
177f0 68 61 74 20 77 65 72 65 20 61 6c 6c 6f 63 61 74  hat were allocat
17800 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 69 6e  ed by sqlite3_in
17810 69 74 69 61 6c 69 7a 65 28 29 2e 0a 2a 2a 20 54  itialize()..** T
17820 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 61 72  hese routines ar
17830 65 20 64 65 73 69 67 6e 65 64 20 74 6f 20 61 69  e designed to ai
17840 64 20 69 6e 20 70 72 6f 63 65 73 73 20 69 6e 69  d in process ini
17850 74 69 61 6c 69 7a 61 74 69 6f 6e 20 61 6e 64 0a  tialization and.
17860 2a 2a 20 73 68 75 74 64 6f 77 6e 20 6f 6e 20 65  ** shutdown on e
17870 6d 62 65 64 64 65 64 20 73 79 73 74 65 6d 73 2e  mbedded systems.
17880 20 20 57 6f 72 6b 73 74 61 74 69 6f 6e 20 61 70    Workstation ap
17890 70 6c 69 63 61 74 69 6f 6e 73 20 75 73 69 6e 67  plications using
178a0 0a 2a 2a 20 53 51 4c 69 74 65 20 6e 6f 72 6d 61  .** SQLite norma
178b0 6c 6c 79 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20  lly do not need 
178c0 74 6f 20 69 6e 76 6f 6b 65 20 65 69 74 68 65 72  to invoke either
178d0 20 6f 66 20 74 68 65 73 65 20 72 6f 75 74 69 6e   of these routin
178e0 65 73 2e 0a 2a 2a 0a 2a 2a 20 41 20 63 61 6c 6c  es..**.** A call
178f0 20 74 6f 20 73 71 6c 69 74 65 33 5f 69 6e 69 74   to sqlite3_init
17900 69 61 6c 69 7a 65 28 29 20 69 73 20 61 6e 20 22  ialize() is an "
17910 65 66 66 65 63 74 69 76 65 22 20 63 61 6c 6c 20  effective" call 
17920 69 66 20 69 74 20 69 73 0a 2a 2a 20 74 68 65 20  if it is.** the 
17930 66 69 72 73 74 20 74 69 6d 65 20 73 71 6c 69 74  first time sqlit
17940 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
17950 69 73 20 69 6e 76 6f 6b 65 64 20 64 75 72 69 6e  is invoked durin
17960 67 20 74 68 65 20 6c 69 66 65 74 69 6d 65 20 6f  g the lifetime o
17970 66 0a 2a 2a 20 74 68 65 20 70 72 6f 63 65 73 73  f.** the process
17980 2c 20 6f 72 20 69 66 20 69 74 20 69 73 20 74 68  , or if it is th
17990 65 20 66 69 72 73 74 20 74 69 6d 65 20 73 71 6c  e first time sql
179a0 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
179b0 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20  ) is invoked.** 
179c0 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 63 61 6c 6c  following a call
179d0 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74   to sqlite3_shut
179e0 64 6f 77 6e 28 29 2e 20 20 5e 28 4f 6e 6c 79 20  down().  ^(Only 
179f0 61 6e 20 65 66 66 65 63 74 69 76 65 20 63 61 6c  an effective cal
17a00 6c 0a 2a 2a 20 6f 66 20 73 71 6c 69 74 65 33 5f  l.** of sqlite3_
17a10 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 64 6f 65  initialize() doe
17a20 73 20 61 6e 79 20 69 6e 69 74 69 61 6c 69 7a 61  s any initializa
17a30 74 69 6f 6e 2e 20 20 41 6c 6c 20 6f 74 68 65 72  tion.  All other
17a40 20 63 61 6c 6c 73 0a 2a 2a 20 61 72 65 20 68 61   calls.** are ha
17a50 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 73 2e 29 5e  rmless no-ops.)^
17a60 0a 2a 2a 0a 2a 2a 20 41 20 63 61 6c 6c 20 74 6f  .**.** A call to
17a70 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
17a80 6e 28 29 20 69 73 20 61 6e 20 22 65 66 66 65 63  n() is an "effec
17a90 74 69 76 65 22 20 63 61 6c 6c 20 69 66 20 69 74  tive" call if it
17aa0 20 69 73 20 74 68 65 20 66 69 72 73 74 0a 2a 2a   is the first.**
17ab0 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33   call to sqlite3
17ac0 5f 73 68 75 74 64 6f 77 6e 28 29 20 73 69 6e 63  _shutdown() sinc
17ad0 65 20 74 68 65 20 6c 61 73 74 20 73 71 6c 69 74  e the last sqlit
17ae0 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 2e  e3_initialize().
17af0 20 20 5e 28 4f 6e 6c 79 0a 2a 2a 20 61 6e 20 65    ^(Only.** an e
17b00 66 66 65 63 74 69 76 65 20 63 61 6c 6c 20 74 6f  ffective call to
17b10 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
17b20 6e 28 29 20 64 6f 65 73 20 61 6e 79 20 64 65 69  n() does any dei
17b30 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2e 0a 2a  nitialization..*
17b40 2a 20 41 6c 6c 20 6f 74 68 65 72 20 76 61 6c 69  * All other vali
17b50 64 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74  d calls to sqlit
17b60 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 61 72  e3_shutdown() ar
17b70 65 20 68 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70  e harmless no-op
17b80 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  s.)^.**.** The s
17b90 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
17ba0 65 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73  e() interface is
17bb0 20 74 68 72 65 61 64 73 61 66 65 2c 20 62 75 74   threadsafe, but
17bc0 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
17bd0 6e 28 29 0a 2a 2a 20 69 73 20 6e 6f 74 2e 20 20  n().** is not.  
17be0 54 68 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74  The sqlite3_shut
17bf0 64 6f 77 6e 28 29 20 69 6e 74 65 72 66 61 63 65  down() interface
17c00 20 6d 75 73 74 20 6f 6e 6c 79 20 62 65 20 63 61   must only be ca
17c10 6c 6c 65 64 20 66 72 6f 6d 20 61 0a 2a 2a 20 73  lled from a.** s
17c20 69 6e 67 6c 65 20 74 68 72 65 61 64 2e 20 20 41  ingle thread.  A
17c30 6c 6c 20 6f 70 65 6e 20 5b 64 61 74 61 62 61 73  ll open [databas
17c40 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 6d  e connections] m
17c50 75 73 74 20 62 65 20 63 6c 6f 73 65 64 20 61 6e  ust be closed an
17c60 64 20 61 6c 6c 0a 2a 2a 20 6f 74 68 65 72 20 53  d all.** other S
17c70 51 4c 69 74 65 20 72 65 73 6f 75 72 63 65 73 20  QLite resources 
17c80 6d 75 73 74 20 62 65 20 64 65 61 6c 6c 6f 63 61  must be dealloca
17c90 74 65 64 20 70 72 69 6f 72 20 74 6f 20 69 6e 76  ted prior to inv
17ca0 6f 6b 69 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33  oking.** sqlite3
17cb0 5f 73 68 75 74 64 6f 77 6e 28 29 2e 0a 2a 2a 0a  _shutdown()..**.
17cc0 2a 2a 20 41 6d 6f 6e 67 20 6f 74 68 65 72 20 74  ** Among other t
17cd0 68 69 6e 67 73 2c 20 5e 73 71 6c 69 74 65 33 5f  hings, ^sqlite3_
17ce0 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 77 69 6c  initialize() wil
17cf0 6c 20 69 6e 76 6f 6b 65 0a 2a 2a 20 73 71 6c 69  l invoke.** sqli
17d00 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 2e 20 20  te3_os_init().  
17d10 53 69 6d 69 6c 61 72 6c 79 2c 20 5e 73 71 6c 69  Similarly, ^sqli
17d20 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 0a 2a  te3_shutdown().*
17d30 2a 20 77 69 6c 6c 20 69 6e 76 6f 6b 65 20 73 71  * will invoke sq
17d40 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 2e 0a  lite3_os_end()..
17d50 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
17d60 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
17d70 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20  routine returns 
17d80 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 6e 20 73  [SQLITE_OK] on s
17d90 75 63 63 65 73 73 2e 0a 2a 2a 20 5e 49 66 20 66  uccess..** ^If f
17da0 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e 2c 20  or some reason, 
17db0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
17dc0 7a 65 28 29 20 69 73 20 75 6e 61 62 6c 65 20 74  ze() is unable t
17dd0 6f 20 69 6e 69 74 69 61 6c 69 7a 65 0a 2a 2a 20  o initialize.** 
17de0 74 68 65 20 6c 69 62 72 61 72 79 20 28 70 65 72  the library (per
17df0 68 61 70 73 20 69 74 20 69 73 20 75 6e 61 62 6c  haps it is unabl
17e00 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 61 20  e to allocate a 
17e10 6e 65 65 64 65 64 20 72 65 73 6f 75 72 63 65 20  needed resource 
17e20 73 75 63 68 0a 2a 2a 20 61 73 20 61 20 6d 75 74  such.** as a mut
17e30 65 78 29 20 69 74 20 72 65 74 75 72 6e 73 20 61  ex) it returns a
17e40 6e 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 6f  n [error code] o
17e50 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54  ther than [SQLIT
17e60 45 5f 4f 4b 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  E_OK]..**.** ^Th
17e70 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  e sqlite3_initia
17e80 6c 69 7a 65 28 29 20 72 6f 75 74 69 6e 65 20 69  lize() routine i
17e90 73 20 63 61 6c 6c 65 64 20 69 6e 74 65 72 6e 61  s called interna
17ea0 6c 6c 79 20 62 79 20 6d 61 6e 79 20 6f 74 68 65  lly by many othe
17eb0 72 0a 2a 2a 20 53 51 4c 69 74 65 20 69 6e 74 65  r.** SQLite inte
17ec0 72 66 61 63 65 73 20 73 6f 20 74 68 61 74 20 61  rfaces so that a
17ed0 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75 73  n application us
17ee0 75 61 6c 6c 79 20 64 6f 65 73 20 6e 6f 74 20 6e  ually does not n
17ef0 65 65 64 20 74 6f 0a 2a 2a 20 69 6e 76 6f 6b 65  eed to.** invoke
17f00 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
17f10 69 7a 65 28 29 20 64 69 72 65 63 74 6c 79 2e 20  ize() directly. 
17f20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 5b 73   For example, [s
17f30 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 0a 2a  qlite3_open()].*
17f40 2a 20 63 61 6c 6c 73 20 73 71 6c 69 74 65 33 5f  * calls sqlite3_
17f50 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 73 6f 20  initialize() so 
17f60 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
17f70 72 79 20 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d  ry will be autom
17f80 61 74 69 63 61 6c 6c 79 0a 2a 2a 20 69 6e 69 74  atically.** init
17f90 69 61 6c 69 7a 65 64 20 77 68 65 6e 20 5b 73 71  ialized when [sq
17fa0 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 20 69 73  lite3_open()] is
17fb0 20 63 61 6c 6c 65 64 20 69 66 20 69 74 20 68 61   called if it ha
17fc0 73 20 6e 6f 74 20 62 65 20 69 6e 69 74 69 61 6c  s not be initial
17fd0 69 7a 65 64 0a 2a 2a 20 61 6c 72 65 61 64 79 2e  ized.** already.
17fe0 20 20 5e 48 6f 77 65 76 65 72 2c 20 69 66 20 53    ^However, if S
17ff0 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
18000 64 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49  d with the [SQLI
18010 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54  TE_OMIT_AUTOINIT
18020 5d 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  ].** compile-tim
18030 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74  e option, then t
18040 68 65 20 61 75 74 6f 6d 61 74 69 63 20 63 61 6c  he automatic cal
18050 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 69 6e  ls to sqlite3_in
18060 69 74 69 61 6c 69 7a 65 28 29 0a 2a 2a 20 61 72  itialize().** ar
18070 65 20 6f 6d 69 74 74 65 64 20 61 6e 64 20 74 68  e omitted and th
18080 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75  e application mu
18090 73 74 20 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f  st call sqlite3_
180a0 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 64 69 72  initialize() dir
180b0 65 63 74 6c 79 0a 2a 2a 20 70 72 69 6f 72 20 74  ectly.** prior t
180c0 6f 20 75 73 69 6e 67 20 61 6e 79 20 6f 74 68 65  o using any othe
180d0 72 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61  r SQLite interfa
180e0 63 65 2e 20 20 46 6f 72 20 6d 61 78 69 6d 75 6d  ce.  For maximum
180f0 20 70 6f 72 74 61 62 69 6c 69 74 79 2c 0a 2a 2a   portability,.**
18100 20 69 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64   it is recommend
18110 65 64 20 74 68 61 74 20 61 70 70 6c 69 63 61 74  ed that applicat
18120 69 6f 6e 73 20 61 6c 77 61 79 73 20 69 6e 76 6f  ions always invo
18130 6b 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  ke sqlite3_initi
18140 61 6c 69 7a 65 28 29 0a 2a 2a 20 64 69 72 65 63  alize().** direc
18150 74 6c 79 20 70 72 69 6f 72 20 74 6f 20 75 73 69  tly prior to usi
18160 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 53 51 4c  ng any other SQL
18170 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ite interface.  
18180 46 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 0a  Future releases.
18190 2a 2a 20 6f 66 20 53 51 4c 69 74 65 20 6d 61 79  ** of SQLite may
181a0 20 72 65 71 75 69 72 65 20 74 68 69 73 2e 20 20   require this.  
181b0 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20  In other words, 
181c0 74 68 65 20 62 65 68 61 76 69 6f 72 20 65 78 68  the behavior exh
181d0 69 62 69 74 65 64 0a 2a 2a 20 77 68 65 6e 20 53  ibited.** when S
181e0 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
181f0 64 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 4f  d with [SQLITE_O
18200 4d 49 54 5f 41 55 54 4f 49 4e 49 54 5d 20 6d 69  MIT_AUTOINIT] mi
18210 67 68 74 20 62 65 63 6f 6d 65 20 74 68 65 0a 2a  ght become the.*
18220 2a 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69  * default behavi
18230 6f 72 20 69 6e 20 73 6f 6d 65 20 66 75 74 75 72  or in some futur
18240 65 20 72 65 6c 65 61 73 65 20 6f 66 20 53 51 4c  e release of SQL
18250 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  ite..**.** The s
18260 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
18270 20 72 6f 75 74 69 6e 65 20 64 6f 65 73 20 6f 70   routine does op
18280 65 72 61 74 69 6e 67 2d 73 79 73 74 65 6d 20 73  erating-system s
18290 70 65 63 69 66 69 63 0a 2a 2a 20 69 6e 69 74 69  pecific.** initi
182a0 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65  alization of the
182b0 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
182c0 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6f 73    The sqlite3_os
182d0 5f 65 6e 64 28 29 0a 2a 2a 20 72 6f 75 74 69 6e  _end().** routin
182e0 65 20 75 6e 64 6f 65 73 20 74 68 65 20 65 66 66  e undoes the eff
182f0 65 63 74 20 6f 66 20 73 71 6c 69 74 65 33 5f 6f  ect of sqlite3_o
18300 73 5f 69 6e 69 74 28 29 2e 20 20 54 79 70 69 63  s_init().  Typic
18310 61 6c 20 74 61 73 6b 73 0a 2a 2a 20 70 65 72 66  al tasks.** perf
18320 6f 72 6d 65 64 20 62 79 20 74 68 65 73 65 20 72  ormed by these r
18330 6f 75 74 69 6e 65 73 20 69 6e 63 6c 75 64 65 20  outines include 
18340 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 72 20 64 65  allocation or de
18350 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66  allocation.** of
18360 20 73 74 61 74 69 63 20 72 65 73 6f 75 72 63 65   static resource
18370 73 2c 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  s, initializatio
18380 6e 20 6f 66 20 67 6c 6f 62 61 6c 20 76 61 72 69  n of global vari
18390 61 62 6c 65 73 2c 0a 2a 2a 20 73 65 74 74 69 6e  ables,.** settin
183a0 67 20 75 70 20 61 20 64 65 66 61 75 6c 74 20 5b  g up a default [
183b0 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6d 6f 64  sqlite3_vfs] mod
183c0 75 6c 65 2c 20 6f 72 20 73 65 74 74 69 6e 67 20  ule, or setting 
183d0 75 70 0a 2a 2a 20 61 20 64 65 66 61 75 6c 74 20  up.** a default 
183e0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 75 73  configuration us
183f0 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  ing [sqlite3_con
18400 66 69 67 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68  fig()]..**.** Th
18410 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68  e application sh
18420 6f 75 6c 64 20 6e 65 76 65 72 20 69 6e 76 6f 6b  ould never invok
18430 65 20 65 69 74 68 65 72 20 73 71 6c 69 74 65 33  e either sqlite3
18440 5f 6f 73 5f 69 6e 69 74 28 29 0a 2a 2a 20 6f 72  _os_init().** or
18450 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28   sqlite3_os_end(
18460 29 20 64 69 72 65 63 74 6c 79 2e 20 20 54 68 65  ) directly.  The
18470 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f   application sho
18480 75 6c 64 20 6f 6e 6c 79 20 69 6e 76 6f 6b 65 0a  uld only invoke.
18490 2a 2a 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  ** sqlite3_initi
184a0 61 6c 69 7a 65 28 29 20 61 6e 64 20 73 71 6c 69  alize() and sqli
184b0 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e 20  te3_shutdown(). 
184c0 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f   The sqlite3_os_
184d0 69 6e 69 74 28 29 0a 2a 2a 20 69 6e 74 65 72 66  init().** interf
184e0 61 63 65 20 69 73 20 63 61 6c 6c 65 64 20 61 75  ace is called au
184f0 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 73  tomatically by s
18500 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
18510 65 28 29 20 61 6e 64 0a 2a 2a 20 73 71 6c 69 74  e() and.** sqlit
18520 65 33 5f 6f 73 5f 65 6e 64 28 29 20 69 73 20 63  e3_os_end() is c
18530 61 6c 6c 65 64 20 62 79 20 73 71 6c 69 74 65 33  alled by sqlite3
18540 5f 73 68 75 74 64 6f 77 6e 28 29 2e 20 20 41 70  _shutdown().  Ap
18550 70 72 6f 70 72 69 61 74 65 0a 2a 2a 20 69 6d 70  propriate.** imp
18560 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72  lementations for
18570 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74   sqlite3_os_init
18580 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f  () and sqlite3_o
18590 73 5f 65 6e 64 28 29 0a 2a 2a 20 61 72 65 20 62  s_end().** are b
185a0 75 69 6c 74 20 69 6e 74 6f 20 53 51 4c 69 74 65  uilt into SQLite
185b0 20 77 68 65 6e 20 69 74 20 69 73 20 63 6f 6d 70   when it is comp
185c0 69 6c 65 64 20 66 6f 72 20 55 6e 69 78 2c 20 57  iled for Unix, W
185d0 69 6e 64 6f 77 73 2c 20 6f 72 20 4f 53 2f 32 2e  indows, or OS/2.
185e0 0a 2a 2a 20 57 68 65 6e 20 5b 63 75 73 74 6f 6d  .** When [custom
185f0 20 62 75 69 6c 64 73 20 7c 20 62 75 69 6c 74 20   builds | built 
18600 66 6f 72 20 6f 74 68 65 72 20 70 6c 61 74 66 6f  for other platfo
18610 72 6d 73 5d 0a 2a 2a 20 28 75 73 69 6e 67 20 74  rms].** (using t
18620 68 65 20 5b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54  he [SQLITE_OS_OT
18630 48 45 52 3d 31 5d 20 63 6f 6d 70 69 6c 65 2d 74  HER=1] compile-t
18640 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f 6e 29 20 74  ime.** option) t
18650 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
18660 75 73 74 20 73 75 70 70 6c 79 20 61 20 73 75 69  ust supply a sui
18670 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  table implementa
18680 74 69 6f 6e 20 66 6f 72 0a 2a 2a 20 73 71 6c 69  tion for.** sqli
18690 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20 61 6e  te3_os_init() an
186a0 64 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64  d sqlite3_os_end
186b0 28 29 2e 20 20 41 6e 20 61 70 70 6c 69 63 61 74  ().  An applicat
186c0 69 6f 6e 2d 73 75 70 70 6c 69 65 64 0a 2a 2a 20  ion-supplied.** 
186d0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
186e0 66 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69  f sqlite3_os_ini
186f0 74 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f  t() or sqlite3_o
18700 73 5f 65 6e 64 28 29 0a 2a 2a 20 6d 75 73 74 20  s_end().** must 
18710 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4f  return [SQLITE_O
18720 4b 5d 20 6f 6e 20 73 75 63 63 65 73 73 20 61 6e  K] on success an
18730 64 20 73 6f 6d 65 20 6f 74 68 65 72 20 5b 65 72  d some other [er
18740 72 6f 72 20 63 6f 64 65 5d 20 75 70 6f 6e 0a 2a  ror code] upon.*
18750 2a 20 66 61 69 6c 75 72 65 2e 0a 2a 2f 0a 53 51  * failure..*/.SQ
18760 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
18770 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
18780 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50  void);.SQLITE_AP
18790 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 68  I int sqlite3_sh
187a0 75 74 64 6f 77 6e 28 76 6f 69 64 29 3b 0a 53 51  utdown(void);.SQ
187b0 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
187c0 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 76 6f 69  ite3_os_init(voi
187d0 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  d);.SQLITE_API i
187e0 6e 74 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  nt sqlite3_os_en
187f0 64 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20  d(void);../*.** 
18800 43 41 50 49 33 52 45 46 3a 20 43 6f 6e 66 69 67  CAPI3REF: Config
18810 75 72 69 6e 67 20 54 68 65 20 53 51 4c 69 74 65  uring The SQLite
18820 20 4c 69 62 72 61 72 79 0a 2a 2a 0a 2a 2a 20 54   Library.**.** T
18830 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  he sqlite3_confi
18840 67 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73  g() interface is
18850 20 75 73 65 64 20 74 6f 20 6d 61 6b 65 20 67 6c   used to make gl
18860 6f 62 61 6c 20 63 6f 6e 66 69 67 75 72 61 74 69  obal configurati
18870 6f 6e 0a 2a 2a 20 63 68 61 6e 67 65 73 20 74 6f  on.** changes to
18880 20 53 51 4c 69 74 65 20 69 6e 20 6f 72 64 65 72   SQLite in order
18890 20 74 6f 20 74 75 6e 65 20 53 51 4c 69 74 65 20   to tune SQLite 
188a0 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 63 20  to the specific 
188b0 6e 65 65 64 73 20 6f 66 0a 2a 2a 20 74 68 65 20  needs of.** the 
188c0 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20 54 68  application.  Th
188d0 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 69 67  e default config
188e0 75 72 61 74 69 6f 6e 20 69 73 20 72 65 63 6f 6d  uration is recom
188f0 6d 65 6e 64 65 64 20 66 6f 72 20 6d 6f 73 74 0a  mended for most.
18900 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  ** applications 
18910 61 6e 64 20 73 6f 20 74 68 69 73 20 72 6f 75 74  and so this rout
18920 69 6e 65 20 69 73 20 75 73 75 61 6c 6c 79 20 6e  ine is usually n
18930 6f 74 20 6e 65 63 65 73 73 61 72 79 2e 20 20 49  ot necessary.  I
18940 74 20 69 73 0a 2a 2a 20 70 72 6f 76 69 64 65 64  t is.** provided
18950 20 74 6f 20 73 75 70 70 6f 72 74 20 72 61 72 65   to support rare
18960 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 69   applications wi
18970 74 68 20 75 6e 75 73 75 61 6c 20 6e 65 65 64 73  th unusual needs
18980 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 54 68 65 20 73  ..**.** <b>The s
18990 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20  qlite3_config() 
189a0 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f 74  interface is not
189b0 20 74 68 72 65 61 64 73 61 66 65 2e 20 54 68 65   threadsafe. The
189c0 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20   application.** 
189d0 6d 75 73 74 20 65 6e 73 75 72 65 20 74 68 61 74  must ensure that
189e0 20 6e 6f 20 6f 74 68 65 72 20 53 51 4c 69 74 65   no other SQLite
189f0 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20   interfaces are 
18a00 69 6e 76 6f 6b 65 64 20 62 79 20 6f 74 68 65 72  invoked by other
18a10 0a 2a 2a 20 74 68 72 65 61 64 73 20 77 68 69 6c  .** threads whil
18a20 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
18a30 28 29 20 69 73 20 72 75 6e 6e 69 6e 67 2e 3c 2f  () is running.</
18a40 62 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  b>.**.** The sql
18a50 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 69 6e  ite3_config() in
18a60 74 65 72 66 61 63 65 0a 2a 2a 20 6d 61 79 20 6f  terface.** may o
18a70 6e 6c 79 20 62 65 20 69 6e 76 6f 6b 65 64 20 70  nly be invoked p
18a80 72 69 6f 72 20 74 6f 20 6c 69 62 72 61 72 79 20  rior to library 
18a90 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 75  initialization u
18aa0 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  sing.** [sqlite3
18ab0 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 6f  _initialize()] o
18ac0 72 20 61 66 74 65 72 20 73 68 75 74 64 6f 77 6e  r after shutdown
18ad0 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 73 68 75   by [sqlite3_shu
18ae0 74 64 6f 77 6e 28 29 5d 2e 0a 2a 2a 20 5e 49 66  tdown()]..** ^If
18af0 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28   sqlite3_config(
18b00 29 20 69 73 20 63 61 6c 6c 65 64 20 61 66 74 65  ) is called afte
18b10 72 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  r [sqlite3_initi
18b20 61 6c 69 7a 65 28 29 5d 20 61 6e 64 20 62 65 66  alize()] and bef
18b30 6f 72 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  ore.** [sqlite3_
18b40 73 68 75 74 64 6f 77 6e 28 29 5d 20 74 68 65 6e  shutdown()] then
18b50 20 69 74 20 77 69 6c 6c 20 72 65 74 75 72 6e 20   it will return 
18b60 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 2e 0a 2a  SQLITE_MISUSE..*
18b70 2a 20 4e 6f 74 65 2c 20 68 6f 77 65 76 65 72 2c  * Note, however,
18b80 20 74 68 61 74 20 5e 73 71 6c 69 74 65 33 5f 63   that ^sqlite3_c
18b90 6f 6e 66 69 67 28 29 20 63 61 6e 20 62 65 20 63  onfig() can be c
18ba0 61 6c 6c 65 64 20 61 73 20 70 61 72 74 20 6f 66  alled as part of
18bb0 20 74 68 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e   the.** implemen
18bc0 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 70 70  tation of an app
18bd0 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64  lication-defined
18be0 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69   [sqlite3_os_ini
18bf0 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  t()]..**.** The 
18c00 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74  first argument t
18c10 6f 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  o sqlite3_config
18c20 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  () is an integer
18c30 0a 2a 2a 20 5b 63 6f 6e 66 69 67 75 72 61 74 69  .** [configurati
18c40 6f 6e 20 6f 70 74 69 6f 6e 5d 20 74 68 61 74 20  on option] that 
18c50 64 65 74 65 72 6d 69 6e 65 73 0a 2a 2a 20 77 68  determines.** wh
18c60 61 74 20 70 72 6f 70 65 72 74 79 20 6f 66 20 53  at property of S
18c70 51 4c 69 74 65 20 69 73 20 74 6f 20 62 65 20 63  QLite is to be c
18c80 6f 6e 66 69 67 75 72 65 64 2e 20 20 53 75 62 73  onfigured.  Subs
18c90 65 71 75 65 6e 74 20 61 72 67 75 6d 65 6e 74 73  equent arguments
18ca0 0a 2a 2a 20 76 61 72 79 20 64 65 70 65 6e 64 69  .** vary dependi
18cb0 6e 67 20 6f 6e 20 74 68 65 20 5b 63 6f 6e 66 69  ng on the [confi
18cc0 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 5d  guration option]
18cd0 0a 2a 2a 20 69 6e 20 74 68 65 20 66 69 72 73 74  .** in the first
18ce0 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a   argument..**.**
18cf0 20 5e 57 68 65 6e 20 61 20 63 6f 6e 66 69 67 75   ^When a configu
18d00 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73  ration option is
18d10 20 73 65 74 2c 20 73 71 6c 69 74 65 33 5f 63 6f   set, sqlite3_co
18d20 6e 66 69 67 28 29 20 72 65 74 75 72 6e 73 20 5b  nfig() returns [
18d30 53 51 4c 49 54 45 5f 4f 4b 5d 2e 0a 2a 2a 20 5e  SQLITE_OK]..** ^
18d40 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 20 69 73  If the option is
18d50 20 75 6e 6b 6e 6f 77 6e 20 6f 72 20 53 51 4c 69   unknown or SQLi
18d60 74 65 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20  te is unable to 
18d70 73 65 74 20 74 68 65 20 6f 70 74 69 6f 6e 0a 2a  set the option.*
18d80 2a 20 74 68 65 6e 20 74 68 69 73 20 72 6f 75 74  * then this rout
18d90 69 6e 65 20 72 65 74 75 72 6e 73 20 61 20 6e 6f  ine returns a no
18da0 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72 20 63 6f  n-zero [error co
18db0 64 65 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  de]..*/.SQLITE_A
18dc0 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  PI int sqlite3_c
18dd0 6f 6e 66 69 67 28 69 6e 74 2c 20 2e 2e 2e 29 3b  onfig(int, ...);
18de0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
18df0 3a 20 43 6f 6e 66 69 67 75 72 65 20 64 61 74 61  : Configure data
18e00 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
18e10 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
18e20 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71  te3.**.** The sq
18e30 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28  lite3_db_config(
18e40 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 75  ) interface is u
18e50 73 65 64 20 74 6f 20 6d 61 6b 65 20 63 6f 6e 66  sed to make conf
18e60 69 67 75 72 61 74 69 6f 6e 0a 2a 2a 20 63 68 61  iguration.** cha
18e70 6e 67 65 73 20 74 6f 20 61 20 5b 64 61 74 61 62  nges to a [datab
18e80 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e  ase connection].
18e90 20 20 54 68 65 20 69 6e 74 65 72 66 61 63 65 20    The interface 
18ea0 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 0a 2a 2a  is similar to.**
18eb0 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
18ec0 28 29 5d 20 65 78 63 65 70 74 20 74 68 61 74 20  ()] except that 
18ed0 74 68 65 20 63 68 61 6e 67 65 73 20 61 70 70 6c  the changes appl
18ee0 79 20 74 6f 20 61 20 73 69 6e 67 6c 65 0a 2a 2a  y to a single.**
18ef0 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
18f00 63 74 69 6f 6e 5d 20 28 73 70 65 63 69 66 69 65  ction] (specifie
18f10 64 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 61  d in the first a
18f20 72 67 75 6d 65 6e 74 29 2e 0a 2a 2a 0a 2a 2a 20  rgument)..**.** 
18f30 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d  The second argum
18f40 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 64  ent to sqlite3_d
18f50 62 5f 63 6f 6e 66 69 67 28 44 2c 56 2c 2e 2e 2e  b_config(D,V,...
18f60 29 20 20 69 73 20 74 68 65 0a 2a 2a 20 5b 53 51  )  is the.** [SQ
18f70 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f  LITE_DBCONFIG_LO
18f80 4f 4b 41 53 49 44 45 20 7c 20 63 6f 6e 66 69 67  OKASIDE | config
18f90 75 72 61 74 69 6f 6e 20 76 65 72 62 5d 20 2d 20  uration verb] - 
18fa0 61 6e 20 69 6e 74 65 67 65 72 20 63 6f 64 65 20  an integer code 
18fb0 0a 2a 2a 20 74 68 61 74 20 69 6e 64 69 63 61 74  .** that indicat
18fc0 65 73 20 77 68 61 74 20 61 73 70 65 63 74 20 6f  es what aspect o
18fd0 66 20 74 68 65 20 5b 64 61 74 61 62 61 73 65 20  f the [database 
18fe0 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 69 73 20 62  connection] is b
18ff0 65 69 6e 67 20 63 6f 6e 66 69 67 75 72 65 64 2e  eing configured.
19000 0a 2a 2a 20 53 75 62 73 65 71 75 65 6e 74 20 61  .** Subsequent a
19010 72 67 75 6d 65 6e 74 73 20 76 61 72 79 20 64 65  rguments vary de
19020 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 63  pending on the c
19030 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 76 65 72  onfiguration ver
19040 62 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 73 20  b..**.** ^Calls 
19050 74 6f 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  to sqlite3_db_co
19060 6e 66 69 67 28 29 20 72 65 74 75 72 6e 20 53 51  nfig() return SQ
19070 4c 49 54 45 5f 4f 4b 20 69 66 20 61 6e 64 20 6f  LITE_OK if and o
19080 6e 6c 79 20 69 66 0a 2a 2a 20 74 68 65 20 63 61  nly if.** the ca
19090 6c 6c 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64  ll is considered
190a0 20 73 75 63 63 65 73 73 66 75 6c 2e 0a 2a 2f 0a   successful..*/.
190b0 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
190c0 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
190d0 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20 6f  (sqlite3*, int o
190e0 70 2c 20 2e 2e 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20  p, ...);../*.** 
190f0 43 41 50 49 33 52 45 46 3a 20 4d 65 6d 6f 72 79  CAPI3REF: Memory
19100 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 52 6f 75 74   Allocation Rout
19110 69 6e 65 73 0a 2a 2a 0a 2a 2a 20 41 6e 20 69 6e  ines.**.** An in
19120 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 6f  stance of this o
19130 62 6a 65 63 74 20 64 65 66 69 6e 65 73 20 74 68  bject defines th
19140 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 74 77  e interface betw
19150 65 65 6e 20 53 51 4c 69 74 65 0a 2a 2a 20 61 6e  een SQLite.** an
19160 64 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d 65 6d 6f  d low-level memo
19170 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f  ry allocation ro
19180 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  utines..**.** Th
19190 69 73 20 6f 62 6a 65 63 74 20 69 73 20 75 73 65  is object is use
191a0 64 20 69 6e 20 6f 6e 6c 79 20 6f 6e 65 20 70 6c  d in only one pl
191b0 61 63 65 20 69 6e 20 74 68 65 20 53 51 4c 69 74  ace in the SQLit
191c0 65 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 20  e interface..** 
191d0 41 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  A pointer to an 
191e0 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73  instance of this
191f0 20 6f 62 6a 65 63 74 20 69 73 20 74 68 65 20 61   object is the a
19200 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 5b 73  rgument to.** [s
19210 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
19220 20 77 68 65 6e 20 74 68 65 20 63 6f 6e 66 69 67   when the config
19230 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69  uration option i
19240 73 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 43 4f 4e  s.** [SQLITE_CON
19250 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 6f 72 20 5b  FIG_MALLOC] or [
19260 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
19270 54 4d 41 4c 4c 4f 43 5d 2e 20 20 0a 2a 2a 20 42  TMALLOC].  .** B
19280 79 20 63 72 65 61 74 69 6e 67 20 61 6e 20 69 6e  y creating an in
19290 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 6f  stance of this o
192a0 62 6a 65 63 74 0a 2a 2a 20 61 6e 64 20 70 61 73  bject.** and pas
192b0 73 69 6e 67 20 69 74 20 74 6f 20 5b 73 71 6c 69  sing it to [sqli
192c0 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c  te3_config]([SQL
192d0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f  ITE_CONFIG_MALLO
192e0 43 5d 29 0a 2a 2a 20 64 75 72 69 6e 67 20 63 6f  C]).** during co
192f0 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 61 6e 20  nfiguration, an 
19300 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 61 6e 20  application can 
19310 73 70 65 63 69 66 79 20 61 6e 20 61 6c 74 65 72  specify an alter
19320 6e 61 74 69 76 65 0a 2a 2a 20 6d 65 6d 6f 72 79  native.** memory
19330 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 75 62 73   allocation subs
19340 79 73 74 65 6d 20 66 6f 72 20 53 51 4c 69 74 65  ystem for SQLite
19350 20 74 6f 20 75 73 65 20 66 6f 72 20 61 6c 6c 20   to use for all 
19360 6f 66 20 69 74 73 0a 2a 2a 20 64 79 6e 61 6d 69  of its.** dynami
19370 63 20 6d 65 6d 6f 72 79 20 6e 65 65 64 73 2e 0a  c memory needs..
19380 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20  **.** Note that 
19390 53 51 4c 69 74 65 20 63 6f 6d 65 73 20 77 69 74  SQLite comes wit
193a0 68 20 73 65 76 65 72 61 6c 20 5b 62 75 69 6c 74  h several [built
193b0 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  -in memory alloc
193c0 61 74 6f 72 73 5d 0a 2a 2a 20 74 68 61 74 20 61  ators].** that a
193d0 72 65 20 70 65 72 66 65 63 74 6c 79 20 61 64 65  re perfectly ade
193e0 71 75 61 74 65 20 66 6f 72 20 74 68 65 20 6f 76  quate for the ov
193f0 65 72 77 68 65 6c 6d 69 6e 67 20 6d 61 6a 6f 72  erwhelming major
19400 69 74 79 20 6f 66 20 61 70 70 6c 69 63 61 74 69  ity of applicati
19410 6f 6e 73 0a 2a 2a 20 61 6e 64 20 74 68 61 74 20  ons.** and that 
19420 74 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 6f  this object is o
19430 6e 6c 79 20 75 73 65 66 75 6c 20 74 6f 20 61 20  nly useful to a 
19440 74 69 6e 79 20 6d 69 6e 6f 72 69 74 79 20 6f 66  tiny minority of
19450 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a   applications.**
19460 20 77 69 74 68 20 73 70 65 63 69 61 6c 69 7a 65   with specialize
19470 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  d memory allocat
19480 69 6f 6e 20 72 65 71 75 69 72 65 6d 65 6e 74 73  ion requirements
19490 2e 20 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69  .  This object i
194a0 73 0a 2a 2a 20 61 6c 73 6f 20 75 73 65 64 20 64  s.** also used d
194b0 75 72 69 6e 67 20 74 65 73 74 69 6e 67 20 6f 66  uring testing of
194c0 20 53 51 4c 69 74 65 20 69 6e 20 6f 72 64 65 72   SQLite in order
194d0 20 74 6f 20 73 70 65 63 69 66 79 20 61 6e 20 61   to specify an a
194e0 6c 74 65 72 6e 61 74 69 76 65 0a 2a 2a 20 6d 65  lternative.** me
194f0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 74  mory allocator t
19500 68 61 74 20 73 69 6d 75 6c 61 74 65 73 20 6d 65  hat simulates me
19510 6d 6f 72 79 20 6f 75 74 2d 6f 66 2d 6d 65 6d 6f  mory out-of-memo
19520 72 79 20 63 6f 6e 64 69 74 69 6f 6e 73 20 69 6e  ry conditions in
19530 0a 2a 2a 20 6f 72 64 65 72 20 74 6f 20 76 65 72  .** order to ver
19540 69 66 79 20 74 68 61 74 20 53 51 4c 69 74 65 20  ify that SQLite 
19550 72 65 63 6f 76 65 72 73 20 67 72 61 63 65 66 75  recovers gracefu
19560 6c 6c 79 20 66 72 6f 6d 20 73 75 63 68 0a 2a 2a  lly from such.**
19570 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a 2a 2a 0a   conditions..**.
19580 2a 2a 20 54 68 65 20 78 4d 61 6c 6c 6f 63 2c 20  ** The xMalloc, 
19590 78 52 65 61 6c 6c 6f 63 2c 20 61 6e 64 20 78 46  xRealloc, and xF
195a0 72 65 65 20 6d 65 74 68 6f 64 73 20 6d 75 73 74  ree methods must
195b0 20 77 6f 72 6b 20 6c 69 6b 65 20 74 68 65 0a 2a   work like the.*
195c0 2a 20 6d 61 6c 6c 6f 63 28 29 2c 20 72 65 61 6c  * malloc(), real
195d0 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65 28 29  loc() and free()
195e0 20 66 75 6e 63 74 69 6f 6e 73 20 66 72 6f 6d 20   functions from 
195f0 74 68 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c  the standard C l
19600 69 62 72 61 72 79 2e 0a 2a 2a 20 5e 53 51 4c 69  ibrary..** ^SQLi
19610 74 65 20 67 75 61 72 61 6e 74 65 65 73 20 74 68  te guarantees th
19620 61 74 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72  at the second ar
19630 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 78 52 65  gument to.** xRe
19640 61 6c 6c 6f 63 20 69 73 20 61 6c 77 61 79 73 20  alloc is always 
19650 61 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64  a value returned
19660 20 62 79 20 61 20 70 72 69 6f 72 20 63 61 6c 6c   by a prior call
19670 20 74 6f 20 78 52 6f 75 6e 64 75 70 2e 0a 2a 2a   to xRoundup..**
19680 0a 2a 2a 20 78 53 69 7a 65 20 73 68 6f 75 6c 64  .** xSize should
19690 20 72 65 74 75 72 6e 20 74 68 65 20 61 6c 6c 6f   return the allo
196a0 63 61 74 65 64 20 73 69 7a 65 20 6f 66 20 61 20  cated size of a 
196b0 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
196c0 6e 0a 2a 2a 20 70 72 65 76 69 6f 75 73 6c 79 20  n.** previously 
196d0 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 78 4d  obtained from xM
196e0 61 6c 6c 6f 63 20 6f 72 20 78 52 65 61 6c 6c 6f  alloc or xReallo
196f0 63 2e 20 20 54 68 65 20 61 6c 6c 6f 63 61 74 65  c.  The allocate
19700 64 20 73 69 7a 65 0a 2a 2a 20 69 73 20 61 6c 77  d size.** is alw
19710 61 79 73 20 61 74 20 6c 65 61 73 74 20 61 73 20  ays at least as 
19720 62 69 67 20 61 73 20 74 68 65 20 72 65 71 75 65  big as the reque
19730 73 74 65 64 20 73 69 7a 65 20 62 75 74 20 6d 61  sted size but ma
19740 79 20 62 65 20 6c 61 72 67 65 72 2e 0a 2a 2a 0a  y be larger..**.
19750 2a 2a 20 54 68 65 20 78 52 6f 75 6e 64 75 70 20  ** The xRoundup 
19760 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 77  method returns w
19770 68 61 74 20 77 6f 75 6c 64 20 62 65 20 74 68 65  hat would be the
19780 20 61 6c 6c 6f 63 61 74 65 64 20 73 69 7a 65 20   allocated size 
19790 6f 66 0a 2a 2a 20 61 20 6d 65 6d 6f 72 79 20 61  of.** a memory a
197a0 6c 6c 6f 63 61 74 69 6f 6e 20 67 69 76 65 6e 20  llocation given 
197b0 61 20 70 61 72 74 69 63 75 6c 61 72 20 72 65 71  a particular req
197c0 75 65 73 74 65 64 20 73 69 7a 65 2e 20 20 4d 6f  uested size.  Mo
197d0 73 74 20 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c 6c  st memory.** all
197e0 6f 63 61 74 6f 72 73 20 72 6f 75 6e 64 20 75 70  ocators round up
197f0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
19800 6f 6e 73 20 61 74 20 6c 65 61 73 74 20 74 6f 20  ons at least to 
19810 74 68 65 20 6e 65 78 74 20 6d 75 6c 74 69 70 6c  the next multipl
19820 65 0a 2a 2a 20 6f 66 20 38 2e 20 20 53 6f 6d 65  e.** of 8.  Some
19830 20 61 6c 6c 6f 63 61 74 6f 72 73 20 72 6f 75 6e   allocators roun
19840 64 20 75 70 20 74 6f 20 61 20 6c 61 72 67 65 72  d up to a larger
19850 20 6d 75 6c 74 69 70 6c 65 20 6f 72 20 74 6f 20   multiple or to 
19860 61 20 70 6f 77 65 72 20 6f 66 20 32 2e 0a 2a 2a  a power of 2..**
19870 20 45 76 65 72 79 20 6d 65 6d 6f 72 79 20 61 6c   Every memory al
19880 6c 6f 63 61 74 69 6f 6e 20 72 65 71 75 65 73 74  location request
19890 20 63 6f 6d 69 6e 67 20 69 6e 20 74 68 72 6f 75   coming in throu
198a0 67 68 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  gh [sqlite3_mall
198b0 6f 63 28 29 5d 0a 2a 2a 20 6f 72 20 5b 73 71 6c  oc()].** or [sql
198c0 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 20  ite3_realloc()] 
198d0 66 69 72 73 74 20 63 61 6c 6c 73 20 78 52 6f 75  first calls xRou
198e0 6e 64 75 70 2e 20 20 49 66 20 78 52 6f 75 6e 64  ndup.  If xRound
198f0 75 70 20 72 65 74 75 72 6e 73 20 30 2c 20 0a 2a  up returns 0, .*
19900 2a 20 74 68 61 74 20 63 61 75 73 65 73 20 74 68  * that causes th
19910 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
19920 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
19930 6e 20 74 6f 20 66 61 69 6c 2e 0a 2a 2a 0a 2a 2a  n to fail..**.**
19940 20 54 68 65 20 78 49 6e 69 74 20 6d 65 74 68 6f   The xInit metho
19950 64 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 74 68  d initializes th
19960 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
19970 6f 72 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  or.  For example
19980 2c 0a 2a 2a 20 69 74 20 6d 69 67 68 74 20 61 6c  ,.** it might al
19990 6c 6f 63 61 74 65 20 61 6e 79 20 72 65 71 75 69  locate any requi
199a0 72 65 20 6d 75 74 65 78 65 73 20 6f 72 20 69 6e  re mutexes or in
199b0 69 74 69 61 6c 69 7a 65 20 69 6e 74 65 72 6e 61  itialize interna
199c0 6c 20 64 61 74 61 0a 2a 2a 20 73 74 72 75 63 74  l data.** struct
199d0 75 72 65 73 2e 20 20 54 68 65 20 78 53 68 75 74  ures.  The xShut
199e0 64 6f 77 6e 20 6d 65 74 68 6f 64 20 69 73 20 69  down method is i
199f0 6e 76 6f 6b 65 64 20 28 69 6e 64 69 72 65 63 74  nvoked (indirect
19a00 6c 79 29 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74  ly) by.** [sqlit
19a10 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d 20 61  e3_shutdown()] a
19a20 6e 64 20 73 68 6f 75 6c 64 20 64 65 61 6c 6c 6f  nd should deallo
19a30 63 61 74 65 20 61 6e 79 20 72 65 73 6f 75 72 63  cate any resourc
19a40 65 73 20 61 63 71 75 69 72 65 64 0a 2a 2a 20 62  es acquired.** b
19a50 79 20 78 49 6e 69 74 2e 20 20 54 68 65 20 70 41  y xInit.  The pA
19a60 70 70 44 61 74 61 20 70 6f 69 6e 74 65 72 20 69  ppData pointer i
19a70 73 20 75 73 65 64 20 61 73 20 74 68 65 20 6f 6e  s used as the on
19a80 6c 79 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a  ly parameter to.
19a90 2a 2a 20 78 49 6e 69 74 20 61 6e 64 20 78 53 68  ** xInit and xSh
19aa0 75 74 64 6f 77 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51  utdown..**.** SQ
19ab0 4c 69 74 65 20 68 6f 6c 64 73 20 74 68 65 20 5b  Lite holds the [
19ac0 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 53 54 41  SQLITE_MUTEX_STA
19ad0 54 49 43 5f 4d 41 53 54 45 52 5d 20 6d 75 74 65  TIC_MASTER] mute
19ae0 78 20 77 68 65 6e 20 69 74 20 69 6e 76 6f 6b 65  x when it invoke
19af0 73 0a 2a 2a 20 74 68 65 20 78 49 6e 69 74 20 6d  s.** the xInit m
19b00 65 74 68 6f 64 2c 20 73 6f 20 74 68 65 20 78 49  ethod, so the xI
19b10 6e 69 74 20 6d 65 74 68 6f 64 20 6e 65 65 64 20  nit method need 
19b20 6e 6f 74 20 62 65 20 74 68 72 65 61 64 73 61 66  not be threadsaf
19b30 65 2e 20 20 54 68 65 0a 2a 2a 20 78 53 68 75 74  e.  The.** xShut
19b40 64 6f 77 6e 20 6d 65 74 68 6f 64 20 69 73 20 6f  down method is o
19b50 6e 6c 79 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20  nly called from 
19b60 5b 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77  [sqlite3_shutdow
19b70 6e 28 29 5d 20 73 6f 20 69 74 20 64 6f 65 73 0a  n()] so it does.
19b80 2a 2a 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 62  ** not need to b
19b90 65 20 74 68 72 65 61 64 73 61 66 65 20 65 69 74  e threadsafe eit
19ba0 68 65 72 2e 20 20 46 6f 72 20 61 6c 6c 20 6f 74  her.  For all ot
19bb0 68 65 72 20 6d 65 74 68 6f 64 73 2c 20 53 51 4c  her methods, SQL
19bc0 69 74 65 0a 2a 2a 20 68 6f 6c 64 73 20 74 68 65  ite.** holds the
19bd0 20 5b 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 53   [SQLITE_MUTEX_S
19be0 54 41 54 49 43 5f 4d 45 4d 5d 20 6d 75 74 65 78  TATIC_MEM] mutex
19bf0 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 0a   as long as the.
19c00 2a 2a 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ** [SQLITE_CONFI
19c10 47 5f 4d 45 4d 53 54 41 54 55 53 5d 20 63 6f 6e  G_MEMSTATUS] con
19c20 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
19c30 6e 20 69 73 20 74 75 72 6e 65 64 20 6f 6e 20 28  n is turned on (
19c40 77 68 69 63 68 0a 2a 2a 20 69 74 20 69 73 20 62  which.** it is b
19c50 79 20 64 65 66 61 75 6c 74 29 20 61 6e 64 20 73  y default) and s
19c60 6f 20 74 68 65 20 6d 65 74 68 6f 64 73 20 61 72  o the methods ar
19c70 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
19c80 73 65 72 69 61 6c 69 7a 65 64 2e 0a 2a 2a 20 48  serialized..** H
19c90 6f 77 65 76 65 72 2c 20 69 66 20 5b 53 51 4c 49  owever, if [SQLI
19ca0 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41  TE_CONFIG_MEMSTA
19cb0 54 55 53 5d 20 69 73 20 64 69 73 61 62 6c 65 64  TUS] is disabled
19cc0 2c 20 74 68 65 6e 20 74 68 65 20 6f 74 68 65 72  , then the other
19cd0 0a 2a 2a 20 6d 65 74 68 6f 64 73 20 6d 75 73 74  .** methods must
19ce0 20 62 65 20 74 68 72 65 61 64 73 61 66 65 20 6f   be threadsafe o
19cf0 72 20 65 6c 73 65 20 6d 61 6b 65 20 74 68 65 69  r else make thei
19d00 72 20 6f 77 6e 20 61 72 72 61 6e 67 65 6d 65 6e  r own arrangemen
19d10 74 73 20 66 6f 72 0a 2a 2a 20 73 65 72 69 61 6c  ts for.** serial
19d20 69 7a 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 53  ization..**.** S
19d30 51 4c 69 74 65 20 77 69 6c 6c 20 6e 65 76 65 72  QLite will never
19d40 20 69 6e 76 6f 6b 65 20 78 49 6e 69 74 28 29 20   invoke xInit() 
19d50 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63 65 20 77  more than once w
19d60 69 74 68 6f 75 74 20 61 6e 20 69 6e 74 65 72 76  ithout an interv
19d70 65 6e 69 6e 67 0a 2a 2a 20 63 61 6c 6c 20 74 6f  ening.** call to
19d80 20 78 53 68 75 74 64 6f 77 6e 28 29 2e 0a 2a 2f   xShutdown()..*/
19d90 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
19da0 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68  sqlite3_mem_meth
19db0 6f 64 73 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f  ods sqlite3_mem_
19dc0 6d 65 74 68 6f 64 73 3b 0a 73 74 72 75 63 74 20  methods;.struct 
19dd0 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68  sqlite3_mem_meth
19de0 6f 64 73 20 7b 0a 20 20 76 6f 69 64 20 2a 28 2a  ods {.  void *(*
19df0 78 4d 61 6c 6c 6f 63 29 28 69 6e 74 29 3b 20 20  xMalloc)(int);  
19e00 20 20 20 20 20 20 20 2f 2a 20 4d 65 6d 6f 72 79         /* Memory
19e10 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 75 6e 63   allocation func
19e20 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64 20 28  tion */.  void (
19e30 2a 78 46 72 65 65 29 28 76 6f 69 64 2a 29 3b 20  *xFree)(void*); 
19e40 20 20 20 20 20 20 20 20 20 2f 2a 20 46 72 65 65           /* Free
19e50 20 61 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74   a prior allocat
19e60 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 28  ion */.  void *(
19e70 2a 78 52 65 61 6c 6c 6f 63 29 28 76 6f 69 64 2a  *xRealloc)(void*
19e80 2c 69 6e 74 29 3b 20 20 2f 2a 20 52 65 73 69 7a  ,int);  /* Resiz
19e90 65 20 61 6e 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  e an allocation 
19ea0 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53 69 7a 65  */.  int (*xSize
19eb0 29 28 76 6f 69 64 2a 29 3b 20 20 20 20 20 20 20  )(void*);       
19ec0 20 20 20 20 2f 2a 20 52 65 74 75 72 6e 20 74 68      /* Return th
19ed0 65 20 73 69 7a 65 20 6f 66 20 61 6e 20 61 6c 6c  e size of an all
19ee0 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20 20 69 6e 74  ocation */.  int
19ef0 20 28 2a 78 52 6f 75 6e 64 75 70 29 28 69 6e 74   (*xRoundup)(int
19f00 29 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 52  );          /* R
19f10 6f 75 6e 64 20 75 70 20 72 65 71 75 65 73 74 20  ound up request 
19f20 73 69 7a 65 20 74 6f 20 61 6c 6c 6f 63 61 74 69  size to allocati
19f30 6f 6e 20 73 69 7a 65 20 2a 2f 0a 20 20 69 6e 74  on size */.  int
19f40 20 28 2a 78 49 6e 69 74 29 28 76 6f 69 64 2a 29   (*xInit)(void*)
19f50 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 49  ;           /* I
19f60 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 6d 65  nitialize the me
19f70 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 2a  mory allocator *
19f80 2f 0a 20 20 76 6f 69 64 20 28 2a 78 53 68 75 74  /.  void (*xShut
19f90 64 6f 77 6e 29 28 76 6f 69 64 2a 29 3b 20 20 20  down)(void*);   
19fa0 20 20 20 2f 2a 20 44 65 69 6e 69 74 69 61 6c 69     /* Deinitiali
19fb0 7a 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c  ze the memory al
19fc0 6c 6f 63 61 74 6f 72 20 2a 2f 0a 20 20 76 6f 69  locator */.  voi
19fd0 64 20 2a 70 41 70 70 44 61 74 61 3b 20 20 20 20  d *pAppData;    
19fe0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 41              /* A
19ff0 72 67 75 6d 65 6e 74 20 74 6f 20 78 49 6e 69 74  rgument to xInit
1a000 28 29 20 61 6e 64 20 78 53 68 75 74 64 6f 77 6e  () and xShutdown
1a010 28 29 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20  () */.};../*.** 
1a020 43 41 50 49 33 52 45 46 3a 20 43 6f 6e 66 69 67  CAPI3REF: Config
1a030 75 72 61 74 69 6f 6e 20 4f 70 74 69 6f 6e 73 0a  uration Options.
1a040 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 63 6f  ** KEYWORDS: {co
1a050 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1a060 6f 6e 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  on}.**.** These 
1a070 63 6f 6e 73 74 61 6e 74 73 20 61 72 65 20 74 68  constants are th
1a080 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 74 65  e available inte
1a090 67 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ger configuratio
1a0a0 6e 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 0a 2a  n options that.*
1a0b0 2a 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20  * can be passed 
1a0c0 61 73 20 74 68 65 20 66 69 72 73 74 20 61 72 67  as the first arg
1a0d0 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 5b 73 71  ument to the [sq
1a0e0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
1a0f0 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a  interface..**.**
1a100 20 4e 65 77 20 63 6f 6e 66 69 67 75 72 61 74 69   New configurati
1a110 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 62  on options may b
1a120 65 20 61 64 64 65 64 20 69 6e 20 66 75 74 75 72  e added in futur
1a130 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51  e releases of SQ
1a140 4c 69 74 65 2e 0a 2a 2a 20 45 78 69 73 74 69 6e  Lite..** Existin
1a150 67 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  g configuration 
1a160 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 62 65  options might be
1a170 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 2e 20 20   discontinued.  
1a180 41 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20  Applications.** 
1a190 73 68 6f 75 6c 64 20 63 68 65 63 6b 20 74 68 65  should check the
1a1a0 20 72 65 74 75 72 6e 20 63 6f 64 65 20 66 72 6f   return code fro
1a1b0 6d 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  m [sqlite3_confi
1a1c0 67 28 29 5d 20 74 6f 20 6d 61 6b 65 20 73 75 72  g()] to make sur
1a1d0 65 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 63 61  e that.** the ca
1a1e0 6c 6c 20 77 6f 72 6b 65 64 2e 20 20 54 68 65 20  ll worked.  The 
1a1f0 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
1a200 29 5d 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c  )] interface wil
1a210 6c 20 72 65 74 75 72 6e 20 61 0a 2a 2a 20 6e 6f  l return a.** no
1a220 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72 20 63 6f  n-zero [error co
1a230 64 65 5d 20 69 66 20 61 20 64 69 73 63 6f 6e 74  de] if a discont
1a240 69 6e 75 65 64 20 6f 72 20 75 6e 73 75 70 70 6f  inued or unsuppo
1a250 72 74 65 64 20 63 6f 6e 66 69 67 75 72 61 74 69  rted configurati
1a260 6f 6e 20 6f 70 74 69 6f 6e 0a 2a 2a 20 69 73 20  on option.** is 
1a270 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c  invoked..**.** <
1a280 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  dl>.** [[SQLITE_
1a290 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52  CONFIG_SINGLETHR
1a2a0 45 41 44 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  EAD]] <dt>SQLITE
1a2b0 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48  _CONFIG_SINGLETH
1a2c0 52 45 41 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  READ</dt>.** <dd
1a2d0 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72  >There are no ar
1a2e0 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 69 73 20  guments to this 
1a2f0 6f 70 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20 6f  option.  ^This o
1a300 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 0a 2a  ption sets the.*
1a310 2a 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  * [threading mod
1a320 65 5d 20 74 6f 20 53 69 6e 67 6c 65 2d 74 68 72  e] to Single-thr
1a330 65 61 64 2e 20 20 49 6e 20 6f 74 68 65 72 20 77  ead.  In other w
1a340 6f 72 64 73 2c 20 69 74 20 64 69 73 61 62 6c 65  ords, it disable
1a350 73 0a 2a 2a 20 61 6c 6c 20 6d 75 74 65 78 69 6e  s.** all mutexin
1a360 67 20 61 6e 64 20 70 75 74 73 20 53 51 4c 69 74  g and puts SQLit
1a370 65 20 69 6e 74 6f 20 61 20 6d 6f 64 65 20 77 68  e into a mode wh
1a380 65 72 65 20 69 74 20 63 61 6e 20 6f 6e 6c 79 20  ere it can only 
1a390 62 65 20 75 73 65 64 0a 2a 2a 20 62 79 20 61 20  be used.** by a 
1a3a0 73 69 6e 67 6c 65 20 74 68 72 65 61 64 2e 20 20  single thread.  
1a3b0 20 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63   ^If SQLite is c
1a3c0 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20  ompiled with.** 
1a3d0 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45  the [SQLITE_THRE
1a3e0 41 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f  ADSAFE | SQLITE_
1a3f0 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f  THREADSAFE=0] co
1a400 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1a410 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20 69 73 20  n then.** it is 
1a420 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20  not possible to 
1a430 63 68 61 6e 67 65 20 74 68 65 20 5b 74 68 72 65  change the [thre
1a440 61 64 69 6e 67 20 6d 6f 64 65 5d 20 66 72 6f 6d  ading mode] from
1a450 20 69 74 73 20 64 65 66 61 75 6c 74 0a 2a 2a 20   its default.** 
1a460 76 61 6c 75 65 20 6f 66 20 53 69 6e 67 6c 65 2d  value of Single-
1a470 74 68 72 65 61 64 20 61 6e 64 20 73 6f 20 5b 73  thread and so [s
1a480 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
1a490 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 0a 2a 2a   will return .**
1a4a0 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20   [SQLITE_ERROR] 
1a4b0 69 66 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74  if called with t
1a4c0 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1a4d0 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 0a 2a 2a  _SINGLETHREAD.**
1a4e0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
1a4f0 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a  ption.</dd>.**.*
1a500 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1a510 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 5d 20  G_MULTITHREAD]] 
1a520 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1a530 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 3c 2f 64  G_MULTITHREAD</d
1a540 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 72 65 20  t>.** <dd>There 
1a550 61 72 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73  are no arguments
1a560 20 74 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 2e   to this option.
1a570 20 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 73    ^This option s
1a580 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74 68 72 65  ets the.** [thre
1a590 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 4d  ading mode] to M
1a5a0 75 6c 74 69 2d 74 68 72 65 61 64 2e 20 20 49 6e  ulti-thread.  In
1a5b0 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 69 74   other words, it
1a5c0 20 64 69 73 61 62 6c 65 73 0a 2a 2a 20 6d 75 74   disables.** mut
1a5d0 65 78 69 6e 67 20 6f 6e 20 5b 64 61 74 61 62 61  exing on [databa
1a5e0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61  se connection] a
1a5f0 6e 64 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  nd [prepared sta
1a600 74 65 6d 65 6e 74 5d 20 6f 62 6a 65 63 74 73 2e  tement] objects.
1a610 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61 74  .** The applicat
1a620 69 6f 6e 20 69 73 20 72 65 73 70 6f 6e 73 69 62  ion is responsib
1a630 6c 65 20 66 6f 72 20 73 65 72 69 61 6c 69 7a 69  le for serializi
1a640 6e 67 20 61 63 63 65 73 73 20 74 6f 0a 2a 2a 20  ng access to.** 
1a650 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
1a660 74 69 6f 6e 73 5d 20 61 6e 64 20 5b 70 72 65 70  tions] and [prep
1a670 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d  ared statements]
1a680 2e 20 20 42 75 74 20 6f 74 68 65 72 20 6d 75 74  .  But other mut
1a690 65 78 65 73 0a 2a 2a 20 61 72 65 20 65 6e 61 62  exes.** are enab
1a6a0 6c 65 64 20 73 6f 20 74 68 61 74 20 53 51 4c 69  led so that SQLi
1a6b0 74 65 20 77 69 6c 6c 20 62 65 20 73 61 66 65 20  te will be safe 
1a6c0 74 6f 20 75 73 65 20 69 6e 20 61 20 6d 75 6c 74  to use in a mult
1a6d0 69 2d 74 68 72 65 61 64 65 64 0a 2a 2a 20 65 6e  i-threaded.** en
1a6e0 76 69 72 6f 6e 6d 65 6e 74 20 61 73 20 6c 6f 6e  vironment as lon
1a6f0 67 20 61 73 20 6e 6f 20 74 77 6f 20 74 68 72 65  g as no two thre
1a700 61 64 73 20 61 74 74 65 6d 70 74 20 74 6f 20 75  ads attempt to u
1a710 73 65 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20 5b  se the same.** [
1a720 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1a730 69 6f 6e 5d 20 61 74 20 74 68 65 20 73 61 6d 65  ion] at the same
1a740 20 74 69 6d 65 2e 20 20 5e 49 66 20 53 51 4c 69   time.  ^If SQLi
1a750 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
1a760 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49  ith.** the [SQLI
1a770 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c 20  TE_THREADSAFE | 
1a780 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
1a790 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  E=0] compile-tim
1a7a0 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a  e option then.**
1a7b0 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69   it is not possi
1a7c0 62 6c 65 20 74 6f 20 73 65 74 20 74 68 65 20 4d  ble to set the M
1a7d0 75 6c 74 69 2d 74 68 72 65 61 64 20 5b 74 68 72  ulti-thread [thr
1a7e0 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 6e 64  eading mode] and
1a7f0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  .** [sqlite3_con
1a800 66 69 67 28 29 5d 20 77 69 6c 6c 20 72 65 74 75  fig()] will retu
1a810 72 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52  rn [SQLITE_ERROR
1a820 5d 20 69 66 20 63 61 6c 6c 65 64 20 77 69 74 68  ] if called with
1a830 20 74 68 65 0a 2a 2a 20 53 51 4c 49 54 45 5f 43   the.** SQLITE_C
1a840 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41  ONFIG_MULTITHREA
1a850 44 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  D configuration 
1a860 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a  option.</dd>.**.
1a870 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1a880 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 5d 20  IG_SERIALIZED]] 
1a890 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1a8a0 47 5f 53 45 52 49 41 4c 49 5a 45 44 3c 2f 64 74  G_SERIALIZED</dt
1a8b0 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 72 65 20 61  >.** <dd>There a
1a8c0 72 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20  re no arguments 
1a8d0 74 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 2e 20  to this option. 
1a8e0 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 73 65   ^This option se
1a8f0 74 73 20 74 68 65 0a 2a 2a 20 5b 74 68 72 65 61  ts the.** [threa
1a900 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65  ding mode] to Se
1a910 72 69 61 6c 69 7a 65 64 2e 20 49 6e 20 6f 74 68  rialized. In oth
1a920 65 72 20 77 6f 72 64 73 2c 20 74 68 69 73 20 6f  er words, this o
1a930 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 0a 2a 2a  ption enables.**
1a940 20 61 6c 6c 20 6d 75 74 65 78 65 73 20 69 6e 63   all mutexes inc
1a950 6c 75 64 69 6e 67 20 74 68 65 20 72 65 63 75 72  luding the recur
1a960 73 69 76 65 0a 2a 2a 20 6d 75 74 65 78 65 73 20  sive.** mutexes 
1a970 6f 6e 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  on [database con
1a980 6e 65 63 74 69 6f 6e 5d 20 61 6e 64 20 5b 70 72  nection] and [pr
1a990 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
1a9a0 5d 20 6f 62 6a 65 63 74 73 2e 0a 2a 2a 20 49 6e  ] objects..** In
1a9b0 20 74 68 69 73 20 6d 6f 64 65 20 28 77 68 69 63   this mode (whic
1a9c0 68 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74  h is the default
1a9d0 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20   when SQLite is 
1a9e0 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a  compiled with.**
1a9f0 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53   [SQLITE_THREADS
1aa00 41 46 45 3d 31 5d 29 20 74 68 65 20 53 51 4c 69  AFE=1]) the SQLi
1aa10 74 65 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 20  te library will 
1aa20 69 74 73 65 6c 66 20 73 65 72 69 61 6c 69 7a 65  itself serialize
1aa30 20 61 63 63 65 73 73 0a 2a 2a 20 74 6f 20 5b 64   access.** to [d
1aa40 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1aa50 6f 6e 73 5d 20 61 6e 64 20 5b 70 72 65 70 61 72  ons] and [prepar
1aa60 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 20 73  ed statements] s
1aa70 6f 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 61 70  o that the.** ap
1aa80 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 66 72 65  plication is fre
1aa90 65 20 74 6f 20 75 73 65 20 74 68 65 20 73 61 6d  e to use the sam
1aaa0 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
1aab0 65 63 74 69 6f 6e 5d 20 6f 72 20 74 68 65 0a 2a  ection] or the.*
1aac0 2a 20 73 61 6d 65 20 5b 70 72 65 70 61 72 65 64  * same [prepared
1aad0 20 73 74 61 74 65 6d 65 6e 74 5d 20 69 6e 20 64   statement] in d
1aae0 69 66 66 65 72 65 6e 74 20 74 68 72 65 61 64 73  ifferent threads
1aaf0 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d   at the same tim
1ab00 65 2e 0a 2a 2a 20 5e 49 66 20 53 51 4c 69 74 65  e..** ^If SQLite
1ab10 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   is compiled wit
1ab20 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45  h.** the [SQLITE
1ab30 5f 54 48 52 45 41 44 53 41 46 45 20 7c 20 53 51  _THREADSAFE | SQ
1ab40 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
1ab50 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  0] compile-time 
1ab60 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69  option then.** i
1ab70 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c  t is not possibl
1ab80 65 20 74 6f 20 73 65 74 20 74 68 65 20 53 65 72  e to set the Ser
1ab90 69 61 6c 69 7a 65 64 20 5b 74 68 72 65 61 64 69  ialized [threadi
1aba0 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 0a 2a 2a 20  ng mode] and.** 
1abb0 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
1abc0 29 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b  )] will return [
1abd0 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 69 66  SQLITE_ERROR] if
1abe0 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65   called with the
1abf0 0a 2a 2a 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  .** SQLITE_CONFI
1ac00 47 5f 53 45 52 49 41 4c 49 5a 45 44 20 63 6f 6e  G_SERIALIZED con
1ac10 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
1ac20 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  n.</dd>.**.** [[
1ac30 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41  SQLITE_CONFIG_MA
1ac40 4c 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  LLOC]] <dt>SQLIT
1ac50 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 3c  E_CONFIG_MALLOC<
1ac60 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54  /dt>.** <dd> ^(T
1ac70 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1ac80 5f 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20 74  _MALLOC option t
1ac90 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72  akes a single ar
1aca0 67 75 6d 65 6e 74 20 77 68 69 63 68 20 69 73 20  gument which is 
1acb0 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  .** a pointer to
1acc0 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
1acd0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d  the [sqlite3_mem
1ace0 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63 74  _methods] struct
1acf0 75 72 65 2e 0a 2a 2a 20 54 68 65 20 61 72 67 75  ure..** The argu
1ad00 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73 0a 2a  ment specifies.*
1ad10 2a 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f  * alternative lo
1ad20 77 2d 6c 65 76 65 6c 20 6d 65 6d 6f 72 79 20 61  w-level memory a
1ad30 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e  llocation routin
1ad40 65 73 20 74 6f 20 62 65 20 75 73 65 64 20 69 6e  es to be used in
1ad50 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 74 68 65   place of.** the
1ad60 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
1ad70 6f 6e 20 72 6f 75 74 69 6e 65 73 20 62 75 69 6c  on routines buil
1ad80 74 20 69 6e 74 6f 20 53 51 4c 69 74 65 2e 29 5e  t into SQLite.)^
1ad90 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65 73 0a 2a   ^SQLite makes.*
1ada0 2a 20 69 74 73 20 6f 77 6e 20 70 72 69 76 61 74  * its own privat
1adb0 65 20 63 6f 70 79 20 6f 66 20 74 68 65 20 63 6f  e copy of the co
1adc0 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 5b 73 71  ntent of the [sq
1add0 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64  lite3_mem_method
1ade0 73 5d 20 73 74 72 75 63 74 75 72 65 0a 2a 2a 20  s] structure.** 
1adf0 62 65 66 6f 72 65 20 74 68 65 20 5b 73 71 6c 69  before the [sqli
1ae00 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 63 61  te3_config()] ca
1ae10 6c 6c 20 72 65 74 75 72 6e 73 2e 3c 2f 64 64 3e  ll returns.</dd>
1ae20 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
1ae30 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f 43  CONFIG_GETMALLOC
1ae40 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1ae50 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 3c 2f  NFIG_GETMALLOC</
1ae60 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68  dt>.** <dd> ^(Th
1ae70 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1ae80 47 45 54 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f 6e  GETMALLOC option
1ae90 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20   takes a single 
1aea0 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 0a 2a  argument which.*
1aeb0 2a 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  * is a pointer t
1aec0 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  o an instance of
1aed0 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65   the [sqlite3_me
1aee0 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63  m_methods] struc
1aef0 74 75 72 65 2e 0a 2a 2a 20 54 68 65 20 5b 73 71  ture..** The [sq
1af00 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64  lite3_mem_method
1af10 73 5d 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20  s].** structure 
1af20 69 73 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74  is filled with t
1af30 68 65 20 63 75 72 72 65 6e 74 6c 79 20 64 65 66  he currently def
1af40 69 6e 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ined memory allo
1af50 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73 2e  cation routines.
1af60 29 5e 0a 2a 2a 20 54 68 69 73 20 6f 70 74 69 6f  )^.** This optio
1af70 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  n can be used to
1af80 20 6f 76 65 72 6c 6f 61 64 20 74 68 65 20 64 65   overload the de
1af90 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c  fault memory all
1afa0 6f 63 61 74 69 6f 6e 0a 2a 2a 20 72 6f 75 74 69  ocation.** routi
1afb0 6e 65 73 20 77 69 74 68 20 61 20 77 72 61 70 70  nes with a wrapp
1afc0 65 72 20 74 68 61 74 20 73 69 6d 75 6c 61 74 69  er that simulati
1afd0 6f 6e 73 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ons memory alloc
1afe0 61 74 69 6f 6e 20 66 61 69 6c 75 72 65 20 6f 72  ation failure or
1aff0 0a 2a 2a 20 74 72 61 63 6b 73 20 6d 65 6d 6f 72  .** tracks memor
1b000 79 20 75 73 61 67 65 2c 20 66 6f 72 20 65 78 61  y usage, for exa
1b010 6d 70 6c 65 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  mple. </dd>.**.*
1b020 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1b030 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 5d 5d  G_SMALL_MALLOC]]
1b040 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1b050 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 3c  IG_SMALL_MALLOC<
1b060 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
1b070 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1b080 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 20 6f 70 74  SMALL_MALLOC opt
1b090 69 6f 6e 20 74 61 6b 65 73 20 73 69 6e 67 6c 65  ion takes single
1b0a0 20 61 72 67 75 6d 65 6e 74 20 6f 66 0a 2a 2a 20   argument of.** 
1b0b0 74 79 70 65 20 69 6e 74 2c 20 69 6e 74 65 72 70  type int, interp
1b0c0 72 65 74 65 64 20 61 73 20 61 20 62 6f 6f 6c 65  reted as a boole
1b0d0 61 6e 2c 20 77 68 69 63 68 20 69 66 20 74 72 75  an, which if tru
1b0e0 65 20 70 72 6f 76 69 64 65 73 20 61 20 68 69 6e  e provides a hin
1b0f0 74 20 74 6f 0a 2a 2a 20 53 51 4c 69 74 65 20 74  t to.** SQLite t
1b100 68 61 74 20 69 74 20 73 68 6f 75 6c 64 20 61 76  hat it should av
1b110 6f 69 64 20 6c 61 72 67 65 20 6d 65 6d 6f 72 79  oid large memory
1b120 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 69 66 20   allocations if 
1b130 70 6f 73 73 69 62 6c 65 2e 0a 2a 2a 20 53 51 4c  possible..** SQL
1b140 69 74 65 20 77 69 6c 6c 20 72 75 6e 20 66 61 73  ite will run fas
1b150 74 65 72 20 69 66 20 69 74 20 69 73 20 66 72 65  ter if it is fre
1b160 65 20 74 6f 20 6d 61 6b 65 20 6c 61 72 67 65 20  e to make large 
1b170 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
1b180 6e 73 2c 0a 2a 2a 20 62 75 74 20 73 6f 6d 65 20  ns,.** but some 
1b190 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 69 67 68  application migh
1b1a0 74 20 70 72 65 66 65 72 20 74 6f 20 72 75 6e 20  t prefer to run 
1b1b0 73 6c 6f 77 65 72 20 69 6e 20 65 78 63 68 61 6e  slower in exchan
1b1c0 67 65 20 66 6f 72 0a 2a 2a 20 67 75 61 72 61 6e  ge for.** guaran
1b1d0 74 65 65 73 20 61 62 6f 75 74 20 6d 65 6d 6f 72  tees about memor
1b1e0 79 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20  y fragmentation 
1b1f0 74 68 61 74 20 61 72 65 20 70 6f 73 73 69 62 6c  that are possibl
1b200 65 20 69 66 20 6c 61 72 67 65 0a 2a 2a 20 61 6c  e if large.** al
1b210 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 20 61 76  locations are av
1b220 6f 69 64 65 64 2e 20 20 54 68 69 73 20 68 69 6e  oided.  This hin
1b230 74 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 66  t is normally of
1b240 66 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  f..** </dd>.**.*
1b250 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1b260 47 5f 4d 45 4d 53 54 41 54 55 53 5d 5d 20 3c 64  G_MEMSTATUS]] <d
1b270 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1b280 4d 45 4d 53 54 41 54 55 53 3c 2f 64 74 3e 0a 2a  MEMSTATUS</dt>.*
1b290 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c 49  * <dd> ^The SQLI
1b2a0 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41  TE_CONFIG_MEMSTA
1b2b0 54 55 53 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  TUS option takes
1b2c0 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
1b2d0 20 6f 66 20 74 79 70 65 20 69 6e 74 2c 0a 2a 2a   of type int,.**
1b2e0 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
1b2f0 61 20 62 6f 6f 6c 65 61 6e 2c 20 77 68 69 63 68  a boolean, which
1b300 20 65 6e 61 62 6c 65 73 20 6f 72 20 64 69 73 61   enables or disa
1b310 62 6c 65 73 20 74 68 65 20 63 6f 6c 6c 65 63 74  bles the collect
1b320 69 6f 6e 20 6f 66 0a 2a 2a 20 6d 65 6d 6f 72 79  ion of.** memory
1b330 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74   allocation stat
1b340 69 73 74 69 63 73 2e 20 5e 28 57 68 65 6e 20 6d  istics. ^(When m
1b350 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
1b360 20 73 74 61 74 69 73 74 69 63 73 20 61 72 65 0a   statistics are.
1b370 2a 2a 20 64 69 73 61 62 6c 65 64 2c 20 74 68 65  ** disabled, the
1b380 20 66 6f 6c 6c 6f 77 69 6e 67 20 53 51 4c 69 74   following SQLit
1b390 65 20 69 6e 74 65 72 66 61 63 65 73 20 62 65 63  e interfaces bec
1b3a0 6f 6d 65 20 6e 6f 6e 2d 6f 70 65 72 61 74 69 6f  ome non-operatio
1b3b0 6e 61 6c 3a 0a 2a 2a 20 20 20 3c 75 6c 3e 0a 2a  nal:.**   <ul>.*
1b3c0 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65  *   <li> [sqlite
1b3d0 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d  3_memory_used()]
1b3e0 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  .**   <li> [sqli
1b3f0 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
1b400 61 74 65 72 28 29 5d 0a 2a 2a 20 20 20 3c 6c 69  ater()].**   <li
1b410 3e 20 5b 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f  > [sqlite3_soft_
1b420 68 65 61 70 5f 6c 69 6d 69 74 36 34 28 29 5d 0a  heap_limit64()].
1b430 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  **   <li> [sqlit
1b440 65 33 5f 73 74 61 74 75 73 36 34 28 29 5d 0a 2a  e3_status64()].*
1b450 2a 20 20 20 3c 2f 75 6c 3e 29 5e 0a 2a 2a 20 5e  *   </ul>)^.** ^
1b460 4d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  Memory allocatio
1b470 6e 20 73 74 61 74 69 73 74 69 63 73 20 61 72 65  n statistics are
1b480 20 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61   enabled by defa
1b490 75 6c 74 20 75 6e 6c 65 73 73 20 53 51 4c 69 74  ult unless SQLit
1b4a0 65 20 69 73 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64  e is.** compiled
1b4b0 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 44 45   with [SQLITE_DE
1b4c0 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53 5d  FAULT_MEMSTATUS]
1b4d0 3d 30 20 69 6e 20 77 68 69 63 68 20 63 61 73 65  =0 in which case
1b4e0 20 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c 6c 6f 63   memory.** alloc
1b4f0 61 74 69 6f 6e 20 73 74 61 74 69 73 74 69 63 73  ation statistics
1b500 20 61 72 65 20 64 69 73 61 62 6c 65 64 20 62 79   are disabled by
1b510 20 64 65 66 61 75 6c 74 2e 0a 2a 2a 20 3c 2f 64   default..** </d
1b520 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
1b530 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43 48  E_CONFIG_SCRATCH
1b540 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1b550 4e 46 49 47 5f 53 43 52 41 54 43 48 3c 2f 64 74  NFIG_SCRATCH</dt
1b560 3e 0a 2a 2a 20 3c 64 64 3e 20 54 68 65 20 53 51  >.** <dd> The SQ
1b570 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41  LITE_CONFIG_SCRA
1b580 54 43 48 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f  TCH option is no
1b590 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0a 2a 2a   longer used..**
1b5a0 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
1b5b0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47  QLITE_CONFIG_PAG
1b5c0 45 43 41 43 48 45 5d 5d 20 3c 64 74 3e 53 51 4c  ECACHE]] <dt>SQL
1b5d0 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43  ITE_CONFIG_PAGEC
1b5e0 41 43 48 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  ACHE</dt>.** <dd
1b5f0 3e 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  > ^The SQLITE_CO
1b600 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45 20 6f  NFIG_PAGECACHE o
1b610 70 74 69 6f 6e 20 73 70 65 63 69 66 69 65 73 20  ption specifies 
1b620 61 20 6d 65 6d 6f 72 79 20 70 6f 6f 6c 0a 2a 2a  a memory pool.**
1b630 20 74 68 61 74 20 53 51 4c 69 74 65 20 63 61 6e   that SQLite can
1b640 20 75 73 65 20 66 6f 72 20 74 68 65 20 64 61 74   use for the dat
1b650 61 62 61 73 65 20 70 61 67 65 20 63 61 63 68 65  abase page cache
1b660 20 77 69 74 68 20 74 68 65 20 64 65 66 61 75 6c   with the defaul
1b670 74 20 70 61 67 65 0a 2a 2a 20 63 61 63 68 65 20  t page.** cache 
1b680 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20  implementation. 
1b690 20 0a 2a 2a 20 54 68 69 73 20 63 6f 6e 66 69 67   .** This config
1b6a0 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69  uration option i
1b6b0 73 20 61 20 6e 6f 2d 6f 70 20 69 66 20 61 6e 20  s a no-op if an 
1b6c0 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
1b6d0 6e 65 20 70 61 67 65 0a 2a 2a 20 63 61 63 68 65  ne page.** cache
1b6e0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
1b6f0 69 73 20 6c 6f 61 64 65 64 20 75 73 69 6e 67 20  is loaded using 
1b700 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  the [SQLITE_CONF
1b710 49 47 5f 50 43 41 43 48 45 32 5d 2e 0a 2a 2a 20  IG_PCACHE2]..** 
1b720 5e 54 68 65 72 65 20 61 72 65 20 74 68 72 65 65  ^There are three
1b730 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 53 51   arguments to SQ
1b740 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45  LITE_CONFIG_PAGE
1b750 43 41 43 48 45 3a 20 41 20 70 6f 69 6e 74 65 72  CACHE: A pointer
1b760 20 74 6f 0a 2a 2a 20 38 2d 62 79 74 65 20 61 6c   to.** 8-byte al
1b770 69 67 6e 65 64 20 6d 65 6d 6f 72 79 20 28 70 4d  igned memory (pM
1b780 65 6d 29 2c 20 74 68 65 20 73 69 7a 65 20 6f 66  em), the size of
1b790 20 65 61 63 68 20 70 61 67 65 20 63 61 63 68 65   each page cache
1b7a0 20 6c 69 6e 65 20 28 73 7a 29 2c 0a 2a 2a 20 61   line (sz),.** a
1b7b0 6e 64 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  nd the number of
1b7c0 20 63 61 63 68 65 20 6c 69 6e 65 73 20 28 4e 29   cache lines (N)
1b7d0 2e 0a 2a 2a 20 54 68 65 20 73 7a 20 61 72 67 75  ..** The sz argu
1b7e0 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 74  ment should be t
1b7f0 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6c  he size of the l
1b800 61 72 67 65 73 74 20 64 61 74 61 62 61 73 65 20  argest database 
1b810 70 61 67 65 0a 2a 2a 20 28 61 20 70 6f 77 65 72  page.** (a power
1b820 20 6f 66 20 74 77 6f 20 62 65 74 77 65 65 6e 20   of two between 
1b830 35 31 32 20 61 6e 64 20 36 35 35 33 36 29 20 70  512 and 65536) p
1b840 6c 75 73 20 73 6f 6d 65 20 65 78 74 72 61 20 62  lus some extra b
1b850 79 74 65 73 20 66 6f 72 20 65 61 63 68 0a 2a 2a  ytes for each.**
1b860 20 70 61 67 65 20 68 65 61 64 65 72 2e 20 20 5e   page header.  ^
1b870 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 78  The number of ex
1b880 74 72 61 20 62 79 74 65 73 20 6e 65 65 64 65 64  tra bytes needed
1b890 20 62 79 20 74 68 65 20 70 61 67 65 20 68 65 61   by the page hea
1b8a0 64 65 72 0a 2a 2a 20 63 61 6e 20 62 65 20 64 65  der.** can be de
1b8b0 74 65 72 6d 69 6e 65 64 20 75 73 69 6e 67 20 5b  termined using [
1b8c0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1b8d0 41 43 48 45 5f 48 44 52 53 5a 5d 2e 0a 2a 2a 20  ACHE_HDRSZ]..** 
1b8e0 5e 49 74 20 69 73 20 68 61 72 6d 6c 65 73 73 2c  ^It is harmless,
1b8f0 20 61 70 61 72 74 20 66 72 6f 6d 20 74 68 65 20   apart from the 
1b900 77 61 73 74 65 64 20 6d 65 6d 6f 72 79 2c 0a 2a  wasted memory,.*
1b910 2a 20 66 6f 72 20 74 68 65 20 73 7a 20 70 61 72  * for the sz par
1b920 61 6d 65 74 65 72 20 74 6f 20 62 65 20 6c 61 72  ameter to be lar
1b930 67 65 72 20 74 68 61 6e 20 6e 65 63 65 73 73 61  ger than necessa
1b940 72 79 2e 20 20 54 68 65 20 70 4d 65 6d 0a 2a 2a  ry.  The pMem.**
1b950 20 61 72 67 75 6d 65 6e 74 20 6d 75 73 74 20 62   argument must b
1b960 65 20 65 69 74 68 65 72 20 61 20 4e 55 4c 4c 20  e either a NULL 
1b970 70 6f 69 6e 74 65 72 20 6f 72 20 61 20 70 6f 69  pointer or a poi
1b980 6e 74 65 72 20 74 6f 20 61 6e 20 38 2d 62 79 74  nter to an 8-byt
1b990 65 0a 2a 2a 20 61 6c 69 67 6e 65 64 20 62 6c 6f  e.** aligned blo
1b9a0 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20  ck of memory of 
1b9b0 61 74 20 6c 65 61 73 74 20 73 7a 2a 4e 20 62 79  at least sz*N by
1b9c0 74 65 73 2c 20 6f 74 68 65 72 77 69 73 65 0a 2a  tes, otherwise.*
1b9d0 2a 20 73 75 62 73 65 71 75 65 6e 74 20 62 65 68  * subsequent beh
1b9e0 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e  avior is undefin
1b9f0 65 64 2e 0a 2a 2a 20 5e 57 68 65 6e 20 70 4d 65  ed..** ^When pMe
1ba00 6d 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20 53  m is not NULL, S
1ba10 51 4c 69 74 65 20 77 69 6c 6c 20 73 74 72 69 76  QLite will striv
1ba20 65 20 74 6f 20 75 73 65 20 74 68 65 20 6d 65 6d  e to use the mem
1ba30 6f 72 79 20 70 72 6f 76 69 64 65 64 0a 2a 2a 20  ory provided.** 
1ba40 74 6f 20 73 61 74 69 73 66 79 20 70 61 67 65 20  to satisfy page 
1ba50 63 61 63 68 65 20 6e 65 65 64 73 2c 20 66 61 6c  cache needs, fal
1ba60 6c 69 6e 67 20 62 61 63 6b 20 74 6f 20 5b 73 71  ling back to [sq
1ba70 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20  lite3_malloc()] 
1ba80 69 66 0a 2a 2a 20 61 20 70 61 67 65 20 63 61 63  if.** a page cac
1ba90 68 65 20 6c 69 6e 65 20 69 73 20 6c 61 72 67 65  he line is large
1baa0 72 20 74 68 61 6e 20 73 7a 20 62 79 74 65 73 20  r than sz bytes 
1bab0 6f 72 20 69 66 20 61 6c 6c 20 6f 66 20 74 68 65  or if all of the
1bac0 20 70 4d 65 6d 20 62 75 66 66 65 72 0a 2a 2a 20   pMem buffer.** 
1bad0 69 73 20 65 78 68 61 75 73 74 65 64 2e 0a 2a 2a  is exhausted..**
1bae0 20 5e 49 66 20 70 4d 65 6d 20 69 73 20 4e 55 4c   ^If pMem is NUL
1baf0 4c 20 61 6e 64 20 4e 20 69 73 20 6e 6f 6e 2d 7a  L and N is non-z
1bb00 65 72 6f 2c 20 74 68 65 6e 20 65 61 63 68 20 64  ero, then each d
1bb10 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1bb20 6f 6e 0a 2a 2a 20 64 6f 65 73 20 61 6e 20 69 6e  on.** does an in
1bb30 69 74 69 61 6c 20 62 75 6c 6b 20 61 6c 6c 6f 63  itial bulk alloc
1bb40 61 74 69 6f 6e 20 66 6f 72 20 70 61 67 65 20 63  ation for page c
1bb50 61 63 68 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20 66  ache memory.** f
1bb60 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  rom [sqlite3_mal
1bb70 6c 6f 63 28 29 5d 20 73 75 66 66 69 63 69 65 6e  loc()] sufficien
1bb80 74 20 66 6f 72 20 4e 20 63 61 63 68 65 20 6c 69  t for N cache li
1bb90 6e 65 73 20 69 66 20 4e 20 69 73 20 70 6f 73 69  nes if N is posi
1bba0 74 69 76 65 20 6f 72 0a 2a 2a 20 6f 66 20 2d 31  tive or.** of -1
1bbb0 30 32 34 2a 4e 20 62 79 74 65 73 20 69 66 20 4e  024*N bytes if N
1bbc0 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20 2e 20   is negative, . 
1bbd0 5e 49 66 20 61 64 64 69 74 69 6f 6e 61 6c 0a 2a  ^If additional.*
1bbe0 2a 20 70 61 67 65 20 63 61 63 68 65 20 6d 65 6d  * page cache mem
1bbf0 6f 72 79 20 69 73 20 6e 65 65 64 65 64 20 62 65  ory is needed be
1bc00 79 6f 6e 64 20 77 68 61 74 20 69 73 20 70 72 6f  yond what is pro
1bc10 76 69 64 65 64 20 62 79 20 74 68 65 20 69 6e 69  vided by the ini
1bc20 74 69 61 6c 0a 2a 2a 20 61 6c 6c 6f 63 61 74 69  tial.** allocati
1bc30 6f 6e 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  on, then SQLite 
1bc40 67 6f 65 73 20 74 6f 20 5b 73 71 6c 69 74 65 33  goes to [sqlite3
1bc50 5f 6d 61 6c 6c 6f 63 28 29 5d 20 73 65 70 61 72  _malloc()] separ
1bc60 61 74 65 6c 79 20 66 6f 72 20 65 61 63 68 0a 2a  ately for each.*
1bc70 2a 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 61 63  * additional cac
1bc80 68 65 20 6c 69 6e 65 2e 20 3c 2f 64 64 3e 0a 2a  he line. </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 48 45 41 50 5d 5d 20 3c 64 74 3e  NFIG_HEAP]] <dt>
1bcb0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
1bcc0 41 50 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  AP</dt>.** <dd> 
1bcd0 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  ^The SQLITE_CONF
1bce0 49 47 5f 48 45 41 50 20 6f 70 74 69 6f 6e 20 73  IG_HEAP option s
1bcf0 70 65 63 69 66 69 65 73 20 61 20 73 74 61 74 69  pecifies a stati
1bd00 63 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 20  c memory buffer 
1bd10 0a 2a 2a 20 74 68 61 74 20 53 51 4c 69 74 65 20  .** that SQLite 
1bd20 77 69 6c 6c 20 75 73 65 20 66 6f 72 20 61 6c 6c  will use for all
1bd30 20 6f 66 20 69 74 73 20 64 79 6e 61 6d 69 63 20   of its dynamic 
1bd40 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
1bd50 6e 20 6e 65 65 64 73 0a 2a 2a 20 62 65 79 6f 6e  n needs.** beyon
1bd60 64 20 74 68 6f 73 65 20 70 72 6f 76 69 64 65 64  d those provided
1bd70 20 66 6f 72 20 62 79 20 5b 53 51 4c 49 54 45 5f   for by [SQLITE_
1bd80 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45  CONFIG_PAGECACHE
1bd90 5d 2e 0a 2a 2a 20 5e 54 68 65 20 53 51 4c 49 54  ]..** ^The SQLIT
1bda0 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 20 6f 70  E_CONFIG_HEAP op
1bdb0 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 61 76 61  tion is only ava
1bdc0 69 6c 61 62 6c 65 20 69 66 20 53 51 4c 69 74 65  ilable if SQLite
1bdd0 20 69 73 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20   is compiled.** 
1bde0 77 69 74 68 20 65 69 74 68 65 72 20 5b 53 51 4c  with either [SQL
1bdf0 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
1be00 53 33 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f 45  S3] or [SQLITE_E
1be10 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35 5d 20 61  NABLE_MEMSYS5] a
1be20 6e 64 20 72 65 74 75 72 6e 73 0a 2a 2a 20 5b 53  nd returns.** [S
1be30 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 69 66 20  QLITE_ERROR] if 
1be40 69 6e 76 6f 6b 65 64 20 6f 74 68 65 72 77 69 73  invoked otherwis
1be50 65 2e 0a 2a 2a 20 5e 54 68 65 72 65 20 61 72 65  e..** ^There are
1be60 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 73   three arguments
1be70 20 74 6f 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49   to SQLITE_CONFI
1be80 47 5f 48 45 41 50 3a 0a 2a 2a 20 41 6e 20 38 2d  G_HEAP:.** An 8-
1be90 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f 69  byte aligned poi
1bea0 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f  nter to the memo
1beb0 72 79 2c 0a 2a 2a 20 74 68 65 20 6e 75 6d 62 65  ry,.** the numbe
1bec0 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68  r of bytes in th
1bed0 65 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 2c  e memory buffer,
1bee0 20 61 6e 64 20 74 68 65 20 6d 69 6e 69 6d 75 6d   and the minimum
1bef0 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65   allocation size
1bf00 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 69 72  ..** ^If the fir
1bf10 73 74 20 70 6f 69 6e 74 65 72 20 28 74 68 65 20  st pointer (the 
1bf20 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65 72 29 20  memory pointer) 
1bf30 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 53 51  is NULL, then SQ
1bf40 4c 69 74 65 20 72 65 76 65 72 74 73 0a 2a 2a 20  Lite reverts.** 
1bf50 74 6f 20 75 73 69 6e 67 20 69 74 73 20 64 65 66  to using its def
1bf60 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ault memory allo
1bf70 63 61 74 6f 72 20 28 74 68 65 20 73 79 73 74 65  cator (the syste
1bf80 6d 20 6d 61 6c 6c 6f 63 28 29 20 69 6d 70 6c 65  m malloc() imple
1bf90 6d 65 6e 74 61 74 69 6f 6e 29 2c 0a 2a 2a 20 75  mentation),.** u
1bfa0 6e 64 6f 69 6e 67 20 61 6e 79 20 70 72 69 6f 72  ndoing any prior
1bfb0 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20 5b   invocation of [
1bfc0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41  SQLITE_CONFIG_MA
1bfd0 4c 4c 4f 43 5d 2e 20 20 5e 49 66 20 74 68 65 0a  LLOC].  ^If the.
1bfe0 2a 2a 20 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65  ** memory pointe
1bff0 72 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 74 68  r is not NULL th
1c000 65 6e 20 74 68 65 20 61 6c 74 65 72 6e 61 74 69  en the alternati
1c010 76 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c 6c  ve memory.** all
1c020 6f 63 61 74 6f 72 20 69 73 20 65 6e 67 61 67 65  ocator is engage
1c030 64 20 74 6f 20 68 61 6e 64 6c 65 20 61 6c 6c 20  d to handle all 
1c040 6f 66 20 53 51 4c 69 74 65 73 20 6d 65 6d 6f 72  of SQLites memor
1c050 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65 65  y allocation nee
1c060 64 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ds..** The first
1c070 20 70 6f 69 6e 74 65 72 20 28 74 68 65 20 6d 65   pointer (the me
1c080 6d 6f 72 79 20 70 6f 69 6e 74 65 72 29 20 6d 75  mory pointer) mu
1c090 73 74 20 62 65 20 61 6c 69 67 6e 65 64 20 74 6f  st be aligned to
1c0a0 20 61 6e 20 38 2d 62 79 74 65 0a 2a 2a 20 62 6f   an 8-byte.** bo
1c0b0 75 6e 64 61 72 79 20 6f 72 20 73 75 62 73 65 71  undary or subseq
1c0c0 75 65 6e 74 20 62 65 68 61 76 69 6f 72 20 6f 66  uent behavior of
1c0d0 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 62 65 20   SQLite will be 
1c0e0 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 20 54 68  undefined..** Th
1c0f0 65 20 6d 69 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61  e minimum alloca
1c100 74 69 6f 6e 20 73 69 7a 65 20 69 73 20 63 61 70  tion size is cap
1c110 70 65 64 20 61 74 20 32 2a 2a 31 32 2e 20 52 65  ped at 2**12. Re
1c120 61 73 6f 6e 61 62 6c 65 20 76 61 6c 75 65 73 0a  asonable values.
1c130 2a 2a 20 66 6f 72 20 74 68 65 20 6d 69 6e 69 6d  ** for the minim
1c140 75 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69  um allocation si
1c150 7a 65 20 61 72 65 20 32 2a 2a 35 20 74 68 72 6f  ze are 2**5 thro
1c160 75 67 68 20 32 2a 2a 38 2e 3c 2f 64 64 3e 0a 2a  ugh 2**8.</dd>.*
1c170 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1c180 4e 46 49 47 5f 4d 55 54 45 58 5d 5d 20 3c 64 74  NFIG_MUTEX]] <dt
1c190 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  >SQLITE_CONFIG_M
1c1a0 55 54 45 58 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  UTEX</dt>.** <dd
1c1b0 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43  > ^(The SQLITE_C
1c1c0 4f 4e 46 49 47 5f 4d 55 54 45 58 20 6f 70 74 69  ONFIG_MUTEX opti
1c1d0 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c  on takes a singl
1c1e0 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68  e argument which
1c1f0 20 69 73 20 61 0a 2a 2a 20 70 6f 69 6e 74 65 72   is a.** pointer
1c200 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20   to an instance 
1c210 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  of the [sqlite3_
1c220 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 5d 20 73  mutex_methods] s
1c230 74 72 75 63 74 75 72 65 2e 0a 2a 2a 20 54 68 65  tructure..** The
1c240 20 61 72 67 75 6d 65 6e 74 20 73 70 65 63 69 66   argument specif
1c250 69 65 73 20 61 6c 74 65 72 6e 61 74 69 76 65 20  ies alternative 
1c260 6c 6f 77 2d 6c 65 76 65 6c 20 6d 75 74 65 78 20  low-level mutex 
1c270 72 6f 75 74 69 6e 65 73 20 74 6f 20 62 65 20 75  routines to be u
1c280 73 65 64 0a 2a 2a 20 69 6e 20 70 6c 61 63 65 20  sed.** in place 
1c290 74 68 65 20 6d 75 74 65 78 20 72 6f 75 74 69 6e  the mutex routin
1c2a0 65 73 20 62 75 69 6c 74 20 69 6e 74 6f 20 53 51  es built into SQ
1c2b0 4c 69 74 65 2e 29 5e 20 20 5e 53 51 4c 69 74 65  Lite.)^  ^SQLite
1c2c0 20 6d 61 6b 65 73 20 61 20 63 6f 70 79 20 6f 66   makes a copy of
1c2d0 0a 2a 2a 20 74 68 65 20 63 6f 6e 74 65 6e 74 20  .** the content 
1c2e0 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  of the [sqlite3_
1c2f0 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 5d 20 73  mutex_methods] s
1c300 74 72 75 63 74 75 72 65 20 62 65 66 6f 72 65 20  tructure before 
1c310 74 68 65 20 63 61 6c 6c 20 74 6f 0a 2a 2a 20 5b  the call to.** [
1c320 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
1c330 5d 20 72 65 74 75 72 6e 73 2e 20 5e 49 66 20 53  ] returns. ^If S
1c340 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
1c350 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53  d with.** the [S
1c360 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
1c370 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44   | SQLITE_THREAD
1c380 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d  SAFE=0] compile-
1c390 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e  time option then
1c3a0 0a 2a 2a 20 74 68 65 20 65 6e 74 69 72 65 20 6d  .** the entire m
1c3b0 75 74 65 78 69 6e 67 20 73 75 62 73 79 73 74 65  utexing subsyste
1c3c0 6d 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f  m is omitted fro
1c3d0 6d 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20  m the build and 
1c3e0 68 65 6e 63 65 20 63 61 6c 6c 73 20 74 6f 0a 2a  hence calls to.*
1c3f0 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  * [sqlite3_confi
1c400 67 28 29 5d 20 77 69 74 68 20 74 68 65 20 53 51  g()] with the SQ
1c410 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45  LITE_CONFIG_MUTE
1c420 58 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  X configuration 
1c430 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 2a 2a 20 72  option will.** r
1c440 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45 52  eturn [SQLITE_ER
1c450 52 4f 52 5d 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  ROR].</dd>.**.**
1c460 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1c470 5f 47 45 54 4d 55 54 45 58 5d 5d 20 3c 64 74 3e  _GETMUTEX]] <dt>
1c480 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
1c490 54 4d 55 54 45 58 3c 2f 64 74 3e 0a 2a 2a 20 3c  TMUTEX</dt>.** <
1c4a0 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45  dd> ^(The SQLITE
1c4b0 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58  _CONFIG_GETMUTEX
1c4c0 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20   option takes a 
1c4d0 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20  single argument 
1c4e0 77 68 69 63 68 0a 2a 2a 20 69 73 20 61 20 70 6f  which.** is a po
1c4f0 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74  inter to an inst
1c500 61 6e 63 65 20 6f 66 20 74 68 65 20 5b 73 71 6c  ance of the [sql
1c510 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f  ite3_mutex_metho
1c520 64 73 5d 20 73 74 72 75 63 74 75 72 65 2e 20 20  ds] structure.  
1c530 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  The.** [sqlite3_
1c540 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 5d 0a 2a  mutex_methods].*
1c550 2a 20 73 74 72 75 63 74 75 72 65 20 69 73 20 66  * structure is f
1c560 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 63  illed with the c
1c570 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65 64  urrently defined
1c580 20 6d 75 74 65 78 20 72 6f 75 74 69 6e 65 73 2e   mutex routines.
1c590 29 5e 0a 2a 2a 20 54 68 69 73 20 6f 70 74 69 6f  )^.** This optio
1c5a0 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  n can be used to
1c5b0 20 6f 76 65 72 6c 6f 61 64 20 74 68 65 20 64 65   overload the de
1c5c0 66 61 75 6c 74 20 6d 75 74 65 78 20 61 6c 6c 6f  fault mutex allo
1c5d0 63 61 74 69 6f 6e 0a 2a 2a 20 72 6f 75 74 69 6e  cation.** routin
1c5e0 65 73 20 77 69 74 68 20 61 20 77 72 61 70 70 65  es with a wrappe
1c5f0 72 20 75 73 65 64 20 74 6f 20 74 72 61 63 6b 20  r used to track 
1c600 6d 75 74 65 78 20 75 73 61 67 65 20 66 6f 72 20  mutex usage for 
1c610 70 65 72 66 6f 72 6d 61 6e 63 65 0a 2a 2a 20 70  performance.** p
1c620 72 6f 66 69 6c 69 6e 67 20 6f 72 20 74 65 73 74  rofiling or test
1c630 69 6e 67 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65  ing, for example
1c640 2e 20 20 20 5e 49 66 20 53 51 4c 69 74 65 20 69  .   ^If SQLite i
1c650 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a  s compiled with.
1c660 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54  ** the [SQLITE_T
1c670 48 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49  HREADSAFE | SQLI
1c680 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d  TE_THREADSAFE=0]
1c690 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
1c6a0 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 74 68 65  tion then.** the
1c6b0 20 65 6e 74 69 72 65 20 6d 75 74 65 78 69 6e 67   entire mutexing
1c6c0 20 73 75 62 73 79 73 74 65 6d 20 69 73 20 6f 6d   subsystem is om
1c6d0 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62  itted from the b
1c6e0 75 69 6c 64 20 61 6e 64 20 68 65 6e 63 65 20 63  uild and hence c
1c6f0 61 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69  alls to.** [sqli
1c700 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69  te3_config()] wi
1c710 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f 43 4f  th the SQLITE_CO
1c720 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 20 63 6f  NFIG_GETMUTEX co
1c730 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1c740 6f 6e 20 77 69 6c 6c 0a 2a 2a 20 72 65 74 75 72  on will.** retur
1c750 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d  n [SQLITE_ERROR]
1c760 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  .</dd>.**.** [[S
1c770 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f  QLITE_CONFIG_LOO
1c780 4b 41 53 49 44 45 5d 5d 20 3c 64 74 3e 53 51 4c  KASIDE]] <dt>SQL
1c790 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41  ITE_CONFIG_LOOKA
1c7a0 53 49 44 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  SIDE</dt>.** <dd
1c7b0 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43  > ^(The SQLITE_C
1c7c0 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20  ONFIG_LOOKASIDE 
1c7d0 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 74 77 6f  option takes two
1c7e0 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74 20   arguments that 
1c7f0 64 65 74 65 72 6d 69 6e 65 0a 2a 2a 20 74 68 65  determine.** the
1c800 20 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f 66   default size of
1c810 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72   lookaside memor
1c820 79 20 6f 6e 20 65 61 63 68 20 5b 64 61 74 61 62  y on each [datab
1c830 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e  ase connection].
1c840 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72  .** The first ar
1c850 67 75 6d 65 6e 74 20 69 73 20 74 68 65 0a 2a 2a  gument is the.**
1c860 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 6c 6f   size of each lo
1c870 6f 6b 61 73 69 64 65 20 62 75 66 66 65 72 20 73  okaside buffer s
1c880 6c 6f 74 20 61 6e 64 20 74 68 65 20 73 65 63 6f  lot and the seco
1c890 6e 64 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72  nd is the number
1c8a0 20 6f 66 0a 2a 2a 20 73 6c 6f 74 73 20 61 6c 6c   of.** slots all
1c8b0 6f 63 61 74 65 64 20 74 6f 20 65 61 63 68 20 64  ocated to each d
1c8c0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1c8d0 6f 6e 2e 29 5e 20 20 5e 28 53 51 4c 49 54 45 5f  on.)^  ^(SQLITE_
1c8e0 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
1c8f0 0a 2a 2a 20 73 65 74 73 20 74 68 65 20 3c 69 3e  .** sets the <i>
1c900 64 65 66 61 75 6c 74 3c 2f 69 3e 20 6c 6f 6f 6b  default</i> look
1c910 61 73 69 64 65 20 73 69 7a 65 2e 20 54 68 65 20  aside size. The 
1c920 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  [SQLITE_DBCONFIG
1c930 5f 4c 4f 4f 4b 41 53 49 44 45 5d 0a 2a 2a 20 6f  _LOOKASIDE].** o
1c940 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65  ption to [sqlite
1c950 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 63  3_db_config()] c
1c960 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63 68  an be used to ch
1c970 61 6e 67 65 20 74 68 65 20 6c 6f 6f 6b 61 73 69  ange the lookasi
1c980 64 65 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74  de.** configurat
1c990 69 6f 6e 20 6f 6e 20 69 6e 64 69 76 69 64 75 61  ion on individua
1c9a0 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 29 5e  l connections.)^
1c9b0 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
1c9c0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41  QLITE_CONFIG_PCA
1c9d0 43 48 45 32 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  CHE2]] <dt>SQLIT
1c9e0 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 32  E_CONFIG_PCACHE2
1c9f0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28  </dt>.** <dd> ^(
1ca00 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1ca10 47 5f 50 43 41 43 48 45 32 20 6f 70 74 69 6f 6e  G_PCACHE2 option
1ca20 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20   takes a single 
1ca30 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20 69  argument which i
1ca40 73 20 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20  s .** a pointer 
1ca50 74 6f 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 70  to an [sqlite3_p
1ca60 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 5d 20  cache_methods2] 
1ca70 6f 62 6a 65 63 74 2e 20 20 54 68 69 73 20 6f 62  object.  This ob
1ca80 6a 65 63 74 20 73 70 65 63 69 66 69 65 73 0a 2a  ject specifies.*
1ca90 2a 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20  * the interface 
1caa0 74 6f 20 61 20 63 75 73 74 6f 6d 20 70 61 67 65  to a custom page
1cab0 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74   cache implement
1cac0 61 74 69 6f 6e 2e 29 5e 0a 2a 2a 20 5e 53 51 4c  ation.)^.** ^SQL
1cad0 69 74 65 20 6d 61 6b 65 73 20 61 20 63 6f 70 79  ite makes a copy
1cae0 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   of the [sqlite3
1caf0 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32  _pcache_methods2
1cb00 5d 20 6f 62 6a 65 63 74 2e 3c 2f 64 64 3e 0a 2a  ] object.</dd>.*
1cb10 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1cb20 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 32 5d  NFIG_GETPCACHE2]
1cb30 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1cb40 46 49 47 5f 47 45 54 50 43 41 43 48 45 32 3c 2f  FIG_GETPCACHE2</
1cb50 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68  dt>.** <dd> ^(Th
1cb60 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1cb70 47 45 54 50 43 41 43 48 45 32 20 6f 70 74 69 6f  GETPCACHE2 optio
1cb80 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1cb90 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 0a   argument which.
1cba0 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  ** is a pointer 
1cbb0 74 6f 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 70  to an [sqlite3_p
1cbc0 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 5d 20  cache_methods2] 
1cbd0 6f 62 6a 65 63 74 2e 20 20 53 51 4c 69 74 65 20  object.  SQLite 
1cbe0 63 6f 70 69 65 73 20 6f 66 0a 2a 2a 20 74 68 65  copies of.** the
1cbf0 20 63 75 72 72 65 6e 74 20 70 61 67 65 20 63 61   current page ca
1cc00 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  che implementati
1cc10 6f 6e 20 69 6e 74 6f 20 74 68 61 74 20 6f 62 6a  on into that obj
1cc20 65 63 74 2e 29 5e 20 3c 2f 64 64 3e 0a 2a 2a 0a  ect.)^ </dd>.**.
1cc30 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1cc40 49 47 5f 4c 4f 47 5d 5d 20 3c 64 74 3e 53 51 4c  IG_LOG]] <dt>SQL
1cc50 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 3c 2f  ITE_CONFIG_LOG</
1cc60 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 54 68 65 20  dt>.** <dd> The 
1cc70 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f  SQLITE_CONFIG_LO
1cc80 47 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  G option is used
1cc90 20 74 6f 20 63 6f 6e 66 69 67 75 72 65 20 74 68   to configure th
1cca0 65 20 53 51 4c 69 74 65 0a 2a 2a 20 67 6c 6f 62  e SQLite.** glob
1ccb0 61 6c 20 5b 65 72 72 6f 72 20 6c 6f 67 5d 2e 0a  al [error log]..
1ccc0 2a 2a 20 28 5e 54 68 65 20 53 51 4c 49 54 45 5f  ** (^The SQLITE_
1ccd0 43 4f 4e 46 49 47 5f 4c 4f 47 20 6f 70 74 69 6f  CONFIG_LOG optio
1cce0 6e 20 74 61 6b 65 73 20 74 77 6f 20 61 72 67 75  n takes two argu
1ccf0 6d 65 6e 74 73 3a 20 61 20 70 6f 69 6e 74 65 72  ments: a pointer
1cd00 20 74 6f 20 61 0a 2a 2a 20 66 75 6e 63 74 69 6f   to a.** functio
1cd10 6e 20 77 69 74 68 20 61 20 63 61 6c 6c 20 73 69  n with a call si
1cd20 67 6e 61 74 75 72 65 20 6f 66 20 76 6f 69 64 28  gnature of void(
1cd30 2a 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e  *)(void*,int,con
1cd40 73 74 20 63 68 61 72 2a 29 2c 20 0a 2a 2a 20 61  st char*), .** a
1cd50 6e 64 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  nd a pointer to 
1cd60 76 6f 69 64 2e 20 5e 49 66 20 74 68 65 20 66 75  void. ^If the fu
1cd70 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69  nction pointer i
1cd80 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20 69 74 20 69  s not NULL, it i
1cd90 73 0a 2a 2a 20 69 6e 76 6f 6b 65 64 20 62 79 20  s.** invoked by 
1cda0 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20  [sqlite3_log()] 
1cdb0 74 6f 20 70 72 6f 63 65 73 73 20 65 61 63 68 20  to process each 
1cdc0 6c 6f 67 67 69 6e 67 20 65 76 65 6e 74 2e 20 20  logging event.  
1cdd0 5e 49 66 20 74 68 65 0a 2a 2a 20 66 75 6e 63 74  ^If the.** funct
1cde0 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69 73 20 4e  ion pointer is N
1cdf0 55 4c 4c 2c 20 74 68 65 20 5b 73 71 6c 69 74 65  ULL, the [sqlite
1ce00 33 5f 6c 6f 67 28 29 5d 20 69 6e 74 65 72 66 61  3_log()] interfa
1ce10 63 65 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d  ce becomes a no-
1ce20 6f 70 2e 0a 2a 2a 20 5e 54 68 65 20 76 6f 69 64  op..** ^The void
1ce30 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20 69 73   pointer that is
1ce40 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   the second argu
1ce50 6d 65 6e 74 20 74 6f 20 53 51 4c 49 54 45 5f 43  ment to SQLITE_C
1ce60 4f 4e 46 49 47 5f 4c 4f 47 20 69 73 0a 2a 2a 20  ONFIG_LOG is.** 
1ce70 70 61 73 73 65 64 20 74 68 72 6f 75 67 68 20 61  passed through a
1ce80 73 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61  s the first para
1ce90 6d 65 74 65 72 20 74 6f 20 74 68 65 20 61 70 70  meter to the app
1cea0 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64  lication-defined
1ceb0 20 6c 6f 67 67 65 72 0a 2a 2a 20 66 75 6e 63 74   logger.** funct
1cec0 69 6f 6e 20 77 68 65 6e 65 76 65 72 20 74 68 61  ion whenever tha
1ced0 74 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e  t function is in
1cee0 76 6f 6b 65 64 2e 20 20 5e 54 68 65 20 73 65 63  voked.  ^The sec
1cef0 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ond parameter to
1cf00 0a 2a 2a 20 74 68 65 20 6c 6f 67 67 65 72 20 66  .** the logger f
1cf10 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 63 6f 70  unction is a cop
1cf20 79 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 70  y of the first p
1cf30 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
1cf40 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 2a 2a  corresponding.**
1cf50 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d   [sqlite3_log()]
1cf60 20 63 61 6c 6c 20 61 6e 64 20 69 73 20 69 6e 74   call and is int
1cf70 65 6e 64 65 64 20 74 6f 20 62 65 20 61 20 5b 72  ended to be a [r
1cf80 65 73 75 6c 74 20 63 6f 64 65 5d 20 6f 72 20 61  esult code] or a
1cf90 6e 0a 2a 2a 20 5b 65 78 74 65 6e 64 65 64 20 72  n.** [extended r
1cfa0 65 73 75 6c 74 20 63 6f 64 65 5d 2e 20 20 5e 54  esult code].  ^T
1cfb0 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74  he third paramet
1cfc0 65 72 20 70 61 73 73 65 64 20 74 6f 20 74 68 65  er passed to the
1cfd0 20 6c 6f 67 67 65 72 20 69 73 0a 2a 2a 20 6c 6f   logger is.** lo
1cfe0 67 20 6d 65 73 73 61 67 65 20 61 66 74 65 72 20  g message after 
1cff0 66 6f 72 6d 61 74 74 69 6e 67 20 76 69 61 20 5b  formatting via [
1d000 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66  sqlite3_snprintf
1d010 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 69  ()]..** The SQLi
1d020 74 65 20 6c 6f 67 67 69 6e 67 20 69 6e 74 65 72  te logging inter
1d030 66 61 63 65 20 69 73 20 6e 6f 74 20 72 65 65 6e  face is not reen
1d040 74 72 61 6e 74 3b 20 74 68 65 20 6c 6f 67 67 65  trant; the logge
1d050 72 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 73 75  r function.** su
1d060 70 70 6c 69 65 64 20 62 79 20 74 68 65 20 61 70  pplied by the ap
1d070 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e  plication must n
1d080 6f 74 20 69 6e 76 6f 6b 65 20 61 6e 79 20 53 51  ot invoke any SQ
1d090 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e 0a  Lite interface..
1d0a0 2a 2a 20 49 6e 20 61 20 6d 75 6c 74 69 2d 74 68  ** In a multi-th
1d0b0 72 65 61 64 65 64 20 61 70 70 6c 69 63 61 74 69  readed applicati
1d0c0 6f 6e 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74  on, the applicat
1d0d0 69 6f 6e 2d 64 65 66 69 6e 65 64 20 6c 6f 67 67  ion-defined logg
1d0e0 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 6d  er.** function m
1d0f0 75 73 74 20 62 65 20 74 68 72 65 61 64 73 61 66  ust be threadsaf
1d100 65 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b  e. </dd>.**.** [
1d110 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55  [SQLITE_CONFIG_U
1d120 52 49 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  RI]] <dt>SQLITE_
1d130 43 4f 4e 46 49 47 5f 55 52 49 0a 2a 2a 20 3c 64  CONFIG_URI.** <d
1d140 64 3e 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43  d>^(The SQLITE_C
1d150 4f 4e 46 49 47 5f 55 52 49 20 6f 70 74 69 6f 6e  ONFIG_URI option
1d160 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20   takes a single 
1d170 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 79 70 65  argument of type
1d180 20 69 6e 74 2e 0a 2a 2a 20 49 66 20 6e 6f 6e 2d   int..** If non-
1d190 7a 65 72 6f 2c 20 74 68 65 6e 20 55 52 49 20 68  zero, then URI h
1d1a0 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61  andling is globa
1d1b0 6c 6c 79 20 65 6e 61 62 6c 65 64 2e 20 49 66 20  lly enabled. If 
1d1c0 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 69 73  the parameter is
1d1d0 20 7a 65 72 6f 2c 0a 2a 2a 20 74 68 65 6e 20 55   zero,.** then U
1d1e0 52 49 20 68 61 6e 64 6c 69 6e 67 20 69 73 20 67  RI handling is g
1d1f0 6c 6f 62 61 6c 6c 79 20 64 69 73 61 62 6c 65 64  lobally disabled
1d200 2e 29 5e 20 5e 49 66 20 55 52 49 20 68 61 6e 64  .)^ ^If URI hand
1d210 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61 6c 6c 79  ling is globally
1d220 0a 2a 2a 20 65 6e 61 62 6c 65 64 2c 20 61 6c 6c  .** enabled, all
1d230 20 66 69 6c 65 6e 61 6d 65 73 20 70 61 73 73 65   filenames passe
1d240 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70  d to [sqlite3_op
1d250 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  en()], [sqlite3_
1d260 6f 70 65 6e 5f 76 32 28 29 5d 2c 0a 2a 2a 20 5b  open_v2()],.** [
1d270 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29  sqlite3_open16()
1d280 5d 20 6f 72 0a 2a 2a 20 73 70 65 63 69 66 69 65  ] or.** specifie
1d290 64 20 61 73 20 70 61 72 74 20 6f 66 20 5b 41 54  d as part of [AT
1d2a0 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64 73 20 61  TACH] commands a
1d2b0 72 65 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  re interpreted a
1d2c0 73 20 55 52 49 73 2c 20 72 65 67 61 72 64 6c 65  s URIs, regardle
1d2d0 73 73 0a 2a 2a 20 6f 66 20 77 68 65 74 68 65 72  ss.** of whether
1d2e0 20 6f 72 20 6e 6f 74 20 74 68 65 20 5b 53 51 4c   or not the [SQL
1d2f0 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d 20 66 6c  ITE_OPEN_URI] fl
1d300 61 67 20 69 73 20 73 65 74 20 77 68 65 6e 20 74  ag is set when t
1d310 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63  he database.** c
1d320 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65  onnection is ope
1d330 6e 65 64 2e 20 5e 49 66 20 69 74 20 69 73 20 67  ned. ^If it is g
1d340 6c 6f 62 61 6c 6c 79 20 64 69 73 61 62 6c 65 64  lobally disabled
1d350 2c 20 66 69 6c 65 6e 61 6d 65 73 20 61 72 65 0a  , filenames are.
1d360 2a 2a 20 6f 6e 6c 79 20 69 6e 74 65 72 70 72 65  ** only interpre
1d370 74 65 64 20 61 73 20 55 52 49 73 20 69 66 20 74  ted as URIs if t
1d380 68 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55  he SQLITE_OPEN_U
1d390 52 49 20 66 6c 61 67 20 69 73 20 73 65 74 20 77  RI flag is set w
1d3a0 68 65 6e 20 74 68 65 0a 2a 2a 20 64 61 74 61 62  hen the.** datab
1d3b0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
1d3c0 73 20 6f 70 65 6e 65 64 2e 20 5e 28 42 79 20 64  s opened. ^(By d
1d3d0 65 66 61 75 6c 74 2c 20 55 52 49 20 68 61 6e 64  efault, URI hand
1d3e0 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61 6c 6c 79  ling is globally
1d3f0 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2e 20 54 68  .** disabled. Th
1d400 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20  e default value 
1d410 6d 61 79 20 62 65 20 63 68 61 6e 67 65 64 20 62  may be changed b
1d420 79 20 63 6f 6d 70 69 6c 69 6e 67 20 77 69 74 68  y compiling with
1d430 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   the.** [SQLITE_
1d440 55 53 45 5f 55 52 49 5d 20 73 79 6d 62 6f 6c 20  USE_URI] symbol 
1d450 64 65 66 69 6e 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a  defined.)^.**.**
1d460 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1d470 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f  _COVERING_INDEX_
1d480 53 43 41 4e 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  SCAN]] <dt>SQLIT
1d490 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e  E_CONFIG_COVERIN
1d4a0 47 5f 49 4e 44 45 58 5f 53 43 41 4e 0a 2a 2a 20  G_INDEX_SCAN.** 
1d4b0 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f  <dd>^The SQLITE_
1d4c0 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f  CONFIG_COVERING_
1d4d0 49 4e 44 45 58 5f 53 43 41 4e 20 6f 70 74 69 6f  INDEX_SCAN optio
1d4e0 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1d4f0 20 69 6e 74 65 67 65 72 0a 2a 2a 20 61 72 67 75   integer.** argu
1d500 6d 65 6e 74 20 77 68 69 63 68 20 69 73 20 69 6e  ment which is in
1d510 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 62  terpreted as a b
1d520 6f 6f 6c 65 61 6e 20 69 6e 20 6f 72 64 65 72 20  oolean in order 
1d530 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73  to enable or dis
1d540 61 62 6c 65 0a 2a 2a 20 74 68 65 20 75 73 65 20  able.** the use 
1d550 6f 66 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69  of covering indi
1d560 63 65 73 20 66 6f 72 20 66 75 6c 6c 20 74 61 62  ces for full tab
1d570 6c 65 20 73 63 61 6e 73 20 69 6e 20 74 68 65 20  le scans in the 
1d580 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72 2e  query optimizer.
1d590 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75 6c 74  .** ^The default
1d5a0 20 73 65 74 74 69 6e 67 20 69 73 20 64 65 74 65   setting is dete
1d5b0 72 6d 69 6e 65 64 0a 2a 2a 20 62 79 20 74 68 65  rmined.** by the
1d5c0 20 5b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43   [SQLITE_ALLOW_C
1d5d0 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43  OVERING_INDEX_SC
1d5e0 41 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  AN] compile-time
1d5f0 20 6f 70 74 69 6f 6e 2c 20 6f 72 20 69 73 20 22   option, or is "
1d600 6f 6e 22 0a 2a 2a 20 69 66 20 74 68 61 74 20 63  on".** if that c
1d610 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1d620 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a 2a  on is omitted..*
1d630 2a 20 54 68 65 20 61 62 69 6c 69 74 79 20 74 6f  * The ability to
1d640 20 64 69 73 61 62 6c 65 20 74 68 65 20 75 73 65   disable the use
1d650 20 6f 66 20 63 6f 76 65 72 69 6e 67 20 69 6e 64   of covering ind
1d660 69 63 65 73 20 66 6f 72 20 66 75 6c 6c 20 74 61  ices for full ta
1d670 62 6c 65 20 73 63 61 6e 73 0a 2a 2a 20 69 73 20  ble scans.** is 
1d680 62 65 63 61 75 73 65 20 73 6f 6d 65 20 69 6e 63  because some inc
1d690 6f 72 72 65 63 74 6c 79 20 63 6f 64 65 64 20 6c  orrectly coded l
1d6a0 65 67 61 63 79 20 61 70 70 6c 69 63 61 74 69 6f  egacy applicatio
1d6b0 6e 73 20 6d 69 67 68 74 20 6d 61 6c 66 75 6e 63  ns might malfunc
1d6c0 74 69 6f 6e 0a 2a 2a 20 77 68 65 6e 20 74 68 65  tion.** when the
1d6d0 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 69 73   optimization is
1d6e0 20 65 6e 61 62 6c 65 64 2e 20 20 50 72 6f 76 69   enabled.  Provi
1d6f0 64 69 6e 67 20 74 68 65 20 61 62 69 6c 69 74 79  ding the ability
1d700 20 74 6f 0a 2a 2a 20 64 69 73 61 62 6c 65 20 74   to.** disable t
1d710 68 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20  he optimization 
1d720 61 6c 6c 6f 77 73 20 74 68 65 20 6f 6c 64 65 72  allows the older
1d730 2c 20 62 75 67 67 79 20 61 70 70 6c 69 63 61 74  , buggy applicat
1d740 69 6f 6e 20 63 6f 64 65 20 74 6f 20 77 6f 72 6b  ion code to work
1d750 0a 2a 2a 20 77 69 74 68 6f 75 74 20 63 68 61 6e  .** without chan
1d760 67 65 20 65 76 65 6e 20 77 69 74 68 20 6e 65 77  ge even with new
1d770 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  er versions of S
1d780 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  QLite..**.** [[S
1d790 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41  QLITE_CONFIG_PCA
1d7a0 43 48 45 5d 5d 20 5b 5b 53 51 4c 49 54 45 5f 43  CHE]] [[SQLITE_C
1d7b0 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 5d  ONFIG_GETPCACHE]
1d7c0 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
1d7d0 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 20 61 6e  CONFIG_PCACHE an
1d7e0 64 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  d SQLITE_CONFIG_
1d7f0 47 45 54 50 43 41 43 48 45 0a 2a 2a 20 3c 64 64  GETPCACHE.** <dd
1d800 3e 20 54 68 65 73 65 20 6f 70 74 69 6f 6e 73 20  > These options 
1d810 61 72 65 20 6f 62 73 6f 6c 65 74 65 20 61 6e 64  are obsolete and
1d820 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75   should not be u
1d830 73 65 64 20 62 79 20 6e 65 77 20 63 6f 64 65 2e  sed by new code.
1d840 0a 2a 2a 20 54 68 65 79 20 61 72 65 20 72 65 74  .** They are ret
1d850 61 69 6e 65 64 20 66 6f 72 20 62 61 63 6b 77 61  ained for backwa
1d860 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  rds compatibilit
1d870 79 20 62 75 74 20 61 72 65 20 6e 6f 77 20 6e 6f  y but are now no
1d880 2d 6f 70 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a  -ops..** </dd>.*
1d890 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1d8a0 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 5d 0a 2a 2a  NFIG_SQLLOG]].**
1d8b0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1d8c0 49 47 5f 53 51 4c 4c 4f 47 0a 2a 2a 20 3c 64 64  IG_SQLLOG.** <dd
1d8d0 3e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20  >This option is 
1d8e0 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69  only available i
1d8f0 66 20 73 71 6c 69 74 65 20 69 73 20 63 6f 6d 70  f sqlite is comp
1d900 69 6c 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a  iled with the.**
1d910 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
1d920 53 51 4c 4c 4f 47 5d 20 70 72 65 2d 70 72 6f 63  SQLLOG] pre-proc
1d930 65 73 73 6f 72 20 6d 61 63 72 6f 20 64 65 66 69  essor macro defi
1d940 6e 65 64 2e 20 54 68 65 20 66 69 72 73 74 20 61  ned. The first a
1d950 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 0a 2a  rgument should.*
1d960 2a 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20 74  * be a pointer t
1d970 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20  o a function of 
1d980 74 79 70 65 20 76 6f 69 64 28 2a 29 28 76 6f 69  type void(*)(voi
1d990 64 2a 2c 73 71 6c 69 74 65 33 2a 2c 63 6f 6e 73  d*,sqlite3*,cons
1d9a0 74 20 63 68 61 72 2a 2c 20 69 6e 74 29 2e 0a 2a  t char*, int)..*
1d9b0 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 73 68 6f  * The second sho
1d9c0 75 6c 64 20 62 65 20 6f 66 20 74 79 70 65 20 28  uld be of type (
1d9d0 76 6f 69 64 2a 29 2e 20 54 68 65 20 63 61 6c 6c  void*). The call
1d9e0 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
1d9f0 62 79 20 74 68 65 20 6c 69 62 72 61 72 79 0a 2a  by the library.*
1da00 2a 20 69 6e 20 74 68 72 65 65 20 73 65 70 61 72  * in three separ
1da10 61 74 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65  ate circumstance
1da20 73 2c 20 69 64 65 6e 74 69 66 69 65 64 20 62 79  s, identified by
1da30 20 74 68 65 20 76 61 6c 75 65 20 70 61 73 73 65   the value passe
1da40 64 20 61 73 20 74 68 65 0a 2a 2a 20 66 6f 75 72  d as the.** four
1da50 74 68 20 70 61 72 61 6d 65 74 65 72 2e 20 49 66  th parameter. If
1da60 20 74 68 65 20 66 6f 75 72 74 68 20 70 61 72 61   the fourth para
1da70 6d 65 74 65 72 20 69 73 20 30 2c 20 74 68 65 6e  meter is 0, then
1da80 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
1da90 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 70 61 73 73  nnection.** pass
1daa0 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64  ed as the second
1dab0 20 61 72 67 75 6d 65 6e 74 20 68 61 73 20 6a 75   argument has ju
1dac0 73 74 20 62 65 65 6e 20 6f 70 65 6e 65 64 2e 20  st been opened. 
1dad0 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65  The third argume
1dae0 6e 74 0a 2a 2a 20 70 6f 69 6e 74 73 20 74 6f 20  nt.** points to 
1daf0 61 20 62 75 66 66 65 72 20 63 6f 6e 74 61 69 6e  a buffer contain
1db00 69 6e 67 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  ing the name of 
1db10 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73  the main databas
1db20 65 20 66 69 6c 65 2e 20 49 66 20 74 68 65 0a 2a  e file. If the.*
1db30 2a 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  * fourth paramet
1db40 65 72 20 69 73 20 31 2c 20 74 68 65 6e 20 74 68  er is 1, then th
1db50 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
1db60 74 68 61 74 20 74 68 65 20 74 68 69 72 64 20 70  that the third p
1db70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 70 6f 69 6e  arameter.** poin
1db80 74 73 20 74 6f 20 68 61 73 20 6a 75 73 74 20 62  ts to has just b
1db90 65 65 6e 20 65 78 65 63 75 74 65 64 2e 20 4f 72  een executed. Or
1dba0 2c 20 69 66 20 74 68 65 20 66 6f 75 72 74 68 20  , if the fourth 
1dbb0 70 61 72 61 6d 65 74 65 72 20 69 73 20 32 2c 20  parameter is 2, 
1dbc0 74 68 65 6e 0a 2a 2a 20 74 68 65 20 63 6f 6e 6e  then.** the conn
1dbd0 65 63 74 69 6f 6e 20 62 65 69 6e 67 20 70 61 73  ection being pas
1dbe0 73 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e  sed as the secon
1dbf0 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 62  d parameter is b
1dc00 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20 54 68 65  eing closed. The
1dc10 0a 2a 2a 20 74 68 69 72 64 20 70 61 72 61 6d 65  .** third parame
1dc20 74 65 72 20 69 73 20 70 61 73 73 65 64 20 4e 55  ter is passed NU
1dc30 4c 4c 20 49 6e 20 74 68 69 73 20 63 61 73 65 2e  LL In this case.
1dc40 20 20 41 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20    An example of 
1dc50 75 73 69 6e 67 20 74 68 69 73 0a 2a 2a 20 63 6f  using this.** co
1dc60 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1dc70 6f 6e 20 63 61 6e 20 62 65 20 73 65 65 6e 20 69  on can be seen i
1dc80 6e 20 74 68 65 20 22 74 65 73 74 5f 73 71 6c 6c  n the "test_sqll
1dc90 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 66 69 6c  og.c" source fil
1dca0 65 20 69 6e 0a 2a 2a 20 74 68 65 20 63 61 6e 6f  e in.** the cano
1dcb0 6e 69 63 61 6c 20 53 51 4c 69 74 65 20 73 6f 75  nical SQLite sou
1dcc0 72 63 65 20 74 72 65 65 2e 3c 2f 64 64 3e 0a 2a  rce tree.</dd>.*
1dcd0 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1dce0 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d  NFIG_MMAP_SIZE]]
1dcf0 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  .** <dt>SQLITE_C
1dd00 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 0a  ONFIG_MMAP_SIZE.
1dd10 2a 2a 20 3c 64 64 3e 5e 53 51 4c 49 54 45 5f 43  ** <dd>^SQLITE_C
1dd20 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 20  ONFIG_MMAP_SIZE 
1dd30 74 61 6b 65 73 20 74 77 6f 20 36 34 2d 62 69 74  takes two 64-bit
1dd40 20 69 6e 74 65 67 65 72 20 28 73 71 6c 69 74 65   integer (sqlite
1dd50 33 5f 69 6e 74 36 34 29 20 76 61 6c 75 65 73 0a  3_int64) values.
1dd60 2a 2a 20 74 68 61 74 20 61 72 65 20 74 68 65 20  ** that are the 
1dd70 64 65 66 61 75 6c 74 20 6d 6d 61 70 20 73 69 7a  default mmap siz
1dd80 65 20 6c 69 6d 69 74 20 28 74 68 65 20 64 65 66  e limit (the def
1dd90 61 75 6c 74 20 73 65 74 74 69 6e 67 20 66 6f 72  ault setting for
1dda0 0a 2a 2a 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70  .** [PRAGMA mmap
1ddb0 5f 73 69 7a 65 5d 29 20 61 6e 64 20 74 68 65 20  _size]) and the 
1ddc0 6d 61 78 69 6d 75 6d 20 61 6c 6c 6f 77 65 64 20  maximum allowed 
1ddd0 6d 6d 61 70 20 73 69 7a 65 20 6c 69 6d 69 74 2e  mmap size limit.
1dde0 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75 6c 74  .** ^The default
1ddf0 20 73 65 74 74 69 6e 67 20 63 61 6e 20 62 65 20   setting can be 
1de00 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20 65 61  overridden by ea
1de10 63 68 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ch database conn
1de20 65 63 74 69 6f 6e 20 75 73 69 6e 67 0a 2a 2a 20  ection using.** 
1de30 65 69 74 68 65 72 20 74 68 65 20 5b 50 52 41 47  either the [PRAG
1de40 4d 41 20 6d 6d 61 70 5f 73 69 7a 65 5d 20 63 6f  MA mmap_size] co
1de50 6d 6d 61 6e 64 2c 20 6f 72 20 62 79 20 75 73 69  mmand, or by usi
1de60 6e 67 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  ng the.** [SQLIT
1de70 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a  E_FCNTL_MMAP_SIZ
1de80 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 2e  E] file control.
1de90 20 20 5e 28 54 68 65 20 6d 61 78 69 6d 75 6d 20    ^(The maximum 
1dea0 61 6c 6c 6f 77 65 64 20 6d 6d 61 70 20 73 69 7a  allowed mmap siz
1deb0 65 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 73 69 6c  e.** will be sil
1dec0 65 6e 74 6c 79 20 74 72 75 6e 63 61 74 65 64 20  ently truncated 
1ded0 69 66 20 6e 65 63 65 73 73 61 72 79 20 73 6f 20  if necessary so 
1dee0 74 68 61 74 20 69 74 20 64 6f 65 73 20 6e 6f 74  that it does not
1def0 20 65 78 63 65 65 64 20 74 68 65 0a 2a 2a 20 63   exceed the.** c
1df00 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6d 61 78 69  ompile-time maxi
1df10 6d 75 6d 20 6d 6d 61 70 20 73 69 7a 65 20 73 65  mum mmap size se
1df20 74 20 62 79 20 74 68 65 0a 2a 2a 20 5b 53 51 4c  t by the.** [SQL
1df30 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a  ITE_MAX_MMAP_SIZ
1df40 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  E] compile-time 
1df50 6f 70 74 69 6f 6e 2e 29 5e 0a 2a 2a 20 5e 49 66  option.)^.** ^If
1df60 20 65 69 74 68 65 72 20 61 72 67 75 6d 65 6e 74   either argument
1df70 20 74 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 20   to this option 
1df80 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65  is negative, the
1df90 6e 20 74 68 61 74 20 61 72 67 75 6d 65 6e 74 20  n that argument 
1dfa0 69 73 0a 2a 2a 20 63 68 61 6e 67 65 64 20 74 6f  is.** changed to
1dfb0 20 69 74 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d   its compile-tim
1dfc0 65 20 64 65 66 61 75 6c 74 2e 0a 2a 2a 0a 2a 2a  e default..**.**
1dfd0 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1dfe0 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45 5d  _WIN32_HEAPSIZE]
1dff0 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
1e000 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41  CONFIG_WIN32_HEA
1e010 50 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e 5e 54 68  PSIZE.** <dd>^Th
1e020 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1e030 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45 20 6f  WIN32_HEAPSIZE o
1e040 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 61 76  ption is only av
1e050 61 69 6c 61 62 6c 65 20 69 66 20 53 51 4c 69 74  ailable if SQLit
1e060 65 20 69 73 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64  e is.** compiled
1e070 20 66 6f 72 20 57 69 6e 64 6f 77 73 20 77 69 74   for Windows wit
1e080 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 57 49  h the [SQLITE_WI
1e090 4e 33 32 5f 4d 41 4c 4c 4f 43 5d 20 70 72 65 2d  N32_MALLOC] pre-
1e0a0 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 0a  processor macro.
1e0b0 2a 2a 20 64 65 66 69 6e 65 64 2e 20 5e 53 51 4c  ** defined. ^SQL
1e0c0 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32  ITE_CONFIG_WIN32
1e0d0 5f 48 45 41 50 53 49 5a 45 20 74 61 6b 65 73 20  _HEAPSIZE takes 
1e0e0 61 20 33 32 2d 62 69 74 20 75 6e 73 69 67 6e 65  a 32-bit unsigne
1e0f0 64 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 0a  d integer value.
1e100 2a 2a 20 74 68 61 74 20 73 70 65 63 69 66 69 65  ** that specifie
1e110 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 73 69  s the maximum si
1e120 7a 65 20 6f 66 20 74 68 65 20 63 72 65 61 74 65  ze of the create
1e130 64 20 68 65 61 70 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  d heap..**.** [[
1e140 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1e150 41 43 48 45 5f 48 44 52 53 5a 5d 5d 0a 2a 2a 20  ACHE_HDRSZ]].** 
1e160 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1e170 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 0a 2a  G_PCACHE_HDRSZ.*
1e180 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49 54  * <dd>^The SQLIT
1e190 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f  E_CONFIG_PCACHE_
1e1a0 48 44 52 53 5a 20 6f 70 74 69 6f 6e 20 74 61 6b  HDRSZ option tak
1e1b0 65 73 20 61 20 73 69 6e 67 6c 65 20 70 61 72 61  es a single para
1e1c0 6d 65 74 65 72 20 77 68 69 63 68 0a 2a 2a 20 69  meter which.** i
1e1d0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
1e1e0 6e 20 69 6e 74 65 67 65 72 20 61 6e 64 20 77 72  n integer and wr
1e1f0 69 74 65 73 20 69 6e 74 6f 20 74 68 61 74 20 69  ites into that i
1e200 6e 74 65 67 65 72 20 74 68 65 20 6e 75 6d 62 65  nteger the numbe
1e210 72 20 6f 66 20 65 78 74 72 61 0a 2a 2a 20 62 79  r of extra.** by
1e220 74 65 73 20 70 65 72 20 70 61 67 65 20 72 65 71  tes per page req
1e230 75 69 72 65 64 20 66 6f 72 20 65 61 63 68 20 70  uired for each p
1e240 61 67 65 20 69 6e 20 5b 53 51 4c 49 54 45 5f 43  age in [SQLITE_C
1e250 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45 5d  ONFIG_PAGECACHE]
1e260 2e 0a 2a 2a 20 54 68 65 20 61 6d 6f 75 6e 74 20  ..** The amount 
1e270 6f 66 20 65 78 74 72 61 20 73 70 61 63 65 20 72  of extra space r
1e280 65 71 75 69 72 65 64 20 63 61 6e 20 63 68 61 6e  equired can chan
1e290 67 65 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  ge depending on 
1e2a0 74 68 65 20 63 6f 6d 70 69 6c 65 72 2c 0a 2a 2a  the compiler,.**
1e2b0 20 74 61 72 67 65 74 20 70 6c 61 74 66 6f 72 6d   target platform
1e2c0 2c 20 61 6e 64 20 53 51 4c 69 74 65 20 76 65 72  , and SQLite ver
1e2d0 73 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  sion..**.** [[SQ
1e2e0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53  LITE_CONFIG_PMAS
1e2f0 5a 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54  Z]].** <dt>SQLIT
1e300 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 0a 2a  E_CONFIG_PMASZ.*
1e310 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49 54  * <dd>^The SQLIT
1e320 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 20 6f  E_CONFIG_PMASZ o
1e330 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69  ption takes a si
1e340 6e 67 6c 65 20 70 61 72 61 6d 65 74 65 72 20 77  ngle parameter w
1e350 68 69 63 68 0a 2a 2a 20 69 73 20 61 6e 20 75 6e  hich.** is an un
1e360 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 61  signed integer a
1e370 6e 64 20 73 65 74 73 20 74 68 65 20 22 4d 69 6e  nd sets the "Min
1e380 69 6d 75 6d 20 50 4d 41 20 53 69 7a 65 22 20 66  imum PMA Size" f
1e390 6f 72 20 74 68 65 20 6d 75 6c 74 69 74 68 72 65  or the multithre
1e3a0 61 64 65 64 0a 2a 2a 20 73 6f 72 74 65 72 20 74  aded.** sorter t
1e3b0 6f 20 74 68 61 74 20 69 6e 74 65 67 65 72 2e 20  o that integer. 
1e3c0 20 54 68 65 20 64 65 66 61 75 6c 74 20 6d 69 6e   The default min
1e3d0 69 6d 75 6d 20 50 4d 41 20 53 69 7a 65 20 69 73  imum PMA Size is
1e3e0 20 73 65 74 20 62 79 20 74 68 65 0a 2a 2a 20 5b   set by the.** [
1e3f0 53 51 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d  SQLITE_SORTER_PM
1e400 41 53 5a 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  ASZ] compile-tim
1e410 65 20 6f 70 74 69 6f 6e 2e 20 20 4e 65 77 20 74  e option.  New t
1e420 68 72 65 61 64 73 20 61 72 65 20 6c 61 75 6e 63  hreads are launc
1e430 68 65 64 0a 2a 2a 20 74 6f 20 68 65 6c 70 20 77  hed.** to help w
1e440 69 74 68 20 73 6f 72 74 20 6f 70 65 72 61 74 69  ith sort operati
1e450 6f 6e 73 20 77 68 65 6e 20 6d 75 6c 74 69 74 68  ons when multith
1e460 72 65 61 64 65 64 20 73 6f 72 74 69 6e 67 0a 2a  readed sorting.*
1e470 2a 20 69 73 20 65 6e 61 62 6c 65 64 20 28 75 73  * is enabled (us
1e480 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41 20  ing the [PRAGMA 
1e490 74 68 72 65 61 64 73 5d 20 63 6f 6d 6d 61 6e 64  threads] command
1e4a0 29 20 61 6e 64 20 74 68 65 20 61 6d 6f 75 6e 74  ) and the amount
1e4b0 20 6f 66 20 63 6f 6e 74 65 6e 74 0a 2a 2a 20 74   of content.** t
1e4c0 6f 20 62 65 20 73 6f 72 74 65 64 20 65 78 63 65  o be sorted exce
1e4d0 65 64 73 20 74 68 65 20 70 61 67 65 20 73 69 7a  eds the page siz
1e4e0 65 20 74 69 6d 65 73 20 74 68 65 20 6d 69 6e 69  e times the mini
1e4f0 6d 75 6d 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 50  mum of the.** [P
1e500 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65  RAGMA cache_size
1e510 5d 20 73 65 74 74 69 6e 67 20 61 6e 64 20 74 68  ] setting and th
1e520 69 73 20 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20  is value..**.** 
1e530 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1e540 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 5d  STMTJRNL_SPILL]]
1e550 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  .** <dt>SQLITE_C
1e560 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53  ONFIG_STMTJRNL_S
1e570 50 49 4c 4c 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65  PILL.** <dd>^The
1e580 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53   SQLITE_CONFIG_S
1e590 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 20 6f 70  TMTJRNL_SPILL op
1e5a0 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e  tion takes a sin
1e5b0 67 6c 65 20 70 61 72 61 6d 65 74 65 72 20 77 68  gle parameter wh
1e5c0 69 63 68 0a 2a 2a 20 62 65 63 6f 6d 65 73 20 74  ich.** becomes t
1e5d0 68 65 20 5b 73 74 61 74 65 6d 65 6e 74 20 6a 6f  he [statement jo
1e5e0 75 72 6e 61 6c 5d 20 73 70 69 6c 6c 2d 74 6f 2d  urnal] spill-to-
1e5f0 64 69 73 6b 20 74 68 72 65 73 68 6f 6c 64 2e 20  disk threshold. 
1e600 20 0a 2a 2a 20 5b 53 74 61 74 65 6d 65 6e 74 20   .** [Statement 
1e610 6a 6f 75 72 6e 61 6c 73 5d 20 61 72 65 20 68 65  journals] are he
1e620 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20 75 6e 74  ld in memory unt
1e630 69 6c 20 74 68 65 69 72 20 73 69 7a 65 20 28 69  il their size (i
1e640 6e 20 62 79 74 65 73 29 0a 2a 2a 20 65 78 63 65  n bytes).** exce
1e650 65 64 73 20 74 68 69 73 20 74 68 72 65 73 68 6f  eds this thresho
1e660 6c 64 2c 20 61 74 20 77 68 69 63 68 20 70 6f 69  ld, at which poi
1e670 6e 74 20 74 68 65 79 20 61 72 65 20 77 72 69 74  nt they are writ
1e680 74 65 6e 20 74 6f 20 64 69 73 6b 2e 0a 2a 2a 20  ten to disk..** 
1e690 4f 72 20 69 66 20 74 68 65 20 74 68 72 65 73 68  Or if the thresh
1e6a0 6f 6c 64 20 69 73 20 2d 31 2c 20 73 74 61 74 65  old is -1, state
1e6b0 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 20 61 72  ment journals ar
1e6c0 65 20 61 6c 77 61 79 73 20 68 65 6c 64 0a 2a 2a  e always held.**
1e6d0 20 65 78 63 6c 75 73 69 76 65 6c 79 20 69 6e 20   exclusively in 
1e6e0 6d 65 6d 6f 72 79 2e 0a 2a 2a 20 53 69 6e 63 65  memory..** Since
1e6f0 20 6d 61 6e 79 20 73 74 61 74 65 6d 65 6e 74 20   many statement 
1e700 6a 6f 75 72 6e 61 6c 73 20 6e 65 76 65 72 20 62  journals never b
1e710 65 63 6f 6d 65 20 6c 61 72 67 65 2c 20 73 65 74  ecome large, set
1e720 74 69 6e 67 20 74 68 65 20 73 70 69 6c 6c 0a 2a  ting the spill.*
1e730 2a 20 74 68 72 65 73 68 6f 6c 64 20 74 6f 20 61  * threshold to a
1e740 20 76 61 6c 75 65 20 73 75 63 68 20 61 73 20 36   value such as 6
1e750 34 4b 69 42 20 63 61 6e 20 67 72 65 61 74 6c 79  4KiB can greatly
1e760 20 72 65 64 75 63 65 20 74 68 65 20 61 6d 6f 75   reduce the amou
1e770 6e 74 20 6f 66 0a 2a 2a 20 49 2f 4f 20 72 65 71  nt of.** I/O req
1e780 75 69 72 65 64 20 74 6f 20 73 75 70 70 6f 72 74  uired to support
1e790 20 73 74 61 74 65 6d 65 6e 74 20 72 6f 6c 6c 62   statement rollb
1e7a0 61 63 6b 2e 0a 2a 2a 20 54 68 65 20 64 65 66 61  ack..** The defa
1e7b0 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74 68  ult value for th
1e7c0 69 73 20 73 65 74 74 69 6e 67 20 69 73 20 63 6f  is setting is co
1e7d0 6e 74 72 6f 6c 6c 65 64 20 62 79 20 74 68 65 0a  ntrolled by the.
1e7e0 2a 2a 20 5b 53 51 4c 49 54 45 5f 53 54 4d 54 4a  ** [SQLITE_STMTJ
1e7f0 52 4e 4c 5f 53 50 49 4c 4c 5d 20 63 6f 6d 70 69  RNL_SPILL] compi
1e800 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a  le-time option..
1e810 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1e820 4f 4e 46 49 47 5f 53 4f 52 54 45 52 52 45 46 5f  ONFIG_SORTERREF_
1e830 53 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  SIZE]].** <dt>SQ
1e840 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4f 52 54  LITE_CONFIG_SORT
1e850 45 52 52 45 46 5f 53 49 5a 45 0a 2a 2a 20 3c 64  ERREF_SIZE.** <d
1e860 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  d>The SQLITE_CON
1e870 46 49 47 5f 53 4f 52 54 45 52 52 45 46 5f 53 49  FIG_SORTERREF_SI
1e880 5a 45 20 6f 70 74 69 6f 6e 20 61 63 63 65 70 74  ZE option accept
1e890 73 20 61 20 73 69 6e 67 6c 65 20 70 61 72 61 6d  s a single param
1e8a0 65 74 65 72 0a 2a 2a 20 6f 66 20 74 79 70 65 20  eter.** of type 
1e8b0 28 69 6e 74 29 20 2d 20 74 68 65 20 6e 65 77 20  (int) - the new 
1e8c0 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 6f 72  value of the sor
1e8d0 74 65 72 2d 72 65 66 65 72 65 6e 63 65 20 73 69  ter-reference si
1e8e0 7a 65 20 74 68 72 65 73 68 6f 6c 64 2e 0a 2a 2a  ze threshold..**
1e8f0 20 55 73 75 61 6c 6c 79 2c 20 77 68 65 6e 20 53   Usually, when S
1e900 51 4c 69 74 65 20 75 73 65 73 20 61 6e 20 65 78  QLite uses an ex
1e910 74 65 72 6e 61 6c 20 73 6f 72 74 20 74 6f 20 6f  ternal sort to o
1e920 72 64 65 72 20 72 65 63 6f 72 64 73 20 61 63 63  rder records acc
1e930 6f 72 64 69 6e 67 0a 2a 2a 20 74 6f 20 61 6e 20  ording.** to an 
1e940 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 2c  ORDER BY clause,
1e950 20 61 6c 6c 20 66 69 65 6c 64 73 20 72 65 71 75   all fields requ
1e960 69 72 65 64 20 62 79 20 74 68 65 20 63 61 6c 6c  ired by the call
1e970 65 72 20 61 72 65 20 70 72 65 73 65 6e 74 20 69  er are present i
1e980 6e 20 74 68 65 0a 2a 2a 20 73 6f 72 74 65 64 20  n the.** sorted 
1e990 72 65 63 6f 72 64 73 2e 20 48 6f 77 65 76 65 72  records. However
1e9a0 2c 20 69 66 20 53 51 4c 69 74 65 20 64 65 74 65  , if SQLite dete
1e9b0 72 6d 69 6e 65 73 20 62 61 73 65 64 20 6f 6e 20  rmines based on 
1e9c0 74 68 65 20 64 65 63 6c 61 72 65 64 20 74 79 70  the declared typ
1e9d0 65 0a 2a 2a 20 6f 66 20 61 20 74 61 62 6c 65 20  e.** of a table 
1e9e0 63 6f 6c 75 6d 6e 20 74 68 61 74 20 69 74 73 20  column that its 
1e9f0 76 61 6c 75 65 73 20 61 72 65 20 6c 69 6b 65 6c  values are likel
1ea00 79 20 74 6f 20 62 65 20 76 65 72 79 20 6c 61 72  y to be very lar
1ea10 67 65 20 2d 20 6c 61 72 67 65 72 0a 2a 2a 20 74  ge - larger.** t
1ea20 68 61 6e 20 74 68 65 20 63 6f 6e 66 69 67 75 72  han the configur
1ea30 65 64 20 73 6f 72 74 65 72 2d 72 65 66 65 72 65  ed sorter-refere
1ea40 6e 63 65 20 73 69 7a 65 20 74 68 72 65 73 68 6f  nce size thresho
1ea50 6c 64 20 2d 20 74 68 65 6e 20 61 20 72 65 66 65  ld - then a refe
1ea60 72 65 6e 63 65 0a 2a 2a 20 69 73 20 73 74 6f 72  rence.** is stor
1ea70 65 64 20 69 6e 20 65 61 63 68 20 73 6f 72 74 65  ed in each sorte
1ea80 64 20 72 65 63 6f 72 64 20 61 6e 64 20 74 68 65  d record and the
1ea90 20 72 65 71 75 69 72 65 64 20 63 6f 6c 75 6d 6e   required column
1eaa0 20 76 61 6c 75 65 73 20 6c 6f 61 64 65 64 0a 2a   values loaded.*
1eab0 2a 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61 62  * from the datab
1eac0 61 73 65 20 61 73 20 72 65 63 6f 72 64 73 20 61  ase as records a
1ead0 72 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20 73  re returned in s
1eae0 6f 72 74 65 64 20 6f 72 64 65 72 2e 20 54 68 65  orted order. The
1eaf0 20 64 65 66 61 75 6c 74 0a 2a 2a 20 76 61 6c 75   default.** valu
1eb00 65 20 66 6f 72 20 74 68 69 73 20 6f 70 74 69 6f  e for this optio
1eb10 6e 20 69 73 20 74 6f 20 6e 65 76 65 72 20 75 73  n is to never us
1eb20 65 20 74 68 69 73 20 6f 70 74 69 6d 69 7a 61 74  e this optimizat
1eb30 69 6f 6e 2e 20 53 70 65 63 69 66 79 69 6e 67 20  ion. Specifying 
1eb40 61 20 0a 2a 2a 20 6e 65 67 61 74 69 76 65 20 76  a .** negative v
1eb50 61 6c 75 65 20 66 6f 72 20 74 68 69 73 20 6f 70  alue for this op
1eb60 74 69 6f 6e 20 72 65 73 74 6f 72 65 73 20 74 68  tion restores th
1eb70 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76 69  e default behavi
1eb80 6f 75 72 2e 0a 2a 2a 20 54 68 69 73 20 6f 70 74  our..** This opt
1eb90 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 61 76 61 69  ion is only avai
1eba0 6c 61 62 6c 65 20 69 66 20 53 51 4c 69 74 65 20  lable if SQLite 
1ebb0 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  is compiled with
1ebc0 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   the.** [SQLITE_
1ebd0 45 4e 41 42 4c 45 5f 53 4f 52 54 45 52 5f 52 45  ENABLE_SORTER_RE
1ebe0 46 45 52 45 4e 43 45 53 5d 20 63 6f 6d 70 69 6c  FERENCES] compil
1ebf0 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a  e-time option..*
1ec00 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69  * </dl>.*/.#defi
1ec10 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1ec20 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20 20 31  _SINGLETHREAD  1
1ec30 20 20 2f 2a 20 6e 69 6c 20 2a 2f 0a 23 64 65 66    /* nil */.#def
1ec40 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1ec50 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 20 20 20  G_MULTITHREAD   
1ec60 32 20 20 2f 2a 20 6e 69 6c 20 2a 2f 0a 23 64 65  2  /* nil */.#de
1ec70 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1ec80 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 20 20 20  IG_SERIALIZED   
1ec90 20 33 20 20 2f 2a 20 6e 69 6c 20 2a 2f 0a 23 64   3  /* nil */.#d
1eca0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1ecb0 46 49 47 5f 4d 41 4c 4c 4f 43 20 20 20 20 20 20  FIG_MALLOC      
1ecc0 20 20 34 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f    4  /* sqlite3_
1ecd0 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a  mem_methods* */.
1ece0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1ecf0 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 20  ONFIG_GETMALLOC 
1ed00 20 20 20 20 35 20 20 2f 2a 20 73 71 6c 69 74 65      5  /* sqlite
1ed10 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a 20 2a  3_mem_methods* *
1ed20 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1ed30 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43 48 20  _CONFIG_SCRATCH 
1ed40 20 20 20 20 20 20 36 20 20 2f 2a 20 4e 6f 20 6c        6  /* No l
1ed50 6f 6e 67 65 72 20 75 73 65 64 20 2a 2f 0a 23 64  onger used */.#d
1ed60 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1ed70 46 49 47 5f 50 41 47 45 43 41 43 48 45 20 20 20  FIG_PAGECACHE   
1ed80 20 20 37 20 20 2f 2a 20 76 6f 69 64 2a 2c 20 69    7  /* void*, i
1ed90 6e 74 20 73 7a 2c 20 69 6e 74 20 4e 20 2a 2f 0a  nt sz, int N */.
1eda0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1edb0 4f 4e 46 49 47 5f 48 45 41 50 20 20 20 20 20 20  ONFIG_HEAP      
1edc0 20 20 20 20 38 20 20 2f 2a 20 76 6f 69 64 2a 2c      8  /* void*,
1edd0 20 69 6e 74 20 6e 42 79 74 65 2c 20 69 6e 74 20   int nByte, int 
1ede0 6d 69 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  min */.#define S
1edf0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1ee00 53 54 41 54 55 53 20 20 20 20 20 39 20 20 2f 2a  STATUS     9  /*
1ee10 20 62 6f 6f 6c 65 61 6e 20 2a 2f 0a 23 64 65 66   boolean */.#def
1ee20 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1ee30 47 5f 4d 55 54 45 58 20 20 20 20 20 20 20 20 31  G_MUTEX        1
1ee40 30 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 75  0  /* sqlite3_mu
1ee50 74 65 78 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a  tex_methods* */.
1ee60 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1ee70 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 20 20  ONFIG_GETMUTEX  
1ee80 20 20 20 31 31 20 20 2f 2a 20 73 71 6c 69 74 65     11  /* sqlite
1ee90 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 2a  3_mutex_methods*
1eea0 20 2a 2f 0a 2f 2a 20 70 72 65 76 69 6f 75 73 6c   */./* previousl
1eeb0 79 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  y SQLITE_CONFIG_
1eec0 43 48 55 4e 4b 41 4c 4c 4f 43 20 31 32 20 77 68  CHUNKALLOC 12 wh
1eed0 69 63 68 20 69 73 20 6e 6f 77 20 75 6e 75 73 65  ich is now unuse
1eee0 64 2e 20 2a 2f 20 0a 23 64 65 66 69 6e 65 20 53  d. */ .#define S
1eef0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f  QLITE_CONFIG_LOO
1ef00 4b 41 53 49 44 45 20 20 20 20 31 33 20 20 2f 2a  KASIDE    13  /*
1ef10 20 69 6e 74 20 69 6e 74 20 2a 2f 0a 23 64 65 66   int int */.#def
1ef20 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1ef30 47 5f 50 43 41 43 48 45 20 20 20 20 20 20 20 31  G_PCACHE       1
1ef40 34 20 20 2f 2a 20 6e 6f 2d 6f 70 20 2a 2f 0a 23  4  /* no-op */.#
1ef50 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
1ef60 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 20 20  NFIG_GETPCACHE  
1ef70 20 20 31 35 20 20 2f 2a 20 6e 6f 2d 6f 70 20 2a    15  /* no-op *
1ef80 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1ef90 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 20 20 20 20  _CONFIG_LOG     
1efa0 20 20 20 20 20 31 36 20 20 2f 2a 20 78 46 75 6e       16  /* xFun
1efb0 63 2c 20 76 6f 69 64 2a 20 2a 2f 0a 23 64 65 66  c, void* */.#def
1efc0 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1efd0 47 5f 55 52 49 20 20 20 20 20 20 20 20 20 20 31  G_URI          1
1efe0 37 20 20 2f 2a 20 69 6e 74 20 2a 2f 0a 23 64 65  7  /* int */.#de
1eff0 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1f000 49 47 5f 50 43 41 43 48 45 32 20 20 20 20 20 20  IG_PCACHE2      
1f010 31 38 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 70  18  /* sqlite3_p
1f020 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 2a 20  cache_methods2* 
1f030 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1f040 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43  E_CONFIG_GETPCAC
1f050 48 45 32 20 20 20 31 39 20 20 2f 2a 20 73 71 6c  HE2   19  /* sql
1f060 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68  ite3_pcache_meth
1f070 6f 64 73 32 2a 20 2a 2f 0a 23 64 65 66 69 6e 65  ods2* */.#define
1f080 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43   SQLITE_CONFIG_C
1f090 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43  OVERING_INDEX_SC
1f0a0 41 4e 20 32 30 20 20 2f 2a 20 69 6e 74 20 2a 2f  AN 20  /* int */
1f0b0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1f0c0 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 20 20 20  CONFIG_SQLLOG   
1f0d0 20 20 20 20 32 31 20 20 2f 2a 20 78 53 71 6c 6c      21  /* xSqll
1f0e0 6f 67 2c 20 76 6f 69 64 2a 20 2a 2f 0a 23 64 65  og, void* */.#de
1f0f0 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1f100 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 20 20 20 20  IG_MMAP_SIZE    
1f110 32 32 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 69  22  /* sqlite3_i
1f120 6e 74 36 34 2c 20 73 71 6c 69 74 65 33 5f 69 6e  nt64, sqlite3_in
1f130 74 36 34 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  t64 */.#define S
1f140 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e  QLITE_CONFIG_WIN
1f150 33 32 5f 48 45 41 50 53 49 5a 45 20 20 20 20 20  32_HEAPSIZE     
1f160 20 32 33 20 20 2f 2a 20 69 6e 74 20 6e 42 79 74   23  /* int nByt
1f170 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  e */.#define SQL
1f180 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
1f190 45 5f 48 44 52 53 5a 20 20 20 20 20 20 20 20 32  E_HDRSZ        2
1f1a0 34 20 20 2f 2a 20 69 6e 74 20 2a 70 73 7a 20 2a  4  /* int *psz *
1f1b0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1f1c0 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 20 20 20  _CONFIG_PMASZ   
1f1d0 20 20 20 20 20 20 20 20 20 20 20 20 32 35 20 20              25  
1f1e0 2f 2a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20  /* unsigned int 
1f1f0 73 7a 50 6d 61 20 2a 2f 0a 23 64 65 66 69 6e 65  szPma */.#define
1f200 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53   SQLITE_CONFIG_S
1f210 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 20 20 20  TMTJRNL_SPILL   
1f220 20 20 20 32 36 20 20 2f 2a 20 69 6e 74 20 6e 42     26  /* int nB
1f230 79 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  yte */.#define S
1f240 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41  QLITE_CONFIG_SMA
1f250 4c 4c 5f 4d 41 4c 4c 4f 43 20 20 20 20 20 20 20  LL_MALLOC       
1f260 20 32 37 20 20 2f 2a 20 62 6f 6f 6c 65 61 6e 20   27  /* boolean 
1f270 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1f280 45 5f 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52 52  E_CONFIG_SORTERR
1f290 45 46 5f 53 49 5a 45 20 20 20 20 20 20 32 38 20  EF_SIZE      28 
1f2a0 20 2f 2a 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f   /* int nByte */
1f2b0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
1f2c0 3a 20 44 61 74 61 62 61 73 65 20 43 6f 6e 6e 65  : Database Conne
1f2d0 63 74 69 6f 6e 20 43 6f 6e 66 69 67 75 72 61 74  ction Configurat
1f2e0 69 6f 6e 20 4f 70 74 69 6f 6e 73 0a 2a 2a 0a 2a  ion Options.**.*
1f2f0 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e 74  * These constant
1f300 73 20 61 72 65 20 74 68 65 20 61 76 61 69 6c 61  s are the availa
1f310 62 6c 65 20 69 6e 74 65 67 65 72 20 63 6f 6e 66  ble integer conf
1f320 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
1f330 73 20 74 68 61 74 0a 2a 2a 20 63 61 6e 20 62 65  s that.** can be
1f340 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20 73   passed as the s
1f350 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74  econd argument t
1f360 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 64  o the [sqlite3_d
1f370 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65  b_config()] inte
1f380 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77  rface..**.** New
1f390 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
1f3a0 70 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 61 64  ptions may be ad
1f3b0 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65  ded in future re
1f3c0 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74 65  leases of SQLite
1f3d0 2e 0a 2a 2a 20 45 78 69 73 74 69 6e 67 20 63 6f  ..** Existing co
1f3e0 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1f3f0 6f 6e 73 20 6d 69 67 68 74 20 62 65 20 64 69 73  ons might be dis
1f400 63 6f 6e 74 69 6e 75 65 64 2e 20 20 41 70 70 6c  continued.  Appl
1f410 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 73 68 6f 75  ications.** shou
1f420 6c 64 20 63 68 65 63 6b 20 74 68 65 20 72 65 74  ld check the ret
1f430 75 72 6e 20 63 6f 64 65 20 66 72 6f 6d 20 5b 73  urn code from [s
1f440 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
1f450 28 29 5d 20 74 6f 20 6d 61 6b 65 20 73 75 72 65  ()] to make sure
1f460 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 63 61 6c   that.** the cal
1f470 6c 20 77 6f 72 6b 65 64 2e 20 20 5e 54 68 65 20  l worked.  ^The 
1f480 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  [sqlite3_db_conf
1f490 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  ig()] interface 
1f4a0 77 69 6c 6c 20 72 65 74 75 72 6e 20 61 0a 2a 2a  will return a.**
1f4b0 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72   non-zero [error
1f4c0 20 63 6f 64 65 5d 20 69 66 20 61 20 64 69 73 63   code] if a disc
1f4d0 6f 6e 74 69 6e 75 65 64 20 6f 72 20 75 6e 73 75  ontinued or unsu
1f4e0 70 70 6f 72 74 65 64 20 63 6f 6e 66 69 67 75 72  pported configur
1f4f0 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 0a 2a 2a 20  ation option.** 
1f500 69 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a  is invoked..**.*
1f510 2a 20 3c 64 6c 3e 0a 2a 2a 20 3c 64 74 3e 53 51  * <dl>.** <dt>SQ
1f520 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f  LITE_DBCONFIG_LO
1f530 4f 4b 41 53 49 44 45 3c 2f 64 74 3e 0a 2a 2a 20  OKASIDE</dt>.** 
1f540 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f  <dd> ^This optio
1f550 6e 20 74 61 6b 65 73 20 74 68 72 65 65 20 61 64  n takes three ad
1f560 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e  ditional argumen
1f570 74 73 20 74 68 61 74 20 64 65 74 65 72 6d 69 6e  ts that determin
1f580 65 20 74 68 65 20 0a 2a 2a 20 5b 6c 6f 6f 6b 61  e the .** [looka
1f590 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  side memory allo
1f5a0 63 61 74 6f 72 5d 20 63 6f 6e 66 69 67 75 72 61  cator] configura
1f5b0 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 5b 64 61  tion for the [da
1f5c0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
1f5d0 6e 5d 2e 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73  n]..** ^The firs
1f5e0 74 20 61 72 67 75 6d 65 6e 74 20 28 74 68 65 20  t argument (the 
1f5f0 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20  third parameter 
1f600 74 6f 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63  to [sqlite3_db_c
1f610 6f 6e 66 69 67 28 29 5d 20 69 73 20 61 0a 2a 2a  onfig()] is a.**
1f620 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6d 65   pointer to a me
1f630 6d 6f 72 79 20 62 75 66 66 65 72 20 74 6f 20 75  mory buffer to u
1f640 73 65 20 66 6f 72 20 6c 6f 6f 6b 61 73 69 64 65  se for lookaside
1f650 20 6d 65 6d 6f 72 79 2e 0a 2a 2a 20 5e 54 68 65   memory..** ^The
1f660 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
1f670 61 66 74 65 72 20 74 68 65 20 53 51 4c 49 54 45  after the SQLITE
1f680 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  _DBCONFIG_LOOKAS
1f690 49 44 45 20 76 65 72 62 0a 2a 2a 20 6d 61 79 20  IDE verb.** may 
1f6a0 62 65 20 4e 55 4c 4c 20 69 6e 20 77 68 69 63 68  be NULL in which
1f6b0 20 63 61 73 65 20 53 51 4c 69 74 65 20 77 69 6c   case SQLite wil
1f6c0 6c 20 61 6c 6c 6f 63 61 74 65 20 74 68 65 0a 2a  l allocate the.*
1f6d0 2a 20 6c 6f 6f 6b 61 73 69 64 65 20 62 75 66 66  * lookaside buff
1f6e0 65 72 20 69 74 73 65 6c 66 20 75 73 69 6e 67 20  er itself using 
1f6f0 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
1f700 29 5d 2e 20 5e 54 68 65 20 73 65 63 6f 6e 64 20  )]. ^The second 
1f710 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 0a  argument is the.
1f720 2a 2a 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20  ** size of each 
1f730 6c 6f 6f 6b 61 73 69 64 65 20 62 75 66 66 65 72  lookaside buffer
1f740 20 73 6c 6f 74 2e 20 20 5e 54 68 65 20 74 68 69   slot.  ^The thi
1f750 72 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  rd argument is t
1f760 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a 20  he number of.** 
1f770 73 6c 6f 74 73 2e 20 20 54 68 65 20 73 69 7a 65  slots.  The size
1f780 20 6f 66 20 74 68 65 20 62 75 66 66 65 72 20 69   of the buffer i
1f790 6e 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75  n the first argu
1f7a0 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 67 72 65  ment must be gre
1f7b0 61 74 65 72 20 74 68 61 6e 0a 2a 2a 20 6f 72 20  ater than.** or 
1f7c0 65 71 75 61 6c 20 74 6f 20 74 68 65 20 70 72 6f  equal to the pro
1f7d0 64 75 63 74 20 6f 66 20 74 68 65 20 73 65 63 6f  duct of the seco
1f7e0 6e 64 20 61 6e 64 20 74 68 69 72 64 20 61 72 67  nd and third arg
1f7f0 75 6d 65 6e 74 73 2e 20 20 54 68 65 20 62 75 66  uments.  The buf
1f800 66 65 72 0a 2a 2a 20 6d 75 73 74 20 62 65 20 61  fer.** must be a
1f810 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62  ligned to an 8-b
1f820 79 74 65 20 62 6f 75 6e 64 61 72 79 2e 20 20 5e  yte boundary.  ^
1f830 49 66 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72  If the second ar
1f840 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 53 51 4c  gument to.** SQL
1f850 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f  ITE_DBCONFIG_LOO
1f860 4b 41 53 49 44 45 20 69 73 20 6e 6f 74 20 61 20  KASIDE is not a 
1f870 6d 75 6c 74 69 70 6c 65 20 6f 66 20 38 2c 20 69  multiple of 8, i
1f880 74 20 69 73 20 69 6e 74 65 72 6e 61 6c 6c 79 0a  t is internally.
1f890 2a 2a 20 72 6f 75 6e 64 65 64 20 64 6f 77 6e 20  ** rounded down 
1f8a0 74 6f 20 74 68 65 20 6e 65 78 74 20 73 6d 61 6c  to the next smal
1f8b0 6c 65 72 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20  ler multiple of 
1f8c0 38 2e 20 20 5e 28 54 68 65 20 6c 6f 6f 6b 61 73  8.  ^(The lookas
1f8d0 69 64 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20 63 6f  ide memory.** co
1f8e0 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 6f 72 20  nfiguration for 
1f8f0 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  a database conne
1f900 63 74 69 6f 6e 20 63 61 6e 20 6f 6e 6c 79 20 62  ction can only b
1f910 65 20 63 68 61 6e 67 65 64 20 77 68 65 6e 20 74  e changed when t
1f920 68 61 74 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  hat.** connectio
1f930 6e 20 69 73 20 6e 6f 74 20 63 75 72 72 65 6e 74  n is not current
1f940 6c 79 20 75 73 69 6e 67 20 6c 6f 6f 6b 61 73 69  ly using lookasi
1f950 64 65 20 6d 65 6d 6f 72 79 2c 20 6f 72 20 69 6e  de memory, or in
1f960 20 6f 74 68 65 72 20 77 6f 72 64 73 0a 2a 2a 20   other words.** 
1f970 77 68 65 6e 20 74 68 65 20 22 63 75 72 72 65 6e  when the "curren
1f980 74 20 76 61 6c 75 65 22 20 72 65 74 75 72 6e 65  t value" returne
1f990 64 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  d by.** [sqlite3
1f9a0 5f 64 62 5f 73 74 61 74 75 73 5d 28 44 2c 5b 53  _db_status](D,[S
1f9b0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f  QLITE_CONFIG_LOO
1f9c0 4b 41 53 49 44 45 5d 2c 2e 2e 2e 29 20 69 73 20  KASIDE],...) is 
1f9d0 7a 65 72 6f 2e 0a 2a 2a 20 41 6e 79 20 61 74 74  zero..** Any att
1f9e0 65 6d 70 74 20 74 6f 20 63 68 61 6e 67 65 20 74  empt to change t
1f9f0 68 65 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d  he lookaside mem
1fa00 6f 72 79 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ory configuratio
1fa10 6e 20 77 68 65 6e 20 6c 6f 6f 6b 61 73 69 64 65  n when lookaside
1fa20 0a 2a 2a 20 6d 65 6d 6f 72 79 20 69 73 20 69 6e  .** memory is in
1fa30 20 75 73 65 20 6c 65 61 76 65 73 20 74 68 65 20   use leaves the 
1fa40 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 75 6e  configuration un
1fa50 63 68 61 6e 67 65 64 20 61 6e 64 20 72 65 74 75  changed and retu
1fa60 72 6e 73 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  rns .** [SQLITE_
1fa70 42 55 53 59 5d 2e 29 5e 3c 2f 64 64 3e 0a 2a 2a  BUSY].)^</dd>.**
1fa80 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44  .** <dt>SQLITE_D
1fa90 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46  BCONFIG_ENABLE_F
1faa0 4b 45 59 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  KEY</dt>.** <dd>
1fab0 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73   ^This option is
1fac0 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
1fad0 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 65  or disable the e
1fae0 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 0a 2a 2a  nforcement of.**
1faf0 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f   [foreign key co
1fb00 6e 73 74 72 61 69 6e 74 73 5d 2e 20 20 54 68 65  nstraints].  The
1fb10 72 65 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f  re should be two
1fb20 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75   additional argu
1fb30 6d 65 6e 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69  ments..** The fi
1fb40 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20  rst argument is 
1fb50 61 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63 68  an integer which
1fb60 20 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65   is 0 to disable
1fb70 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 2c   FK enforcement,
1fb80 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f 20  .** positive to 
1fb90 65 6e 61 62 6c 65 20 46 4b 20 65 6e 66 6f 72 63  enable FK enforc
1fba0 65 6d 65 6e 74 20 6f 72 20 6e 65 67 61 74 69 76  ement or negativ
1fbb0 65 20 74 6f 20 6c 65 61 76 65 20 46 4b 20 65 6e  e to leave FK en
1fbc0 66 6f 72 63 65 6d 65 6e 74 0a 2a 2a 20 75 6e 63  forcement.** unc
1fbd0 68 61 6e 67 65 64 2e 20 20 54 68 65 20 73 65 63  hanged.  The sec
1fbe0 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73  ond parameter is
1fbf0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
1fc00 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68   integer into wh
1fc10 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65  ich.** is writte
1fc20 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69  n 0 or 1 to indi
1fc30 63 61 74 65 20 77 68 65 74 68 65 72 20 46 4b 20  cate whether FK 
1fc40 65 6e 66 6f 72 63 65 6d 65 6e 74 20 69 73 20 6f  enforcement is o
1fc50 66 66 20 6f 72 20 6f 6e 0a 2a 2a 20 66 6f 6c 6c  ff or on.** foll
1fc60 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e  owing this call.
1fc70 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72    The second par
1fc80 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 61 20  ameter may be a 
1fc90 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e  NULL pointer, in
1fca0 0a 2a 2a 20 77 68 69 63 68 20 63 61 73 65 20 74  .** which case t
1fcb0 68 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e  he FK enforcemen
1fcc0 74 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f 74  t setting is not
1fcd0 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e 20   reported back. 
1fce0 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e  </dd>.**.** <dt>
1fcf0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
1fd00 45 4e 41 42 4c 45 5f 54 52 49 47 47 45 52 3c 2f  ENABLE_TRIGGER</
1fd10 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69  dt>.** <dd> ^Thi
1fd20 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
1fd30 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69   to enable or di
1fd40 73 61 62 6c 65 20 5b 43 52 45 41 54 45 20 54 52  sable [CREATE TR
1fd50 49 47 47 45 52 20 7c 20 74 72 69 67 67 65 72 73  IGGER | triggers
1fd60 5d 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68 6f 75  ]..** There shou
1fd70 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69 74 69  ld be two additi
1fd80 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a  onal arguments..
1fd90 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72 67  ** The first arg
1fda0 75 6d 65 6e 74 20 69 73 20 61 6e 20 69 6e 74 65  ument is an inte
1fdb0 67 65 72 20 77 68 69 63 68 20 69 73 20 30 20 74  ger which is 0 t
1fdc0 6f 20 64 69 73 61 62 6c 65 20 74 72 69 67 67 65  o disable trigge
1fdd0 72 73 2c 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20  rs,.** positive 
1fde0 74 6f 20 65 6e 61 62 6c 65 20 74 72 69 67 67 65  to enable trigge
1fdf0 72 73 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74  rs or negative t
1fe00 6f 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74  o leave the sett
1fe10 69 6e 67 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a  ing unchanged..*
1fe20 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72  * The second par
1fe30 61 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e  ameter is a poin
1fe40 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65  ter to an intege
1fe50 72 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20  r into which.** 
1fe60 69 73 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20  is written 0 or 
1fe70 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68  1 to indicate wh
1fe80 65 74 68 65 72 20 74 72 69 67 67 65 72 73 20 61  ether triggers a
1fe90 72 65 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65  re disabled or e
1fea0 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77  nabled.** follow
1feb0 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20  ing this call.  
1fec0 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
1fed0 65 74 65 72 20 6d 61 79 20 62 65 20 61 20 4e 55  eter may be a NU
1fee0 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a  LL pointer, in.*
1fef0 2a 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65  * which case the
1ff00 20 74 72 69 67 67 65 72 20 73 65 74 74 69 6e 67   trigger setting
1ff10 20 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65 64   is not reported
1ff20 20 62 61 63 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a   back. </dd>.**.
1ff30 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42  ** <dt>SQLITE_DB
1ff40 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54  CONFIG_ENABLE_FT
1ff50 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 3c 2f 64 74  S3_TOKENIZER</dt
1ff60 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20  >.** <dd> ^This 
1ff70 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
1ff80 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61  o enable or disa
1ff90 62 6c 65 20 74 68 65 20 74 77 6f 2d 61 72 67 75  ble the two-argu
1ffa0 6d 65 6e 74 0a 2a 2a 20 76 65 72 73 69 6f 6e 20  ment.** version 
1ffb0 6f 66 20 74 68 65 20 5b 66 74 73 33 5f 74 6f 6b  of the [fts3_tok
1ffc0 65 6e 69 7a 65 72 28 29 5d 20 66 75 6e 63 74 69  enizer()] functi
1ffd0 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61 72 74  on which is part
1ffe0 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 46 54 53 33   of the.** [FTS3
1fff0 5d 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72  ] full-text sear
20000 63 68 20 65 6e 67 69 6e 65 20 65 78 74 65 6e 73  ch engine extens
20010 69 6f 6e 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68  ion..** There sh
20020 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69  ould be two addi
20030 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73  tional arguments
20040 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61  ..** The first a
20050 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20 69 6e  rgument is an in
20060 74 65 67 65 72 20 77 68 69 63 68 20 69 73 20 30  teger which is 0
20070 20 74 6f 20 64 69 73 61 62 6c 65 20 66 74 73 33   to disable fts3
20080 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 6f 72 0a  _tokenizer() or.
20090 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f 20 65  ** positive to e
200a0 6e 61 62 6c 65 20 66 74 73 33 5f 74 6f 6b 65 6e  nable fts3_token
200b0 69 7a 65 72 28 29 20 6f 72 20 6e 65 67 61 74 69  izer() or negati
200c0 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68 65 20  ve to leave the 
200d0 73 65 74 74 69 6e 67 0a 2a 2a 20 75 6e 63 68 61  setting.** uncha
200e0 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73 65 63  nged..** The sec
200f0 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73  ond parameter is
20100 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
20110 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68   integer into wh
20120 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65  ich.** is writte
20130 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69  n 0 or 1 to indi
20140 63 61 74 65 20 77 68 65 74 68 65 72 20 66 74 73  cate whether fts
20150 33 5f 74 6f 6b 65 6e 69 7a 65 72 20 69 73 20 64  3_tokenizer is d
20160 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61 62 6c  isabled or enabl
20170 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20  ed.** following 
20180 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68 65 20  this call.  The 
20190 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
201a0 20 6d 61 79 20 62 65 20 61 20 4e 55 4c 4c 20 70   may be a NULL p
201b0 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20 77 68  ointer, in.** wh
201c0 69 63 68 20 63 61 73 65 20 74 68 65 20 6e 65 77  ich case the new
201d0 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f 74 20   setting is not 
201e0 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e 20 3c  reported back. <
201f0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e 53  /dd>.**.** <dt>S
20200 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
20210 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e  NABLE_LOAD_EXTEN
20220 53 49 4f 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  SION</dt>.** <dd
20230 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  > ^This option i
20240 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65  s used to enable
20250 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20   or disable the 
20260 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78  [sqlite3_load_ex
20270 74 65 6e 73 69 6f 6e 28 29 5d 0a 2a 2a 20 69 6e  tension()].** in
20280 74 65 72 66 61 63 65 20 69 6e 64 65 70 65 6e 64  terface independ
20290 65 6e 74 6c 79 20 6f 66 20 74 68 65 20 5b 6c 6f  ently of the [lo
202a0 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20  ad_extension()] 
202b0 53 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a  SQL function..**
202c0 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e   The [sqlite3_en
202d0 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  able_load_extens
202e0 69 6f 6e 28 29 5d 20 41 50 49 20 65 6e 61 62 6c  ion()] API enabl
202f0 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20 62  es or disables b
20300 6f 74 68 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49  oth the.** C-API
20310 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65   [sqlite3_load_e
20320 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 20  xtension()] and 
20330 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  the SQL function
20340 20 5b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e   [load_extension
20350 28 29 5d 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68  ()]..** There sh
20360 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69  ould be two addi
20370 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73  tional arguments
20380 2e 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 66 69  ..** When the fi
20390 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  rst argument to 
203a0 74 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 69  this interface i
203b0 73 20 31 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74  s 1, then only t
203c0 68 65 20 43 2d 41 50 49 20 69 73 0a 2a 2a 20 65  he C-API is.** e
203d0 6e 61 62 6c 65 64 20 61 6e 64 20 74 68 65 20 53  nabled and the S
203e0 51 4c 20 66 75 6e 63 74 69 6f 6e 20 72 65 6d 61  QL function rema
203f0 69 6e 73 20 64 69 73 61 62 6c 65 64 2e 20 20 49  ins disabled.  I
20400 66 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75  f the first argu
20410 6d 65 6e 74 20 74 6f 0a 2a 2a 20 74 68 69 73 20  ment to.** this 
20420 69 6e 74 65 72 66 61 63 65 20 69 73 20 30 2c 20  interface is 0, 
20430 74 68 65 6e 20 62 6f 74 68 20 74 68 65 20 43 2d  then both the C-
20440 41 50 49 20 61 6e 64 20 74 68 65 20 53 51 4c 20  API and the SQL 
20450 66 75 6e 63 74 69 6f 6e 20 61 72 65 20 64 69 73  function are dis
20460 61 62 6c 65 64 2e 0a 2a 2a 20 49 66 20 74 68 65  abled..** If the
20470 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
20480 69 73 20 2d 31 2c 20 74 68 65 6e 20 6e 6f 20 63  is -1, then no c
20490 68 61 6e 67 65 73 20 61 72 65 20 6d 61 64 65 20  hanges are made 
204a0 74 6f 20 73 74 61 74 65 20 6f 66 20 65 69 74 68  to state of eith
204b0 65 72 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20  er the.** C-API 
204c0 6f 72 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74  or the SQL funct
204d0 69 6f 6e 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f  ion..** The seco
204e0 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  nd parameter is 
204f0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  a pointer to an 
20500 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69  integer into whi
20510 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e  ch.** is written
20520 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63   0 or 1 to indic
20530 61 74 65 20 77 68 65 74 68 65 72 20 5b 73 71 6c  ate whether [sql
20540 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73  ite3_load_extens
20550 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ion()] interface
20560 0a 2a 2a 20 69 73 20 64 69 73 61 62 6c 65 64 20  .** is disabled 
20570 6f 72 20 65 6e 61 62 6c 65 64 20 66 6f 6c 6c 6f  or enabled follo
20580 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20  wing this call. 
20590 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
205a0 6d 65 74 65 72 20 6d 61 79 0a 2a 2a 20 62 65 20  meter may.** be 
205b0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20  a NULL pointer, 
205c0 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68  in which case th
205d0 65 20 6e 65 77 20 73 65 74 74 69 6e 67 20 69 73  e new setting is
205e0 20 6e 6f 74 20 72 65 70 6f 72 74 65 64 20 62 61   not reported ba
205f0 63 6b 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a  ck..** </dd>.**.
20600 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42  ** <dt>SQLITE_DB
20610 43 4f 4e 46 49 47 5f 4d 41 49 4e 44 42 4e 41 4d  CONFIG_MAINDBNAM
20620 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  E</dt>.** <dd> ^
20630 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
20640 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68  sed to change th
20650 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 22 6d  e name of the "m
20660 61 69 6e 22 20 64 61 74 61 62 61 73 65 0a 2a 2a  ain" database.**
20670 20 73 63 68 65 6d 61 2e 20 20 5e 54 68 65 20 73   schema.  ^The s
20680 6f 6c 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  ole argument is 
20690 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 63  a pointer to a c
206a0 6f 6e 73 74 61 6e 74 20 55 54 46 38 20 73 74 72  onstant UTF8 str
206b0 69 6e 67 0a 2a 2a 20 77 68 69 63 68 20 77 69 6c  ing.** which wil
206c0 6c 20 62 65 63 6f 6d 65 20 74 68 65 20 6e 65 77  l become the new
206d0 20 73 63 68 65 6d 61 20 6e 61 6d 65 20 69 6e 20   schema name in 
206e0 70 6c 61 63 65 20 6f 66 20 22 6d 61 69 6e 22 2e  place of "main".
206f0 20 20 5e 53 51 4c 69 74 65 0a 2a 2a 20 64 6f 65    ^SQLite.** doe
20700 73 20 6e 6f 74 20 6d 61 6b 65 20 61 20 63 6f 70  s not make a cop
20710 79 20 6f 66 20 74 68 65 20 6e 65 77 20 6d 61 69  y of the new mai
20720 6e 20 73 63 68 65 6d 61 20 6e 61 6d 65 20 73 74  n schema name st
20730 72 69 6e 67 2c 20 73 6f 20 74 68 65 20 61 70 70  ring, so the app
20740 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 6d 75 73 74  lication.** must
20750 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65   ensure that the
20760 20 61 72 67 75 6d 65 6e 74 20 70 61 73 73 65 64   argument passed
20770 20 69 6e 74 6f 20 74 68 69 73 20 44 42 43 4f 4e   into this DBCON
20780 46 49 47 20 6f 70 74 69 6f 6e 20 69 73 20 75 6e  FIG option is un
20790 63 68 61 6e 67 65 64 0a 2a 2a 20 75 6e 74 69 6c  changed.** until
207a0 20 61 66 74 65 72 20 74 68 65 20 64 61 74 61 62   after the datab
207b0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63  ase connection c
207c0 6c 6f 73 65 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a  loses..** </dd>.
207d0 2a 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  **.** <dt>SQLITE
207e0 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50  _DBCONFIG_NO_CKP
207f0 54 5f 4f 4e 5f 43 4c 4f 53 45 3c 2f 64 74 3e 0a  T_ON_CLOSE</dt>.
20800 2a 2a 20 3c 64 64 3e 20 55 73 75 61 6c 6c 79 2c  ** <dd> Usually,
20810 20 77 68 65 6e 20 61 20 64 61 74 61 62 61 73 65   when a database
20820 20 69 6e 20 77 61 6c 20 6d 6f 64 65 20 69 73 20   in wal mode is 
20830 63 6c 6f 73 65 64 20 6f 72 20 64 65 74 61 63 68  closed or detach
20840 65 64 20 66 72 6f 6d 20 61 20 0a 2a 2a 20 64 61  ed from a .** da
20850 74 61 62 61 73 65 20 68 61 6e 64 6c 65 2c 20 53  tabase handle, S
20860 51 4c 69 74 65 20 63 68 65 63 6b 73 20 69 66 20  QLite checks if 
20870 74 68 69 73 20 77 69 6c 6c 20 6d 65 61 6e 20 74  this will mean t
20880 68 61 74 20 74 68 65 72 65 20 61 72 65 20 6e 6f  hat there are no
20890 77 20 6e 6f 20 0a 2a 2a 20 63 6f 6e 6e 65 63 74  w no .** connect
208a0 69 6f 6e 73 20 61 74 20 61 6c 6c 20 74 6f 20 74  ions at all to t
208b0 68 65 20 64 61 74 61 62 61 73 65 2e 20 49 66 20  he database. If 
208c0 73 6f 2c 20 69 74 20 70 65 72 66 6f 72 6d 73 20  so, it performs 
208d0 61 20 63 68 65 63 6b 70 6f 69 6e 74 20 0a 2a 2a  a checkpoint .**
208e0 20 6f 70 65 72 61 74 69 6f 6e 20 62 65 66 6f 72   operation befor
208f0 65 20 63 6c 6f 73 69 6e 67 20 74 68 65 20 63 6f  e closing the co
20900 6e 6e 65 63 74 69 6f 6e 2e 20 54 68 69 73 20 6f  nnection. This o
20910 70 74 69 6f 6e 20 6d 61 79 20 62 65 20 75 73 65  ption may be use
20920 64 20 74 6f 0a 2a 2a 20 6f 76 65 72 72 69 64 65  d to.** override
20930 20 74 68 69 73 20 62 65 68 61 76 69 6f 75 72 2e   this behaviour.
20940 20 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d   The first param
20950 65 74 65 72 20 70 61 73 73 65 64 20 74 6f 20 74  eter passed to t
20960 68 69 73 20 6f 70 65 72 61 74 69 6f 6e 0a 2a 2a  his operation.**
20970 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 2d   is an integer -
20980 20 70 6f 73 69 74 69 76 65 20 74 6f 20 64 69 73   positive to dis
20990 61 62 6c 65 20 63 68 65 63 6b 70 6f 69 6e 74 73  able checkpoints
209a0 2d 6f 6e 2d 63 6c 6f 73 65 2c 20 6f 72 20 7a 65  -on-close, or ze
209b0 72 6f 20 28 74 68 65 0a 2a 2a 20 64 65 66 61 75  ro (the.** defau
209c0 6c 74 29 20 74 6f 20 65 6e 61 62 6c 65 20 74 68  lt) to enable th
209d0 65 6d 2c 20 61 6e 64 20 6e 65 67 61 74 69 76 65  em, and negative
209e0 20 74 6f 20 6c 65 61 76 65 20 74 68 65 20 73 65   to leave the se
209f0 74 74 69 6e 67 20 75 6e 63 68 61 6e 67 65 64 2e  tting unchanged.
20a00 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 70  .** The second p
20a10 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 70 6f  arameter is a po
20a20 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65  inter to an inte
20a30 67 65 72 0a 2a 2a 20 69 6e 74 6f 20 77 68 69 63  ger.** into whic
20a40 68 20 69 73 20 77 72 69 74 74 65 6e 20 30 20 6f  h is written 0 o
20a50 72 20 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20  r 1 to indicate 
20a60 77 68 65 74 68 65 72 20 63 68 65 63 6b 70 6f 69  whether checkpoi
20a70 6e 74 73 2d 6f 6e 2d 63 6c 6f 73 65 0a 2a 2a 20  nts-on-close.** 
20a80 68 61 76 65 20 62 65 65 6e 20 64 69 73 61 62 6c  have been disabl
20a90 65 64 20 2d 20 30 20 69 66 20 74 68 65 79 20 61  ed - 0 if they a
20aa0 72 65 20 6e 6f 74 20 64 69 73 61 62 6c 65 64 2c  re not disabled,
20ab0 20 31 20 69 66 20 74 68 65 79 20 61 72 65 2e 0a   1 if they are..
20ac0 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c  ** </dd>.**.** <
20ad0 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  dt>SQLITE_DBCONF
20ae0 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 3c 2f  IG_ENABLE_QPSG</
20af0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 28 54 68 65  dt>.** <dd>^(The
20b00 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47   SQLITE_DBCONFIG
20b10 5f 45 4e 41 42 4c 45 5f 51 50 53 47 20 6f 70 74  _ENABLE_QPSG opt
20b20 69 6f 6e 20 61 63 74 69 76 61 74 65 73 20 6f 72  ion activates or
20b30 20 64 65 61 63 74 69 76 61 74 65 73 0a 2a 2a 20   deactivates.** 
20b40 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e 6e  the [query plann
20b50 65 72 20 73 74 61 62 69 6c 69 74 79 20 67 75 61  er stability gua
20b60 72 61 6e 74 65 65 5d 20 28 51 50 53 47 29 2e 20  rantee] (QPSG). 
20b70 20 57 68 65 6e 20 74 68 65 20 51 50 53 47 20 69   When the QPSG i
20b80 73 20 61 63 74 69 76 65 2c 0a 2a 2a 20 61 20 73  s active,.** a s
20b90 69 6e 67 6c 65 20 53 51 4c 20 71 75 65 72 79 20  ingle SQL query 
20ba0 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 61  statement will a
20bb0 6c 77 61 79 73 20 75 73 65 20 74 68 65 20 73 61  lways use the sa
20bc0 6d 65 20 61 6c 67 6f 72 69 74 68 6d 20 72 65 67  me algorithm reg
20bd0 61 72 64 6c 65 73 73 0a 2a 2a 20 6f 66 20 76 61  ardless.** of va
20be0 6c 75 65 73 20 6f 66 20 5b 62 6f 75 6e 64 20 70  lues of [bound p
20bf0 61 72 61 6d 65 74 65 72 73 5d 2e 29 5e 20 54 68  arameters].)^ Th
20c00 65 20 51 50 53 47 20 64 69 73 61 62 6c 65 73 20  e QPSG disables 
20c10 73 6f 6d 65 20 71 75 65 72 79 20 6f 70 74 69 6d  some query optim
20c20 69 7a 61 74 69 6f 6e 73 0a 2a 2a 20 74 68 61 74  izations.** that
20c30 20 6c 6f 6f 6b 20 61 74 20 74 68 65 20 76 61 6c   look at the val
20c40 75 65 73 20 6f 66 20 62 6f 75 6e 64 20 70 61 72  ues of bound par
20c50 61 6d 65 74 65 72 73 2c 20 77 68 69 63 68 20 63  ameters, which c
20c60 61 6e 20 6d 61 6b 65 20 73 6f 6d 65 20 71 75 65  an make some que
20c70 72 69 65 73 0a 2a 2a 20 73 6c 6f 77 65 72 2e 20  ries.** slower. 
20c80 20 42 75 74 20 74 68 65 20 51 50 53 47 20 68 61   But the QPSG ha
20c90 73 20 74 68 65 20 61 64 76 61 6e 74 61 67 65 20  s the advantage 
20ca0 6f 66 20 6d 6f 72 65 20 70 72 65 64 69 63 74 61  of more predicta
20cb0 62 6c 65 20 62 65 68 61 76 69 6f 72 2e 20 20 57  ble behavior.  W
20cc0 69 74 68 0a 2a 2a 20 74 68 65 20 51 50 53 47 20  ith.** the QPSG 
20cd0 61 63 74 69 76 65 2c 20 53 51 4c 69 74 65 20 77  active, SQLite w
20ce0 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65 20 74  ill always use t
20cf0 68 65 20 73 61 6d 65 20 71 75 65 72 79 20 70 6c  he same query pl
20d00 61 6e 20 69 6e 20 74 68 65 20 66 69 65 6c 64 20  an in the field 
20d10 61 73 0a 2a 2a 20 77 61 73 20 75 73 65 64 20 64  as.** was used d
20d20 75 72 69 6e 67 20 74 65 73 74 69 6e 67 20 69 6e  uring testing in
20d30 20 74 68 65 20 6c 61 62 2e 0a 2a 2a 20 54 68 65   the lab..** The
20d40 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
20d50 74 6f 20 74 68 69 73 20 73 65 74 74 69 6e 67 20  to this setting 
20d60 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68  is an integer wh
20d70 69 63 68 20 69 73 20 30 20 74 6f 20 64 69 73 61  ich is 0 to disa
20d80 62 6c 65 20 0a 2a 2a 20 74 68 65 20 51 50 53 47  ble .** the QPSG
20d90 2c 20 70 6f 73 69 74 69 76 65 20 74 6f 20 65 6e  , positive to en
20da0 61 62 6c 65 20 51 50 53 47 2c 20 6f 72 20 6e 65  able QPSG, or ne
20db0 67 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20  gative to leave 
20dc0 74 68 65 20 73 65 74 74 69 6e 67 0a 2a 2a 20 75  the setting.** u
20dd0 6e 63 68 61 6e 67 65 64 2e 20 54 68 65 20 73 65  nchanged. The se
20de0 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69  cond parameter i
20df0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
20e00 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77  n integer into w
20e10 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74  hich.** is writt
20e20 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64  en 0 or 1 to ind
20e30 69 63 61 74 65 20 77 68 65 74 68 65 72 20 74 68  icate whether th
20e40 65 20 51 50 53 47 20 69 73 20 64 69 73 61 62 6c  e QPSG is disabl
20e50 65 64 20 6f 72 20 65 6e 61 62 6c 65 64 0a 2a 2a  ed or enabled.**
20e60 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20   following this 
20e70 63 61 6c 6c 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a  call..** </dd>.*
20e80 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  *.** <dt>SQLITE_
20e90 44 42 43 4f 4e 46 49 47 5f 54 52 49 47 47 45 52  DBCONFIG_TRIGGER
20ea0 5f 45 51 50 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  _EQP</dt>.** <dd
20eb0 3e 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68  > By default, th
20ec0 65 20 6f 75 74 70 75 74 20 6f 66 20 45 58 50 4c  e output of EXPL
20ed0 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e 20 63  AIN QUERY PLAN c
20ee0 6f 6d 6d 61 6e 64 73 20 64 6f 65 73 20 6e 6f 74  ommands does not
20ef0 20 0a 2a 2a 20 69 6e 63 6c 75 64 65 20 6f 75 74   .** include out
20f00 70 75 74 20 66 6f 72 20 61 6e 79 20 6f 70 65 72  put for any oper
20f10 61 74 69 6f 6e 73 20 70 65 72 66 6f 72 6d 65 64  ations performed
20f20 20 62 79 20 74 72 69 67 67 65 72 20 70 72 6f 67   by trigger prog
20f30 72 61 6d 73 2e 20 54 68 69 73 0a 2a 2a 20 6f 70  rams. This.** op
20f40 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
20f50 73 65 74 20 6f 72 20 63 6c 65 61 72 20 28 74 68  set or clear (th
20f60 65 20 64 65 66 61 75 6c 74 29 20 61 20 66 6c 61  e default) a fla
20f70 67 20 74 68 61 74 20 67 6f 76 65 72 6e 73 20 74  g that governs t
20f80 68 69 73 0a 2a 2a 20 62 65 68 61 76 69 6f 72 2e  his.** behavior.
20f90 20 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d   The first param
20fa0 65 74 65 72 20 70 61 73 73 65 64 20 74 6f 20 74  eter passed to t
20fb0 68 69 73 20 6f 70 65 72 61 74 69 6f 6e 20 69 73  his operation is
20fc0 20 61 6e 20 69 6e 74 65 67 65 72 20 2d 0a 2a 2a   an integer -.**
20fd0 20 70 6f 73 69 74 69 76 65 20 74 6f 20 65 6e 61   positive to ena
20fe0 62 6c 65 20 6f 75 74 70 75 74 20 66 6f 72 20 74  ble output for t
20ff0 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 73 2c  rigger programs,
21000 20 6f 72 20 7a 65 72 6f 20 74 6f 20 64 69 73 61   or zero to disa
21010 62 6c 65 20 69 74 2c 0a 2a 2a 20 6f 72 20 6e 65  ble it,.** or ne
21020 67 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20  gative to leave 
21030 74 68 65 20 73 65 74 74 69 6e 67 20 75 6e 63 68  the setting unch
21040 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73 65  anged..** The se
21050 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69  cond parameter i
21060 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
21070 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77  n integer into w
21080 68 69 63 68 20 69 73 20 77 72 69 74 74 65 6e 20  hich is written 
21090 0a 2a 2a 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  .** 0 or 1 to in
210a0 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 6f  dicate whether o
210b0 75 74 70 75 74 2d 66 6f 72 2d 74 72 69 67 67 65  utput-for-trigge
210c0 72 73 20 68 61 73 20 62 65 65 6e 20 64 69 73 61  rs has been disa
210d0 62 6c 65 64 20 2d 20 30 20 69 66 20 0a 2a 2a 20  bled - 0 if .** 
210e0 69 74 20 69 73 20 6e 6f 74 20 64 69 73 61 62 6c  it is not disabl
210f0 65 64 2c 20 31 20 69 66 20 69 74 20 69 73 2e 20  ed, 1 if it is. 
21100 20 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a   .** </dd>.**.**
21110 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
21120 4e 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42  NFIG_RESET_DATAB
21130 41 53 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  ASE</dt>.** <dd>
21140 20 53 65 74 20 74 68 65 20 53 51 4c 49 54 45 5f   Set the SQLITE_
21150 44 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f 44  DBCONFIG_RESET_D
21160 41 54 41 42 41 53 45 20 66 6c 61 67 20 61 6e 64  ATABASE flag and
21170 20 74 68 65 6e 20 72 75 6e 0a 2a 2a 20 5b 56 41   then run.** [VA
21180 43 55 55 4d 5d 20 69 6e 20 6f 72 64 65 72 20 74  CUUM] in order t
21190 6f 20 72 65 73 65 74 20 61 20 64 61 74 61 62 61  o reset a databa
211a0 73 65 20 62 61 63 6b 20 74 6f 20 61 6e 20 65 6d  se back to an em
211b0 70 74 79 20 64 61 74 61 62 61 73 65 0a 2a 2a 20  pty database.** 
211c0 77 69 74 68 20 6e 6f 20 73 63 68 65 6d 61 20 61  with no schema a
211d0 6e 64 20 6e 6f 20 63 6f 6e 74 65 6e 74 2e 20 54  nd no content. T
211e0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 6f  he following pro
211f0 63 65 73 73 20 77 6f 72 6b 73 20 65 76 65 6e 20  cess works even 
21200 66 6f 72 0a 2a 2a 20 61 20 62 61 64 6c 79 20 63  for.** a badly c
21210 6f 72 72 75 70 74 65 64 20 64 61 74 61 62 61 73  orrupted databas
21220 65 20 66 69 6c 65 3a 0a 2a 2a 20 3c 6f 6c 3e 0a  e file:.** <ol>.
21230 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65 33 5f  ** <li> sqlite3_
21240 64 62 5f 63 6f 6e 66 69 67 28 64 62 2c 20 53 51  db_config(db, SQ
21250 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52 45  LITE_DBCONFIG_RE
21260 53 45 54 5f 44 41 54 41 42 41 53 45 2c 20 31 2c  SET_DATABASE, 1,
21270 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20 5b 73 71   0);.** <li> [sq
21280 6c 69 74 65 33 5f 65 78 65 63 5d 28 64 62 2c 20  lite3_exec](db, 
21290 22 5b 56 41 43 55 55 4d 5d 22 2c 20 30 2c 20 30  "[VACUUM]", 0, 0
212a0 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20 73 71  , 0);.** <li> sq
212b0 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28  lite3_db_config(
212c0 64 62 2c 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  db, SQLITE_DBCON
212d0 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41  FIG_RESET_DATABA
212e0 53 45 2c 20 30 2c 20 30 29 3b 0a 2a 2a 20 3c 2f  SE, 0, 0);.** </
212f0 6f 6c 3e 0a 2a 2a 20 42 65 63 61 75 73 65 20 72  ol>.** Because r
21300 65 73 65 74 74 69 6e 67 20 61 20 64 61 74 61 62  esetting a datab
21310 61 73 65 20 69 73 20 64 65 73 74 72 75 63 74 69  ase is destructi
21320 76 65 20 61 6e 64 20 69 72 72 65 76 65 72 73 69  ve and irreversi
21330 62 6c 65 2c 20 74 68 65 0a 2a 2a 20 70 72 6f 63  ble, the.** proc
21340 65 73 73 20 72 65 71 75 69 72 65 73 20 74 68 65  ess requires the
21350 20 75 73 65 20 6f 66 20 74 68 69 73 20 6f 62 73   use of this obs
21360 63 75 72 65 20 41 50 49 20 61 6e 64 20 6d 75 6c  cure API and mul
21370 74 69 70 6c 65 20 73 74 65 70 73 20 74 6f 20 68  tiple steps to h
21380 65 6c 70 0a 2a 2a 20 65 6e 73 75 72 65 20 74 68  elp.** ensure th
21390 61 74 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 68  at it does not h
213a0 61 70 70 65 6e 20 62 79 20 61 63 63 69 64 65 6e  appen by acciden
213b0 74 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 20 3c  t..** </dd>.** <
213c0 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  /dl>.*/.#define 
213d0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
213e0 4d 41 49 4e 44 42 4e 41 4d 45 20 20 20 20 20 20  MAINDBNAME      
213f0 20 20 20 20 20 20 31 30 30 30 20 2f 2a 20 63 6f        1000 /* co
21400 6e 73 74 20 63 68 61 72 2a 20 2a 2f 0a 23 64 65  nst char* */.#de
21410 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f  fine SQLITE_DBCO
21420 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 20  NFIG_LOOKASIDE  
21430 20 20 20 20 20 20 20 20 20 20 20 31 30 30 31 20             1001 
21440 2f 2a 20 76 6f 69 64 2a 20 69 6e 74 20 69 6e 74  /* void* int int
21450 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
21460 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
21470 4c 45 5f 46 4b 45 59 20 20 20 20 20 20 20 20 20  LE_FKEY         
21480 20 20 31 30 30 32 20 2f 2a 20 69 6e 74 20 69 6e    1002 /* int in
21490 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
214a0 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
214b0 41 42 4c 45 5f 54 52 49 47 47 45 52 20 20 20 20  ABLE_TRIGGER    
214c0 20 20 20 20 31 30 30 33 20 2f 2a 20 69 6e 74 20      1003 /* int 
214d0 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
214e0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
214f0 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45  ENABLE_FTS3_TOKE
21500 4e 49 5a 45 52 20 31 30 30 34 20 2f 2a 20 69 6e  NIZER 1004 /* in
21510 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
21520 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
21530 47 5f 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58  G_ENABLE_LOAD_EX
21540 54 45 4e 53 49 4f 4e 20 31 30 30 35 20 2f 2a 20  TENSION 1005 /* 
21550 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
21560 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
21570 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43  FIG_NO_CKPT_ON_C
21580 4c 4f 53 45 20 20 20 20 20 20 31 30 30 36 20 2f  LOSE      1006 /
21590 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
215a0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
215b0 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53  ONFIG_ENABLE_QPS
215c0 47 20 20 20 20 20 20 20 20 20 20 20 31 30 30 37  G           1007
215d0 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
215e0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
215f0 42 43 4f 4e 46 49 47 5f 54 52 49 47 47 45 52 5f  BCONFIG_TRIGGER_
21600 45 51 50 20 20 20 20 20 20 20 20 20 20 20 31 30  EQP           10
21610 30 38 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  08 /* int int* *
21620 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
21630 5f 44 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f  _DBCONFIG_RESET_
21640 44 41 54 41 42 41 53 45 20 20 20 20 20 20 20 20  DATABASE        
21650 31 30 30 39 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1009 /* int int*
21660 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
21670 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4d 41 58 20  TE_DBCONFIG_MAX 
21680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21690 20 20 31 30 30 39 20 2f 2a 20 4c 61 72 67 65 73    1009 /* Larges
216a0 74 20 44 42 43 4f 4e 46 49 47 20 2a 2f 0a 0a 2f  t DBCONFIG */../
216b0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 45  *.** CAPI3REF: E
216c0 6e 61 62 6c 65 20 4f 72 20 44 69 73 61 62 6c 65  nable Or Disable
216d0 20 45 78 74 65 6e 64 65 64 20 52 65 73 75 6c 74   Extended Result
216e0 20 43 6f 64 65 73 0a 2a 2a 20 4d 45 54 48 4f 44   Codes.** METHOD
216f0 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
21700 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78 74  ^The sqlite3_ext
21710 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64  ended_result_cod
21720 65 73 28 29 20 72 6f 75 74 69 6e 65 20 65 6e 61  es() routine ena
21730 62 6c 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73  bles or disables
21740 20 74 68 65 0a 2a 2a 20 5b 65 78 74 65 6e 64 65   the.** [extende
21750 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73 5d 20  d result codes] 
21760 66 65 61 74 75 72 65 20 6f 66 20 53 51 4c 69 74  feature of SQLit
21770 65 2e 20 5e 54 68 65 20 65 78 74 65 6e 64 65 64  e. ^The extended
21780 20 72 65 73 75 6c 74 0a 2a 2a 20 63 6f 64 65 73   result.** codes
21790 20 61 72 65 20 64 69 73 61 62 6c 65 64 20 62 79   are disabled by
217a0 20 64 65 66 61 75 6c 74 20 66 6f 72 20 68 69 73   default for his
217b0 74 6f 72 69 63 61 6c 20 63 6f 6d 70 61 74 69 62  torical compatib
217c0 69 6c 69 74 79 2e 0a 2a 2f 0a 53 51 4c 49 54 45  ility..*/.SQLITE
217d0 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
217e0 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74  _extended_result
217f0 5f 63 6f 64 65 73 28 73 71 6c 69 74 65 33 2a 2c  _codes(sqlite3*,
21800 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0a 0a 2f 2a   int onoff);../*
21810 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4c 61  .** CAPI3REF: La
21820 73 74 20 49 6e 73 65 72 74 20 52 6f 77 69 64 0a  st Insert Rowid.
21830 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
21840 65 33 0a 2a 2a 0a 2a 2a 20 5e 45 61 63 68 20 65  e3.**.** ^Each e
21850 6e 74 72 79 20 69 6e 20 6d 6f 73 74 20 53 51 4c  ntry in most SQL
21860 69 74 65 20 74 61 62 6c 65 73 20 28 65 78 63 65  ite tables (exce
21870 70 74 20 66 6f 72 20 5b 57 49 54 48 4f 55 54 20  pt for [WITHOUT 
21880 52 4f 57 49 44 5d 20 74 61 62 6c 65 73 29 0a 2a  ROWID] tables).*
21890 2a 20 68 61 73 20 61 20 75 6e 69 71 75 65 20 36  * has a unique 6
218a0 34 2d 62 69 74 20 73 69 67 6e 65 64 0a 2a 2a 20  4-bit signed.** 
218b0 69 6e 74 65 67 65 72 20 6b 65 79 20 63 61 6c 6c  integer key call
218c0 65 64 20 74 68 65 20 5b 52 4f 57 49 44 20 7c 20  ed the [ROWID | 
218d0 22 72 6f 77 69 64 22 5d 2e 20 5e 54 68 65 20 72  "rowid"]. ^The r
218e0 6f 77 69 64 20 69 73 20 61 6c 77 61 79 73 20 61  owid is always a
218f0 76 61 69 6c 61 62 6c 65 0a 2a 2a 20 61 73 20 61  vailable.** as a
21900 6e 20 75 6e 64 65 63 6c 61 72 65 64 20 63 6f 6c  n undeclared col
21910 75 6d 6e 20 6e 61 6d 65 64 20 52 4f 57 49 44 2c  umn named ROWID,
21920 20 4f 49 44 2c 20 6f 72 20 5f 52 4f 57 49 44 5f   OID, or _ROWID_
21930 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 6f 73   as long as thos
21940 65 0a 2a 2a 20 6e 61 6d 65 73 20 61 72 65 20 6e  e.** names are n
21950 6f 74 20 61 6c 73 6f 20 75 73 65 64 20 62 79 20  ot also used by 
21960 65 78 70 6c 69 63 69 74 6c 79 20 64 65 63 6c 61  explicitly decla
21970 72 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 5e 49 66  red columns. ^If
21980 0a 2a 2a 20 74 68 65 20 74 61 62 6c 65 20 68 61  .** the table ha
21990 73 20 61 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 79  s a column of ty
219a0 70 65 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d  pe [INTEGER PRIM
219b0 41 52 59 20 4b 45 59 5d 20 74 68 65 6e 20 74 68  ARY KEY] then th
219c0 61 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 69 73 20  at column.** is 
219d0 61 6e 6f 74 68 65 72 20 61 6c 69 61 73 20 66 6f  another alias fo
219e0 72 20 74 68 65 20 72 6f 77 69 64 2e 0a 2a 2a 0a  r the rowid..**.
219f0 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
21a00 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
21a10 64 28 44 29 20 69 6e 74 65 72 66 61 63 65 20 75  d(D) interface u
21a20 73 75 61 6c 6c 79 20 72 65 74 75 72 6e 73 20 74  sually returns t
21a30 68 65 20 5b 72 6f 77 69 64 5d 20 6f 66 0a 2a 2a  he [rowid] of.**
21a40 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74   the most recent
21a50 20 73 75 63 63 65 73 73 66 75 6c 20 5b 49 4e 53   successful [INS
21a60 45 52 54 5d 20 69 6e 74 6f 20 61 20 72 6f 77 69  ERT] into a rowi
21a70 64 20 74 61 62 6c 65 20 6f 72 20 5b 76 69 72 74  d table or [virt
21a80 75 61 6c 20 74 61 62 6c 65 5d 0a 2a 2a 20 6f 6e  ual table].** on
21a90 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
21aa0 74 69 6f 6e 20 44 2e 20 5e 49 6e 73 65 72 74 73  tion D. ^Inserts
21ab0 20 69 6e 74 6f 20 5b 57 49 54 48 4f 55 54 20 52   into [WITHOUT R
21ac0 4f 57 49 44 5d 20 74 61 62 6c 65 73 20 61 72 65  OWID] tables are
21ad0 20 6e 6f 74 0a 2a 2a 20 72 65 63 6f 72 64 65 64   not.** recorded
21ae0 2e 20 5e 49 66 20 6e 6f 20 73 75 63 63 65 73 73  . ^If no success
21af0 66 75 6c 20 5b 49 4e 53 45 52 54 5d 73 20 69 6e  ful [INSERT]s in
21b00 74 6f 20 72 6f 77 69 64 20 74 61 62 6c 65 73 20  to rowid tables 
21b10 68 61 76 65 20 65 76 65 72 20 6f 63 63 75 72 72  have ever occurr
21b20 65 64 20 0a 2a 2a 20 6f 6e 20 74 68 65 20 64 61  ed .** on the da
21b30 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
21b40 6e 20 44 2c 20 74 68 65 6e 20 73 71 6c 69 74 65  n D, then sqlite
21b50 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
21b60 77 69 64 28 44 29 20 72 65 74 75 72 6e 73 20 0a  wid(D) returns .
21b70 2a 2a 20 7a 65 72 6f 2e 0a 2a 2a 0a 2a 2a 20 41  ** zero..**.** A
21b80 73 20 77 65 6c 6c 20 61 73 20 62 65 69 6e 67 20  s well as being 
21b90 73 65 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  set automaticall
21ba0 79 20 61 73 20 72 6f 77 73 20 61 72 65 20 69 6e  y as rows are in
21bb0 73 65 72 74 65 64 20 69 6e 74 6f 20 64 61 74 61  serted into data
21bc0 62 61 73 65 0a 2a 2a 20 74 61 62 6c 65 73 2c 20  base.** tables, 
21bd0 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
21be0 65 64 20 62 79 20 74 68 69 73 20 66 75 6e 63 74  ed by this funct
21bf0 69 6f 6e 20 6d 61 79 20 62 65 20 73 65 74 20 65  ion may be set e
21c00 78 70 6c 69 63 69 74 6c 79 20 62 79 0a 2a 2a 20  xplicitly by.** 
21c10 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73  [sqlite3_set_las
21c20 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
21c30 5d 0a 2a 2a 0a 2a 2a 20 53 6f 6d 65 20 76 69 72  ].**.** Some vir
21c40 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
21c50 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 61 79 20 49  mentations may I
21c60 4e 53 45 52 54 20 72 6f 77 73 20 69 6e 74 6f 20  NSERT rows into 
21c70 72 6f 77 69 64 20 74 61 62 6c 65 73 20 61 73 0a  rowid tables as.
21c80 2a 2a 20 70 61 72 74 20 6f 66 20 63 6f 6d 6d 69  ** part of commi
21c90 74 74 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74  tting a transact
21ca0 69 6f 6e 20 28 65 2e 67 2e 20 74 6f 20 66 6c 75  ion (e.g. to flu
21cb0 73 68 20 64 61 74 61 20 61 63 63 75 6d 75 6c 61  sh data accumula
21cc0 74 65 64 20 69 6e 20 6d 65 6d 6f 72 79 0a 2a 2a  ted in memory.**
21cd0 20 74 6f 20 64 69 73 6b 29 2e 20 49 6e 20 74 68   to disk). In th
21ce0 69 73 20 63 61 73 65 20 73 75 62 73 65 71 75 65  is case subseque
21cf0 6e 74 20 63 61 6c 6c 73 20 74 6f 20 74 68 69 73  nt calls to this
21d00 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
21d10 20 74 68 65 20 72 6f 77 69 64 0a 2a 2a 20 61 73   the rowid.** as
21d20 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
21d30 65 73 65 20 69 6e 74 65 72 6e 61 6c 20 49 4e 53  ese internal INS
21d40 45 52 54 20 6f 70 65 72 61 74 69 6f 6e 73 2c 20  ERT operations, 
21d50 77 68 69 63 68 20 6c 65 61 64 73 20 74 6f 20 0a  which leads to .
21d60 2a 2a 20 75 6e 69 6e 74 75 69 74 69 76 65 20 72  ** unintuitive r
21d70 65 73 75 6c 74 73 2e 20 56 69 72 74 75 61 6c 20  esults. Virtual 
21d80 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  table implementa
21d90 74 69 6f 6e 73 20 74 68 61 74 20 64 6f 20 77 72  tions that do wr
21da0 69 74 65 20 74 6f 20 72 6f 77 69 64 0a 2a 2a 20  ite to rowid.** 
21db0 74 61 62 6c 65 73 20 69 6e 20 74 68 69 73 20 77  tables in this w
21dc0 61 79 20 63 61 6e 20 61 76 6f 69 64 20 74 68 69  ay can avoid thi
21dd0 73 20 70 72 6f 62 6c 65 6d 20 62 79 20 72 65 73  s problem by res
21de0 74 6f 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69  toring the origi
21df0 6e 61 6c 20 0a 2a 2a 20 72 6f 77 69 64 20 76 61  nal .** rowid va
21e00 6c 75 65 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  lue using [sqlit
21e10 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65  e3_set_last_inse
21e20 72 74 5f 72 6f 77 69 64 28 29 5d 20 62 65 66 6f  rt_rowid()] befo
21e30 72 65 20 72 65 74 75 72 6e 69 6e 67 20 0a 2a 2a  re returning .**
21e40 20 63 6f 6e 74 72 6f 6c 20 74 6f 20 74 68 65 20   control to the 
21e50 75 73 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49 66  user..**.** ^(If
21e60 20 61 6e 20 5b 49 4e 53 45 52 54 5d 20 6f 63 63   an [INSERT] occ
21e70 75 72 73 20 77 69 74 68 69 6e 20 61 20 74 72 69  urs within a tri
21e80 67 67 65 72 20 74 68 65 6e 20 74 68 69 73 20 72  gger then this r
21e90 6f 75 74 69 6e 65 20 77 69 6c 6c 20 0a 2a 2a 20  outine will .** 
21ea0 72 65 74 75 72 6e 20 74 68 65 20 5b 72 6f 77 69  return the [rowi
21eb0 64 5d 20 6f 66 20 74 68 65 20 69 6e 73 65 72 74  d] of the insert
21ec0 65 64 20 72 6f 77 20 61 73 20 6c 6f 6e 67 20 61  ed row as long a
21ed0 73 20 74 68 65 20 74 72 69 67 67 65 72 20 69 73  s the trigger is
21ee0 20 0a 2a 2a 20 72 75 6e 6e 69 6e 67 2e 20 4f 6e   .** running. On
21ef0 63 65 20 74 68 65 20 74 72 69 67 67 65 72 20 70  ce the trigger p
21f00 72 6f 67 72 61 6d 20 65 6e 64 73 2c 20 74 68 65  rogram ends, the
21f10 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20   value returned 
21f20 0a 2a 2a 20 62 79 20 74 68 69 73 20 72 6f 75 74  .** by this rout
21f30 69 6e 65 20 72 65 76 65 72 74 73 20 74 6f 20 77  ine reverts to w
21f40 68 61 74 20 69 74 20 77 61 73 20 62 65 66 6f 72  hat it was befor
21f50 65 20 74 68 65 20 74 72 69 67 67 65 72 20 77 61  e the trigger wa
21f60 73 20 66 69 72 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a  s fired.)^.**.**
21f70 20 5e 41 6e 20 5b 49 4e 53 45 52 54 5d 20 74 68   ^An [INSERT] th
21f80 61 74 20 66 61 69 6c 73 20 64 75 65 20 74 6f 20  at fails due to 
21f90 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
21fa0 6c 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 0a  lation is not a.
21fb0 2a 2a 20 73 75 63 63 65 73 73 66 75 6c 20 5b 49  ** successful [I
21fc0 4e 53 45 52 54 5d 20 61 6e 64 20 64 6f 65 73 20  NSERT] and does 
21fd0 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 76  not change the v
21fe0 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
21ff0 20 74 68 69 73 0a 2a 2a 20 72 6f 75 74 69 6e 65   this.** routine
22000 2e 20 20 5e 54 68 75 73 20 49 4e 53 45 52 54 20  .  ^Thus INSERT 
22010 4f 52 20 46 41 49 4c 2c 20 49 4e 53 45 52 54 20  OR FAIL, INSERT 
22020 4f 52 20 49 47 4e 4f 52 45 2c 20 49 4e 53 45 52  OR IGNORE, INSER
22030 54 20 4f 52 20 52 4f 4c 4c 42 41 43 4b 2c 0a 2a  T OR ROLLBACK,.*
22040 2a 20 61 6e 64 20 49 4e 53 45 52 54 20 4f 52 20  * and INSERT OR 
22050 41 42 4f 52 54 20 6d 61 6b 65 20 6e 6f 20 63 68  ABORT make no ch
22060 61 6e 67 65 73 20 74 6f 20 74 68 65 20 72 65 74  anges to the ret
22070 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 69  urn value of thi
22080 73 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 77 68 65  s.** routine whe
22090 6e 20 74 68 65 69 72 20 69 6e 73 65 72 74 69 6f  n their insertio
220a0 6e 20 66 61 69 6c 73 2e 20 20 5e 28 57 68 65 6e  n fails.  ^(When
220b0 20 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41   INSERT OR REPLA
220c0 43 45 0a 2a 2a 20 65 6e 63 6f 75 6e 74 65 72 73  CE.** encounters
220d0 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
220e0 6f 6c 61 74 69 6f 6e 2c 20 69 74 20 64 6f 65 73  olation, it does
220f0 20 6e 6f 74 20 66 61 69 6c 2e 20 20 54 68 65 0a   not fail.  The.
22100 2a 2a 20 49 4e 53 45 52 54 20 63 6f 6e 74 69 6e  ** INSERT contin
22110 75 65 73 20 74 6f 20 63 6f 6d 70 6c 65 74 69 6f  ues to completio
22120 6e 20 61 66 74 65 72 20 64 65 6c 65 74 69 6e 67  n after deleting
22130 20 72 6f 77 73 20 74 68 61 74 20 63 61 75 73 65   rows that cause
22140 64 0a 2a 2a 20 74 68 65 20 63 6f 6e 73 74 72 61  d.** the constra
22150 69 6e 74 20 70 72 6f 62 6c 65 6d 20 73 6f 20 49  int problem so I
22160 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45  NSERT OR REPLACE
22170 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 63 68 61   will always cha
22180 6e 67 65 0a 2a 2a 20 74 68 65 20 72 65 74 75 72  nge.** the retur
22190 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20  n value of this 
221a0 69 6e 74 65 72 66 61 63 65 2e 29 5e 0a 2a 2a 0a  interface.)^.**.
221b0 2a 2a 20 5e 46 6f 72 20 74 68 65 20 70 75 72 70  ** ^For the purp
221c0 6f 73 65 73 20 6f 66 20 74 68 69 73 20 72 6f 75  oses of this rou
221d0 74 69 6e 65 2c 20 61 6e 20 5b 49 4e 53 45 52 54  tine, an [INSERT
221e0 5d 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20  ] is considered 
221f0 74 6f 0a 2a 2a 20 62 65 20 73 75 63 63 65 73 73  to.** be success
22200 66 75 6c 20 65 76 65 6e 20 69 66 20 69 74 20 69  ful even if it i
22210 73 20 73 75 62 73 65 71 75 65 6e 74 6c 79 20 72  s subsequently r
22220 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a 2a 0a 2a  olled back..**.*
22230 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  * This function 
22240 69 73 20 61 63 63 65 73 73 69 62 6c 65 20 74 6f  is accessible to
22250 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
22260 76 69 61 20 74 68 65 0a 2a 2a 20 5b 6c 61 73 74  via the.** [last
22270 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 20  _insert_rowid() 
22280 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 2a  SQL function]..*
22290 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61 72 61  *.** If a separa
222a0 74 65 20 74 68 72 65 61 64 20 70 65 72 66 6f 72  te thread perfor
222b0 6d 73 20 61 20 6e 65 77 20 5b 49 4e 53 45 52 54  ms a new [INSERT
222c0 5d 20 6f 6e 20 74 68 65 20 73 61 6d 65 0a 2a 2a  ] on the same.**
222d0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
222e0 74 69 6f 6e 20 77 68 69 6c 65 20 74 68 65 20 5b  tion while the [
222f0 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73  sqlite3_last_ins
22300 65 72 74 5f 72 6f 77 69 64 28 29 5d 0a 2a 2a 20  ert_rowid()].** 
22310 66 75 6e 63 74 69 6f 6e 20 69 73 20 72 75 6e 6e  function is runn
22320 69 6e 67 20 61 6e 64 20 74 68 75 73 20 63 68 61  ing and thus cha
22330 6e 67 65 73 20 74 68 65 20 6c 61 73 74 20 69 6e  nges the last in
22340 73 65 72 74 20 5b 72 6f 77 69 64 5d 2c 0a 2a 2a  sert [rowid],.**
22350 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20   then the value 
22360 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71 6c  returned by [sql
22370 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
22380 5f 72 6f 77 69 64 28 29 5d 20 69 73 0a 2a 2a 20  _rowid()] is.** 
22390 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e  unpredictable an
223a0 64 20 6d 69 67 68 74 20 6e 6f 74 20 65 71 75 61  d might not equa
223b0 6c 20 65 69 74 68 65 72 20 74 68 65 20 6f 6c 64  l either the old
223c0 20 6f 72 20 74 68 65 20 6e 65 77 0a 2a 2a 20 6c   or the new.** l
223d0 61 73 74 20 69 6e 73 65 72 74 20 5b 72 6f 77 69  ast insert [rowi
223e0 64 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  d]..*/.SQLITE_AP
223f0 49 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  I sqlite3_int64 
22400 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73  sqlite3_last_ins
22410 65 72 74 5f 72 6f 77 69 64 28 73 71 6c 69 74 65  ert_rowid(sqlite
22420 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  3*);../*.** CAPI
22430 33 52 45 46 3a 20 53 65 74 20 74 68 65 20 4c 61  3REF: Set the La
22440 73 74 20 49 6e 73 65 72 74 20 52 6f 77 69 64 20  st Insert Rowid 
22450 76 61 6c 75 65 2e 0a 2a 2a 20 4d 45 54 48 4f 44  value..** METHOD
22460 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
22470 54 68 65 20 73 71 6c 69 74 65 33 5f 73 65 74 5f  The sqlite3_set_
22480 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
22490 64 28 44 2c 20 52 29 20 6d 65 74 68 6f 64 20 61  d(D, R) method a
224a0 6c 6c 6f 77 73 20 74 68 65 20 61 70 70 6c 69 63  llows the applic
224b0 61 74 69 6f 6e 20 74 6f 0a 2a 2a 20 73 65 74 20  ation to.** set 
224c0 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
224d0 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 73 71  ed by calling sq
224e0 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
224f0 74 5f 72 6f 77 69 64 28 44 29 20 74 6f 20 52 20  t_rowid(D) to R 
22500 0a 2a 2a 20 77 69 74 68 6f 75 74 20 69 6e 73 65  .** without inse
22510 72 74 69 6e 67 20 61 20 72 6f 77 20 69 6e 74 6f  rting a row into
22520 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a 2a   the database..*
22530 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69  /.SQLITE_API voi
22540 64 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61  d sqlite3_set_la
22550 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
22560 73 71 6c 69 74 65 33 2a 2c 73 71 6c 69 74 65 33  sqlite3*,sqlite3
22570 5f 69 6e 74 36 34 29 3b 0a 0a 2f 2a 0a 2a 2a 20  _int64);../*.** 
22580 43 41 50 49 33 52 45 46 3a 20 43 6f 75 6e 74 20  CAPI3REF: Count 
22590 54 68 65 20 4e 75 6d 62 65 72 20 4f 66 20 52 6f  The Number Of Ro
225a0 77 73 20 4d 6f 64 69 66 69 65 64 0a 2a 2a 20 4d  ws Modified.** M
225b0 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
225c0 2a 0a 2a 2a 20 5e 54 68 69 73 20 66 75 6e 63 74  *.** ^This funct
225d0 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20  ion returns the 
225e0 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6d  number of rows m
225f0 6f 64 69 66 69 65 64 2c 20 69 6e 73 65 72 74 65  odified, inserte
22600 64 20 6f 72 0a 2a 2a 20 64 65 6c 65 74 65 64 20  d or.** deleted 
22610 62 79 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  by the most rece
22620 6e 74 6c 79 20 63 6f 6d 70 6c 65 74 65 64 20 49  ntly completed I
22630 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f 72  NSERT, UPDATE or
22640 20 44 45 4c 45 54 45 0a 2a 2a 20 73 74 61 74 65   DELETE.** state
22650 6d 65 6e 74 20 6f 6e 20 74 68 65 20 64 61 74 61  ment on the data
22660 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
22670 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
22680 20 6f 6e 6c 79 20 70 61 72 61 6d 65 74 65 72 2e   only parameter.
22690 0a 2a 2a 20 5e 45 78 65 63 75 74 69 6e 67 20 61  .** ^Executing a
226a0 6e 79 20 6f 74 68 65 72 20 74 79 70 65 20 6f 66  ny other type of
226b0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 64   SQL statement d
226c0 6f 65 73 20 6e 6f 74 20 6d 6f 64 69 66 79 20 74  oes not modify t
226d0 68 65 20 76 61 6c 75 65 0a 2a 2a 20 72 65 74 75  he value.** retu
226e0 72 6e 65 64 20 62 79 20 74 68 69 73 20 66 75 6e  rned by this fun
226f0 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e  ction..**.** ^On
22700 6c 79 20 63 68 61 6e 67 65 73 20 6d 61 64 65 20  ly changes made 
22710 64 69 72 65 63 74 6c 79 20 62 79 20 74 68 65 20  directly by the 
22720 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f  INSERT, UPDATE o
22730 72 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65  r DELETE stateme
22740 6e 74 20 61 72 65 0a 2a 2a 20 63 6f 6e 73 69 64  nt are.** consid
22750 65 72 65 64 20 2d 20 61 75 78 69 6c 69 61 72 79  ered - auxiliary
22760 20 63 68 61 6e 67 65 73 20 63 61 75 73 65 64 20   changes caused 
22770 62 79 20 5b 43 52 45 41 54 45 20 54 52 49 47 47  by [CREATE TRIGG
22780 45 52 20 7c 20 74 72 69 67 67 65 72 73 5d 2c 20  ER | triggers], 
22790 0a 2a 2a 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79  .** [foreign key
227a0 20 61 63 74 69 6f 6e 73 5d 20 6f 72 20 5b 52 45   actions] or [RE
227b0 50 4c 41 43 45 5d 20 63 6f 6e 73 74 72 61 69 6e  PLACE] constrain
227c0 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 72 65  t resolution are
227d0 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a   not counted..**
227e0 20 0a 2a 2a 20 43 68 61 6e 67 65 73 20 74 6f 20   .** Changes to 
227f0 61 20 76 69 65 77 20 74 68 61 74 20 61 72 65 20  a view that are 
22800 69 6e 74 65 72 63 65 70 74 65 64 20 62 79 20 0a  intercepted by .
22810 2a 2a 20 5b 49 4e 53 54 45 41 44 20 4f 46 20 74  ** [INSTEAD OF t
22820 72 69 67 67 65 72 20 7c 20 49 4e 53 54 45 41 44  rigger | INSTEAD
22830 20 4f 46 20 74 72 69 67 67 65 72 73 5d 20 61 72   OF triggers] ar
22840 65 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 20 5e  e not counted. ^
22850 54 68 65 20 76 61 6c 75 65 20 0a 2a 2a 20 72 65  The value .** re
22860 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65  turned by sqlite
22870 33 5f 63 68 61 6e 67 65 73 28 29 20 69 6d 6d 65  3_changes() imme
22880 64 69 61 74 65 6c 79 20 61 66 74 65 72 20 61 6e  diately after an
22890 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20   INSERT, UPDATE 
228a0 6f 72 20 0a 2a 2a 20 44 45 4c 45 54 45 20 73 74  or .** DELETE st
228b0 61 74 65 6d 65 6e 74 20 72 75 6e 20 6f 6e 20 61  atement run on a
228c0 20 76 69 65 77 20 69 73 20 61 6c 77 61 79 73 20   view is always 
228d0 7a 65 72 6f 2e 20 4f 6e 6c 79 20 63 68 61 6e 67  zero. Only chang
228e0 65 73 20 6d 61 64 65 20 74 6f 20 72 65 61 6c 20  es made to real 
228f0 0a 2a 2a 20 74 61 62 6c 65 73 20 61 72 65 20 63  .** tables are c
22900 6f 75 6e 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68  ounted..**.** Th
22910 69 6e 67 73 20 61 72 65 20 6d 6f 72 65 20 63 6f  ings are more co
22920 6d 70 6c 69 63 61 74 65 64 20 69 66 20 74 68 65  mplicated if the
22930 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
22940 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 0a 2a  () function is.*
22950 2a 20 65 78 65 63 75 74 65 64 20 77 68 69 6c 65  * executed while
22960 20 61 20 74 72 69 67 67 65 72 20 70 72 6f 67 72   a trigger progr
22970 61 6d 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 54  am is running. T
22980 68 69 73 20 6d 61 79 20 68 61 70 70 65 6e 20 69  his may happen i
22990 66 20 74 68 65 0a 2a 2a 20 70 72 6f 67 72 61 6d  f the.** program
229a0 20 75 73 65 73 20 74 68 65 20 5b 63 68 61 6e 67   uses the [chang
229b0 65 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  es() SQL functio
229c0 6e 5d 2c 20 6f 72 20 69 66 20 73 6f 6d 65 20 6f  n], or if some o
229d0 74 68 65 72 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  ther callback.**
229e0 20 66 75 6e 63 74 69 6f 6e 20 69 6e 76 6f 6b 65   function invoke
229f0 73 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  s sqlite3_change
22a00 73 28 29 20 64 69 72 65 63 74 6c 79 2e 20 45 73  s() directly. Es
22a10 73 65 6e 74 69 61 6c 6c 79 3a 0a 2a 2a 20 0a 2a  sentially:.** .*
22a20 2a 20 3c 75 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e  * <ul>.**   <li>
22a30 20 5e 28 42 65 66 6f 72 65 20 65 6e 74 65 72 69   ^(Before enteri
22a40 6e 67 20 61 20 74 72 69 67 67 65 72 20 70 72 6f  ng a trigger pro
22a50 67 72 61 6d 20 74 68 65 20 76 61 6c 75 65 20 72  gram the value r
22a60 65 74 75 72 6e 65 64 20 62 79 0a 2a 2a 20 20 20  eturned by.**   
22a70 20 20 20 20 20 73 71 6c 69 74 65 33 5f 63 68 61       sqlite3_cha
22a80 6e 67 65 73 28 29 20 66 75 6e 63 74 69 6f 6e 20  nges() function 
22a90 69 73 20 73 61 76 65 64 2e 20 41 66 74 65 72 20  is saved. After 
22aa0 74 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67  the trigger prog
22ab0 72 61 6d 20 0a 2a 2a 20 20 20 20 20 20 20 20 68  ram .**        h
22ac0 61 73 20 66 69 6e 69 73 68 65 64 2c 20 74 68 65  as finished, the
22ad0 20 6f 72 69 67 69 6e 61 6c 20 76 61 6c 75 65 20   original value 
22ae0 69 73 20 72 65 73 74 6f 72 65 64 2e 29 5e 0a 2a  is restored.)^.*
22af0 2a 20 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5e 28 57  * .**   <li> ^(W
22b00 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 20  ithin a trigger 
22b10 70 72 6f 67 72 61 6d 20 65 61 63 68 20 49 4e 53  program each INS
22b20 45 52 54 2c 20 55 50 44 41 54 45 20 61 6e 64 20  ERT, UPDATE and 
22b30 44 45 4c 45 54 45 20 0a 2a 2a 20 20 20 20 20 20  DELETE .**      
22b40 20 20 73 74 61 74 65 6d 65 6e 74 20 73 65 74 73    statement sets
22b50 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72   the value retur
22b60 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 63  ned by sqlite3_c
22b70 68 61 6e 67 65 73 28 29 20 0a 2a 2a 20 20 20 20  hanges() .**    
22b80 20 20 20 20 75 70 6f 6e 20 63 6f 6d 70 6c 65 74      upon complet
22b90 69 6f 6e 20 61 73 20 6e 6f 72 6d 61 6c 2e 20 4f  ion as normal. O
22ba0 66 20 63 6f 75 72 73 65 2c 20 74 68 69 73 20 76  f course, this v
22bb0 61 6c 75 65 20 77 69 6c 6c 20 6e 6f 74 20 69 6e  alue will not in
22bc0 63 6c 75 64 65 20 0a 2a 2a 20 20 20 20 20 20 20  clude .**       
22bd0 20 61 6e 79 20 63 68 61 6e 67 65 73 20 70 65 72   any changes per
22be0 66 6f 72 6d 65 64 20 62 79 20 73 75 62 2d 74 72  formed by sub-tr
22bf0 69 67 67 65 72 73 2c 20 61 73 20 74 68 65 20 73  iggers, as the s
22c00 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29  qlite3_changes()
22c10 20 0a 2a 2a 20 20 20 20 20 20 20 20 76 61 6c 75   .**        valu
22c20 65 20 77 69 6c 6c 20 62 65 20 73 61 76 65 64 20  e will be saved 
22c30 61 6e 64 20 72 65 73 74 6f 72 65 64 20 61 66 74  and restored aft
22c40 65 72 20 65 61 63 68 20 73 75 62 2d 74 72 69 67  er each sub-trig
22c50 67 65 72 20 68 61 73 20 72 75 6e 2e 29 5e 0a 2a  ger has run.)^.*
22c60 2a 20 3c 2f 75 6c 3e 0a 2a 2a 20 0a 2a 2a 20 5e  * </ul>.** .** ^
22c70 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20  This means that 
22c80 69 66 20 74 68 65 20 63 68 61 6e 67 65 73 28 29  if the changes()
22c90 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 28 6f   SQL function (o
22ca0 72 20 73 69 6d 69 6c 61 72 29 20 69 73 20 75 73  r similar) is us
22cb0 65 64 0a 2a 2a 20 62 79 20 74 68 65 20 66 69 72  ed.** by the fir
22cc0 73 74 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54  st INSERT, UPDAT
22cd0 45 20 6f 72 20 44 45 4c 45 54 45 20 73 74 61 74  E or DELETE stat
22ce0 65 6d 65 6e 74 20 77 69 74 68 69 6e 20 61 20 74  ement within a t
22cf0 72 69 67 67 65 72 2c 20 69 74 20 0a 2a 2a 20 72  rigger, it .** r
22d00 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65  eturns the value
22d10 20 61 73 20 73 65 74 20 77 68 65 6e 20 74 68 65   as set when the
22d20 20 63 61 6c 6c 69 6e 67 20 73 74 61 74 65 6d 65   calling stateme
22d30 6e 74 20 62 65 67 61 6e 20 65 78 65 63 75 74 69  nt began executi
22d40 6e 67 2e 0a 2a 2a 20 5e 49 66 20 69 74 20 69 73  ng..** ^If it is
22d50 20 75 73 65 64 20 62 79 20 74 68 65 20 73 65 63   used by the sec
22d60 6f 6e 64 20 6f 72 20 73 75 62 73 65 71 75 65 6e  ond or subsequen
22d70 74 20 73 75 63 68 20 73 74 61 74 65 6d 65 6e 74  t such statement
22d80 20 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65   within a trigge
22d90 72 20 0a 2a 2a 20 70 72 6f 67 72 61 6d 2c 20 74  r .** program, t
22da0 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
22db0 64 20 72 65 66 6c 65 63 74 73 20 74 68 65 20 6e  d reflects the n
22dc0 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6d 6f  umber of rows mo
22dd0 64 69 66 69 65 64 20 62 79 20 74 68 65 20 0a 2a  dified by the .*
22de0 2a 20 70 72 65 76 69 6f 75 73 20 49 4e 53 45 52  * previous INSER
22df0 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c  T, UPDATE or DEL
22e00 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ETE statement wi
22e10 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72  thin the same tr
22e20 69 67 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 53 65 65  igger..**.** See
22e30 20 61 6c 73 6f 20 74 68 65 20 5b 73 71 6c 69 74   also the [sqlit
22e40 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73  e3_total_changes
22e50 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74  ()] interface, t
22e60 68 65 0a 2a 2a 20 5b 63 6f 75 6e 74 5f 63 68 61  he.** [count_cha
22e70 6e 67 65 73 20 70 72 61 67 6d 61 5d 2c 20 61 6e  nges pragma], an
22e80 64 20 74 68 65 20 5b 63 68 61 6e 67 65 73 28 29  d the [changes()
22e90 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a   SQL function]..
22ea0 2a 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61 72  **.** If a separ
22eb0 61 74 65 20 74 68 72 65 61 64 20 6d 61 6b 65 73  ate thread makes
22ec0 20 63 68 61 6e 67 65 73 20 6f 6e 20 74 68 65 20   changes on the 
22ed0 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 63 6f  same database co
22ee0 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77 68 69 6c  nnection.** whil
22ef0 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  e [sqlite3_chang
22f00 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e 67  es()] is running
22f10 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20   then the value 
22f20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 69 73 20 75  returned.** is u
22f30 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e 64  npredictable and
22f40 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c 2e   not meaningful.
22f50 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
22f60 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  nt sqlite3_chang
22f70 65 73 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f  es(sqlite3*);../
22f80 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 54  *.** CAPI3REF: T
22f90 6f 74 61 6c 20 4e 75 6d 62 65 72 20 4f 66 20 52  otal Number Of R
22fa0 6f 77 73 20 4d 6f 64 69 66 69 65 64 0a 2a 2a 20  ows Modified.** 
22fb0 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
22fc0 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 66 75 6e 63  **.** ^This func
22fd0 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
22fe0 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66   total number of
22ff0 20 72 6f 77 73 20 69 6e 73 65 72 74 65 64 2c 20   rows inserted, 
23000 6d 6f 64 69 66 69 65 64 20 6f 72 0a 2a 2a 20 64  modified or.** d
23010 65 6c 65 74 65 64 20 62 79 20 61 6c 6c 20 5b 49  eleted by all [I
23020 4e 53 45 52 54 5d 2c 20 5b 55 50 44 41 54 45 5d  NSERT], [UPDATE]
23030 20 6f 72 20 5b 44 45 4c 45 54 45 5d 20 73 74 61   or [DELETE] sta
23040 74 65 6d 65 6e 74 73 20 63 6f 6d 70 6c 65 74 65  tements complete
23050 64 0a 2a 2a 20 73 69 6e 63 65 20 74 68 65 20 64  d.** since the d
23060 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
23070 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2c 20 69  on was opened, i
23080 6e 63 6c 75 64 69 6e 67 20 74 68 6f 73 65 20 65  ncluding those e
23090 78 65 63 75 74 65 64 20 61 73 0a 2a 2a 20 70 61  xecuted as.** pa
230a0 72 74 20 6f 66 20 74 72 69 67 67 65 72 20 70 72  rt of trigger pr
230b0 6f 67 72 61 6d 73 2e 20 5e 45 78 65 63 75 74 69  ograms. ^Executi
230c0 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 74 79 70  ng any other typ
230d0 65 20 6f 66 20 53 51 4c 20 73 74 61 74 65 6d 65  e of SQL stateme
230e0 6e 74 0a 2a 2a 20 64 6f 65 73 20 6e 6f 74 20 61  nt.** does not a
230f0 66 66 65 63 74 20 74 68 65 20 76 61 6c 75 65 20  ffect the value 
23100 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69  returned by sqli
23110 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65  te3_total_change
23120 73 28 29 2e 0a 2a 2a 20 0a 2a 2a 20 5e 43 68 61  s()..** .** ^Cha
23130 6e 67 65 73 20 6d 61 64 65 20 61 73 20 70 61 72  nges made as par
23140 74 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65  t of [foreign ke
23150 79 20 61 63 74 69 6f 6e 73 5d 20 61 72 65 20 69  y actions] are i
23160 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 0a 2a  ncluded in the.*
23170 2a 20 63 6f 75 6e 74 2c 20 62 75 74 20 74 68 6f  * count, but tho
23180 73 65 20 6d 61 64 65 20 61 73 20 70 61 72 74 20  se made as part 
23190 6f 66 20 52 45 50 4c 41 43 45 20 63 6f 6e 73 74  of REPLACE const
231a0 72 61 69 6e 74 20 72 65 73 6f 6c 75 74 69 6f 6e  raint resolution
231b0 20 61 72 65 0a 2a 2a 20 6e 6f 74 2e 20 5e 43 68   are.** not. ^Ch
231c0 61 6e 67 65 73 20 74 6f 20 61 20 76 69 65 77 20  anges to a view 
231d0 74 68 61 74 20 61 72 65 20 69 6e 74 65 72 63 65  that are interce
231e0 70 74 65 64 20 62 79 20 49 4e 53 54 45 41 44 20  pted by INSTEAD 
231f0 4f 46 20 74 72 69 67 67 65 72 73 20 0a 2a 2a 20  OF triggers .** 
23200 61 72 65 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e  are not counted.
23210 0a 2a 2a 20 0a 2a 2a 20 53 65 65 20 61 6c 73 6f  .** .** See also
23220 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68   the [sqlite3_ch
23230 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61  anges()] interfa
23240 63 65 2c 20 74 68 65 0a 2a 2a 20 5b 63 6f 75 6e  ce, the.** [coun
23250 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67 6d 61  t_changes pragma
23260 5d 2c 20 61 6e 64 20 74 68 65 20 5b 74 6f 74 61  ], and the [tota
23270 6c 5f 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20  l_changes() SQL 
23280 66 75 6e 63 74 69 6f 6e 5d 2e 0a 2a 2a 0a 2a 2a  function]..**.**
23290 20 49 66 20 61 20 73 65 70 61 72 61 74 65 20 74   If a separate t
232a0 68 72 65 61 64 20 6d 61 6b 65 73 20 63 68 61 6e  hread makes chan
232b0 67 65 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20  ges on the same 
232c0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
232d0 69 6f 6e 0a 2a 2a 20 77 68 69 6c 65 20 5b 73 71  ion.** while [sq
232e0 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e  lite3_total_chan
232f0 67 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e  ges()] is runnin
23300 67 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65  g then the value
23310 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 69 73 20  .** returned is 
23320 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e  unpredictable an
23330 64 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c  d not meaningful
23340 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
23350 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 6f 74 61  int sqlite3_tota
23360 6c 5f 63 68 61 6e 67 65 73 28 73 71 6c 69 74 65  l_changes(sqlite
23370 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  3*);../*.** CAPI
23380 33 52 45 46 3a 20 49 6e 74 65 72 72 75 70 74 20  3REF: Interrupt 
23390 41 20 4c 6f 6e 67 2d 52 75 6e 6e 69 6e 67 20 51  A Long-Running Q
233a0 75 65 72 79 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  uery.** METHOD: 
233b0 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54  sqlite3.**.** ^T
233c0 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 75  his function cau
233d0 73 65 73 20 61 6e 79 20 70 65 6e 64 69 6e 67 20  ses any pending 
233e0 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69  database operati
233f0 6f 6e 20 74 6f 20 61 62 6f 72 74 20 61 6e 64 0a  on to abort and.
23400 2a 2a 20 72 65 74 75 72 6e 20 61 74 20 69 74 73  ** return at its
23410 20 65 61 72 6c 69 65 73 74 20 6f 70 70 6f 72 74   earliest opport
23420 75 6e 69 74 79 2e 20 54 68 69 73 20 72 6f 75 74  unity. This rout
23430 69 6e 65 20 69 73 20 74 79 70 69 63 61 6c 6c 79  ine is typically
23440 0a 2a 2a 20 63 61 6c 6c 65 64 20 69 6e 20 72 65  .** called in re
23450 73 70 6f 6e 73 65 20 74 6f 20 61 20 75 73 65 72  sponse to a user
23460 20 61 63 74 69 6f 6e 20 73 75 63 68 20 61 73 20   action such as 
23470 70 72 65 73 73 69 6e 67 20 22 43 61 6e 63 65 6c  pressing "Cancel
23480 22 0a 2a 2a 20 6f 72 20 43 74 72 6c 2d 43 20 77  ".** or Ctrl-C w
23490 68 65 72 65 20 74 68 65 20 75 73 65 72 20 77 61  here the user wa
234a0 6e 74 73 20 61 20 6c 6f 6e 67 20 71 75 65 72 79  nts a long query
234b0 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20 68 61   operation to ha
234c0 6c 74 0a 2a 2a 20 69 6d 6d 65 64 69 61 74 65 6c  lt.** immediatel
234d0 79 2e 0a 2a 2a 0a 2a 2a 20 5e 49 74 20 69 73 20  y..**.** ^It is 
234e0 73 61 66 65 20 74 6f 20 63 61 6c 6c 20 74 68 69  safe to call thi
234f0 73 20 72 6f 75 74 69 6e 65 20 66 72 6f 6d 20 61  s routine from a
23500 20 74 68 72 65 61 64 20 64 69 66 66 65 72 65 6e   thread differen
23510 74 20 66 72 6f 6d 20 74 68 65 0a 2a 2a 20 74 68  t from the.** th
23520 72 65 61 64 20 74 68 61 74 20 69 73 20 63 75 72  read that is cur
23530 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20 74  rently running t
23540 68 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72  he database oper
23550 61 74 69 6f 6e 2e 20 20 42 75 74 20 69 74 0a 2a  ation.  But it.*
23560 2a 20 69 73 20 6e 6f 74 20 73 61 66 65 20 74 6f  * is not safe to
23570 20 63 61 6c 6c 20 74 68 69 73 20 72 6f 75 74 69   call this routi
23580 6e 65 20 77 69 74 68 20 61 20 5b 64 61 74 61 62  ne with a [datab
23590 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
235a0 74 68 61 74 0a 2a 2a 20 69 73 20 63 6c 6f 73 65  that.** is close
235b0 64 20 6f 72 20 6d 69 67 68 74 20 63 6c 6f 73 65  d or might close
235c0 20 62 65 66 6f 72 65 20 73 71 6c 69 74 65 33 5f   before sqlite3_
235d0 69 6e 74 65 72 72 75 70 74 28 29 20 72 65 74 75  interrupt() retu
235e0 72 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61  rns..**.** ^If a
235f0 6e 20 53 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20  n SQL operation 
23600 69 73 20 76 65 72 79 20 6e 65 61 72 6c 79 20 66  is very nearly f
23610 69 6e 69 73 68 65 64 20 61 74 20 74 68 65 20 74  inished at the t
23620 69 6d 65 20 77 68 65 6e 0a 2a 2a 20 73 71 6c 69  ime when.** sqli
23630 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 20  te3_interrupt() 
23640 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 6e 20  is called, then 
23650 69 74 20 6d 69 67 68 74 20 6e 6f 74 20 68 61 76  it might not hav
23660 65 20 61 6e 20 6f 70 70 6f 72 74 75 6e 69 74 79  e an opportunity
23670 0a 2a 2a 20 74 6f 20 62 65 20 69 6e 74 65 72 72  .** to be interr
23680 75 70 74 65 64 20 61 6e 64 20 6d 69 67 68 74 20  upted and might 
23690 63 6f 6e 74 69 6e 75 65 20 74 6f 20 63 6f 6d 70  continue to comp
236a0 6c 65 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 41  letion..**.** ^A
236b0 6e 20 53 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20  n SQL operation 
236c0 74 68 61 74 20 69 73 20 69 6e 74 65 72 72 75 70  that is interrup
236d0 74 65 64 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  ted will return 
236e0 5b 53 51 4c 49 54 45 5f 49 4e 54 45 52 52 55 50  [SQLITE_INTERRUP
236f0 54 5d 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 69  T]..** ^If the i
23700 6e 74 65 72 72 75 70 74 65 64 20 53 51 4c 20 6f  nterrupted SQL o
23710 70 65 72 61 74 69 6f 6e 20 69 73 20 61 6e 20 49  peration is an I
23720 4e 53 45 52 54 2c 20 55 50 44 41 54 45 2c 20 6f  NSERT, UPDATE, o
23730 72 20 44 45 4c 45 54 45 0a 2a 2a 20 74 68 61 74  r DELETE.** that
23740 20 69 73 20 69 6e 73 69 64 65 20 61 6e 20 65 78   is inside an ex
23750 70 6c 69 63 69 74 20 74 72 61 6e 73 61 63 74 69  plicit transacti
23760 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 65 6e 74  on, then the ent
23770 69 72 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  ire transaction.
23780 2a 2a 20 77 69 6c 6c 20 62 65 20 72 6f 6c 6c 65  ** will be rolle
23790 64 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63  d back automatic
237a0 61 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ally..**.** ^The
237b0 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
237c0 70 74 28 44 29 20 63 61 6c 6c 20 69 73 20 69 6e  pt(D) call is in
237d0 20 65 66 66 65 63 74 20 75 6e 74 69 6c 20 61 6c   effect until al
237e0 6c 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e  l currently runn
237f0 69 6e 67 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65  ing.** SQL state
23800 6d 65 6e 74 73 20 6f 6e 20 5b 64 61 74 61 62 61  ments on [databa
23810 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44  se connection] D
23820 20 63 6f 6d 70 6c 65 74 65 2e 20 20 5e 41 6e 79   complete.  ^Any
23830 20 6e 65 77 20 53 51 4c 20 73 74 61 74 65 6d 65   new SQL stateme
23840 6e 74 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20  nts.** that are 
23850 73 74 61 72 74 65 64 20 61 66 74 65 72 20 74 68  started after th
23860 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  e sqlite3_interr
23870 75 70 74 28 29 20 63 61 6c 6c 20 61 6e 64 20 62  upt() call and b
23880 65 66 6f 72 65 20 74 68 65 20 0a 2a 2a 20 72 75  efore the .** ru
23890 6e 6e 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 73  nning statements
238a0 20 72 65 61 63 68 65 73 20 7a 65 72 6f 20 61 72   reaches zero ar
238b0 65 20 69 6e 74 65 72 72 75 70 74 65 64 20 61 73  e interrupted as
238c0 20 69 66 20 74 68 65 79 20 68 61 64 20 62 65 65   if they had bee
238d0 6e 0a 2a 2a 20 72 75 6e 6e 69 6e 67 20 70 72 69  n.** running pri
238e0 6f 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  or to the sqlite
238f0 33 5f 69 6e 74 65 72 72 75 70 74 28 29 20 63 61  3_interrupt() ca
23900 6c 6c 2e 20 20 5e 4e 65 77 20 53 51 4c 20 73 74  ll.  ^New SQL st
23910 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74  atements.** that
23920 20 61 72 65 20 73 74 61 72 74 65 64 20 61 66 74   are started aft
23930 65 72 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 73  er the running s
23940 74 61 74 65 6d 65 6e 74 20 63 6f 75 6e 74 20 72  tatement count r
23950 65 61 63 68 65 73 20 7a 65 72 6f 20 61 72 65 0a  eaches zero are.
23960 2a 2a 20 6e 6f 74 20 65 66 66 65 63 74 65 64 20  ** not effected 
23970 62 79 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69  by the sqlite3_i
23980 6e 74 65 72 72 75 70 74 28 29 2e 0a 2a 2a 20 5e  nterrupt()..** ^
23990 41 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65  A call to sqlite
239a0 33 5f 69 6e 74 65 72 72 75 70 74 28 44 29 20 74  3_interrupt(D) t
239b0 68 61 74 20 6f 63 63 75 72 73 20 77 68 65 6e 20  hat occurs when 
239c0 74 68 65 72 65 20 61 72 65 20 6e 6f 20 72 75 6e  there are no run
239d0 6e 69 6e 67 0a 2a 2a 20 53 51 4c 20 73 74 61 74  ning.** SQL stat
239e0 65 6d 65 6e 74 73 20 69 73 20 61 20 6e 6f 2d 6f  ements is a no-o
239f0 70 20 61 6e 64 20 68 61 73 20 6e 6f 20 65 66 66  p and has no eff
23a00 65 63 74 20 6f 6e 20 53 51 4c 20 73 74 61 74 65  ect on SQL state
23a10 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74 20 61 72  ments.** that ar
23a20 65 20 73 74 61 72 74 65 64 20 61 66 74 65 72 20  e started after 
23a30 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  the sqlite3_inte
23a40 72 72 75 70 74 28 29 20 63 61 6c 6c 20 72 65 74  rrupt() call ret
23a50 75 72 6e 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  urns..*/.SQLITE_
23a60 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33  API void sqlite3
23a70 5f 69 6e 74 65 72 72 75 70 74 28 73 71 6c 69 74  _interrupt(sqlit
23a80 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  e3*);../*.** CAP
23a90 49 33 52 45 46 3a 20 44 65 74 65 72 6d 69 6e 65  I3REF: Determine
23aa0 20 49 66 20 41 6e 20 53 51 4c 20 53 74 61 74 65   If An SQL State
23ab0 6d 65 6e 74 20 49 73 20 43 6f 6d 70 6c 65 74 65  ment Is Complete
23ac0 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75  .**.** These rou
23ad0 74 69 6e 65 73 20 61 72 65 20 75 73 65 66 75 6c  tines are useful
23ae0 20 64 75 72 69 6e 67 20 63 6f 6d 6d 61 6e 64 2d   during command-
23af0 6c 69 6e 65 20 69 6e 70 75 74 20 74 6f 20 64 65  line input to de
23b00 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65 0a 2a  termine if the.*
23b10 2a 20 63 75 72 72 65 6e 74 6c 79 20 65 6e 74 65  * currently ente
23b20 72 65 64 20 74 65 78 74 20 73 65 65 6d 73 20 74  red text seems t
23b30 6f 20 66 6f 72 6d 20 61 20 63 6f 6d 70 6c 65 74  o form a complet
23b40 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
23b50 6f 72 0a 2a 2a 20 69 66 20 61 64 64 69 74 69 6f  or.** if additio
23b60 6e 61 6c 20 69 6e 70 75 74 20 69 73 20 6e 65 65  nal input is nee
23b70 64 65 64 20 62 65 66 6f 72 65 20 73 65 6e 64 69  ded before sendi
23b80 6e 67 20 74 68 65 20 74 65 78 74 20 69 6e 74 6f  ng the text into
23b90 0a 2a 2a 20 53 51 4c 69 74 65 20 66 6f 72 20 70  .** SQLite for p
23ba0 61 72 73 69 6e 67 2e 20 20 5e 54 68 65 73 65 20  arsing.  ^These 
23bb0 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20  routines return 
23bc0 31 20 69 66 20 74 68 65 20 69 6e 70 75 74 20 73  1 if the input s
23bd0 74 72 69 6e 67 0a 2a 2a 20 61 70 70 65 61 72 73  tring.** appears
23be0 20 74 6f 20 62 65 20 61 20 63 6f 6d 70 6c 65 74   to be a complet
23bf0 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  e SQL statement.
23c00 20 20 5e 41 20 73 74 61 74 65 6d 65 6e 74 20 69    ^A statement i
23c10 73 20 6a 75 64 67 65 64 20 74 6f 20 62 65 0a 2a  s judged to be.*
23c20 2a 20 63 6f 6d 70 6c 65 74 65 20 69 66 20 69 74  * complete if it
23c30 20 65 6e 64 73 20 77 69 74 68 20 61 20 73 65 6d   ends with a sem
23c40 69 63 6f 6c 6f 6e 20 74 6f 6b 65 6e 20 61 6e 64  icolon token and
23c50 20 69 73 20 6e 6f 74 20 61 20 70 72 65 66 69 78   is not a prefix
23c60 20 6f 66 20 61 0a 2a 2a 20 77 65 6c 6c 2d 66 6f   of a.** well-fo
23c70 72 6d 65 64 20 43 52 45 41 54 45 20 54 52 49 47  rmed CREATE TRIG
23c80 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  GER statement.  
23c90 5e 53 65 6d 69 63 6f 6c 6f 6e 73 20 74 68 61 74  ^Semicolons that
23ca0 20 61 72 65 20 65 6d 62 65 64 64 65 64 20 77 69   are embedded wi
23cb0 74 68 69 6e 0a 2a 2a 20 73 74 72 69 6e 67 20 6c  thin.** string l
23cc0 69 74 65 72 61 6c 73 20 6f 72 20 71 75 6f 74 65  iterals or quote
23cd0 64 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d  d identifier nam
23ce0 65 73 20 6f 72 20 63 6f 6d 6d 65 6e 74 73 20 61  es or comments a
23cf0 72 65 20 6e 6f 74 0a 2a 2a 20 69 6e 64 65 70 65  re not.** indepe
23d00 6e 64 65 6e 74 20 74 6f 6b 65 6e 73 20 28 74 68  ndent tokens (th
23d10 65 79 20 61 72 65 20 70 61 72 74 20 6f 66 20 74  ey are part of t
23d20 68 65 20 74 6f 6b 65 6e 20 69 6e 20 77 68 69 63  he token in whic
23d30 68 20 74 68 65 79 20 61 72 65 0a 2a 2a 20 65 6d  h they are.** em
23d40 62 65 64 64 65 64 29 20 61 6e 64 20 74 68 75 73  bedded) and thus
23d50 20 64 6f 20 6e 6f 74 20 63 6f 75 6e 74 20 61 73   do not count as
23d60 20 61 20 73 74 61 74 65 6d 65 6e 74 20 74 65 72   a statement ter
23d70 6d 69 6e 61 74 6f 72 2e 20 20 5e 57 68 69 74 65  minator.  ^White
23d80 73 70 61 63 65 0a 2a 2a 20 61 6e 64 20 63 6f 6d  space.** and com
23d90 6d 65 6e 74 73 20 74 68 61 74 20 66 6f 6c 6c 6f  ments that follo
23da0 77 20 74 68 65 20 66 69 6e 61 6c 20 73 65 6d 69  w the final semi
23db0 63 6f 6c 6f 6e 20 61 72 65 20 69 67 6e 6f 72 65  colon are ignore
23dc0 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20  d..**.** ^These 
23dd0 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20  routines return 
23de0 30 20 69 66 20 74 68 65 20 73 74 61 74 65 6d 65  0 if the stateme
23df0 6e 74 20 69 73 20 69 6e 63 6f 6d 70 6c 65 74 65  nt is incomplete
23e00 2e 20 20 5e 49 66 20 61 0a 2a 2a 20 6d 65 6d 6f  .  ^If a.** memo
23e10 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61  ry allocation fa
23e20 69 6c 73 2c 20 74 68 65 6e 20 53 51 4c 49 54 45  ils, then SQLITE
23e30 5f 4e 4f 4d 45 4d 20 69 73 20 72 65 74 75 72 6e  _NOMEM is return
23e40 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65  ed..**.** ^These
23e50 20 72 6f 75 74 69 6e 65 73 20 64 6f 20 6e 6f 74   routines do not
23e60 20 70 61 72 73 65 20 74 68 65 20 53 51 4c 20 73   parse the SQL s
23e70 74 61 74 65 6d 65 6e 74 73 20 74 68 75 73 0a 2a  tatements thus.*
23e80 2a 20 77 69 6c 6c 20 6e 6f 74 20 64 65 74 65 63  * will not detec
23e90 74 20 73 79 6e 74 61 63 74 69 63 61 6c 6c 79 20  t syntactically 
23ea0 69 6e 63 6f 72 72 65 63 74 20 53 51 4c 2e 0a 2a  incorrect SQL..*
23eb0 2a 0a 2a 2a 20 5e 28 49 66 20 53 51 4c 69 74 65  *.** ^(If SQLite
23ec0 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 69 6e   has not been in
23ed0 69 74 69 61 6c 69 7a 65 64 20 75 73 69 6e 67 20  itialized using 
23ee0 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
23ef0 69 7a 65 28 29 5d 20 70 72 69 6f 72 20 0a 2a 2a  ize()] prior .**
23f00 20 74 6f 20 69 6e 76 6f 6b 69 6e 67 20 73 71 6c   to invoking sql
23f10 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28  ite3_complete16(
23f20 29 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 69  ) then sqlite3_i
23f30 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20 69  nitialize() is i
23f40 6e 76 6f 6b 65 64 0a 2a 2a 20 61 75 74 6f 6d 61  nvoked.** automa
23f50 74 69 63 61 6c 6c 79 20 62 79 20 73 71 6c 69 74  tically by sqlit
23f60 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 2e  e3_complete16().
23f70 20 20 49 66 20 74 68 61 74 20 69 6e 69 74 69 61    If that initia
23f80 6c 69 7a 61 74 69 6f 6e 20 66 61 69 6c 73 2c 0a  lization fails,.
23f90 2a 2a 20 74 68 65 6e 20 74 68 65 20 72 65 74 75  ** then the retu
23fa0 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 73 71  rn value from sq
23fb0 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36  lite3_complete16
23fc0 28 29 20 77 69 6c 6c 20 62 65 20 6e 6f 6e 2d 7a  () will be non-z
23fd0 65 72 6f 0a 2a 2a 20 72 65 67 61 72 64 6c 65 73  ero.** regardles
23fe0 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20  s of whether or 
23ff0 6e 6f 74 20 74 68 65 20 69 6e 70 75 74 20 53 51  not the input SQ
24000 4c 20 69 73 20 63 6f 6d 70 6c 65 74 65 2e 29 5e  L is complete.)^
24010 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 70 75 74  .**.** The input
24020 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d   to [sqlite3_com
24030 70 6c 65 74 65 28 29 5d 20 6d 75 73 74 20 62 65  plete()] must be
24040 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74   a zero-terminat
24050 65 64 0a 2a 2a 20 55 54 46 2d 38 20 73 74 72 69  ed.** UTF-8 stri
24060 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e  ng..**.** The in
24070 70 75 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  put to [sqlite3_
24080 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d 20 6d 75  complete16()] mu
24090 73 74 20 62 65 20 61 20 7a 65 72 6f 2d 74 65 72  st be a zero-ter
240a0 6d 69 6e 61 74 65 64 0a 2a 2a 20 55 54 46 2d 31  minated.** UTF-1
240b0 36 20 73 74 72 69 6e 67 20 69 6e 20 6e 61 74 69  6 string in nati
240c0 76 65 20 62 79 74 65 20 6f 72 64 65 72 2e 0a 2a  ve byte order..*
240d0 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
240e0 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74   sqlite3_complet
240f0 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71  e(const char *sq
24100 6c 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  l);.SQLITE_API i
24110 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c  nt sqlite3_compl
24120 65 74 65 31 36 28 63 6f 6e 73 74 20 76 6f 69 64  ete16(const void
24130 20 2a 73 71 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43   *sql);../*.** C
24140 41 50 49 33 52 45 46 3a 20 52 65 67 69 73 74 65  API3REF: Registe
24150 72 20 41 20 43 61 6c 6c 62 61 63 6b 20 54 6f 20  r A Callback To 
24160 48 61 6e 64 6c 65 20 53 51 4c 49 54 45 5f 42 55  Handle SQLITE_BU
24170 53 59 20 45 72 72 6f 72 73 0a 2a 2a 20 4b 45 59  SY Errors.** KEY
24180 57 4f 52 44 53 3a 20 7b 62 75 73 79 2d 68 61 6e  WORDS: {busy-han
24190 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b 7d 20 7b  dler callback} {
241a0 62 75 73 79 20 68 61 6e 64 6c 65 72 7d 0a 2a 2a  busy handler}.**
241b0 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
241c0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
241d0 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72  te3_busy_handler
241e0 28 44 2c 58 2c 50 29 20 72 6f 75 74 69 6e 65 20  (D,X,P) routine 
241f0 73 65 74 73 20 61 20 63 61 6c 6c 62 61 63 6b 20  sets a callback 
24200 66 75 6e 63 74 69 6f 6e 20 58 0a 2a 2a 20 74 68  function X.** th
24210 61 74 20 6d 69 67 68 74 20 62 65 20 69 6e 76 6f  at might be invo
24220 6b 65 64 20 77 69 74 68 20 61 72 67 75 6d 65 6e  ked with argumen
24230 74 20 50 20 77 68 65 6e 65 76 65 72 0a 2a 2a 20  t P whenever.** 
24240 61 6e 20 61 74 74 65 6d 70 74 20 69 73 20 6d 61  an attempt is ma
24250 64 65 20 74 6f 20 61 63 63 65 73 73 20 61 20 64  de to access a d
24260 61 74 61 62 61 73 65 20 74 61 62 6c 65 20 61 73  atabase table as
24270 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a 2a 2a  sociated with.**
24280 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
24290 63 74 69 6f 6e 5d 20 44 20 77 68 65 6e 20 61 6e  ction] D when an
242a0 6f 74 68 65 72 20 74 68 72 65 61 64 0a 2a 2a 20  other thread.** 
242b0 6f 72 20 70 72 6f 63 65 73 73 20 68 61 73 20 74  or process has t
242c0 68 65 20 74 61 62 6c 65 20 6c 6f 63 6b 65 64 2e  he table locked.
242d0 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
242e0 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 29 20 69  busy_handler() i
242f0 6e 74 65 72 66 61 63 65 20 69 73 20 75 73 65 64  nterface is used
24300 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 0a 2a 2a   to implement.**
24310 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74   [sqlite3_busy_t
24320 69 6d 65 6f 75 74 28 29 5d 20 61 6e 64 20 5b 50  imeout()] and [P
24330 52 41 47 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f  RAGMA busy_timeo
24340 75 74 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74  ut]..**.** ^If t
24350 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  he busy callback
24360 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 5b   is NULL, then [
24370 53 51 4c 49 54 45 5f 42 55 53 59 5d 0a 2a 2a 20  SQLITE_BUSY].** 
24380 69 73 20 72 65 74 75 72 6e 65 64 20 69 6d 6d 65  is returned imme
24390 64 69 61 74 65 6c 79 20 75 70 6f 6e 20 65 6e 63  diately upon enc
243a0 6f 75 6e 74 65 72 69 6e 67 20 74 68 65 20 6c 6f  ountering the lo
243b0 63 6b 2e 20 20 5e 49 66 20 74 68 65 20 62 75 73  ck.  ^If the bus
243c0 79 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73  y callback.** is
243d0 20 6e 6f 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 20   not NULL, then 
243e0 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 6d 69 67  the callback mig
243f0 68 74 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69  ht be invoked wi
24400 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73  th two arguments
24410 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 72  ..**.** ^The fir
24420 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
24430 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20  he busy handler 
24440 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  is a copy of the
24450 20 76 6f 69 64 2a 20 70 6f 69 6e 74 65 72 20 77   void* pointer w
24460 68 69 63 68 0a 2a 2a 20 69 73 20 74 68 65 20 74  hich.** is the t
24470 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f  hird argument to
24480 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61   sqlite3_busy_ha
24490 6e 64 6c 65 72 28 29 2e 20 20 5e 54 68 65 20 73  ndler().  ^The s
244a0 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74  econd argument t
244b0 6f 0a 2a 2a 20 74 68 65 20 62 75 73 79 20 68 61  o.** the busy ha
244c0 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b 20 69  ndler callback i
244d0 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
244e0 74 69 6d 65 73 20 74 68 61 74 20 74 68 65 20 62  times that the b
244f0 75 73 79 20 68 61 6e 64 6c 65 72 20 68 61 73 0a  usy handler has.
24500 2a 2a 20 62 65 65 6e 20 69 6e 76 6f 6b 65 64 20  ** been invoked 
24510 70 72 65 76 69 6f 75 73 6c 79 20 66 6f 72 20 74  previously for t
24520 68 65 20 73 61 6d 65 20 6c 6f 63 6b 69 6e 67 20  he same locking 
24530 65 76 65 6e 74 2e 20 20 5e 49 66 20 74 68 65 0a  event.  ^If the.
24540 2a 2a 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  ** busy callback
24550 20 72 65 74 75 72 6e 73 20 30 2c 20 74 68 65 6e   returns 0, then
24560 20 6e 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 61   no additional a
24570 74 74 65 6d 70 74 73 20 61 72 65 20 6d 61 64 65  ttempts are made
24580 20 74 6f 0a 2a 2a 20 61 63 63 65 73 73 20 74 68   to.** access th
24590 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 5b  e database and [
245a0 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 69 73 20  SQLITE_BUSY] is 
245b0 72 65 74 75 72 6e 65 64 0a 2a 2a 20 74 6f 20 74  returned.** to t
245c0 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a  he application..
245d0 2a 2a 20 5e 49 66 20 74 68 65 20 63 61 6c 6c 62  ** ^If the callb
245e0 61 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d  ack returns non-
245f0 7a 65 72 6f 2c 20 74 68 65 6e 20 61 6e 6f 74 68  zero, then anoth
24600 65 72 20 61 74 74 65 6d 70 74 0a 2a 2a 20 69 73  er attempt.** is
24610 20 6d 61 64 65 20 74 6f 20 61 63 63 65 73 73 20   made to access 
24620 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
24630 20 74 68 65 20 63 79 63 6c 65 20 72 65 70 65 61   the cycle repea
24640 74 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72  ts..**.** The pr
24650 65 73 65 6e 63 65 20 6f 66 20 61 20 62 75 73 79  esence of a busy
24660 20 68 61 6e 64 6c 65 72 20 64 6f 65 73 20 6e 6f   handler does no
24670 74 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74  t guarantee that
24680 20 69 74 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f   it will be invo
24690 6b 65 64 0a 2a 2a 20 77 68 65 6e 20 74 68 65 72  ked.** when ther
246a0 65 20 69 73 20 6c 6f 63 6b 20 63 6f 6e 74 65 6e  e is lock conten
246b0 74 69 6f 6e 2e 20 5e 49 66 20 53 51 4c 69 74 65  tion. ^If SQLite
246c0 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 61 74   determines that
246d0 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 62 75   invoking the bu
246e0 73 79 0a 2a 2a 20 68 61 6e 64 6c 65 72 20 63 6f  sy.** handler co
246f0 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 20 61 20  uld result in a 
24700 64 65 61 64 6c 6f 63 6b 2c 20 69 74 20 77 69 6c  deadlock, it wil
24710 6c 20 67 6f 20 61 68 65 61 64 20 61 6e 64 20 72  l go ahead and r
24720 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 42 55  eturn [SQLITE_BU
24730 53 59 5d 0a 2a 2a 20 74 6f 20 74 68 65 20 61 70  SY].** to the ap
24740 70 6c 69 63 61 74 69 6f 6e 20 69 6e 73 74 65 61  plication instea
24750 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 74 68  d of invoking th
24760 65 20 0a 2a 2a 20 62 75 73 79 20 68 61 6e 64 6c  e .** busy handl
24770 65 72 2e 0a 2a 2a 20 43 6f 6e 73 69 64 65 72 20  er..** Consider 
24780 61 20 73 63 65 6e 61 72 69 6f 20 77 68 65 72 65  a scenario where
24790 20 6f 6e 65 20 70 72 6f 63 65 73 73 20 69 73 20   one process is 
247a0 68 6f 6c 64 69 6e 67 20 61 20 72 65 61 64 20 6c  holding a read l
247b0 6f 63 6b 20 74 68 61 74 0a 2a 2a 20 69 74 20 69  ock that.** it i
247c0 73 20 74 72 79 69 6e 67 20 74 6f 20 70 72 6f 6d  s trying to prom
247d0 6f 74 65 20 74 6f 20 61 20 72 65 73 65 72 76 65  ote to a reserve
247e0 64 20 6c 6f 63 6b 20 61 6e 64 0a 2a 2a 20 61 20  d lock and.** a 
247f0 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73 20 69  second process i
24800 73 20 68 6f 6c 64 69 6e 67 20 61 20 72 65 73 65  s holding a rese
24810 72 76 65 64 20 6c 6f 63 6b 20 74 68 61 74 20 69  rved lock that i
24820 74 20 69 73 20 74 72 79 69 6e 67 0a 2a 2a 20 74  t is trying.** t
24830 6f 20 70 72 6f 6d 6f 74 65 20 74 6f 20 61 6e 20  o promote to an 
24840 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 2e 20  exclusive lock. 
24850 20 54 68 65 20 66 69 72 73 74 20 70 72 6f 63 65   The first proce
24860 73 73 20 63 61 6e 6e 6f 74 20 70 72 6f 63 65 65  ss cannot procee
24870 64 0a 2a 2a 20 62 65 63 61 75 73 65 20 69 74 20  d.** because it 
24880 69 73 20 62 6c 6f 63 6b 65 64 20 62 79 20 74 68  is blocked by th
24890 65 20 73 65 63 6f 6e 64 20 61 6e 64 20 74 68 65  e second and the
248a0 20 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73 20   second process 
248b0 63 61 6e 6e 6f 74 0a 2a 2a 20 70 72 6f 63 65 65  cannot.** procee
248c0 64 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20  d because it is 
248d0 62 6c 6f 63 6b 65 64 20 62 79 20 74 68 65 20 66  blocked by the f
248e0 69 72 73 74 2e 20 20 49 66 20 62 6f 74 68 20 70  irst.  If both p
248f0 72 6f 63 65 73 73 65 73 0a 2a 2a 20 69 6e 76 6f  rocesses.** invo
24900 6b 65 20 74 68 65 20 62 75 73 79 20 68 61 6e 64  ke the busy hand
24910 6c 65 72 73 2c 20 6e 65 69 74 68 65 72 20 77 69  lers, neither wi
24920 6c 6c 20 6d 61 6b 65 20 61 6e 79 20 70 72 6f 67  ll make any prog
24930 72 65 73 73 2e 20 20 54 68 65 72 65 66 6f 72 65  ress.  Therefore
24940 2c 0a 2a 2a 20 53 51 4c 69 74 65 20 72 65 74 75  ,.** SQLite retu
24950 72 6e 73 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  rns [SQLITE_BUSY
24960 5d 20 66 6f 72 20 74 68 65 20 66 69 72 73 74 20  ] for the first 
24970 70 72 6f 63 65 73 73 2c 20 68 6f 70 69 6e 67 20  process, hoping 
24980 74 68 61 74 20 74 68 69 73 0a 2a 2a 20 77 69 6c  that this.** wil
24990 6c 20 69 6e 64 75 63 65 20 74 68 65 20 66 69 72  l induce the fir
249a0 73 74 20 70 72 6f 63 65 73 73 20 74 6f 20 72 65  st process to re
249b0 6c 65 61 73 65 20 69 74 73 20 72 65 61 64 20 6c  lease its read l
249c0 6f 63 6b 20 61 6e 64 20 61 6c 6c 6f 77 0a 2a 2a  ock and allow.**
249d0 20 74 68 65 20 73 65 63 6f 6e 64 20 70 72 6f 63   the second proc
249e0 65 73 73 20 74 6f 20 70 72 6f 63 65 65 64 2e 0a  ess to proceed..
249f0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75  **.** ^The defau
24a00 6c 74 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  lt busy callback
24a10 20 69 73 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20   is NULL..**.** 
24a20 5e 28 54 68 65 72 65 20 63 61 6e 20 6f 6e 6c 79  ^(There can only
24a30 20 62 65 20 61 20 73 69 6e 67 6c 65 20 62 75 73   be a single bus
24a40 79 20 68 61 6e 64 6c 65 72 20 64 65 66 69 6e 65  y handler define
24a50 64 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 5b 64  d for each.** [d
24a60 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
24a70 6f 6e 5d 2e 20 20 53 65 74 74 69 6e 67 20 61 20  on].  Setting a 
24a80 6e 65 77 20 62 75 73 79 20 68 61 6e 64 6c 65 72  new busy handler
24a90 20 63 6c 65 61 72 73 20 61 6e 79 0a 2a 2a 20 70   clears any.** p
24aa0 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20 68 61  reviously set ha
24ab0 6e 64 6c 65 72 2e 29 5e 20 20 5e 4e 6f 74 65 20  ndler.)^  ^Note 
24ac0 74 68 61 74 20 63 61 6c 6c 69 6e 67 20 5b 73 71  that calling [sq
24ad0 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
24ae0 75 74 28 29 5d 0a 2a 2a 20 6f 72 20 65 76 61 6c  ut()].** or eval
24af0 75 61 74 69 6e 67 20 5b 50 52 41 47 4d 41 20 62  uating [PRAGMA b
24b00 75 73 79 5f 74 69 6d 65 6f 75 74 3d 4e 5d 20 77  usy_timeout=N] w
24b10 69 6c 6c 20 63 68 61 6e 67 65 20 74 68 65 0a 2a  ill change the.*
24b20 2a 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 61  * busy handler a
24b30 6e 64 20 74 68 75 73 20 63 6c 65 61 72 20 61 6e  nd thus clear an
24b40 79 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74  y previously set
24b50 20 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a 2a   busy handler..*
24b60 2a 0a 2a 2a 20 54 68 65 20 62 75 73 79 20 63 61  *.** The busy ca
24b70 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 6e 6f  llback should no
24b80 74 20 74 61 6b 65 20 61 6e 79 20 61 63 74 69 6f  t take any actio
24b90 6e 73 20 77 68 69 63 68 20 6d 6f 64 69 66 79 20  ns which modify 
24ba0 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20  the.** database 
24bb0 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20  connection that 
24bc0 69 6e 76 6f 6b 65 64 20 74 68 65 20 62 75 73 79  invoked the busy
24bd0 20 68 61 6e 64 6c 65 72 2e 20 20 49 6e 20 6f 74   handler.  In ot
24be0 68 65 72 20 77 6f 72 64 73 2c 0a 2a 2a 20 74 68  her words,.** th
24bf0 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 69  e busy handler i
24c00 73 20 6e 6f 74 20 72 65 65 6e 74 72 61 6e 74 2e  s not reentrant.
24c10 20 20 41 6e 79 20 73 75 63 68 20 61 63 74 69 6f    Any such actio
24c20 6e 73 0a 2a 2a 20 72 65 73 75 6c 74 20 69 6e 20  ns.** result in 
24c30 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69  undefined behavi
24c40 6f 72 2e 0a 2a 2a 20 0a 2a 2a 20 41 20 62 75 73  or..** .** A bus
24c50 79 20 68 61 6e 64 6c 65 72 20 6d 75 73 74 20 6e  y handler must n
24c60 6f 74 20 63 6c 6f 73 65 20 74 68 65 20 64 61 74  ot close the dat
24c70 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
24c80 0a 2a 2a 20 6f 72 20 5b 70 72 65 70 61 72 65 64  .** or [prepared
24c90 20 73 74 61 74 65 6d 65 6e 74 5d 20 74 68 61 74   statement] that
24ca0 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 62 75 73   invoked the bus
24cb0 79 20 68 61 6e 64 6c 65 72 2e 0a 2a 2f 0a 53 51  y handler..*/.SQ
24cc0 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
24cd0 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65  ite3_busy_handle
24ce0 72 28 73 71 6c 69 74 65 33 2a 2c 69 6e 74 28 2a  r(sqlite3*,int(*
24cf0 29 28 76 6f 69 64 2a 2c 69 6e 74 29 2c 76 6f 69  )(void*,int),voi
24d00 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  d*);../*.** CAPI
24d10 33 52 45 46 3a 20 53 65 74 20 41 20 42 75 73 79  3REF: Set A Busy
24d20 20 54 69 6d 65 6f 75 74 0a 2a 2a 20 4d 45 54 48   Timeout.** METH
24d30 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
24d40 2a 20 5e 54 68 69 73 20 72 6f 75 74 69 6e 65 20  * ^This routine 
24d50 73 65 74 73 20 61 20 5b 73 71 6c 69 74 65 33 5f  sets a [sqlite3_
24d60 62 75 73 79 5f 68 61 6e 64 6c 65 72 20 7c 20 62  busy_handler | b
24d70 75 73 79 20 68 61 6e 64 6c 65 72 5d 20 74 68 61  usy handler] tha
24d80 74 20 73 6c 65 65 70 73 0a 2a 2a 20 66 6f 72 20  t sleeps.** for 
24d90 61 20 73 70 65 63 69 66 69 65 64 20 61 6d 6f 75  a specified amou
24da0 6e 74 20 6f 66 20 74 69 6d 65 20 77 68 65 6e 20  nt of time when 
24db0 61 20 74 61 62 6c 65 20 69 73 20 6c 6f 63 6b 65  a table is locke
24dc0 64 2e 20 20 5e 54 68 65 20 68 61 6e 64 6c 65 72  d.  ^The handler
24dd0 0a 2a 2a 20 77 69 6c 6c 20 73 6c 65 65 70 20 6d  .** will sleep m
24de0 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75 6e  ultiple times un
24df0 74 69 6c 20 61 74 20 6c 65 61 73 74 20 22 6d 73  til at least "ms
24e00 22 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 6f  " milliseconds o
24e10 66 20 73 6c 65 65 70 69 6e 67 0a 2a 2a 20 68 61  f sleeping.** ha
24e20 76 65 20 61 63 63 75 6d 75 6c 61 74 65 64 2e 20  ve accumulated. 
24e30 20 5e 41 66 74 65 72 20 61 74 20 6c 65 61 73 74   ^After at least
24e40 20 22 6d 73 22 20 6d 69 6c 6c 69 73 65 63 6f 6e   "ms" millisecon
24e50 64 73 20 6f 66 20 73 6c 65 65 70 69 6e 67 2c 0a  ds of sleeping,.
24e60 2a 2a 20 74 68 65 20 68 61 6e 64 6c 65 72 20 72  ** the handler r
24e70 65 74 75 72 6e 73 20 30 20 77 68 69 63 68 20 63  eturns 0 which c
24e80 61 75 73 65 73 20 5b 73 71 6c 69 74 65 33 5f 73  auses [sqlite3_s
24e90 74 65 70 28 29 5d 20 74 6f 20 72 65 74 75 72 6e  tep()] to return
24ea0 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  .** [SQLITE_BUSY
24eb0 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 69 6e  ]..**.** ^Callin
24ec0 67 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77  g this routine w
24ed0 69 74 68 20 61 6e 20 61 72 67 75 6d 65 6e 74 20  ith an argument 
24ee0 6c 65 73 73 20 74 68 61 6e 20 6f 72 20 65 71 75  less than or equ
24ef0 61 6c 20 74 6f 20 7a 65 72 6f 0a 2a 2a 20 74 75  al to zero.** tu
24f00 72 6e 73 20 6f 66 66 20 61 6c 6c 20 62 75 73 79  rns off all busy
24f10 20 68 61 6e 64 6c 65 72 73 2e 0a 2a 2a 0a 2a 2a   handlers..**.**
24f20 20 5e 28 54 68 65 72 65 20 63 61 6e 20 6f 6e 6c   ^(There can onl
24f30 79 20 62 65 20 61 20 73 69 6e 67 6c 65 20 62 75  y be a single bu
24f40 73 79 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61  sy handler for a
24f50 20 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a 20 5b   particular.** [
24f60 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
24f70 69 6f 6e 5d 20 61 74 20 61 6e 79 20 67 69 76 65  ion] at any give
24f80 6e 20 6d 6f 6d 65 6e 74 2e 20 20 49 66 20 61 6e  n moment.  If an
24f90 6f 74 68 65 72 20 62 75 73 79 20 68 61 6e 64 6c  other busy handl
24fa0 65 72 0a 2a 2a 20 77 61 73 20 64 65 66 69 6e 65  er.** was define
24fb0 64 20 20 28 75 73 69 6e 67 20 5b 73 71 6c 69 74  d  (using [sqlit
24fc0 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28  e3_busy_handler(
24fd0 29 5d 29 20 70 72 69 6f 72 20 74 6f 20 63 61 6c  )]) prior to cal
24fe0 6c 69 6e 67 0a 2a 2a 20 74 68 69 73 20 72 6f 75  ling.** this rou
24ff0 74 69 6e 65 2c 20 74 68 61 74 20 6f 74 68 65 72  tine, that other
25000 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 69 73   busy handler is
25010 20 63 6c 65 61 72 65 64 2e 29 5e 0a 2a 2a 0a 2a   cleared.)^.**.*
25020 2a 20 53 65 65 20 61 6c 73 6f 3a 20 20 5b 50 52  * See also:  [PR
25030 41 47 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f 75  AGMA busy_timeou
25040 74 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  t].*/.SQLITE_API
25050 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 75 73   int sqlite3_bus
25060 79 5f 74 69 6d 65 6f 75 74 28 73 71 6c 69 74 65  y_timeout(sqlite
25070 33 2a 2c 20 69 6e 74 20 6d 73 29 3b 0a 0a 2f 2a  3*, int ms);../*
25080 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f  .** CAPI3REF: Co
25090 6e 76 65 6e 69 65 6e 63 65 20 52 6f 75 74 69 6e  nvenience Routin
250a0 65 73 20 46 6f 72 20 52 75 6e 6e 69 6e 67 20 51  es For Running Q
250b0 75 65 72 69 65 73 0a 2a 2a 20 4d 45 54 48 4f 44  ueries.** METHOD
250c0 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
250d0 54 68 69 73 20 69 73 20 61 20 6c 65 67 61 63 79  This is a legacy
250e0 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20   interface that 
250f0 69 73 20 70 72 65 73 65 72 76 65 64 20 66 6f 72  is preserved for
25100 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61   backwards compa
25110 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 20 55 73 65  tibility..** Use
25120 20 6f 66 20 74 68 69 73 20 69 6e 74 65 72 66 61   of this interfa
25130 63 65 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d  ce is not recomm
25140 65 6e 64 65 64 2e 0a 2a 2a 0a 2a 2a 20 44 65 66  ended..**.** Def
25150 69 6e 69 74 69 6f 6e 3a 20 41 20 3c 62 3e 72 65  inition: A <b>re
25160 73 75 6c 74 20 74 61 62 6c 65 3c 2f 62 3e 20 69  sult table</b> i
25170 73 20 6d 65 6d 6f 72 79 20 64 61 74 61 20 73 74  s memory data st
25180 72 75 63 74 75 72 65 20 63 72 65 61 74 65 64 20  ructure created 
25190 62 79 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  by the.** [sqlit
251a0 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20  e3_get_table()] 
251b0 69 6e 74 65 72 66 61 63 65 2e 20 20 41 20 72 65  interface.  A re
251c0 73 75 6c 74 20 74 61 62 6c 65 20 72 65 63 6f 72  sult table recor
251d0 64 73 20 74 68 65 0a 2a 2a 20 63 6f 6d 70 6c 65  ds the.** comple
251e0 74 65 20 71 75 65 72 79 20 72 65 73 75 6c 74 73  te query results
251f0 20 66 72 6f 6d 20 6f 6e 65 20 6f 72 20 6d 6f 72   from one or mor
25200 65 20 71 75 65 72 69 65 73 2e 0a 2a 2a 0a 2a 2a  e queries..**.**
25210 20 54 68 65 20 74 61 62 6c 65 20 63 6f 6e 63 65   The table conce
25220 70 74 75 61 6c 6c 79 20 68 61 73 20 61 20 6e 75  ptually has a nu
25230 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 61 6e 64  mber of rows and
25240 20 63 6f 6c 75 6d 6e 73 2e 20 20 42 75 74 0a 2a   columns.  But.*
25250 2a 20 74 68 65 73 65 20 6e 75 6d 62 65 72 73 20  * these numbers 
25260 61 72 65 20 6e 6f 74 20 70 61 72 74 20 6f 66 20  are not part of 
25270 74 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65  the result table
25280 20 69 74 73 65 6c 66 2e 20 20 54 68 65 73 65 0a   itself.  These.
25290 2a 2a 20 6e 75 6d 62 65 72 73 20 61 72 65 20 6f  ** numbers are o
252a0 62 74 61 69 6e 65 64 20 73 65 70 61 72 61 74 65  btained separate
252b0 6c 79 2e 20 20 4c 65 74 20 4e 20 62 65 20 74 68  ly.  Let N be th
252c0 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  e number of rows
252d0 0a 2a 2a 20 61 6e 64 20 4d 20 62 65 20 74 68 65  .** and M be the
252e0 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
252f0 6e 73 2e 0a 2a 2a 0a 2a 2a 20 41 20 72 65 73 75  ns..**.** A resu
25300 6c 74 20 74 61 62 6c 65 20 69 73 20 61 6e 20 61  lt table is an a
25310 72 72 61 79 20 6f 66 20 70 6f 69 6e 74 65 72 73  rray of pointers
25320 20 74 6f 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61   to zero-termina
25330 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
25340 73 2e 0a 2a 2a 20 54 68 65 72 65 20 61 72 65 20  s..** There are 
25350 28 4e 2b 31 29 2a 4d 20 65 6c 65 6d 65 6e 74 73  (N+1)*M elements
25360 20 69 6e 20 74 68 65 20 61 72 72 61 79 2e 20 20   in the array.  
25370 54 68 65 20 66 69 72 73 74 20 4d 20 70 6f 69 6e  The first M poin
25380 74 65 72 73 20 70 6f 69 6e 74 0a 2a 2a 20 74 6f  ters point.** to
25390 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64   zero-terminated
253a0 20 73 74 72 69 6e 67 73 20 74 68 61 74 20 20 63   strings that  c
253b0 6f 6e 74 61 69 6e 20 74 68 65 20 6e 61 6d 65 73  ontain the names
253c0 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 2e   of the columns.
253d0 0a 2a 2a 20 54 68 65 20 72 65 6d 61 69 6e 69 6e  .** The remainin
253e0 67 20 65 6e 74 72 69 65 73 20 61 6c 6c 20 70 6f  g entries all po
253f0 69 6e 74 20 74 6f 20 71 75 65 72 79 20 72 65 73  int to query res
25400 75 6c 74 73 2e 20 20 4e 55 4c 4c 20 76 61 6c 75  ults.  NULL valu
25410 65 73 20 72 65 73 75 6c 74 0a 2a 2a 20 69 6e 20  es result.** in 
25420 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 73 2e 20 20  NULL pointers.  
25430 41 6c 6c 20 6f 74 68 65 72 20 76 61 6c 75 65 73  All other values
25440 20 61 72 65 20 69 6e 20 74 68 65 69 72 20 55 54   are in their UT
25450 46 2d 38 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61  F-8 zero-termina
25460 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20 72 65  ted.** string re
25470 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 61 73 20  presentation as 
25480 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71 6c  returned by [sql
25490 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
254a0 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 41 20 72 65 73  ()]..**.** A res
254b0 75 6c 74 20 74 61 62 6c 65 20 6d 69 67 68 74 20  ult table might 
254c0 63 6f 6e 73 69 73 74 20 6f 66 20 6f 6e 65 20 6f  consist of one o
254d0 72 20 6d 6f 72 65 20 6d 65 6d 6f 72 79 20 61 6c  r more memory al
254e0 6c 6f 63 61 74 69 6f 6e 73 2e 0a 2a 2a 20 49 74  locations..** It
254f0 20 69 73 20 6e 6f 74 20 73 61 66 65 20 74 6f 20   is not safe to 
25500 70 61 73 73 20 61 20 72 65 73 75 6c 74 20 74 61  pass a result ta
25510 62 6c 65 20 64 69 72 65 63 74 6c 79 20 74 6f 20  ble directly to 
25520 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d  [sqlite3_free()]
25530 2e 0a 2a 2a 20 41 20 72 65 73 75 6c 74 20 74 61  ..** A result ta
25540 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 64 65  ble should be de
25550 61 6c 6c 6f 63 61 74 65 64 20 75 73 69 6e 67 20  allocated using 
25560 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61  [sqlite3_free_ta
25570 62 6c 65 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 28  ble()]..**.** ^(
25580 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66  As an example of
25590 20 74 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c   the result tabl
255a0 65 20 66 6f 72 6d 61 74 2c 20 73 75 70 70 6f 73  e format, suppos
255b0 65 20 61 20 71 75 65 72 79 20 72 65 73 75 6c 74  e a query result
255c0 0a 2a 2a 20 69 73 20 61 73 20 66 6f 6c 6c 6f 77  .** is as follow
255d0 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71  s:.**.** <blockq
255e0 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 20  uote><pre>.**   
255f0 20 20 20 20 20 4e 61 6d 65 20 20 20 20 20 20 20       Name       
25600 20 7c 20 41 67 65 0a 2a 2a 20 20 20 20 20 20 20   | Age.**       
25610 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ---------------
25620 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20 20 20  --------.**     
25630 20 20 20 41 6c 69 63 65 20 20 20 20 20 20 20 7c     Alice       |
25640 20 34 33 0a 2a 2a 20 20 20 20 20 20 20 20 42 6f   43.**        Bo
25650 62 20 20 20 20 20 20 20 20 20 7c 20 32 38 0a 2a  b         | 28.*
25660 2a 20 20 20 20 20 20 20 20 43 69 6e 64 79 20 20  *        Cindy  
25670 20 20 20 20 20 7c 20 32 31 0a 2a 2a 20 3c 2f 70       | 21.** </p
25680 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
25690 0a 2a 2a 0a 2a 2a 20 54 68 65 72 65 20 61 72 65  .**.** There are
256a0 20 74 77 6f 20 63 6f 6c 75 6d 6e 20 28 4d 3d 3d   two column (M==
256b0 32 29 20 61 6e 64 20 74 68 72 65 65 20 72 6f 77  2) and three row
256c0 73 20 28 4e 3d 3d 33 29 2e 20 20 54 68 75 73 20  s (N==3).  Thus 
256d0 74 68 65 0a 2a 2a 20 72 65 73 75 6c 74 20 74 61  the.** result ta
256e0 62 6c 65 20 68 61 73 20 38 20 65 6e 74 72 69 65  ble has 8 entrie
256f0 73 2e 20 20 53 75 70 70 6f 73 65 20 74 68 65 20  s.  Suppose the 
25700 72 65 73 75 6c 74 20 74 61 62 6c 65 20 69 73 20  result table is 
25710 73 74 6f 72 65 64 0a 2a 2a 20 69 6e 20 61 6e 20  stored.** in an 
25720 61 72 72 61 79 20 6e 61 6d 65 73 20 61 7a 52 65  array names azRe
25730 73 75 6c 74 2e 20 20 54 68 65 6e 20 61 7a 52 65  sult.  Then azRe
25740 73 75 6c 74 20 68 6f 6c 64 73 20 74 68 69 73 20  sult holds this 
25750 63 6f 6e 74 65 6e 74 3a 0a 2a 2a 0a 2a 2a 20 3c  content:.**.** <
25760 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
25770 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
25780 75 6c 74 26 23 39 31 3b 30 5d 20 3d 20 22 4e 61  ult&#91;0] = "Na
25790 6d 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61  me";.**        a
257a0 7a 52 65 73 75 6c 74 26 23 39 31 3b 31 5d 20 3d  zResult&#91;1] =
257b0 20 22 41 67 65 22 3b 0a 2a 2a 20 20 20 20 20 20   "Age";.**      
257c0 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 32    azResult&#91;2
257d0 5d 20 3d 20 22 41 6c 69 63 65 22 3b 0a 2a 2a 20  ] = "Alice";.** 
257e0 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26         azResult&
257f0 23 39 31 3b 33 5d 20 3d 20 22 34 33 22 3b 0a 2a  #91;3] = "43";.*
25800 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c  *        azResul
25810 74 26 23 39 31 3b 34 5d 20 3d 20 22 42 6f 62 22  t&#91;4] = "Bob"
25820 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
25830 73 75 6c 74 26 23 39 31 3b 35 5d 20 3d 20 22 32  sult&#91;5] = "2
25840 38 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a  8";.**        az
25850 52 65 73 75 6c 74 26 23 39 31 3b 36 5d 20 3d 20  Result&#91;6] = 
25860 22 43 69 6e 64 79 22 3b 0a 2a 2a 20 20 20 20 20  "Cindy";.**     
25870 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b     azResult&#91;
25880 37 5d 20 3d 20 22 32 31 22 3b 0a 2a 2a 20 3c 2f  7] = "21";.** </
25890 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  pre></blockquote
258a0 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  >)^.**.** ^The s
258b0 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
258c0 28 29 20 66 75 6e 63 74 69 6f 6e 20 65 76 61 6c  () function eval
258d0 75 61 74 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72  uates one or mor
258e0 65 0a 2a 2a 20 73 65 6d 69 63 6f 6c 6f 6e 2d 73  e.** semicolon-s
258f0 65 70 61 72 61 74 65 64 20 53 51 4c 20 73 74 61  eparated SQL sta
25900 74 65 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 7a  tements in the z
25910 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  ero-terminated U
25920 54 46 2d 38 0a 2a 2a 20 73 74 72 69 6e 67 20 6f  TF-8.** string o
25930 66 20 69 74 73 20 32 6e 64 20 70 61 72 61 6d 65  f its 2nd parame
25940 74 65 72 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ter and returns 
25950 61 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 74  a result table t
25960 6f 20 74 68 65 0a 2a 2a 20 70 6f 69 6e 74 65 72  o the.** pointer
25970 20 67 69 76 65 6e 20 69 6e 20 69 74 73 20 33 72   given in its 3r
25980 64 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a  d parameter..**.
25990 2a 2a 20 41 66 74 65 72 20 74 68 65 20 61 70 70  ** After the app
259a0 6c 69 63 61 74 69 6f 6e 20 68 61 73 20 66 69 6e  lication has fin
259b0 69 73 68 65 64 20 77 69 74 68 20 74 68 65 20 72  ished with the r
259c0 65 73 75 6c 74 20 66 72 6f 6d 20 73 71 6c 69 74  esult from sqlit
259d0 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 2c 0a  e3_get_table(),.
259e0 2a 2a 20 69 74 20 6d 75 73 74 20 70 61 73 73 20  ** it must pass 
259f0 74 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65  the result table
25a00 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c 69   pointer to sqli
25a10 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29  te3_free_table()
25a20 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 2a 2a 20   in order to.** 
25a30 72 65 6c 65 61 73 65 20 74 68 65 20 6d 65 6d 6f  release the memo
25a40 72 79 20 74 68 61 74 20 77 61 73 20 6d 61 6c 6c  ry that was mall
25a50 6f 63 65 64 2e 20 20 42 65 63 61 75 73 65 20 6f  oced.  Because o
25a60 66 20 74 68 65 20 77 61 79 20 74 68 65 0a 2a 2a  f the way the.**
25a70 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
25a80 28 29 5d 20 68 61 70 70 65 6e 73 20 77 69 74 68  ()] happens with
25a90 69 6e 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  in sqlite3_get_t
25aa0 61 62 6c 65 28 29 2c 20 74 68 65 20 63 61 6c 6c  able(), the call
25ab0 69 6e 67 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20  ing.** function 
25ac0 6d 75 73 74 20 6e 6f 74 20 74 72 79 20 74 6f 20  must not try to 
25ad0 63 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 66 72  call [sqlite3_fr
25ae0 65 65 28 29 5d 20 64 69 72 65 63 74 6c 79 2e 20  ee()] directly. 
25af0 20 4f 6e 6c 79 0a 2a 2a 20 5b 73 71 6c 69 74 65   Only.** [sqlite
25b00 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 5d 20  3_free_table()] 
25b10 69 73 20 61 62 6c 65 20 74 6f 20 72 65 6c 65 61  is able to relea
25b20 73 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 70 72  se the memory pr
25b30 6f 70 65 72 6c 79 20 61 6e 64 20 73 61 66 65 6c  operly and safel
25b40 79 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  y..**.** The sql
25b50 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29  ite3_get_table()
25b60 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 69 6d   interface is im
25b70 70 6c 65 6d 65 6e 74 65 64 20 61 73 20 61 20 77  plemented as a w
25b80 72 61 70 70 65 72 20 61 72 6f 75 6e 64 0a 2a 2a  rapper around.**
25b90 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29   [sqlite3_exec()
25ba0 5d 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f  ].  The sqlite3_
25bb0 67 65 74 5f 74 61 62 6c 65 28 29 20 72 6f 75 74  get_table() rout
25bc0 69 6e 65 20 64 6f 65 73 20 6e 6f 74 20 68 61 76  ine does not hav
25bd0 65 20 61 63 63 65 73 73 0a 2a 2a 20 74 6f 20 61  e access.** to a
25be0 6e 79 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61  ny internal data
25bf0 20 73 74 72 75 63 74 75 72 65 73 20 6f 66 20 53   structures of S
25c00 51 4c 69 74 65 2e 20 20 49 74 20 75 73 65 73 20  QLite.  It uses 
25c10 6f 6e 6c 79 20 74 68 65 20 70 75 62 6c 69 63 0a  only the public.
25c20 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 64 65 66  ** interface def
25c30 69 6e 65 64 20 68 65 72 65 2e 20 20 41 73 20 61  ined here.  As a
25c40 20 63 6f 6e 73 65 71 75 65 6e 63 65 2c 20 65 72   consequence, er
25c50 72 6f 72 73 20 74 68 61 74 20 6f 63 63 75 72 20  rors that occur 
25c60 69 6e 20 74 68 65 0a 2a 2a 20 77 72 61 70 70 65  in the.** wrappe
25c70 72 20 6c 61 79 65 72 20 6f 75 74 73 69 64 65 20  r layer outside 
25c80 6f 66 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20  of the internal 
25c90 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d  [sqlite3_exec()]
25ca0 20 63 61 6c 6c 20 61 72 65 20 6e 6f 74 0a 2a 2a   call are not.**
25cb0 20 72 65 66 6c 65 63 74 65 64 20 69 6e 20 73 75   reflected in su
25cc0 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 74  bsequent calls t
25cd0 6f 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 63 6f  o [sqlite3_errco
25ce0 64 65 28 29 5d 20 6f 72 0a 2a 2a 20 5b 73 71 6c  de()] or.** [sql
25cf0 69 74 65 33 5f 65 72 72 6d 73 67 28 29 5d 2e 0a  ite3_errmsg()]..
25d00 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
25d10 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61  t sqlite3_get_ta
25d20 62 6c 65 28 0a 20 20 73 71 6c 69 74 65 33 20 2a  ble(.  sqlite3 *
25d30 64 62 2c 20 20 20 20 20 20 20 20 20 20 2f 2a 20  db,          /* 
25d40 41 6e 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65  An open database
25d50 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   */.  const char
25d60 20 2a 7a 53 71 6c 2c 20 20 20 20 20 2f 2a 20 53   *zSql,     /* S
25d70 51 4c 20 74 6f 20 62 65 20 65 76 61 6c 75 61 74  QL to be evaluat
25d80 65 64 20 2a 2f 0a 20 20 63 68 61 72 20 2a 2a 2a  ed */.  char ***
25d90 70 61 7a 52 65 73 75 6c 74 2c 20 20 20 20 2f 2a  pazResult,    /*
25da0 20 52 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20   Results of the 
25db0 71 75 65 72 79 20 2a 2f 0a 20 20 69 6e 74 20 2a  query */.  int *
25dc0 70 6e 52 6f 77 2c 20 20 20 20 20 20 20 20 20 20  pnRow,          
25dd0 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 72 65   /* Number of re
25de0 73 75 6c 74 20 72 6f 77 73 20 77 72 69 74 74 65  sult rows writte
25df0 6e 20 68 65 72 65 20 2a 2f 0a 20 20 69 6e 74 20  n here */.  int 
25e00 2a 70 6e 43 6f 6c 75 6d 6e 2c 20 20 20 20 20 20  *pnColumn,      
25e10 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 72    /* Number of r
25e20 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 20 77 72  esult columns wr
25e30 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 20 20  itten here */.  
25e40 63 68 61 72 20 2a 2a 70 7a 45 72 72 6d 73 67 20  char **pzErrmsg 
25e50 20 20 20 20 20 20 2f 2a 20 45 72 72 6f 72 20 6d        /* Error m
25e60 73 67 20 77 72 69 74 74 65 6e 20 68 65 72 65 20  sg written here 
25e70 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  */.);.SQLITE_API
25e80 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72   void sqlite3_fr
25e90 65 65 5f 74 61 62 6c 65 28 63 68 61 72 20 2a 2a  ee_table(char **
25ea0 72 65 73 75 6c 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20  result);../*.** 
25eb0 43 41 50 49 33 52 45 46 3a 20 46 6f 72 6d 61 74  CAPI3REF: Format
25ec0 74 65 64 20 53 74 72 69 6e 67 20 50 72 69 6e 74  ted String Print
25ed0 69 6e 67 20 46 75 6e 63 74 69 6f 6e 73 0a 2a 2a  ing Functions.**
25ee0 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e  .** These routin
25ef0 65 73 20 61 72 65 20 77 6f 72 6b 2d 61 6c 69 6b  es are work-alik
25f00 65 73 20 6f 66 20 74 68 65 20 22 70 72 69 6e 74  es of the "print
25f10 66 28 29 22 20 66 61 6d 69 6c 79 20 6f 66 20 66  f()" family of f
25f20 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 66 72 6f 6d  unctions.** from
25f30 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 43 20   the standard C 
25f40 6c 69 62 72 61 72 79 2e 0a 2a 2a 20 54 68 65 73  library..** Thes
25f50 65 20 72 6f 75 74 69 6e 65 73 20 75 6e 64 65 72  e routines under
25f60 73 74 61 6e 64 20 6d 6f 73 74 20 6f 66 20 74 68  stand most of th
25f70 65 20 63 6f 6d 6d 6f 6e 20 66 6f 72 6d 61 74 74  e common formatt
25f80 69 6e 67 20 6f 70 74 69 6f 6e 73 20 66 72 6f 6d  ing options from
25f90 0a 2a 2a 20 74 68 65 20 73 74 61 6e 64 61 72 64  .** the standard
25fa0 20 6c 69 62 72 61 72 79 20 70 72 69 6e 74 66 28   library printf(
25fb0 29 20 0a 2a 2a 20 70 6c 75 73 20 73 6f 6d 65 20  ) .** plus some 
25fc0 61 64 64 69 74 69 6f 6e 61 6c 20 6e 6f 6e 2d 73  additional non-s
25fd0 74 61 6e 64 61 72 64 20 66 6f 72 6d 61 74 73 20  tandard formats 
25fe0 28 5b 25 71 5d 2c 20 5b 25 51 5d 2c 20 5b 25 77  ([%q], [%Q], [%w
25ff0 5d 2c 20 61 6e 64 20 5b 25 7a 5d 29 2e 0a 2a 2a  ], and [%z])..**
26000 20 53 65 65 20 74 68 65 20 5b 62 75 69 6c 74 2d   See the [built-
26010 69 6e 20 70 72 69 6e 74 66 28 29 5d 20 64 6f 63  in printf()] doc
26020 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 64  umentation for d
26030 65 74 61 69 6c 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54  etails..**.** ^T
26040 68 65 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  he sqlite3_mprin
26050 74 66 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33  tf() and sqlite3
26060 5f 76 6d 70 72 69 6e 74 66 28 29 20 72 6f 75 74  _vmprintf() rout
26070 69 6e 65 73 20 77 72 69 74 65 20 74 68 65 69 72  ines write their
26080 0a 2a 2a 20 72 65 73 75 6c 74 73 20 69 6e 74 6f  .** results into
26090 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64   memory obtained
260a0 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d   from [sqlite3_m
260b0 61 6c 6c 6f 63 36 34 28 29 5d 2e 0a 2a 2a 20 54  alloc64()]..** T
260c0 68 65 20 73 74 72 69 6e 67 73 20 72 65 74 75 72  he strings retur
260d0 6e 65 64 20 62 79 20 74 68 65 73 65 20 74 77 6f  ned by these two
260e0 20 72 6f 75 74 69 6e 65 73 20 73 68 6f 75 6c 64   routines should
260f0 20 62 65 0a 2a 2a 20 72 65 6c 65 61 73 65 64 20   be.** released 
26100 62 79 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65  by [sqlite3_free
26110 28 29 5d 2e 20 20 5e 42 6f 74 68 20 72 6f 75 74  ()].  ^Both rout
26120 69 6e 65 73 20 72 65 74 75 72 6e 20 61 0a 2a 2a  ines return a.**
26130 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69 66   NULL pointer if
26140 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
26150 36 34 28 29 5d 20 69 73 20 75 6e 61 62 6c 65 20  64()] is unable 
26160 74 6f 20 61 6c 6c 6f 63 61 74 65 20 65 6e 6f 75  to allocate enou
26170 67 68 0a 2a 2a 20 6d 65 6d 6f 72 79 20 74 6f 20  gh.** memory to 
26180 68 6f 6c 64 20 74 68 65 20 72 65 73 75 6c 74 69  hold the resulti
26190 6e 67 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a  ng string..**.**
261a0 20 5e 28 54 68 65 20 73 71 6c 69 74 65 33 5f 73   ^(The sqlite3_s
261b0 6e 70 72 69 6e 74 66 28 29 20 72 6f 75 74 69 6e  nprintf() routin
261c0 65 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20  e is similar to 
261d0 22 73 6e 70 72 69 6e 74 66 28 29 22 20 66 72 6f  "snprintf()" fro
261e0 6d 0a 2a 2a 20 74 68 65 20 73 74 61 6e 64 61 72  m.** the standar
261f0 64 20 43 20 6c 69 62 72 61 72 79 2e 20 20 54 68  d C library.  Th
26200 65 20 72 65 73 75 6c 74 20 69 73 20 77 72 69 74  e result is writ
26210 74 65 6e 20 69 6e 74 6f 20 74 68 65 0a 2a 2a 20  ten into the.** 
26220 62 75 66 66 65 72 20 73 75 70 70 6c 69 65 64 20  buffer supplied 
26230 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61  as the second pa
26240 72 61 6d 65 74 65 72 20 77 68 6f 73 65 20 73 69  rameter whose si
26250 7a 65 20 69 73 20 67 69 76 65 6e 20 62 79 0a 2a  ze is given by.*
26260 2a 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61  * the first para
26270 6d 65 74 65 72 2e 20 4e 6f 74 65 20 74 68 61 74  meter. Note that
26280 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20 74 68   the order of th
26290 65 0a 2a 2a 20 66 69 72 73 74 20 74 77 6f 20 70  e.** first two p
262a0 61 72 61 6d 65 74 65 72 73 20 69 73 20 72 65 76  arameters is rev
262b0 65 72 73 65 64 20 66 72 6f 6d 20 73 6e 70 72 69  ersed from snpri
262c0 6e 74 66 28 29 2e 29 5e 20 20 54 68 69 73 20 69  ntf().)^  This i
262d0 73 20 61 6e 0a 2a 2a 20 68 69 73 74 6f 72 69 63  s an.** historic
262e0 61 6c 20 61 63 63 69 64 65 6e 74 20 74 68 61 74  al accident that
262f0 20 63 61 6e 6e 6f 74 20 62 65 20 66 69 78 65 64   cannot be fixed
26300 20 77 69 74 68 6f 75 74 20 62 72 65 61 6b 69 6e   without breakin
26310 67 0a 2a 2a 20 62 61 63 6b 77 61 72 64 73 20 63  g.** backwards c
26320 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 20 20 5e  ompatibility.  ^
26330 28 4e 6f 74 65 20 61 6c 73 6f 20 74 68 61 74 20  (Note also that 
26340 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66  sqlite3_snprintf
26350 28 29 0a 2a 2a 20 72 65 74 75 72 6e 73 20 61 20  ().** returns a 
26360 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 73 20 62  pointer to its b
26370 75 66 66 65 72 20 69 6e 73 74 65 61 64 20 6f 66  uffer instead of
26380 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a   the number of.*
26390 2a 20 63 68 61 72 61 63 74 65 72 73 20 61 63 74  * characters act
263a0 75 61 6c 6c 79 20 77 72 69 74 74 65 6e 20 69 6e  ually written in
263b0 74 6f 20 74 68 65 20 62 75 66 66 65 72 2e 29 5e  to the buffer.)^
263c0 20 20 57 65 20 61 64 6d 69 74 20 74 68 61 74 0a    We admit that.
263d0 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ** the number of
263e0 20 63 68 61 72 61 63 74 65 72 73 20 77 72 69 74   characters writ
263f0 74 65 6e 20 77 6f 75 6c 64 20 62 65 20 61 20 6d  ten would be a m
26400 6f 72 65 20 75 73 65 66 75 6c 20 72 65 74 75 72  ore useful retur
26410 6e 0a 2a 2a 20 76 61 6c 75 65 20 62 75 74 20 77  n.** value but w
26420 65 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20  e cannot change 
26430 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  the implementati
26440 6f 6e 20 6f 66 20 73 71 6c 69 74 65 33 5f 73 6e  on of sqlite3_sn
26450 70 72 69 6e 74 66 28 29 0a 2a 2a 20 6e 6f 77 20  printf().** now 
26460 77 69 74 68 6f 75 74 20 62 72 65 61 6b 69 6e 67  without breaking
26470 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a   compatibility..
26480 2a 2a 0a 2a 2a 20 5e 41 73 20 6c 6f 6e 67 20 61  **.** ^As long a
26490 73 20 74 68 65 20 62 75 66 66 65 72 20 73 69 7a  s the buffer siz
264a0 65 20 69 73 20 67 72 65 61 74 65 72 20 74 68 61  e is greater tha
264b0 6e 20 7a 65 72 6f 2c 20 73 71 6c 69 74 65 33 5f  n zero, sqlite3_
264c0 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a 20 67 75  snprintf().** gu
264d0 61 72 61 6e 74 65 65 73 20 74 68 61 74 20 74 68  arantees that th
264e0 65 20 62 75 66 66 65 72 20 69 73 20 61 6c 77 61  e buffer is alwa
264f0 79 73 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  ys zero-terminat
26500 65 64 2e 20 20 5e 54 68 65 20 66 69 72 73 74 0a  ed.  ^The first.
26510 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 22 6e 22  ** parameter "n"
26520 20 69 73 20 74 68 65 20 74 6f 74 61 6c 20 73 69   is the total si
26530 7a 65 20 6f 66 20 74 68 65 20 62 75 66 66 65 72  ze of the buffer
26540 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 70 61 63  , including spac
26550 65 20 66 6f 72 0a 2a 2a 20 74 68 65 20 7a 65 72  e for.** the zer
26560 6f 20 74 65 72 6d 69 6e 61 74 6f 72 2e 20 20 53  o terminator.  S
26570 6f 20 74 68 65 20 6c 6f 6e 67 65 73 74 20 73 74  o the longest st
26580 72 69 6e 67 20 74 68 61 74 20 63 61 6e 20 62 65  ring that can be
26590 20 63 6f 6d 70 6c 65 74 65 6c 79 0a 2a 2a 20 77   completely.** w
265a0 72 69 74 74 65 6e 20 77 69 6c 6c 20 62 65 20 6e  ritten will be n
265b0 2d 31 20 63 68 61 72 61 63 74 65 72 73 2e 0a 2a  -1 characters..*
265c0 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
265d0 33 5f 76 73 6e 70 72 69 6e 74 66 28 29 20 72 6f  3_vsnprintf() ro
265e0 75 74 69 6e 65 20 69 73 20 61 20 76 61 72 61 72  utine is a varar
265f0 67 73 20 76 65 72 73 69 6f 6e 20 6f 66 20 73 71  gs version of sq
26600 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29  lite3_snprintf()
26610 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f  ..**.** See also
26620 3a 20 20 5b 62 75 69 6c 74 2d 69 6e 20 70 72 69  :  [built-in pri
26630 6e 74 66 28 29 5d 2c 20 5b 70 72 69 6e 74 66 28  ntf()], [printf(
26640 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 0a  ) SQL function].
26650 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 68  */.SQLITE_API ch
26660 61 72 20 2a 73 71 6c 69 74 65 33 5f 6d 70 72 69  ar *sqlite3_mpri
26670 6e 74 66 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c  ntf(const char*,
26680 2e 2e 2e 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  ...);.SQLITE_API
26690 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 76   char *sqlite3_v
266a0 6d 70 72 69 6e 74 66 28 63 6f 6e 73 74 20 63 68  mprintf(const ch
266b0 61 72 2a 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 53  ar*, va_list);.S
266c0 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a  QLITE_API char *
266d0 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66  sqlite3_snprintf
266e0 28 69 6e 74 2c 63 68 61 72 2a 2c 63 6f 6e 73 74  (int,char*,const
266f0 20 63 68 61 72 2a 2c 20 2e 2e 2e 29 3b 0a 53 51   char*, ...);.SQ
26700 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a 73  LITE_API char *s
26710 71 6c 69 74 65 33 5f 76 73 6e 70 72 69 6e 74 66  qlite3_vsnprintf
26720 28 69 6e 74 2c 63 68 61 72 2a 2c 63 6f 6e 73 74  (int,char*,const
26730 20 63 68 61 72 2a 2c 20 76 61 5f 6c 69 73 74 29   char*, va_list)
26740 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
26750 46 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61  F: Memory Alloca
26760 74 69 6f 6e 20 53 75 62 73 79 73 74 65 6d 0a 2a  tion Subsystem.*
26770 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 69 74 65 20  *.** The SQLite 
26780 63 6f 72 65 20 75 73 65 73 20 74 68 65 73 65 20  core uses these 
26790 74 68 72 65 65 20 72 6f 75 74 69 6e 65 73 20 66  three routines f
267a0 6f 72 20 61 6c 6c 20 6f 66 20 69 74 73 20 6f 77  or all of its ow
267b0 6e 0a 2a 2a 20 69 6e 74 65 72 6e 61 6c 20 6d 65  n.** internal me
267c0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
267d0 6e 65 65 64 73 2e 20 22 43 6f 72 65 22 20 69 6e  needs. "Core" in
267e0 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73 65   the previous se
267f0 6e 74 65 6e 63 65 0a 2a 2a 20 64 6f 65 73 20 6e  ntence.** does n
26800 6f 74 20 69 6e 63 6c 75 64 65 20 6f 70 65 72 61  ot include opera
26810 74 69 6e 67 2d 73 79 73 74 65 6d 20 73 70 65 63  ting-system spec
26820 69 66 69 63 20 56 46 53 20 69 6d 70 6c 65 6d 65  ific VFS impleme
26830 6e 74 61 74 69 6f 6e 2e 20 20 54 68 65 0a 2a 2a  ntation.  The.**
26840 20 57 69 6e 64 6f 77 73 20 56 46 53 20 75 73 65   Windows VFS use
26850 73 20 6e 61 74 69 76 65 20 6d 61 6c 6c 6f 63 28  s native malloc(
26860 29 20 61 6e 64 20 66 72 65 65 28 29 20 66 6f 72  ) and free() for
26870 20 73 6f 6d 65 20 6f 70 65 72 61 74 69 6f 6e 73   some operations
26880 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ..**.** ^The sql
26890 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 72 6f  ite3_malloc() ro
268a0 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 61 20  utine returns a 
268b0 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 62 6c 6f  pointer to a blo
268c0 63 6b 0a 2a 2a 20 6f 66 20 6d 65 6d 6f 72 79 20  ck.** of memory 
268d0 61 74 20 6c 65 61 73 74 20 4e 20 62 79 74 65 73  at least N bytes
268e0 20 69 6e 20 6c 65 6e 67 74 68 2c 20 77 68 65 72   in length, wher
268f0 65 20 4e 20 69 73 20 74 68 65 20 70 61 72 61 6d  e N is the param
26900 65 74 65 72 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c  eter..** ^If sql
26910 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 69 73  ite3_malloc() is
26920 20 75 6e 61 62 6c 65 20 74 6f 20 6f 62 74 61 69   unable to obtai
26930 6e 20 73 75 66 66 69 63 69 65 6e 74 20 66 72 65  n sufficient fre
26940 65 0a 2a 2a 20 6d 65 6d 6f 72 79 2c 20 69 74 20  e.** memory, it 
26950 72 65 74 75 72 6e 73 20 61 20 4e 55 4c 4c 20 70  returns a NULL p
26960 6f 69 6e 74 65 72 2e 20 20 5e 49 66 20 74 68 65  ointer.  ^If the
26970 20 70 61 72 61 6d 65 74 65 72 20 4e 20 74 6f 0a   parameter N to.
26980 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  ** sqlite3_mallo
26990 63 28 29 20 69 73 20 7a 65 72 6f 20 6f 72 20 6e  c() is zero or n
269a0 65 67 61 74 69 76 65 20 74 68 65 6e 20 73 71 6c  egative then sql
269b0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 72 65  ite3_malloc() re
269c0 74 75 72 6e 73 0a 2a 2a 20 61 20 4e 55 4c 4c 20  turns.** a NULL 
269d0 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e  pointer..**.** ^
269e0 54 68 65 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  The sqlite3_mall
269f0 6f 63 36 34 28 4e 29 20 72 6f 75 74 69 6e 65 20  oc64(N) routine 
26a00 77 6f 72 6b 73 20 6a 75 73 74 20 6c 69 6b 65 0a  works just like.
26a10 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  ** sqlite3_mallo
26a20 63 28 4e 29 20 65 78 63 65 70 74 20 74 68 61 74  c(N) except that
26a30 20 4e 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65   N is an unsigne
26a40 64 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72  d 64-bit integer
26a50 20 69 6e 73 74 65 61 64 0a 2a 2a 20 6f 66 20 61   instead.** of a
26a60 20 73 69 67 6e 65 64 20 33 32 2d 62 69 74 20 69   signed 32-bit i
26a70 6e 74 65 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 43  nteger..**.** ^C
26a80 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 66  alling sqlite3_f
26a90 72 65 65 28 29 20 77 69 74 68 20 61 20 70 6f 69  ree() with a poi
26aa0 6e 74 65 72 20 70 72 65 76 69 6f 75 73 6c 79 20  nter previously 
26ab0 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62 79 20 73  returned.** by s
26ac0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
26ad0 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  or sqlite3_reall
26ae0 6f 63 28 29 20 72 65 6c 65 61 73 65 73 20 74 68  oc() releases th
26af0 61 74 20 6d 65 6d 6f 72 79 20 73 6f 0a 2a 2a 20  at memory so.** 
26b00 74 68 61 74 20 69 74 20 6d 69 67 68 74 20 62 65  that it might be
26b10 20 72 65 75 73 65 64 2e 20 20 5e 54 68 65 20 73   reused.  ^The s
26b20 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 72 6f  qlite3_free() ro
26b30 75 74 69 6e 65 20 69 73 0a 2a 2a 20 61 20 6e 6f  utine is.** a no
26b40 2d 6f 70 20 69 66 20 69 73 20 63 61 6c 6c 65 64  -op if is called
26b50 20 77 69 74 68 20 61 20 4e 55 4c 4c 20 70 6f 69   with a NULL poi
26b60 6e 74 65 72 2e 20 20 50 61 73 73 69 6e 67 20 61  nter.  Passing a
26b70 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a 2a 2a   NULL pointer.**
26b80 20 74 6f 20 73 71 6c 69 74 65 33 5f 66 72 65 65   to sqlite3_free
26b90 28 29 20 69 73 20 68 61 72 6d 6c 65 73 73 2e 20  () is harmless. 
26ba0 20 41 66 74 65 72 20 62 65 69 6e 67 20 66 72 65   After being fre
26bb0 65 64 2c 20 6d 65 6d 6f 72 79 0a 2a 2a 20 73 68  ed, memory.** sh
26bc0 6f 75 6c 64 20 6e 65 69 74 68 65 72 20 62 65 20  ould neither be 
26bd0 72 65 61 64 20 6e 6f 72 20 77 72 69 74 74 65 6e  read nor written
26be0 2e 20 20 45 76 65 6e 20 72 65 61 64 69 6e 67 20  .  Even reading 
26bf0 70 72 65 76 69 6f 75 73 6c 79 20 66 72 65 65 64  previously freed
26c00 0a 2a 2a 20 6d 65 6d 6f 72 79 20 6d 69 67 68 74  .** memory might
26c10 20 72 65 73 75 6c 74 20 69 6e 20 61 20 73 65 67   result in a seg
26c20 6d 65 6e 74 61 74 69 6f 6e 20 66 61 75 6c 74 20  mentation fault 
26c30 6f 72 20 6f 74 68 65 72 20 73 65 76 65 72 65 20  or other severe 
26c40 65 72 72 6f 72 2e 0a 2a 2a 20 4d 65 6d 6f 72 79  error..** Memory
26c50 20 63 6f 72 72 75 70 74 69 6f 6e 2c 20 61 20 73   corruption, a s
26c60 65 67 6d 65 6e 74 61 74 69 6f 6e 20 66 61 75 6c  egmentation faul
26c70 74 2c 20 6f 72 20 6f 74 68 65 72 20 73 65 76 65  t, or other seve
26c80 72 65 20 65 72 72 6f 72 0a 2a 2a 20 6d 69 67 68  re error.** migh
26c90 74 20 72 65 73 75 6c 74 20 69 66 20 73 71 6c 69  t result if sqli
26ca0 74 65 33 5f 66 72 65 65 28 29 20 69 73 20 63 61  te3_free() is ca
26cb0 6c 6c 65 64 20 77 69 74 68 20 61 20 6e 6f 6e 2d  lled with a non-
26cc0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 61  NULL pointer tha
26cd0 74 0a 2a 2a 20 77 61 73 20 6e 6f 74 20 6f 62 74  t.** was not obt
26ce0 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74  ained from sqlit
26cf0 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 73  e3_malloc() or s
26d00 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29  qlite3_realloc()
26d10 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ..**.** ^The sql
26d20 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e  ite3_realloc(X,N
26d30 29 20 69 6e 74 65 72 66 61 63 65 20 61 74 74 65  ) interface atte
26d40 6d 70 74 73 20 74 6f 20 72 65 73 69 7a 65 20 61  mpts to resize a
26d50 0a 2a 2a 20 70 72 69 6f 72 20 6d 65 6d 6f 72 79  .** prior memory
26d60 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 58 20 74 6f   allocation X to
26d70 20 62 65 20 61 74 20 6c 65 61 73 74 20 4e 20 62   be at least N b
26d80 79 74 65 73 2e 0a 2a 2a 20 5e 49 66 20 74 68 65  ytes..** ^If the
26d90 20 58 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20   X parameter to 
26da0 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
26db0 58 2c 4e 29 0a 2a 2a 20 69 73 20 61 20 4e 55 4c  X,N).** is a NUL
26dc0 4c 20 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 69  L pointer then i
26dd0 74 73 20 62 65 68 61 76 69 6f 72 20 69 73 20 69  ts behavior is i
26de0 64 65 6e 74 69 63 61 6c 20 74 6f 20 63 61 6c 6c  dentical to call
26df0 69 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d  ing.** sqlite3_m
26e00 61 6c 6c 6f 63 28 4e 29 2e 0a 2a 2a 20 5e 49 66  alloc(N)..** ^If
26e10 20 74 68 65 20 4e 20 70 61 72 61 6d 65 74 65 72   the N parameter
26e20 20 74 6f 20 73 71 6c 69 74 65 33 5f 72 65 61 6c   to sqlite3_real
26e30 6c 6f 63 28 58 2c 4e 29 20 69 73 20 7a 65 72 6f  loc(X,N) is zero
26e40 20 6f 72 0a 2a 2a 20 6e 65 67 61 74 69 76 65 20   or.** negative 
26e50 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f  then the behavio
26e60 72 20 69 73 20 65 78 61 63 74 6c 79 20 74 68 65  r is exactly the
26e70 20 73 61 6d 65 20 61 73 20 63 61 6c 6c 69 6e 67   same as calling
26e80 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 66 72 65 65  .** sqlite3_free
26e90 28 58 29 2e 0a 2a 2a 20 5e 73 71 6c 69 74 65 33  (X)..** ^sqlite3
26ea0 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 72 65  _realloc(X,N) re
26eb0 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20  turns a pointer 
26ec0 74 6f 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  to a memory allo
26ed0 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 61 74 20  cation.** of at 
26ee0 6c 65 61 73 74 20 4e 20 62 79 74 65 73 20 69 6e  least N bytes in
26ef0 20 73 69 7a 65 20 6f 72 20 4e 55 4c 4c 20 69 66   size or NULL if
26f00 20 69 6e 73 75 66 66 69 63 69 65 6e 74 20 6d 65   insufficient me
26f10 6d 6f 72 79 20 69 73 20 61 76 61 69 6c 61 62 6c  mory is availabl
26f20 65 2e 0a 2a 2a 20 5e 49 66 20 4d 20 69 73 20 74  e..** ^If M is t
26f30 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70  he size of the p
26f40 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c  rior allocation,
26f50 20 74 68 65 6e 20 6d 69 6e 28 4e 2c 4d 29 20 62   then min(N,M) b
26f60 79 74 65 73 0a 2a 2a 20 6f 66 20 74 68 65 20 70  ytes.** of the p
26f70 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  rior allocation 
26f80 61 72 65 20 63 6f 70 69 65 64 20 69 6e 74 6f 20  are copied into 
26f90 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66  the beginning of
26fa0 20 62 75 66 66 65 72 20 72 65 74 75 72 6e 65 64   buffer returned
26fb0 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65 33 5f 72  .** by sqlite3_r
26fc0 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 61 6e 64 20  ealloc(X,N) and 
26fd0 74 68 65 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61  the prior alloca
26fe0 74 69 6f 6e 20 69 73 20 66 72 65 65 64 2e 0a 2a  tion is freed..*
26ff0 2a 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 72 65  * ^If sqlite3_re
27000 61 6c 6c 6f 63 28 58 2c 4e 29 20 72 65 74 75 72  alloc(X,N) retur
27010 6e 73 20 4e 55 4c 4c 20 61 6e 64 20 4e 20 69 73  ns NULL and N is
27020 20 70 6f 73 69 74 69 76 65 2c 20 74 68 65 6e 20   positive, then 
27030 74 68 65 0a 2a 2a 20 70 72 69 6f 72 20 61 6c 6c  the.** prior all
27040 6f 63 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 66  ocation is not f
27050 72 65 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  reed..**.** ^The
27060 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
27070 36 34 28 58 2c 4e 29 20 69 6e 74 65 72 66 61 63  64(X,N) interfac
27080 65 73 20 77 6f 72 6b 73 20 74 68 65 20 73 61 6d  es works the sam
27090 65 20 61 73 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  e as.** sqlite3_
270a0 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 65 78 63  realloc(X,N) exc
270b0 65 70 74 20 74 68 61 74 20 4e 20 69 73 20 61 20  ept that N is a 
270c0 36 34 2d 62 69 74 20 75 6e 73 69 67 6e 65 64 20  64-bit unsigned 
270d0 69 6e 74 65 67 65 72 20 69 6e 73 74 65 61 64 0a  integer instead.
270e0 2a 2a 20 6f 66 20 61 20 33 32 2d 62 69 74 20 73  ** of a 32-bit s
270f0 69 67 6e 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a  igned integer..*
27100 2a 0a 2a 2a 20 5e 49 66 20 58 20 69 73 20 61 20  *.** ^If X is a 
27110 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
27120 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74  n previously obt
27130 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74  ained from sqlit
27140 65 33 5f 6d 61 6c 6c 6f 63 28 29 2c 0a 2a 2a 20  e3_malloc(),.** 
27150 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34  sqlite3_malloc64
27160 28 29 2c 20 73 71 6c 69 74 65 33 5f 72 65 61 6c  (), sqlite3_real
27170 6c 6f 63 28 29 2c 20 6f 72 20 73 71 6c 69 74 65  loc(), or sqlite
27180 33 5f 72 65 61 6c 6c 6f 63 36 34 28 29 2c 20 74  3_realloc64(), t
27190 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d  hen.** sqlite3_m
271a0 73 69 7a 65 28 58 29 20 72 65 74 75 72 6e 73 20  size(X) returns 
271b0 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 61 74  the size of that
271c0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
271d0 6f 6e 20 69 6e 20 62 79 74 65 73 2e 0a 2a 2a 20  on in bytes..** 
271e0 5e 54 68 65 20 76 61 6c 75 65 20 72 65 74 75 72  ^The value retur
271f0 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 6d  ned by sqlite3_m
27200 73 69 7a 65 28 58 29 20 6d 69 67 68 74 20 62 65  size(X) might be
27210 20 6c 61 72 67 65 72 20 74 68 61 6e 20 74 68 65   larger than the
27220 20 6e 75 6d 62 65 72 0a 2a 2a 20 6f 66 20 62 79   number.** of by
27230 74 65 73 20 72 65 71 75 65 73 74 65 64 20 77 68  tes requested wh
27240 65 6e 20 58 20 77 61 73 20 61 6c 6c 6f 63 61 74  en X was allocat
27250 65 64 2e 20 20 5e 49 66 20 58 20 69 73 20 61 20  ed.  ^If X is a 
27260 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 65  NULL pointer the
27270 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 73 69  n.** sqlite3_msi
27280 7a 65 28 58 29 20 72 65 74 75 72 6e 73 20 7a 65  ze(X) returns ze
27290 72 6f 2e 20 20 49 66 20 58 20 70 6f 69 6e 74 73  ro.  If X points
272a0 20 74 6f 20 73 6f 6d 65 74 68 69 6e 67 20 74 68   to something th
272b0 61 74 20 69 73 20 6e 6f 74 0a 2a 2a 20 74 68 65  at is not.** the
272c0 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 6d 65   beginning of me
272d0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c  mory allocation,
272e0 20 6f 72 20 69 66 20 69 74 20 70 6f 69 6e 74 73   or if it points
272f0 20 74 6f 20 61 20 66 6f 72 6d 65 72 6c 79 0a 2a   to a formerly.*
27300 2a 20 76 61 6c 69 64 20 6d 65 6d 6f 72 79 20 61  * valid memory a
27310 6c 6c 6f 63 61 74 69 6f 6e 20 74 68 61 74 20 68  llocation that h
27320 61 73 20 6e 6f 77 20 62 65 65 6e 20 66 72 65 65  as now been free
27330 64 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61  d, then the beha
27340 76 69 6f 72 0a 2a 2a 20 6f 66 20 73 71 6c 69 74  vior.** of sqlit
27350 65 33 5f 6d 73 69 7a 65 28 58 29 20 69 73 20 75  e3_msize(X) is u
27360 6e 64 65 66 69 6e 65 64 20 61 6e 64 20 70 6f 73  ndefined and pos
27370 73 69 62 6c 79 20 68 61 72 6d 66 75 6c 2e 0a 2a  sibly harmful..*
27380 2a 0a 2a 2a 20 5e 54 68 65 20 6d 65 6d 6f 72 79  *.** ^The memory
27390 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c   returned by sql
273a0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2c 20 73  ite3_malloc(), s
273b0 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29  qlite3_realloc()
273c0 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c  ,.** sqlite3_mal
273d0 6c 6f 63 36 34 28 29 2c 20 61 6e 64 20 73 71 6c  loc64(), and sql
273e0 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28 29  ite3_realloc64()
273f0 0a 2a 2a 20 69 73 20 61 6c 77 61 79 73 20 61 6c  .** is always al
27400 69 67 6e 65 64 20 74 6f 20 61 74 20 6c 65 61 73  igned to at leas
27410 74 20 61 6e 20 38 20 62 79 74 65 20 62 6f 75 6e  t an 8 byte boun
27420 64 61 72 79 2c 20 6f 72 20 74 6f 20 61 0a 2a 2a  dary, or to a.**
27430 20 34 20 62 79 74 65 20 62 6f 75 6e 64 61 72 79   4 byte boundary
27440 20 69 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   if the [SQLITE_
27450 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d  4_BYTE_ALIGNED_M
27460 41 4c 4c 4f 43 5d 20 63 6f 6d 70 69 6c 65 2d 74  ALLOC] compile-t
27470 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f 6e 20 69 73  ime.** option is
27480 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20   used..**.** In 
27490 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33  SQLite version 3
274a0 2e 35 2e 30 20 61 6e 64 20 33 2e 35 2e 31 2c 20  .5.0 and 3.5.1, 
274b0 69 74 20 77 61 73 20 70 6f 73 73 69 62 6c 65 20  it was possible 
274c0 74 6f 20 64 65 66 69 6e 65 0a 2a 2a 20 74 68 65  to define.** the
274d0 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d   SQLITE_OMIT_MEM
274e0 4f 52 59 5f 41 4c 4c 4f 43 41 54 49 4f 4e 20 77  ORY_ALLOCATION w
274f0 68 69 63 68 20 77 6f 75 6c 64 20 63 61 75 73 65  hich would cause
27500 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 0a 2a 2a   the built-in.**
27510 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
27520 6f 66 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65  of these routine
27530 73 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e  s to be omitted.
27540 20 20 54 68 61 74 20 63 61 70 61 62 69 6c 69 74    That capabilit
27550 79 0a 2a 2a 20 69 73 20 6e 6f 20 6c 6f 6e 67 65  y.** is no longe
27560 72 20 70 72 6f 76 69 64 65 64 2e 20 20 4f 6e 6c  r provided.  Onl
27570 79 20 62 75 69 6c 74 2d 69 6e 20 6d 65 6d 6f 72  y built-in memor
27580 79 20 61 6c 6c 6f 63 61 74 6f 72 73 20 63 61 6e  y allocators can
27590 20 62 65 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20   be used..**.** 
275a0 50 72 69 6f 72 20 74 6f 20 53 51 4c 69 74 65 20  Prior to SQLite 
275b0 76 65 72 73 69 6f 6e 20 33 2e 37 2e 31 30 2c 20  version 3.7.10, 
275c0 74 68 65 20 57 69 6e 64 6f 77 73 20 4f 53 20 69  the Windows OS i
275d0 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72 20 63  nterface layer c
275e0 61 6c 6c 65 64 0a 2a 2a 20 74 68 65 20 73 79 73  alled.** the sys
275f0 74 65 6d 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64  tem malloc() and
27600 20 66 72 65 65 28 29 20 64 69 72 65 63 74 6c 79   free() directly
27610 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e 67   when converting
27620 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 73 20 62 65  .** filenames be
27630 74 77 65 65 6e 20 74 68 65 20 55 54 46 2d 38 20  tween the UTF-8 
27640 65 6e 63 6f 64 69 6e 67 20 75 73 65 64 20 62 79  encoding used by
27650 20 53 51 4c 69 74 65 0a 2a 2a 20 61 6e 64 20 77   SQLite.** and w
27660 68 61 74 65 76 65 72 20 66 69 6c 65 6e 61 6d 65  hatever filename
27670 20 65 6e 63 6f 64 69 6e 67 20 69 73 20 75 73 65   encoding is use
27680 64 20 62 79 20 74 68 65 20 70 61 72 74 69 63 75  d by the particu
27690 6c 61 72 20 57 69 6e 64 6f 77 73 0a 2a 2a 20 69  lar Windows.** i
276a0 6e 73 74 61 6c 6c 61 74 69 6f 6e 2e 20 20 4d 65  nstallation.  Me
276b0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
276c0 65 72 72 6f 72 73 20 77 65 72 65 20 64 65 74 65  errors were dete
276d0 63 74 65 64 2c 20 62 75 74 0a 2a 2a 20 74 68 65  cted, but.** the
276e0 79 20 77 65 72 65 20 72 65 70 6f 72 74 65 64 20  y were reported 
276f0 62 61 63 6b 20 61 73 20 5b 53 51 4c 49 54 45 5f  back as [SQLITE_
27700 43 41 4e 54 4f 50 45 4e 5d 20 6f 72 0a 2a 2a 20  CANTOPEN] or.** 
27710 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 72  [SQLITE_IOERR] r
27720 61 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49  ather than [SQLI
27730 54 45 5f 4e 4f 4d 45 4d 5d 2e 0a 2a 2a 0a 2a 2a  TE_NOMEM]..**.**
27740 20 54 68 65 20 70 6f 69 6e 74 65 72 20 61 72 67   The pointer arg
27750 75 6d 65 6e 74 73 20 74 6f 20 5b 73 71 6c 69 74  uments to [sqlit
27760 65 33 5f 66 72 65 65 28 29 5d 20 61 6e 64 20 5b  e3_free()] and [
27770 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
27780 29 5d 0a 2a 2a 20 6d 75 73 74 20 62 65 20 65 69  )].** must be ei
27790 74 68 65 72 20 4e 55 4c 4c 20 6f 72 20 65 6c 73  ther NULL or els
277a0 65 20 70 6f 69 6e 74 65 72 73 20 6f 62 74 61 69  e pointers obtai
277b0 6e 65 64 20 66 72 6f 6d 20 61 20 70 72 69 6f 72  ned from a prior
277c0 0a 2a 2a 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f  .** invocation o
277d0 66 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  f [sqlite3_mallo
277e0 63 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33  c()] or [sqlite3
277f0 5f 72 65 61 6c 6c 6f 63 28 29 5d 20 74 68 61 74  _realloc()] that
27800 20 68 61 76 65 0a 2a 2a 20 6e 6f 74 20 79 65 74   have.** not yet
27810 20 62 65 65 6e 20 72 65 6c 65 61 73 65 64 2e 0a   been released..
27820 2a 2a 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63  **.** The applic
27830 61 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 72  ation must not r
27840 65 61 64 20 6f 72 20 77 72 69 74 65 20 61 6e 79  ead or write any
27850 20 70 61 72 74 20 6f 66 0a 2a 2a 20 61 20 62 6c   part of.** a bl
27860 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 61 66  ock of memory af
27870 74 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20  ter it has been 
27880 72 65 6c 65 61 73 65 64 20 75 73 69 6e 67 0a 2a  released using.*
27890 2a 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28  * [sqlite3_free(
278a0 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 72  )] or [sqlite3_r
278b0 65 61 6c 6c 6f 63 28 29 5d 2e 0a 2a 2f 0a 53 51  ealloc()]..*/.SQ
278c0 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 2a 73  LITE_API void *s
278d0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e  qlite3_malloc(in
278e0 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 76  t);.SQLITE_API v
278f0 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 6d 61 6c  oid *sqlite3_mal
27900 6c 6f 63 36 34 28 73 71 6c 69 74 65 33 5f 75 69  loc64(sqlite3_ui
27910 6e 74 36 34 29 3b 0a 53 51 4c 49 54 45 5f 41 50  nt64);.SQLITE_AP
27920 49 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  I void *sqlite3_
27930 72 65 61 6c 6c 6f 63 28 76 6f 69 64 2a 2c 20 69  realloc(void*, i
27940 6e 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  nt);.SQLITE_API 
27950 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 72 65  void *sqlite3_re
27960 61 6c 6c 6f 63 36 34 28 76 6f 69 64 2a 2c 20 73  alloc64(void*, s
27970 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29 3b 0a  qlite3_uint64);.
27980 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20  SQLITE_API void 
27990 73 71 6c 69 74 65 33 5f 66 72 65 65 28 76 6f 69  sqlite3_free(voi
279a0 64 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  d*);.SQLITE_API 
279b0 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 20 73  sqlite3_uint64 s
279c0 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 76 6f 69  qlite3_msize(voi
279d0 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  d*);../*.** CAPI
279e0 33 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c  3REF: Memory All
279f0 6f 63 61 74 6f 72 20 53 74 61 74 69 73 74 69 63  ocator Statistic
27a00 73 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 70  s.**.** SQLite p
27a10 72 6f 76 69 64 65 73 20 74 68 65 73 65 20 74 77  rovides these tw
27a20 6f 20 69 6e 74 65 72 66 61 63 65 73 20 66 6f 72  o interfaces for
27a30 20 72 65 70 6f 72 74 69 6e 67 20 6f 6e 20 74 68   reporting on th
27a40 65 20 73 74 61 74 75 73 0a 2a 2a 20 6f 66 20 74  e status.** of t
27a50 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  he [sqlite3_mall
27a60 6f 63 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  oc()], [sqlite3_
27a70 66 72 65 65 28 29 5d 2c 20 61 6e 64 20 5b 73 71  free()], and [sq
27a80 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d  lite3_realloc()]
27a90 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 2c 20 77 68  .** routines, wh
27aa0 69 63 68 20 66 6f 72 6d 20 74 68 65 20 62 75 69  ich form the bui
27ab0 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c  lt-in memory all
27ac0 6f 63 61 74 69 6f 6e 20 73 75 62 73 79 73 74 65  ocation subsyste
27ad0 6d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 5b 73  m..**.** ^The [s
27ae0 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
27af0 65 64 28 29 5d 20 72 6f 75 74 69 6e 65 20 72 65  ed()] routine re
27b00 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
27b10 20 6f 66 20 62 79 74 65 73 0a 2a 2a 20 6f 66 20   of bytes.** of 
27b20 6d 65 6d 6f 72 79 20 63 75 72 72 65 6e 74 6c 79  memory currently
27b30 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 28 6d 61   outstanding (ma
27b40 6c 6c 6f 63 65 64 20 62 75 74 20 6e 6f 74 20 66  lloced but not f
27b50 72 65 65 64 29 2e 0a 2a 2a 20 5e 54 68 65 20 5b  reed)..** ^The [
27b60 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68  sqlite3_memory_h
27b70 69 67 68 77 61 74 65 72 28 29 5d 20 72 6f 75 74  ighwater()] rout
27b80 69 6e 65 20 72 65 74 75 72 6e 73 20 74 68 65 20  ine returns the 
27b90 6d 61 78 69 6d 75 6d 0a 2a 2a 20 76 61 6c 75 65  maximum.** value
27ba0 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d   of [sqlite3_mem
27bb0 6f 72 79 5f 75 73 65 64 28 29 5d 20 73 69 6e 63  ory_used()] sinc
27bc0 65 20 74 68 65 20 68 69 67 68 2d 77 61 74 65 72  e the high-water
27bd0 20 6d 61 72 6b 0a 2a 2a 20 77 61 73 20 6c 61 73   mark.** was las
27be0 74 20 72 65 73 65 74 2e 20 20 5e 54 68 65 20 76  t reset.  ^The v
27bf0 61 6c 75 65 73 20 72 65 74 75 72 6e 65 64 20 62  alues returned b
27c00 79 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  y [sqlite3_memor
27c10 79 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a 2a 2a  y_used()] and.**
27c20 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
27c30 5f 68 69 67 68 77 61 74 65 72 28 29 5d 20 69 6e  _highwater()] in
27c40 63 6c 75 64 65 20 61 6e 79 20 6f 76 65 72 68 65  clude any overhe
27c50 61 64 0a 2a 2a 20 61 64 64 65 64 20 62 79 20 53  ad.** added by S
27c60 51 4c 69 74 65 20 69 6e 20 69 74 73 20 69 6d 70  QLite in its imp
27c70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b  lementation of [
27c80 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
27c90 5d 2c 0a 2a 2a 20 62 75 74 20 6e 6f 74 20 6f 76  ],.** but not ov
27ca0 65 72 68 65 61 64 20 61 64 64 65 64 20 62 79 20  erhead added by 
27cb0 74 68 65 20 61 6e 79 20 75 6e 64 65 72 6c 79 69  the any underlyi
27cc0 6e 67 20 73 79 73 74 65 6d 20 6c 69 62 72 61 72  ng system librar
27cd0 79 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20 74 68  y.** routines th
27ce0 61 74 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  at [sqlite3_mall
27cf0 6f 63 28 29 5d 20 6d 61 79 20 63 61 6c 6c 2e 0a  oc()] may call..
27d00 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6d 65 6d 6f 72  **.** ^The memor
27d10 79 20 68 69 67 68 2d 77 61 74 65 72 20 6d 61 72  y high-water mar
27d20 6b 20 69 73 20 72 65 73 65 74 20 74 6f 20 74 68  k is reset to th
27d30 65 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20  e current value 
27d40 6f 66 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d  of.** [sqlite3_m
27d50 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20 69 66  emory_used()] if
27d60 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74 68 65   and only if the
27d70 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a   parameter to.**
27d80 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
27d90 5f 68 69 67 68 77 61 74 65 72 28 29 5d 20 69 73  _highwater()] is
27da0 20 74 72 75 65 2e 20 20 5e 54 68 65 20 76 61 6c   true.  ^The val
27db0 75 65 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62  ue returned.** b
27dc0 79 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  y [sqlite3_memor
27dd0 79 5f 68 69 67 68 77 61 74 65 72 28 31 29 5d 20  y_highwater(1)] 
27de0 69 73 20 74 68 65 20 68 69 67 68 2d 77 61 74 65  is the high-wate
27df0 72 20 6d 61 72 6b 0a 2a 2a 20 70 72 69 6f 72 20  r mark.** prior 
27e00 74 6f 20 74 68 65 20 72 65 73 65 74 2e 0a 2a 2f  to the reset..*/
27e10 0a 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69  .SQLITE_API sqli
27e20 74 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65  te3_int64 sqlite
27e30 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 76 6f  3_memory_used(vo
27e40 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  id);.SQLITE_API 
27e50 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 73 71  sqlite3_int64 sq
27e60 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67  lite3_memory_hig
27e70 68 77 61 74 65 72 28 69 6e 74 20 72 65 73 65 74  hwater(int reset
27e80 46 6c 61 67 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  Flag);../*.** CA
27e90 50 49 33 52 45 46 3a 20 50 73 65 75 64 6f 2d 52  PI3REF: Pseudo-R
27ea0 61 6e 64 6f 6d 20 4e 75 6d 62 65 72 20 47 65 6e  andom Number Gen
27eb0 65 72 61 74 6f 72 0a 2a 2a 0a 2a 2a 20 53 51 4c  erator.**.** SQL
27ec0 69 74 65 20 63 6f 6e 74 61 69 6e 73 20 61 20 68  ite contains a h
27ed0 69 67 68 2d 71 75 61 6c 69 74 79 20 70 73 65 75  igh-quality pseu
27ee0 64 6f 2d 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72  do-random number
27ef0 20 67 65 6e 65 72 61 74 6f 72 20 28 50 52 4e 47   generator (PRNG
27f00 29 20 75 73 65 64 20 74 6f 0a 2a 2a 20 73 65 6c  ) used to.** sel
27f10 65 63 74 20 72 61 6e 64 6f 6d 20 5b 52 4f 57 49  ect random [ROWI
27f20 44 20 7c 20 52 4f 57 49 44 73 5d 20 77 68 65 6e  D | ROWIDs] when
27f30 20 69 6e 73 65 72 74 69 6e 67 20 6e 65 77 20 72   inserting new r
27f40 65 63 6f 72 64 73 20 69 6e 74 6f 20 61 20 74 61  ecords into a ta
27f50 62 6c 65 20 74 68 61 74 0a 2a 2a 20 61 6c 72 65  ble that.** alre
27f60 61 64 79 20 75 73 65 73 20 74 68 65 20 6c 61 72  ady uses the lar
27f70 67 65 73 74 20 70 6f 73 73 69 62 6c 65 20 5b 52  gest possible [R
27f80 4f 57 49 44 5d 2e 20 20 54 68 65 20 50 52 4e 47  OWID].  The PRNG
27f90 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20 66 6f   is also used fo
27fa0 72 0a 2a 2a 20 74 68 65 20 62 75 69 6c 64 2d 69  r.** the build-i
27fb0 6e 20 72 61 6e 64 6f 6d 28 29 20 61 6e 64 20 72  n random() and r
27fc0 61 6e 64 6f 6d 62 6c 6f 62 28 29 20 53 51 4c 20  andomblob() SQL 
27fd0 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69 73  functions.  This
27fe0 20 69 6e 74 65 72 66 61 63 65 20 61 6c 6c 6f 77   interface allow
27ff0 73 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f 6e  s.** application
28000 73 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20  s to access the 
28010 73 61 6d 65 20 50 52 4e 47 20 66 6f 72 20 6f 74  same PRNG for ot
28020 68 65 72 20 70 75 72 70 6f 73 65 73 2e 0a 2a 2a  her purposes..**
28030 0a 2a 2a 20 5e 41 20 63 61 6c 6c 20 74 6f 20 74  .** ^A call to t
28040 68 69 73 20 72 6f 75 74 69 6e 65 20 73 74 6f 72  his routine stor
28050 65 73 20 4e 20 62 79 74 65 73 20 6f 66 20 72 61  es N bytes of ra
28060 6e 64 6f 6d 6e 65 73 73 20 69 6e 74 6f 20 62 75  ndomness into bu
28070 66 66 65 72 20 50 2e 0a 2a 2a 20 5e 54 68 65 20  ffer P..** ^The 
28080 50 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 20  P parameter can 
28090 62 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  be a NULL pointe
280a0 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 69  r..**.** ^If thi
280b0 73 20 72 6f 75 74 69 6e 65 20 68 61 73 20 6e 6f  s routine has no
280c0 74 20 62 65 65 6e 20 70 72 65 76 69 6f 75 73 6c  t been previousl
280d0 79 20 63 61 6c 6c 65 64 20 6f 72 20 69 66 20 74  y called or if t
280e0 68 65 20 70 72 65 76 69 6f 75 73 0a 2a 2a 20 63  he previous.** c
280f0 61 6c 6c 20 68 61 64 20 4e 20 6c 65 73 73 20 74  all had N less t
28100 68 61 6e 20 6f 6e 65 20 6f 72 20 61 20 4e 55 4c  han one or a NUL
28110 4c 20 70 6f 69 6e 74 65 72 20 66 6f 72 20 50 2c  L pointer for P,
28120 20 74 68 65 6e 20 74 68 65 20 50 52 4e 47 20 69   then the PRNG i
28130 73 0a 2a 2a 20 73 65 65 64 65 64 20 75 73 69 6e  s.** seeded usin
28140 67 20 72 61 6e 64 6f 6d 6e 65 73 73 20 6f 62 74  g randomness obt
28150 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 78  ained from the x
28160 52 61 6e 64 6f 6d 6e 65 73 73 20 6d 65 74 68 6f  Randomness metho
28170 64 20 6f 66 0a 2a 2a 20 74 68 65 20 64 65 66 61  d of.** the defa
28180 75 6c 74 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  ult [sqlite3_vfs
28190 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 20 5e 49 66  ] object..** ^If
281a0 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 63 61   the previous ca
281b0 6c 6c 20 74 6f 20 74 68 69 73 20 72 6f 75 74 69  ll to this routi
281c0 6e 65 20 68 61 64 20 61 6e 20 4e 20 6f 66 20 31  ne had an N of 1
281d0 20 6f 72 20 6d 6f 72 65 20 61 6e 64 20 61 0a 2a   or more and a.*
281e0 2a 20 6e 6f 6e 2d 4e 55 4c 4c 20 50 20 74 68 65  * non-NULL P the
281f0 6e 20 74 68 65 20 70 73 65 75 64 6f 2d 72 61 6e  n the pseudo-ran
28200 64 6f 6d 6e 65 73 73 20 69 73 20 67 65 6e 65 72  domness is gener
28210 61 74 65 64 0a 2a 2a 20 69 6e 74 65 72 6e 61 6c  ated.** internal
28220 6c 79 20 61 6e 64 20 77 69 74 68 6f 75 74 20 72  ly and without r
28230 65 63 6f 75 72 73 65 20 74 6f 20 74 68 65 20 5b  ecourse to the [
28240 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 78 52 61  sqlite3_vfs] xRa
28250 6e 64 6f 6d 6e 65 73 73 0a 2a 2a 20 6d 65 74 68  ndomness.** meth
28260 6f 64 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  od..*/.SQLITE_AP
28270 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72  I void sqlite3_r
28280 61 6e 64 6f 6d 6e 65 73 73 28 69 6e 74 20 4e 2c  andomness(int N,
28290 20 76 6f 69 64 20 2a 50 29 3b 0a 0a 2f 2a 0a 2a   void *P);../*.*
282a0 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6d 70  * CAPI3REF: Comp
282b0 69 6c 65 2d 54 69 6d 65 20 41 75 74 68 6f 72 69  ile-Time Authori
282c0 7a 61 74 69 6f 6e 20 43 61 6c 6c 62 61 63 6b 73  zation Callbacks
282d0 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
282e0 74 65 33 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a  te3.** KEYWORDS:
282f0 20 7b 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c   {authorizer cal
28300 6c 62 61 63 6b 7d 0a 2a 2a 0a 2a 2a 20 5e 54 68  lback}.**.** ^Th
28310 69 73 20 72 6f 75 74 69 6e 65 20 72 65 67 69 73  is routine regis
28320 74 65 72 73 20 61 6e 20 61 75 74 68 6f 72 69 7a  ters an authoriz
28330 65 72 20 63 61 6c 6c 62 61 63 6b 20 77 69 74 68  er callback with
28340 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a   a particular.**
28350 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
28360 63 74 69 6f 6e 5d 2c 20 73 75 70 70 6c 69 65 64  ction], supplied
28370 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 61 72   in the first ar
28380 67 75 6d 65 6e 74 2e 0a 2a 2a 20 5e 54 68 65 20  gument..** ^The 
28390 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
283a0 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 61  ack is invoked a
283b0 73 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  s SQL statements
283c0 20 61 72 65 20 62 65 69 6e 67 20 63 6f 6d 70 69   are being compi
283d0 6c 65 64 0a 2a 2a 20 62 79 20 5b 73 71 6c 69 74  led.** by [sqlit
283e0 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20 6f 72  e3_prepare()] or
283f0 20 69 74 73 20 76 61 72 69 61 6e 74 73 20 5b 73   its variants [s
28400 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
28410 32 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65  2()],.** [sqlite
28420 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 5d 2c  3_prepare_v3()],
28430 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
28440 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  e16()], [sqlite3
28450 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28 29 5d  _prepare16_v2()]
28460 2c 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65  ,.** and [sqlite
28470 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29  3_prepare16_v3()
28480 5d 2e 20 20 5e 41 74 20 76 61 72 69 6f 75 73 0a  ].  ^At various.
28490 2a 2a 20 70 6f 69 6e 74 73 20 64 75 72 69 6e 67  ** points during
284a0 20 74 68 65 20 63 6f 6d 70 69 6c 61 74 69 6f 6e   the compilation
284b0 20 70 72 6f 63 65 73 73 2c 20 61 73 20 6c 6f 67   process, as log
284c0 69 63 20 69 73 20 62 65 69 6e 67 20 63 72 65 61  ic is being crea
284d0 74 65 64 0a 2a 2a 20 74 6f 20 70 65 72 66 6f 72  ted.** to perfor
284e0 6d 20 76 61 72 69 6f 75 73 20 61 63 74 69 6f 6e  m various action
284f0 73 2c 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65  s, the authorize
28500 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e  r callback is in
28510 76 6f 6b 65 64 20 74 6f 0a 2a 2a 20 73 65 65 20  voked to.** see 
28520 69 66 20 74 68 6f 73 65 20 61 63 74 69 6f 6e 73  if those actions
28530 20 61 72 65 20 61 6c 6c 6f 77 65 64 2e 20 20 5e   are allowed.  ^
28540 54 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63  The authorizer c
28550 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 0a 2a  allback should.*
28560 2a 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45  * return [SQLITE
28570 5f 4f 4b 5d 20 74 6f 20 61 6c 6c 6f 77 20 74 68  _OK] to allow th
28580 65 20 61 63 74 69 6f 6e 2c 20 5b 53 51 4c 49 54  e action, [SQLIT
28590 45 5f 49 47 4e 4f 52 45 5d 20 74 6f 20 64 69 73  E_IGNORE] to dis
285a0 61 6c 6c 6f 77 20 74 68 65 0a 2a 2a 20 73 70 65  allow the.** spe
285b0 63 69 66 69 63 20 61 63 74 69 6f 6e 20 62 75 74  cific action but
285c0 20 61 6c 6c 6f 77 20 74 68 65 20 53 51 4c 20 73   allow the SQL s
285d0 74 61 74 65 6d 65 6e 74 20 74 6f 20 63 6f 6e 74  tatement to cont
285e0 69 6e 75 65 20 74 6f 20 62 65 0a 2a 2a 20 63 6f  inue to be.** co
285f0 6d 70 69 6c 65 64 2c 20 6f 72 20 5b 53 51 4c 49  mpiled, or [SQLI
28600 54 45 5f 44 45 4e 59 5d 20 74 6f 20 63 61 75 73  TE_DENY] to caus
28610 65 20 74 68 65 20 65 6e 74 69 72 65 20 53 51 4c  e the entire SQL
28620 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65   statement to be
28630 0a 2a 2a 20 72 65 6a 65 63 74 65 64 20 77 69 74  .** rejected wit
28640 68 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 49 66  h an error.  ^If
28650 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20   the authorizer 
28660 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73  callback returns
28670 0a 2a 2a 20 61 6e 79 20 76 61 6c 75 65 20 6f 74  .** any value ot
28680 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45  her than [SQLITE
28690 5f 49 47 4e 4f 52 45 5d 2c 20 5b 53 51 4c 49 54  _IGNORE], [SQLIT
286a0 45 5f 4f 4b 5d 2c 20 6f 72 20 5b 53 51 4c 49 54  E_OK], or [SQLIT
286b0 45 5f 44 45 4e 59 5d 0a 2a 2a 20 74 68 65 6e 20  E_DENY].** then 
286c0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  the [sqlite3_pre
286d0 70 61 72 65 5f 76 32 28 29 5d 20 6f 72 20 65 71  pare_v2()] or eq
286e0 75 69 76 61 6c 65 6e 74 20 63 61 6c 6c 20 74 68  uivalent call th
286f0 61 74 20 74 72 69 67 67 65 72 65 64 0a 2a 2a 20  at triggered.** 
28700 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 77  the authorizer w
28710 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e  ill fail with an
28720 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0a   error message..
28730 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 63  **.** When the c
28740 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20  allback returns 
28750 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74 68 61  [SQLITE_OK], tha
28760 74 20 6d 65 61 6e 73 20 74 68 65 20 6f 70 65 72  t means the oper
28770 61 74 69 6f 6e 0a 2a 2a 20 72 65 71 75 65 73 74  ation.** request
28780 65 64 20 69 73 20 6f 6b 2e 20 20 5e 57 68 65 6e  ed is ok.  ^When
28790 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72 65   the callback re
287a0 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 44 45  turns [SQLITE_DE
287b0 4e 59 5d 2c 20 74 68 65 0a 2a 2a 20 5b 73 71 6c  NY], the.** [sql
287c0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
287d0 29 5d 20 6f 72 20 65 71 75 69 76 61 6c 65 6e 74  )] or equivalent
287e0 20 63 61 6c 6c 20 74 68 61 74 20 74 72 69 67 67   call that trigg
287f0 65 72 65 64 20 74 68 65 0a 2a 2a 20 61 75 74 68  ered the.** auth
28800 6f 72 69 7a 65 72 20 77 69 6c 6c 20 66 61 69 6c  orizer will fail
28810 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20 6d   with an error m
28820 65 73 73 61 67 65 20 65 78 70 6c 61 69 6e 69 6e  essage explainin
28830 67 20 74 68 61 74 0a 2a 2a 20 61 63 63 65 73 73  g that.** access
28840 20 69 73 20 64 65 6e 69 65 64 2e 20 0a 2a 2a 0a   is denied. .**.
28850 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 70 61  ** ^The first pa
28860 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 61  rameter to the a
28870 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
28880 63 6b 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20  ck is a copy of 
28890 74 68 65 20 74 68 69 72 64 0a 2a 2a 20 70 61 72  the third.** par
288a0 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 73 71  ameter to the sq
288b0 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
288c0 69 7a 65 72 28 29 20 69 6e 74 65 72 66 61 63 65  izer() interface
288d0 2e 20 5e 54 68 65 20 73 65 63 6f 6e 64 20 70 61  . ^The second pa
288e0 72 61 6d 65 74 65 72 0a 2a 2a 20 74 6f 20 74 68  rameter.** to th
288f0 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e  e callback is an
28900 20 69 6e 74 65 67 65 72 20 5b 53 51 4c 49 54 45   integer [SQLITE
28910 5f 43 4f 50 59 20 7c 20 61 63 74 69 6f 6e 20 63  _COPY | action c
28920 6f 64 65 5d 20 74 68 61 74 20 73 70 65 63 69 66  ode] that specif
28930 69 65 73 0a 2a 2a 20 74 68 65 20 70 61 72 74 69  ies.** the parti
28940 63 75 6c 61 72 20 61 63 74 69 6f 6e 20 74 6f 20  cular action to 
28950 62 65 20 61 75 74 68 6f 72 69 7a 65 64 2e 20 5e  be authorized. ^
28960 54 68 65 20 74 68 69 72 64 20 74 68 72 6f 75 67  The third throug
28970 68 20 73 69 78 74 68 20 70 61 72 61 6d 65 74 65  h sixth paramete
28980 72 73 0a 2a 2a 20 74 6f 20 74 68 65 20 63 61 6c  rs.** to the cal
28990 6c 62 61 63 6b 20 61 72 65 20 65 69 74 68 65 72  lback are either
289a0 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 73 20 6f   NULL pointers o
289b0 72 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65  r zero-terminate
289c0 64 20 73 74 72 69 6e 67 73 0a 2a 2a 20 74 68 61  d strings.** tha
289d0 74 20 63 6f 6e 74 61 69 6e 20 61 64 64 69 74 69  t contain additi
289e0 6f 6e 61 6c 20 64 65 74 61 69 6c 73 20 61 62 6f  onal details abo
289f0 75 74 20 74 68 65 20 61 63 74 69 6f 6e 20 74 6f  ut the action to
28a00 20 62 65 20 61 75 74 68 6f 72 69 7a 65 64 2e 0a   be authorized..
28a10 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  ** Applications 
28a20 6d 75 73 74 20 61 6c 77 61 79 73 20 62 65 20 70  must always be p
28a30 72 65 70 61 72 65 64 20 74 6f 20 65 6e 63 6f 75  repared to encou
28a40 6e 74 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  nter a NULL poin
28a50 74 65 72 20 69 6e 20 61 6e 79 0a 2a 2a 20 6f 66  ter in any.** of
28a60 20 74 68 65 20 74 68 69 72 64 20 74 68 72 6f 75   the third throu
28a70 67 68 20 74 68 65 20 73 69 78 74 68 20 70 61 72  gh the sixth par
28a80 61 6d 65 74 65 72 73 20 6f 66 20 74 68 65 20 61  ameters of the a
28a90 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63 61 6c  uthorization cal
28aa0 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  lback..**.** ^If
28ab0 20 74 68 65 20 61 63 74 69 6f 6e 20 63 6f 64 65   the action code
28ac0 20 69 73 20 5b 53 51 4c 49 54 45 5f 52 45 41 44   is [SQLITE_READ
28ad0 5d 0a 2a 2a 20 61 6e 64 20 74 68 65 20 63 61 6c  ].** and the cal
28ae0 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 5b 53  lback returns [S
28af0 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20 74 68  QLITE_IGNORE] th
28b00 65 6e 20 74 68 65 0a 2a 2a 20 5b 70 72 65 70 61  en the.** [prepa
28b10 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 73  red statement] s
28b20 74 61 74 65 6d 65 6e 74 20 69 73 20 63 6f 6e 73  tatement is cons
28b30 74 72 75 63 74 65 64 20 74 6f 20 73 75 62 73 74  tructed to subst
28b40 69 74 75 74 65 0a 2a 2a 20 61 20 4e 55 4c 4c 20  itute.** a NULL 
28b50 76 61 6c 75 65 20 69 6e 20 70 6c 61 63 65 20 6f  value in place o
28b60 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6c 75  f the table colu
28b70 6d 6e 20 74 68 61 74 20 77 6f 75 6c 64 20 68 61  mn that would ha
28b80 76 65 0a 2a 2a 20 62 65 65 6e 20 72 65 61 64 20  ve.** been read 
28b90 69 66 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 68  if [SQLITE_OK] h
28ba0 61 64 20 62 65 65 6e 20 72 65 74 75 72 6e 65 64  ad been returned
28bb0 2e 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 49  .  The [SQLITE_I
28bc0 47 4e 4f 52 45 5d 0a 2a 2a 20 72 65 74 75 72 6e  GNORE].** return
28bd0 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
28be0 64 65 6e 79 20 61 6e 20 75 6e 74 72 75 73 74 65  deny an untruste
28bf0 64 20 75 73 65 72 20 61 63 63 65 73 73 20 74 6f  d user access to
28c00 20 69 6e 64 69 76 69 64 75 61 6c 0a 2a 2a 20 63   individual.** c
28c10 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c  olumns of a tabl
28c20 65 2e 0a 2a 2a 20 5e 57 68 65 6e 20 61 20 74 61  e..** ^When a ta
28c30 62 6c 65 20 69 73 20 72 65 66 65 72 65 6e 63 65  ble is reference
28c40 64 20 62 79 20 61 20 5b 53 45 4c 45 43 54 5d 20  d by a [SELECT] 
28c50 62 75 74 20 6e 6f 20 63 6f 6c 75 6d 6e 20 76 61  but no column va
28c60 6c 75 65 73 20 61 72 65 0a 2a 2a 20 65 78 74 72  lues are.** extr
28c70 61 63 74 65 64 20 66 72 6f 6d 20 74 68 61 74 20  acted from that 
28c80 74 61 62 6c 65 20 28 66 6f 72 20 65 78 61 6d 70  table (for examp
28c90 6c 65 20 69 6e 20 61 20 71 75 65 72 79 20 6c 69  le in a query li
28ca0 6b 65 0a 2a 2a 20 22 53 45 4c 45 43 54 20 63 6f  ke.** "SELECT co
28cb0 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62 22  unt(*) FROM tab"
28cc0 29 20 74 68 65 6e 20 74 68 65 20 5b 53 51 4c 49  ) then the [SQLI
28cd0 54 45 5f 52 45 41 44 5d 20 61 75 74 68 6f 72 69  TE_READ] authori
28ce0 7a 65 72 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20  zer callback.** 
28cf0 69 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20  is invoked once 
28d00 66 6f 72 20 74 68 61 74 20 74 61 62 6c 65 20 77  for that table w
28d10 69 74 68 20 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d  ith a column nam
28d20 65 20 74 68 61 74 20 69 73 20 61 6e 20 65 6d 70  e that is an emp
28d30 74 79 20 73 74 72 69 6e 67 2e 0a 2a 2a 20 5e 49  ty string..** ^I
28d40 66 20 74 68 65 20 61 63 74 69 6f 6e 20 63 6f 64  f the action cod
28d50 65 20 69 73 20 5b 53 51 4c 49 54 45 5f 44 45 4c  e is [SQLITE_DEL
28d60 45 54 45 5d 20 61 6e 64 20 74 68 65 20 63 61 6c  ETE] and the cal
28d70 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 0a 2a 2a  lback returns.**
28d80 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d   [SQLITE_IGNORE]
28d90 20 74 68 65 6e 20 74 68 65 20 5b 44 45 4c 45 54   then the [DELET
28da0 45 5d 20 6f 70 65 72 61 74 69 6f 6e 20 70 72 6f  E] operation pro
28db0 63 65 65 64 73 20 62 75 74 20 74 68 65 0a 2a 2a  ceeds but the.**
28dc0 20 5b 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d   [truncate optim
28dd0 69 7a 61 74 69 6f 6e 5d 20 69 73 20 64 69 73 61  ization] is disa
28de0 62 6c 65 64 20 61 6e 64 20 61 6c 6c 20 72 6f 77  bled and all row
28df0 73 20 61 72 65 20 64 65 6c 65 74 65 64 20 69 6e  s are deleted in
28e00 64 69 76 69 64 75 61 6c 6c 79 2e 0a 2a 2a 0a 2a  dividually..**.*
28e10 2a 20 41 6e 20 61 75 74 68 6f 72 69 7a 65 72 20  * An authorizer 
28e20 69 73 20 75 73 65 64 20 77 68 65 6e 20 5b 73 71  is used when [sq
28e30 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20 7c 20  lite3_prepare | 
28e40 70 72 65 70 61 72 69 6e 67 5d 0a 2a 2a 20 53 51  preparing].** SQ
28e50 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 66 72 6f  L statements fro
28e60 6d 20 61 6e 20 75 6e 74 72 75 73 74 65 64 20 73  m an untrusted s
28e70 6f 75 72 63 65 2c 20 74 6f 20 65 6e 73 75 72 65  ource, to ensure
28e80 20 74 68 61 74 20 74 68 65 20 53 51 4c 20 73 74   that the SQL st
28e90 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 64 6f 20 6e  atements.** do n
28ea0 6f 74 20 74 72 79 20 74 6f 20 61 63 63 65 73 73  ot try to access
28eb0 20 64 61 74 61 20 74 68 65 79 20 61 72 65 20 6e   data they are n
28ec0 6f 74 20 61 6c 6c 6f 77 65 64 20 74 6f 20 73 65  ot allowed to se
28ed0 65 2c 20 6f 72 20 74 68 61 74 20 74 68 65 79 20  e, or that they 
28ee0 64 6f 20 6e 6f 74 0a 2a 2a 20 74 72 79 20 74 6f  do not.** try to
28ef0 20 65 78 65 63 75 74 65 20 6d 61 6c 69 63 69 6f   execute malicio
28f00 75 73 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68  us statements th
28f10 61 74 20 64 61 6d 61 67 65 20 74 68 65 20 64 61  at damage the da
28f20 74 61 62 61 73 65 2e 20 20 46 6f 72 0a 2a 2a 20  tabase.  For.** 
28f30 65 78 61 6d 70 6c 65 2c 20 61 6e 20 61 70 70 6c  example, an appl
28f40 69 63 61 74 69 6f 6e 20 6d 61 79 20 61 6c 6c 6f  ication may allo
28f50 77 20 61 20 75 73 65 72 20 74 6f 20 65 6e 74 65  w a user to ente
28f60 72 20 61 72 62 69 74 72 61 72 79 0a 2a 2a 20 53  r arbitrary.** S
28f70 51 4c 20 71 75 65 72 69 65 73 20 66 6f 72 20 65  QL queries for e
28f80 76 61 6c 75 61 74 69 6f 6e 20 62 79 20 61 20 64  valuation by a d
28f90 61 74 61 62 61 73 65 2e 20 20 42 75 74 20 74 68  atabase.  But th
28fa0 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f  e application do
28fb0 65 73 0a 2a 2a 20 6e 6f 74 20 77 61 6e 74 20 74  es.** not want t
28fc0 68 65 20 75 73 65 72 20 74 6f 20 62 65 20 61 62  he user to be ab
28fd0 6c 65 20 74 6f 20 6d 61 6b 65 20 61 72 62 69 74  le to make arbit
28fe0 72 61 72 79 20 63 68 61 6e 67 65 73 20 74 6f 20  rary changes to 
28ff0 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 2e  the.** database.
29000 20 20 41 6e 20 61 75 74 68 6f 72 69 7a 65 72 20    An authorizer 
29010 63 6f 75 6c 64 20 74 68 65 6e 20 62 65 20 70 75  could then be pu
29020 74 20 69 6e 20 70 6c 61 63 65 20 77 68 69 6c 65  t in place while
29030 20 74 68 65 0a 2a 2a 20 75 73 65 72 2d 65 6e 74   the.** user-ent
29040 65 72 65 64 20 53 51 4c 20 69 73 20 62 65 69 6e  ered SQL is bein
29050 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  g [sqlite3_prepa
29060 72 65 20 7c 20 70 72 65 70 61 72 65 64 5d 20 74  re | prepared] t
29070 68 61 74 0a 2a 2a 20 64 69 73 61 6c 6c 6f 77 73  hat.** disallows
29080 20 65 76 65 72 79 74 68 69 6e 67 20 65 78 63 65   everything exce
29090 70 74 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74  pt [SELECT] stat
290a0 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 41 70  ements..**.** Ap
290b0 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20  plications that 
290c0 6e 65 65 64 20 74 6f 20 70 72 6f 63 65 73 73 20  need to process 
290d0 53 51 4c 20 66 72 6f 6d 20 75 6e 74 72 75 73 74  SQL from untrust
290e0 65 64 20 73 6f 75 72 63 65 73 0a 2a 2a 20 6d 69  ed sources.** mi
290f0 67 68 74 20 61 6c 73 6f 20 63 6f 6e 73 69 64 65  ght also conside
29100 72 20 6c 6f 77 65 72 69 6e 67 20 72 65 73 6f 75  r lowering resou
29110 72 63 65 20 6c 69 6d 69 74 73 20 75 73 69 6e 67  rce limits using
29120 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28   [sqlite3_limit(
29130 29 5d 0a 2a 2a 20 61 6e 64 20 6c 69 6d 69 74 69  )].** and limiti
29140 6e 67 20 64 61 74 61 62 61 73 65 20 73 69 7a 65  ng database size
29150 20 75 73 69 6e 67 20 74 68 65 20 5b 6d 61 78 5f   using the [max_
29160 70 61 67 65 5f 63 6f 75 6e 74 5d 20 5b 50 52 41  page_count] [PRA
29170 47 4d 41 5d 0a 2a 2a 20 69 6e 20 61 64 64 69 74  GMA].** in addit
29180 69 6f 6e 20 74 6f 20 75 73 69 6e 67 20 61 6e 20  ion to using an 
29190 61 75 74 68 6f 72 69 7a 65 72 2e 0a 2a 2a 0a 2a  authorizer..**.*
291a0 2a 20 5e 28 4f 6e 6c 79 20 61 20 73 69 6e 67 6c  * ^(Only a singl
291b0 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6e  e authorizer can
291c0 20 62 65 20 69 6e 20 70 6c 61 63 65 20 6f 6e 20   be in place on 
291d0 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  a database conne
291e0 63 74 69 6f 6e 0a 2a 2a 20 61 74 20 61 20 74 69  ction.** at a ti
291f0 6d 65 2e 20 20 45 61 63 68 20 63 61 6c 6c 20 74  me.  Each call t
29200 6f 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  o sqlite3_set_au
29210 74 68 6f 72 69 7a 65 72 20 6f 76 65 72 72 69 64  thorizer overrid
29220 65 73 20 74 68 65 0a 2a 2a 20 70 72 65 76 69 6f  es the.** previo
29230 75 73 20 63 61 6c 6c 2e 29 5e 20 20 5e 44 69 73  us call.)^  ^Dis
29240 61 62 6c 65 20 74 68 65 20 61 75 74 68 6f 72 69  able the authori
29250 7a 65 72 20 62 79 20 69 6e 73 74 61 6c 6c 69 6e  zer by installin
29260 67 20 61 20 4e 55 4c 4c 20 63 61 6c 6c 62 61 63  g a NULL callbac
29270 6b 2e 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72  k..** The author
29280 69 7a 65 72 20 69 73 20 64 69 73 61 62 6c 65 64  izer is disabled
29290 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 2a 2a 0a   by default..**.
292a0 2a 2a 20 54 68 65 20 61 75 74 68 6f 72 69 7a 65  ** The authorize
292b0 72 20 63 61 6c 6c 62 61 63 6b 20 6d 75 73 74 20  r callback must 
292c0 6e 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e 67 20  not do anything 
292d0 74 68 61 74 20 77 69 6c 6c 20 6d 6f 64 69 66 79  that will modify
292e0 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61 73 65  .** the database
292f0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74   connection that
29300 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 61 75 74   invoked the aut
29310 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b  horizer callback
29320 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b  ..** Note that [
29330 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
29340 76 32 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  v2()] and [sqlit
29350 65 33 5f 73 74 65 70 28 29 5d 20 62 6f 74 68 20  e3_step()] both 
29360 6d 6f 64 69 66 79 20 74 68 65 69 72 0a 2a 2a 20  modify their.** 
29370 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
29380 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6d 65 61  ions for the mea
29390 6e 69 6e 67 20 6f 66 20 22 6d 6f 64 69 66 79 22  ning of "modify"
293a0 20 69 6e 20 74 68 69 73 20 70 61 72 61 67 72 61   in this paragra
293b0 70 68 2e 0a 2a 2a 0a 2a 2a 20 5e 57 68 65 6e 20  ph..**.** ^When 
293c0 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
293d0 5f 76 32 28 29 5d 20 69 73 20 75 73 65 64 20 74  _v2()] is used t
293e0 6f 20 70 72 65 70 61 72 65 20 61 20 73 74 61 74  o prepare a stat
293f0 65 6d 65 6e 74 2c 20 74 68 65 0a 2a 2a 20 73 74  ement, the.** st
29400 61 74 65 6d 65 6e 74 20 6d 69 67 68 74 20 62 65  atement might be
29410 20 72 65 2d 70 72 65 70 61 72 65 64 20 64 75 72   re-prepared dur
29420 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  ing [sqlite3_ste
29430 70 28 29 5d 20 64 75 65 20 74 6f 20 61 20 0a 2a  p()] due to a .*
29440 2a 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 2e  * schema change.
29450 20 20 48 65 6e 63 65 2c 20 74 68 65 20 61 70 70    Hence, the app
29460 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20  lication should 
29470 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 0a  ensure that the.
29480 2a 2a 20 63 6f 72 72 65 63 74 20 61 75 74 68 6f  ** correct autho
29490 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 72  rizer callback r
294a0 65 6d 61 69 6e 73 20 69 6e 20 70 6c 61 63 65 20  emains in place 
294b0 64 75 72 69 6e 67 20 74 68 65 20 5b 73 71 6c 69  during the [sqli
294c0 74 65 33 5f 73 74 65 70 28 29 5d 2e 0a 2a 2a 0a  te3_step()]..**.
294d0 2a 2a 20 5e 4e 6f 74 65 20 74 68 61 74 20 74 68  ** ^Note that th
294e0 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  e authorizer cal
294f0 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
29500 20 6f 6e 6c 79 20 64 75 72 69 6e 67 0a 2a 2a 20   only during.** 
29510 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
29520 28 29 5d 20 6f 72 20 69 74 73 20 76 61 72 69 61  ()] or its varia
29530 6e 74 73 2e 20 20 41 75 74 68 6f 72 69 7a 61 74  nts.  Authorizat
29540 69 6f 6e 20 69 73 20 6e 6f 74 0a 2a 2a 20 70 65  ion is not.** pe
29550 72 66 6f 72 6d 65 64 20 64 75 72 69 6e 67 20 73  rformed during s
29560 74 61 74 65 6d 65 6e 74 20 65 76 61 6c 75 61 74  tatement evaluat
29570 69 6f 6e 20 69 6e 20 5b 73 71 6c 69 74 65 33 5f  ion in [sqlite3_
29580 73 74 65 70 28 29 5d 2c 20 75 6e 6c 65 73 73 0a  step()], unless.
29590 2a 2a 20 61 73 20 73 74 61 74 65 64 20 69 6e 20  ** as stated in 
295a0 74 68 65 20 70 72 65 76 69 6f 75 73 20 70 61 72  the previous par
295b0 61 67 72 61 70 68 2c 20 73 71 6c 69 74 65 33 5f  agraph, sqlite3_
295c0 73 74 65 70 28 29 20 69 6e 76 6f 6b 65 73 0a 2a  step() invokes.*
295d0 2a 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  * sqlite3_prepar
295e0 65 5f 76 32 28 29 20 74 6f 20 72 65 70 72 65 70  e_v2() to reprep
295f0 61 72 65 20 61 20 73 74 61 74 65 6d 65 6e 74 20  are a statement 
29600 61 66 74 65 72 20 61 20 73 63 68 65 6d 61 20 63  after a schema c
29610 68 61 6e 67 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45  hange..*/.SQLITE
29620 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
29630 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28  _set_authorizer(
29640 0a 20 20 73 71 6c 69 74 65 33 2a 2c 0a 20 20 69  .  sqlite3*,.  i
29650 6e 74 20 28 2a 78 41 75 74 68 29 28 76 6f 69 64  nt (*xAuth)(void
29660 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 63 68 61 72  *,int,const char
29670 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f  *,const char*,co
29680 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20  nst char*,const 
29690 63 68 61 72 2a 29 2c 0a 20 20 76 6f 69 64 20 2a  char*),.  void *
296a0 70 55 73 65 72 44 61 74 61 0a 29 3b 0a 0a 2f 2a  pUserData.);../*
296b0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 41 75  .** CAPI3REF: Au
296c0 74 68 6f 72 69 7a 65 72 20 52 65 74 75 72 6e 20  thorizer Return 
296d0 43 6f 64 65 73 0a 2a 2a 0a 2a 2a 20 54 68 65 20  Codes.**.** The 
296e0 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74  [sqlite3_set_aut
296f0 68 6f 72 69 7a 65 72 20 7c 20 61 75 74 68 6f 72  horizer | author
29700 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 66 75  izer callback fu
29710 6e 63 74 69 6f 6e 5d 20 6d 75 73 74 0a 2a 2a 20  nction] must.** 
29720 72 65 74 75 72 6e 20 65 69 74 68 65 72 20 5b 53  return either [S
29730 51 4c 49 54 45 5f 4f 4b 5d 20 6f 72 20 6f 6e 65  QLITE_OK] or one
29740 20 6f 66 20 74 68 65 73 65 20 74 77 6f 20 63 6f   of these two co
29750 6e 73 74 61 6e 74 73 20 69 6e 20 6f 72 64 65 72  nstants in order
29760 0a 2a 2a 20 74 6f 20 73 69 67 6e 61 6c 20 53 51  .** to signal SQ
29770 4c 69 74 65 20 77 68 65 74 68 65 72 20 6f 72 20  Lite whether or 
29780 6e 6f 74 20 74 68 65 20 61 63 74 69 6f 6e 20 69  not the action i
29790 73 20 70 65 72 6d 69 74 74 65 64 2e 20 20 53 65  s permitted.  Se
297a0 65 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65  e the.** [sqlite
297b0 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
297c0 20 7c 20 61 75 74 68 6f 72 69 7a 65 72 20 64 6f   | authorizer do
297d0 63 75 6d 65 6e 74 61 74 69 6f 6e 5d 20 66 6f 72  cumentation] for
297e0 20 61 64 64 69 74 69 6f 6e 61 6c 0a 2a 2a 20 69   additional.** i
297f0 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a  nformation..**.*
29800 2a 20 4e 6f 74 65 20 74 68 61 74 20 53 51 4c 49  * Note that SQLI
29810 54 45 5f 49 47 4e 4f 52 45 20 69 73 20 61 6c 73  TE_IGNORE is als
29820 6f 20 75 73 65 64 20 61 73 20 61 20 5b 63 6f 6e  o used as a [con
29830 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
29840 20 6d 6f 64 65 5d 0a 2a 2a 20 72 65 74 75 72 6e   mode].** return
29850 65 64 20 66 72 6f 6d 20 74 68 65 20 5b 73 71 6c  ed from the [sql
29860 69 74 65 33 5f 76 74 61 62 5f 6f 6e 5f 63 6f 6e  ite3_vtab_on_con
29870 66 6c 69 63 74 28 29 5d 20 69 6e 74 65 72 66 61  flict()] interfa
29880 63 65 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ce..*/.#define S
29890 51 4c 49 54 45 5f 44 45 4e 59 20 20 20 31 20 20  QLITE_DENY   1  
298a0 20 2f 2a 20 41 62 6f 72 74 20 74 68 65 20 53 51   /* Abort the SQ
298b0 4c 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68  L statement with
298c0 20 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65   an error */.#de
298d0 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 47 4e 4f  fine SQLITE_IGNO
298e0 52 45 20 32 20 20 20 2f 2a 20 44 6f 6e 27 74 20  RE 2   /* Don't 
298f0 61 6c 6c 6f 77 20 61 63 63 65 73 73 2c 20 62 75  allow access, bu
29900 74 20 64 6f 6e 27 74 20 67 65 6e 65 72 61 74 65  t don't generate
29910 20 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 0a 2f 2a   an error */../*
29920 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 41 75  .** CAPI3REF: Au
29930 74 68 6f 72 69 7a 65 72 20 41 63 74 69 6f 6e 20  thorizer Action 
29940 43 6f 64 65 73 0a 2a 2a 0a 2a 2a 20 54 68 65 20  Codes.**.** The 
29950 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74  [sqlite3_set_aut
29960 68 6f 72 69 7a 65 72 28 29 5d 20 69 6e 74 65 72  horizer()] inter
29970 66 61 63 65 20 72 65 67 69 73 74 65 72 73 20 61  face registers a
29980 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   callback functi
29990 6f 6e 0a 2a 2a 20 74 68 61 74 20 69 73 20 69 6e  on.** that is in
299a0 76 6f 6b 65 64 20 74 6f 20 61 75 74 68 6f 72 69  voked to authori
299b0 7a 65 20 63 65 72 74 61 69 6e 20 53 51 4c 20 73  ze certain SQL s
299c0 74 61 74 65 6d 65 6e 74 20 61 63 74 69 6f 6e 73  tatement actions
299d0 2e 20 20 54 68 65 0a 2a 2a 20 73 65 63 6f 6e 64  .  The.** second
299e0 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68   parameter to th
299f0 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e  e callback is an
29a00 20 69 6e 74 65 67 65 72 20 63 6f 64 65 20 74 68   integer code th
29a10 61 74 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20  at specifies.** 
29a20 77 68 61 74 20 61 63 74 69 6f 6e 20 69 73 20 62  what action is b
29a30 65 69 6e 67 20 61 75 74 68 6f 72 69 7a 65 64 2e  eing authorized.
29a40 20 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20    These are the 
29a50 69 6e 74 65 67 65 72 20 61 63 74 69 6f 6e 20 63  integer action c
29a60 6f 64 65 73 20 74 68 61 74 0a 2a 2a 20 74 68 65  odes that.** the
29a70 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
29a80 62 61 63 6b 20 6d 61 79 20 62 65 20 70 61 73 73  back may be pass
29a90 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  ed..**.** These 
29aa0 61 63 74 69 6f 6e 20 63 6f 64 65 20 76 61 6c 75  action code valu
29ab0 65 73 20 73 69 67 6e 69 66 79 20 77 68 61 74 20  es signify what 
29ac0 6b 69 6e 64 20 6f 66 20 6f 70 65 72 61 74 69 6f  kind of operatio
29ad0 6e 20 69 73 20 74 6f 20 62 65 0a 2a 2a 20 61 75  n is to be.** au
29ae0 74 68 6f 72 69 7a 65 64 2e 20 20 54 68 65 20 33  thorized.  The 3
29af0 72 64 20 61 6e 64 20 34 74 68 20 70 61 72 61 6d  rd and 4th param
29b00 65 74 65 72 73 20 74 6f 20 74 68 65 20 61 75 74  eters to the aut
29b10 68 6f 72 69 7a 61 74 69 6f 6e 0a 2a 2a 20 63 61  horization.** ca
29b20 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
29b30 77 69 6c 6c 20 62 65 20 70 61 72 61 6d 65 74 65  will be paramete
29b40 72 73 20 6f 72 20 4e 55 4c 4c 20 64 65 70 65 6e  rs or NULL depen
29b50 64 69 6e 67 20 6f 6e 20 77 68 69 63 68 20 6f 66  ding on which of
29b60 20 74 68 65 73 65 0a 2a 2a 20 63 6f 64 65 73 20   these.** codes 
29b70 69 73 20 75 73 65 64 20 61 73 20 74 68 65 20 73  is used as the s
29b80 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 2e  econd parameter.
29b90 20 20 5e 28 54 68 65 20 35 74 68 20 70 61 72 61    ^(The 5th para
29ba0 6d 65 74 65 72 20 74 6f 20 74 68 65 0a 2a 2a 20  meter to the.** 
29bb0 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
29bc0 61 63 6b 20 69 73 20 74 68 65 20 6e 61 6d 65 20  ack is the name 
29bd0 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  of the database 
29be0 28 22 6d 61 69 6e 22 2c 20 22 74 65 6d 70 22 2c  ("main", "temp",
29bf0 0a 2a 2a 20 65 74 63 2e 29 20 69 66 20 61 70 70  .** etc.) if app
29c00 6c 69 63 61 62 6c 65 2e 29 5e 20 20 5e 54 68 65  licable.)^  ^The
29c10 20 36 74 68 20 70 61 72 61 6d 65 74 65 72 20 74   6th parameter t
29c20 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  o the authorizer
29c30 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20   callback.** is 
29c40 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
29c50 69 6e 6e 65 72 2d 6d 6f 73 74 20 74 72 69 67 67  inner-most trigg
29c60 65 72 20 6f 72 20 76 69 65 77 20 74 68 61 74 20  er or view that 
29c70 69 73 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66  is responsible f
29c80 6f 72 0a 2a 2a 20 74 68 65 20 61 63 63 65 73 73  or.** the access
29c90 20 61 74 74 65 6d 70 74 20 6f 72 20 4e 55 4c 4c   attempt or NULL
29ca0 20 69 66 20 74 68 69 73 20 61 63 63 65 73 73 20   if this access 
29cb0 61 74 74 65 6d 70 74 20 69 73 20 64 69 72 65 63  attempt is direc
29cc0 74 6c 79 20 66 72 6f 6d 0a 2a 2a 20 74 6f 70 2d  tly from.** top-
29cd0 6c 65 76 65 6c 20 53 51 4c 20 63 6f 64 65 2e 0a  level SQL code..
29ce0 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  */./************
29cf0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
29d00 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  *************** 
29d10 33 72 64 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  3rd ************
29d20 20 34 74 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   4th ***********
29d30 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
29d40 5f 43 52 45 41 54 45 5f 49 4e 44 45 58 20 20 20  _CREATE_INDEX   
29d50 20 20 20 20 20 20 20 31 20 20 20 2f 2a 20 49 6e         1   /* In
29d60 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61  dex Name      Ta
29d70 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
29d80 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
29d90 43 52 45 41 54 45 5f 54 41 42 4c 45 20 20 20 20  CREATE_TABLE    
29da0 20 20 20 20 20 20 32 20 20 20 2f 2a 20 54 61 62        2   /* Tab
29db0 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
29dc0 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
29dd0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
29de0 52 45 41 54 45 5f 54 45 4d 50 5f 49 4e 44 45 58  REATE_TEMP_INDEX
29df0 20 20 20 20 20 33 20 20 20 2f 2a 20 49 6e 64 65       3   /* Inde
29e00 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c  x Name      Tabl
29e10 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23  e Name      */.#
29e20 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52  define SQLITE_CR
29e30 45 41 54 45 5f 54 45 4d 50 5f 54 41 42 4c 45 20  EATE_TEMP_TABLE 
29e40 20 20 20 20 34 20 20 20 2f 2a 20 54 61 62 6c 65      4   /* Table
29e50 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20   Name      NULL 
29e60 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
29e70 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45  efine SQLITE_CRE
29e80 41 54 45 5f 54 45 4d 50 5f 54 52 49 47 47 45 52  ATE_TEMP_TRIGGER
29e90 20 20 20 35 20 20 20 2f 2a 20 54 72 69 67 67 65     5   /* Trigge
29ea0 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20  r Name    Table 
29eb0 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65  Name      */.#de
29ec0 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41  fine SQLITE_CREA
29ed0 54 45 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20  TE_TEMP_VIEW    
29ee0 20 20 36 20 20 20 2f 2a 20 56 69 65 77 20 4e 61    6   /* View Na
29ef0 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  me       NULL   
29f00 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
29f10 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
29f20 45 5f 54 52 49 47 47 45 52 20 20 20 20 20 20 20  E_TRIGGER       
29f30 20 37 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20   7   /* Trigger 
29f40 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61  Name    Table Na
29f50 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  me      */.#defi
29f60 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
29f70 5f 56 49 45 57 20 20 20 20 20 20 20 20 20 20 20  _VIEW           
29f80 38 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65  8   /* View Name
29f90 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
29fa0 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
29fb0 65 20 53 51 4c 49 54 45 5f 44 45 4c 45 54 45 20  e SQLITE_DELETE 
29fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 39                 9
29fd0 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
29fe0 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
29ff0 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2a000 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 49 4e 44   SQLITE_DROP_IND
2a010 45 58 20 20 20 20 20 20 20 20 20 20 20 31 30 20  EX           10 
2a020 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20    /* Index Name 
2a030 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20       Table Name 
2a040 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2a050 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 41 42 4c  SQLITE_DROP_TABL
2a060 45 20 20 20 20 20 20 20 20 20 20 20 31 31 20 20  E           11  
2a070 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
2a080 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2a090 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2a0a0 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f  QLITE_DROP_TEMP_
2a0b0 49 4e 44 45 58 20 20 20 20 20 20 31 32 20 20 20  INDEX      12   
2a0c0 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20  /* Index Name   
2a0d0 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
2a0e0 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2a0f0 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 54  LITE_DROP_TEMP_T
2a100 41 42 4c 45 20 20 20 20 20 20 31 33 20 20 20 2f  ABLE      13   /
2a110 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
2a120 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
2a130 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2a140 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 54 52  ITE_DROP_TEMP_TR
2a150 49 47 47 45 52 20 20 20 20 31 34 20 20 20 2f 2a  IGGER    14   /*
2a160 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20   Trigger Name   
2a170 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2a180 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2a190 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 56 49 45  TE_DROP_TEMP_VIE
2a1a0 57 20 20 20 20 20 20 20 31 35 20 20 20 2f 2a 20  W       15   /* 
2a1b0 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20  View Name       
2a1c0 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
2a1d0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2a1e0 45 5f 44 52 4f 50 5f 54 52 49 47 47 45 52 20 20  E_DROP_TRIGGER  
2a1f0 20 20 20 20 20 20 20 31 36 20 20 20 2f 2a 20 54         16   /* T
2a200 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54  rigger Name    T
2a210 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
2a220 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2a230 5f 44 52 4f 50 5f 56 49 45 57 20 20 20 20 20 20  _DROP_VIEW      
2a240 20 20 20 20 20 20 31 37 20 20 20 2f 2a 20 56 69        17   /* Vi
2a250 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55  ew Name       NU
2a260 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
2a270 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2a280 49 4e 53 45 52 54 20 20 20 20 20 20 20 20 20 20  INSERT          
2a290 20 20 20 20 20 31 38 20 20 20 2f 2a 20 54 61 62       18   /* Tab
2a2a0 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
2a2b0 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
2a2c0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50  #define SQLITE_P
2a2d0 52 41 47 4d 41 20 20 20 20 20 20 20 20 20 20 20  RAGMA           
2a2e0 20 20 20 20 31 39 20 20 20 2f 2a 20 50 72 61 67      19   /* Prag
2a2f0 6d 61 20 4e 61 6d 65 20 20 20 20 20 31 73 74 20  ma Name     1st 
2a300 61 72 67 20 6f 72 20 4e 55 4c 4c 20 2a 2f 0a 23  arg or NULL */.#
2a310 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45  define SQLITE_RE
2a320 41 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20  AD              
2a330 20 20 20 32 30 20 20 20 2f 2a 20 54 61 62 6c 65     20   /* Table
2a340 20 4e 61 6d 65 20 20 20 20 20 20 43 6f 6c 75 6d   Name      Colum
2a350 6e 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64  n Name     */.#d
2a360 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 45 4c  efine SQLITE_SEL
2a370 45 43 54 20 20 20 20 20 20 20 20 20 20 20 20 20  ECT             
2a380 20 20 32 31 20 20 20 2f 2a 20 4e 55 4c 4c 20 20    21   /* NULL  
2a390 20 20 20 20 20 20 20 20 20 20 4e 55 4c 4c 20 20            NULL  
2a3a0 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
2a3b0 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 4e  fine SQLITE_TRAN
2a3c0 53 41 43 54 49 4f 4e 20 20 20 20 20 20 20 20 20  SACTION         
2a3d0 20 32 32 20 20 20 2f 2a 20 4f 70 65 72 61 74 69   22   /* Operati
2a3e0 6f 6e 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  on       NULL   
2a3f0 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
2a400 69 6e 65 20 53 51 4c 49 54 45 5f 55 50 44 41 54  ine SQLITE_UPDAT
2a410 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
2a420 32 33 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61  23   /* Table Na
2a430 6d 65 20 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e  me      Column N
2a440 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  ame     */.#defi
2a450 6e 65 20 53 51 4c 49 54 45 5f 41 54 54 41 43 48  ne SQLITE_ATTACH
2a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
2a470 34 20 20 20 2f 2a 20 46 69 6c 65 6e 61 6d 65 20  4   /* Filename 
2a480 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
2a490 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
2a4a0 65 20 53 51 4c 49 54 45 5f 44 45 54 41 43 48 20  e SQLITE_DETACH 
2a4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 35                25
2a4c0 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 4e     /* Database N
2a4d0 61 6d 65 20 20 20 4e 55 4c 4c 20 20 20 20 20 20  ame   NULL      
2a4e0 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2a4f0 20 53 51 4c 49 54 45 5f 41 4c 54 45 52 5f 54 41   SQLITE_ALTER_TA
2a500 42 4c 45 20 20 20 20 20 20 20 20 20 20 32 36 20  BLE          26 
2a510 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 4e 61    /* Database Na
2a520 6d 65 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20  me   Table Name 
2a530 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2a540 53 51 4c 49 54 45 5f 52 45 49 4e 44 45 58 20 20  SQLITE_REINDEX  
2a550 20 20 20 20 20 20 20 20 20 20 20 20 32 37 20 20              27  
2a560 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20   /* Index Name  
2a570 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2a580 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2a590 51 4c 49 54 45 5f 41 4e 41 4c 59 5a 45 20 20 20  QLITE_ANALYZE   
2a5a0 20 20 20 20 20 20 20 20 20 20 20 32 38 20 20 20             28   
2a5b0 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20  /* Table Name   
2a5c0 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
2a5d0 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2a5e0 4c 49 54 45 5f 43 52 45 41 54 45 5f 56 54 41 42  LITE_CREATE_VTAB
2a5f0 4c 45 20 20 20 20 20 20 20 20 32 39 20 20 20 2f  LE        29   /
2a600 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
2a610 20 20 4d 6f 64 75 6c 65 20 4e 61 6d 65 20 20 20    Module Name   
2a620 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2a630 49 54 45 5f 44 52 4f 50 5f 56 54 41 42 4c 45 20  ITE_DROP_VTABLE 
2a640 20 20 20 20 20 20 20 20 20 33 30 20 20 20 2f 2a           30   /*
2a650 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2a660 20 4d 6f 64 75 6c 65 20 4e 61 6d 65 20 20 20 20   Module Name    
2a670 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2a680 54 45 5f 46 55 4e 43 54 49 4f 4e 20 20 20 20 20  TE_FUNCTION     
2a690 20 20 20 20 20 20 20 20 33 31 20 20 20 2f 2a 20          31   /* 
2a6a0 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
2a6b0 46 75 6e 63 74 69 6f 6e 20 4e 61 6d 65 20 20 20  Function Name   
2a6c0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2a6d0 45 5f 53 41 56 45 50 4f 49 4e 54 20 20 20 20 20  E_SAVEPOINT     
2a6e0 20 20 20 20 20 20 20 33 32 20 20 20 2f 2a 20 4f         32   /* O
2a6f0 70 65 72 61 74 69 6f 6e 20 20 20 20 20 20 20 53  peration       S
2a700 61 76 65 70 6f 69 6e 74 20 4e 61 6d 65 20 20 2a  avepoint Name  *
2a710 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2a720 5f 43 4f 50 59 20 20 20 20 20 20 20 20 20 20 20  _COPY           
2a730 20 20 20 20 20 20 20 30 20 20 20 2f 2a 20 4e 6f         0   /* No
2a740 20 6c 6f 6e 67 65 72 20 75 73 65 64 20 2a 2f 0a   longer used */.
2a750 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
2a760 45 43 55 52 53 49 56 45 20 20 20 20 20 20 20 20  ECURSIVE        
2a770 20 20 20 20 33 33 20 20 20 2f 2a 20 4e 55 4c 4c      33   /* NULL
2a780 20 20 20 20 20 20 20 20 20 20 20 20 4e 55 4c 4c              NULL
2a790 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 0a              */..
2a7a0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
2a7b0 54 72 61 63 69 6e 67 20 41 6e 64 20 50 72 6f 66  Tracing And Prof
2a7c0 69 6c 69 6e 67 20 46 75 6e 63 74 69 6f 6e 73 0a  iling Functions.
2a7d0 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
2a7e0 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72  e3.**.** These r
2a7f0 6f 75 74 69 6e 65 73 20 61 72 65 20 64 65 70 72  outines are depr
2a800 65 63 61 74 65 64 2e 20 55 73 65 20 74 68 65 20  ecated. Use the 
2a810 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76  [sqlite3_trace_v
2a820 32 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 2a  2()] interface.*
2a830 2a 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65  * instead of the
2a840 20 72 6f 75 74 69 6e 65 73 20 64 65 73 63 72 69   routines descri
2a850 62 65 64 20 68 65 72 65 2e 0a 2a 2a 0a 2a 2a 20  bed here..**.** 
2a860 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 72  These routines r
2a870 65 67 69 73 74 65 72 20 63 61 6c 6c 62 61 63 6b  egister callback
2a880 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20   functions that 
2a890 63 61 6e 20 62 65 20 75 73 65 64 20 66 6f 72 0a  can be used for.
2a8a0 2a 2a 20 74 72 61 63 69 6e 67 20 61 6e 64 20 70  ** tracing and p
2a8b0 72 6f 66 69 6c 69 6e 67 20 74 68 65 20 65 78 65  rofiling the exe
2a8c0 63 75 74 69 6f 6e 20 6f 66 20 53 51 4c 20 73 74  cution of SQL st
2a8d0 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20  atements..**.** 
2a8e0 5e 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75  ^The callback fu
2a8f0 6e 63 74 69 6f 6e 20 72 65 67 69 73 74 65 72 65  nction registere
2a900 64 20 62 79 20 73 71 6c 69 74 65 33 5f 74 72 61  d by sqlite3_tra
2a910 63 65 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 20  ce() is invoked 
2a920 61 74 0a 2a 2a 20 76 61 72 69 6f 75 73 20 74 69  at.** various ti
2a930 6d 65 73 20 77 68 65 6e 20 61 6e 20 53 51 4c 20  mes when an SQL 
2a940 73 74 61 74 65 6d 65 6e 74 20 69 73 20 62 65 69  statement is bei
2a950 6e 67 20 72 75 6e 20 62 79 20 5b 73 71 6c 69 74  ng run by [sqlit
2a960 65 33 5f 73 74 65 70 28 29 5d 2e 0a 2a 2a 20 5e  e3_step()]..** ^
2a970 54 68 65 20 73 71 6c 69 74 65 33 5f 74 72 61 63  The sqlite3_trac
2a980 65 28 29 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  e() callback is 
2a990 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 61 20 55  invoked with a U
2a9a0 54 46 2d 38 20 72 65 6e 64 65 72 69 6e 67 20 6f  TF-8 rendering o
2a9b0 66 20 74 68 65 0a 2a 2a 20 53 51 4c 20 73 74 61  f the.** SQL sta
2a9c0 74 65 6d 65 6e 74 20 74 65 78 74 20 61 73 20 74  tement text as t
2a9d0 68 65 20 73 74 61 74 65 6d 65 6e 74 20 66 69 72  he statement fir
2a9e0 73 74 20 62 65 67 69 6e 73 20 65 78 65 63 75 74  st begins execut
2a9f0 69 6e 67 2e 0a 2a 2a 20 5e 28 41 64 64 69 74 69  ing..** ^(Additi
2aa00 6f 6e 61 6c 20 73 71 6c 69 74 65 33 5f 74 72 61  onal sqlite3_tra
2aa10 63 65 28 29 20 63 61 6c 6c 62 61 63 6b 73 20 6d  ce() callbacks m
2aa20 69 67 68 74 20 6f 63 63 75 72 0a 2a 2a 20 61 73  ight occur.** as
2aa30 20 65 61 63 68 20 74 72 69 67 67 65 72 65 64 20   each triggered 
2aa40 73 75 62 70 72 6f 67 72 61 6d 20 69 73 20 65 6e  subprogram is en
2aa50 74 65 72 65 64 2e 20 20 54 68 65 20 63 61 6c 6c  tered.  The call
2aa60 62 61 63 6b 73 20 66 6f 72 20 74 72 69 67 67 65  backs for trigge
2aa70 72 73 0a 2a 2a 20 63 6f 6e 74 61 69 6e 20 61 20  rs.** contain a 
2aa80 55 54 46 2d 38 20 53 51 4c 20 63 6f 6d 6d 65 6e  UTF-8 SQL commen
2aa90 74 20 74 68 61 74 20 69 64 65 6e 74 69 66 69 65  t that identifie
2aaa0 73 20 74 68 65 20 74 72 69 67 67 65 72 2e 29 5e  s the trigger.)^
2aab0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  .**.** The [SQLI
2aac0 54 45 5f 54 52 41 43 45 5f 53 49 5a 45 5f 4c 49  TE_TRACE_SIZE_LI
2aad0 4d 49 54 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  MIT] compile-tim
2aae0 65 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20  e option can be 
2aaf0 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 0a 2a 2a  used to limit.**
2ab00 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 5b   the length of [
2ab10 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 5d  bound parameter]
2ab20 20 65 78 70 61 6e 73 69 6f 6e 20 69 6e 20 74 68   expansion in th
2ab30 65 20 6f 75 74 70 75 74 20 6f 66 20 73 71 6c 69  e output of sqli
2ab40 74 65 33 5f 74 72 61 63 65 28 29 2e 0a 2a 2a 0a  te3_trace()..**.
2ab50 2a 2a 20 5e 54 68 65 20 63 61 6c 6c 62 61 63 6b  ** ^The callback
2ab60 20 66 75 6e 63 74 69 6f 6e 20 72 65 67 69 73 74   function regist
2ab70 65 72 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  ered by sqlite3_
2ab80 70 72 6f 66 69 6c 65 28 29 20 69 73 20 69 6e 76  profile() is inv
2ab90 6f 6b 65 64 0a 2a 2a 20 61 73 20 65 61 63 68 20  oked.** as each 
2aba0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 66 69  SQL statement fi
2abb0 6e 69 73 68 65 73 2e 20 20 5e 54 68 65 20 70 72  nishes.  ^The pr
2abc0 6f 66 69 6c 65 20 63 61 6c 6c 62 61 63 6b 20 63  ofile callback c
2abd0 6f 6e 74 61 69 6e 73 0a 2a 2a 20 74 68 65 20 6f  ontains.** the o
2abe0 72 69 67 69 6e 61 6c 20 73 74 61 74 65 6d 65 6e  riginal statemen
2abf0 74 20 74 65 78 74 20 61 6e 64 20 61 6e 20 65 73  t text and an es
2ac00 74 69 6d 61 74 65 20 6f 66 20 77 61 6c 6c 2d 63  timate of wall-c
2ac10 6c 6f 63 6b 20 74 69 6d 65 0a 2a 2a 20 6f 66 20  lock time.** of 
2ac20 68 6f 77 20 6c 6f 6e 67 20 74 68 61 74 20 73 74  how long that st
2ac30 61 74 65 6d 65 6e 74 20 74 6f 6f 6b 20 74 6f 20  atement took to 
2ac40 72 75 6e 2e 20 20 5e 54 68 65 20 70 72 6f 66 69  run.  ^The profi
2ac50 6c 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 74  le callback.** t
2ac60 69 6d 65 20 69 73 20 69 6e 20 75 6e 69 74 73 20  ime is in units 
2ac70 6f 66 20 6e 61 6e 6f 73 65 63 6f 6e 64 73 2c 20  of nanoseconds, 
2ac80 68 6f 77 65 76 65 72 20 74 68 65 20 63 75 72 72  however the curr
2ac90 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ent implementati
2aca0 6f 6e 0a 2a 2a 20 69 73 20 6f 6e 6c 79 20 63 61  on.** is only ca
2acb0 70 61 62 6c 65 20 6f 66 20 6d 69 6c 6c 69 73 65  pable of millise
2acc0 63 6f 6e 64 20 72 65 73 6f 6c 75 74 69 6f 6e 20  cond resolution 
2acd0 73 6f 20 74 68 65 20 73 69 78 20 6c 65 61 73 74  so the six least
2ace0 20 73 69 67 6e 69 66 69 63 61 6e 74 0a 2a 2a 20   significant.** 
2acf0 64 69 67 69 74 73 20 69 6e 20 74 68 65 20 74 69  digits in the ti
2ad00 6d 65 20 61 72 65 20 6d 65 61 6e 69 6e 67 6c 65  me are meaningle
2ad10 73 73 2e 20 20 46 75 74 75 72 65 20 76 65 72 73  ss.  Future vers
2ad20 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 0a 2a  ions of SQLite.*
2ad30 2a 20 6d 69 67 68 74 20 70 72 6f 76 69 64 65 20  * might provide 
2ad40 67 72 65 61 74 65 72 20 72 65 73 6f 6c 75 74 69  greater resoluti
2ad50 6f 6e 20 6f 6e 20 74 68 65 20 70 72 6f 66 69 6c  on on the profil
2ad60 65 72 20 63 61 6c 6c 62 61 63 6b 2e 20 20 54 68  er callback.  Th
2ad70 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 6f  e.** sqlite3_pro
2ad80 66 69 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  file() function 
2ad90 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 65 78  is considered ex
2ada0 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 69  perimental and i
2adb0 73 0a 2a 2a 20 73 75 62 6a 65 63 74 20 74 6f 20  s.** subject to 
2adc0 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75 72 65  change in future
2add0 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
2ade0 69 74 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ite..*/.SQLITE_A
2adf0 50 49 20 53 51 4c 49 54 45 5f 44 45 50 52 45 43  PI SQLITE_DEPREC
2ae00 41 54 45 44 20 76 6f 69 64 20 2a 73 71 6c 69 74  ATED void *sqlit
2ae10 65 33 5f 74 72 61 63 65 28 73 71 6c 69 74 65 33  e3_trace(sqlite3
2ae20 2a 2c 0a 20 20 20 76 6f 69 64 28 2a 78 54 72 61  *,.   void(*xTra
2ae30 63 65 29 28 76 6f 69 64 2a 2c 63 6f 6e 73 74 20  ce)(void*,const 
2ae40 63 68 61 72 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a  char*), void*);.
2ae50 53 51 4c 49 54 45 5f 41 50 49 20 53 51 4c 49 54  SQLITE_API SQLIT
2ae60 45 5f 44 45 50 52 45 43 41 54 45 44 20 76 6f 69  E_DEPRECATED voi
2ae70 64 20 2a 73 71 6c 69 74 65 33 5f 70 72 6f 66 69  d *sqlite3_profi
2ae80 6c 65 28 73 71 6c 69 74 65 33 2a 2c 0a 20 20 20  le(sqlite3*,.   
2ae90 76 6f 69 64 28 2a 78 50 72 6f 66 69 6c 65 29 28  void(*xProfile)(
2aea0 76 6f 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72  void*,const char
2aeb0 2a 2c 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34  *,sqlite3_uint64
2aec0 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a  ), void*);../*.*
2aed0 2a 20 43 41 50 49 33 52 45 46 3a 20 53 51 4c 20  * CAPI3REF: SQL 
2aee0 54 72 61 63 65 20 45 76 65 6e 74 20 43 6f 64 65  Trace Event Code
2aef0 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 53  s.** KEYWORDS: S
2af00 51 4c 49 54 45 5f 54 52 41 43 45 0a 2a 2a 0a 2a  QLITE_TRACE.**.*
2af10 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e 74  * These constant
2af20 73 20 69 64 65 6e 74 69 66 79 20 63 6c 61 73 73  s identify class
2af30 65 73 20 6f 66 20 65 76 65 6e 74 73 20 74 68 61  es of events tha
2af40 74 20 63 61 6e 20 62 65 20 6d 6f 6e 69 74 6f 72  t can be monitor
2af50 65 64 0a 2a 2a 20 75 73 69 6e 67 20 74 68 65 20  ed.** using the 
2af60 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76  [sqlite3_trace_v
2af70 32 28 29 5d 20 74 72 61 63 69 6e 67 20 6c 6f 67  2()] tracing log
2af80 69 63 2e 20 20 54 68 65 20 4d 20 61 72 67 75 6d  ic.  The M argum
2af90 65 6e 74 0a 2a 2a 20 74 6f 20 5b 73 71 6c 69 74  ent.** to [sqlit
2afa0 65 33 5f 74 72 61 63 65 5f 76 32 28 44 2c 4d 2c  e3_trace_v2(D,M,
2afb0 58 2c 50 29 5d 20 69 73 20 61 6e 20 4f 52 2d 65  X,P)] is an OR-e
2afc0 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66  d combination of
2afd0 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 0a   one or more of.
2afe0 2a 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ** the following
2aff0 20 63 6f 6e 73 74 61 6e 74 73 2e 20 20 5e 54 68   constants.  ^Th
2b000 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
2b010 20 74 6f 20 74 68 65 20 74 72 61 63 65 20 63 61   to the trace ca
2b020 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 6f 6e 65  llback.** is one
2b030 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
2b040 67 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 2a 2a 0a  g constants..**.
2b050 2a 2a 20 4e 65 77 20 74 72 61 63 69 6e 67 20 63  ** New tracing c
2b060 6f 6e 73 74 61 6e 74 73 20 6d 61 79 20 62 65 20  onstants may be 
2b070 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20  added in future 
2b080 72 65 6c 65 61 73 65 73 2e 0a 2a 2a 0a 2a 2a 20  releases..**.** 
2b090 5e 41 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63  ^A trace callbac
2b0a0 6b 20 68 61 73 20 66 6f 75 72 20 61 72 67 75 6d  k has four argum
2b0b0 65 6e 74 73 3a 20 78 43 61 6c 6c 62 61 63 6b 28  ents: xCallback(
2b0c0 54 2c 43 2c 50 2c 58 29 2e 0a 2a 2a 20 5e 54 68  T,C,P,X)..** ^Th
2b0d0 65 20 54 20 61 72 67 75 6d 65 6e 74 20 69 73 20  e T argument is 
2b0e0 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e 74 65 67  one of the integ
2b0f0 65 72 20 74 79 70 65 20 63 6f 64 65 73 20 61 62  er type codes ab
2b100 6f 76 65 2e 0a 2a 2a 20 5e 54 68 65 20 43 20 61  ove..** ^The C a
2b110 72 67 75 6d 65 6e 74 20 69 73 20 61 20 63 6f 70  rgument is a cop
2b120 79 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 78 74  y of the context
2b130 20 70 6f 69 6e 74 65 72 20 70 61 73 73 65 64 20   pointer passed 
2b140 69 6e 20 61 73 20 74 68 65 0a 2a 2a 20 66 6f 75  in as the.** fou
2b150 72 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  rth argument to 
2b160 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76  [sqlite3_trace_v
2b170 32 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 50 20 61  2()]..** The P a
2b180 6e 64 20 58 20 61 72 67 75 6d 65 6e 74 73 20 61  nd X arguments a
2b190 72 65 20 70 6f 69 6e 74 65 72 73 20 77 68 6f 73  re pointers whos
2b1a0 65 20 6d 65 61 6e 69 6e 67 73 20 64 65 70 65 6e  e meanings depen
2b1b0 64 20 6f 6e 20 54 2e 0a 2a 2a 0a 2a 2a 20 3c 64  d on T..**.** <d
2b1c0 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54  l>.** [[SQLITE_T
2b1d0 52 41 43 45 5f 53 54 4d 54 5d 5d 20 3c 64 74 3e  RACE_STMT]] <dt>
2b1e0 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d  SQLITE_TRACE_STM
2b1f0 54 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41  T</dt>.** <dd>^A
2b200 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53  n SQLITE_TRACE_S
2b210 54 4d 54 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  TMT callback is 
2b220 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61 20 70  invoked when a p
2b230 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
2b240 74 0a 2a 2a 20 66 69 72 73 74 20 62 65 67 69 6e  t.** first begin
2b250 73 20 72 75 6e 6e 69 6e 67 20 61 6e 64 20 70 6f  s running and po
2b260 73 73 69 62 6c 79 20 61 74 20 6f 74 68 65 72 20  ssibly at other 
2b270 74 69 6d 65 73 20 64 75 72 69 6e 67 20 74 68 65  times during the
2b280 0a 2a 2a 20 65 78 65 63 75 74 69 6f 6e 20 6f 66  .** execution of
2b290 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
2b2a0 61 74 65 6d 65 6e 74 2c 20 73 75 63 68 20 61 73  atement, such as
2b2b0 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6f 66   at the start of
2b2c0 20 65 61 63 68 0a 2a 2a 20 74 72 69 67 67 65 72   each.** trigger
2b2d0 20 73 75 62 70 72 6f 67 72 61 6d 2e 20 5e 54 68   subprogram. ^Th
2b2e0 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20  e P argument is 
2b2f0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
2b300 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74  .** [prepared st
2b310 61 74 65 6d 65 6e 74 5d 2e 20 5e 54 68 65 20 58  atement]. ^The X
2b320 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70   argument is a p
2b330 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69  ointer to a stri
2b340 6e 67 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 74  ng which.** is t
2b350 68 65 20 75 6e 65 78 70 61 6e 64 65 64 20 53 51  he unexpanded SQ
2b360 4c 20 74 65 78 74 20 6f 66 20 74 68 65 20 70 72  L text of the pr
2b370 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
2b380 20 6f 72 20 61 6e 20 53 51 4c 20 63 6f 6d 6d 65   or an SQL comme
2b390 6e 74 20 0a 2a 2a 20 74 68 61 74 20 69 6e 64 69  nt .** that indi
2b3a0 63 61 74 65 73 20 74 68 65 20 69 6e 76 6f 63 61  cates the invoca
2b3b0 74 69 6f 6e 20 6f 66 20 61 20 74 72 69 67 67 65  tion of a trigge
2b3c0 72 2e 20 20 5e 54 68 65 20 63 61 6c 6c 62 61 63  r.  ^The callbac
2b3d0 6b 20 63 61 6e 20 63 6f 6d 70 75 74 65 0a 2a 2a  k can compute.**
2b3e0 20 74 68 65 20 73 61 6d 65 20 74 65 78 74 20 74   the same text t
2b3f0 68 61 74 20 77 6f 75 6c 64 20 68 61 76 65 20 62  hat would have b
2b400 65 65 6e 20 72 65 74 75 72 6e 65 64 20 62 79 20  een returned by 
2b410 74 68 65 20 6c 65 67 61 63 79 20 5b 73 71 6c 69  the legacy [sqli
2b420 74 65 33 5f 74 72 61 63 65 28 29 5d 0a 2a 2a 20  te3_trace()].** 
2b430 69 6e 74 65 72 66 61 63 65 20 62 79 20 75 73 69  interface by usi
2b440 6e 67 20 74 68 65 20 58 20 61 72 67 75 6d 65 6e  ng the X argumen
2b450 74 20 77 68 65 6e 20 58 20 62 65 67 69 6e 73 20  t when X begins 
2b460 77 69 74 68 20 22 2d 2d 22 20 61 6e 64 20 69 6e  with "--" and in
2b470 76 6f 6b 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74  voking.** [sqlit
2b480 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28  e3_expanded_sql(
2b490 50 29 5d 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a  P)] otherwise..*
2b4a0 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54 52  *.** [[SQLITE_TR
2b4b0 41 43 45 5f 50 52 4f 46 49 4c 45 5d 5d 20 3c 64  ACE_PROFILE]] <d
2b4c0 74 3e 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 50  t>SQLITE_TRACE_P
2b4d0 52 4f 46 49 4c 45 3c 2f 64 74 3e 0a 2a 2a 20 3c  ROFILE</dt>.** <
2b4e0 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54 52  dd>^An SQLITE_TR
2b4f0 41 43 45 5f 50 52 4f 46 49 4c 45 20 63 61 6c 6c  ACE_PROFILE call
2b500 62 61 63 6b 20 70 72 6f 76 69 64 65 73 20 61 70  back provides ap
2b510 70 72 6f 78 69 6d 61 74 65 6c 79 20 74 68 65 20  proximately the 
2b520 73 61 6d 65 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74  same.** informat
2b530 69 6f 6e 20 61 73 20 69 73 20 70 72 6f 76 69 64  ion as is provid
2b540 65 64 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74  ed by the [sqlit
2b550 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20 63 61  e3_profile()] ca
2b560 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 5e 54 68 65 20  llback..** ^The 
2b570 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  P argument is a 
2b580 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 5b  pointer to the [
2b590 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
2b5a0 6e 74 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 58  nt] and the.** X
2b5b0 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 73   argument points
2b5c0 20 74 6f 20 61 20 36 34 2d 62 69 74 20 69 6e 74   to a 64-bit int
2b5d0 65 67 65 72 20 77 68 69 63 68 20 69 73 20 74 68  eger which is th
2b5e0 65 20 65 73 74 69 6d 61 74 65 64 20 6f 66 0a 2a  e estimated of.*
2b5f0 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  * the number of 
2b600 6e 61 6e 6f 73 65 63 6f 6e 64 20 74 68 61 74 20  nanosecond that 
2b610 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
2b620 74 65 6d 65 6e 74 20 74 6f 6f 6b 20 74 6f 20 72  tement took to r
2b630 75 6e 2e 0a 2a 2a 20 5e 54 68 65 20 53 51 4c 49  un..** ^The SQLI
2b640 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c 45  TE_TRACE_PROFILE
2b650 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
2b660 6f 6b 65 64 20 77 68 65 6e 20 74 68 65 20 73 74  oked when the st
2b670 61 74 65 6d 65 6e 74 20 66 69 6e 69 73 68 65 73  atement finishes
2b680 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ..**.** [[SQLITE
2b690 5f 54 52 41 43 45 5f 52 4f 57 5d 5d 20 3c 64 74  _TRACE_ROW]] <dt
2b6a0 3e 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f  >SQLITE_TRACE_RO
2b6b0 57 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41  W</dt>.** <dd>^A
2b6c0 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52  n SQLITE_TRACE_R
2b6d0 4f 57 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69  OW callback is i
2b6e0 6e 76 6f 6b 65 64 20 77 68 65 6e 65 76 65 72 20  nvoked whenever 
2b6f0 61 20 70 72 65 70 61 72 65 64 0a 2a 2a 20 73 74  a prepared.** st
2b700 61 74 65 6d 65 6e 74 20 67 65 6e 65 72 61 74 65  atement generate
2b710 73 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f  s a single row o
2b720 66 20 72 65 73 75 6c 74 2e 20 20 0a 2a 2a 20 5e  f result.  .** ^
2b730 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69  The P argument i
2b740 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
2b750 68 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  he [prepared sta
2b760 74 65 6d 65 6e 74 5d 20 61 6e 64 20 74 68 65 0a  tement] and the.
2b770 2a 2a 20 58 20 61 72 67 75 6d 65 6e 74 20 69 73  ** X argument is
2b780 20 75 6e 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5b   unused..**.** [
2b790 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c  [SQLITE_TRACE_CL
2b7a0 4f 53 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  OSE]] <dt>SQLITE
2b7b0 5f 54 52 41 43 45 5f 43 4c 4f 53 45 3c 2f 64 74  _TRACE_CLOSE</dt
2b7c0 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53 51 4c  >.** <dd>^An SQL
2b7d0 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53 45 20  ITE_TRACE_CLOSE 
2b7e0 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
2b7f0 6b 65 64 20 77 68 65 6e 20 61 20 64 61 74 61 62  ked when a datab
2b800 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  ase.** connectio
2b810 6e 20 63 6c 6f 73 65 73 2e 0a 2a 2a 20 5e 54 68  n closes..** ^Th
2b820 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20  e P argument is 
2b830 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
2b840 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
2b850 63 74 69 6f 6e 5d 20 6f 62 6a 65 63 74 0a 2a 2a  ction] object.**
2b860 20 61 6e 64 20 74 68 65 20 58 20 61 72 67 75 6d   and the X argum
2b870 65 6e 74 20 69 73 20 75 6e 75 73 65 64 2e 0a 2a  ent is unused..*
2b880 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69  * </dl>.*/.#defi
2b890 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f  ne SQLITE_TRACE_
2b8a0 53 54 4d 54 20 20 20 20 20 20 20 30 78 30 31 0a  STMT       0x01.
2b8b0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54  #define SQLITE_T
2b8c0 52 41 43 45 5f 50 52 4f 46 49 4c 45 20 20 20 20  RACE_PROFILE    
2b8d0 30 78 30 32 0a 23 64 65 66 69 6e 65 20 53 51 4c  0x02.#define SQL
2b8e0 49 54 45 5f 54 52 41 43 45 5f 52 4f 57 20 20 20  ITE_TRACE_ROW   
2b8f0 20 20 20 20 20 30 78 30 34 0a 23 64 65 66 69 6e       0x04.#defin
2b900 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43  e SQLITE_TRACE_C
2b910 4c 4f 53 45 20 20 20 20 20 20 30 78 30 38 0a 0a  LOSE      0x08..
2b920 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
2b930 53 51 4c 20 54 72 61 63 65 20 48 6f 6f 6b 0a 2a  SQL Trace Hook.*
2b940 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
2b950 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  3.**.** ^The sql
2b960 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28 44 2c  ite3_trace_v2(D,
2b970 4d 2c 58 2c 50 29 20 69 6e 74 65 72 66 61 63 65  M,X,P) interface
2b980 20 72 65 67 69 73 74 65 72 73 20 61 20 74 72 61   registers a tra
2b990 63 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66  ce callback.** f
2b9a0 75 6e 63 74 69 6f 6e 20 58 20 61 67 61 69 6e 73  unction X agains
2b9b0 74 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  t [database conn
2b9c0 65 63 74 69 6f 6e 5d 20 44 2c 20 75 73 69 6e 67  ection] D, using
2b9d0 20 70 72 6f 70 65 72 74 79 20 6d 61 73 6b 20 4d   property mask M
2b9e0 0a 2a 2a 20 61 6e 64 20 63 6f 6e 74 65 78 74 20  .** and context 
2b9f0 70 6f 69 6e 74 65 72 20 50 2e 20 20 5e 49 66 20  pointer P.  ^If 
2ba00 74 68 65 20 58 20 63 61 6c 6c 62 61 63 6b 20 69  the X callback i
2ba10 73 0a 2a 2a 20 4e 55 4c 4c 20 6f 72 20 69 66 20  s.** NULL or if 
2ba20 74 68 65 20 4d 20 6d 61 73 6b 20 69 73 20 7a 65  the M mask is ze
2ba30 72 6f 2c 20 74 68 65 6e 20 74 72 61 63 69 6e 67  ro, then tracing
2ba40 20 69 73 20 64 69 73 61 62 6c 65 64 2e 20 20 54   is disabled.  T
2ba50 68 65 0a 2a 2a 20 4d 20 61 72 67 75 6d 65 6e 74  he.** M argument
2ba60 20 73 68 6f 75 6c 64 20 62 65 20 74 68 65 20 62   should be the b
2ba70 69 74 77 69 73 65 20 4f 52 2d 65 64 20 63 6f 6d  itwise OR-ed com
2ba80 62 69 6e 61 74 69 6f 6e 20 6f 66 0a 2a 2a 20 7a  bination of.** z
2ba90 65 72 6f 20 6f 72 20 6d 6f 72 65 20 5b 53 51 4c  ero or more [SQL
2baa0 49 54 45 5f 54 52 41 43 45 5d 20 63 6f 6e 73 74  ITE_TRACE] const
2bab0 61 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 45 61 63  ants..**.** ^Eac
2bac0 68 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65 72  h call to either
2bad0 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29   sqlite3_trace()
2bae0 20 6f 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63   or sqlite3_trac
2baf0 65 5f 76 32 28 29 20 6f 76 65 72 72 69 64 65 73  e_v2() overrides
2bb00 20 0a 2a 2a 20 28 63 61 6e 63 65 6c 73 29 20 61   .** (cancels) a
2bb10 6e 79 20 70 72 69 6f 72 20 63 61 6c 6c 73 20 74  ny prior calls t
2bb20 6f 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28  o sqlite3_trace(
2bb30 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 74 72 61  ) or sqlite3_tra
2bb40 63 65 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e  ce_v2()..**.** ^
2bb50 54 68 65 20 58 20 63 61 6c 6c 62 61 63 6b 20 69  The X callback i
2bb60 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 65 76  s invoked whenev
2bb70 65 72 20 61 6e 79 20 6f 66 20 74 68 65 20 65 76  er any of the ev
2bb80 65 6e 74 73 20 69 64 65 6e 74 69 66 69 65 64 20  ents identified 
2bb90 62 79 20 0a 2a 2a 20 6d 61 73 6b 20 4d 20 6f 63  by .** mask M oc
2bba0 63 75 72 2e 20 20 5e 54 68 65 20 69 6e 74 65 67  cur.  ^The integ
2bbb0 65 72 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  er return value 
2bbc0 66 72 6f 6d 20 74 68 65 20 63 61 6c 6c 62 61 63  from the callbac
2bbd0 6b 20 69 73 20 63 75 72 72 65 6e 74 6c 79 0a 2a  k is currently.*
2bbe0 2a 20 69 67 6e 6f 72 65 64 2c 20 74 68 6f 75 67  * ignored, thoug
2bbf0 68 20 74 68 69 73 20 6d 61 79 20 63 68 61 6e 67  h this may chang
2bc00 65 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65  e in future rele
2bc10 61 73 65 73 2e 20 20 43 61 6c 6c 62 61 63 6b 0a  ases.  Callback.
2bc20 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ** implementatio
2bc30 6e 73 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e  ns should return
2bc40 20 7a 65 72 6f 20 74 6f 20 65 6e 73 75 72 65 20   zero to ensure 
2bc50 66 75 74 75 72 65 20 63 6f 6d 70 61 74 69 62 69  future compatibi
2bc60 6c 69 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 41 20 74  lity..**.** ^A t
2bc70 72 61 63 65 20 63 61 6c 6c 62 61 63 6b 20 69 73  race callback is
2bc80 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 66 6f   invoked with fo
2bc90 75 72 20 61 72 67 75 6d 65 6e 74 73 3a 20 63 61  ur arguments: ca
2bca0 6c 6c 62 61 63 6b 28 54 2c 43 2c 50 2c 58 29 2e  llback(T,C,P,X).
2bcb0 0a 2a 2a 20 5e 54 68 65 20 54 20 61 72 67 75 6d  .** ^The T argum
2bcc0 65 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20 74 68  ent is one of th
2bcd0 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5d  e [SQLITE_TRACE]
2bce0 0a 2a 2a 20 63 6f 6e 73 74 61 6e 74 73 20 74 6f  .** constants to
2bcf0 20 69 6e 64 69 63 61 74 65 20 77 68 79 20 74 68   indicate why th
2bd00 65 20 63 61 6c 6c 62 61 63 6b 20 77 61 73 20 69  e callback was i
2bd10 6e 76 6f 6b 65 64 2e 0a 2a 2a 20 5e 54 68 65 20  nvoked..** ^The 
2bd20 43 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  C argument is a 
2bd30 63 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 6e 74  copy of the cont
2bd40 65 78 74 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 20  ext pointer..** 
2bd50 54 68 65 20 50 20 61 6e 64 20 58 20 61 72 67 75  The P and X argu
2bd60 6d 65 6e 74 73 20 61 72 65 20 70 6f 69 6e 74 65  ments are pointe
2bd70 72 73 20 77 68 6f 73 65 20 6d 65 61 6e 69 6e 67  rs whose meaning
2bd80 73 20 64 65 70 65 6e 64 20 6f 6e 20 54 2e 0a 2a  s depend on T..*
2bd90 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
2bda0 5f 74 72 61 63 65 5f 76 32 28 29 20 69 6e 74 65  _trace_v2() inte
2bdb0 72 66 61 63 65 20 69 73 20 69 6e 74 65 6e 64 65  rface is intende
2bdc0 64 20 74 6f 20 72 65 70 6c 61 63 65 20 74 68 65  d to replace the
2bdd0 20 6c 65 67 61 63 79 0a 2a 2a 20 69 6e 74 65 72   legacy.** inter
2bde0 66 61 63 65 73 20 5b 73 71 6c 69 74 65 33 5f 74  faces [sqlite3_t
2bdf0 72 61 63 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c  race()] and [sql
2be00 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 2c  ite3_profile()],
2be10 20 62 6f 74 68 20 6f 66 20 77 68 69 63 68 0a 2a   both of which.*
2be20 2a 20 61 72 65 20 64 65 70 72 65 63 61 74 65 64  * are deprecated
2be30 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
2be40 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 72 61 63  int sqlite3_trac
2be50 65 5f 76 32 28 0a 20 20 73 71 6c 69 74 65 33 2a  e_v2(.  sqlite3*
2be60 2c 0a 20 20 75 6e 73 69 67 6e 65 64 20 75 4d 61  ,.  unsigned uMa
2be70 73 6b 2c 0a 20 20 69 6e 74 28 2a 78 43 61 6c 6c  sk,.  int(*xCall
2be80 62 61 63 6b 29 28 75 6e 73 69 67 6e 65 64 2c 76  back)(unsigned,v
2be90 6f 69 64 2a 2c 76 6f 69 64 2a 2c 76 6f 69 64 2a  oid*,void*,void*
2bea0 29 2c 0a 20 20 76 6f 69 64 20 2a 70 43 74 78 0a  ),.  void *pCtx.
2beb0 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
2bec0 45 46 3a 20 51 75 65 72 79 20 50 72 6f 67 72 65  EF: Query Progre
2bed0 73 73 20 43 61 6c 6c 62 61 63 6b 73 0a 2a 2a 20  ss Callbacks.** 
2bee0 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
2bef0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
2bf00 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64  e3_progress_hand
2bf10 6c 65 72 28 44 2c 4e 2c 58 2c 50 29 20 69 6e 74  ler(D,N,X,P) int
2bf20 65 72 66 61 63 65 20 63 61 75 73 65 73 20 74 68  erface causes th
2bf30 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75  e callback.** fu
2bf40 6e 63 74 69 6f 6e 20 58 20 74 6f 20 62 65 20 69  nction X to be i
2bf50 6e 76 6f 6b 65 64 20 70 65 72 69 6f 64 69 63 61  nvoked periodica
2bf60 6c 6c 79 20 64 75 72 69 6e 67 20 6c 6f 6e 67 20  lly during long 
2bf70 72 75 6e 6e 69 6e 67 20 63 61 6c 6c 73 20 74 6f  running calls to
2bf80 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78 65  .** [sqlite3_exe
2bf90 63 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 73  c()], [sqlite3_s
2bfa0 74 65 70 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  tep()] and [sqli
2bfb0 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d  te3_get_table()]
2bfc0 20 66 6f 72 0a 2a 2a 20 64 61 74 61 62 61 73 65   for.** database
2bfd0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 44 2e 20 20   connection D.  
2bfe0 41 6e 20 65 78 61 6d 70 6c 65 20 75 73 65 20 66  An example use f
2bff0 6f 72 20 74 68 69 73 0a 2a 2a 20 69 6e 74 65 72  or this.** inter
2c000 66 61 63 65 20 69 73 20 74 6f 20 6b 65 65 70 20  face is to keep 
2c010 61 20 47 55 49 20 75 70 64 61 74 65 64 20 64 75  a GUI updated du
2c020 72 69 6e 67 20 61 20 6c 61 72 67 65 20 71 75 65  ring a large que
2c030 72 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 70  ry..**.** ^The p
2c040 61 72 61 6d 65 74 65 72 20 50 20 69 73 20 70 61  arameter P is pa
2c050 73 73 65 64 20 74 68 72 6f 75 67 68 20 61 73 20  ssed through as 
2c060 74 68 65 20 6f 6e 6c 79 20 70 61 72 61 6d 65 74  the only paramet
2c070 65 72 20 74 6f 20 74 68 65 20 0a 2a 2a 20 63 61  er to the .** ca
2c080 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
2c090 58 2e 20 20 5e 54 68 65 20 70 61 72 61 6d 65 74  X.  ^The paramet
2c0a0 65 72 20 4e 20 69 73 20 74 68 65 20 61 70 70 72  er N is the appr
2c0b0 6f 78 69 6d 61 74 65 20 6e 75 6d 62 65 72 20 6f  oximate number o
2c0c0 66 20 0a 2a 2a 20 5b 76 69 72 74 75 61 6c 20 6d  f .** [virtual m
2c0d0 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69  achine instructi
2c0e0 6f 6e 73 5d 20 74 68 61 74 20 61 72 65 20 65 76  ons] that are ev
2c0f0 61 6c 75 61 74 65 64 20 62 65 74 77 65 65 6e 20  aluated between 
2c100 73 75 63 63 65 73 73 69 76 65 0a 2a 2a 20 69 6e  successive.** in
2c110 76 6f 63 61 74 69 6f 6e 73 20 6f 66 20 74 68 65  vocations of the
2c120 20 63 61 6c 6c 62 61 63 6b 20 58 2e 20 20 5e 49   callback X.  ^I
2c130 66 20 4e 20 69 73 20 6c 65 73 73 20 74 68 61 6e  f N is less than
2c140 20 6f 6e 65 20 74 68 65 6e 20 74 68 65 20 70 72   one then the pr
2c150 6f 67 72 65 73 73 0a 2a 2a 20 68 61 6e 64 6c 65  ogress.** handle
2c160 72 20 69 73 20 64 69 73 61 62 6c 65 64 2e 0a 2a  r is disabled..*
2c170 2a 0a 2a 2a 20 5e 4f 6e 6c 79 20 61 20 73 69 6e  *.** ^Only a sin
2c180 67 6c 65 20 70 72 6f 67 72 65 73 73 20 68 61 6e  gle progress han
2c190 64 6c 65 72 20 6d 61 79 20 62 65 20 64 65 66 69  dler may be defi
2c1a0 6e 65 64 20 61 74 20 6f 6e 65 20 74 69 6d 65 20  ned at one time 
2c1b0 70 65 72 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65  per.** [database
2c1c0 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 3b 20 73 65   connection]; se
2c1d0 74 74 69 6e 67 20 61 20 6e 65 77 20 70 72 6f 67  tting a new prog
2c1e0 72 65 73 73 20 68 61 6e 64 6c 65 72 20 63 61 6e  ress handler can
2c1f0 63 65 6c 73 20 74 68 65 0a 2a 2a 20 6f 6c 64 20  cels the.** old 
2c200 6f 6e 65 2e 20 20 5e 53 65 74 74 69 6e 67 20 70  one.  ^Setting p
2c210 61 72 61 6d 65 74 65 72 20 58 20 74 6f 20 4e 55  arameter X to NU
2c220 4c 4c 20 64 69 73 61 62 6c 65 73 20 74 68 65 20  LL disables the 
2c230 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72  progress handler
2c240 2e 0a 2a 2a 20 5e 54 68 65 20 70 72 6f 67 72 65  ..** ^The progre
2c250 73 73 20 68 61 6e 64 6c 65 72 20 69 73 20 61 6c  ss handler is al
2c260 73 6f 20 64 69 73 61 62 6c 65 64 20 62 79 20 73  so disabled by s
2c270 65 74 74 69 6e 67 20 4e 20 74 6f 20 61 20 76 61  etting N to a va
2c280 6c 75 65 20 6c 65 73 73 0a 2a 2a 20 74 68 61 6e  lue less.** than
2c290 20 31 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68   1..**.** ^If th
2c2a0 65 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62  e progress callb
2c2b0 61 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d  ack returns non-
2c2c0 7a 65 72 6f 2c 20 74 68 65 20 6f 70 65 72 61 74  zero, the operat
2c2d0 69 6f 6e 20 69 73 0a 2a 2a 20 69 6e 74 65 72 72  ion is.** interr
2c2e0 75 70 74 65 64 2e 20 20 54 68 69 73 20 66 65 61  upted.  This fea
2c2f0 74 75 72 65 20 63 61 6e 20 62 65 20 75 73 65 64  ture can be used
2c300 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 0a   to implement a.
2c310 2a 2a 20 22 43 61 6e 63 65 6c 22 20 62 75 74 74  ** "Cancel" butt
2c320 6f 6e 20 6f 6e 20 61 20 47 55 49 20 70 72 6f 67  on on a GUI prog
2c330 72 65 73 73 20 64 69 61 6c 6f 67 20 62 6f 78 2e  ress dialog box.
2c340 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 6f 67 72  .**.** The progr
2c350 65 73 73 20 68 61 6e 64 6c 65 72 20 63 61 6c 6c  ess handler call
2c360 62 61 63 6b 20 6d 75 73 74 20 6e 6f 74 20 64 6f  back must not do
2c370 20 61 6e 79 74 68 69 6e 67 20 74 68 61 74 20 77   anything that w
2c380 69 6c 6c 20 6d 6f 64 69 66 79 0a 2a 2a 20 74 68  ill modify.** th
2c390 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
2c3a0 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 76 6f 6b  ction that invok
2c3b0 65 64 20 74 68 65 20 70 72 6f 67 72 65 73 73 20  ed the progress 
2c3c0 68 61 6e 64 6c 65 72 2e 0a 2a 2a 20 4e 6f 74 65  handler..** Note
2c3d0 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f 70   that [sqlite3_p
2c3e0 72 65 70 61 72 65 5f 76 32 28 29 5d 20 61 6e 64  repare_v2()] and
2c3f0 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
2c400 5d 20 62 6f 74 68 20 6d 6f 64 69 66 79 20 74 68  ] both modify th
2c410 65 69 72 0a 2a 2a 20 64 61 74 61 62 61 73 65 20  eir.** database 
2c420 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 66 6f 72 20  connections for 
2c430 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 22  the meaning of "
2c440 6d 6f 64 69 66 79 22 20 69 6e 20 74 68 69 73 20  modify" in this 
2c450 70 61 72 61 67 72 61 70 68 2e 0a 2a 2a 0a 2a 2f  paragraph..**.*/
2c460 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64  .SQLITE_API void
2c470 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73   sqlite3_progres
2c480 73 5f 68 61 6e 64 6c 65 72 28 73 71 6c 69 74 65  s_handler(sqlite
2c490 33 2a 2c 20 69 6e 74 2c 20 69 6e 74 28 2a 29 28  3*, int, int(*)(
2c4a0 76 6f 69 64 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a  void*), void*);.
2c4b0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
2c4c0 20 4f 70 65 6e 69 6e 67 20 41 20 4e 65 77 20 44   Opening A New D
2c4d0 61 74 61 62 61 73 65 20 43 6f 6e 6e 65 63 74 69  atabase Connecti
2c4e0 6f 6e 0a 2a 2a 20 43 4f 4e 53 54 52 55 43 54 4f  on.** CONSTRUCTO
2c4f0 52 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a  R: sqlite3.**.**
2c500 20 5e 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73   ^These routines
2c510 20 6f 70 65 6e 20 61 6e 20 53 51 4c 69 74 65 20   open an SQLite 
2c520 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 73  database file as
2c530 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68   specified by th
2c540 65 20 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20 61  e .** filename a
2c550 72 67 75 6d 65 6e 74 2e 20 5e 54 68 65 20 66 69  rgument. ^The fi
2c560 6c 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 20  lename argument 
2c570 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  is interpreted a
2c580 73 20 55 54 46 2d 38 20 66 6f 72 0a 2a 2a 20 73  s UTF-8 for.** s
2c590 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 61 6e  qlite3_open() an
2c5a0 64 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  d sqlite3_open_v
2c5b0 32 28 29 20 61 6e 64 20 61 73 20 55 54 46 2d 31  2() and as UTF-1
2c5c0 36 20 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20  6 in the native 
2c5d0 62 79 74 65 0a 2a 2a 20 6f 72 64 65 72 20 66 6f  byte.** order fo
2c5e0 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  r sqlite3_open16
2c5f0 28 29 2e 20 5e 28 41 20 5b 64 61 74 61 62 61 73  (). ^(A [databas
2c600 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 68 61  e connection] ha
2c610 6e 64 6c 65 20 69 73 20 75 73 75 61 6c 6c 79 0a  ndle is usually.
2c620 2a 2a 20 72 65 74 75 72 6e 65 64 20 69 6e 20 2a  ** returned in *
2c630 70 70 44 62 2c 20 65 76 65 6e 20 69 66 20 61 6e  ppDb, even if an
2c640 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 20 20   error occurs.  
2c650 54 68 65 20 6f 6e 6c 79 20 65 78 63 65 70 74 69  The only excepti
2c660 6f 6e 20 69 73 20 74 68 61 74 0a 2a 2a 20 69 66  on is that.** if
2c670 20 53 51 4c 69 74 65 20 69 73 20 75 6e 61 62 6c   SQLite is unabl
2c680 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65  e to allocate me
2c690 6d 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74 68 65  mory to hold the
2c6a0 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63   [sqlite3] objec
2c6b0 74 2c 0a 2a 2a 20 61 20 4e 55 4c 4c 20 77 69 6c  t,.** a NULL wil
2c6c0 6c 20 62 65 20 77 72 69 74 74 65 6e 20 69 6e 74  l be written int
2c6d0 6f 20 2a 70 70 44 62 20 69 6e 73 74 65 61 64 20  o *ppDb instead 
2c6e0 6f 66 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  of a pointer to 
2c6f0 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 0a 2a 2a  the [sqlite3].**
2c700 20 6f 62 6a 65 63 74 2e 29 5e 20 5e 28 49 66 20   object.)^ ^(If 
2c710 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
2c720 6f 70 65 6e 65 64 20 28 61 6e 64 2f 6f 72 20 63  opened (and/or c
2c730 72 65 61 74 65 64 29 20 73 75 63 63 65 73 73 66  reated) successf
2c740 75 6c 6c 79 2c 20 74 68 65 6e 0a 2a 2a 20 5b 53  ully, then.** [S
2c750 51 4c 49 54 45 5f 4f 4b 5d 20 69 73 20 72 65 74  QLITE_OK] is ret
2c760 75 72 6e 65 64 2e 20 20 4f 74 68 65 72 77 69 73  urned.  Otherwis
2c770 65 20 61 6e 20 5b 65 72 72 6f 72 20 63 6f 64 65  e an [error code
2c780 5d 20 69 73 20 72 65 74 75 72 6e 65 64 2e 29 5e  ] is returned.)^
2c790 20 5e 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65   ^The.** [sqlite
2c7a0 33 5f 65 72 72 6d 73 67 28 29 5d 20 6f 72 20 5b  3_errmsg()] or [
2c7b0 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36  sqlite3_errmsg16
2c7c0 28 29 5d 20 72 6f 75 74 69 6e 65 73 20 63 61 6e  ()] routines can
2c7d0 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62 74 61   be used to obta
2c7e0 69 6e 0a 2a 2a 20 61 6e 20 45 6e 67 6c 69 73 68  in.** an English
2c7f0 20 6c 61 6e 67 75 61 67 65 20 64 65 73 63 72 69   language descri
2c800 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 72 72  ption of the err
2c810 6f 72 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 66  or following a f
2c820 61 69 6c 75 72 65 20 6f 66 20 61 6e 79 0a 2a 2a  ailure of any.**
2c830 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f   of the sqlite3_
2c840 6f 70 65 6e 28 29 20 72 6f 75 74 69 6e 65 73 2e  open() routines.
2c850 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61  .**.** ^The defa
2c860 75 6c 74 20 65 6e 63 6f 64 69 6e 67 20 77 69 6c  ult encoding wil
2c870 6c 20 62 65 20 55 54 46 2d 38 20 66 6f 72 20 64  l be UTF-8 for d
2c880 61 74 61 62 61 73 65 73 20 63 72 65 61 74 65 64  atabases created
2c890 20 75 73 69 6e 67 0a 2a 2a 20 73 71 6c 69 74 65   using.** sqlite
2c8a0 33 5f 6f 70 65 6e 28 29 20 6f 72 20 73 71 6c 69  3_open() or sqli
2c8b0 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 20  te3_open_v2().  
2c8c0 5e 54 68 65 20 64 65 66 61 75 6c 74 20 65 6e 63  ^The default enc
2c8d0 6f 64 69 6e 67 20 66 6f 72 20 64 61 74 61 62 61  oding for databa
2c8e0 73 65 73 0a 2a 2a 20 63 72 65 61 74 65 64 20 75  ses.** created u
2c8f0 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 6f 70 65  sing sqlite3_ope
2c900 6e 31 36 28 29 20 77 69 6c 6c 20 62 65 20 55 54  n16() will be UT
2c910 46 2d 31 36 20 69 6e 20 74 68 65 20 6e 61 74 69  F-16 in the nati
2c920 76 65 20 62 79 74 65 20 6f 72 64 65 72 2e 0a 2a  ve byte order..*
2c930 2a 0a 2a 2a 20 57 68 65 74 68 65 72 20 6f 72 20  *.** Whether or 
2c940 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20 6f 63 63  not an error occ
2c950 75 72 73 20 77 68 65 6e 20 69 74 20 69 73 20 6f  urs when it is o
2c960 70 65 6e 65 64 2c 20 72 65 73 6f 75 72 63 65 73  pened, resources
2c970 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 64 20 77  .** associated w
2c980 69 74 68 20 74 68 65 20 5b 64 61 74 61 62 61 73  ith the [databas
2c990 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 68 61  e connection] ha
2c9a0 6e 64 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 72  ndle should be r
2c9b0 65 6c 65 61 73 65 64 20 62 79 0a 2a 2a 20 70 61  eleased by.** pa
2c9c0 73 73 69 6e 67 20 69 74 20 74 6f 20 5b 73 71 6c  ssing it to [sql
2c9d0 69 74 65 33 5f 63 6c 6f 73 65 28 29 5d 20 77 68  ite3_close()] wh
2c9e0 65 6e 20 69 74 20 69 73 20 6e 6f 20 6c 6f 6e 67  en it is no long
2c9f0 65 72 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a  er required..**.
2ca00 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6f  ** The sqlite3_o
2ca10 70 65 6e 5f 76 32 28 29 20 69 6e 74 65 72 66 61  pen_v2() interfa
2ca20 63 65 20 77 6f 72 6b 73 20 6c 69 6b 65 20 73 71  ce works like sq
2ca30 6c 69 74 65 33 5f 6f 70 65 6e 28 29 0a 2a 2a 20  lite3_open().** 
2ca40 65 78 63 65 70 74 20 74 68 61 74 20 69 74 20 61  except that it a
2ca50 63 63 65 70 74 73 20 74 77 6f 20 61 64 64 69 74  ccepts two addit
2ca60 69 6f 6e 61 6c 20 70 61 72 61 6d 65 74 65 72 73  ional parameters
2ca70 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
2ca80 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 6f 76 65 72 20  control.** over 
2ca90 74 68 65 20 6e 65 77 20 64 61 74 61 62 61 73 65  the new database
2caa0 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 5e 28   connection.  ^(
2cab0 54 68 65 20 66 6c 61 67 73 20 70 61 72 61 6d 65  The flags parame
2cac0 74 65 72 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65  ter to.** sqlite
2cad0 33 5f 6f 70 65 6e 5f 76 32 28 29 20 63 61 6e 20  3_open_v2() can 
2cae0 74 61 6b 65 20 6f 6e 65 20 6f 66 0a 2a 2a 20 74  take one of.** t
2caf0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 72  he following thr
2cb00 65 65 20 76 61 6c 75 65 73 2c 20 6f 70 74 69 6f  ee values, optio
2cb10 6e 61 6c 6c 79 20 63 6f 6d 62 69 6e 65 64 20 77  nally combined w
2cb20 69 74 68 20 74 68 65 20 0a 2a 2a 20 5b 53 51 4c  ith the .** [SQL
2cb30 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58  ITE_OPEN_NOMUTEX
2cb40 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  ], [SQLITE_OPEN_
2cb50 46 55 4c 4c 4d 55 54 45 58 5d 2c 20 5b 53 51 4c  FULLMUTEX], [SQL
2cb60 49 54 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43  ITE_OPEN_SHAREDC
2cb70 41 43 48 45 5d 2c 0a 2a 2a 20 5b 53 51 4c 49 54  ACHE],.** [SQLIT
2cb80 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41  E_OPEN_PRIVATECA
2cb90 43 48 45 5d 2c 20 61 6e 64 2f 6f 72 20 5b 53 51  CHE], and/or [SQ
2cba0 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d 20 66  LITE_OPEN_URI] f
2cbb0 6c 61 67 73 3a 29 5e 0a 2a 2a 0a 2a 2a 20 3c 64  lags:)^.**.** <d
2cbc0 6c 3e 0a 2a 2a 20 5e 28 3c 64 74 3e 5b 53 51 4c  l>.** ^(<dt>[SQL
2cbd0 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c  ITE_OPEN_READONL
2cbe0 59 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  Y]</dt>.** <dd>T
2cbf0 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f  he database is o
2cc00 70 65 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f 6e  pened in read-on
2cc10 6c 79 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65  ly mode.  If the
2cc20 20 64 61 74 61 62 61 73 65 20 64 6f 65 73 20 6e   database does n
2cc30 6f 74 0a 2a 2a 20 61 6c 72 65 61 64 79 20 65 78  ot.** already ex
2cc40 69 73 74 2c 20 61 6e 20 65 72 72 6f 72 20 69 73  ist, an error is
2cc50 20 72 65 74 75 72 6e 65 64 2e 3c 2f 64 64 3e 29   returned.</dd>)
2cc60 5e 0a 2a 2a 0a 2a 2a 20 5e 28 3c 64 74 3e 5b 53  ^.**.** ^(<dt>[S
2cc70 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57  QLITE_OPEN_READW
2cc80 52 49 54 45 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  RITE]</dt>.** <d
2cc90 64 3e 54 68 65 20 64 61 74 61 62 61 73 65 20 69  d>The database i
2cca0 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61  s opened for rea
2ccb0 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67  ding and writing
2ccc0 20 69 66 20 70 6f 73 73 69 62 6c 65 2c 20 6f 72   if possible, or
2ccd0 20 72 65 61 64 69 6e 67 0a 2a 2a 20 6f 6e 6c 79   reading.** only
2cce0 20 69 66 20 74 68 65 20 66 69 6c 65 20 69 73 20   if the file is 
2ccf0 77 72 69 74 65 20 70 72 6f 74 65 63 74 65 64 20  write protected 
2cd00 62 79 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67  by the operating
2cd10 20 73 79 73 74 65 6d 2e 20 20 49 6e 20 65 69 74   system.  In eit
2cd20 68 65 72 0a 2a 2a 20 63 61 73 65 20 74 68 65 20  her.** case the 
2cd30 64 61 74 61 62 61 73 65 20 6d 75 73 74 20 61 6c  database must al
2cd40 72 65 61 64 79 20 65 78 69 73 74 2c 20 6f 74 68  ready exist, oth
2cd50 65 72 77 69 73 65 20 61 6e 20 65 72 72 6f 72 20  erwise an error 
2cd60 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 64 64  is returned.</dd
2cd70 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 28 3c 64 74 3e  >)^.**.** ^(<dt>
2cd80 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41  [SQLITE_OPEN_REA
2cd90 44 57 52 49 54 45 5d 20 7c 20 5b 53 51 4c 49 54  DWRITE] | [SQLIT
2cda0 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 5d 3c 2f  E_OPEN_CREATE]</
2cdb0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 64  dt>.** <dd>The d
2cdc0 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
2cdd0 64 20 66 6f 72 20 72 65 61 64 69 6e 67 20 61 6e  d for reading an
2cde0 64 20 77 72 69 74 69 6e 67 2c 20 61 6e 64 20 69  d writing, and i
2cdf0 73 20 63 72 65 61 74 65 64 20 69 66 0a 2a 2a 20  s created if.** 
2ce00 69 74 20 64 6f 65 73 20 6e 6f 74 20 61 6c 72 65  it does not alre
2ce10 61 64 79 20 65 78 69 73 74 2e 20 54 68 69 73 20  ady exist. This 
2ce20 69 73 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  is the behavior 
2ce30 74 68 61 74 20 69 73 20 61 6c 77 61 79 73 20 75  that is always u
2ce40 73 65 64 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74  sed for.** sqlit
2ce50 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64 20 73 71  e3_open() and sq
2ce60 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 2e 3c  lite3_open16().<
2ce70 2f 64 64 3e 29 5e 0a 2a 2a 20 3c 2f 64 6c 3e 0a  /dd>)^.** </dl>.
2ce80 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 33 72 64  **.** If the 3rd
2ce90 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71   parameter to sq
2cea0 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
2ceb0 69 73 20 6e 6f 74 20 6f 6e 65 20 6f 66 20 74 68  is not one of th
2cec0 65 0a 2a 2a 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  e.** combination
2ced0 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 6f 70  s shown above op
2cee0 74 69 6f 6e 61 6c 6c 79 20 63 6f 6d 62 69 6e 65  tionally combine
2cef0 64 20 77 69 74 68 20 6f 74 68 65 72 0a 2a 2a 20  d with other.** 
2cf00 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41  [SQLITE_OPEN_REA
2cf10 44 4f 4e 4c 59 20 7c 20 53 51 4c 49 54 45 5f 4f  DONLY | SQLITE_O
2cf20 50 45 4e 5f 2a 20 62 69 74 73 5d 0a 2a 2a 20 74  PEN_* bits].** t
2cf30 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72  hen the behavior
2cf40 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a   is undefined..*
2cf50 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 5b 53 51  *.** ^If the [SQ
2cf60 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45  LITE_OPEN_NOMUTE
2cf70 58 5d 20 66 6c 61 67 20 69 73 20 73 65 74 2c 20  X] flag is set, 
2cf80 74 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73  then the databas
2cf90 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20  e connection.** 
2cfa0 6f 70 65 6e 73 20 69 6e 20 74 68 65 20 6d 75 6c  opens in the mul
2cfb0 74 69 2d 74 68 72 65 61 64 20 5b 74 68 72 65 61  ti-thread [threa
2cfc0 64 69 6e 67 20 6d 6f 64 65 5d 20 61 73 20 6c 6f  ding mode] as lo
2cfd0 6e 67 20 61 73 20 74 68 65 20 73 69 6e 67 6c 65  ng as the single
2cfe0 2d 74 68 72 65 61 64 0a 2a 2a 20 6d 6f 64 65 20  -thread.** mode 
2cff0 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74  has not been set
2d000 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65   at compile-time
2d010 20 6f 72 20 73 74 61 72 74 2d 74 69 6d 65 2e 20   or start-time. 
2d020 20 5e 49 66 20 74 68 65 0a 2a 2a 20 5b 53 51 4c   ^If the.** [SQL
2d030 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54  ITE_OPEN_FULLMUT
2d040 45 58 5d 20 66 6c 61 67 20 69 73 20 73 65 74 20  EX] flag is set 
2d050 74 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73  then the databas
2d060 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 70 65  e connection ope
2d070 6e 73 0a 2a 2a 20 69 6e 20 74 68 65 20 73 65 72  ns.** in the ser
2d080 69 61 6c 69 7a 65 64 20 5b 74 68 72 65 61 64 69  ialized [threadi
2d090 6e 67 20 6d 6f 64 65 5d 20 75 6e 6c 65 73 73 20  ng mode] unless 
2d0a0 73 69 6e 67 6c 65 2d 74 68 72 65 61 64 20 77 61  single-thread wa
2d0b0 73 0a 2a 2a 20 70 72 65 76 69 6f 75 73 6c 79 20  s.** previously 
2d0c0 73 65 6c 65 63 74 65 64 20 61 74 20 63 6f 6d 70  selected at comp
2d0d0 69 6c 65 2d 74 69 6d 65 20 6f 72 20 73 74 61 72  ile-time or star
2d0e0 74 2d 74 69 6d 65 2e 0a 2a 2a 20 5e 54 68 65 20  t-time..** ^The 
2d0f0 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 48 41  [SQLITE_OPEN_SHA
2d100 52 45 44 43 41 43 48 45 5d 20 66 6c 61 67 20 63  REDCACHE] flag c
2d110 61 75 73 65 73 20 74 68 65 20 64 61 74 61 62 61  auses the databa
2d120 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f  se connection to
2d130 20 62 65 0a 2a 2a 20 65 6c 69 67 69 62 6c 65 20   be.** eligible 
2d140 74 6f 20 75 73 65 20 5b 73 68 61 72 65 64 20 63  to use [shared c
2d150 61 63 68 65 20 6d 6f 64 65 5d 2c 20 72 65 67 61  ache mode], rega
2d160 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65  rdless of whethe
2d170 72 20 6f 72 20 6e 6f 74 20 73 68 61 72 65 64 0a  r or not shared.
2d180 2a 2a 20 63 61 63 68 65 20 69 73 20 65 6e 61 62  ** cache is enab
2d190 6c 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  led using [sqlit
2d1a0 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64  e3_enable_shared
2d1b0 5f 63 61 63 68 65 28 29 5d 2e 20 20 5e 54 68 65  _cache()].  ^The
2d1c0 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  .** [SQLITE_OPEN
2d1d0 5f 50 52 49 56 41 54 45 43 41 43 48 45 5d 20 66  _PRIVATECACHE] f
2d1e0 6c 61 67 20 63 61 75 73 65 73 20 74 68 65 20 64  lag causes the d
2d1f0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2d200 6f 6e 20 74 6f 20 6e 6f 74 0a 2a 2a 20 70 61 72  on to not.** par
2d210 74 69 63 69 70 61 74 65 20 69 6e 20 5b 73 68 61  ticipate in [sha
2d220 72 65 64 20 63 61 63 68 65 20 6d 6f 64 65 5d 20  red cache mode] 
2d230 65 76 65 6e 20 69 66 20 69 74 20 69 73 20 65 6e  even if it is en
2d240 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  abled..**.** ^Th
2d250 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
2d260 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70  er to sqlite3_op
2d270 65 6e 5f 76 32 28 29 20 69 73 20 74 68 65 20 6e  en_v2() is the n
2d280 61 6d 65 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 73  ame of the.** [s
2d290 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65  qlite3_vfs] obje
2d2a0 63 74 20 74 68 61 74 20 64 65 66 69 6e 65 73 20  ct that defines 
2d2b0 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
2d2c0 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65 20 74  stem interface t
2d2d0 68 61 74 0a 2a 2a 20 74 68 65 20 6e 65 77 20 64  hat.** the new d
2d2e0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2d2f0 6f 6e 20 73 68 6f 75 6c 64 20 75 73 65 2e 20 20  on should use.  
2d300 5e 49 66 20 74 68 65 20 66 6f 75 72 74 68 20 70  ^If the fourth p
2d310 61 72 61 6d 65 74 65 72 20 69 73 0a 2a 2a 20 61  arameter is.** a
2d320 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68   NULL pointer th
2d330 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b  en the default [
2d340 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a  sqlite3_vfs] obj
2d350 65 63 74 20 69 73 20 75 73 65 64 2e 0a 2a 2a 0a  ect is used..**.
2d360 2a 2a 20 5e 49 66 20 74 68 65 20 66 69 6c 65 6e  ** ^If the filen
2d370 61 6d 65 20 69 73 20 22 3a 6d 65 6d 6f 72 79 3a  ame is ":memory:
2d380 22 2c 20 74 68 65 6e 20 61 20 70 72 69 76 61 74  ", then a privat
2d390 65 2c 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 2d  e, temporary in-
2d3a0 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 0a  memory database.
2d3b0 2a 2a 20 69 73 20 63 72 65 61 74 65 64 20 66 6f  ** is created fo
2d3c0 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  r the connection
2d3d0 2e 20 20 5e 54 68 69 73 20 69 6e 2d 6d 65 6d 6f  .  ^This in-memo
2d3e0 72 79 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c  ry database will
2d3f0 20 76 61 6e 69 73 68 20 77 68 65 6e 0a 2a 2a 20   vanish when.** 
2d400 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
2d410 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65  nection is close
2d420 64 2e 20 20 46 75 74 75 72 65 20 76 65 72 73 69  d.  Future versi
2d430 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69  ons of SQLite mi
2d440 67 68 74 0a 2a 2a 20 6d 61 6b 65 20 75 73 65 20  ght.** make use 
2d450 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 73 70  of additional sp
2d460 65 63 69 61 6c 20 66 69 6c 65 6e 61 6d 65 73 20  ecial filenames 
2d470 74 68 61 74 20 62 65 67 69 6e 20 77 69 74 68 20  that begin with 
2d480 74 68 65 20 22 3a 22 20 63 68 61 72 61 63 74 65  the ":" characte
2d490 72 2e 0a 2a 2a 20 49 74 20 69 73 20 72 65 63 6f  r..** It is reco
2d4a0 6d 6d 65 6e 64 65 64 20 74 68 61 74 20 77 68 65  mmended that whe
2d4b0 6e 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c  n a database fil
2d4c0 65 6e 61 6d 65 20 61 63 74 75 61 6c 6c 79 20 64  ename actually d
2d4d0 6f 65 73 20 62 65 67 69 6e 20 77 69 74 68 0a 2a  oes begin with.*
2d4e0 2a 20 61 20 22 3a 22 20 63 68 61 72 61 63 74 65  * a ":" characte
2d4f0 72 20 79 6f 75 20 73 68 6f 75 6c 64 20 70 72 65  r you should pre
2d500 66 69 78 20 74 68 65 20 66 69 6c 65 6e 61 6d 65  fix the filename
2d510 20 77 69 74 68 20 61 20 70 61 74 68 6e 61 6d 65   with a pathname
2d520 20 73 75 63 68 20 61 73 0a 2a 2a 20 22 2e 2f 22   such as.** "./"
2d530 20 74 6f 20 61 76 6f 69 64 20 61 6d 62 69 67 75   to avoid ambigu
2d540 69 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74  ity..**.** ^If t
2d550 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 61  he filename is a
2d560 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2c 20  n empty string, 
2d570 74 68 65 6e 20 61 20 70 72 69 76 61 74 65 2c 20  then a private, 
2d580 74 65 6d 70 6f 72 61 72 79 0a 2a 2a 20 6f 6e 2d  temporary.** on-
2d590 64 69 73 6b 20 64 61 74 61 62 61 73 65 20 77 69  disk database wi
2d5a0 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20  ll be created.  
2d5b0 5e 54 68 69 73 20 70 72 69 76 61 74 65 20 64 61  ^This private da
2d5c0 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65 0a 2a  tabase will be.*
2d5d0 2a 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  * automatically 
2d5e0 64 65 6c 65 74 65 64 20 61 73 20 73 6f 6f 6e 20  deleted as soon 
2d5f0 61 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  as the database 
2d600 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c  connection is cl
2d610 6f 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 55 52  osed..**.** [[UR
2d620 49 20 66 69 6c 65 6e 61 6d 65 73 20 69 6e 20 73  I filenames in s
2d630 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 5d 20  qlite3_open()]] 
2d640 3c 68 33 3e 55 52 49 20 46 69 6c 65 6e 61 6d 65  <h3>URI Filename
2d650 73 3c 2f 68 33 3e 0a 2a 2a 0a 2a 2a 20 5e 49 66  s</h3>.**.** ^If
2d660 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d 20   [URI filename] 
2d670 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 69  interpretation i
2d680 73 20 65 6e 61 62 6c 65 64 2c 20 61 6e 64 20 74  s enabled, and t
2d690 68 65 20 66 69 6c 65 6e 61 6d 65 20 61 72 67 75  he filename argu
2d6a0 6d 65 6e 74 0a 2a 2a 20 62 65 67 69 6e 73 20 77  ment.** begins w
2d6b0 69 74 68 20 22 66 69 6c 65 3a 22 2c 20 74 68 65  ith "file:", the
2d6c0 6e 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 69  n the filename i
2d6d0 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73  s interpreted as
2d6e0 20 61 20 55 52 49 2e 20 5e 55 52 49 0a 2a 2a 20   a URI. ^URI.** 
2d6f0 66 69 6c 65 6e 61 6d 65 20 69 6e 74 65 72 70 72  filename interpr
2d700 65 74 61 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c  etation is enabl
2d710 65 64 20 69 66 20 74 68 65 20 5b 53 51 4c 49 54  ed if the [SQLIT
2d720 45 5f 4f 50 45 4e 5f 55 52 49 5d 20 66 6c 61 67  E_OPEN_URI] flag
2d730 20 69 73 0a 2a 2a 20 73 65 74 20 69 6e 20 74 68   is.** set in th
2d740 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74  e third argument
2d750 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   to sqlite3_open
2d760 5f 76 32 28 29 2c 20 6f 72 20 69 66 20 69 74 20  _v2(), or if it 
2d770 68 61 73 0a 2a 2a 20 62 65 65 6e 20 65 6e 61 62  has.** been enab
2d780 6c 65 64 20 67 6c 6f 62 61 6c 6c 79 20 75 73 69  led globally usi
2d790 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43  ng the [SQLITE_C
2d7a0 4f 4e 46 49 47 5f 55 52 49 5d 20 6f 70 74 69 6f  ONFIG_URI] optio
2d7b0 6e 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 5b 73  n with the.** [s
2d7c0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
2d7d0 20 6d 65 74 68 6f 64 20 6f 72 20 62 79 20 74 68   method or by th
2d7e0 65 20 5b 53 51 4c 49 54 45 5f 55 53 45 5f 55 52  e [SQLITE_USE_UR
2d7f0 49 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  I] compile-time 
2d800 6f 70 74 69 6f 6e 2e 0a 2a 2a 20 55 52 49 20 66  option..** URI f
2d810 69 6c 65 6e 61 6d 65 20 69 6e 74 65 72 70 72 65  ilename interpre
2d820 74 61 74 69 6f 6e 20 69 73 20 74 75 72 6e 65 64  tation is turned
2d830 20 6f 66 66 0a 2a 2a 20 62 79 20 64 65 66 61 75   off.** by defau
2d840 6c 74 2c 20 62 75 74 20 66 75 74 75 72 65 20 72  lt, but future r
2d850 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74  eleases of SQLit
2d860 65 20 6d 69 67 68 74 20 65 6e 61 62 6c 65 20 55  e might enable U
2d870 52 49 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a 20 69  RI filename.** i
2d880 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 62 79  nterpretation by
2d890 20 64 65 66 61 75 6c 74 2e 20 20 53 65 65 20 22   default.  See "
2d8a0 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 5d 22  [URI filenames]"
2d8b0 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a   for additional.
2d8c0 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  ** information..
2d8d0 2a 2a 0a 2a 2a 20 55 52 49 20 66 69 6c 65 6e 61  **.** URI filena
2d8e0 6d 65 73 20 61 72 65 20 70 61 72 73 65 64 20 61  mes are parsed a
2d8f0 63 63 6f 72 64 69 6e 67 20 74 6f 20 52 46 43 20  ccording to RFC 
2d900 33 39 38 36 2e 20 5e 49 66 20 74 68 65 20 55 52  3986. ^If the UR
2d910 49 20 63 6f 6e 74 61 69 6e 73 20 61 6e 0a 2a 2a  I contains an.**
2d920 20 61 75 74 68 6f 72 69 74 79 2c 20 74 68 65 6e   authority, then
2d930 20 69 74 20 6d 75 73 74 20 62 65 20 65 69 74 68   it must be eith
2d940 65 72 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  er an empty stri
2d950 6e 67 20 6f 72 20 74 68 65 20 73 74 72 69 6e 67  ng or the string
2d960 20 0a 2a 2a 20 22 6c 6f 63 61 6c 68 6f 73 74 22   .** "localhost"
2d970 2e 20 5e 49 66 20 74 68 65 20 61 75 74 68 6f 72  . ^If the author
2d980 69 74 79 20 69 73 20 6e 6f 74 20 61 6e 20 65 6d  ity is not an em
2d990 70 74 79 20 73 74 72 69 6e 67 20 6f 72 20 22 6c  pty string or "l
2d9a0 6f 63 61 6c 68 6f 73 74 22 2c 20 61 6e 20 0a 2a  ocalhost", an .*
2d9b0 2a 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72  * error is retur
2d9c0 6e 65 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 65  ned to the calle
2d9d0 72 2e 20 5e 54 68 65 20 66 72 61 67 6d 65 6e 74  r. ^The fragment
2d9e0 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 61 20   component of a 
2d9f0 55 52 49 2c 20 69 66 20 0a 2a 2a 20 70 72 65 73  URI, if .** pres
2da00 65 6e 74 2c 20 69 73 20 69 67 6e 6f 72 65 64 2e  ent, is ignored.
2da10 0a 2a 2a 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 75  .**.** ^SQLite u
2da20 73 65 73 20 74 68 65 20 70 61 74 68 20 63 6f 6d  ses the path com
2da30 70 6f 6e 65 6e 74 20 6f 66 20 74 68 65 20 55 52  ponent of the UR
2da40 49 20 61 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  I as the name of
2da50 20 74 68 65 20 64 69 73 6b 20 66 69 6c 65 0a 2a   the disk file.*
2da60 2a 20 77 68 69 63 68 20 63 6f 6e 74 61 69 6e 73  * which contains
2da70 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 5e   the database. ^
2da80 49 66 20 74 68 65 20 70 61 74 68 20 62 65 67 69  If the path begi
2da90 6e 73 20 77 69 74 68 20 61 20 27 2f 27 20 63 68  ns with a '/' ch
2daa0 61 72 61 63 74 65 72 2c 20 0a 2a 2a 20 74 68 65  aracter, .** the
2dab0 6e 20 69 74 20 69 73 20 69 6e 74 65 72 70 72 65  n it is interpre
2dac0 74 65 64 20 61 73 20 61 6e 20 61 62 73 6f 6c 75  ted as an absolu
2dad0 74 65 20 70 61 74 68 2e 20 5e 49 66 20 74 68 65  te path. ^If the
2dae0 20 70 61 74 68 20 64 6f 65 73 20 6e 6f 74 20 62   path does not b
2daf0 65 67 69 6e 20 0a 2a 2a 20 77 69 74 68 20 61 20  egin .** with a 
2db00 27 2f 27 20 28 6d 65 61 6e 69 6e 67 20 74 68 61  '/' (meaning tha
2db10 74 20 74 68 65 20 61 75 74 68 6f 72 69 74 79 20  t the authority 
2db20 73 65 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74  section is omitt
2db30 65 64 20 66 72 6f 6d 20 74 68 65 20 55 52 49 29  ed from the URI)
2db40 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 70 61 74  .** then the pat
2db50 68 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64  h is interpreted
2db60 20 61 73 20 61 20 72 65 6c 61 74 69 76 65 20 70   as a relative p
2db70 61 74 68 2e 20 0a 2a 2a 20 5e 28 4f 6e 20 77 69  ath. .** ^(On wi
2db80 6e 64 6f 77 73 2c 20 74 68 65 20 66 69 72 73 74  ndows, the first
2db90 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 61 6e   component of an
2dba0 20 61 62 73 6f 6c 75 74 65 20 70 61 74 68 20 0a   absolute path .
2dbb0 2a 2a 20 69 73 20 61 20 64 72 69 76 65 20 73 70  ** is a drive sp
2dbc0 65 63 69 66 69 63 61 74 69 6f 6e 20 28 65 2e 67  ecification (e.g
2dbd0 2e 20 22 43 3a 22 29 2e 29 5e 0a 2a 2a 0a 2a 2a  . "C:").)^.**.**
2dbe0 20 5b 5b 63 6f 72 65 20 55 52 49 20 71 75 65 72   [[core URI quer
2dbf0 79 20 70 61 72 61 6d 65 74 65 72 73 5d 5d 0a 2a  y parameters]].*
2dc00 2a 20 54 68 65 20 71 75 65 72 79 20 63 6f 6d 70  * The query comp
2dc10 6f 6e 65 6e 74 20 6f 66 20 61 20 55 52 49 20 6d  onent of a URI m
2dc20 61 79 20 63 6f 6e 74 61 69 6e 20 70 61 72 61 6d  ay contain param
2dc30 65 74 65 72 73 20 74 68 61 74 20 61 72 65 20 69  eters that are i
2dc40 6e 74 65 72 70 72 65 74 65 64 0a 2a 2a 20 65 69  nterpreted.** ei
2dc50 74 68 65 72 20 62 79 20 53 51 4c 69 74 65 20 69  ther by SQLite i
2dc60 74 73 65 6c 66 2c 20 6f 72 20 62 79 20 61 20 5b  tself, or by a [
2dc70 56 46 53 20 7c 20 63 75 73 74 6f 6d 20 56 46 53  VFS | custom VFS
2dc80 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 5d   implementation]
2dc90 2e 0a 2a 2a 20 53 51 4c 69 74 65 20 61 6e 64 20  ..** SQLite and 
2dca0 69 74 73 20 62 75 69 6c 74 2d 69 6e 20 5b 56 46  its built-in [VF
2dcb0 53 65 73 5d 20 69 6e 74 65 72 70 72 65 74 20 74  Ses] interpret t
2dcc0 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20  he.** following 
2dcd0 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 73  query parameters
2dce0 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20  :.**.** <ul>.** 
2dcf0 20 20 3c 6c 69 3e 20 3c 62 3e 76 66 73 3c 2f 62    <li> <b>vfs</b
2dd00 3e 3a 20 5e 54 68 65 20 22 76 66 73 22 20 70 61  >: ^The "vfs" pa
2dd10 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 75  rameter may be u
2dd20 73 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 74  sed to specify t
2dd30 68 65 20 6e 61 6d 65 20 6f 66 0a 2a 2a 20 20 20  he name of.**   
2dd40 20 20 61 20 56 46 53 20 6f 62 6a 65 63 74 20 74    a VFS object t
2dd50 68 61 74 20 70 72 6f 76 69 64 65 73 20 74 68 65  hat provides the
2dd60 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
2dd70 6d 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 74  m interface that
2dd80 20 73 68 6f 75 6c 64 0a 2a 2a 20 20 20 20 20 62   should.**     b
2dd90 65 20 75 73 65 64 20 74 6f 20 61 63 63 65 73 73  e used to access
2dda0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
2ddb0 6c 65 20 6f 6e 20 64 69 73 6b 2e 20 5e 49 66 20  le on disk. ^If 
2ddc0 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 73  this option is s
2ddd0 65 74 20 74 6f 0a 2a 2a 20 20 20 20 20 61 6e 20  et to.**     an 
2dde0 65 6d 70 74 79 20 73 74 72 69 6e 67 20 74 68 65  empty string the
2ddf0 20 64 65 66 61 75 6c 74 20 56 46 53 20 6f 62 6a   default VFS obj
2de00 65 63 74 20 69 73 20 75 73 65 64 2e 20 5e 53 70  ect is used. ^Sp
2de10 65 63 69 66 79 69 6e 67 20 61 6e 20 75 6e 6b 6e  ecifying an unkn
2de20 6f 77 6e 0a 2a 2a 20 20 20 20 20 56 46 53 20 69  own.**     VFS i
2de30 73 20 61 6e 20 65 72 72 6f 72 2e 20 5e 49 66 20  s an error. ^If 
2de40 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
2de50 29 20 69 73 20 75 73 65 64 20 61 6e 64 20 74 68  ) is used and th
2de60 65 20 76 66 73 20 6f 70 74 69 6f 6e 20 69 73 0a  e vfs option is.
2de70 2a 2a 20 20 20 20 20 70 72 65 73 65 6e 74 2c 20  **     present, 
2de80 74 68 65 6e 20 74 68 65 20 56 46 53 20 73 70 65  then the VFS spe
2de90 63 69 66 69 65 64 20 62 79 20 74 68 65 20 6f 70  cified by the op
2dea0 74 69 6f 6e 20 74 61 6b 65 73 20 70 72 65 63 65  tion takes prece
2deb0 64 65 6e 63 65 20 6f 76 65 72 0a 2a 2a 20 20 20  dence over.**   
2dec0 20 20 74 68 65 20 76 61 6c 75 65 20 70 61 73 73    the value pass
2ded0 65 64 20 61 73 20 74 68 65 20 66 6f 75 72 74 68  ed as the fourth
2dee0 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71   parameter to sq
2def0 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e  lite3_open_v2().
2df00 0a 2a 2a 0a 2a 2a 20 20 20 3c 6c 69 3e 20 3c 62  .**.**   <li> <b
2df10 3e 6d 6f 64 65 3c 2f 62 3e 3a 20 5e 28 54 68 65  >mode</b>: ^(The
2df20 20 6d 6f 64 65 20 70 61 72 61 6d 65 74 65 72 20   mode parameter 
2df30 6d 61 79 20 62 65 20 73 65 74 20 74 6f 20 65 69  may be set to ei
2df40 74 68 65 72 20 22 72 6f 22 2c 20 22 72 77 22 2c  ther "ro", "rw",
2df50 0a 2a 2a 20 20 20 20 20 22 72 77 63 22 2c 20 6f  .**     "rwc", o
2df60 72 20 22 6d 65 6d 6f 72 79 22 2e 20 41 74 74 65  r "memory". Atte
2df70 6d 70 74 69 6e 67 20 74 6f 20 73 65 74 20 69 74  mpting to set it
2df80 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 20 76 61   to any other va
2df90 6c 75 65 20 69 73 0a 2a 2a 20 20 20 20 20 61 6e  lue is.**     an
2dfa0 20 65 72 72 6f 72 29 5e 2e 20 0a 2a 2a 20 20 20   error)^. .**   
2dfb0 20 20 5e 49 66 20 22 72 6f 22 20 69 73 20 73 70    ^If "ro" is sp
2dfc0 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68  ecified, then th
2dfd0 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70  e database is op
2dfe0 65 6e 65 64 20 66 6f 72 20 72 65 61 64 2d 6f 6e  ened for read-on
2dff0 6c 79 20 0a 2a 2a 20 20 20 20 20 61 63 63 65 73  ly .**     acces
2e000 73 2c 20 6a 75 73 74 20 61 73 20 69 66 20 74 68  s, just as if th
2e010 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  e [SQLITE_OPEN_R
2e020 45 41 44 4f 4e 4c 59 5d 20 66 6c 61 67 20 68 61  EADONLY] flag ha
2e030 64 20 62 65 65 6e 20 73 65 74 20 69 6e 20 74 68  d been set in th
2e040 65 20 0a 2a 2a 20 20 20 20 20 74 68 69 72 64 20  e .**     third 
2e050 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69  argument to sqli
2e060 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 5e  te3_open_v2(). ^
2e070 49 66 20 74 68 65 20 6d 6f 64 65 20 6f 70 74 69  If the mode opti
2e080 6f 6e 20 69 73 20 73 65 74 20 74 6f 20 0a 2a 2a  on is set to .**
2e090 20 20 20 20 20 22 72 77 22 2c 20 74 68 65 6e 20       "rw", then 
2e0a0 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
2e0b0 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64 2d  opened for read-
2e0c0 77 72 69 74 65 20 28 62 75 74 20 6e 6f 74 20 63  write (but not c
2e0d0 72 65 61 74 65 29 20 0a 2a 2a 20 20 20 20 20 61  reate) .**     a
2e0e0 63 63 65 73 73 2c 20 61 73 20 69 66 20 53 51 4c  ccess, as if SQL
2e0f0 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49  ITE_OPEN_READWRI
2e100 54 45 20 28 62 75 74 20 6e 6f 74 20 53 51 4c 49  TE (but not SQLI
2e110 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 29 20  TE_OPEN_CREATE) 
2e120 68 61 64 20 0a 2a 2a 20 20 20 20 20 62 65 65 6e  had .**     been
2e130 20 73 65 74 2e 20 5e 56 61 6c 75 65 20 22 72 77   set. ^Value "rw
2e140 63 22 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74  c" is equivalent
2e150 20 74 6f 20 73 65 74 74 69 6e 67 20 62 6f 74 68   to setting both
2e160 20 0a 2a 2a 20 20 20 20 20 53 51 4c 49 54 45 5f   .**     SQLITE_
2e170 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45 20 61  OPEN_READWRITE a
2e180 6e 64 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43  nd SQLITE_OPEN_C
2e190 52 45 41 54 45 2e 20 20 5e 49 66 20 74 68 65 20  REATE.  ^If the 
2e1a0 6d 6f 64 65 20 6f 70 74 69 6f 6e 20 69 73 0a 2a  mode option is.*
2e1b0 2a 20 20 20 20 20 73 65 74 20 74 6f 20 22 6d 65  *     set to "me
2e1c0 6d 6f 72 79 22 20 74 68 65 6e 20 61 20 70 75 72  mory" then a pur
2e1d0 65 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  e [in-memory dat
2e1e0 61 62 61 73 65 5d 20 74 68 61 74 20 6e 65 76 65  abase] that neve
2e1f0 72 20 72 65 61 64 73 0a 2a 2a 20 20 20 20 20 6f  r reads.**     o
2e200 72 20 77 72 69 74 65 73 20 66 72 6f 6d 20 64 69  r writes from di
2e210 73 6b 20 69 73 20 75 73 65 64 2e 20 5e 49 74 20  sk is used. ^It 
2e220 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 73  is an error to s
2e230 70 65 63 69 66 79 20 61 20 76 61 6c 75 65 20 66  pecify a value f
2e240 6f 72 0a 2a 2a 20 20 20 20 20 74 68 65 20 6d 6f  or.**     the mo
2e250 64 65 20 70 61 72 61 6d 65 74 65 72 20 74 68 61  de parameter tha
2e260 74 20 69 73 20 6c 65 73 73 20 72 65 73 74 72 69  t is less restri
2e270 63 74 69 76 65 20 74 68 61 6e 20 74 68 61 74 20  ctive than that 
2e280 73 70 65 63 69 66 69 65 64 20 62 79 0a 2a 2a 20  specified by.** 
2e290 20 20 20 20 74 68 65 20 66 6c 61 67 73 20 70 61      the flags pa
2e2a0 73 73 65 64 20 69 6e 20 74 68 65 20 74 68 69 72  ssed in the thir
2e2b0 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  d parameter to s
2e2c0 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29  qlite3_open_v2()
2e2d0 2e 0a 2a 2a 0a 2a 2a 20 20 20 3c 6c 69 3e 20 3c  ..**.**   <li> <
2e2e0 62 3e 63 61 63 68 65 3c 2f 62 3e 3a 20 5e 54 68  b>cache</b>: ^Th
2e2f0 65 20 63 61 63 68 65 20 70 61 72 61 6d 65 74 65  e cache paramete
2e300 72 20 6d 61 79 20 62 65 20 73 65 74 20 74 6f 20  r may be set to 
2e310 65 69 74 68 65 72 20 22 73 68 61 72 65 64 22 20  either "shared" 
2e320 6f 72 0a 2a 2a 20 20 20 20 20 22 70 72 69 76 61  or.**     "priva
2e330 74 65 22 2e 20 5e 53 65 74 74 69 6e 67 20 69 74  te". ^Setting it
2e340 20 74 6f 20 22 73 68 61 72 65 64 22 20 69 73 20   to "shared" is 
2e350 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 73 65  equivalent to se
2e360 74 74 69 6e 67 20 74 68 65 0a 2a 2a 20 20 20 20  tting the.**    
2e370 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 48 41   SQLITE_OPEN_SHA
2e380 52 45 44 43 41 43 48 45 20 62 69 74 20 69 6e 20  REDCACHE bit in 
2e390 74 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65  the flags argume
2e3a0 6e 74 20 70 61 73 73 65 64 20 74 6f 0a 2a 2a 20  nt passed to.** 
2e3b0 20 20 20 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e      sqlite3_open
2e3c0 5f 76 32 28 29 2e 20 5e 53 65 74 74 69 6e 67 20  _v2(). ^Setting 
2e3d0 74 68 65 20 63 61 63 68 65 20 70 61 72 61 6d 65  the cache parame
2e3e0 74 65 72 20 74 6f 20 22 70 72 69 76 61 74 65 22  ter to "private"
2e3f0 20 69 73 20 0a 2a 2a 20 20 20 20 20 65 71 75 69   is .**     equi
2e400 76 61 6c 65 6e 74 20 74 6f 20 73 65 74 74 69 6e  valent to settin
2e410 67 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 50 45  g the SQLITE_OPE
2e420 4e 5f 50 52 49 56 41 54 45 43 41 43 48 45 20 62  N_PRIVATECACHE b
2e430 69 74 2e 0a 2a 2a 20 20 20 20 20 5e 49 66 20 73  it..**     ^If s
2e440 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29  qlite3_open_v2()
2e450 20 69 73 20 75 73 65 64 20 61 6e 64 20 74 68 65   is used and the
2e460 20 22 63 61 63 68 65 22 20 70 61 72 61 6d 65 74   "cache" paramet
2e470 65 72 20 69 73 20 70 72 65 73 65 6e 74 20 69 6e  er is present in
2e480 0a 2a 2a 20 20 20 20 20 61 20 55 52 49 20 66 69  .**     a URI fi
2e490 6c 65 6e 61 6d 65 2c 20 69 74 73 20 76 61 6c 75  lename, its valu
2e4a0 65 20 6f 76 65 72 72 69 64 65 73 20 61 6e 79 20  e overrides any 
2e4b0 62 65 68 61 76 69 6f 72 20 72 65 71 75 65 73 74  behavior request
2e4c0 65 64 20 62 79 20 73 65 74 74 69 6e 67 0a 2a 2a  ed by setting.**
2e4d0 20 20 20 20 20 53 51 4c 49 54 45 5f 4f 50 45 4e       SQLITE_OPEN
2e4e0 5f 50 52 49 56 41 54 45 43 41 43 48 45 20 6f 72  _PRIVATECACHE or
2e4f0 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 48 41   SQLITE_OPEN_SHA
2e500 52 45 44 43 41 43 48 45 20 66 6c 61 67 2e 0a 2a  REDCACHE flag..*
2e510 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e 70 73  *.**  <li> <b>ps
2e520 6f 77 3c 2f 62 3e 3a 20 5e 54 68 65 20 70 73 6f  ow</b>: ^The pso
2e530 77 20 70 61 72 61 6d 65 74 65 72 20 69 6e 64 69  w parameter indi
2e540 63 61 74 65 73 20 77 68 65 74 68 65 72 20 6f 72  cates whether or
2e550 20 6e 6f 74 20 74 68 65 0a 2a 2a 20 20 20 20 20   not the.**     
2e560 5b 70 6f 77 65 72 73 61 66 65 20 6f 76 65 72 77  [powersafe overw
2e570 72 69 74 65 5d 20 70 72 6f 70 65 72 74 79 20 64  rite] property d
2e580 6f 65 73 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20  oes or does not 
2e590 61 70 70 6c 79 20 74 6f 20 74 68 65 0a 2a 2a 20  apply to the.** 
2e5a0 20 20 20 20 73 74 6f 72 61 67 65 20 6d 65 64 69      storage medi
2e5b0 61 20 6f 6e 20 77 68 69 63 68 20 74 68 65 20 64  a on which the d
2e5c0 61 74 61 62 61 73 65 20 66 69 6c 65 20 72 65 73  atabase file res
2e5d0 69 64 65 73 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69  ides..**.**  <li
2e5e0 3e 20 3c 62 3e 6e 6f 6c 6f 63 6b 3c 2f 62 3e 3a  > <b>nolock</b>:
2e5f0 20 5e 54 68 65 20 6e 6f 6c 6f 63 6b 20 70 61 72   ^The nolock par
2e600 61 6d 65 74 65 72 20 69 73 20 61 20 62 6f 6f 6c  ameter is a bool
2e610 65 61 6e 20 71 75 65 72 79 20 70 61 72 61 6d 65  ean query parame
2e620 74 65 72 0a 2a 2a 20 20 20 20 20 77 68 69 63 68  ter.**     which
2e630 20 69 66 20 73 65 74 20 64 69 73 61 62 6c 65 73   if set disables
2e640 20 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 69 6e   file locking in
2e650 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61   rollback journa
2e660 6c 20 6d 6f 64 65 73 2e 20 20 54 68 69 73 0a 2a  l modes.  This.*
2e670 2a 20 20 20 20 20 69 73 20 75 73 65 66 75 6c 20  *     is useful 
2e680 66 6f 72 20 61 63 63 65 73 73 69 6e 67 20 61 20  for accessing a 
2e690 64 61 74 61 62 61 73 65 20 6f 6e 20 61 20 66 69  database on a fi
2e6a0 6c 65 73 79 73 74 65 6d 20 74 68 61 74 20 64 6f  lesystem that do
2e6b0 65 73 20 6e 6f 74 0a 2a 2a 20 20 20 20 20 73 75  es not.**     su
2e6c0 70 70 6f 72 74 20 6c 6f 63 6b 69 6e 67 2e 20 20  pport locking.  
2e6d0 43 61 75 74 69 6f 6e 3a 20 20 44 61 74 61 62 61  Caution:  Databa
2e6e0 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 20 6d 69  se corruption mi
2e6f0 67 68 74 20 72 65 73 75 6c 74 20 69 66 20 74 77  ght result if tw
2e700 6f 0a 2a 2a 20 20 20 20 20 6f 72 20 6d 6f 72 65  o.**     or more
2e710 20 70 72 6f 63 65 73 73 65 73 20 77 72 69 74 65   processes write
2e720 20 74 6f 20 74 68 65 20 73 61 6d 65 20 64 61 74   to the same dat
2e730 61 62 61 73 65 20 61 6e 64 20 61 6e 79 20 6f 6e  abase and any on
2e740 65 20 6f 66 20 74 68 6f 73 65 0a 2a 2a 20 20 20  e of those.**   
2e750 20 20 70 72 6f 63 65 73 73 65 73 20 75 73 65 73    processes uses
2e760 20 6e 6f 6c 6f 63 6b 3d 31 2e 0a 2a 2a 0a 2a 2a   nolock=1..**.**
2e770 20 20 3c 6c 69 3e 20 3c 62 3e 69 6d 6d 75 74 61    <li> <b>immuta
2e780 62 6c 65 3c 2f 62 3e 3a 20 5e 54 68 65 20 69 6d  ble</b>: ^The im
2e790 6d 75 74 61 62 6c 65 20 70 61 72 61 6d 65 74 65  mutable paramete
2e7a0 72 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 71  r is a boolean q
2e7b0 75 65 72 79 0a 2a 2a 20 20 20 20 20 70 61 72 61  uery.**     para
2e7c0 6d 65 74 65 72 20 74 68 61 74 20 69 6e 64 69 63  meter that indic
2e7d0 61 74 65 73 20 74 68 61 74 20 74 68 65 20 64 61  ates that the da
2e7e0 74 61 62 61 73 65 20 66 69 6c 65 20 69 73 20 73  tabase file is s
2e7f0 74 6f 72 65 64 20 6f 6e 0a 2a 2a 20 20 20 20 20  tored on.**     
2e800 72 65 61 64 2d 6f 6e 6c 79 20 6d 65 64 69 61 2e  read-only media.
2e810 20 20 5e 57 68 65 6e 20 69 6d 6d 75 74 61 62 6c    ^When immutabl
2e820 65 20 69 73 20 73 65 74 2c 20 53 51 4c 69 74 65  e is set, SQLite
2e830 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 74 68   assumes that th
2e840 65 0a 2a 2a 20 20 20 20 20 64 61 74 61 62 61 73  e.**     databas
2e850 65 20 66 69 6c 65 20 63 61 6e 6e 6f 74 20 62 65  e file cannot be
2e860 20 63 68 61 6e 67 65 64 2c 20 65 76 65 6e 20 62   changed, even b
2e870 79 20 61 20 70 72 6f 63 65 73 73 20 77 69 74 68  y a process with
2e880 20 68 69 67 68 65 72 0a 2a 2a 20 20 20 20 20 70   higher.**     p
2e890 72 69 76 69 6c 65 67 65 2c 20 61 6e 64 20 73 6f  rivilege, and so
2e8a0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
2e8b0 20 6f 70 65 6e 65 64 20 72 65 61 64 2d 6f 6e 6c   opened read-onl
2e8c0 79 20 61 6e 64 20 61 6c 6c 20 6c 6f 63 6b 69 6e  y and all lockin
2e8d0 67 0a 2a 2a 20 20 20 20 20 61 6e 64 20 63 68 61  g.**     and cha
2e8e0 6e 67 65 20 64 65 74 65 63 74 69 6f 6e 20 69 73  nge detection is
2e8f0 20 64 69 73 61 62 6c 65 64 2e 20 20 43 61 75 74   disabled.  Caut
2e900 69 6f 6e 3a 20 53 65 74 74 69 6e 67 20 74 68 65  ion: Setting the
2e910 20 69 6d 6d 75 74 61 62 6c 65 0a 2a 2a 20 20 20   immutable.**   
2e920 20 20 70 72 6f 70 65 72 74 79 20 6f 6e 20 61 20    property on a 
2e930 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 74 68  database file th
2e940 61 74 20 64 6f 65 73 20 69 6e 20 66 61 63 74 20  at does in fact 
2e950 63 68 61 6e 67 65 20 63 61 6e 20 72 65 73 75 6c  change can resul
2e960 74 0a 2a 2a 20 20 20 20 20 69 6e 20 69 6e 63 6f  t.**     in inco
2e970 72 72 65 63 74 20 71 75 65 72 79 20 72 65 73 75  rrect query resu
2e980 6c 74 73 20 61 6e 64 2f 6f 72 20 5b 53 51 4c 49  lts and/or [SQLI
2e990 54 45 5f 43 4f 52 52 55 50 54 5d 20 65 72 72 6f  TE_CORRUPT] erro
2e9a0 72 73 2e 0a 2a 2a 20 20 20 20 20 53 65 65 20 61  rs..**     See a
2e9b0 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 49 4f 43  lso: [SQLITE_IOC
2e9c0 41 50 5f 49 4d 4d 55 54 41 42 4c 45 5d 2e 0a 2a  AP_IMMUTABLE]..*
2e9d0 2a 20 20 20 20 20 20 20 0a 2a 2a 20 3c 2f 75 6c  *       .** </ul
2e9e0 3e 0a 2a 2a 0a 2a 2a 20 5e 53 70 65 63 69 66 79  >.**.** ^Specify
2e9f0 69 6e 67 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 70  ing an unknown p
2ea00 61 72 61 6d 65 74 65 72 20 69 6e 20 74 68 65 20  arameter in the 
2ea10 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 20  query component 
2ea20 6f 66 20 61 20 55 52 49 20 69 73 20 6e 6f 74 20  of a URI is not 
2ea30 61 6e 0a 2a 2a 20 65 72 72 6f 72 2e 20 20 46 75  an.** error.  Fu
2ea40 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
2ea50 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20 75 6e   SQLite might un
2ea60 64 65 72 73 74 61 6e 64 20 61 64 64 69 74 69 6f  derstand additio
2ea70 6e 61 6c 20 71 75 65 72 79 0a 2a 2a 20 70 61 72  nal query.** par
2ea80 61 6d 65 74 65 72 73 2e 20 20 53 65 65 20 22 5b  ameters.  See "[
2ea90 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 73  query parameters
2eaa0 20 77 69 74 68 20 73 70 65 63 69 61 6c 20 6d 65   with special me
2eab0 61 6e 69 6e 67 20 74 6f 20 53 51 4c 69 74 65 5d  aning to SQLite]
2eac0 22 20 66 6f 72 0a 2a 2a 20 61 64 64 69 74 69 6f  " for.** additio
2ead0 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
2eae0 0a 2a 2a 0a 2a 2a 20 5b 5b 55 52 49 20 66 69 6c  .**.** [[URI fil
2eaf0 65 6e 61 6d 65 20 65 78 61 6d 70 6c 65 73 5d 5d  ename examples]]
2eb00 20 3c 68 33 3e 55 52 49 20 66 69 6c 65 6e 61 6d   <h3>URI filenam
2eb10 65 20 65 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a  e examples</h3>.
2eb20 2a 2a 0a 2a 2a 20 3c 74 61 62 6c 65 20 62 6f 72  **.** <table bor
2eb30 64 65 72 3d 22 31 22 20 61 6c 69 67 6e 3d 63 65  der="1" align=ce
2eb40 6e 74 65 72 20 63 65 6c 6c 70 61 64 64 69 6e 67  nter cellpadding
2eb50 3d 35 3e 0a 2a 2a 20 3c 74 72 3e 3c 74 68 3e 20  =5>.** <tr><th> 
2eb60 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 20 3c 74  URI filenames <t
2eb70 68 3e 20 52 65 73 75 6c 74 73 0a 2a 2a 20 3c 74  h> Results.** <t
2eb80 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 64 61 74 61  r><td> file:data
2eb90 2e 64 62 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20  .db <td> .**    
2eba0 20 20 20 20 20 20 4f 70 65 6e 20 74 68 65 20 66        Open the f
2ebb0 69 6c 65 20 22 64 61 74 61 2e 64 62 22 20 69 6e  ile "data.db" in
2ebc0 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 69 72   the current dir
2ebd0 65 63 74 6f 72 79 2e 0a 2a 2a 20 3c 74 72 3e 3c  ectory..** <tr><
2ebe0 74 64 3e 20 66 69 6c 65 3a 2f 68 6f 6d 65 2f 66  td> file:/home/f
2ebf0 72 65 64 2f 64 61 74 61 2e 64 62 3c 62 72 3e 0a  red/data.db<br>.
2ec00 2a 2a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65  **          file
2ec10 3a 2f 2f 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61  :///home/fred/da
2ec20 74 61 2e 64 62 20 3c 62 72 3e 20 0a 2a 2a 20 20  ta.db <br> .**  
2ec30 20 20 20 20 20 20 20 20 66 69 6c 65 3a 2f 2f 6c          file://l
2ec40 6f 63 61 6c 68 6f 73 74 2f 68 6f 6d 65 2f 66 72  ocalhost/home/fr
2ec50 65 64 2f 64 61 74 61 2e 64 62 20 3c 62 72 3e 20  ed/data.db <br> 
2ec60 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20  <td> .**        
2ec70 20 20 4f 70 65 6e 20 74 68 65 20 64 61 74 61 62    Open the datab
2ec80 61 73 65 20 66 69 6c 65 20 22 2f 68 6f 6d 65 2f  ase file "/home/
2ec90 66 72 65 64 2f 64 61 74 61 2e 64 62 22 2e 0a 2a  fred/data.db"..*
2eca0 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a  * <tr><td> file:
2ecb0 2f 2f 64 61 72 6b 73 74 61 72 2f 68 6f 6d 65 2f  //darkstar/home/
2ecc0 66 72 65 64 2f 64 61 74 61 2e 64 62 20 3c 74 64  fred/data.db <td
2ecd0 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 41  > .**          A
2ece0 6e 20 65 72 72 6f 72 2e 20 22 64 61 72 6b 73 74  n error. "darkst
2ecf0 61 72 22 20 69 73 20 6e 6f 74 20 61 20 72 65 63  ar" is not a rec
2ed00 6f 67 6e 69 7a 65 64 20 61 75 74 68 6f 72 69 74  ognized authorit
2ed10 79 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 20 73 74  y..** <tr><td st
2ed20 79 6c 65 3d 22 77 68 69 74 65 2d 73 70 61 63 65  yle="white-space
2ed30 3a 6e 6f 77 72 61 70 22 3e 20 0a 2a 2a 20 20 20  :nowrap"> .**   
2ed40 20 20 20 20 20 20 20 66 69 6c 65 3a 2f 2f 2f 43         file:///C
2ed50 3a 2f 44 6f 63 75 6d 65 6e 74 73 25 32 30 61 6e  :/Documents%20an
2ed60 64 25 32 30 53 65 74 74 69 6e 67 73 2f 66 72 65  d%20Settings/fre
2ed70 64 2f 44 65 73 6b 74 6f 70 2f 64 61 74 61 2e 64  d/Desktop/data.d
2ed80 62 0a 2a 2a 20 20 20 20 20 3c 74 64 3e 20 57 69  b.**     <td> Wi
2ed90 6e 64 6f 77 73 20 6f 6e 6c 79 3a 20 4f 70 65 6e  ndows only: Open
2eda0 20 74 68 65 20 66 69 6c 65 20 22 64 61 74 61 2e   the file "data.
2edb0 64 62 22 20 6f 6e 20 66 72 65 64 27 73 20 64 65  db" on fred's de
2edc0 73 6b 74 6f 70 20 6f 6e 20 64 72 69 76 65 0a 2a  sktop on drive.*
2edd0 2a 20 20 20 20 20 20 20 20 20 20 43 3a 2e 20 4e  *          C:. N
2ede0 6f 74 65 20 74 68 61 74 20 74 68 65 20 25 32 30  ote that the %20
2edf0 20 65 73 63 61 70 69 6e 67 20 69 6e 20 74 68 69   escaping in thi
2ee00 73 20 65 78 61 6d 70 6c 65 20 69 73 20 6e 6f 74  s example is not
2ee10 20 73 74 72 69 63 74 6c 79 20 0a 2a 2a 20 20 20   strictly .**   
2ee20 20 20 20 20 20 20 20 6e 65 63 65 73 73 61 72 79         necessary
2ee30 20 2d 20 73 70 61 63 65 20 63 68 61 72 61 63 74   - space charact
2ee40 65 72 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  ers can be used 
2ee50 6c 69 74 65 72 61 6c 6c 79 0a 2a 2a 20 20 20 20  literally.**    
2ee60 20 20 20 20 20 20 69 6e 20 55 52 49 20 66 69 6c        in URI fil
2ee70 65 6e 61 6d 65 73 2e 0a 2a 2a 20 3c 74 72 3e 3c  enames..** <tr><
2ee80 74 64 3e 20 66 69 6c 65 3a 64 61 74 61 2e 64 62  td> file:data.db
2ee90 3f 6d 6f 64 65 3d 72 6f 26 63 61 63 68 65 3d 70  ?mode=ro&cache=p
2eea0 72 69 76 61 74 65 20 3c 74 64 3e 20 0a 2a 2a 20  rivate <td> .** 
2eeb0 20 20 20 20 20 20 20 20 20 4f 70 65 6e 20 66 69           Open fi
2eec0 6c 65 20 22 64 61 74 61 2e 64 62 22 20 69 6e 20  le "data.db" in 
2eed0 74 68 65 20 63 75 72 72 65 6e 74 20 64 69 72 65  the current dire
2eee0 63 74 6f 72 79 20 66 6f 72 20 72 65 61 64 2d 6f  ctory for read-o
2eef0 6e 6c 79 20 61 63 63 65 73 73 2e 0a 2a 2a 20 20  nly access..**  
2ef00 20 20 20 20 20 20 20 20 52 65 67 61 72 64 6c 65          Regardle
2ef10 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72  ss of whether or
2ef20 20 6e 6f 74 20 73 68 61 72 65 64 2d 63 61 63 68   not shared-cach
2ef30 65 20 6d 6f 64 65 20 69 73 20 65 6e 61 62 6c 65  e mode is enable
2ef40 64 20 62 79 0a 2a 2a 20 20 20 20 20 20 20 20 20  d by.**         
2ef50 20 64 65 66 61 75 6c 74 2c 20 75 73 65 20 61 20   default, use a 
2ef60 70 72 69 76 61 74 65 20 63 61 63 68 65 2e 0a 2a  private cache..*
2ef70 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a  * <tr><td> file:
2ef80 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e  /home/fred/data.
2ef90 64 62 3f 76 66 73 3d 75 6e 69 78 2d 64 6f 74 66  db?vfs=unix-dotf
2efa0 69 6c 65 20 3c 74 64 3e 0a 2a 2a 20 20 20 20 20  ile <td>.**     
2efb0 20 20 20 20 20 4f 70 65 6e 20 66 69 6c 65 20 22       Open file "
2efc0 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e  /home/fred/data.
2efd0 64 62 22 2e 20 55 73 65 20 74 68 65 20 73 70 65  db". Use the spe
2efe0 63 69 61 6c 20 56 46 53 20 22 75 6e 69 78 2d 64  cial VFS "unix-d
2eff0 6f 74 66 69 6c 65 22 0a 2a 2a 20 20 20 20 20 20  otfile".**      
2f000 20 20 20 20 74 68 61 74 20 75 73 65 73 20 64 6f      that uses do
2f010 74 2d 66 69 6c 65 73 20 69 6e 20 70 6c 61 63 65  t-files in place
2f020 20 6f 66 20 70 6f 73 69 78 20 61 64 76 69 73 6f   of posix adviso
2f030 72 79 20 6c 6f 63 6b 69 6e 67 2e 0a 2a 2a 20 3c  ry locking..** <
2f040 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 64 61 74  tr><td> file:dat
2f050 61 2e 64 62 3f 6d 6f 64 65 3d 72 65 61 64 6f 6e  a.db?mode=readon
2f060 6c 79 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20  ly <td> .**     
2f070 20 20 20 20 20 41 6e 20 65 72 72 6f 72 2e 20 22       An error. "
2f080 72 65 61 64 6f 6e 6c 79 22 20 69 73 20 6e 6f 74  readonly" is not
2f090 20 61 20 76 61 6c 69 64 20 6f 70 74 69 6f 6e 20   a valid option 
2f0a0 66 6f 72 20 74 68 65 20 22 6d 6f 64 65 22 20 70  for the "mode" p
2f0b0 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 3c 2f 74  arameter..** </t
2f0c0 61 62 6c 65 3e 0a 2a 2a 0a 2a 2a 20 5e 55 52 49  able>.**.** ^URI
2f0d0 20 68 65 78 61 64 65 63 69 6d 61 6c 20 65 73 63   hexadecimal esc
2f0e0 61 70 65 20 73 65 71 75 65 6e 63 65 73 20 28 25  ape sequences (%
2f0f0 48 48 29 20 61 72 65 20 73 75 70 70 6f 72 74 65  HH) are supporte
2f100 64 20 77 69 74 68 69 6e 20 74 68 65 20 70 61 74  d within the pat
2f110 68 20 61 6e 64 0a 2a 2a 20 71 75 65 72 79 20 63  h and.** query c
2f120 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 61 20 55  omponents of a U
2f130 52 49 2e 20 41 20 68 65 78 61 64 65 63 69 6d 61  RI. A hexadecima
2f140 6c 20 65 73 63 61 70 65 20 73 65 71 75 65 6e 63  l escape sequenc
2f150 65 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 61 0a  e consists of a.
2f160 2a 2a 20 70 65 72 63 65 6e 74 20 73 69 67 6e 20  ** percent sign 
2f170 2d 20 22 25 22 20 2d 20 66 6f 6c 6c 6f 77 65 64  - "%" - followed
2f180 20 62 79 20 65 78 61 63 74 6c 79 20 74 77 6f 20   by exactly two 
2f190 68 65 78 61 64 65 63 69 6d 61 6c 20 64 69 67 69  hexadecimal digi
2f1a0 74 73 20 0a 2a 2a 20 73 70 65 63 69 66 79 69 6e  ts .** specifyin
2f1b0 67 20 61 6e 20 6f 63 74 65 74 20 76 61 6c 75 65  g an octet value
2f1c0 2e 20 5e 42 65 66 6f 72 65 20 74 68 65 20 70 61  . ^Before the pa
2f1d0 74 68 20 6f 72 20 71 75 65 72 79 20 63 6f 6d 70  th or query comp
2f1e0 6f 6e 65 6e 74 73 20 6f 66 20 61 0a 2a 2a 20 55  onents of a.** U
2f1f0 52 49 20 66 69 6c 65 6e 61 6d 65 20 61 72 65 20  RI filename are 
2f200 69 6e 74 65 72 70 72 65 74 65 64 2c 20 74 68 65  interpreted, the
2f210 79 20 61 72 65 20 65 6e 63 6f 64 65 64 20 75 73  y are encoded us
2f220 69 6e 67 20 55 54 46 2d 38 20 61 6e 64 20 61 6c  ing UTF-8 and al
2f230 6c 20 0a 2a 2a 20 68 65 78 61 64 65 63 69 6d 61  l .** hexadecima
2f240 6c 20 65 73 63 61 70 65 20 73 65 71 75 65 6e 63  l escape sequenc
2f250 65 73 20 72 65 70 6c 61 63 65 64 20 62 79 20 61  es replaced by a
2f260 20 73 69 6e 67 6c 65 20 62 79 74 65 20 63 6f 6e   single byte con
2f270 74 61 69 6e 69 6e 67 20 74 68 65 0a 2a 2a 20 63  taining the.** c
2f280 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f 63 74  orresponding oct
2f290 65 74 2e 20 49 66 20 74 68 69 73 20 70 72 6f 63  et. If this proc
2f2a0 65 73 73 20 67 65 6e 65 72 61 74 65 73 20 61 6e  ess generates an
2f2b0 20 69 6e 76 61 6c 69 64 20 55 54 46 2d 38 20 65   invalid UTF-8 e
2f2c0 6e 63 6f 64 69 6e 67 2c 0a 2a 2a 20 74 68 65 20  ncoding,.** the 
2f2d0 72 65 73 75 6c 74 73 20 61 72 65 20 75 6e 64 65  results are unde
2f2e0 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e  fined..**.** <b>
2f2f0 4e 6f 74 65 20 74 6f 20 57 69 6e 64 6f 77 73 20  Note to Windows 
2f300 75 73 65 72 73 3a 3c 2f 62 3e 20 20 54 68 65 20  users:</b>  The 
2f310 65 6e 63 6f 64 69 6e 67 20 75 73 65 64 20 66 6f  encoding used fo
2f320 72 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 61  r the filename a
2f330 72 67 75 6d 65 6e 74 0a 2a 2a 20 6f 66 20 73 71  rgument.** of sq
2f340 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64  lite3_open() and
2f350 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
2f360 28 29 20 6d 75 73 74 20 62 65 20 55 54 46 2d 38  () must be UTF-8
2f370 2c 20 6e 6f 74 20 77 68 61 74 65 76 65 72 0a 2a  , not whatever.*
2f380 2a 20 63 6f 64 65 70 61 67 65 20 69 73 20 63 75  * codepage is cu
2f390 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65 64 2e  rrently defined.
2f3a0 20 20 46 69 6c 65 6e 61 6d 65 73 20 63 6f 6e 74    Filenames cont
2f3b0 61 69 6e 69 6e 67 20 69 6e 74 65 72 6e 61 74 69  aining internati
2f3c0 6f 6e 61 6c 0a 2a 2a 20 63 68 61 72 61 63 74 65  onal.** characte
2f3d0 72 73 20 6d 75 73 74 20 62 65 20 63 6f 6e 76 65  rs must be conve
2f3e0 72 74 65 64 20 74 6f 20 55 54 46 2d 38 20 70 72  rted to UTF-8 pr
2f3f0 69 6f 72 20 74 6f 20 70 61 73 73 69 6e 67 20 74  ior to passing t
2f400 68 65 6d 20 69 6e 74 6f 0a 2a 2a 20 73 71 6c 69  hem into.** sqli
2f410 74 65 33 5f 6f 70 65 6e 28 29 20 6f 72 20 73 71  te3_open() or sq
2f420 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e  lite3_open_v2().
2f430 0a 2a 2a 0a 2a 2a 20 3c 62 3e 4e 6f 74 65 20 74  .**.** <b>Note t
2f440 6f 20 57 69 6e 64 6f 77 73 20 52 75 6e 74 69 6d  o Windows Runtim
2f450 65 20 75 73 65 72 73 3a 3c 2f 62 3e 20 20 54 68  e users:</b>  Th
2f460 65 20 74 65 6d 70 6f 72 61 72 79 20 64 69 72 65  e temporary dire
2f470 63 74 6f 72 79 20 6d 75 73 74 20 62 65 20 73 65  ctory must be se
2f480 74 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20 63 61  t.** prior to ca
2f490 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 6f 70  lling sqlite3_op
2f4a0 65 6e 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  en() or sqlite3_
2f4b0 6f 70 65 6e 5f 76 32 28 29 2e 20 20 4f 74 68 65  open_v2().  Othe
2f4c0 72 77 69 73 65 2c 20 76 61 72 69 6f 75 73 0a 2a  rwise, various.*
2f4d0 2a 20 66 65 61 74 75 72 65 73 20 74 68 61 74 20  * features that 
2f4e0 72 65 71 75 69 72 65 20 74 68 65 20 75 73 65 20  require the use 
2f4f0 6f 66 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c  of temporary fil
2f500 65 73 20 6d 61 79 20 66 61 69 6c 2e 0a 2a 2a 0a  es may fail..**.
2f510 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71  ** See also: [sq
2f520 6c 69 74 65 33 5f 74 65 6d 70 5f 64 69 72 65 63  lite3_temp_direc
2f530 74 6f 72 79 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f  tory].*/.SQLITE_
2f540 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
2f550 6f 70 65 6e 28 0a 20 20 63 6f 6e 73 74 20 63 68  open(.  const ch
2f560 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20 20  ar *filename,   
2f570 2f 2a 20 44 61 74 61 62 61 73 65 20 66 69 6c 65  /* Database file
2f580 6e 61 6d 65 20 28 55 54 46 2d 38 29 20 2a 2f 0a  name (UTF-8) */.
2f590 20 20 73 71 6c 69 74 65 33 20 2a 2a 70 70 44 62    sqlite3 **ppDb
2f5a0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4f 55 54            /* OUT
2f5b0 3a 20 53 51 4c 69 74 65 20 64 62 20 68 61 6e 64  : SQLite db hand
2f5c0 6c 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f  le */.);.SQLITE_
2f5d0 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
2f5e0 6f 70 65 6e 31 36 28 0a 20 20 63 6f 6e 73 74 20  open16(.  const 
2f5f0 76 6f 69 64 20 2a 66 69 6c 65 6e 61 6d 65 2c 20  void *filename, 
2f600 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 66 69    /* Database fi
2f610 6c 65 6e 61 6d 65 20 28 55 54 46 2d 31 36 29 20  lename (UTF-16) 
2f620 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a 2a 70  */.  sqlite3 **p
2f630 70 44 62 20 20 20 20 20 20 20 20 20 20 2f 2a 20  pDb          /* 
2f640 4f 55 54 3a 20 53 51 4c 69 74 65 20 64 62 20 68  OUT: SQLite db h
2f650 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49  andle */.);.SQLI
2f660 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
2f670 65 33 5f 6f 70 65 6e 5f 76 32 28 0a 20 20 63 6f  e3_open_v2(.  co
2f680 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61  nst char *filena
2f690 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73  me,   /* Databas
2f6a0 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d  e filename (UTF-
2f6b0 38 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20  8) */.  sqlite3 
2f6c0 2a 2a 70 70 44 62 2c 20 20 20 20 20 20 20 20 20  **ppDb,         
2f6d0 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20 64  /* OUT: SQLite d
2f6e0 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 69 6e  b handle */.  in
2f6f0 74 20 66 6c 61 67 73 2c 20 20 20 20 20 20 20 20  t flags,        
2f700 20 20 20 20 20 20 2f 2a 20 46 6c 61 67 73 20 2a        /* Flags *
2f710 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
2f720 7a 56 66 73 20 20 20 20 20 20 20 20 2f 2a 20 4e  zVfs        /* N
2f730 61 6d 65 20 6f 66 20 56 46 53 20 6d 6f 64 75 6c  ame of VFS modul
2f740 65 20 74 6f 20 75 73 65 20 2a 2f 0a 29 3b 0a 0a  e to use */.);..
2f750 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
2f760 4f 62 74 61 69 6e 20 56 61 6c 75 65 73 20 46 6f  Obtain Values Fo
2f770 72 20 55 52 49 20 50 61 72 61 6d 65 74 65 72 73  r URI Parameters
2f780 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 61 72 65  .**.** These are
2f790 20 75 74 69 6c 69 74 79 20 72 6f 75 74 69 6e 65   utility routine
2f7a0 73 2c 20 75 73 65 66 75 6c 20 74 6f 20 56 46 53  s, useful to VFS
2f7b0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
2f7c0 2c 20 74 68 61 74 20 63 68 65 63 6b 0a 2a 2a 20  , that check.** 
2f7d0 74 6f 20 73 65 65 20 69 66 20 61 20 64 61 74 61  to see if a data
2f7e0 62 61 73 65 20 66 69 6c 65 20 77 61 73 20 61 20  base file was a 
2f7f0 55 52 49 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  URI that contain
2f800 65 64 20 61 20 73 70 65 63 69 66 69 63 20 71 75  ed a specific qu
2f810 65 72 79 20 0a 2a 2a 20 70 61 72 61 6d 65 74 65  ery .** paramete
2f820 72 2c 20 61 6e 64 20 69 66 20 73 6f 20 6f 62 74  r, and if so obt
2f830 61 69 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f  ains the value o
2f840 66 20 74 68 61 74 20 71 75 65 72 79 20 70 61 72  f that query par
2f850 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 49 66  ameter..**.** If
2f860 20 46 20 69 73 20 74 68 65 20 64 61 74 61 62 61   F is the databa
2f870 73 65 20 66 69 6c 65 6e 61 6d 65 20 70 6f 69 6e  se filename poin
2f880 74 65 72 20 70 61 73 73 65 64 20 69 6e 74 6f 20  ter passed into 
2f890 74 68 65 20 78 4f 70 65 6e 28 29 20 6d 65 74 68  the xOpen() meth
2f8a0 6f 64 20 6f 66 20 0a 2a 2a 20 61 20 56 46 53 20  od of .** a VFS 
2f8b0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77  implementation w
2f8c0 68 65 6e 20 74 68 65 20 66 6c 61 67 73 20 70 61  hen the flags pa
2f8d0 72 61 6d 65 74 65 72 20 74 6f 20 78 4f 70 65 6e  rameter to xOpen
2f8e0 28 29 20 68 61 73 20 6f 6e 65 20 6f 72 20 0a 2a  () has one or .*
2f8f0 2a 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 5b 53  * more of the [S
2f900 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d 20  QLITE_OPEN_URI] 
2f910 6f 72 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  or [SQLITE_OPEN_
2f920 4d 41 49 4e 5f 44 42 5d 20 62 69 74 73 20 73 65  MAIN_DB] bits se
2f930 74 20 61 6e 64 0a 2a 2a 20 50 20 69 73 20 74 68  t and.** P is th
2f940 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 71 75  e name of the qu
2f950 65 72 79 20 70 61 72 61 6d 65 74 65 72 2c 20 74  ery parameter, t
2f960 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75  hen.** sqlite3_u
2f970 72 69 5f 70 61 72 61 6d 65 74 65 72 28 46 2c 50  ri_parameter(F,P
2f980 29 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61  ) returns the va
2f990 6c 75 65 20 6f 66 20 74 68 65 20 50 0a 2a 2a 20  lue of the P.** 
2f9a0 70 61 72 61 6d 65 74 65 72 20 69 66 20 69 74 20  parameter if it 
2f9b0 65 78 69 73 74 73 20 6f 72 20 61 20 4e 55 4c 4c  exists or a NULL
2f9c0 20 70 6f 69 6e 74 65 72 20 69 66 20 50 20 64 6f   pointer if P do
2f9d0 65 73 20 6e 6f 74 20 61 70 70 65 61 72 20 61 73  es not appear as
2f9e0 20 61 20 0a 2a 2a 20 71 75 65 72 79 20 70 61 72   a .** query par
2f9f0 61 6d 65 74 65 72 20 6f 6e 20 46 2e 20 20 49 66  ameter on F.  If
2fa00 20 50 20 69 73 20 61 20 71 75 65 72 79 20 70 61   P is a query pa
2fa10 72 61 6d 65 74 65 72 20 6f 66 20 46 0a 2a 2a 20  rameter of F.** 
2fa20 68 61 73 20 6e 6f 20 65 78 70 6c 69 63 69 74 20  has no explicit 
2fa30 76 61 6c 75 65 2c 20 74 68 65 6e 20 73 71 6c 69  value, then sqli
2fa40 74 65 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65  te3_uri_paramete
2fa50 72 28 46 2c 50 29 20 72 65 74 75 72 6e 73 0a 2a  r(F,P) returns.*
2fa60 2a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  * a pointer to a
2fa70 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0a  n empty string..
2fa80 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  **.** The sqlite
2fa90 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c  3_uri_boolean(F,
2faa0 50 2c 42 29 20 72 6f 75 74 69 6e 65 20 61 73 73  P,B) routine ass
2fab0 75 6d 65 73 20 74 68 61 74 20 50 20 69 73 20 61  umes that P is a
2fac0 20 62 6f 6f 6c 65 61 6e 0a 2a 2a 20 70 61 72 61   boolean.** para
2fad0 6d 65 74 65 72 20 61 6e 64 20 72 65 74 75 72 6e  meter and return
2fae0 73 20 74 72 75 65 20 28 31 29 20 6f 72 20 66 61  s true (1) or fa
2faf0 6c 73 65 20 28 30 29 20 61 63 63 6f 72 64 69 6e  lse (0) accordin
2fb00 67 20 74 6f 20 74 68 65 20 76 61 6c 75 65 0a 2a  g to the value.*
2fb10 2a 20 6f 66 20 50 2e 20 20 54 68 65 20 73 71 6c  * of P.  The sql
2fb20 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e  ite3_uri_boolean
2fb30 28 46 2c 50 2c 42 29 20 72 6f 75 74 69 6e 65 20  (F,P,B) routine 
2fb40 72 65 74 75 72 6e 73 20 74 72 75 65 20 28 31 29  returns true (1)
2fb50 20 69 66 20 74 68 65 0a 2a 2a 20 76 61 6c 75 65   if the.** value
2fb60 20 6f 66 20 71 75 65 72 79 20 70 61 72 61 6d 65   of query parame
2fb70 74 65 72 20 50 20 69 73 20 6f 6e 65 20 6f 66 20  ter P is one of 
2fb80 22 79 65 73 22 2c 20 22 74 72 75 65 22 2c 20 6f  "yes", "true", o
2fb90 72 20 22 6f 6e 22 20 69 6e 20 61 6e 79 0a 2a 2a  r "on" in any.**
2fba0 20 63 61 73 65 20 6f 72 20 69 66 20 74 68 65 20   case or if the 
2fbb0 76 61 6c 75 65 20 62 65 67 69 6e 73 20 77 69 74  value begins wit
2fbc0 68 20 61 20 6e 6f 6e 2d 7a 65 72 6f 20 6e 75 6d  h a non-zero num
2fbd0 62 65 72 2e 20 20 54 68 65 20 0a 2a 2a 20 73 71  ber.  The .** sq
2fbe0 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61  lite3_uri_boolea
2fbf0 6e 28 46 2c 50 2c 42 29 20 72 6f 75 74 69 6e 65  n(F,P,B) routine
2fc00 73 20 72 65 74 75 72 6e 73 20 66 61 6c 73 65 20  s returns false 
2fc10 28 30 29 20 69 66 20 74 68 65 20 76 61 6c 75 65  (0) if the value
2fc20 20 6f 66 0a 2a 2a 20 71 75 65 72 79 20 70 61 72   of.** query par
2fc30 61 6d 65 74 65 72 20 50 20 69 73 20 6f 6e 65 20  ameter P is one 
2fc40 6f 66 20 22 6e 6f 22 2c 20 22 66 61 6c 73 65 22  of "no", "false"
2fc50 2c 20 6f 72 20 22 6f 66 66 22 20 69 6e 20 61 6e  , or "off" in an
2fc60 79 20 63 61 73 65 20 6f 72 0a 2a 2a 20 69 66 20  y case or.** if 
2fc70 74 68 65 20 76 61 6c 75 65 20 62 65 67 69 6e 73  the value begins
2fc80 20 77 69 74 68 20 61 20 6e 75 6d 65 72 69 63 20   with a numeric 
2fc90 7a 65 72 6f 2e 20 20 49 66 20 50 20 69 73 20 6e  zero.  If P is n
2fca0 6f 74 20 61 20 71 75 65 72 79 0a 2a 2a 20 70 61  ot a query.** pa
2fcb0 72 61 6d 65 74 65 72 20 6f 6e 20 46 20 6f 72 20  rameter on F or 
2fcc0 69 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  if the value of 
2fcd0 50 20 69 73 20 64 6f 65 73 20 6e 6f 74 20 6d 61  P is does not ma
2fce0 74 63 68 20 61 6e 79 20 6f 66 20 74 68 65 0a 2a  tch any of the.*
2fcf0 2a 20 61 62 6f 76 65 2c 20 74 68 65 6e 20 73 71  * above, then sq
2fd00 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61  lite3_uri_boolea
2fd10 6e 28 46 2c 50 2c 42 29 20 72 65 74 75 72 6e 73  n(F,P,B) returns
2fd20 20 28 42 21 3d 30 29 2e 0a 2a 2a 0a 2a 2a 20 54   (B!=0)..**.** T
2fd30 68 65 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 69  he sqlite3_uri_i
2fd40 6e 74 36 34 28 46 2c 50 2c 44 29 20 72 6f 75 74  nt64(F,P,D) rout
2fd50 69 6e 65 20 63 6f 6e 76 65 72 74 73 20 74 68 65  ine converts the
2fd60 20 76 61 6c 75 65 20 6f 66 20 50 20 69 6e 74 6f   value of P into
2fd70 20 61 0a 2a 2a 20 36 34 2d 62 69 74 20 73 69 67   a.** 64-bit sig
2fd80 6e 65 64 20 69 6e 74 65 67 65 72 20 61 6e 64 20  ned integer and 
2fd90 72 65 74 75 72 6e 73 20 74 68 61 74 20 69 6e 74  returns that int
2fda0 65 67 65 72 2c 20 6f 72 20 44 20 69 66 20 50 20  eger, or D if P 
2fdb0 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 65 78 69 73  does not.** exis
2fdc0 74 2e 20 20 49 66 20 74 68 65 20 76 61 6c 75 65  t.  If the value
2fdd0 20 6f 66 20 50 20 69 73 20 73 6f 6d 65 74 68 69   of P is somethi
2fde0 6e 67 20 6f 74 68 65 72 20 74 68 61 6e 20 61 6e  ng other than an
2fdf0 20 69 6e 74 65 67 65 72 2c 20 74 68 65 6e 0a 2a   integer, then.*
2fe00 2a 20 7a 65 72 6f 20 69 73 20 72 65 74 75 72 6e  * zero is return
2fe10 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 49 66 20 46 20  ed..** .** If F 
2fe20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  is a NULL pointe
2fe30 72 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  r, then sqlite3_
2fe40 75 72 69 5f 70 61 72 61 6d 65 74 65 72 28 46 2c  uri_parameter(F,
2fe50 50 29 20 72 65 74 75 72 6e 73 20 4e 55 4c 4c 20  P) returns NULL 
2fe60 61 6e 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75  and.** sqlite3_u
2fe70 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42  ri_boolean(F,P,B
2fe80 29 20 72 65 74 75 72 6e 73 20 42 2e 20 20 49 66  ) returns B.  If
2fe90 20 46 20 69 73 20 6e 6f 74 20 61 20 4e 55 4c 4c   F is not a NULL
2fea0 20 70 6f 69 6e 74 65 72 20 61 6e 64 0a 2a 2a 20   pointer and.** 
2feb0 69 73 20 6e 6f 74 20 61 20 64 61 74 61 62 61 73  is not a databas
2fec0 65 20 66 69 6c 65 20 70 61 74 68 6e 61 6d 65 20  e file pathname 
2fed0 70 6f 69 6e 74 65 72 20 74 68 61 74 20 53 51 4c  pointer that SQL
2fee0 69 74 65 20 70 61 73 73 65 64 20 69 6e 74 6f 20  ite passed into 
2fef0 74 68 65 20 78 4f 70 65 6e 0a 2a 2a 20 56 46 53  the xOpen.** VFS
2ff00 20 6d 65 74 68 6f 64 2c 20 74 68 65 6e 20 74 68   method, then th
2ff10 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20 74 68  e behavior of th
2ff20 69 73 20 72 6f 75 74 69 6e 65 20 69 73 20 75 6e  is routine is un
2ff30 64 65 66 69 6e 65 64 20 61 6e 64 20 70 72 6f 62  defined and prob
2ff40 61 62 6c 79 0a 2a 2a 20 75 6e 64 65 73 69 72 61  ably.** undesira
2ff50 62 6c 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ble..*/.SQLITE_A
2ff60 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  PI const char *s
2ff70 71 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d  qlite3_uri_param
2ff80 65 74 65 72 28 63 6f 6e 73 74 20 63 68 61 72 20  eter(const char 
2ff90 2a 7a 46 69 6c 65 6e 61 6d 65 2c 20 63 6f 6e 73  *zFilename, cons
2ffa0 74 20 63 68 61 72 20 2a 7a 50 61 72 61 6d 29 3b  t char *zParam);
2ffb0 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
2ffc0 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c  sqlite3_uri_bool
2ffd0 65 61 6e 28 63 6f 6e 73 74 20 63 68 61 72 20 2a  ean(const char *
2ffe0 7a 46 69 6c 65 2c 20 63 6f 6e 73 74 20 63 68 61  zFile, const cha
2fff0 72 20 2a 7a 50 61 72 61 6d 2c 20 69 6e 74 20 62  r *zParam, int b
30000 44 65 66 61 75 6c 74 29 3b 0a 53 51 4c 49 54 45  Default);.SQLITE
30010 5f 41 50 49 20 73 71 6c 69 74 65 33 5f 69 6e 74  _API sqlite3_int
30020 36 34 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 69  64 sqlite3_uri_i
30030 6e 74 36 34 28 63 6f 6e 73 74 20 63 68 61 72 2a  nt64(const char*
30040 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 73  , const char*, s
30050 71 6c 69 74 65 33 5f 69 6e 74 36 34 29 3b 0a 0a  qlite3_int64);..
30060 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
30070 20 45 72 72 6f 72 20 43 6f 64 65 73 20 41 6e 64   Error Codes And
30080 20 4d 65 73 73 61 67 65 73 0a 2a 2a 20 4d 45 54   Messages.** MET
30090 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  HOD: sqlite3.**.
300a0 2a 2a 20 5e 49 66 20 74 68 65 20 6d 6f 73 74 20  ** ^If the most 
300b0 72 65 63 65 6e 74 20 73 71 6c 69 74 65 33 5f 2a  recent sqlite3_*
300c0 20 41 50 49 20 63 61 6c 6c 20 61 73 73 6f 63 69   API call associ
300d0 61 74 65 64 20 77 69 74 68 20 0a 2a 2a 20 5b 64  ated with .** [d
300e0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
300f0 6f 6e 5d 20 44 20 66 61 69 6c 65 64 2c 20 74 68  on] D failed, th
30100 65 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 65  en the sqlite3_e
30110 72 72 63 6f 64 65 28 44 29 20 69 6e 74 65 72 66  rrcode(D) interf
30120 61 63 65 0a 2a 2a 20 72 65 74 75 72 6e 73 20 74  ace.** returns t
30130 68 65 20 6e 75 6d 65 72 69 63 20 5b 72 65 73 75  he numeric [resu
30140 6c 74 20 63 6f 64 65 5d 20 6f 72 20 5b 65 78 74  lt code] or [ext
30150 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
30160 65 5d 20 66 6f 72 20 74 68 61 74 0a 2a 2a 20 41  e] for that.** A
30170 50 49 20 63 61 6c 6c 2e 0a 2a 2a 20 49 66 20 74  PI call..** If t
30180 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 41  he most recent A
30190 50 49 20 63 61 6c 6c 20 77 61 73 20 73 75 63 63  PI call was succ
301a0 65 73 73 66 75 6c 2c 0a 2a 2a 20 74 68 65 6e 20  essful,.** then 
301b0 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65  the return value
301c0 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 65 72   from sqlite3_er
301d0 72 63 6f 64 65 28 29 20 69 73 20 75 6e 64 65 66  rcode() is undef
301e0 69 6e 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 73 71  ined..** ^The sq
301f0 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65  lite3_extended_e
30200 72 72 63 6f 64 65 28 29 0a 2a 2a 20 69 6e 74 65  rrcode().** inte
30210 72 66 61 63 65 20 69 73 20 74 68 65 20 73 61 6d  rface is the sam
30220 65 20 65 78 63 65 70 74 20 74 68 61 74 20 69 74  e except that it
30230 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e 73 20   always returns 
30240 74 68 65 20 0a 2a 2a 20 5b 65 78 74 65 6e 64 65  the .** [extende
30250 64 20 72 65 73 75 6c 74 20 63 6f 64 65 5d 20 65  d result code] e
30260 76 65 6e 20 77 68 65 6e 20 65 78 74 65 6e 64 65  ven when extende
30270 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61  d result codes a
30280 72 65 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2e 0a  re.** disabled..
30290 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
302a0 65 33 5f 65 72 72 6d 73 67 28 29 20 61 6e 64 20  e3_errmsg() and 
302b0 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36  sqlite3_errmsg16
302c0 28 29 20 72 65 74 75 72 6e 20 45 6e 67 6c 69 73  () return Englis
302d0 68 2d 6c 61 6e 67 75 61 67 65 0a 2a 2a 20 74 65  h-language.** te
302e0 78 74 20 74 68 61 74 20 64 65 73 63 72 69 62 65  xt that describe
302f0 73 20 74 68 65 20 65 72 72 6f 72 2c 20 61 73 20  s the error, as 
30300 65 69 74 68 65 72 20 55 54 46 2d 38 20 6f 72 20  either UTF-8 or 
30310 55 54 46 2d 31 36 20 72 65 73 70 65 63 74 69 76  UTF-16 respectiv
30320 65 6c 79 2e 0a 2a 2a 20 5e 28 4d 65 6d 6f 72 79  ely..** ^(Memory
30330 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 65 72 72   to hold the err
30340 6f 72 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e  or message strin
30350 67 20 69 73 20 6d 61 6e 61 67 65 64 20 69 6e 74  g is managed int
30360 65 72 6e 61 6c 6c 79 2e 0a 2a 2a 20 54 68 65 20  ernally..** The 
30370 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 65 73  application does
30380 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 77 6f 72   not need to wor
30390 72 79 20 61 62 6f 75 74 20 66 72 65 65 69 6e 67  ry about freeing
303a0 20 74 68 65 20 72 65 73 75 6c 74 2e 0a 2a 2a 20   the result..** 
303b0 48 6f 77 65 76 65 72 2c 20 74 68 65 20 65 72 72  However, the err
303c0 6f 72 20 73 74 72 69 6e 67 20 6d 69 67 68 74 20  or string might 
303d0 62 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20 6f  be overwritten o
303e0 72 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 62 79  r deallocated by
303f0 0a 2a 2a 20 73 75 62 73 65 71 75 65 6e 74 20 63  .** subsequent c
30400 61 6c 6c 73 20 74 6f 20 6f 74 68 65 72 20 53 51  alls to other SQ
30410 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 20 66  Lite interface f
30420 75 6e 63 74 69 6f 6e 73 2e 29 5e 0a 2a 2a 0a 2a  unctions.)^.**.*
30430 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65  * ^The sqlite3_e
30440 72 72 73 74 72 28 29 20 69 6e 74 65 72 66 61 63  rrstr() interfac
30450 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 45 6e  e returns the En
30460 67 6c 69 73 68 2d 6c 61 6e 67 75 61 67 65 20 74  glish-language t
30470 65 78 74 0a 2a 2a 20 74 68 61 74 20 64 65 73 63  ext.** that desc
30480 72 69 62 65 73 20 74 68 65 20 5b 72 65 73 75 6c  ribes the [resul
30490 74 20 63 6f 64 65 5d 2c 20 61 73 20 55 54 46 2d  t code], as UTF-
304a0 38 2e 0a 2a 2a 20 5e 28 4d 65 6d 6f 72 79 20 74  8..** ^(Memory t
304b0 6f 20 68 6f 6c 64 20 74 68 65 20 65 72 72 6f 72  o hold the error
304c0 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67 20   message string 
304d0 69 73 20 6d 61 6e 61 67 65 64 20 69 6e 74 65 72  is managed inter
304e0 6e 61 6c 6c 79 0a 2a 2a 20 61 6e 64 20 6d 75 73  nally.** and mus
304f0 74 20 6e 6f 74 20 62 65 20 66 72 65 65 64 20 62  t not be freed b
30500 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  y the applicatio
30510 6e 29 5e 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20  n)^..**.** When 
30520 74 68 65 20 73 65 72 69 61 6c 69 7a 65 64 20 5b  the serialized [
30530 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
30540 69 73 20 69 6e 20 75 73 65 2c 20 69 74 20 6d 69  is in use, it mi
30550 67 68 74 20 62 65 20 74 68 65 0a 2a 2a 20 63 61  ght be the.** ca
30560 73 65 20 74 68 61 74 20 61 20 73 65 63 6f 6e 64  se that a second
30570 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 6f 6e   error occurs on
30580 20 61 20 73 65 70 61 72 61 74 65 20 74 68 72 65   a separate thre
30590 61 64 20 69 6e 20 62 65 74 77 65 65 6e 0a 2a 2a  ad in between.**
305a0 20 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65   the time of the
305b0 20 66 69 72 73 74 20 65 72 72 6f 72 20 61 6e 64   first error and
305c0 20 74 68 65 20 63 61 6c 6c 20 74 6f 20 74 68 65   the call to the
305d0 73 65 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 2a  se interfaces..*
305e0 2a 20 57 68 65 6e 20 74 68 61 74 20 68 61 70 70  * When that happ
305f0 65 6e 73 2c 20 74 68 65 20 73 65 63 6f 6e 64 20  ens, the second 
30600 65 72 72 6f 72 20 77 69 6c 6c 20 62 65 20 72 65  error will be re
30610 70 6f 72 74 65 64 20 73 69 6e 63 65 20 74 68 65  ported since the
30620 73 65 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73  se.** interfaces
30630 20 61 6c 77 61 79 73 20 72 65 70 6f 72 74 20 74   always report t
30640 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 72  he most recent r
30650 65 73 75 6c 74 2e 20 20 54 6f 20 61 76 6f 69 64  esult.  To avoid
30660 0a 2a 2a 20 74 68 69 73 2c 20 65 61 63 68 20 74  .** this, each t
30670 68 72 65 61 64 20 63 61 6e 20 6f 62 74 61 69 6e  hread can obtain
30680 20 65 78 63 6c 75 73 69 76 65 20 75 73 65 20 6f   exclusive use o
30690 66 20 74 68 65 20 5b 64 61 74 61 62 61 73 65 20  f the [database 
306a0 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 0a 2a 2a  connection] D.**
306b0 20 62 79 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71   by invoking [sq
306c0 6c 69 74 65 33 5f 6d 75 74 65 78 5f 65 6e 74 65  lite3_mutex_ente
306d0 72 5d 28 5b 73 71 6c 69 74 65 33 5f 64 62 5f 6d  r]([sqlite3_db_m
306e0 75 74 65 78 5d 28 44 29 29 20 62 65 66 6f 72 65  utex](D)) before
306f0 20 62 65 67 69 6e 6e 69 6e 67 0a 2a 2a 20 74 6f   beginning.** to
30700 20 75 73 65 20 44 20 61 6e 64 20 69 6e 76 6f 6b   use D and invok
30710 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  ing [sqlite3_mut
30720 65 78 5f 6c 65 61 76 65 5d 28 5b 73 71 6c 69 74  ex_leave]([sqlit
30730 65 33 5f 64 62 5f 6d 75 74 65 78 5d 28 44 29 29  e3_db_mutex](D))
30740 20 61 66 74 65 72 0a 2a 2a 20 61 6c 6c 20 63 61   after.** all ca
30750 6c 6c 73 20 74 6f 20 74 68 65 20 69 6e 74 65 72  lls to the inter
30760 66 61 63 65 73 20 6c 69 73 74 65 64 20 68 65 72  faces listed her
30770 65 20 61 72 65 20 63 6f 6d 70 6c 65 74 65 64 2e  e are completed.
30780 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 20 69 6e 74  .**.** If an int
30790 65 72 66 61 63 65 20 66 61 69 6c 73 20 77 69 74  erface fails wit
307a0 68 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 2c  h SQLITE_MISUSE,
307b0 20 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65 20   that means the 
307c0 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 77 61 73  interface.** was
307d0 20 69 6e 76 6f 6b 65 64 20 69 6e 63 6f 72 72 65   invoked incorre
307e0 63 74 6c 79 20 62 79 20 74 68 65 20 61 70 70 6c  ctly by the appl
307f0 69 63 61 74 69 6f 6e 2e 20 20 49 6e 20 74 68 61  ication.  In tha
30800 74 20 63 61 73 65 2c 20 74 68 65 0a 2a 2a 20 65  t case, the.** e
30810 72 72 6f 72 20 63 6f 64 65 20 61 6e 64 20 6d 65  rror code and me
30820 73 73 61 67 65 20 6d 61 79 20 6f 72 20 6d 61 79  ssage may or may
30830 20 6e 6f 74 20 62 65 20 73 65 74 2e 0a 2a 2f 0a   not be set..*/.
30840 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
30850 71 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 73  qlite3_errcode(s
30860 71 6c 69 74 65 33 20 2a 64 62 29 3b 0a 53 51 4c  qlite3 *db);.SQL
30870 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
30880 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
30890 63 6f 64 65 28 73 71 6c 69 74 65 33 20 2a 64 62  code(sqlite3 *db
308a0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f  );.SQLITE_API co
308b0 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65  nst char *sqlite
308c0 33 5f 65 72 72 6d 73 67 28 73 71 6c 69 74 65 33  3_errmsg(sqlite3
308d0 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63  *);.SQLITE_API c
308e0 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74  onst void *sqlit
308f0 65 33 5f 65 72 72 6d 73 67 31 36 28 73 71 6c 69  e3_errmsg16(sqli
30900 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50  te3*);.SQLITE_AP
30910 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71  I const char *sq
30920 6c 69 74 65 33 5f 65 72 72 73 74 72 28 69 6e 74  lite3_errstr(int
30930 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
30940 45 46 3a 20 50 72 65 70 61 72 65 64 20 53 74 61  EF: Prepared Sta
30950 74 65 6d 65 6e 74 20 4f 62 6a 65 63 74 0a 2a 2a  tement Object.**
30960 20 4b 45 59 57 4f 52 44 53 3a 20 7b 70 72 65 70   KEYWORDS: {prep
30970 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 7d 20  ared statement} 
30980 7b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  {prepared statem
30990 65 6e 74 73 7d 0a 2a 2a 0a 2a 2a 20 41 6e 20 69  ents}.**.** An i
309a0 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
309b0 6f 62 6a 65 63 74 20 72 65 70 72 65 73 65 6e 74  object represent
309c0 73 20 61 20 73 69 6e 67 6c 65 20 53 51 4c 20 73  s a single SQL s
309d0 74 61 74 65 6d 65 6e 74 20 74 68 61 74 0a 2a 2a  tatement that.**
309e0 20 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c   has been compil
309f0 65 64 20 69 6e 74 6f 20 62 69 6e 61 72 79 20 66  ed into binary f
30a00 6f 72 6d 20 61 6e 64 20 69 73 20 72 65 61 64 79  orm and is ready
30a10 20 74 6f 20 62 65 20 65 76 61 6c 75 61 74 65 64   to be evaluated
30a20 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 6e 6b 20 6f 66  ..**.** Think of
30a30 20 65 61 63 68 20 53 51 4c 20 73 74 61 74 65 6d   each SQL statem
30a40 65 6e 74 20 61 73 20 61 20 73 65 70 61 72 61 74  ent as a separat
30a50 65 20 63 6f 6d 70 75 74 65 72 20 70 72 6f 67 72  e computer progr
30a60 61 6d 2e 20 20 54 68 65 0a 2a 2a 20 6f 72 69 67  am.  The.** orig
30a70 69 6e 61 6c 20 53 51 4c 20 74 65 78 74 20 69 73  inal SQL text is
30a80 20 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 41   source code.  A
30a90 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
30aa0 65 6e 74 20 6f 62 6a 65 63 74 20 0a 2a 2a 20 69  ent object .** i
30ab0 73 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6f  s the compiled o
30ac0 62 6a 65 63 74 20 63 6f 64 65 2e 20 20 41 6c 6c  bject code.  All
30ad0 20 53 51 4c 20 6d 75 73 74 20 62 65 20 63 6f 6e   SQL must be con
30ae0 76 65 72 74 65 64 20 69 6e 74 6f 20 61 0a 2a 2a  verted into a.**
30af0 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
30b00 65 6e 74 20 62 65 66 6f 72 65 20 69 74 20 63 61  ent before it ca
30b10 6e 20 62 65 20 72 75 6e 2e 0a 2a 2a 0a 2a 2a 20  n be run..**.** 
30b20 54 68 65 20 6c 69 66 65 2d 63 79 63 6c 65 20 6f  The life-cycle o
30b30 66 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61  f a prepared sta
30b40 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74 20 75 73  tement object us
30b50 75 61 6c 6c 79 20 67 6f 65 73 20 6c 69 6b 65 20  ually goes like 
30b60 74 68 69 73 3a 0a 2a 2a 0a 2a 2a 20 3c 6f 6c 3e  this:.**.** <ol>
30b70 0a 2a 2a 20 3c 6c 69 3e 20 43 72 65 61 74 65 20  .** <li> Create 
30b80 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
30b90 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74 20 75 73  tement object us
30ba0 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  ing [sqlite3_pre
30bb0 70 61 72 65 5f 76 32 28 29 5d 2e 0a 2a 2a 20 3c  pare_v2()]..** <
30bc0 6c 69 3e 20 42 69 6e 64 20 76 61 6c 75 65 73 20  li> Bind values 
30bd0 74 6f 20 5b 70 61 72 61 6d 65 74 65 72 73 5d 20  to [parameters] 
30be0 75 73 69 6e 67 20 74 68 65 20 73 71 6c 69 74 65  using the sqlite
30bf0 33 5f 62 69 6e 64 5f 2a 28 29 0a 2a 2a 20 20 20  3_bind_*().**   
30c00 20 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 2a     interfaces..*
30c10 2a 20 3c 6c 69 3e 20 52 75 6e 20 74 68 65 20 53  * <li> Run the S
30c20 51 4c 20 62 79 20 63 61 6c 6c 69 6e 67 20 5b 73  QL by calling [s
30c30 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 6f  qlite3_step()] o
30c40 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73  ne or more times
30c50 2e 0a 2a 2a 20 3c 6c 69 3e 20 52 65 73 65 74 20  ..** <li> Reset 
30c60 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
30c70 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 5b 73 71  tement using [sq
30c80 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20 74  lite3_reset()] t
30c90 68 65 6e 20 67 6f 20 62 61 63 6b 0a 2a 2a 20 20  hen go back.**  
30ca0 20 20 20 20 74 6f 20 73 74 65 70 20 32 2e 20 20      to step 2.  
30cb0 44 6f 20 74 68 69 73 20 7a 65 72 6f 20 6f 72 20  Do this zero or 
30cc0 6d 6f 72 65 20 74 69 6d 65 73 2e 0a 2a 2a 20 3c  more times..** <
30cd0 6c 69 3e 20 44 65 73 74 72 6f 79 20 74 68 65 20  li> Destroy the 
30ce0 6f 62 6a 65 63 74 20 75 73 69 6e 67 20 5b 73 71  object using [sq
30cf0 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29  lite3_finalize()
30d00 5d 2e 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a 2f 0a 74  ]..** </ol>.*/.t
30d10 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71  ypedef struct sq
30d20 6c 69 74 65 33 5f 73 74 6d 74 20 73 71 6c 69 74  lite3_stmt sqlit
30d30 65 33 5f 73 74 6d 74 3b 0a 0a 2f 2a 0a 2a 2a 20  e3_stmt;../*.** 
30d40 43 41 50 49 33 52 45 46 3a 20 52 75 6e 2d 74 69  CAPI3REF: Run-ti
30d50 6d 65 20 4c 69 6d 69 74 73 0a 2a 2a 20 4d 45 54  me Limits.** MET
30d60 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  HOD: sqlite3.**.
30d70 2a 2a 20 5e 28 54 68 69 73 20 69 6e 74 65 72 66  ** ^(This interf
30d80 61 63 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73  ace allows the s
30d90 69 7a 65 20 6f 66 20 76 61 72 69 6f 75 73 20 63  ize of various c
30da0 6f 6e 73 74 72 75 63 74 73 20 74 6f 20 62 65 20  onstructs to be 
30db0 6c 69 6d 69 74 65 64 0a 2a 2a 20 6f 6e 20 61 20  limited.** on a 
30dc0 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 79 20 63 6f  connection by co
30dd0 6e 6e 65 63 74 69 6f 6e 20 62 61 73 69 73 2e 20  nnection basis. 
30de0 20 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d   The first param
30df0 65 74 65 72 20 69 73 20 74 68 65 0a 2a 2a 20 5b  eter is the.** [
30e00 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
30e10 69 6f 6e 5d 20 77 68 6f 73 65 20 6c 69 6d 69 74  ion] whose limit
30e20 20 69 73 20 74 6f 20 62 65 20 73 65 74 20 6f 72   is to be set or
30e30 20 71 75 65 72 69 65 64 2e 20 20 54 68 65 0a 2a   queried.  The.*
30e40 2a 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  * second paramet
30e50 65 72 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65  er is one of the
30e60 20 5b 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 69   [limit categori
30e70 65 73 5d 20 74 68 61 74 20 64 65 66 69 6e 65 20  es] that define 
30e80 61 0a 2a 2a 20 63 6c 61 73 73 20 6f 66 20 63 6f  a.** class of co
30e90 6e 73 74 72 75 63 74 73 20 74 6f 20 62 65 20 73  nstructs to be s
30ea0 69 7a 65 20 6c 69 6d 69 74 65 64 2e 20 20 54 68  ize limited.  Th
30eb0 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65  e third paramete
30ec0 72 20 69 73 20 74 68 65 0a 2a 2a 20 6e 65 77 20  r is the.** new 
30ed0 6c 69 6d 69 74 20 66 6f 72 20 74 68 61 74 20 63  limit for that c
30ee0 6f 6e 73 74 72 75 63 74 2e 29 5e 0a 2a 2a 0a 2a  onstruct.)^.**.*
30ef0 2a 20 5e 49 66 20 74 68 65 20 6e 65 77 20 6c 69  * ^If the new li
30f00 6d 69 74 20 69 73 20 61 20 6e 65 67 61 74 69 76  mit is a negativ
30f10 65 20 6e 75 6d 62 65 72 2c 20 74 68 65 20 6c 69  e number, the li
30f20 6d 69 74 20 69 73 20 75 6e 63 68 61 6e 67 65 64  mit is unchanged
30f30 2e 0a 2a 2a 20 5e 28 46 6f 72 20 65 61 63 68 20  ..** ^(For each 
30f40 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 79 20 53  limit category S
30f50 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 3c 69 3e 4e  QLITE_LIMIT_<i>N
30f60 41 4d 45 3c 2f 69 3e 20 74 68 65 72 65 20 69 73  AME</i> there is
30f70 20 61 20 0a 2a 2a 20 5b 6c 69 6d 69 74 73 20 7c   a .** [limits |
30f80 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e   hard upper boun
30f90 64 5d 0a 2a 2a 20 73 65 74 20 61 74 20 63 6f 6d  d].** set at com
30fa0 70 69 6c 65 2d 74 69 6d 65 20 62 79 20 61 20 43  pile-time by a C
30fb0 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61   preprocessor ma
30fc0 63 72 6f 20 63 61 6c 6c 65 64 0a 2a 2a 20 5b 6c  cro called.** [l
30fd0 69 6d 69 74 73 20 7c 20 53 51 4c 49 54 45 5f 4d  imits | SQLITE_M
30fe0 41 58 5f 3c 69 3e 4e 41 4d 45 3c 2f 69 3e 5d 2e  AX_<i>NAME</i>].
30ff0 0a 2a 2a 20 28 54 68 65 20 22 5f 4c 49 4d 49 54  .** (The "_LIMIT
31000 5f 22 20 69 6e 20 74 68 65 20 6e 61 6d 65 20 69  _" in the name i
31010 73 20 63 68 61 6e 67 65 64 20 74 6f 20 22 5f 4d  s changed to "_M
31020 41 58 5f 22 2e 29 29 5e 0a 2a 2a 20 5e 41 74 74  AX_".))^.** ^Att
31030 65 6d 70 74 73 20 74 6f 20 69 6e 63 72 65 61 73  empts to increas
31040 65 20 61 20 6c 69 6d 69 74 20 61 62 6f 76 65 20  e a limit above 
31050 69 74 73 20 68 61 72 64 20 75 70 70 65 72 20 62  its hard upper b
31060 6f 75 6e 64 20 61 72 65 0a 2a 2a 20 73 69 6c 65  ound are.** sile
31070 6e 74 6c 79 20 74 72 75 6e 63 61 74 65 64 20 74  ntly truncated t
31080 6f 20 74 68 65 20 68 61 72 64 20 75 70 70 65 72  o the hard upper
31090 20 62 6f 75 6e 64 2e 0a 2a 2a 0a 2a 2a 20 5e 52   bound..**.** ^R
310a0 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65  egardless of whe
310b0 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20  ther or not the 
310c0 6c 69 6d 69 74 20 77 61 73 20 63 68 61 6e 67 65  limit was change
310d0 64 2c 20 74 68 65 20 0a 2a 2a 20 5b 73 71 6c 69  d, the .** [sqli
310e0 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20 69 6e 74  te3_limit()] int
310f0 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 74  erface returns t
31100 68 65 20 70 72 69 6f 72 20 76 61 6c 75 65 20 6f  he prior value o
31110 66 20 74 68 65 20 6c 69 6d 69 74 2e 0a 2a 2a 20  f the limit..** 
31120 5e 48 65 6e 63 65 2c 20 74 6f 20 66 69 6e 64 20  ^Hence, to find 
31130 74 68 65 20 63 75 72 72 65 6e 74 20 76 61 6c 75  the current valu
31140 65 20 6f 66 20 61 20 6c 69 6d 69 74 20 77 69 74  e of a limit wit
31150 68 6f 75 74 20 63 68 61 6e 67 69 6e 67 20 69 74  hout changing it
31160 2c 0a 2a 2a 20 73 69 6d 70 6c 79 20 69 6e 76 6f  ,.** simply invo
31170 6b 65 20 74 68 69 73 20 69 6e 74 65 72 66 61 63  ke this interfac
31180 65 20 77 69 74 68 20 74 68 65 20 74 68 69 72 64  e with the third
31190 20 70 61 72 61 6d 65 74 65 72 20 73 65 74 20 74   parameter set t
311a0 6f 20 2d 31 2e 0a 2a 2a 0a 2a 2a 20 52 75 6e 2d  o -1..**.** Run-
311b0 74 69 6d 65 20 6c 69 6d 69 74 73 20 61 72 65 20  time limits are 
311c0 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65  intended for use
311d0 20 69 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73   in applications
311e0 20 74 68 61 74 20 6d 61 6e 61 67 65 0a 2a 2a 20   that manage.** 
311f0 62 6f 74 68 20 74 68 65 69 72 20 6f 77 6e 20 69  both their own i
31200 6e 74 65 72 6e 61 6c 20 64 61 74 61 62 61 73 65  nternal database
31210 20 61 6e 64 20 61 6c 73 6f 20 64 61 74 61 62 61   and also databa
31220 73 65 73 20 74 68 61 74 20 61 72 65 20 63 6f 6e  ses that are con
31230 74 72 6f 6c 6c 65 64 0a 2a 2a 20 62 79 20 75 6e  trolled.** by un
31240 74 72 75 73 74 65 64 20 65 78 74 65 72 6e 61 6c  trusted external
31250 20 73 6f 75 72 63 65 73 2e 20 20 41 6e 20 65 78   sources.  An ex
31260 61 6d 70 6c 65 20 61 70 70 6c 69 63 61 74 69 6f  ample applicatio
31270 6e 20 6d 69 67 68 74 20 62 65 20 61 0a 2a 2a 20  n might be a.** 
31280 77 65 62 20 62 72 6f 77 73 65 72 20 74 68 61 74  web browser that
31290 20 68 61 73 20 69 74 73 20 6f 77 6e 20 64 61 74   has its own dat
312a0 61 62 61 73 65 73 20 66 6f 72 20 73 74 6f 72 69  abases for stori
312b0 6e 67 20 68 69 73 74 6f 72 79 20 61 6e 64 0a 2a  ng history and.*
312c0 2a 20 73 65 70 61 72 61 74 65 20 64 61 74 61 62  * separate datab
312d0 61 73 65 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20  ases controlled 
312e0 62 79 20 4a 61 76 61 53 63 72 69 70 74 20 61 70  by JavaScript ap
312f0 70 6c 69 63 61 74 69 6f 6e 73 20 64 6f 77 6e 6c  plications downl
31300 6f 61 64 65 64 0a 2a 2a 20 6f 66 66 20 74 68 65  oaded.** off the
31310 20 49 6e 74 65 72 6e 65 74 2e 20 20 54 68 65 20   Internet.  The 
31320 69 6e 74 65 72 6e 61 6c 20 64 61 74 61 62 61 73  internal databas
31330 65 73 20 63 61 6e 20 62 65 20 67 69 76 65 6e 20  es can be given 
31340 74 68 65 0a 2a 2a 20 6c 61 72 67 65 2c 20 64 65  the.** large, de
31350 66 61 75 6c 74 20 6c 69 6d 69 74 73 2e 20 20 44  fault limits.  D
31360 61 74 61 62 61 73 65 73 20 6d 61 6e 61 67 65 64  atabases managed
31370 20 62 79 20 65 78 74 65 72 6e 61 6c 20 73 6f 75   by external sou
31380 72 63 65 73 20 63 61 6e 0a 2a 2a 20 62 65 20 67  rces can.** be g
31390 69 76 65 6e 20 6d 75 63 68 20 73 6d 61 6c 6c 65  iven much smalle
313a0 72 20 6c 69 6d 69 74 73 20 64 65 73 69 67 6e 65  r limits designe
313b0 64 20 74 6f 20 70 72 65 76 65 6e 74 20 61 20 64  d to prevent a d
313c0 65 6e 69 61 6c 20 6f 66 20 73 65 72 76 69 63 65  enial of service
313d0 0a 2a 2a 20 61 74 74 61 63 6b 2e 20 20 44 65 76  .** attack.  Dev
313e0 65 6c 6f 70 65 72 73 20 6d 69 67 68 74 20 61 6c  elopers might al
313f0 73 6f 20 77 61 6e 74 20 74 6f 20 75 73 65 20 74  so want to use t
31400 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f  he [sqlite3_set_
31410 61 75 74 68 6f 72 69 7a 65 72 28 29 5d 0a 2a 2a  authorizer()].**
31420 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 66 75   interface to fu
31430 72 74 68 65 72 20 63 6f 6e 74 72 6f 6c 20 75 6e  rther control un
31440 74 72 75 73 74 65 64 20 53 51 4c 2e 20 20 54 68  trusted SQL.  Th
31450 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61  e size of the da
31460 74 61 62 61 73 65 0a 2a 2a 20 63 72 65 61 74 65  tabase.** create
31470 64 20 62 79 20 61 6e 20 75 6e 74 72 75 73 74 65  d by an untruste
31480 64 20 73 63 72 69 70 74 20 63 61 6e 20 62 65 20  d script can be 
31490 63 6f 6e 74 61 69 6e 65 64 20 75 73 69 6e 67 20  contained using 
314a0 74 68 65 0a 2a 2a 20 5b 6d 61 78 5f 70 61 67 65  the.** [max_page
314b0 5f 63 6f 75 6e 74 5d 20 5b 50 52 41 47 4d 41 5d  _count] [PRAGMA]
314c0 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 72 75 6e 2d  ..**.** New run-
314d0 74 69 6d 65 20 6c 69 6d 69 74 20 63 61 74 65 67  time limit categ
314e0 6f 72 69 65 73 20 6d 61 79 20 62 65 20 61 64 64  ories may be add
314f0 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c  ed in future rel
31500 65 61 73 65 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45  eases..*/.SQLITE
31510 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
31520 5f 6c 69 6d 69 74 28 73 71 6c 69 74 65 33 2a 2c  _limit(sqlite3*,
31530 20 69 6e 74 20 69 64 2c 20 69 6e 74 20 6e 65 77   int id, int new
31540 56 61 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  Val);../*.** CAP
31550 49 33 52 45 46 3a 20 52 75 6e 2d 54 69 6d 65 20  I3REF: Run-Time 
31560 4c 69 6d 69 74 20 43 61 74 65 67 6f 72 69 65 73  Limit Categories
31570 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 6c  .** KEYWORDS: {l
31580 69 6d 69 74 20 63 61 74 65 67 6f 72 79 7d 20 7b  imit category} {
31590 2a 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 69 65  *limit categorie
315a0 73 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63  s}.**.** These c
315b0 6f 6e 73 74 61 6e 74 73 20 64 65 66 69 6e 65 20  onstants define 
315c0 76 61 72 69 6f 75 73 20 70 65 72 66 6f 72 6d 61  various performa
315d0 6e 63 65 20 6c 69 6d 69 74 73 0a 2a 2a 20 74 68  nce limits.** th
315e0 61 74 20 63 61 6e 20 62 65 20 6c 6f 77 65 72 65  at can be lowere
315f0 64 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73  d at run-time us
31600 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d  ing [sqlite3_lim
31610 69 74 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 73 79  it()]..** The sy
31620 6e 6f 70 73 69 73 20 6f 66 20 74 68 65 20 6d 65  nopsis of the me
31630 61 6e 69 6e 67 73 20 6f 66 20 74 68 65 20 76 61  anings of the va
31640 72 69 6f 75 73 20 6c 69 6d 69 74 73 20 69 73 20  rious limits is 
31650 73 68 6f 77 6e 20 62 65 6c 6f 77 2e 0a 2a 2a 20  shown below..** 
31660 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  Additional infor
31670 6d 61 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61  mation is availa
31680 62 6c 65 20 61 74 20 5b 6c 69 6d 69 74 73 20 7c  ble at [limits |
31690 20 4c 69 6d 69 74 73 20 69 6e 20 53 51 4c 69 74   Limits in SQLit
316a0 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a  e]..**.** <dl>.*
316b0 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  * [[SQLITE_LIMIT
316c0 5f 4c 45 4e 47 54 48 5d 5d 20 5e 28 3c 64 74 3e  _LENGTH]] ^(<dt>
316d0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e  SQLITE_LIMIT_LEN
316e0 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  GTH</dt>.** <dd>
316f0 54 68 65 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65  The maximum size
31700 20 6f 66 20 61 6e 79 20 73 74 72 69 6e 67 20 6f   of any string o
31710 72 20 42 4c 4f 42 20 6f 72 20 74 61 62 6c 65 20  r BLOB or table 
31720 72 6f 77 2c 20 69 6e 20 62 79 74 65 73 2e 3c 64  row, in bytes.<d
31730 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  d>)^.**.** [[SQL
31740 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45  ITE_LIMIT_SQL_LE
31750 4e 47 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c  NGTH]] ^(<dt>SQL
31760 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45  ITE_LIMIT_SQL_LE
31770 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  NGTH</dt>.** <dd
31780 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e  >The maximum len
31790 67 74 68 20 6f 66 20 61 6e 20 53 51 4c 20 73 74  gth of an SQL st
317a0 61 74 65 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65  atement, in byte
317b0 73 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20  s.</dd>)^.**.** 
317c0 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43  [[SQLITE_LIMIT_C
317d0 4f 4c 55 4d 4e 5d 5d 20 5e 28 3c 64 74 3e 53 51  OLUMN]] ^(<dt>SQ
317e0 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d  LITE_LIMIT_COLUM
317f0 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68  N</dt>.** <dd>Th
31800 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  e maximum number
31810 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61   of columns in a
31820 20 74 61 62 6c 65 20 64 65 66 69 6e 69 74 69 6f   table definitio
31830 6e 20 6f 72 20 69 6e 20 74 68 65 0a 2a 2a 20 72  n or in the.** r
31840 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20 5b  esult set of a [
31850 53 45 4c 45 43 54 5d 20 6f 72 20 74 68 65 20 6d  SELECT] or the m
31860 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
31870 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69   columns in an i
31880 6e 64 65 78 0a 2a 2a 20 6f 72 20 69 6e 20 61 6e  ndex.** or in an
31890 20 4f 52 44 45 52 20 42 59 20 6f 72 20 47 52 4f   ORDER BY or GRO
318a0 55 50 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f 64  UP BY clause.</d
318b0 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  d>)^.**.** [[SQL
318c0 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50 52 5f 44  ITE_LIMIT_EXPR_D
318d0 45 50 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c  EPTH]] ^(<dt>SQL
318e0 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50 52 5f 44  ITE_LIMIT_EXPR_D
318f0 45 50 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  EPTH</dt>.** <dd
31900 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70  >The maximum dep
31910 74 68 20 6f 66 20 74 68 65 20 70 61 72 73 65 20  th of the parse 
31920 74 72 65 65 20 6f 6e 20 61 6e 79 20 65 78 70 72  tree on any expr
31930 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e 29 5e 0a 2a  ession.</dd>)^.*
31940 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  *.** [[SQLITE_LI
31950 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c  MIT_COMPOUND_SEL
31960 45 43 54 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49  ECT]] ^(<dt>SQLI
31970 54 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e  TE_LIMIT_COMPOUN
31980 44 5f 53 45 4c 45 43 54 3c 2f 64 74 3e 0a 2a 2a  D_SELECT</dt>.**
31990 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d   <dd>The maximum
319a0 20 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d 73   number of terms
319b0 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53   in a compound S
319c0 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e  ELECT statement.
319d0 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b  </dd>)^.**.** [[
319e0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 44 42  SQLITE_LIMIT_VDB
319f0 45 5f 4f 50 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c  E_OP]] ^(<dt>SQL
31a00 49 54 45 5f 4c 49 4d 49 54 5f 56 44 42 45 5f 4f  ITE_LIMIT_VDBE_O
31a10 50 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68  P</dt>.** <dd>Th
31a20 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  e maximum number
31a30 20 6f 66 20 69 6e 73 74 72 75 63 74 69 6f 6e 73   of instructions
31a40 20 69 6e 20 61 20 76 69 72 74 75 61 6c 20 6d 61   in a virtual ma
31a50 63 68 69 6e 65 20 70 72 6f 67 72 61 6d 0a 2a 2a  chine program.**
31a60 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65   used to impleme
31a70 6e 74 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d  nt an SQL statem
31a80 65 6e 74 2e 20 20 49 66 20 5b 73 71 6c 69 74 65  ent.  If [sqlite
31a90 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20  3_prepare_v2()] 
31aa0 6f 72 0a 2a 2a 20 74 68 65 20 65 71 75 69 76 61  or.** the equiva
31ab0 6c 65 6e 74 20 74 72 69 65 73 20 74 6f 20 61 6c  lent tries to al
31ac0 6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72  locate space for
31ad0 20 6d 6f 72 65 20 74 68 61 6e 20 74 68 69 73 20   more than this 
31ae0 6d 61 6e 79 20 6f 70 63 6f 64 65 73 0a 2a 2a 20  many opcodes.** 
31af0 69 6e 20 61 20 73 69 6e 67 6c 65 20 70 72 65 70  in a single prep
31b00 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2c 20  ared statement, 
31b10 61 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20  an SQLITE_NOMEM 
31b20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65  error is returne
31b30 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20  d.</dd>)^.**.** 
31b40 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 46  [[SQLITE_LIMIT_F
31b50 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 5d 20 5e 28  UNCTION_ARG]] ^(
31b60 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54  <dt>SQLITE_LIMIT
31b70 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 3c 2f 64  _FUNCTION_ARG</d
31b80 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61  t>.** <dd>The ma
31b90 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
31ba0 61 72 67 75 6d 65 6e 74 73 20 6f 6e 20 61 20 66  arguments on a f
31bb0 75 6e 63 74 69 6f 6e 2e 3c 2f 64 64 3e 29 5e 0a  unction.</dd>)^.
31bc0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c  **.** [[SQLITE_L
31bd0 49 4d 49 54 5f 41 54 54 41 43 48 45 44 5d 5d 20  IMIT_ATTACHED]] 
31be0 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d  ^(<dt>SQLITE_LIM
31bf0 49 54 5f 41 54 54 41 43 48 45 44 3c 2f 64 74 3e  IT_ATTACHED</dt>
31c00 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
31c10 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 5b 41  mum number of [A
31c20 54 54 41 43 48 20 7c 20 61 74 74 61 63 68 65 64  TTACH | attached
31c30 20 64 61 74 61 62 61 73 65 73 5d 2e 29 5e 3c 2f   databases].)^</
31c40 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
31c50 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50 41  TE_LIMIT_LIKE_PA
31c60 54 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 5d 0a 2a  TTERN_LENGTH]].*
31c70 2a 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c  * ^(<dt>SQLITE_L
31c80 49 4d 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45 52  IMIT_LIKE_PATTER
31c90 4e 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a  N_LENGTH</dt>.**
31ca0 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d   <dd>The maximum
31cb0 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 70   length of the p
31cc0 61 74 74 65 72 6e 20 61 72 67 75 6d 65 6e 74 20  attern argument 
31cd0 74 6f 20 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 72  to the [LIKE] or
31ce0 0a 2a 2a 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61  .** [GLOB] opera
31cf0 74 6f 72 73 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a  tors.</dd>)^.**.
31d00 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  ** [[SQLITE_LIMI
31d10 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45  T_VARIABLE_NUMBE
31d20 52 5d 5d 0a 2a 2a 20 5e 28 3c 64 74 3e 53 51 4c  R]].** ^(<dt>SQL
31d30 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49 41 42  ITE_LIMIT_VARIAB
31d40 4c 45 5f 4e 55 4d 42 45 52 3c 2f 64 74 3e 0a 2a  LE_NUMBER</dt>.*
31d50 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75  * <dd>The maximu
31d60 6d 20 69 6e 64 65 78 20 6e 75 6d 62 65 72 20 6f  m index number o
31d70 66 20 61 6e 79 20 5b 70 61 72 61 6d 65 74 65 72  f any [parameter
31d80 5d 20 69 6e 20 61 6e 20 53 51 4c 20 73 74 61 74  ] in an SQL stat
31d90 65 6d 65 6e 74 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5b  ement.)^.**.** [
31da0 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 54 52  [SQLITE_LIMIT_TR
31db0 49 47 47 45 52 5f 44 45 50 54 48 5d 5d 20 5e 28  IGGER_DEPTH]] ^(
31dc0 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54  <dt>SQLITE_LIMIT
31dd0 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48 3c 2f  _TRIGGER_DEPTH</
31de0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
31df0 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66 20  aximum depth of 
31e00 72 65 63 75 72 73 69 6f 6e 20 66 6f 72 20 74 72  recursion for tr
31e10 69 67 67 65 72 73 2e 3c 2f 64 64 3e 29 5e 0a 2a  iggers.</dd>)^.*
31e20 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  *.** [[SQLITE_LI
31e30 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41  MIT_WORKER_THREA
31e40 44 53 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54  DS]] ^(<dt>SQLIT
31e50 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54  E_LIMIT_WORKER_T
31e60 48 52 45 41 44 53 3c 2f 64 74 3e 0a 2a 2a 20 3c  HREADS</dt>.** <
31e70 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e  dd>The maximum n
31e80 75 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69 61  umber of auxilia
31e90 72 79 20 77 6f 72 6b 65 72 20 74 68 72 65 61 64  ry worker thread
31ea0 73 20 74 68 61 74 20 61 20 73 69 6e 67 6c 65 0a  s that a single.
31eb0 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  ** [prepared sta
31ec0 74 65 6d 65 6e 74 5d 20 6d 61 79 20 73 74 61 72  tement] may star
31ed0 74 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 20 3c 2f 64  t.</dd>)^.** </d
31ee0 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  l>.*/.#define SQ
31ef0 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54  LITE_LIMIT_LENGT
31f00 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  H               
31f10 20 20 20 20 20 30 0a 23 64 65 66 69 6e 65 20 53       0.#define S
31f20 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c 5f  QLITE_LIMIT_SQL_
31f30 4c 45 4e 47 54 48 20 20 20 20 20 20 20 20 20 20  LENGTH          
31f40 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65 20        1.#define 
31f50 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c  SQLITE_LIMIT_COL
31f60 55 4d 4e 20 20 20 20 20 20 20 20 20 20 20 20 20  UMN             
31f70 20 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65         2.#define
31f80 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 45 58   SQLITE_LIMIT_EX
31f90 50 52 5f 44 45 50 54 48 20 20 20 20 20 20 20 20  PR_DEPTH        
31fa0 20 20 20 20 20 20 20 20 33 0a 23 64 65 66 69 6e          3.#defin
31fb0 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43  e SQLITE_LIMIT_C
31fc0 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 20 20  OMPOUND_SELECT  
31fd0 20 20 20 20 20 20 20 20 20 34 0a 23 64 65 66 69           4.#defi
31fe0 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  ne SQLITE_LIMIT_
31ff0 56 44 42 45 5f 4f 50 20 20 20 20 20 20 20 20 20  VDBE_OP         
32000 20 20 20 20 20 20 20 20 20 20 35 0a 23 64 65 66            5.#def
32010 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54  ine SQLITE_LIMIT
32020 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 20 20 20  _FUNCTION_ARG   
32030 20 20 20 20 20 20 20 20 20 20 20 36 0a 23 64 65             6.#de
32040 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49  fine SQLITE_LIMI
32050 54 5f 41 54 54 41 43 48 45 44 20 20 20 20 20 20  T_ATTACHED      
32060 20 20 20 20 20 20 20 20 20 20 20 20 37 0a 23 64              7.#d
32070 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d  efine SQLITE_LIM
32080 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f  IT_LIKE_PATTERN_
32090 4c 45 4e 47 54 48 20 20 20 20 20 20 20 38 0a 23  LENGTH       8.#
320a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49  define SQLITE_LI
320b0 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d  MIT_VARIABLE_NUM
320c0 42 45 52 20 20 20 20 20 20 20 20 20 20 20 39 0a  BER           9.
320d0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
320e0 49 4d 49 54 5f 54 52 49 47 47 45 52 5f 44 45 50  IMIT_TRIGGER_DEP
320f0 54 48 20 20 20 20 20 20 20 20 20 20 20 20 31 30  TH            10
32100 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
32110 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52  LIMIT_WORKER_THR
32120 45 41 44 53 20 20 20 20 20 20 20 20 20 20 20 31  EADS           1
32130 31 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  1../*.** CAPI3RE
32140 46 3a 20 50 72 65 70 61 72 65 20 46 6c 61 67 73  F: Prepare Flags
32150 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e  .**.** These con
32160 73 74 61 6e 74 73 20 64 65 66 69 6e 65 20 76 61  stants define va
32170 72 69 6f 75 73 20 66 6c 61 67 73 20 74 68 61 74  rious flags that
32180 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69   can be passed i
32190 6e 74 6f 0a 2a 2a 20 22 70 72 65 70 46 6c 61 67  nto.** "prepFlag
321a0 73 22 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20  s" parameter of 
321b0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  the [sqlite3_pre
321c0 70 61 72 65 5f 76 33 28 29 5d 20 61 6e 64 0a 2a  pare_v3()] and.*
321d0 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
321e0 72 65 31 36 5f 76 33 28 29 5d 20 69 6e 74 65 72  re16_v3()] inter
321f0 66 61 63 65 73 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77  faces..**.** New
32200 20 66 6c 61 67 73 20 6d 61 79 20 62 65 20 61 64   flags may be ad
32210 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65  ded in future re
32220 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74 65  leases of SQLite
32230 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20  ..**.** <dl>.** 
32240 5b 5b 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45  [[SQLITE_PREPARE
32250 5f 50 45 52 53 49 53 54 45 4e 54 5d 5d 20 5e 28  _PERSISTENT]] ^(
32260 3c 64 74 3e 53 51 4c 49 54 45 5f 50 52 45 50 41  <dt>SQLITE_PREPA
32270 52 45 5f 50 45 52 53 49 53 54 45 4e 54 3c 2f 64  RE_PERSISTENT</d
32280 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 53 51  t>.** <dd>The SQ
32290 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52  LITE_PREPARE_PER
322a0 53 49 53 54 45 4e 54 20 66 6c 61 67 20 69 73 20  SISTENT flag is 
322b0 61 20 68 69 6e 74 20 74 6f 20 74 68 65 20 71 75  a hint to the qu
322c0 65 72 79 20 70 6c 61 6e 6e 65 72 0a 2a 2a 20 74  ery planner.** t
322d0 68 61 74 20 74 68 65 20 70 72 65 70 61 72 65 64  hat the prepared
322e0 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
322f0 62 65 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20  be retained for 
32300 61 20 6c 6f 6e 67 20 74 69 6d 65 20 61 6e 64 0a  a long time and.
32310 2a 2a 20 70 72 6f 62 61 62 6c 79 20 72 65 75 73  ** probably reus
32320 65 64 20 6d 61 6e 79 20 74 69 6d 65 73 2e 29 5e  ed many times.)^
32330 20 5e 57 69 74 68 6f 75 74 20 74 68 69 73 20 66   ^Without this f
32340 6c 61 67 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72  lag, [sqlite3_pr
32350 65 70 61 72 65 5f 76 33 28 29 5d 0a 2a 2a 20 61  epare_v3()].** a
32360 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  nd [sqlite3_prep
32370 61 72 65 31 36 5f 76 33 28 29 5d 20 61 73 73 75  are16_v3()] assu
32380 6d 65 20 74 68 61 74 20 74 68 65 20 70 72 65 70  me that the prep
32390 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 77  ared statement w
323a0 69 6c 6c 20 0a 2a 2a 20 62 65 20 75 73 65 64 20  ill .** be used 
323b0 6a 75 73 74 20 6f 6e 63 65 20 6f 72 20 61 74 20  just once or at 
323c0 6d 6f 73 74 20 61 20 66 65 77 20 74 69 6d 65 73  most a few times
323d0 20 61 6e 64 20 74 68 65 6e 20 64 65 73 74 72 6f   and then destro
323e0 79 65 64 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71  yed using.** [sq
323f0 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29  lite3_finalize()
32400 5d 20 72 65 6c 61 74 69 76 65 6c 79 20 73 6f 6f  ] relatively soo
32410 6e 2e 20 54 68 65 20 63 75 72 72 65 6e 74 20 69  n. The current i
32420 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61 63  mplementation ac
32430 74 73 0a 2a 2a 20 6f 6e 20 74 68 69 73 20 68 69  ts.** on this hi
32440 6e 74 20 62 79 20 61 76 6f 69 64 69 6e 67 20 74  nt by avoiding t
32450 68 65 20 75 73 65 20 6f 66 20 5b 6c 6f 6f 6b 61  he use of [looka
32460 73 69 64 65 20 6d 65 6d 6f 72 79 5d 20 73 6f 20  side memory] so 
32470 61 73 20 6e 6f 74 20 74 6f 0a 2a 2a 20 64 65 70  as not to.** dep
32480 6c 65 74 65 20 74 68 65 20 6c 69 6d 69 74 65 64  lete the limited
32490 20 73 74 6f 72 65 20 6f 66 20 6c 6f 6f 6b 61 73   store of lookas
324a0 69 64 65 20 6d 65 6d 6f 72 79 2e 20 46 75 74 75  ide memory. Futu
324b0 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 2a  re versions of.*
324c0 2a 20 53 51 4c 69 74 65 20 6d 61 79 20 61 63 74  * SQLite may act
324d0 20 6f 6e 20 74 68 69 73 20 68 69 6e 74 20 64 69   on this hint di
324e0 66 66 65 72 65 6e 74 6c 79 2e 0a 2a 2a 20 3c 2f  fferently..** </
324f0 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  dl>.*/.#define S
32500 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45  QLITE_PREPARE_PE
32510 52 53 49 53 54 45 4e 54 20 20 20 20 20 20 20 20  RSISTENT        
32520 20 20 20 20 20 20 30 78 30 31 0a 0a 2f 2a 0a 2a        0x01../*.*
32530 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6d 70  * CAPI3REF: Comp
32540 69 6c 69 6e 67 20 41 6e 20 53 51 4c 20 53 74 61  iling An SQL Sta
32550 74 65 6d 65 6e 74 0a 2a 2a 20 4b 45 59 57 4f 52  tement.** KEYWOR
32560 44 53 3a 20 7b 53 51 4c 20 73 74 61 74 65 6d 65  DS: {SQL stateme
32570 6e 74 20 63 6f 6d 70 69 6c 65 72 7d 0a 2a 2a 20  nt compiler}.** 
32580 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
32590 2a 2a 20 43 4f 4e 53 54 52 55 43 54 4f 52 3a 20  ** CONSTRUCTOR: 
325a0 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a  sqlite3_stmt.**.
325b0 2a 2a 20 54 6f 20 65 78 65 63 75 74 65 20 61 6e  ** To execute an
325c0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20   SQL statement, 
325d0 69 74 20 6d 75 73 74 20 66 69 72 73 74 20 62 65  it must first be
325e0 20 63 6f 6d 70 69 6c 65 64 20 69 6e 74 6f 20 61   compiled into a
325f0 20 62 79 74 65 2d 63 6f 64 65 0a 2a 2a 20 70 72   byte-code.** pr
32600 6f 67 72 61 6d 20 75 73 69 6e 67 20 6f 6e 65 20  ogram using one 
32610 6f 66 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65  of these routine
32620 73 2e 20 20 4f 72 2c 20 69 6e 20 6f 74 68 65 72  s.  Or, in other
32630 20 77 6f 72 64 73 2c 20 74 68 65 73 65 20 72 6f   words, these ro
32640 75 74 69 6e 65 73 0a 2a 2a 20 61 72 65 20 63 6f  utines.** are co
32650 6e 73 74 72 75 63 74 6f 72 73 20 66 6f 72 20 74  nstructors for t
32660 68 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  he [prepared sta
32670 74 65 6d 65 6e 74 5d 20 6f 62 6a 65 63 74 2e 0a  tement] object..
32680 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 65 66 65 72  **.** The prefer
32690 72 65 64 20 72 6f 75 74 69 6e 65 20 74 6f 20 75  red routine to u
326a0 73 65 20 69 73 20 5b 73 71 6c 69 74 65 33 5f 70  se is [sqlite3_p
326b0 72 65 70 61 72 65 5f 76 32 28 29 5d 2e 20 20 54  repare_v2()].  T
326c0 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70  he.** [sqlite3_p
326d0 72 65 70 61 72 65 28 29 5d 20 69 6e 74 65 72 66  repare()] interf
326e0 61 63 65 20 69 73 20 6c 65 67 61 63 79 20 61 6e  ace is legacy an
326f0 64 20 73 68 6f 75 6c 64 20 62 65 20 61 76 6f 69  d should be avoi
32700 64 65 64 2e 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  ded..** [sqlite3
32710 5f 70 72 65 70 61 72 65 5f 76 33 28 29 5d 20 68  _prepare_v3()] h
32720 61 73 20 61 6e 20 65 78 74 72 61 20 22 70 72 65  as an extra "pre
32730 70 46 6c 61 67 73 22 20 6f 70 74 69 6f 6e 20 74  pFlags" option t
32740 68 61 74 20 69 73 20 75 73 65 64 0a 2a 2a 20 66  hat is used.** f
32750 6f 72 20 73 70 65 63 69 61 6c 20 70 75 72 70 6f  or special purpo
32760 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 75  ses..**.** The u
32770 73 65 20 6f 66 20 74 68 65 20 55 54 46 2d 38 20  se of the UTF-8 
32780 69 6e 74 65 72 66 61 63 65 73 20 69 73 20 70 72  interfaces is pr
32790 65 66 65 72 72 65 64 2c 20 61 73 20 53 51 4c 69  eferred, as SQLi
327a0 74 65 20 63 75 72 72 65 6e 74 6c 79 0a 2a 2a 20  te currently.** 
327b0 64 6f 65 73 20 61 6c 6c 20 70 61 72 73 69 6e 67  does all parsing
327c0 20 75 73 69 6e 67 20 55 54 46 2d 38 2e 20 20 54   using UTF-8.  T
327d0 68 65 20 55 54 46 2d 31 36 20 69 6e 74 65 72 66  he UTF-16 interf
327e0 61 63 65 73 20 61 72 65 20 70 72 6f 76 69 64 65  aces are provide
327f0 64 0a 2a 2a 20 61 73 20 61 20 63 6f 6e 76 65 6e  d.** as a conven
32800 69 65 6e 63 65 2e 20 20 54 68 65 20 55 54 46 2d  ience.  The UTF-
32810 31 36 20 69 6e 74 65 72 66 61 63 65 73 20 77 6f  16 interfaces wo
32820 72 6b 20 62 79 20 63 6f 6e 76 65 72 74 69 6e 67  rk by converting
32830 20 74 68 65 0a 2a 2a 20 69 6e 70 75 74 20 74 65   the.** input te
32840 78 74 20 69 6e 74 6f 20 55 54 46 2d 38 2c 20 74  xt into UTF-8, t
32850 68 65 6e 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65  hen invoking the
32860 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 55   corresponding U
32870 54 46 2d 38 20 69 6e 74 65 72 66 61 63 65 2e 0a  TF-8 interface..
32880 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20  **.** The first 
32890 61 72 67 75 6d 65 6e 74 2c 20 22 64 62 22 2c 20  argument, "db", 
328a0 69 73 20 61 20 5b 64 61 74 61 62 61 73 65 20 63  is a [database c
328b0 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 62 74 61 69  onnection] obtai
328c0 6e 65 64 20 66 72 6f 6d 20 61 0a 2a 2a 20 70 72  ned from a.** pr
328d0 69 6f 72 20 73 75 63 63 65 73 73 66 75 6c 20 63  ior successful c
328e0 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  all to [sqlite3_
328f0 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65  open()], [sqlite
32900 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 6f 72 0a  3_open_v2()] or.
32910 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ** [sqlite3_open
32920 31 36 28 29 5d 2e 20 20 54 68 65 20 64 61 74 61  16()].  The data
32930 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
32940 6d 75 73 74 20 6e 6f 74 20 68 61 76 65 20 62 65  must not have be
32950 65 6e 20 63 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a 2a  en closed..**.**
32960 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   The second argu
32970 6d 65 6e 74 2c 20 22 7a 53 71 6c 22 2c 20 69 73  ment, "zSql", is
32980 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 74   the statement t
32990 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64 2c 20 65  o be compiled, e
329a0 6e 63 6f 64 65 64 0a 2a 2a 20 61 73 20 65 69 74  ncoded.** as eit
329b0 68 65 72 20 55 54 46 2d 38 20 6f 72 20 55 54 46  her UTF-8 or UTF
329c0 2d 31 36 2e 20 20 54 68 65 20 73 71 6c 69 74 65  -16.  The sqlite
329d0 33 5f 70 72 65 70 61 72 65 28 29 2c 20 73 71 6c  3_prepare(), sql
329e0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
329f0 29 2c 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65  ),.** and sqlite
32a00 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 0a 2a  3_prepare_v3().*
32a10 2a 20 69 6e 74 65 72 66 61 63 65 73 20 75 73 65  * interfaces use
32a20 20 55 54 46 2d 38 2c 20 61 6e 64 20 73 71 6c 69   UTF-8, and sqli
32a30 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 2c  te3_prepare16(),
32a40 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
32a50 31 36 5f 76 32 28 29 2c 0a 2a 2a 20 61 6e 64 20  16_v2(),.** and 
32a60 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
32a70 36 5f 76 33 28 29 20 75 73 65 20 55 54 46 2d 31  6_v3() use UTF-1
32a80 36 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  6..**.** ^If the
32a90 20 6e 42 79 74 65 20 61 72 67 75 6d 65 6e 74 20   nByte argument 
32aa0 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65  is negative, the
32ab0 6e 20 7a 53 71 6c 20 69 73 20 72 65 61 64 20 75  n zSql is read u
32ac0 70 20 74 6f 20 74 68 65 0a 2a 2a 20 66 69 72 73  p to the.** firs
32ad0 74 20 7a 65 72 6f 20 74 65 72 6d 69 6e 61 74 6f  t zero terminato
32ae0 72 2e 20 5e 49 66 20 6e 42 79 74 65 20 69 73 20  r. ^If nByte is 
32af0 70 6f 73 69 74 69 76 65 2c 20 74 68 65 6e 20 69  positive, then i
32b00 74 20 69 73 20 74 68 65 0a 2a 2a 20 6e 75 6d 62  t is the.** numb
32b10 65 72 20 6f 66 20 62 79 74 65 73 20 72 65 61 64  er of bytes read
32b20 20 66 72 6f 6d 20 7a 53 71 6c 2e 20 20 5e 49 66   from zSql.  ^If
32b30 20 6e 42 79 74 65 20 69 73 20 7a 65 72 6f 2c 20   nByte is zero, 
32b40 74 68 65 6e 20 6e 6f 20 70 72 65 70 61 72 65 64  then no prepared
32b50 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 69 73  .** statement is
32b60 20 67 65 6e 65 72 61 74 65 64 2e 0a 2a 2a 20 49   generated..** I
32b70 66 20 74 68 65 20 63 61 6c 6c 65 72 20 6b 6e 6f  f the caller kno
32b80 77 73 20 74 68 61 74 20 74 68 65 20 73 75 70 70  ws that the supp
32b90 6c 69 65 64 20 73 74 72 69 6e 67 20 69 73 20 6e  lied string is n
32ba0 75 6c 2d 74 65 72 6d 69 6e 61 74 65 64 2c 20 74  ul-terminated, t
32bb0 68 65 6e 0a 2a 2a 20 74 68 65 72 65 20 69 73 20  hen.** there is 
32bc0 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61  a small performa
32bd0 6e 63 65 20 61 64 76 61 6e 74 61 67 65 20 74 6f  nce advantage to
32be0 20 70 61 73 73 69 6e 67 20 61 6e 20 6e 42 79 74   passing an nByt
32bf0 65 20 70 61 72 61 6d 65 74 65 72 20 74 68 61 74  e parameter that
32c00 0a 2a 2a 20 69 73 20 74 68 65 20 6e 75 6d 62 65  .** is the numbe
32c10 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68  r of bytes in th
32c20 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c  e input string <
32c30 69 3e 69 6e 63 6c 75 64 69 6e 67 3c 2f 69 3e 0a  i>including</i>.
32c40 2a 2a 20 74 68 65 20 6e 75 6c 2d 74 65 72 6d 69  ** the nul-termi
32c50 6e 61 74 6f 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  nator..**.** ^If
32c60 20 70 7a 54 61 69 6c 20 69 73 20 6e 6f 74 20 4e   pzTail is not N
32c70 55 4c 4c 20 74 68 65 6e 20 2a 70 7a 54 61 69 6c  ULL then *pzTail
32c80 20 69 73 20 6d 61 64 65 20 74 6f 20 70 6f 69 6e   is made to poin
32c90 74 20 74 6f 20 74 68 65 20 66 69 72 73 74 20 62  t to the first b
32ca0 79 74 65 0a 2a 2a 20 70 61 73 74 20 74 68 65 20  yte.** past the 
32cb0 65 6e 64 20 6f 66 20 74 68 65 20 66 69 72 73 74  end of the first
32cc0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69   SQL statement i
32cd0 6e 20 7a 53 71 6c 2e 20 20 54 68 65 73 65 20 72  n zSql.  These r
32ce0 6f 75 74 69 6e 65 73 20 6f 6e 6c 79 0a 2a 2a 20  outines only.** 
32cf0 63 6f 6d 70 69 6c 65 20 74 68 65 20 66 69 72 73  compile the firs
32d00 74 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 7a  t statement in z
32d10 53 71 6c 2c 20 73 6f 20 2a 70 7a 54 61 69 6c 20  Sql, so *pzTail 
32d20 69 73 20 6c 65 66 74 20 70 6f 69 6e 74 69 6e 67  is left pointing
32d30 20 74 6f 0a 2a 2a 20 77 68 61 74 20 72 65 6d 61   to.** what rema
32d40 69 6e 73 20 75 6e 63 6f 6d 70 69 6c 65 64 2e 0a  ins uncompiled..
32d50 2a 2a 0a 2a 2a 20 5e 2a 70 70 53 74 6d 74 20 69  **.** ^*ppStmt i
32d60 73 20 6c 65 66 74 20 70 6f 69 6e 74 69 6e 67 20  s left pointing 
32d70 74 6f 20 61 20 63 6f 6d 70 69 6c 65 64 20 5b 70  to a compiled [p
32d80 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
32d90 74 5d 20 74 68 61 74 20 63 61 6e 20 62 65 0a 2a  t] that can be.*
32da0 2a 20 65 78 65 63 75 74 65 64 20 75 73 69 6e 67  * executed using
32db0 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
32dc0 5d 2e 20 20 5e 49 66 20 74 68 65 72 65 20 69 73  ].  ^If there is
32dd0 20 61 6e 20 65 72 72 6f 72 2c 20 2a 70 70 53 74   an error, *ppSt
32de0 6d 74 20 69 73 20 73 65 74 0a 2a 2a 20 74 6f 20  mt is set.** to 
32df0 4e 55 4c 4c 2e 20 20 5e 49 66 20 74 68 65 20 69  NULL.  ^If the i
32e00 6e 70 75 74 20 74 65 78 74 20 63 6f 6e 74 61 69  nput text contai
32e10 6e 73 20 6e 6f 20 53 51 4c 20 28 69 66 20 74 68  ns no SQL (if th
32e20 65 20 69 6e 70 75 74 20 69 73 20 61 6e 20 65 6d  e input is an em
32e30 70 74 79 0a 2a 2a 20 73 74 72 69 6e 67 20 6f 72  pty.** string or
32e40 20 61 20 63 6f 6d 6d 65 6e 74 29 20 74 68 65 6e   a comment) then
32e50 20 2a 70 70 53 74 6d 74 20 69 73 20 73 65 74 20   *ppStmt is set 
32e60 74 6f 20 4e 55 4c 4c 2e 0a 2a 2a 20 54 68 65 20  to NULL..** The 
32e70 63 61 6c 6c 69 6e 67 20 70 72 6f 63 65 64 75 72  calling procedur
32e80 65 20 69 73 20 72 65 73 70 6f 6e 73 69 62 6c 65  e is responsible
32e90 20 66 6f 72 20 64 65 6c 65 74 69 6e 67 20 74 68   for deleting th
32ea0 65 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20 53 51  e compiled.** SQ
32eb0 4c 20 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e  L statement usin
32ec0 67 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  g [sqlite3_final
32ed0 69 7a 65 28 29 5d 20 61 66 74 65 72 20 69 74 20  ize()] after it 
32ee0 68 61 73 20 66 69 6e 69 73 68 65 64 20 77 69 74  has finished wit
32ef0 68 20 69 74 2e 0a 2a 2a 20 70 70 53 74 6d 74 20  h it..** ppStmt 
32f00 6d 61 79 20 6e 6f 74 20 62 65 20 4e 55 4c 4c 2e  may not be NULL.
32f10 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 20 73 75 63 63 65  .**.** ^On succe
32f20 73 73 2c 20 74 68 65 20 73 71 6c 69 74 65 33 5f  ss, the sqlite3_
32f30 70 72 65 70 61 72 65 28 29 20 66 61 6d 69 6c 79  prepare() family
32f40 20 6f 66 20 72 6f 75 74 69 6e 65 73 20 72 65 74   of routines ret
32f50 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 3b  urn [SQLITE_OK];
32f60 0a 2a 2a 20 6f 74 68 65 72 77 69 73 65 20 61 6e  .** otherwise an
32f70 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 69 73   [error code] is
32f80 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a   returned..**.**
32f90 20 54 68 65 20 73 71 6c 69 74 65 33 5f 70 72 65   The sqlite3_pre
32fa0 70 61 72 65 5f 76 32 28 29 2c 20 73 71 6c 69 74  pare_v2(), sqlit
32fb0 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 2c  e3_prepare_v3(),
32fc0 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
32fd0 31 36 5f 76 32 28 29 2c 0a 2a 2a 20 61 6e 64 20  16_v2(),.** and 
32fe0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
32ff0 36 5f 76 33 28 29 20 69 6e 74 65 72 66 61 63 65  6_v3() interface
33000 73 20 61 72 65 20 72 65 63 6f 6d 6d 65 6e 64 65  s are recommende
33010 64 20 66 6f 72 20 61 6c 6c 20 6e 65 77 20 70 72  d for all new pr
33020 6f 67 72 61 6d 73 2e 0a 2a 2a 20 54 68 65 20 6f  ograms..** The o
33030 6c 64 65 72 20 69 6e 74 65 72 66 61 63 65 73 20  lder interfaces 
33040 28 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  (sqlite3_prepare
33050 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70  () and sqlite3_p
33060 72 65 70 61 72 65 31 36 28 29 29 0a 2a 2a 20 61  repare16()).** a
33070 72 65 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20  re retained for 
33080 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74  backwards compat
33090 69 62 69 6c 69 74 79 2c 20 62 75 74 20 74 68 65  ibility, but the
330a0 69 72 20 75 73 65 20 69 73 20 64 69 73 63 6f 75  ir use is discou
330b0 72 61 67 65 64 2e 0a 2a 2a 20 5e 49 6e 20 74 68  raged..** ^In th
330c0 65 20 22 76 58 22 20 69 6e 74 65 72 66 61 63 65  e "vX" interface
330d0 73 2c 20 74 68 65 20 70 72 65 70 61 72 65 64 20  s, the prepared 
330e0 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 74 68 61  statement.** tha
330f0 74 20 69 73 20 72 65 74 75 72 6e 65 64 20 28 74  t is returned (t
33100 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74  he [sqlite3_stmt
33110 5d 20 6f 62 6a 65 63 74 29 20 63 6f 6e 74 61 69  ] object) contai
33120 6e 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  ns a copy of the
33130 0a 2a 2a 20 6f 72 69 67 69 6e 61 6c 20 53 51 4c  .** original SQL
33140 20 74 65 78 74 2e 20 54 68 69 73 20 63 61 75 73   text. This caus
33150 65 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  es the [sqlite3_
33160 73 74 65 70 28 29 5d 20 69 6e 74 65 72 66 61 63  step()] interfac
33170 65 20 74 6f 0a 2a 2a 20 62 65 68 61 76 65 20 64  e to.** behave d
33180 69 66 66 65 72 65 6e 74 6c 79 20 69 6e 20 74 68  ifferently in th
33190 72 65 65 20 77 61 79 73 3a 0a 2a 2a 0a 2a 2a 20  ree ways:.**.** 
331a0 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20  <ol>.** <li>.** 
331b0 5e 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65  ^If the database
331c0 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 73 2c   schema changes,
331d0 20 69 6e 73 74 65 61 64 20 6f 66 20 72 65 74 75   instead of retu
331e0 72 6e 69 6e 67 20 5b 53 51 4c 49 54 45 5f 53 43  rning [SQLITE_SC
331f0 48 45 4d 41 5d 20 61 73 20 69 74 0a 2a 2a 20 61  HEMA] as it.** a
33200 6c 77 61 79 73 20 75 73 65 64 20 74 6f 20 64 6f  lways used to do
33210 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  , [sqlite3_step(
33220 29 5d 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69  )] will automati
33230 63 61 6c 6c 79 20 72 65 63 6f 6d 70 69 6c 65 20  cally recompile 
33240 74 68 65 20 53 51 4c 0a 2a 2a 20 73 74 61 74 65  the SQL.** state
33250 6d 65 6e 74 20 61 6e 64 20 74 72 79 20 74 6f 20  ment and try to 
33260 72 75 6e 20 69 74 20 61 67 61 69 6e 2e 20 41 73  run it again. As
33270 20 6d 61 6e 79 20 61 73 20 5b 53 51 4c 49 54 45   many as [SQLITE
33280 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52  _MAX_SCHEMA_RETR
33290 59 5d 0a 2a 2a 20 72 65 74 72 69 65 73 20 77 69  Y].** retries wi
332a0 6c 6c 20 6f 63 63 75 72 20 62 65 66 6f 72 65 20  ll occur before 
332b0 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 67  sqlite3_step() g
332c0 69 76 65 73 20 75 70 20 61 6e 64 20 72 65 74 75  ives up and retu
332d0 72 6e 73 20 61 6e 20 65 72 72 6f 72 2e 0a 2a 2a  rns an error..**
332e0 20 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a 20 3c 6c 69   </li>.**.** <li
332f0 3e 0a 2a 2a 20 5e 57 68 65 6e 20 61 6e 20 65 72  >.** ^When an er
33300 72 6f 72 20 6f 63 63 75 72 73 2c 20 5b 73 71 6c  ror occurs, [sql
33310 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77 69 6c  ite3_step()] wil
33320 6c 20 72 65 74 75 72 6e 20 6f 6e 65 20 6f 66 20  l return one of 
33330 74 68 65 20 64 65 74 61 69 6c 65 64 0a 2a 2a 20  the detailed.** 
33340 5b 65 72 72 6f 72 20 63 6f 64 65 73 5d 20 6f 72  [error codes] or
33350 20 5b 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72   [extended error
33360 20 63 6f 64 65 73 5d 2e 20 20 5e 54 68 65 20 6c   codes].  ^The l
33370 65 67 61 63 79 20 62 65 68 61 76 69 6f 72 20 77  egacy behavior w
33380 61 73 20 74 68 61 74 0a 2a 2a 20 5b 73 71 6c 69  as that.** [sqli
33390 74 65 33 5f 73 74 65 70 28 29 5d 20 77 6f 75 6c  te3_step()] woul
333a0 64 20 6f 6e 6c 79 20 72 65 74 75 72 6e 20 61 20  d only return a 
333b0 67 65 6e 65 72 69 63 20 5b 53 51 4c 49 54 45 5f  generic [SQLITE_
333c0 45 52 52 4f 52 5d 20 72 65 73 75 6c 74 20 63 6f  ERROR] result co
333d0 64 65 0a 2a 2a 20 61 6e 64 20 74 68 65 20 61 70  de.** and the ap
333e0 70 6c 69 63 61 74 69 6f 6e 20 77 6f 75 6c 64 20  plication would 
333f0 68 61 76 65 20 74 6f 20 6d 61 6b 65 20 61 20 73  have to make a s
33400 65 63 6f 6e 64 20 63 61 6c 6c 20 74 6f 20 5b 73  econd call to [s
33410 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 0a  qlite3_reset()].
33420 2a 2a 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 66  ** in order to f
33430 69 6e 64 20 74 68 65 20 75 6e 64 65 72 6c 79 69  ind the underlyi
33440 6e 67 20 63 61 75 73 65 20 6f 66 20 74 68 65 20  ng cause of the 
33450 70 72 6f 62 6c 65 6d 2e 20 57 69 74 68 20 74 68  problem. With th
33460 65 20 22 76 32 22 20 70 72 65 70 61 72 65 0a 2a  e "v2" prepare.*
33470 2a 20 69 6e 74 65 72 66 61 63 65 73 2c 20 74 68  * interfaces, th
33480 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 72 65 61  e underlying rea
33490 73 6f 6e 20 66 6f 72 20 74 68 65 20 65 72 72 6f  son for the erro
334a0 72 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 6d  r is returned im
334b0 6d 65 64 69 61 74 65 6c 79 2e 0a 2a 2a 20 3c 2f  mediately..** </
334c0 6c 69 3e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 0a 2a  li>.**.** <li>.*
334d0 2a 20 5e 49 66 20 74 68 65 20 73 70 65 63 69 66  * ^If the specif
334e0 69 63 20 76 61 6c 75 65 20 62 6f 75 6e 64 20 74  ic value bound t
334f0 6f 20 5b 70 61 72 61 6d 65 74 65 72 20 7c 20 68  o [parameter | h
33500 6f 73 74 20 70 61 72 61 6d 65 74 65 72 5d 20 69  ost parameter] i
33510 6e 20 74 68 65 20 0a 2a 2a 20 57 48 45 52 45 20  n the .** WHERE 
33520 63 6c 61 75 73 65 20 6d 69 67 68 74 20 69 6e 66  clause might inf
33530 6c 75 65 6e 63 65 20 74 68 65 20 63 68 6f 69 63  luence the choic
33540 65 20 6f 66 20 71 75 65 72 79 20 70 6c 61 6e 20  e of query plan 
33550 66 6f 72 20 61 20 73 74 61 74 65 6d 65 6e 74 2c  for a statement,
33560 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 73 74 61  .** then the sta
33570 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 61  tement will be a
33580 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 63  utomatically rec
33590 6f 6d 70 69 6c 65 64 2c 20 61 73 20 69 66 20 74  ompiled, as if t
335a0 68 65 72 65 20 68 61 64 20 62 65 65 6e 20 0a 2a  here had been .*
335b0 2a 20 61 20 73 63 68 65 6d 61 20 63 68 61 6e 67  * a schema chang
335c0 65 2c 20 6f 6e 20 74 68 65 20 66 69 72 73 74 20  e, on the first 
335d0 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
335e0 5d 20 63 61 6c 6c 20 66 6f 6c 6c 6f 77 69 6e 67  ] call following
335f0 20 61 6e 79 20 63 68 61 6e 67 65 0a 2a 2a 20 74   any change.** t
33600 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 62  o the [sqlite3_b
33610 69 6e 64 5f 74 65 78 74 20 7c 20 62 69 6e 64 69  ind_text | bindi
33620 6e 67 73 5d 20 6f 66 20 74 68 61 74 20 5b 70 61  ngs] of that [pa
33630 72 61 6d 65 74 65 72 5d 2e 20 0a 2a 2a 20 5e 54  rameter]. .** ^T
33640 68 65 20 73 70 65 63 69 66 69 63 20 76 61 6c 75  he specific valu
33650 65 20 6f 66 20 57 48 45 52 45 2d 63 6c 61 75 73  e of WHERE-claus
33660 65 20 5b 70 61 72 61 6d 65 74 65 72 5d 20 6d 69  e [parameter] mi
33670 67 68 74 20 69 6e 66 6c 75 65 6e 63 65 20 74 68  ght influence th
33680 65 20 0a 2a 2a 20 63 68 6f 69 63 65 20 6f 66 20  e .** choice of 
33690 71 75 65 72 79 20 70 6c 61 6e 20 69 66 20 74 68  query plan if th
336a0 65 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74  e parameter is t
336b0 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64  he left-hand sid
336c0 65 20 6f 66 20 61 20 5b 4c 49 4b 45 5d 0a 2a 2a  e of a [LIKE].**
336d0 20 6f 72 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61   or [GLOB] opera
336e0 74 6f 72 20 6f 72 20 69 66 20 74 68 65 20 70 61  tor or if the pa
336f0 72 61 6d 65 74 65 72 20 69 73 20 63 6f 6d 70 61  rameter is compa
33700 72 65 64 20 74 6f 20 61 6e 20 69 6e 64 65 78 65  red to an indexe
33710 64 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 61 6e 64 20  d column.** and 
33720 74 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42  the [SQLITE_ENAB
33730 4c 45 5f 53 54 41 54 33 5d 20 63 6f 6d 70 69 6c  LE_STAT3] compil
33740 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
33750 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 20 3c 2f 6c   enabled..** </l
33760 69 3e 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a 2a 0a 2a  i>.** </ol>.**.*
33770 2a 20 3c 70 3e 5e 73 71 6c 69 74 65 33 5f 70 72  * <p>^sqlite3_pr
33780 65 70 61 72 65 5f 76 33 28 29 20 64 69 66 66 65  epare_v3() diffe
33790 72 73 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  rs from sqlite3_
337a0 70 72 65 70 61 72 65 5f 76 32 28 29 20 6f 6e 6c  prepare_v2() onl
337b0 79 20 69 6e 20 68 61 76 69 6e 67 0a 2a 2a 20 74  y in having.** t
337c0 68 65 20 65 78 74 72 61 20 70 72 65 70 46 6c 61  he extra prepFla
337d0 67 73 20 70 61 72 61 6d 65 74 65 72 2c 20 77 68  gs parameter, wh
337e0 69 63 68 20 69 73 20 61 20 62 69 74 20 61 72 72  ich is a bit arr
337f0 61 79 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66  ay consisting of
33800 20 7a 65 72 6f 20 6f 72 0a 2a 2a 20 6d 6f 72 65   zero or.** more
33810 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   of the [SQLITE_
33820 50 52 45 50 41 52 45 5f 50 45 52 53 49 53 54 45  PREPARE_PERSISTE
33830 4e 54 7c 53 51 4c 49 54 45 5f 50 52 45 50 41 52  NT|SQLITE_PREPAR
33840 45 5f 2a 5d 20 66 6c 61 67 73 2e 20 20 5e 54 68  E_*] flags.  ^Th
33850 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 65  e.** sqlite3_pre
33860 70 61 72 65 5f 76 32 28 29 20 69 6e 74 65 72 66  pare_v2() interf
33870 61 63 65 20 77 6f 72 6b 73 20 65 78 61 63 74 6c  ace works exactl
33880 79 20 74 68 65 20 73 61 6d 65 20 61 73 0a 2a 2a  y the same as.**
33890 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
338a0 5f 76 33 28 29 20 77 69 74 68 20 61 20 7a 65 72  _v3() with a zer
338b0 6f 20 70 72 65 70 46 6c 61 67 73 20 70 61 72 61  o prepFlags para
338c0 6d 65 74 65 72 2e 0a 2a 2f 0a 53 51 4c 49 54 45  meter..*/.SQLITE
338d0 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
338e0 5f 70 72 65 70 61 72 65 28 0a 20 20 73 71 6c 69  _prepare(.  sqli
338f0 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20  te3 *db,        
33900 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20      /* Database 
33910 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73  handle */.  cons
33920 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20  t char *zSql,   
33930 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65      /* SQL state
33940 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63 6f  ment, UTF-8 enco
33950 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79  ded */.  int nBy
33960 74 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  te,             
33970 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67   /* Maximum leng
33980 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79  th of zSql in by
33990 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65  tes. */.  sqlite
339a0 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c  3_stmt **ppStmt,
339b0 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d    /* OUT: Statem
339c0 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ent handle */.  
339d0 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70 7a 54  const char **pzT
339e0 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20  ail     /* OUT: 
339f0 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65  Pointer to unuse
33a00 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71  d portion of zSq
33a10 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41  l */.);.SQLITE_A
33a20 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70  PI int sqlite3_p
33a30 72 65 70 61 72 65 5f 76 32 28 0a 20 20 73 71 6c  repare_v2(.  sql
33a40 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
33a50 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65       /* Database
33a60 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
33a70 73 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20  st char *zSql,  
33a80 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74       /* SQL stat
33a90 65 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63  ement, UTF-8 enc
33aa0 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42  oded */.  int nB
33ab0 79 74 65 2c 20 20 20 20 20 20 20 20 20 20 20 20  yte,            
33ac0 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e    /* Maximum len
33ad0 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62  gth of zSql in b
33ae0 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74  ytes. */.  sqlit
33af0 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74  e3_stmt **ppStmt
33b00 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65  ,  /* OUT: State
33b10 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  ment handle */. 
33b20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70 7a   const char **pz
33b30 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a  Tail     /* OUT:
33b40 20 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73   Pointer to unus
33b50 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53  ed portion of zS
33b60 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f  ql */.);.SQLITE_
33b70 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
33b80 70 72 65 70 61 72 65 5f 76 33 28 0a 20 20 73 71  prepare_v3(.  sq
33b90 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20  lite3 *db,      
33ba0 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73        /* Databas
33bb0 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f  e handle */.  co
33bc0 6e 73 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20  nst char *zSql, 
33bd0 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61        /* SQL sta
33be0 74 65 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e  tement, UTF-8 en
33bf0 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e  coded */.  int n
33c00 42 79 74 65 2c 20 20 20 20 20 20 20 20 20 20 20  Byte,           
33c10 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65     /* Maximum le
33c20 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20  ngth of zSql in 
33c30 62 79 74 65 73 2e 20 2a 2f 0a 20 20 75 6e 73 69  bytes. */.  unsi
33c40 67 6e 65 64 20 69 6e 74 20 70 72 65 70 46 6c 61  gned int prepFla
33c50 67 73 2c 20 2f 2a 20 5a 65 72 6f 20 6f 72 20 6d  gs, /* Zero or m
33c60 6f 72 65 20 53 51 4c 49 54 45 5f 50 52 45 50 41  ore SQLITE_PREPA
33c70 52 45 5f 20 66 6c 61 67 73 20 2a 2f 0a 20 20 73  RE_ flags */.  s
33c80 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70  qlite3_stmt **pp
33c90 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53  Stmt,  /* OUT: S
33ca0 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20  tatement handle 
33cb0 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  */.  const char 
33cc0 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20  **pzTail     /* 
33cd0 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20  OUT: Pointer to 
33ce0 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f  unused portion o
33cf0 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c  f zSql */.);.SQL
33d00 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
33d10 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 0a 20  te3_prepare16(. 
33d20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
33d30 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61           /* Data
33d40 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  base handle */. 
33d50 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71   const void *zSq
33d60 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20  l,       /* SQL 
33d70 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31  statement, UTF-1
33d80 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69  6 encoded */.  i
33d90 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20  nt nByte,       
33da0 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75         /* Maximu
33db0 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c  m length of zSql
33dc0 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20   in bytes. */.  
33dd0 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70  sqlite3_stmt **p
33de0 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20  pStmt,  /* OUT: 
33df0 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65  Statement handle
33e00 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64   */.  const void
33e10 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a   **pzTail     /*
33e20 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f   OUT: Pointer to
33e30 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20   unused portion 
33e40 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51  of zSql */.);.SQ
33e50 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
33e60 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
33e70 32 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62  2(.  sqlite3 *db
33e80 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
33e90 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20  Database handle 
33ea0 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20  */.  const void 
33eb0 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20  *zSql,       /* 
33ec0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55  SQL statement, U
33ed0 54 46 2d 31 36 20 65 6e 63 6f 64 65 64 20 2a 2f  TF-16 encoded */
33ee0 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20  .  int nByte,   
33ef0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61             /* Ma
33f00 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20  ximum length of 
33f10 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a  zSql in bytes. *
33f20 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  /.  sqlite3_stmt
33f30 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f   **ppStmt,  /* O
33f40 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61  UT: Statement ha
33f50 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  ndle */.  const 
33f60 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20 20  void **pzTail   
33f70 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65    /* OUT: Pointe
33f80 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74  r to unused port
33f90 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29  ion of zSql */.)
33fa0 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  ;.SQLITE_API int
33fb0 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
33fc0 31 36 5f 76 33 28 0a 20 20 73 71 6c 69 74 65 33  16_v3(.  sqlite3
33fd0 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20   *db,           
33fe0 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e   /* Database han
33ff0 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76  dle */.  const v
34000 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20  oid *zSql,      
34010 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   /* SQL statemen
34020 74 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65  t, UTF-16 encode
34030 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65  d */.  int nByte
34040 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ,              /
34050 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68  * Maximum length
34060 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65   of zSql in byte
34070 73 2e 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64  s. */.  unsigned
34080 20 69 6e 74 20 70 72 65 70 46 6c 61 67 73 2c 20   int prepFlags, 
34090 2f 2a 20 5a 65 72 6f 20 6f 72 20 6d 6f 72 65 20  /* Zero or more 
340a0 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 20  SQLITE_PREPARE_ 
340b0 66 6c 61 67 73 20 2a 2f 0a 20 20 73 71 6c 69 74  flags */.  sqlit
340c0 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74  e3_stmt **ppStmt
340d0 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65  ,  /* OUT: State
340e0 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  ment handle */. 
340f0 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a   const void **pz
34100 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a  Tail     /* OUT:
34110 20 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73   Pointer to unus
34120 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53  ed portion of zS
34130 71 6c 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  ql */.);../*.** 
34140 43 41 50 49 33 52 45 46 3a 20 52 65 74 72 69 65  CAPI3REF: Retrie
34150 76 69 6e 67 20 53 74 61 74 65 6d 65 6e 74 20 53  ving Statement S
34160 51 4c 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  QL.** METHOD: sq
34170 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a  lite3_stmt.**.**
34180 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 71   ^The sqlite3_sq
34190 6c 28 50 29 20 69 6e 74 65 72 66 61 63 65 20 72  l(P) interface r
341a0 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72  eturns a pointer
341b0 20 74 6f 20 61 20 63 6f 70 79 20 6f 66 20 74 68   to a copy of th
341c0 65 20 55 54 46 2d 38 0a 2a 2a 20 53 51 4c 20 74  e UTF-8.** SQL t
341d0 65 78 74 20 75 73 65 64 20 74 6f 20 63 72 65 61  ext used to crea
341e0 74 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  te [prepared sta
341f0 74 65 6d 65 6e 74 5d 20 50 20 69 66 20 50 20 77  tement] P if P w
34200 61 73 0a 2a 2a 20 63 72 65 61 74 65 64 20 62 79  as.** created by
34210 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
34220 65 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65  e_v2()], [sqlite
34230 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 5d 2c  3_prepare_v3()],
34240 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  .** [sqlite3_pre
34250 70 61 72 65 31 36 5f 76 32 28 29 5d 2c 20 6f 72  pare16_v2()], or
34260 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
34270 65 31 36 5f 76 33 28 29 5d 2e 0a 2a 2a 20 5e 54  e16_v3()]..** ^T
34280 68 65 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e  he sqlite3_expan
34290 64 65 64 5f 73 71 6c 28 50 29 20 69 6e 74 65 72  ded_sql(P) inter
342a0 66 61 63 65 20 72 65 74 75 72 6e 73 20 61 20 70  face returns a p
342b0 6f 69 6e 74 65 72 20 74 6f 20 61 20 55 54 46 2d  ointer to a UTF-
342c0 38 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f 6e 74  8.** string cont
342d0 61 69 6e 69 6e 67 20 74 68 65 20 53 51 4c 20 74  aining the SQL t
342e0 65 78 74 20 6f 66 20 70 72 65 70 61 72 65 64 20  ext of prepared 
342f0 73 74 61 74 65 6d 65 6e 74 20 50 20 77 69 74 68  statement P with
34300 0a 2a 2a 20 5b 62 6f 75 6e 64 20 70 61 72 61 6d  .** [bound param
34310 65 74 65 72 73 5d 20 65 78 70 61 6e 64 65 64 2e  eters] expanded.
34320 0a 2a 2a 0a 2a 2a 20 5e 28 46 6f 72 20 65 78 61  .**.** ^(For exa
34330 6d 70 6c 65 2c 20 69 66 20 61 20 70 72 65 70 61  mple, if a prepa
34340 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69 73  red statement is
34350 20 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 74   created using t
34360 68 65 20 53 51 4c 0a 2a 2a 20 74 65 78 74 20 22  he SQL.** text "
34370 53 45 4c 45 43 54 20 24 61 62 63 2c 3a 78 79 7a  SELECT $abc,:xyz
34380 22 20 61 6e 64 20 69 66 20 70 61 72 61 6d 65 74  " and if paramet
34390 65 72 20 24 61 62 63 20 69 73 20 62 6f 75 6e 64  er $abc is bound
343a0 20 74 6f 20 69 6e 74 65 67 65 72 20 32 33 34 35   to integer 2345
343b0 0a 2a 2a 20 61 6e 64 20 70 61 72 61 6d 65 74 65  .** and paramete
343c0 72 20 3a 78 79 7a 20 69 73 20 75 6e 62 6f 75 6e  r :xyz is unboun
343d0 64 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  d, then sqlite3_
343e0 73 71 6c 28 29 20 77 69 6c 6c 20 72 65 74 75 72  sql() will retur
343f0 6e 0a 2a 2a 20 74 68 65 20 6f 72 69 67 69 6e 61  n.** the origina
34400 6c 20 73 74 72 69 6e 67 2c 20 22 53 45 4c 45 43  l string, "SELEC
34410 54 20 24 61 62 63 2c 3a 78 79 7a 22 20 62 75 74  T $abc,:xyz" but
34420 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65   sqlite3_expande
34430 64 5f 73 71 6c 28 29 0a 2a 2a 20 77 69 6c 6c 20  d_sql().** will 
34440 72 65 74 75 72 6e 20 22 53 45 4c 45 43 54 20 32  return "SELECT 2
34450 33 34 35 2c 4e 55 4c 4c 22 2e 29 5e 0a 2a 2a 0a  345,NULL".)^.**.
34460 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
34470 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 29 20 69  expanded_sql() i
34480 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73  nterface returns
34490 20 4e 55 4c 4c 20 69 66 20 69 6e 73 75 66 66 69   NULL if insuffi
344a0 63 69 65 6e 74 20 6d 65 6d 6f 72 79 0a 2a 2a 20  cient memory.** 
344b0 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20  is available to 
344c0 68 6f 6c 64 20 74 68 65 20 72 65 73 75 6c 74 2c  hold the result,
344d0 20 6f 72 20 69 66 20 74 68 65 20 72 65 73 75 6c   or if the resul
344e0 74 20 77 6f 75 6c 64 20 65 78 63 65 65 64 20 74  t would exceed t
344f0 68 65 0a 2a 2a 20 74 68 65 20 6d 61 78 69 6d 75  he.** the maximu
34500 6d 20 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20  m string length 
34510 64 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68  determined by th
34520 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  e [SQLITE_LIMIT_
34530 4c 45 4e 47 54 48 5d 2e 0a 2a 2a 0a 2a 2a 20 5e  LENGTH]..**.** ^
34540 54 68 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43  The [SQLITE_TRAC
34550 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d 20 63 6f  E_SIZE_LIMIT] co
34560 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
34570 6e 20 6c 69 6d 69 74 73 20 74 68 65 20 73 69 7a  n limits the siz
34580 65 20 6f 66 0a 2a 2a 20 62 6f 75 6e 64 20 70 61  e of.** bound pa
34590 72 61 6d 65 74 65 72 20 65 78 70 61 6e 73 69 6f  rameter expansio
345a0 6e 73 2e 20 20 5e 54 68 65 20 5b 53 51 4c 49 54  ns.  ^The [SQLIT
345b0 45 5f 4f 4d 49 54 5f 54 52 41 43 45 5d 20 63 6f  E_OMIT_TRACE] co
345c0 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a 20 6f 70  mpile-time.** op
345d0 74 69 6f 6e 20 63 61 75 73 65 73 20 73 71 6c 69  tion causes sqli
345e0 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c  te3_expanded_sql
345f0 28 29 20 74 6f 20 61 6c 77 61 79 73 20 72 65 74  () to always ret
34600 75 72 6e 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20  urn NULL..**.** 
34610 5e 54 68 65 20 73 74 72 69 6e 67 20 72 65 74 75  ^The string retu
34620 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
34630 73 71 6c 28 50 29 20 69 73 20 6d 61 6e 61 67 65  sql(P) is manage
34640 64 20 62 79 20 53 51 4c 69 74 65 20 61 6e 64 20  d by SQLite and 
34650 69 73 0a 2a 2a 20 61 75 74 6f 6d 61 74 69 63 61  is.** automatica
34660 6c 6c 79 20 66 72 65 65 64 20 77 68 65 6e 20 74  lly freed when t
34670 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  he prepared stat
34680 65 6d 65 6e 74 20 69 73 20 66 69 6e 61 6c 69 7a  ement is finaliz
34690 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 73 74 72 69  ed..** ^The stri
346a0 6e 67 20 72 65 74 75 72 6e 65 64 20 62 79 20 73  ng returned by s
346b0 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f  qlite3_expanded_
346c0 73 71 6c 28 50 29 2c 20 6f 6e 20 74 68 65 20 6f  sql(P), on the o
346d0 74 68 65 72 20 68 61 6e 64 2c 0a 2a 2a 20 69 73  ther hand,.** is
346e0 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 5b   obtained from [
346f0 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
34700 5d 20 61 6e 64 20 6d 75 73 74 20 62 65 20 66 72  ] and must be fr
34710 65 65 20 62 79 20 74 68 65 20 61 70 70 6c 69 63  ee by the applic
34720 61 74 69 6f 6e 0a 2a 2a 20 62 79 20 70 61 73 73  ation.** by pass
34730 69 6e 67 20 69 74 20 74 6f 20 5b 73 71 6c 69 74  ing it to [sqlit
34740 65 33 5f 66 72 65 65 28 29 5d 2e 0a 2a 2f 0a 53  e3_free()]..*/.S
34750 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20  QLITE_API const 
34760 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 73 71  char *sqlite3_sq
34770 6c 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a  l(sqlite3_stmt *
34780 70 53 74 6d 74 29 3b 0a 53 51 4c 49 54 45 5f 41  pStmt);.SQLITE_A
34790 50 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  PI char *sqlite3
347a0 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 73 71  _expanded_sql(sq
347b0 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d  lite3_stmt *pStm
347c0 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  t);../*.** CAPI3
347d0 52 45 46 3a 20 44 65 74 65 72 6d 69 6e 65 20 49  REF: Determine I
347e0 66 20 41 6e 20 53 51 4c 20 53 74 61 74 65 6d 65  f An SQL Stateme
347f0 6e 74 20 57 72 69 74 65 73 20 54 68 65 20 44 61  nt Writes The Da
34800 74 61 62 61 73 65 0a 2a 2a 20 4d 45 54 48 4f 44  tabase.** METHOD
34810 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a  : sqlite3_stmt.*
34820 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
34830 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28  3_stmt_readonly(
34840 58 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 74  X) interface ret
34850 75 72 6e 73 20 74 72 75 65 20 28 6e 6f 6e 2d 7a  urns true (non-z
34860 65 72 6f 29 20 69 66 0a 2a 2a 20 61 6e 64 20 6f  ero) if.** and o
34870 6e 6c 79 20 69 66 20 74 68 65 20 5b 70 72 65 70  nly if the [prep
34880 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
34890 58 20 6d 61 6b 65 73 20 6e 6f 20 64 69 72 65 63  X makes no direc
348a0 74 20 63 68 61 6e 67 65 73 20 74 6f 0a 2a 2a 20  t changes to.** 
348b0 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74  the content of t
348c0 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
348d0 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68 61  ..**.** Note tha
348e0 74 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64  t [application-d
348f0 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e 63 74  efined SQL funct
34900 69 6f 6e 73 5d 20 6f 72 0a 2a 2a 20 5b 76 69 72  ions] or.** [vir
34910 74 75 61 6c 20 74 61 62 6c 65 73 5d 20 6d 69 67  tual tables] mig
34920 68 74 20 63 68 61 6e 67 65 20 74 68 65 20 64 61  ht change the da
34930 74 61 62 61 73 65 20 69 6e 64 69 72 65 63 74 6c  tabase indirectl
34940 79 20 61 73 20 61 20 73 69 64 65 20 65 66 66 65  y as a side effe
34950 63 74 2e 20 20 0a 2a 2a 20 5e 28 46 6f 72 20 65  ct.  .** ^(For e
34960 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20 61 70  xample, if an ap
34970 70 6c 69 63 61 74 69 6f 6e 20 64 65 66 69 6e 65  plication define
34980 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 22 65 76  s a function "ev
34990 61 6c 28 29 22 20 74 68 61 74 20 0a 2a 2a 20 63  al()" that .** c
349a0 61 6c 6c 73 20 5b 73 71 6c 69 74 65 33 5f 65 78  alls [sqlite3_ex
349b0 65 63 28 29 5d 2c 20 74 68 65 6e 20 74 68 65 20  ec()], then the 
349c0 66 6f 6c 6c 6f 77 69 6e 67 20 53 51 4c 20 73 74  following SQL st
349d0 61 74 65 6d 65 6e 74 20 77 6f 75 6c 64 0a 2a 2a  atement would.**
349e0 20 63 68 61 6e 67 65 20 74 68 65 20 64 61 74 61   change the data
349f0 62 61 73 65 20 66 69 6c 65 20 74 68 72 6f 75 67  base file throug
34a00 68 20 73 69 64 65 2d 65 66 66 65 63 74 73 3a 0a  h side-effects:.
34a10 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74  **.** <blockquot
34a20 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 20 20 53 45  e><pre>.**    SE
34a30 4c 45 43 54 20 65 76 61 6c 28 27 44 45 4c 45 54  LECT eval('DELET
34a40 45 20 46 52 4f 4d 20 74 31 27 29 20 46 52 4f 4d  E FROM t1') FROM
34a50 20 74 32 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f   t2;.** </pre></
34a60 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a  blockquote>.**.*
34a70 2a 20 42 75 74 20 62 65 63 61 75 73 65 20 74 68  * But because th
34a80 65 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  e [SELECT] state
34a90 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 63 68  ment does not ch
34aa0 61 6e 67 65 20 74 68 65 20 64 61 74 61 62 61 73  ange the databas
34ab0 65 20 66 69 6c 65 0a 2a 2a 20 64 69 72 65 63 74  e file.** direct
34ac0 6c 79 2c 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  ly, sqlite3_stmt
34ad0 5f 72 65 61 64 6f 6e 6c 79 28 29 20 77 6f 75 6c  _readonly() woul
34ae0 64 20 73 74 69 6c 6c 20 72 65 74 75 72 6e 20 74  d still return t
34af0 72 75 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 72  rue.)^.**.** ^Tr
34b00 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6e 74 72 6f  ansaction contro
34b10 6c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 75 63  l statements suc
34b20 68 20 61 73 20 5b 42 45 47 49 4e 5d 2c 20 5b 43  h as [BEGIN], [C
34b30 4f 4d 4d 49 54 5d 2c 20 5b 52 4f 4c 4c 42 41 43  OMMIT], [ROLLBAC
34b40 4b 5d 2c 0a 2a 2a 20 5b 53 41 56 45 50 4f 49 4e  K],.** [SAVEPOIN
34b50 54 5d 2c 20 61 6e 64 20 5b 52 45 4c 45 41 53 45  T], and [RELEASE
34b60 5d 20 63 61 75 73 65 20 73 71 6c 69 74 65 33 5f  ] cause sqlite3_
34b70 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 29 20  stmt_readonly() 
34b80 74 6f 20 72 65 74 75 72 6e 20 74 72 75 65 2c 0a  to return true,.
34b90 2a 2a 20 73 69 6e 63 65 20 74 68 65 20 73 74 61  ** since the sta
34ba0 74 65 6d 65 6e 74 73 20 74 68 65 6d 73 65 6c 76  tements themselv
34bb0 65 73 20 64 6f 20 6e 6f 74 20 61 63 74 75 61 6c  es do not actual
34bc0 6c 79 20 6d 6f 64 69 66 79 20 74 68 65 20 64 61  ly modify the da
34bd0 74 61 62 61 73 65 20 62 75 74 0a 2a 2a 20 72 61  tabase but.** ra
34be0 74 68 65 72 20 74 68 65 79 20 63 6f 6e 74 72 6f  ther they contro
34bf0 6c 20 74 68 65 20 74 69 6d 69 6e 67 20 6f 66 20  l the timing of 
34c00 77 68 65 6e 20 6f 74 68 65 72 20 73 74 61 74 65  when other state
34c10 6d 65 6e 74 73 20 6d 6f 64 69 66 79 20 74 68 65  ments modify the
34c20 20 0a 2a 2a 20 64 61 74 61 62 61 73 65 2e 20 20   .** database.  
34c30 5e 54 68 65 20 5b 41 54 54 41 43 48 5d 20 61 6e  ^The [ATTACH] an
34c40 64 20 5b 44 45 54 41 43 48 5d 20 73 74 61 74 65  d [DETACH] state
34c50 6d 65 6e 74 73 20 61 6c 73 6f 20 63 61 75 73 65  ments also cause
34c60 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  .** sqlite3_stmt
34c70 5f 72 65 61 64 6f 6e 6c 79 28 29 20 74 6f 20 72  _readonly() to r
34c80 65 74 75 72 6e 20 74 72 75 65 20 73 69 6e 63 65  eturn true since
34c90 2c 20 77 68 69 6c 65 20 74 68 6f 73 65 20 73 74  , while those st
34ca0 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 63 68 61 6e  atements.** chan
34cb0 67 65 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61  ge the configura
34cc0 74 69 6f 6e 20 6f 66 20 61 20 64 61 74 61 62 61  tion of a databa
34cd0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74  se connection, t
34ce0 68 65 79 20 64 6f 20 6e 6f 74 20 6d 61 6b 65 20  hey do not make 
34cf0 0a 2a 2a 20 63 68 61 6e 67 65 73 20 74 6f 20 74  .** changes to t
34d00 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68  he content of th
34d10 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 73  e database files
34d20 20 6f 6e 20 64 69 73 6b 2e 0a 2a 2a 20 5e 54 68   on disk..** ^Th
34d30 65 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72  e sqlite3_stmt_r
34d40 65 61 64 6f 6e 6c 79 28 29 20 69 6e 74 65 72 66  eadonly() interf
34d50 61 63 65 20 72 65 74 75 72 6e 73 20 74 72 75 65  ace returns true
34d60 20 66 6f 72 20 5b 42 45 47 49 4e 5d 20 73 69 6e   for [BEGIN] sin
34d70 63 65 0a 2a 2a 20 5b 42 45 47 49 4e 5d 20 6d 65  ce.** [BEGIN] me
34d80 72 65 6c 79 20 73 65 74 73 20 69 6e 74 65 72 6e  rely sets intern
34d90 61 6c 20 66 6c 61 67 73 2c 20 62 75 74 20 74 68  al flags, but th
34da0 65 20 5b 42 45 47 49 4e 7c 42 45 47 49 4e 20 49  e [BEGIN|BEGIN I
34db0 4d 4d 45 44 49 41 54 45 5d 20 61 6e 64 0a 2a 2a  MMEDIATE] and.**
34dc0 20 5b 42 45 47 49 4e 7c 42 45 47 49 4e 20 45 58   [BEGIN|BEGIN EX
34dd0 43 4c 55 53 49 56 45 5d 20 63 6f 6d 6d 61 6e 64  CLUSIVE] command
34de0 73 20 64 6f 20 74 6f 75 63 68 20 74 68 65 20 64  s do touch the d
34df0 61 74 61 62 61 73 65 20 61 6e 64 20 73 6f 0a 2a  atabase and so.*
34e00 2a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72  * sqlite3_stmt_r
34e10 65 61 64 6f 6e 6c 79 28 29 20 72 65 74 75 72 6e  eadonly() return
34e20 73 20 66 61 6c 73 65 20 66 6f 72 20 74 68 6f 73  s false for thos
34e30 65 20 63 6f 6d 6d 61 6e 64 73 2e 0a 2a 2f 0a 53  e commands..*/.S
34e40 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
34e50 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f  lite3_stmt_reado
34e60 6e 6c 79 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  nly(sqlite3_stmt
34e70 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a   *pStmt);../*.**
34e80 20 43 41 50 49 33 52 45 46 3a 20 44 65 74 65 72   CAPI3REF: Deter
34e90 6d 69 6e 65 20 49 66 20 41 20 50 72 65 70 61 72  mine If A Prepar
34ea0 65 64 20 53 74 61 74 65 6d 65 6e 74 20 48 61 73  ed Statement Has
34eb0 20 42 65 65 6e 20 52 65 73 65 74 0a 2a 2a 20 4d   Been Reset.** M
34ec0 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73  ETHOD: sqlite3_s
34ed0 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  tmt.**.** ^The s
34ee0 71 6c 69 74 65 33 5f 73 74 6d 74 5f 62 75 73 79  qlite3_stmt_busy
34ef0 28 53 29 20 69 6e 74 65 72 66 61 63 65 20 72 65  (S) interface re
34f00 74 75 72 6e 73 20 74 72 75 65 20 28 6e 6f 6e 2d  turns true (non-
34f10 7a 65 72 6f 29 20 69 66 20 74 68 65 0a 2a 2a 20  zero) if the.** 
34f20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
34f30 65 6e 74 5d 20 53 20 68 61 73 20 62 65 65 6e 20  ent] S has been 
34f40 73 74 65 70 70 65 64 20 61 74 20 6c 65 61 73 74  stepped at least
34f50 20 6f 6e 63 65 20 75 73 69 6e 67 20 0a 2a 2a 20   once using .** 
34f60 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 53 29  [sqlite3_step(S)
34f70 5d 20 62 75 74 20 68 61 73 20 6e 65 69 74 68 65  ] but has neithe
34f80 72 20 72 75 6e 20 74 6f 20 63 6f 6d 70 6c 65 74  r run to complet
34f90 69 6f 6e 20 28 72 65 74 75 72 6e 65 64 0a 2a 2a  ion (returned.**
34fa0 20 5b 53 51 4c 49 54 45 5f 44 4f 4e 45 5d 20 66   [SQLITE_DONE] f
34fb0 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  rom [sqlite3_ste
34fc0 70 28 53 29 5d 29 20 6e 6f 72 0a 2a 2a 20 62 65  p(S)]) nor.** be
34fd0 65 6e 20 72 65 73 65 74 20 75 73 69 6e 67 20 5b  en reset using [
34fe0 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 53 29  sqlite3_reset(S)
34ff0 5d 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65 33  ].  ^The sqlite3
35000 5f 73 74 6d 74 5f 62 75 73 79 28 53 29 0a 2a 2a  _stmt_busy(S).**
35010 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72   interface retur
35020 6e 73 20 66 61 6c 73 65 20 69 66 20 53 20 69 73  ns false if S is
35030 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e   a NULL pointer.
35040 20 20 49 66 20 53 20 69 73 20 6e 6f 74 20 61 20    If S is not a 
35050 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  .** NULL pointer
35060 20 61 6e 64 20 69 73 20 6e 6f 74 20 61 20 70 6f   and is not a po
35070 69 6e 74 65 72 20 74 6f 20 61 20 76 61 6c 69 64  inter to a valid
35080 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
35090 6d 65 6e 74 5d 0a 2a 2a 20 6f 62 6a 65 63 74 2c  ment].** object,
350a0 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69   then the behavi
350b0 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20  or is undefined 
350c0 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 75 6e 64  and probably und
350d0 65 73 69 72 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20  esirable..**.** 
350e0 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 63  This interface c
350f0 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 63 6f  an be used in co
35100 6d 62 69 6e 61 74 69 6f 6e 20 5b 73 71 6c 69 74  mbination [sqlit
35110 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 29 5d 0a  e3_next_stmt()].
35120 2a 2a 20 74 6f 20 6c 6f 63 61 74 65 20 61 6c 6c  ** to locate all
35130 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
35140 65 6e 74 73 20 61 73 73 6f 63 69 61 74 65 64 20  ents associated 
35150 77 69 74 68 20 61 20 64 61 74 61 62 61 73 65 20  with a database 
35160 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  .** connection t
35170 68 61 74 20 61 72 65 20 69 6e 20 6e 65 65 64 20  hat are in need 
35180 6f 66 20 62 65 69 6e 67 20 72 65 73 65 74 2e 20  of being reset. 
35190 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65   This can be use
351a0 64 2c 0a 2a 2a 20 66 6f 72 20 65 78 61 6d 70 6c  d,.** for exampl
351b0 65 2c 20 69 6e 20 64 69 61 67 6e 6f 73 74 69 63  e, in diagnostic
351c0 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 73 65 61   routines to sea
351d0 72 63 68 20 66 6f 72 20 70 72 65 70 61 72 65 64  rch for prepared
351e0 20 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 73 20   .** statements 
351f0 74 68 61 74 20 61 72 65 20 68 6f 6c 64 69 6e 67  that are holding
35200 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6f   a transaction o
35210 70 65 6e 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  pen..*/.SQLITE_A
35220 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73  PI int sqlite3_s
35230 74 6d 74 5f 62 75 73 79 28 73 71 6c 69 74 65 33  tmt_busy(sqlite3
35240 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  _stmt*);../*.** 
35250 43 41 50 49 33 52 45 46 3a 20 44 79 6e 61 6d 69  CAPI3REF: Dynami
35260 63 61 6c 6c 79 20 54 79 70 65 64 20 56 61 6c 75  cally Typed Valu
35270 65 20 4f 62 6a 65 63 74 0a 2a 2a 20 4b 45 59 57  e Object.** KEYW
35280 4f 52 44 53 3a 20 7b 70 72 6f 74 65 63 74 65 64  ORDS: {protected
35290 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 7d 20   sqlite3_value} 
352a0 7b 75 6e 70 72 6f 74 65 63 74 65 64 20 73 71 6c  {unprotected sql
352b0 69 74 65 33 5f 76 61 6c 75 65 7d 0a 2a 2a 0a 2a  ite3_value}.**.*
352c0 2a 20 53 51 4c 69 74 65 20 75 73 65 73 20 74 68  * SQLite uses th
352d0 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  e sqlite3_value 
352e0 6f 62 6a 65 63 74 20 74 6f 20 72 65 70 72 65 73  object to repres
352f0 65 6e 74 20 61 6c 6c 20 76 61 6c 75 65 73 0a 2a  ent all values.*
35300 2a 20 74 68 61 74 20 63 61 6e 20 62 65 20 73 74  * that can be st
35310 6f 72 65 64 20 69 6e 20 61 20 64 61 74 61 62 61  ored in a databa
35320 73 65 20 74 61 62 6c 65 2e 20 53 51 4c 69 74 65  se table. SQLite
35330 20 75 73 65 73 20 64 79 6e 61 6d 69 63 20 74 79   uses dynamic ty
35340 70 69 6e 67 0a 2a 2a 20 66 6f 72 20 74 68 65 20  ping.** for the 
35350 76 61 6c 75 65 73 20 69 74 20 73 74 6f 72 65 73  values it stores
35360 2e 20 20 5e 56 61 6c 75 65 73 20 73 74 6f 72 65  .  ^Values store
35370 64 20 69 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c  d in sqlite3_val
35380 75 65 20 6f 62 6a 65 63 74 73 0a 2a 2a 20 63 61  ue objects.** ca
35390 6e 20 62 65 20 69 6e 74 65 67 65 72 73 2c 20 66  n be integers, f
353a0 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61  loating point va
353b0 6c 75 65 73 2c 20 73 74 72 69 6e 67 73 2c 20 42  lues, strings, B
353c0 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c 2e 0a 2a  LOBs, or NULL..*
353d0 2a 0a 2a 2a 20 41 6e 20 73 71 6c 69 74 65 33 5f  *.** An sqlite3_
353e0 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 6d 61 79  value object may
353f0 20 62 65 20 65 69 74 68 65 72 20 22 70 72 6f 74   be either "prot
35400 65 63 74 65 64 22 20 6f 72 20 22 75 6e 70 72 6f  ected" or "unpro
35410 74 65 63 74 65 64 22 2e 0a 2a 2a 20 53 6f 6d 65  tected"..** Some
35420 20 69 6e 74 65 72 66 61 63 65 73 20 72 65 71 75   interfaces requ
35430 69 72 65 20 61 20 70 72 6f 74 65 63 74 65 64 20  ire a protected 
35440 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2e 20 20  sqlite3_value.  
35450 4f 74 68 65 72 20 69 6e 74 65 72 66 61 63 65 73  Other interfaces
35460 0a 2a 2a 20 77 69 6c 6c 20 61 63 63 65 70 74 20  .** will accept 
35470 65 69 74 68 65 72 20 61 20 70 72 6f 74 65 63 74  either a protect
35480 65 64 20 6f 72 20 61 6e 20 75 6e 70 72 6f 74 65  ed or an unprote
35490 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  cted sqlite3_val
354a0 75 65 2e 0a 2a 2a 20 45 76 65 72 79 20 69 6e 74  ue..** Every int
354b0 65 72 66 61 63 65 20 74 68 61 74 20 61 63 63 65  erface that acce
354c0 70 74 73 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  pts sqlite3_valu
354d0 65 20 61 72 67 75 6d 65 6e 74 73 20 73 70 65 63  e arguments spec
354e0 69 66 69 65 73 0a 2a 2a 20 77 68 65 74 68 65 72  ifies.** whether
354f0 20 6f 72 20 6e 6f 74 20 69 74 20 72 65 71 75 69   or not it requi
35500 72 65 73 20 61 20 70 72 6f 74 65 63 74 65 64 20  res a protected 
35510 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2e 20 20  sqlite3_value.  
35520 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  The.** [sqlite3_
35530 76 61 6c 75 65 5f 64 75 70 28 29 5d 20 69 6e 74  value_dup()] int
35540 65 72 66 61 63 65 20 63 61 6e 20 62 65 20 75 73  erface can be us
35550 65 64 20 74 6f 20 63 6f 6e 73 74 72 75 63 74 20  ed to construct 
35560 61 20 6e 65 77 20 0a 2a 2a 20 70 72 6f 74 65 63  a new .** protec
35570 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ted sqlite3_valu
35580 65 20 66 72 6f 6d 20 61 6e 20 75 6e 70 72 6f 74  e from an unprot
35590 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61  ected sqlite3_va
355a0 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 74  lue..**.** The t
355b0 65 72 6d 73 20 22 70 72 6f 74 65 63 74 65 64 22  erms "protected"
355c0 20 61 6e 64 20 22 75 6e 70 72 6f 74 65 63 74 65   and "unprotecte
355d0 64 22 20 72 65 66 65 72 20 74 6f 20 77 68 65 74  d" refer to whet
355e0 68 65 72 20 6f 72 20 6e 6f 74 0a 2a 2a 20 61 20  her or not.** a 
355f0 6d 75 74 65 78 20 69 73 20 68 65 6c 64 2e 20 20  mutex is held.  
35600 41 6e 20 69 6e 74 65 72 6e 61 6c 20 6d 75 74 65  An internal mute
35610 78 20 69 73 20 68 65 6c 64 20 66 6f 72 20 61 20  x is held for a 
35620 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73 71 6c  protected.** sql
35630 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63  ite3_value objec
35640 74 20 62 75 74 20 6e 6f 20 6d 75 74 65 78 20 69  t but no mutex i
35650 73 20 68 65 6c 64 20 66 6f 72 20 61 6e 20 75 6e  s held for an un
35660 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73 71 6c  protected.** sql
35670 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63  ite3_value objec
35680 74 2e 20 20 49 66 20 53 51 4c 69 74 65 20 69 73  t.  If SQLite is
35690 20 63 6f 6d 70 69 6c 65 64 20 74 6f 20 62 65 20   compiled to be 
356a0 73 69 6e 67 6c 65 2d 74 68 72 65 61 64 65 64 0a  single-threaded.
356b0 2a 2a 20 28 77 69 74 68 20 5b 53 51 4c 49 54 45  ** (with [SQLITE
356c0 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20 61  _THREADSAFE=0] a
356d0 6e 64 20 77 69 74 68 20 5b 73 71 6c 69 74 65 33  nd with [sqlite3
356e0 5f 74 68 72 65 61 64 73 61 66 65 28 29 5d 20 72  _threadsafe()] r
356f0 65 74 75 72 6e 69 6e 67 20 30 29 0a 2a 2a 20 6f  eturning 0).** o
35700 72 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 72  r if SQLite is r
35710 75 6e 20 69 6e 20 6f 6e 65 20 6f 66 20 72 65 64  un in one of red
35720 75 63 65 64 20 6d 75 74 65 78 20 6d 6f 64 65 73  uced mutex modes
35730 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   .** [SQLITE_CON
35740 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44  FIG_SINGLETHREAD
35750 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e  ] or [SQLITE_CON
35760 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d  FIG_MULTITHREAD]
35770 0a 2a 2a 20 74 68 65 6e 20 74 68 65 72 65 20 69  .** then there i
35780 73 20 6e 6f 20 64 69 73 74 69 6e 63 74 69 6f 6e  s no distinction
35790 20 62 65 74 77 65 65 6e 20 70 72 6f 74 65 63 74   between protect
357a0 65 64 20 61 6e 64 20 75 6e 70 72 6f 74 65 63 74  ed and unprotect
357b0 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61  ed.** sqlite3_va
357c0 6c 75 65 20 6f 62 6a 65 63 74 73 20 61 6e 64 20  lue objects and 
357d0 74 68 65 79 20 63 61 6e 20 62 65 20 75 73 65 64  they can be used
357e0 20 69 6e 74 65 72 63 68 61 6e 67 65 61 62 6c 79   interchangeably
357f0 2e 20 20 48 6f 77 65 76 65 72 2c 0a 2a 2a 20 66  .  However,.** f
35800 6f 72 20 6d 61 78 69 6d 75 6d 20 63 6f 64 65 20  or maximum code 
35810 70 6f 72 74 61 62 69 6c 69 74 79 20 69 74 20 69  portability it i
35820 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68  s recommended th
35830 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a  at applications.
35840 2a 2a 20 73 74 69 6c 6c 20 6d 61 6b 65 20 74 68  ** still make th
35850 65 20 64 69 73 74 69 6e 63 74 69 6f 6e 20 62 65  e distinction be
35860 74 77 65 65 6e 20 70 72 6f 74 65 63 74 65 64 20  tween protected 
35870 61 6e 64 20 75 6e 70 72 6f 74 65 63 74 65 64 0a  and unprotected.
35880 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ** sqlite3_value
35890 20 6f 62 6a 65 63 74 73 20 65 76 65 6e 20 77 68   objects even wh
358a0 65 6e 20 6e 6f 74 20 73 74 72 69 63 74 6c 79 20  en not strictly 
358b0 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a 2a 20  required..**.** 
358c0 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  ^The sqlite3_val
358d0 75 65 20 6f 62 6a 65 63 74 73 20 74 68 61 74 20  ue objects that 
358e0 61 72 65 20 70 61 73 73 65 64 20 61 73 20 70 61  are passed as pa
358f0 72 61 6d 65 74 65 72 73 20 69 6e 74 6f 20 74 68  rameters into th
35900 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74  e.** implementat
35910 69 6f 6e 20 6f 66 20 5b 61 70 70 6c 69 63 61 74  ion of [applicat
35920 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20  ion-defined SQL 
35930 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65 20 70  functions] are p
35940 72 6f 74 65 63 74 65 64 2e 0a 2a 2a 20 5e 54 68  rotected..** ^Th
35950 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  e sqlite3_value 
35960 6f 62 6a 65 63 74 20 72 65 74 75 72 6e 65 64 20  object returned 
35970 62 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63  by.** [sqlite3_c
35980 6f 6c 75 6d 6e 5f 76 61 6c 75 65 28 29 5d 20 69  olumn_value()] i
35990 73 20 75 6e 70 72 6f 74 65 63 74 65 64 2e 0a 2a  s unprotected..*
359a0 2a 20 55 6e 70 72 6f 74 65 63 74 65 64 20 73 71  * Unprotected sq
359b0 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65  lite3_value obje
359c0 63 74 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20  cts may only be 
359d0 75 73 65 64 20 61 73 20 61 72 67 75 6d 65 6e 74  used as argument
359e0 73 0a 2a 2a 20 74 6f 20 5b 73 71 6c 69 74 65 33  s.** to [sqlite3
359f0 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28 29 5d  _result_value()]
35a00 2c 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  , [sqlite3_bind_
35a10 76 61 6c 75 65 28 29 5d 2c 20 61 6e 64 0a 2a 2a  value()], and.**
35a20 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f   [sqlite3_value_
35a30 64 75 70 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 5b  dup()]..** The [
35a40 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c  sqlite3_value_bl
35a50 6f 62 20 7c 20 73 71 6c 69 74 65 33 5f 76 61 6c  ob | sqlite3_val
35a60 75 65 5f 74 79 70 65 28 29 5d 20 66 61 6d 69 6c  ue_type()] famil
35a70 79 20 6f 66 0a 2a 2a 20 69 6e 74 65 72 66 61 63  y of.** interfac
35a80 65 73 20 72 65 71 75 69 72 65 20 70 72 6f 74 65  es require prote
35a90 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  cted sqlite3_val
35aa0 75 65 20 6f 62 6a 65 63 74 73 2e 0a 2a 2f 0a 74  ue objects..*/.t
35ab0 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71  ypedef struct sq
35ac0 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 71 6c 69  lite3_value sqli
35ad0 74 65 33 5f 76 61 6c 75 65 3b 0a 0a 2f 2a 0a 2a  te3_value;../*.*
35ae0 2a 20 43 41 50 49 33 52 45 46 3a 20 53 51 4c 20  * CAPI3REF: SQL 
35af0 46 75 6e 63 74 69 6f 6e 20 43 6f 6e 74 65 78 74  Function Context
35b00 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a 20 54 68   Object.**.** Th
35b10 65 20 63 6f 6e 74 65 78 74 20 69 6e 20 77 68 69  e context in whi
35b20 63 68 20 61 6e 20 53 51 4c 20 66 75 6e 63 74 69  ch an SQL functi
35b30 6f 6e 20 65 78 65 63 75 74 65 73 20 69 73 20 73  on executes is s
35b40 74 6f 72 65 64 20 69 6e 20 61 6e 0a 2a 2a 20 73  tored in an.** s
35b50 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 6f  qlite3_context o
35b60 62 6a 65 63 74 2e 20 20 5e 41 20 70 6f 69 6e 74  bject.  ^A point
35b70 65 72 20 74 6f 20 61 6e 20 73 71 6c 69 74 65 33  er to an sqlite3
35b80 5f 63 6f 6e 74 65 78 74 20 6f 62 6a 65 63 74 0a  _context object.
35b90 2a 2a 20 69 73 20 61 6c 77 61 79 73 20 66 69 72  ** is always fir
35ba0 73 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  st parameter to 
35bb0 5b 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66  [application-def
35bc0 69 6e 65 64 20 53 51 4c 20 66 75 6e 63 74 69 6f  ined SQL functio
35bd0 6e 73 5d 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c  ns]..** The appl
35be0 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20  ication-defined 
35bf0 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70  SQL function imp
35c00 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 69 6c 6c  lementation will
35c10 20 70 61 73 73 20 74 68 69 73 0a 2a 2a 20 70 6f   pass this.** po
35c20 69 6e 74 65 72 20 74 68 72 6f 75 67 68 20 69 6e  inter through in
35c30 74 6f 20 63 61 6c 6c 73 20 74 6f 20 5b 73 71 6c  to calls to [sql
35c40 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e 74 20  ite3_result_int 
35c50 7c 20 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74  | sqlite3_result
35c60 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  ()],.** [sqlite3
35c70 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e 74 65  _aggregate_conte
35c80 78 74 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  xt()], [sqlite3_
35c90 75 73 65 72 5f 64 61 74 61 28 29 5d 2c 0a 2a 2a  user_data()],.**
35ca0 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78   [sqlite3_contex
35cb0 74 5f 64 62 5f 68 61 6e 64 6c 65 28 29 5d 2c 20  t_db_handle()], 
35cc0 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 61 75 78  [sqlite3_get_aux
35cd0 64 61 74 61 28 29 5d 2c 0a 2a 2a 20 61 6e 64 2f  data()],.** and/
35ce0 6f 72 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f  or [sqlite3_set_
35cf0 61 75 78 64 61 74 61 28 29 5d 2e 0a 2a 2f 0a 74  auxdata()]..*/.t
35d00 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71  ypedef struct sq
35d10 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20 73 71  lite3_context sq
35d20 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 3b 0a 0a  lite3_context;..
35d30 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
35d40 42 69 6e 64 69 6e 67 20 56 61 6c 75 65 73 20 54  Binding Values T
35d50 6f 20 50 72 65 70 61 72 65 64 20 53 74 61 74 65  o Prepared State
35d60 6d 65 6e 74 73 0a 2a 2a 20 4b 45 59 57 4f 52 44  ments.** KEYWORD
35d70 53 3a 20 7b 68 6f 73 74 20 70 61 72 61 6d 65 74  S: {host paramet
35d80 65 72 7d 20 7b 68 6f 73 74 20 70 61 72 61 6d 65  er} {host parame
35d90 74 65 72 73 7d 20 7b 68 6f 73 74 20 70 61 72 61  ters} {host para
35da0 6d 65 74 65 72 20 6e 61 6d 65 7d 0a 2a 2a 20 4b  meter name}.** K
35db0 45 59 57 4f 52 44 53 3a 20 7b 53 51 4c 20 70 61  EYWORDS: {SQL pa
35dc0 72 61 6d 65 74 65 72 7d 20 7b 53 51 4c 20 70 61  rameter} {SQL pa
35dd0 72 61 6d 65 74 65 72 73 7d 20 7b 70 61 72 61 6d  rameters} {param
35de0 65 74 65 72 20 62 69 6e 64 69 6e 67 7d 0a 2a 2a  eter binding}.**
35df0 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
35e00 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 28 49 6e  _stmt.**.** ^(In
35e10 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
35e20 6e 74 20 74 65 78 74 20 69 6e 70 75 74 20 74 6f  nt text input to
35e30 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
35e40 65 5f 76 32 28 29 5d 20 61 6e 64 20 69 74 73 20  e_v2()] and its 
35e50 76 61 72 69 61 6e 74 73 2c 0a 2a 2a 20 6c 69 74  variants,.** lit
35e60 65 72 61 6c 73 20 6d 61 79 20 62 65 20 72 65 70  erals may be rep
35e70 6c 61 63 65 64 20 62 79 20 61 20 5b 70 61 72 61  laced by a [para
35e80 6d 65 74 65 72 5d 20 74 68 61 74 20 6d 61 74 63  meter] that matc
35e90 68 65 73 20 6f 6e 65 20 6f 66 20 66 6f 6c 6c 6f  hes one of follo
35ea0 77 69 6e 67 0a 2a 2a 20 74 65 6d 70 6c 61 74 65  wing.** template
35eb0 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a  s:.**.** <ul>.**
35ec0 20 3c 6c 69 3e 20 20 3f 0a 2a 2a 20 3c 6c 69 3e   <li>  ?.** <li>
35ed0 20 20 3f 4e 4e 4e 0a 2a 2a 20 3c 6c 69 3e 20 20    ?NNN.** <li>  
35ee0 3a 56 56 56 0a 2a 2a 20 3c 6c 69 3e 20 20 40 56  :VVV.** <li>  @V
35ef0 56 56 0a 2a 2a 20 3c 6c 69 3e 20 20 24 56 56 56  VV.** <li>  $VVV
35f00 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20  .** </ul>.**.** 
35f10 49 6e 20 74 68 65 20 74 65 6d 70 6c 61 74 65 73  In the templates
35f20 20 61 62 6f 76 65 2c 20 4e 4e 4e 20 72 65 70 72   above, NNN repr
35f30 65 73 65 6e 74 73 20 61 6e 20 69 6e 74 65 67 65  esents an intege
35f40 72 20 6c 69 74 65 72 61 6c 2c 0a 2a 2a 20 61 6e  r literal,.** an
35f50 64 20 56 56 56 20 72 65 70 72 65 73 65 6e 74 73  d VVV represents
35f60 20 61 6e 20 61 6c 70 68 61 6e 75 6d 65 72 69 63   an alphanumeric
35f70 20 69 64 65 6e 74 69 66 69 65 72 2e 29 5e 20 20   identifier.)^  
35f80 5e 54 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74  ^The values of t
35f90 68 65 73 65 0a 2a 2a 20 70 61 72 61 6d 65 74 65  hese.** paramete
35fa0 72 73 20 28 61 6c 73 6f 20 63 61 6c 6c 65 64 20  rs (also called 
35fb0 22 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72 20  "host parameter 
35fc0 6e 61 6d 65 73 22 20 6f 72 20 22 53 51 4c 20 70  names" or "SQL p
35fd0 61 72 61 6d 65 74 65 72 73 22 29 0a 2a 2a 20 63  arameters").** c
35fe0 61 6e 20 62 65 20 73 65 74 20 75 73 69 6e 67 20  an be set using 
35ff0 74 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  the sqlite3_bind
36000 5f 2a 28 29 20 72 6f 75 74 69 6e 65 73 20 64 65  _*() routines de
36010 66 69 6e 65 64 20 68 65 72 65 2e 0a 2a 2a 0a 2a  fined here..**.*
36020 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61 72 67  * ^The first arg
36030 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 73 71 6c  ument to the sql
36040 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29 20 72 6f  ite3_bind_*() ro
36050 75 74 69 6e 65 73 20 69 73 20 61 6c 77 61 79 73  utines is always
36060 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  .** a pointer to
36070 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74   the [sqlite3_st
36080 6d 74 5d 20 6f 62 6a 65 63 74 20 72 65 74 75 72  mt] object retur
36090 6e 65 64 20 66 72 6f 6d 0a 2a 2a 20 5b 73 71 6c  ned from.** [sql
360a0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
360b0 29 5d 20 6f 72 20 69 74 73 20 76 61 72 69 61 6e  )] or its varian
360c0 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  ts..**.** ^The s
360d0 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 69  econd argument i
360e0 73 20 74 68 65 20 69 6e 64 65 78 20 6f 66 20 74  s the index of t
360f0 68 65 20 53 51 4c 20 70 61 72 61 6d 65 74 65 72  he SQL parameter
36100 20 74 6f 20 62 65 20 73 65 74 2e 0a 2a 2a 20 5e   to be set..** ^
36110 54 68 65 20 6c 65 66 74 6d 6f 73 74 20 53 51 4c  The leftmost SQL
36120 20 70 61 72 61 6d 65 74 65 72 20 68 61 73 20 61   parameter has a
36130 6e 20 69 6e 64 65 78 20 6f 66 20 31 2e 20 20 5e  n index of 1.  ^
36140 57 68 65 6e 20 74 68 65 20 73 61 6d 65 20 6e 61  When the same na
36150 6d 65 64 0a 2a 2a 20 53 51 4c 20 70 61 72 61 6d  med.** SQL param
36160 65 74 65 72 20 69 73 20 75 73 65 64 20 6d 6f 72  eter is used mor
36170 65 20 74 68 61 6e 20 6f 6e 63 65 2c 20 73 65 63  e than once, sec
36180 6f 6e 64 20 61 6e 64 20 73 75 62 73 65 71 75 65  ond and subseque
36190 6e 74 0a 2a 2a 20 6f 63 63 75 72 72 65 6e 63 65  nt.** occurrence
361a0 73 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20  s have the same 
361b0 69 6e 64 65 78 20 61 73 20 74 68 65 20 66 69 72  index as the fir
361c0 73 74 20 6f 63 63 75 72 72 65 6e 63 65 2e 0a 2a  st occurrence..*
361d0 2a 20 5e 54 68 65 20 69 6e 64 65 78 20 66 6f 72  * ^The index for
361e0 20 6e 61 6d 65 64 20 70 61 72 61 6d 65 74 65 72   named parameter
361f0 73 20 63 61 6e 20 62 65 20 6c 6f 6f 6b 65 64 20  s can be looked 
36200 75 70 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20  up using the.** 
36210 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61  [sqlite3_bind_pa
36220 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 29 5d  rameter_index()]
36230 20 41 50 49 20 69 66 20 64 65 73 69 72 65 64 2e   API if desired.
36240 20 20 5e 54 68 65 20 69 6e 64 65 78 0a 2a 2a 20    ^The index.** 
36250 66 6f 72 20 22 3f 4e 4e 4e 22 20 70 61 72 61 6d  for "?NNN" param
36260 65 74 65 72 73 20 69 73 20 74 68 65 20 76 61 6c  eters is the val
36270 75 65 20 6f 66 20 4e 4e 4e 2e 0a 2a 2a 20 5e 54  ue of NNN..** ^T
36280 68 65 20 4e 4e 4e 20 76 61 6c 75 65 20 6d 75 73  he NNN value mus
36290 74 20 62 65 20 62 65 74 77 65 65 6e 20 31 20 61  t be between 1 a
362a0 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  nd the [sqlite3_
362b0 6c 69 6d 69 74 28 29 5d 0a 2a 2a 20 70 61 72 61  limit()].** para
362c0 6d 65 74 65 72 20 5b 53 51 4c 49 54 45 5f 4c 49  meter [SQLITE_LI
362d0 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d  MIT_VARIABLE_NUM
362e0 42 45 52 5d 20 28 64 65 66 61 75 6c 74 20 76 61  BER] (default va
362f0 6c 75 65 3a 20 39 39 39 29 2e 0a 2a 2a 0a 2a 2a  lue: 999)..**.**
36300 20 5e 54 68 65 20 74 68 69 72 64 20 61 72 67 75   ^The third argu
36310 6d 65 6e 74 20 69 73 20 74 68 65 20 76 61 6c 75  ment is the valu
36320 65 20 74 6f 20 62 69 6e 64 20 74 6f 20 74 68 65  e to bind to the
36330 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e   parameter..** ^
36340 49 66 20 74 68 65 20 74 68 69 72 64 20 70 61 72  If the third par
36350 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65  ameter to sqlite
36360 33 5f 62 69 6e 64 5f 74 65 78 74 28 29 20 6f 72  3_bind_text() or
36370 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
36380 78 74 31 36 28 29 0a 2a 2a 20 6f 72 20 73 71 6c  xt16().** or sql
36390 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29  ite3_bind_blob()
363a0 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   is a NULL point
363b0 65 72 20 74 68 65 6e 20 74 68 65 20 66 6f 75 72  er then the four
363c0 74 68 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20  th parameter.** 
363d0 69 73 20 69 67 6e 6f 72 65 64 20 61 6e 64 20 74  is ignored and t
363e0 68 65 20 65 6e 64 20 72 65 73 75 6c 74 20 69 73  he end result is
363f0 20 74 68 65 20 73 61 6d 65 20 61 73 20 73 71 6c   the same as sql
36400 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 29  ite3_bind_null()
36410 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49 6e 20 74 68 6f  ..**.** ^(In tho
36420 73 65 20 72 6f 75 74 69 6e 65 73 20 74 68 61 74  se routines that
36430 20 68 61 76 65 20 61 20 66 6f 75 72 74 68 20 61   have a fourth a
36440 72 67 75 6d 65 6e 74 2c 20 69 74 73 20 76 61 6c  rgument, its val
36450 75 65 20 69 73 20 74 68 65 0a 2a 2a 20 6e 75 6d  ue is the.** num
36460 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20  ber of bytes in 
36470 74 68 65 20 70 61 72 61 6d 65 74 65 72 2e 20 20  the parameter.  
36480 54 6f 20 62 65 20 63 6c 65 61 72 3a 20 74 68 65  To be clear: the
36490 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a 2a 2a   value is the.**
364a0 20 6e 75 6d 62 65 72 20 6f 66 20 3c 75 3e 62 79   number of <u>by
364b0 74 65 73 3c 2f 75 3e 20 69 6e 20 74 68 65 20 76  tes</u> in the v
364c0 61 6c 75 65 2c 20 6e 6f 74 20 74 68 65 20 6e 75  alue, not the nu
364d0 6d 62 65 72 20 6f 66 20 63 68 61 72 61 63 74 65  mber of characte
364e0 72 73 2e 29 5e 0a 2a 2a 20 5e 49 66 20 74 68 65  rs.)^.** ^If the
364f0 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
36500 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e  r to sqlite3_bin
36510 64 5f 74 65 78 74 28 29 20 6f 72 20 73 71 6c 69  d_text() or sqli
36520 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28  te3_bind_text16(
36530 29 0a 2a 2a 20 69 73 20 6e 65 67 61 74 69 76 65  ).** is negative
36540 2c 20 74 68 65 6e 20 74 68 65 20 6c 65 6e 67 74  , then the lengt
36550 68 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 20  h of the string 
36560 69 73 0a 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72  is.** the number
36570 20 6f 66 20 62 79 74 65 73 20 75 70 20 74 6f 20   of bytes up to 
36580 74 68 65 20 66 69 72 73 74 20 7a 65 72 6f 20 74  the first zero t
36590 65 72 6d 69 6e 61 74 6f 72 2e 0a 2a 2a 20 49 66  erminator..** If
365a0 20 74 68 65 20 66 6f 75 72 74 68 20 70 61 72 61   the fourth para
365b0 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33  meter to sqlite3
365c0 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 69 73 20  _bind_blob() is 
365d0 6e 65 67 61 74 69 76 65 2c 20 74 68 65 6e 0a 2a  negative, then.*
365e0 2a 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 69  * the behavior i
365f0 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 20  s undefined..** 
36600 49 66 20 61 20 6e 6f 6e 2d 6e 65 67 61 74 69 76  If a non-negativ
36610 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
36620 65 72 20 69 73 20 70 72 6f 76 69 64 65 64 20 74  er is provided t
36630 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  o sqlite3_bind_t
36640 65 78 74 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69  ext().** or sqli
36650 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28  te3_bind_text16(
36660 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 62 69 6e  ) or sqlite3_bin
36670 64 5f 74 65 78 74 36 34 28 29 20 74 68 65 6e 0a  d_text64() then.
36680 2a 2a 20 74 68 61 74 20 70 61 72 61 6d 65 74 65  ** that paramete
36690 72 20 6d 75 73 74 20 62 65 20 74 68 65 20 62 79  r must be the by
366a0 74 65 20 6f 66 66 73 65 74 0a 2a 2a 20 77 68 65  te offset.** whe
366b0 72 65 20 74 68 65 20 4e 55 4c 20 74 65 72 6d 69  re the NUL termi
366c0 6e 61 74 6f 72 20 77 6f 75 6c 64 20 6f 63 63 75  nator would occu
366d0 72 20 61 73 73 75 6d 69 6e 67 20 74 68 65 20 73  r assuming the s
366e0 74 72 69 6e 67 20 77 65 72 65 20 4e 55 4c 0a 2a  tring were NUL.*
366f0 2a 20 74 65 72 6d 69 6e 61 74 65 64 2e 20 20 49  * terminated.  I
36700 66 20 61 6e 79 20 4e 55 4c 20 63 68 61 72 61 63  f any NUL charac
36710 74 65 72 73 20 6f 63 63 75 72 20 61 74 20 62 79  ters occur at by
36720 74 65 20 6f 66 66 73 65 74 73 20 6c 65 73 73 20  te offsets less 
36730 74 68 61 6e 20 0a 2a 2a 20 74 68 65 20 76 61 6c  than .** the val
36740 75 65 20 6f 66 20 74 68 65 20 66 6f 75 72 74 68  ue of the fourth
36750 20 70 61 72 61 6d 65 74 65 72 20 74 68 65 6e 20   parameter then 
36760 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74  the resulting st
36770 72 69 6e 67 20 76 61 6c 75 65 20 77 69 6c 6c 0a  ring value will.
36780 2a 2a 20 63 6f 6e 74 61 69 6e 20 65 6d 62 65 64  ** contain embed
36790 64 65 64 20 4e 55 4c 73 2e 20 20 54 68 65 20 72  ded NULs.  The r
367a0 65 73 75 6c 74 20 6f 66 20 65 78 70 72 65 73 73  esult of express
367b0 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e 67 20 73  ions involving s
367c0 74 72 69 6e 67 73 0a 2a 2a 20 77 69 74 68 20 65  trings.** with e
367d0 6d 62 65 64 64 65 64 20 4e 55 4c 73 20 69 73 20  mbedded NULs is 
367e0 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a  undefined..**.**
367f0 20 5e 54 68 65 20 66 69 66 74 68 20 61 72 67 75   ^The fifth argu
36800 6d 65 6e 74 20 74 6f 20 74 68 65 20 42 4c 4f 42  ment to the BLOB
36810 20 61 6e 64 20 73 74 72 69 6e 67 20 62 69 6e 64   and string bind
36820 69 6e 67 20 69 6e 74 65 72 66 61 63 65 73 0a 2a  ing interfaces.*
36830 2a 20 69 73 20 61 20 64 65 73 74 72 75 63 74 6f  * is a destructo
36840 72 20 75 73 65 64 20 74 6f 20 64 69 73 70 6f 73  r used to dispos
36850 65 20 6f 66 20 74 68 65 20 42 4c 4f 42 20 6f 72  e of the BLOB or
36860 0a 2a 2a 20 73 74 72 69 6e 67 20 61 66 74 65 72  .** string after
36870 20 53 51 4c 69 74 65 20 68 61 73 20 66 69 6e 69   SQLite has fini
36880 73 68 65 64 20 77 69 74 68 20 69 74 2e 20 20 5e  shed with it.  ^
36890 54 68 65 20 64 65 73 74 72 75 63 74 6f 72 20 69  The destructor i
368a0 73 20 63 61 6c 6c 65 64 0a 2a 2a 20 74 6f 20 64  s called.** to d
368b0 69 73 70 6f 73 65 20 6f 66 20 74 68 65 20 42 4c  ispose of the BL
368c0 4f 42 20 6f 72 20 73 74 72 69 6e 67 20 65 76 65  OB or string eve
368d0 6e 20 69 66 20 74 68 65 20 63 61 6c 6c 20 74 6f  n if the call to
368e0 20 62 69 6e 64 20 41 50 49 20 66 61 69 6c 73 2e   bind API fails.
368f0 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 69 66 74  .** ^If the fift
36900 68 20 61 72 67 75 6d 65 6e 74 20 69 73 0a 2a 2a  h argument is.**
36910 20 74 68 65 20 73 70 65 63 69 61 6c 20 76 61 6c   the special val
36920 75 65 20 5b 53 51 4c 49 54 45 5f 53 54 41 54 49  ue [SQLITE_STATI
36930 43 5d 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20  C], then SQLite 
36940 61 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65  assumes that the
36950 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  .** information 
36960 69 73 20 69 6e 20 73 74 61 74 69 63 2c 20 75 6e  is in static, un
36970 6d 61 6e 61 67 65 64 20 73 70 61 63 65 20 61 6e  managed space an
36980 64 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20  d does not need 
36990 74 6f 20 62 65 20 66 72 65 65 64 2e 0a 2a 2a 20  to be freed..** 
369a0 5e 49 66 20 74 68 65 20 66 69 66 74 68 20 61 72  ^If the fifth ar
369b0 67 75 6d 65 6e 74 20 68 61 73 20 74 68 65 20 76  gument has the v
369c0 61 6c 75 65 20 5b 53 51 4c 49 54 45 5f 54 52 41  alue [SQLITE_TRA
369d0 4e 53 49 45 4e 54 5d 2c 20 74 68 65 6e 0a 2a 2a  NSIENT], then.**
369e0 20 53 51 4c 69 74 65 20 6d 61 6b 65 73 20 69 74   SQLite makes it
369f0 73 20 6f 77 6e 20 70 72 69 76 61 74 65 20 63 6f  s own private co
36a00 70 79 20 6f 66 20 74 68 65 20 64 61 74 61 20 69  py of the data i
36a10 6d 6d 65 64 69 61 74 65 6c 79 2c 20 62 65 66 6f  mmediately, befo
36a20 72 65 0a 2a 2a 20 74 68 65 20 73 71 6c 69 74 65  re.** the sqlite
36a30 33 5f 62 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69  3_bind_*() routi
36a40 6e 65 20 72 65 74 75 72 6e 73 2e 0a 2a 2a 0a 2a  ne returns..**.*
36a50 2a 20 5e 54 68 65 20 73 69 78 74 68 20 61 72 67  * ^The sixth arg
36a60 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33  ument to sqlite3
36a70 5f 62 69 6e 64 5f 74 65 78 74 36 34 28 29 20 6d  _bind_text64() m
36a80 75 73 74 20 62 65 20 6f 6e 65 20 6f 66 0a 2a 2a  ust be one of.**
36a90 20 5b 53 51 4c 49 54 45 5f 55 54 46 38 5d 2c 20   [SQLITE_UTF8], 
36aa0 5b 53 51 4c 49 54 45 5f 55 54 46 31 36 5d 2c 20  [SQLITE_UTF16], 
36ab0 5b 53 51 4c 49 54 45 5f 55 54 46 31 36 42 45 5d  [SQLITE_UTF16BE]
36ac0 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 55 54 46  , or [SQLITE_UTF
36ad0 31 36 4c 45 5d 0a 2a 2a 20 74 6f 20 73 70 65 63  16LE].** to spec
36ae0 69 66 79 20 74 68 65 20 65 6e 63 6f 64 69 6e 67  ify the encoding
36af0 20 6f 66 20 74 68 65 20 74 65 78 74 20 69 6e 20   of the text in 
36b00 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  the third parame
36b10 74 65 72 2e 20 20 49 66 0a 2a 2a 20 74 68 65 20  ter.  If.** the 
36b20 73 69 78 74 68 20 61 72 67 75 6d 65 6e 74 20 74  sixth argument t
36b30 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  o sqlite3_bind_t
36b40 65 78 74 36 34 28 29 20 69 73 20 6e 6f 74 20 6f  ext64() is not o
36b50 6e 65 20 6f 66 20 74 68 65 0a 2a 2a 20 61 6c 6c  ne of the.** all
36b60 6f 77 65 64 20 76 61 6c 75 65 73 20 73 68 6f 77  owed values show
36b70 6e 20 61 62 6f 76 65 2c 20 6f 72 20 69 66 20 74  n above, or if t
36b80 68 65 20 74 65 78 74 20 65 6e 63 6f 64 69 6e 67  he text encoding
36b90 20 69 73 20 64 69 66 66 65 72 65 6e 74 0a 2a 2a   is different.**
36ba0 20 66 72 6f 6d 20 74 68 65 20 65 6e 63 6f 64 69   from the encodi
36bb0 6e 67 20 73 70 65 63 69 66 69 65 64 20 62 79 20  ng specified by 
36bc0 74 68 65 20 73 69 78 74 68 20 70 61 72 61 6d 65  the sixth parame
36bd0 74 65 72 2c 20 74 68 65 6e 20 74 68 65 20 62 65  ter, then the be
36be0 68 61 76 69 6f 72 0a 2a 2a 20 69 73 20 75 6e 64  havior.** is und
36bf0 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54  efined..**.** ^T
36c00 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  he sqlite3_bind_
36c10 7a 65 72 6f 62 6c 6f 62 28 29 20 72 6f 75 74 69  zeroblob() routi
36c20 6e 65 20 62 69 6e 64 73 20 61 20 42 4c 4f 42 20  ne binds a BLOB 
36c30 6f 66 20 6c 65 6e 67 74 68 20 4e 20 74 68 61 74  of length N that
36c40 0a 2a 2a 20 69 73 20 66 69 6c 6c 65 64 20 77 69  .** is filled wi
36c50 74 68 20 7a 65 72 6f 65 73 2e 20 20 5e 41 20 7a  th zeroes.  ^A z
36c60 65 72 6f 62 6c 6f 62 20 75 73 65 73 20 61 20 66  eroblob uses a f
36c70 69 78 65 64 20 61 6d 6f 75 6e 74 20 6f 66 20 6d  ixed amount of m
36c80 65 6d 6f 72 79 0a 2a 2a 20 28 6a 75 73 74 20 61  emory.** (just a
36c90 6e 20 69 6e 74 65 67 65 72 20 74 6f 20 68 6f 6c  n integer to hol
36ca0 64 20 69 74 73 20 73 69 7a 65 29 20 77 68 69 6c  d its size) whil
36cb0 65 20 69 74 20 69 73 20 62 65 69 6e 67 20 70 72  e it is being pr
36cc0 6f 63 65 73 73 65 64 2e 0a 2a 2a 20 5a 65 72 6f  ocessed..** Zero
36cd0 62 6c 6f 62 73 20 61 72 65 20 69 6e 74 65 6e 64  blobs are intend
36ce0 65 64 20 74 6f 20 73 65 72 76 65 20 61 73 20 70  ed to serve as p
36cf0 6c 61 63 65 68 6f 6c 64 65 72 73 20 66 6f 72 20  laceholders for 
36d00 42 4c 4f 42 73 20 77 68 6f 73 65 0a 2a 2a 20 63  BLOBs whose.** c
36d10 6f 6e 74 65 6e 74 20 69 73 20 6c 61 74 65 72 20  ontent is later 
36d20 77 72 69 74 74 65 6e 20 75 73 69 6e 67 0a 2a 2a  written using.**
36d30 20 5b 73 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f   [sqlite3_blob_o
36d40 70 65 6e 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61  pen | incrementa
36d50 6c 20 42 4c 4f 42 20 49 2f 4f 5d 20 72 6f 75 74  l BLOB I/O] rout
36d60 69 6e 65 73 2e 0a 2a 2a 20 5e 41 20 6e 65 67 61  ines..** ^A nega
36d70 74 69 76 65 20 76 61 6c 75 65 20 66 6f 72 20 74  tive value for t
36d80 68 65 20 7a 65 72 6f 62 6c 6f 62 20 72 65 73 75  he zeroblob resu
36d90 6c 74 73 20 69 6e 20 61 20 7a 65 72 6f 2d 6c 65  lts in a zero-le
36da0 6e 67 74 68 20 42 4c 4f 42 2e 0a 2a 2a 0a 2a 2a  ngth BLOB..**.**
36db0 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 62 69   ^The sqlite3_bi
36dc0 6e 64 5f 70 6f 69 6e 74 65 72 28 53 2c 49 2c 50  nd_pointer(S,I,P
36dd0 2c 54 2c 44 29 20 72 6f 75 74 69 6e 65 20 63 61  ,T,D) routine ca
36de0 75 73 65 73 20 74 68 65 20 49 2d 74 68 20 70 61  uses the I-th pa
36df0 72 61 6d 65 74 65 72 20 69 6e 0a 2a 2a 20 5b 70  rameter in.** [p
36e00 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
36e10 74 5d 20 53 20 74 6f 20 68 61 76 65 20 61 6e 20  t] S to have an 
36e20 53 51 4c 20 76 61 6c 75 65 20 6f 66 20 4e 55 4c  SQL value of NUL
36e30 4c 2c 20 62 75 74 20 74 6f 20 61 6c 73 6f 20 62  L, but to also b
36e40 65 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 64 20  e.** associated 
36e50 77 69 74 68 20 74 68 65 20 70 6f 69 6e 74 65 72  with the pointer
36e60 20 50 20 6f 66 20 74 79 70 65 20 54 2e 20 20 5e   P of type T.  ^
36e70 44 20 69 73 20 65 69 74 68 65 72 20 61 20 4e 55  D is either a NU
36e80 4c 4c 20 70 6f 69 6e 74 65 72 20 6f 72 0a 2a 2a  LL pointer or.**
36e90 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
36ea0 64 65 73 74 72 75 63 74 6f 72 20 66 75 6e 63 74  destructor funct
36eb0 69 6f 6e 20 66 6f 72 20 50 2e 20 5e 53 51 4c 69  ion for P. ^SQLi
36ec0 74 65 20 77 69 6c 6c 20 69 6e 76 6f 6b 65 20 74  te will invoke t
36ed0 68 65 0a 2a 2a 20 64 65 73 74 72 75 63 74 6f 72  he.** destructor
36ee0 20 44 20 77 69 74 68 20 61 20 73 69 6e 67 6c 65   D with a single
36ef0 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 50 20 77   argument of P w
36f00 68 65 6e 20 69 74 20 69 73 20 66 69 6e 69 73 68  hen it is finish
36f10 65 64 20 75 73 69 6e 67 0a 2a 2a 20 50 2e 20 20  ed using.** P.  
36f20 54 68 65 20 54 20 70 61 72 61 6d 65 74 65 72 20  The T parameter 
36f30 73 68 6f 75 6c 64 20 62 65 20 61 20 73 74 61 74  should be a stat
36f40 69 63 20 73 74 72 69 6e 67 2c 20 70 72 65 66 65  ic string, prefe
36f50 72 61 62 6c 79 20 61 20 73 74 72 69 6e 67 0a 2a  rably a string.*
36f60 2a 20 6c 69 74 65 72 61 6c 2e 20 54 68 65 20 73  * literal. The s
36f70 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 6f 69 6e  qlite3_bind_poin
36f80 74 65 72 28 29 20 72 6f 75 74 69 6e 65 20 69 73  ter() routine is
36f90 20 70 61 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20   part of the.** 
36fa0 5b 70 6f 69 6e 74 65 72 20 70 61 73 73 69 6e 67  [pointer passing
36fb0 20 69 6e 74 65 72 66 61 63 65 5d 20 61 64 64 65   interface] adde
36fc0 64 20 66 6f 72 20 53 51 4c 69 74 65 20 33 2e 32  d for SQLite 3.2
36fd0 30 2e 30 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61  0.0..**.** ^If a
36fe0 6e 79 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65  ny of the sqlite
36ff0 33 5f 62 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69  3_bind_*() routi
37000 6e 65 73 20 61 72 65 20 63 61 6c 6c 65 64 20 77  nes are called w
37010 69 74 68 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74  ith a NULL point
37020 65 72 0a 2a 2a 20 66 6f 72 20 74 68 65 20 5b 70  er.** for the [p
37030 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
37040 74 5d 20 6f 72 20 77 69 74 68 20 61 20 70 72 65  t] or with a pre
37050 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20  pared statement 
37060 66 6f 72 20 77 68 69 63 68 0a 2a 2a 20 5b 73 71  for which.** [sq
37070 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 68 61  lite3_step()] ha
37080 73 20 62 65 65 6e 20 63 61 6c 6c 65 64 20 6d 6f  s been called mo
37090 72 65 20 72 65 63 65 6e 74 6c 79 20 74 68 61 6e  re recently than
370a0 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
370b0 29 5d 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20  )],.** then the 
370c0 63 61 6c 6c 20 77 69 6c 6c 20 72 65 74 75 72 6e  call will return
370d0 20 5b 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d   [SQLITE_MISUSE]
370e0 2e 20 20 49 66 20 61 6e 79 20 73 71 6c 69 74 65  .  If any sqlite
370f0 33 5f 62 69 6e 64 5f 28 29 0a 2a 2a 20 72 6f 75  3_bind_().** rou
37100 74 69 6e 65 20 69 73 20 70 61 73 73 65 64 20 61  tine is passed a
37110 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
37120 6d 65 6e 74 5d 20 74 68 61 74 20 68 61 73 20 62  ment] that has b
37130 65 65 6e 20 66 69 6e 61 6c 69 7a 65 64 2c 20 74  een finalized, t
37140 68 65 0a 2a 2a 20 72 65 73 75 6c 74 20 69 73 20  he.** result is 
37150 75 6e 64 65 66 69 6e 65 64 20 61 6e 64 20 70 72  undefined and pr
37160 6f 62 61 62 6c 79 20 68 61 72 6d 66 75 6c 2e 0a  obably harmful..
37170 2a 2a 0a 2a 2a 20 5e 42 69 6e 64 69 6e 67 73 20  **.** ^Bindings 
37180 61 72 65 20 6e 6f 74 20 63 6c 65 61 72 65 64 20  are not cleared 
37190 62 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  by the [sqlite3_
371a0 72 65 73 65 74 28 29 5d 20 72 6f 75 74 69 6e 65  reset()] routine
371b0 2e 0a 2a 2a 20 5e 55 6e 62 6f 75 6e 64 20 70 61  ..** ^Unbound pa
371c0 72 61 6d 65 74 65 72 73 20 61 72 65 20 69 6e 74  rameters are int
371d0 65 72 70 72 65 74 65 64 20 61 73 20 4e 55 4c 4c  erpreted as NULL
371e0 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ..**.** ^The sql
371f0 69 74 65 33 5f 62 69 6e 64 5f 2a 20 72 6f 75 74  ite3_bind_* rout
37200 69 6e 65 73 20 72 65 74 75 72 6e 20 5b 53 51 4c  ines return [SQL
37210 49 54 45 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63 65  ITE_OK] on succe
37220 73 73 20 6f 72 20 61 6e 0a 2a 2a 20 5b 65 72 72  ss or an.** [err
37230 6f 72 20 63 6f 64 65 5d 20 69 66 20 61 6e 79 74  or code] if anyt
37240 68 69 6e 67 20 67 6f 65 73 20 77 72 6f 6e 67 2e  hing goes wrong.
37250 0a 2a 2a 20 5e 5b 53 51 4c 49 54 45 5f 54 4f 4f  .** ^[SQLITE_TOO
37260 42 49 47 5d 20 6d 69 67 68 74 20 62 65 20 72 65  BIG] might be re
37270 74 75 72 6e 65 64 20 69 66 20 74 68 65 20 73 69  turned if the si
37280 7a 65 20 6f 66 20 61 20 73 74 72 69 6e 67 20 6f  ze of a string o
37290 72 20 42 4c 4f 42 0a 2a 2a 20 65 78 63 65 65 64  r BLOB.** exceed
372a0 73 20 6c 69 6d 69 74 73 20 69 6d 70 6f 73 65 64  s limits imposed
372b0 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d   by [sqlite3_lim
372c0 69 74 5d 28 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  it]([SQLITE_LIMI
372d0 54 5f 4c 45 4e 47 54 48 5d 29 20 6f 72 0a 2a 2a  T_LENGTH]) or.**
372e0 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e   [SQLITE_MAX_LEN
372f0 47 54 48 5d 2e 0a 2a 2a 20 5e 5b 53 51 4c 49 54  GTH]..** ^[SQLIT
37300 45 5f 52 41 4e 47 45 5d 20 69 73 20 72 65 74 75  E_RANGE] is retu
37310 72 6e 65 64 20 69 66 20 74 68 65 20 70 61 72 61  rned if the para
37320 6d 65 74 65 72 0a 2a 2a 20 69 6e 64 65 78 20 69  meter.** index i
37330 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 2e 20  s out of range. 
37340 20 5e 5b 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d   ^[SQLITE_NOMEM]
37350 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20   is returned if 
37360 6d 61 6c 6c 6f 63 28 29 20 66 61 69 6c 73 2e 0a  malloc() fails..
37370 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
37380 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61  [sqlite3_bind_pa
37390 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 29 5d  rameter_count()]
373a0 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69  ,.** [sqlite3_bi
373b0 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
373c0 65 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74  e()], and [sqlit
373d0 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
373e0 72 5f 69 6e 64 65 78 28 29 5d 2e 0a 2a 2f 0a 53  r_index()]..*/.S
373f0 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
37400 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28  lite3_bind_blob(
37410 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
37420 6e 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c  nt, const void*,
37430 20 69 6e 74 20 6e 2c 20 76 6f 69 64 28 2a 29 28   int n, void(*)(
37440 76 6f 69 64 2a 29 29 3b 0a 53 51 4c 49 54 45 5f  void*));.SQLITE_
37450 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
37460 62 69 6e 64 5f 62 6c 6f 62 36 34 28 73 71 6c 69  bind_blob64(sqli
37470 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20  te3_stmt*, int, 
37480 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 73 71 6c  const void*, sql
37490 69 74 65 33 5f 75 69 6e 74 36 34 2c 0a 20 20 20  ite3_uint64,.   
374a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
374b0 20 20 20 20 20 76 6f 69 64 28 2a 29 28 76 6f 69       void(*)(voi
374c0 64 2a 29 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  d*));.SQLITE_API
374d0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
374e0 64 5f 64 6f 75 62 6c 65 28 73 71 6c 69 74 65 33  d_double(sqlite3
374f0 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 64 6f 75  _stmt*, int, dou
37500 62 6c 65 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  ble);.SQLITE_API
37510 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
37520 64 5f 69 6e 74 28 73 71 6c 69 74 65 33 5f 73 74  d_int(sqlite3_st
37530 6d 74 2a 2c 20 69 6e 74 2c 20 69 6e 74 29 3b 0a  mt*, int, int);.
37540 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
37550 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36  qlite3_bind_int6
37560 34 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  4(sqlite3_stmt*,
37570 20 69 6e 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e   int, sqlite3_in
37580 74 36 34 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  t64);.SQLITE_API
37590 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
375a0 64 5f 6e 75 6c 6c 28 73 71 6c 69 74 65 33 5f 73  d_null(sqlite3_s
375b0 74 6d 74 2a 2c 20 69 6e 74 29 3b 0a 53 51 4c 49  tmt*, int);.SQLI
375c0 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
375d0 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 73 71 6c  e3_bind_text(sql
375e0 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e 74 2c 63  ite3_stmt*,int,c
375f0 6f 6e 73 74 20 63 68 61 72 2a 2c 69 6e 74 2c 76  onst char*,int,v
37600 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a  oid(*)(void*));.
37610 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
37620 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
37630 31 36 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  16(sqlite3_stmt*
37640 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20 76 6f 69  , int, const voi
37650 64 2a 2c 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29  d*, int, void(*)
37660 28 76 6f 69 64 2a 29 29 3b 0a 53 51 4c 49 54 45  (void*));.SQLITE
37670 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
37680 5f 62 69 6e 64 5f 74 65 78 74 36 34 28 73 71 6c  _bind_text64(sql
37690 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c  ite3_stmt*, int,
376a0 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 73 71   const char*, sq
376b0 6c 69 74 65 33 5f 75 69 6e 74 36 34 2c 0a 20 20  lite3_uint64,.  
376c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
376d0 20 20 20 20 20 20 20 76 6f 69 64 28 2a 29 28 76         void(*)(v
376e0 6f 69 64 2a 29 2c 20 75 6e 73 69 67 6e 65 64 20  oid*), unsigned 
376f0 63 68 61 72 20 65 6e 63 6f 64 69 6e 67 29 3b 0a  char encoding);.
37700 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
37710 71 6c 69 74 65 33 5f 62 69 6e 64 5f 76 61 6c 75  qlite3_bind_valu
37720 65 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  e(sqlite3_stmt*,
37730 20 69 6e 74 2c 20 63 6f 6e 73 74 20 73 71 6c 69   int, const sqli
37740 74 65 33 5f 76 61 6c 75 65 2a 29 3b 0a 53 51 4c  te3_value*);.SQL
37750 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
37760 74 65 33 5f 62 69 6e 64 5f 70 6f 69 6e 74 65 72  te3_bind_pointer
37770 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
37780 69 6e 74 2c 20 76 6f 69 64 2a 2c 20 63 6f 6e 73  int, void*, cons
37790 74 20 63 68 61 72 2a 2c 76 6f 69 64 28 2a 29 28  t char*,void(*)(
377a0 76 6f 69 64 2a 29 29 3b 0a 53 51 4c 49 54 45 5f  void*));.SQLITE_
377b0 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
377c0 62 69 6e 64 5f 7a 65 72 6f 62 6c 6f 62 28 73 71  bind_zeroblob(sq
377d0 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
377e0 2c 20 69 6e 74 20 6e 29 3b 0a 53 51 4c 49 54 45  , int n);.SQLITE
377f0 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
37800 5f 62 69 6e 64 5f 7a 65 72 6f 62 6c 6f 62 36 34  _bind_zeroblob64
37810 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20  (sqlite3_stmt*, 
37820 69 6e 74 2c 20 73 71 6c 69 74 65 33 5f 75 69 6e  int, sqlite3_uin
37830 74 36 34 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  t64);../*.** CAP
37840 49 33 52 45 46 3a 20 4e 75 6d 62 65 72 20 4f 66  I3REF: Number Of
37850 20 53 51 4c 20 50 61 72 61 6d 65 74 65 72 73 0a   SQL Parameters.
37860 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
37870 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54  e3_stmt.**.** ^T
37880 68 69 73 20 72 6f 75 74 69 6e 65 20 63 61 6e 20  his routine can 
37890 62 65 20 75 73 65 64 20 74 6f 20 66 69 6e 64 20  be used to find 
378a0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 5b 53  the number of [S
378b0 51 4c 20 70 61 72 61 6d 65 74 65 72 73 5d 0a 2a  QL parameters].*
378c0 2a 20 69 6e 20 61 20 5b 70 72 65 70 61 72 65 64  * in a [prepared
378d0 20 73 74 61 74 65 6d 65 6e 74 5d 2e 20 20 53 51   statement].  SQ
378e0 4c 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65  L parameters are
378f0 20 74 6f 6b 65 6e 73 20 6f 66 20 74 68 65 0a 2a   tokens of the.*
37900 2a 20 66 6f 72 6d 20 22 3f 22 2c 20 22 3f 4e 4e  * form "?", "?NN
37910 4e 22 2c 20 22 3a 41 41 41 22 2c 20 22 24 41 41  N", ":AAA", "$AA
37920 41 22 2c 20 6f 72 20 22 40 41 41 41 22 20 74 68  A", or "@AAA" th
37930 61 74 20 73 65 72 76 65 20 61 73 0a 2a 2a 20 70  at serve as.** p
37940 6c 61 63 65 68 6f 6c 64 65 72 73 20 66 6f 72 20  laceholders for 
37950 76 61 6c 75 65 73 20 74 68 61 74 20 61 72 65 20  values that are 
37960 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c  [sqlite3_bind_bl
37970 6f 62 20 7c 20 62 6f 75 6e 64 5d 0a 2a 2a 20 74  ob | bound].** t
37980 6f 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73  o the parameters
37990 20 61 74 20 61 20 6c 61 74 65 72 20 74 69 6d 65   at a later time
379a0 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 69 73 20 72  ..**.** ^(This r
379b0 6f 75 74 69 6e 65 20 61 63 74 75 61 6c 6c 79 20  outine actually 
379c0 72 65 74 75 72 6e 73 20 74 68 65 20 69 6e 64 65  returns the inde
379d0 78 20 6f 66 20 74 68 65 20 6c 61 72 67 65 73 74  x of the largest
379e0 20 28 72 69 67 68 74 6d 6f 73 74 29 0a 2a 2a 20   (rightmost).** 
379f0 70 61 72 61 6d 65 74 65 72 2e 20 46 6f 72 20 61  parameter. For a
37a00 6c 6c 20 66 6f 72 6d 73 20 65 78 63 65 70 74 20  ll forms except 
37a10 3f 4e 4e 4e 2c 20 74 68 69 73 20 77 69 6c 6c 20  ?NNN, this will 
37a20 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f 20 74 68  correspond to th
37a30 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20 75  e.** number of u
37a40 6e 69 71 75 65 20 70 61 72 61 6d 65 74 65 72 73  nique parameters
37a50 2e 20 20 49 66 20 70 61 72 61 6d 65 74 65 72 73  .  If parameters
37a60 20 6f 66 20 74 68 65 20 3f 4e 4e 4e 20 66 6f 72   of the ?NNN for
37a70 6d 20 61 72 65 20 75 73 65 64 2c 0a 2a 2a 20 74  m are used,.** t
37a80 68 65 72 65 20 6d 61 79 20 62 65 20 67 61 70 73  here may be gaps
37a90 20 69 6e 20 74 68 65 20 6c 69 73 74 2e 29 5e 0a   in the list.)^.
37aa0 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
37ab0 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c  [sqlite3_bind_bl
37ac0 6f 62 7c 73 71 6c 69 74 65 33 5f 62 69 6e 64 28  ob|sqlite3_bind(
37ad0 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  )],.** [sqlite3_
37ae0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e  bind_parameter_n
37af0 61 6d 65 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b  ame()], and.** [
37b00 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
37b10 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 29 5d 2e  ameter_index()].
37b20 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
37b30 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
37b40 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28  parameter_count(
37b50 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a  sqlite3_stmt*);.
37b60 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
37b70 20 4e 61 6d 65 20 4f 66 20 41 20 48 6f 73 74 20   Name Of A Host 
37b80 50 61 72 61 6d 65 74 65 72 0a 2a 2a 20 4d 45 54  Parameter.** MET
37b90 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d  HOD: sqlite3_stm
37ba0 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  t.**.** ^The sql
37bb0 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
37bc0 74 65 72 5f 6e 61 6d 65 28 50 2c 4e 29 20 69 6e  ter_name(P,N) in
37bd0 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 0a  terface returns.
37be0 2a 2a 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  ** the name of t
37bf0 68 65 20 4e 2d 74 68 20 5b 53 51 4c 20 70 61 72  he N-th [SQL par
37c00 61 6d 65 74 65 72 5d 20 69 6e 20 74 68 65 20 5b  ameter] in the [
37c10 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
37c20 6e 74 5d 20 50 2e 0a 2a 2a 20 5e 28 53 51 4c 20  nt] P..** ^(SQL 
37c30 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 74 68  parameters of th
37c40 65 20 66 6f 72 6d 20 22 3f 4e 4e 4e 22 20 6f 72  e form "?NNN" or
37c50 20 22 3a 41 41 41 22 20 6f 72 20 22 40 41 41 41   ":AAA" or "@AAA
37c60 22 20 6f 72 20 22 24 41 41 41 22 0a 2a 2a 20 68  " or "$AAA".** h
37c70 61 76 65 20 61 20 6e 61 6d 65 20 77 68 69 63 68  ave a name which
37c80 20 69 73 20 74 68 65 20 73 74 72 69 6e 67 20 22   is the string "
37c90 3f 4e 4e 4e 22 20 6f 72 20 22 3a 41 41 41 22 20  ?NNN" or ":AAA" 
37ca0 6f 72 20 22 40 41 41 41 22 20 6f 72 20 22 24 41  or "@AAA" or "$A
37cb0 41 41 22 0a 2a 2a 20 72 65 73 70 65 63 74 69 76  AA".** respectiv
37cc0 65 6c 79 2e 0a 2a 2a 20 49 6e 20 6f 74 68 65 72  ely..** In other
37cd0 20 77 6f 72 64 73 2c 20 74 68 65 20 69 6e 69 74   words, the init
37ce0 69 61 6c 20 22 3a 22 20 6f 72 20 22 24 22 20 6f  ial ":" or "$" o
37cf0 72 20 22 40 22 20 6f 72 20 22 3f 22 0a 2a 2a 20  r "@" or "?".** 
37d00 69 73 20 69 6e 63 6c 75 64 65 64 20 61 73 20 70  is included as p
37d10 61 72 74 20 6f 66 20 74 68 65 20 6e 61 6d 65 2e  art of the name.
37d20 29 5e 0a 2a 2a 20 5e 50 61 72 61 6d 65 74 65 72  )^.** ^Parameter
37d30 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 22 3f  s of the form "?
37d40 22 20 77 69 74 68 6f 75 74 20 61 20 66 6f 6c 6c  " without a foll
37d50 6f 77 69 6e 67 20 69 6e 74 65 67 65 72 20 68 61  owing integer ha
37d60 76 65 20 6e 6f 20 6e 61 6d 65 0a 2a 2a 20 61 6e  ve no name.** an
37d70 64 20 61 72 65 20 72 65 66 65 72 72 65 64 20 74  d are referred t
37d80 6f 20 61 73 20 22 6e 61 6d 65 6c 65 73 73 22 20  o as "nameless" 
37d90 6f 72 20 22 61 6e 6f 6e 79 6d 6f 75 73 20 70 61  or "anonymous pa
37da0 72 61 6d 65 74 65 72 73 22 2e 0a 2a 2a 0a 2a 2a  rameters"..**.**
37db0 20 5e 54 68 65 20 66 69 72 73 74 20 68 6f 73 74   ^The first host
37dc0 20 70 61 72 61 6d 65 74 65 72 20 68 61 73 20 61   parameter has a
37dd0 6e 20 69 6e 64 65 78 20 6f 66 20 31 2c 20 6e 6f  n index of 1, no
37de0 74 20 30 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74  t 0..**.** ^If t
37df0 68 65 20 76 61 6c 75 65 20 4e 20 69 73 20 6f 75  he value N is ou
37e00 74 20 6f 66 20 72 61 6e 67 65 20 6f 72 20 69 66  t of range or if
37e10 20 74 68 65 20 4e 2d 74 68 20 70 61 72 61 6d 65   the N-th parame
37e20 74 65 72 20 69 73 0a 2a 2a 20 6e 61 6d 65 6c 65  ter is.** namele
37e30 73 73 2c 20 74 68 65 6e 20 4e 55 4c 4c 20 69 73  ss, then NULL is
37e40 20 72 65 74 75 72 6e 65 64 2e 20 20 5e 54 68 65   returned.  ^The
37e50 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e 67   returned string
37e60 20 69 73 0a 2a 2a 20 61 6c 77 61 79 73 20 69 6e   is.** always in
37e70 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20   UTF-8 encoding 
37e80 65 76 65 6e 20 69 66 20 74 68 65 20 6e 61 6d 65  even if the name
37e90 64 20 70 61 72 61 6d 65 74 65 72 20 77 61 73 0a  d parameter was.
37ea0 2a 2a 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73 70  ** originally sp
37eb0 65 63 69 66 69 65 64 20 61 73 20 55 54 46 2d 31  ecified as UTF-1
37ec0 36 20 69 6e 20 5b 73 71 6c 69 74 65 33 5f 70 72  6 in [sqlite3_pr
37ed0 65 70 61 72 65 31 36 28 29 5d 2c 0a 2a 2a 20 5b  epare16()],.** [
37ee0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
37ef0 36 5f 76 32 28 29 5d 2c 20 6f 72 20 5b 73 71 6c  6_v2()], or [sql
37f00 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
37f10 33 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20  3()]..**.** See 
37f20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 62  also: [sqlite3_b
37f30 69 6e 64 5f 62 6c 6f 62 7c 73 71 6c 69 74 65 33  ind_blob|sqlite3
37f40 5f 62 69 6e 64 28 29 5d 2c 0a 2a 2a 20 5b 73 71  _bind()],.** [sq
37f50 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
37f60 65 74 65 72 5f 63 6f 75 6e 74 28 29 5d 2c 20 61  eter_count()], a
37f70 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62  nd.** [sqlite3_b
37f80 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
37f90 64 65 78 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54  dex()]..*/.SQLIT
37fa0 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72  E_API const char
37fb0 20 2a 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70   *sqlite3_bind_p
37fc0 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 73 71  arameter_name(sq
37fd0 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
37fe0 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
37ff0 45 46 3a 20 49 6e 64 65 78 20 4f 66 20 41 20 50  EF: Index Of A P
38000 61 72 61 6d 65 74 65 72 20 57 69 74 68 20 41 20  arameter With A 
38010 47 69 76 65 6e 20 4e 61 6d 65 0a 2a 2a 20 4d 45  Given Name.** ME
38020 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74  THOD: sqlite3_st
38030 6d 74 0a 2a 2a 0a 2a 2a 20 5e 52 65 74 75 72 6e  mt.**.** ^Return
38040 20 74 68 65 20 69 6e 64 65 78 20 6f 66 20 61 6e   the index of an
38050 20 53 51 4c 20 70 61 72 61 6d 65 74 65 72 20 67   SQL parameter g
38060 69 76 65 6e 20 69 74 73 20 6e 61 6d 65 2e 20 20  iven its name.  
38070 5e 54 68 65 0a 2a 2a 20 69 6e 64 65 78 20 76 61  ^The.** index va
38080 6c 75 65 20 72 65 74 75 72 6e 65 64 20 69 73 20  lue returned is 
38090 73 75 69 74 61 62 6c 65 20 66 6f 72 20 75 73 65  suitable for use
380a0 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a   as the second.*
380b0 2a 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 5b  * parameter to [
380c0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
380d0 62 7c 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29  b|sqlite3_bind()
380e0 5d 2e 20 20 5e 41 20 7a 65 72 6f 0a 2a 2a 20 69  ].  ^A zero.** i
380f0 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 6e 6f  s returned if no
38100 20 6d 61 74 63 68 69 6e 67 20 70 61 72 61 6d 65   matching parame
38110 74 65 72 20 69 73 20 66 6f 75 6e 64 2e 20 20 5e  ter is found.  ^
38120 54 68 65 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a  The parameter.**
38130 20 6e 61 6d 65 20 6d 75 73 74 20 62 65 20 67 69   name must be gi
38140 76 65 6e 20 69 6e 20 55 54 46 2d 38 20 65 76 65  ven in UTF-8 eve
38150 6e 20 69 66 20 74 68 65 20 6f 72 69 67 69 6e 61  n if the origina
38160 6c 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 77  l statement.** w
38170 61 73 20 70 72 65 70 61 72 65 64 20 66 72 6f 6d  as prepared from
38180 20 55 54 46 2d 31 36 20 74 65 78 74 20 75 73 69   UTF-16 text usi
38190 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ng [sqlite3_prep
381a0 61 72 65 31 36 5f 76 32 28 29 5d 20 6f 72 0a 2a  are16_v2()] or.*
381b0 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
381c0 72 65 31 36 5f 76 33 28 29 5d 2e 0a 2a 2a 0a 2a  re16_v3()]..**.*
381d0 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71 6c  * See also: [sql
381e0 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 7c 73  ite3_bind_blob|s
381f0 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 2c 0a  qlite3_bind()],.
38200 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  ** [sqlite3_bind
38210 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74  _parameter_count
38220 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c  ()], and.** [sql
38230 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
38240 74 65 72 5f 6e 61 6d 65 28 29 5d 2e 0a 2a 2f 0a  ter_name()]..*/.
38250 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
38260 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
38270 6d 65 74 65 72 5f 69 6e 64 65 78 28 73 71 6c 69  meter_index(sqli
38280 74 65 33 5f 73 74 6d 74 2a 2c 20 63 6f 6e 73 74  te3_stmt*, const
38290 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a 0a   char *zName);..
382a0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
382b0 52 65 73 65 74 20 41 6c 6c 20 42 69 6e 64 69 6e  Reset All Bindin
382c0 67 73 20 4f 6e 20 41 20 50 72 65 70 61 72 65 64  gs On A Prepared
382d0 20 53 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 4d 45   Statement.** ME
382e0 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74  THOD: sqlite3_st
382f0 6d 74 0a 2a 2a 0a 2a 2a 20 5e 43 6f 6e 74 72 61  mt.**.** ^Contra
38300 72 79 20 74 6f 20 74 68 65 20 69 6e 74 75 69 74  ry to the intuit
38310 69 6f 6e 20 6f 66 20 6d 61 6e 79 2c 20 5b 73 71  ion of many, [sq
38320 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20 64  lite3_reset()] d
38330 6f 65 73 20 6e 6f 74 20 72 65 73 65 74 0a 2a 2a  oes not reset.**
38340 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 62 69   the [sqlite3_bi
38350 6e 64 5f 62 6c 6f 62 20 7c 20 62 69 6e 64 69 6e  nd_blob | bindin
38360 67 73 5d 20 6f 6e 20 61 20 5b 70 72 65 70 61 72  gs] on a [prepar
38370 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e 0a 2a  ed statement]..*
38380 2a 20 5e 55 73 65 20 74 68 69 73 20 72 6f 75 74  * ^Use this rout
38390 69 6e 65 20 74 6f 20 72 65 73 65 74 20 61 6c 6c  ine to reset all
383a0 20 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72 73   host parameters
383b0 20 74 6f 20 4e 55 4c 4c 2e 0a 2a 2f 0a 53 51 4c   to NULL..*/.SQL
383c0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
383d0 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e  te3_clear_bindin
383e0 67 73 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  gs(sqlite3_stmt*
383f0 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
38400 45 46 3a 20 4e 75 6d 62 65 72 20 4f 66 20 43 6f  EF: Number Of Co
38410 6c 75 6d 6e 73 20 49 6e 20 41 20 52 65 73 75 6c  lumns In A Resul
38420 74 20 53 65 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a  t Set.** METHOD:
38430 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a   sqlite3_stmt.**
38440 0a 2a 2a 20 5e 52 65 74 75 72 6e 20 74 68 65 20  .** ^Return the 
38450 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
38460 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20  s in the result 
38470 73 65 74 20 72 65 74 75 72 6e 65 64 20 62 79 20  set returned by 
38480 74 68 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64  the.** [prepared
38490 20 73 74 61 74 65 6d 65 6e 74 5d 2e 20 5e 49 66   statement]. ^If
384a0 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65   this routine re
384b0 74 75 72 6e 73 20 30 2c 20 74 68 61 74 20 6d 65  turns 0, that me
384c0 61 6e 73 20 74 68 65 20 0a 2a 2a 20 5b 70 72 65  ans the .** [pre
384d0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
384e0 20 72 65 74 75 72 6e 73 20 6e 6f 20 64 61 74 61   returns no data
384f0 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 20 61 6e   (for example an
38500 20 5b 55 50 44 41 54 45 5d 29 2e 0a 2a 2a 20 5e   [UPDATE])..** ^
38510 48 6f 77 65 76 65 72 2c 20 6a 75 73 74 20 62 65  However, just be
38520 63 61 75 73 65 20 74 68 69 73 20 72 6f 75 74 69  cause this routi
38530 6e 65 20 72 65 74 75 72 6e 73 20 61 20 70 6f 73  ne returns a pos
38540 69 74 69 76 65 20 6e 75 6d 62 65 72 20 64 6f 65  itive number doe
38550 73 20 6e 6f 74 0a 2a 2a 20 6d 65 61 6e 20 74 68  s not.** mean th
38560 61 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72  at one or more r
38570 6f 77 73 20 6f 66 20 64 61 74 61 20 77 69 6c 6c  ows of data will
38580 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20 20 5e   be returned.  ^
38590 41 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  A SELECT stateme
385a0 6e 74 0a 2a 2a 20 77 69 6c 6c 20 61 6c 77 61 79  nt.** will alway
385b0 73 20 68 61 76 65 20 61 20 70 6f 73 69 74 69 76  s have a positiv
385c0 65 20 73 71 6c 69 74 65 33 5f 63 6